From c32ef20b50b3daf302c259a88faa7a3efa99f877 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 31 Jan 2025 16:44:44 +0100 Subject: [PATCH] Correzione controllo errori lettura ModBus in caso di tutto a zero... --- IOB-WIN-FORM/Iob/Generic.cs | 6 +++--- IOB-WIN-MBUS/IobModbustTCP/ModbusTCP.cs | 9 ++++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/IOB-WIN-FORM/Iob/Generic.cs b/IOB-WIN-FORM/Iob/Generic.cs index c947e02f..3105cbd7 100644 --- a/IOB-WIN-FORM/Iob/Generic.cs +++ b/IOB-WIN-FORM/Iob/Generic.cs @@ -5639,7 +5639,7 @@ namespace IOB_WIN_FORM.Iob // 2023.12.20: aggiunta gestione secondo tipo allarmi come elenco OPC-UA (BLM/Adige) if (alarmType == AlarmBlockType.Bitmap) { - int numErrors = 0; + int numRaised = 0; int currStatus = 0; ushort full16 = 65535; int[] listInt = new int[2]; @@ -5669,7 +5669,7 @@ namespace IOB_WIN_FORM.Iob // calcolo indice errori if ((uint)(item.alarmsMask[i] & currStatus) > 0) { - numErrors++; + numRaised++; } // verifico SE sia variato... confronto allarmi filtrato stile blink per // bit status: @@ -5688,7 +5688,7 @@ namespace IOB_WIN_FORM.Iob } } } - answ = numErrors > 0; + answ = numRaised > 0; } // gestione allarmi come elenco else if (alarmType == AlarmBlockType.ActiveList) diff --git a/IOB-WIN-MBUS/IobModbustTCP/ModbusTCP.cs b/IOB-WIN-MBUS/IobModbustTCP/ModbusTCP.cs index aaa3bff1..e315c4af 100644 --- a/IOB-WIN-MBUS/IobModbustTCP/ModbusTCP.cs +++ b/IOB-WIN-MBUS/IobModbustTCP/ModbusTCP.cs @@ -2087,8 +2087,10 @@ namespace IOB_WIN_MBUS.IobModbusTCP bool allZero = (rawData.Where(x => x > 0).Count() == 0); if (allZero) { - currReadErrors += 5; + currReadErrors += 1; +#if false allOk = false; +#endif } // salvo in LUT la versione ESPLOSA 2 byte alla volta... if (allOk && rawData.Length > 0) @@ -2132,6 +2134,11 @@ namespace IOB_WIN_MBUS.IobModbusTCP lgError($"readMemBlockHoldingReg | Attenzione, PLC disconnesso... currReadErrors: {currReadErrors}"); tryDisconnect(); } + // all ok: se non scattato verifico se errori < 50... + if (allOk) + { + allOk = currReadErrors < 10; + } return allOk; }