diff --git a/IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs b/IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs index d8c7adf7..e1f06316 100644 --- a/IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs +++ b/IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs @@ -183,7 +183,7 @@ namespace IOB_WIN_NEXT protected int lastAct = 0; - protected bool lastExeMode = false; + protected bool lastIsInCorso = false; protected int VETO_SEND_SNAPSHOT = 10; @@ -230,6 +230,11 @@ namespace IOB_WIN_NEXT } } + /// + /// Ultimo rum mode rilevato x decidere SE inviare variazione... + /// + protected int lastRunMode = -999; + /// /// Attività corrente (INT) da keyRunMode valore di PLC/DB231/Attivita /// @@ -389,11 +394,12 @@ namespace IOB_WIN_NEXT // Gestione ODL automatica: se abilitata --> qui con start/stop da impianto... if (doProcOdl) { + lgTrace($"inizio process verifica presa in carico PODL | isInCorso: {isInCorso} | lastIsInCorso: {lastIsInCorso}"); // se rilevo variazione exe (curr/last) // --> registro richiesta attreazzaggio PODL da info commessa - if (lastExeMode != isInCorso) + if (lastIsInCorso != isInCorso) { - // se 0--> 1 --> registro + // se 0 --> 1 --> registro if (isInCorso) { lgInfo("--------------------------------------------"); @@ -415,7 +421,7 @@ namespace IOB_WIN_NEXT lgInfo("--------------------------------------------"); } // registro exe mode - lastExeMode = isInCorso; + lastIsInCorso = isInCorso; } } @@ -635,39 +641,44 @@ namespace IOB_WIN_NEXT vetoSnapshot = DateTime.Now; } - // invio del valore RU MODE come FLog + // invio del valore RUN MODE come FLog, SE variato... if (!string.IsNullOrEmpty(currRun)) { - // se ho valore --> invio - string sVal = ""; - string descr = $"RunModeVal"; - DateTime locTStamp = DateTime.Now; - sVal = $"Change 04: {locTStamp.ToString()} | descr: {descr} | Id: {opcUaParams.keyExeMode} | Val: {currRun}"; + if (currReadErrors != lastRunMode) + { + // aggiorno last... + lastRunMode = currRunMode; + // se ho valore --> invio + string sVal = ""; + string descr = $"RunModeVal"; + DateTime locTStamp = DateTime.Now; + sVal = $"Change 04: {locTStamp.ToString()} | descr: {descr} | Id: {opcUaParams.keyExeMode} | Val: {currRun}"; - // cerco se sia un dato/valore in veto - bool hasVetoLK = false; - bool hasVetoLKV = false; - hasVetoLK = opcUaParams.fluxLogKeyValVeto.ContainsKey(descr); - if (hasVetoLK) - { - // se c'è controllo il valore... - var valList = opcUaParams.fluxLogKeyValVeto[descr]; - hasVetoLKV = valList.Contains(currRun); - } - if (hasVetoLKV) - { - lgTrace($"NON ACCODATO sample: veto trovato per {descr}/{currRun} in fluxLogKeyValVeto ", false); - } - else - { - accodaFLog(sVal, qEncodeFLog(descr, currRun)); - - // se richiesto provo a tradurre - if (opcUaParams.runModeTrad) + // cerco se sia un dato/valore in veto + bool hasVetoLK = false; + bool hasVetoLKV = false; + hasVetoLK = opcUaParams.fluxLogKeyValVeto.ContainsKey(descr); + if (hasVetoLK) { - string RunModeDescr = itemTranslation("RunMode", currRun); - descr = $"RunMode"; - accodaFLog(sVal, qEncodeFLog(descr, RunModeDescr)); + // se c'è controllo il valore... + var valList = opcUaParams.fluxLogKeyValVeto[descr]; + hasVetoLKV = valList.Contains(currRun); + } + if (hasVetoLKV) + { + lgTrace($"NON ACCODATO sample: veto trovato per {descr}/{currRun} in fluxLogKeyValVeto ", false); + } + else + { + accodaFLog(sVal, qEncodeFLog(descr, currRun)); + + // se richiesto provo a tradurre + if (opcUaParams.runModeTrad) + { + string RunModeDescr = itemTranslation("RunMode", currRun); + descr = $"RunMode"; + accodaFLog(sVal, qEncodeFLog(descr, RunModeDescr)); + } } } }