diff --git a/IOB-WIN-NEXT/App.config b/IOB-WIN-NEXT/App.config
index a5dec4bb..8abdeb17 100644
--- a/IOB-WIN-NEXT/App.config
+++ b/IOB-WIN-NEXT/App.config
@@ -40,8 +40,8 @@
-
-
+
+
diff --git a/IOB-WIN-NEXT/IobModbusTCP.cs b/IOB-WIN-NEXT/IobModbusTCP.cs
index ea38b7f2..3b677090 100644
--- a/IOB-WIN-NEXT/IobModbusTCP.cs
+++ b/IOB-WIN-NEXT/IobModbusTCP.cs
@@ -410,8 +410,10 @@ namespace IOB_WIN_NEXT
/// NUm registri da leggere (max 120)
private void readBlockHoldingReg(int startAddr, int numReg)
{
+ bool allOk = false;
if (currPLC.Connected)
{
+ allOk = true;
// fix massima lunghezza pacchetto
if (numReg > 120)
{
@@ -450,6 +452,7 @@ namespace IOB_WIN_NEXT
else
{
currReadErrors++;
+ allOk = false;
lgError($"Impossibile copiare dati, array di origine troppo corto: rawData.lenght: {rawData.Length} | base addr richiesto i*2: {i * 2} | errori currReadErrors: {currReadErrors}");
}
}
@@ -458,26 +461,35 @@ namespace IOB_WIN_NEXT
catch (Exception exc)
{
currReadErrors++;
- lgError($"Eccezione in readBlockHoldingReg{Environment.NewLine}{exc}");
+ allOk = false;
+ lgError($"Eccezione in readBlockHoldingReg | currReadErrors: {currReadErrors}{Environment.NewLine}{exc}");
}
}
else
{
- lgError("Attenzione, plc disconnesso...");
+ lgError($"Attenzione, plc disconnesso... currReadErrors: {currReadErrors}");
tryDisconnect();
}
- // se > max errori --> disconnetto
- if (currReadErrors > maxReadErrors)
+ // se tutto ok --> riduco contatore errori di 1...
+ if (allOk)
{
- lgInfo("Superato limite errori Read --> tryDisconnect");
- currReadErrors = 0;
- tryDisconnect();
+ currReadErrors = currReadErrors >= 1 ? currReadErrors-- : 0;
}
else
{
- // altrimenti pausa forzata
- Thread.Sleep(200);
+ // se > max errori --> disconnetto
+ if (currReadErrors > maxReadErrors)
+ {
+ lgInfo($"Superato limite errori Read ({currReadErrors}) --> tryDisconnect");
+ currReadErrors = 0;
+ tryDisconnect();
+ }
+ else
+ {
+ // altrimenti pausa forzata
+ Thread.Sleep(300);
+ }
}
}