diff --git a/IOB-WIN-NEXT/IobGeneric.cs b/IOB-WIN-NEXT/IobGeneric.cs index 054dde52..a1cebc3d 100644 --- a/IOB-WIN-NEXT/IobGeneric.cs +++ b/IOB-WIN-NEXT/IobGeneric.cs @@ -535,7 +535,7 @@ namespace IOB_WIN_NEXT { address = IPAddress.Loopback; int maxRetry = maxPingRetry + 1; - int numRetry = 1; ; + int numRetry = 1; string ipAddr = cIobConf.serverData.MPIP.Replace($"{cIobConf.serverData.TRANSP}://", ""); IPAddress.TryParse(ipAddr, out address); // se null --> provo DNS... @@ -552,21 +552,23 @@ namespace IOB_WIN_NEXT // se != null --> uso address... if (address != null) { - reply = pingSender.Send(address, 100); + reply = pingSender.Send(address, 300); } else { - reply = pingSender.Send(cIobConf.cncIpAddr, 100); + reply = pingSender.Send(cIobConf.cncIpAddr, 300); } } catch { - reply = pingSender.Send(IPAddress.Loopback, 100); + reply = pingSender.Send(IPAddress.Loopback, 300); } // se ho timeout riprovo... while (reply.Status != IPStatus.Success && numRetry < maxRetry) { lgInfo($"Server Ping KO | reply: {reply.Status} --> retry"); + var rand = new Random(); + Thread.Sleep(rand.Next(150, 500)); reply = pingSender.Send(address, pingServerMsTimeout * numRetry / 2); numRetry++; if (reply.Status == IPStatus.Success) diff --git a/IOB-WIN-NEXT/IobModbusTCP.cs b/IOB-WIN-NEXT/IobModbusTCP.cs index cbf13c13..0b4e065a 100644 --- a/IOB-WIN-NEXT/IobModbusTCP.cs +++ b/IOB-WIN-NEXT/IobModbusTCP.cs @@ -241,11 +241,11 @@ namespace IOB_WIN_NEXT } else { - lgError($"getDynData: valore scartato x limiti min/max | val: {valore} | min-max: {item.Value.minVal}-{item.Value.maxVal}"); + lgError($"getDynData: valore scartato x limiti min/max | {item.Key} | val: {valore} | min-max: {item.Value.minVal}-{item.Value.maxVal} | deltaVal: {deltaVal}"); if (enableRetry) { readErrorList.Add(item.Key, item.Value); - lgInfo($"valore fuori limiti --> rimesso in coda lettura | parametro: {item.Key}"); + lgInfo($"--> rimesso in coda lettura | parametro: {item.Key} | index: {item.Value.index} | size: {item.Value.size}"); } } } @@ -704,6 +704,7 @@ namespace IOB_WIN_NEXT // se avessi acnora errori --> disconnetto if (readErrorList.Count > 0) { + lgInfo("Trovati valori non validi al secondo tentativo --> resetto adapter con tryDisconnect!"); tryDisconnect(); } } @@ -1269,24 +1270,16 @@ namespace IOB_WIN_NEXT /// public override void tryDisconnect() { - if (connectionOk) + lgInfo("Richiesta disconnessione adapter ModBusTCP!"); + try { - string szStatusConnection = ""; - try - { - currPLC.Disconnect(); - connectionOk = false; - lgInfo(szStatusConnection); - lgInfo("Effettuata disconnessione adapter ModBusTCP!"); - } - catch (Exception exc) - { - lgFatal(exc, "Errore nella disconnessione dall'adapter ModBusTCP"); - } + currPLC.Disconnect(); + connectionOk = false; + lgInfo("Effettuata disconnessione adapter ModBusTCP!"); } - else + catch (Exception exc) { - lgError("IMPOSSIBILE effettuare disconnessione ModBusTCP: Connessione non disponibile..."); + lgFatal($"Errore nella disconnessione dall'adapter ModBusTCP{Environment.NewLine}{exc}"); } }