Merge branch 'release/ModBusHoldRegErrorsNumb'

This commit is contained in:
Samuele Locatelli
2021-11-08 16:33:51 +01:00
2 changed files with 23 additions and 11 deletions
+2 -2
View File
@@ -40,8 +40,8 @@
<add key="maxQueueFLog" value="16384" />
<!--gestione max num errori-->
<add key="maxAliveErrors" value="1000" />
<add key="maxSendErrors" value="30" />
<add key="maxReadErrors" value="15" />
<add key="maxSendErrors" value="100" />
<add key="maxReadErrors" value="50" />
<!--parametri SIM-->
<add key="waitSimPar" value="30" />
<!--<add key="waitSimPar" value="45" />-->
+21 -9
View File
@@ -410,8 +410,10 @@ namespace IOB_WIN_NEXT
/// <param name="numReg">NUm registri da leggere (max 120)</param>
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);
}
}
}