From 4b08fff92c0f2a973dbe7f20d89bd9f057b400ee Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 16 Mar 2022 09:48:16 +0100 Subject: [PATCH 1/3] esteso gestione numErroriCheck a siemens x riavvio adapter --- IOB-WIN-NEXT/IobOpcUa.cs | 6 +----- IOB-WIN-NEXT/IobSiemens.cs | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/IOB-WIN-NEXT/IobOpcUa.cs b/IOB-WIN-NEXT/IobOpcUa.cs index 97882859..a99eb267 100644 --- a/IOB-WIN-NEXT/IobOpcUa.cs +++ b/IOB-WIN-NEXT/IobOpcUa.cs @@ -53,10 +53,6 @@ namespace IOB_WIN_NEXT /// protected DateTime lastCurrent = DateTime.Now; - /// - /// Variabile numero errori controllo --> se supera soglia 20 --> disconnette - /// - protected int numErroriCheck = 0; /// /// Oggetto MAIN x connessione MTC @@ -930,7 +926,7 @@ namespace IOB_WIN_NEXT } } // se supero soglia errori lettura --> disconnetto e resetto - if (numErroriCheck > 100) + if (numErroriCheck > maxErroriCheck) { lgInfo($"numErroriCheck: {numErroriCheck} --> richiesta disconnessione adapter con tryDisconnect"); diff --git a/IOB-WIN-NEXT/IobSiemens.cs b/IOB-WIN-NEXT/IobSiemens.cs index 614bb0a6..3af6857a 100644 --- a/IOB-WIN-NEXT/IobSiemens.cs +++ b/IOB-WIN-NEXT/IobSiemens.cs @@ -176,7 +176,7 @@ namespace IOB_WIN_NEXT { lastMemWrite.Add(memAddrWrite, adesso.AddMinutes(-1)); } - // ora mi leggo valore ultimas crittura e confronto con adesso + // ora mi leggo valore ultima scrittura e confronto con adesso try { doWrite = (lastMemWrite[memAddrWrite].AddSeconds(vetoSeconds) < adesso); @@ -188,7 +188,8 @@ namespace IOB_WIN_NEXT // se encessario --> LOG! if (doWrite) { - lgInfo(logValue); + // 2022.03.16 portato a livello TRACE x evitare log troppo verboso + lgTrace(logValue); lastMemWrite[memAddrWrite] = adesso; } } @@ -1086,6 +1087,7 @@ namespace IOB_WIN_NEXT else { lgError($"Mismatch dimensione array memoria: indirizzo: {memAddrRead} | passato array di {Value.Length} byte, letti da S7 {memByteRead.Length} byte"); + numErroriCheck++; } string titolo = $"READ BLOCK MEM BYTE: {parametri.memAddrRead} --> {numByte} byte"; if (verboseLog) @@ -1117,6 +1119,14 @@ namespace IOB_WIN_NEXT TimingData.addResult(cIobConf.codIOB, string.Format("{0}|{1}", parametri.memAddrRead, numByte), sw.ElapsedTicks); } } + // se supero soglia errori lettura --> disconnetto e resetto + if (numErroriCheck > maxErroriCheck) + { + lgInfo($"numErroriCheck: {numErroriCheck} --> richiesta disconnessione adapter con tryDisconnect"); + numErroriCheck = 0; + tryDisconnect(); + } + return answ; } From 5f5134b3d49e9940164a7683cf0f54ac4bc5d477 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 16 Mar 2022 09:48:53 +0100 Subject: [PATCH 2/3] update gesitone valori default da cont OPT_PAR x WatchDog e maxNumErr --- IOB-WIN-NEXT/IobGeneric.cs | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/IOB-WIN-NEXT/IobGeneric.cs b/IOB-WIN-NEXT/IobGeneric.cs index ffd308d1..5f6ad9c3 100644 --- a/IOB-WIN-NEXT/IobGeneric.cs +++ b/IOB-WIN-NEXT/IobGeneric.cs @@ -62,10 +62,20 @@ namespace IOB_WIN_NEXT protected int B_previous; /// - /// NUm errori check alive + /// Num errori check alive /// protected int currAliveErrors = 0; + /// + /// Variabile numero errori vari (in lettura) --> se supera soglia maxErroriCheck --> disconnette + /// + protected int numErroriCheck = 0; + + /// + /// Soglia massima errori priam di disconnesisone automatica + /// + protected int maxErroriCheck = 100; + /// /// Dizionario valori impostati x produzione /// @@ -81,6 +91,11 @@ namespace IOB_WIN_NEXT /// protected int currSendErrors = 0; + /// + /// Periodo wathdog di default (2 sec se non specificato) + /// + protected int watchDogPeriod = 2; + /// /// Array dei contatori x segnali blinking /// @@ -1694,10 +1709,6 @@ namespace IOB_WIN_NEXT // mostro update... string newString = string.Format("{0:X}", B_input); currDispData.newInData = newString; -#if false - // salvo coda debug... - QueueDebug.Enqueue(B_input); -#endif } /// @@ -1781,6 +1792,22 @@ namespace IOB_WIN_NEXT int.TryParse(s_maxPingRetry, out numRetry); maxPingRetry = numRetry; } + + string s_maxErrCheck = getOptPar("MAX_ERR_CHECK"); + if (!string.IsNullOrEmpty(s_maxErrCheck)) + { + int numErr = 50; + int.TryParse(s_maxErrCheck, out numErr); + maxErroriCheck = numErr; + } + + string s_watchDogPer = getOptPar("WATCHDOG_PERIOD"); + if (!string.IsNullOrEmpty(s_watchDogPer)) + { + int numPer = 3; + int.TryParse(s_watchDogPer, out numPer); + watchDogPeriod = numPer; + } } /// From 3e51011f4b5fe3eddf8a4ac988df0c2cf7231e9b Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 16 Mar 2022 09:49:07 +0100 Subject: [PATCH 3/3] estensione check watchdog parametrico --- CVCncLib/CVCncLib.dll | Bin 967680 -> 967680 bytes IOB-WIN-NEXT/IobSiemensIngenia.cs | 2 +- IOB-WIN-NEXT/IobSiemensLasco.cs | 2 +- IOB-WIN-NEXT/IobSiemensSaet.cs | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CVCncLib/CVCncLib.dll b/CVCncLib/CVCncLib.dll index 0cf7b395aee4469757039e91aeae81751be1ad52..9551de0f630ddfdd68e6766e3d785907a8846b35 100644 GIT binary patch delta 134 zcmZqZux{wEp3uQ8y}+=syS1CKwVSE6o4K`{rL~*2wVSQAo4vK0qqUo}wVSK8n|o_F zkL5yvNAEq0RE{5UU$T|YMO*q-Yx|XjJV4C5{mMeVKYThsqmmeafC-3Y7#SE|oa1A7 jv4M{vDA*;~_Q#fUd#%k}rug|4xal)~+x}+*AB!*mt&%e3 delta 134 zcmZqZux{wEp3uQ8C@tIA-P+CA+RfD3&D`3}(%Q}1+RfJ5&EDG0(b~<~+RfG4&Aqjo z$8w=SZ3Aa`2M3?WLOY*`<173#+pjF-0b<_mR~GX9;nNY2mQ7*+0wy4qVPs% 1) + if (adesso.Subtract(lastPLCWatchDog).TotalSeconds > watchDogPeriod) { // incremento counterMes2Plc++; diff --git a/IOB-WIN-NEXT/IobSiemensLasco.cs b/IOB-WIN-NEXT/IobSiemensLasco.cs index cde6f297..90a71f2a 100644 --- a/IOB-WIN-NEXT/IobSiemensLasco.cs +++ b/IOB-WIN-NEXT/IobSiemensLasco.cs @@ -564,7 +564,7 @@ namespace IOB_WIN_NEXT // scrive nel primo byte, ultimo bit, il watchdog, mentre scrive nel primo 1 = setup, 0 = run // scrivo 1 volta al secondo il contatore incrementale su area apposita DateTime adesso = DateTime.Now; - if (adesso.Subtract(lastPLCWatchDog).TotalSeconds > 1) + if (adesso.Subtract(lastPLCWatchDog).TotalSeconds > watchDogPeriod) { // incremento counterMes2Plc++; diff --git a/IOB-WIN-NEXT/IobSiemensSaet.cs b/IOB-WIN-NEXT/IobSiemensSaet.cs index b5281266..90f6ead5 100644 --- a/IOB-WIN-NEXT/IobSiemensSaet.cs +++ b/IOB-WIN-NEXT/IobSiemensSaet.cs @@ -318,9 +318,9 @@ namespace IOB_WIN_NEXT public override void processWhatchDog() { - // scrivo 1 volta al secondo il contatore incrementale su area apposita + // scrivo 1 volta ogni n secondi il contatore incrementale su area apposita DateTime adesso = DateTime.Now; - if (adesso.Subtract(lastPLCWatchDog).TotalSeconds > 1) + if (adesso.Subtract(lastPLCWatchDog).TotalSeconds > watchDogPeriod) { // incremento counterMes2Plc++;