From b64df4682f6d07c4a58aa0fcb916100f72f8cd9c Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 20 Oct 2022 11:42:03 +0200 Subject: [PATCH] Fix keyRunMode x OPC UA Cimolai --- .../DATA/CONF/BAGLIETTO_CIMOLAI_01.json | 5 +++ IOB-WIN-NEXT/IobGeneric.cs | 35 +++++++++++++++++-- IOB-WIN-NEXT/IobOpcUa.cs | 8 ++--- IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs | 33 +++++++++++++---- 4 files changed, 68 insertions(+), 13 deletions(-) diff --git a/IOB-WIN-NEXT/DATA/CONF/BAGLIETTO_CIMOLAI_01.json b/IOB-WIN-NEXT/DATA/CONF/BAGLIETTO_CIMOLAI_01.json index 2aedc640..8ea3c904 100644 --- a/IOB-WIN-NEXT/DATA/CONF/BAGLIETTO_CIMOLAI_01.json +++ b/IOB-WIN-NEXT/DATA/CONF/BAGLIETTO_CIMOLAI_01.json @@ -141,6 +141,11 @@ }, "fluxLogKeyValVeto": { "RunModeVal": [ + "-1", + "0" + ], + "OPC_PLC/DB231/Attivita": [ + "-1", "0" ] } diff --git a/IOB-WIN-NEXT/IobGeneric.cs b/IOB-WIN-NEXT/IobGeneric.cs index afbc516e..461ac3cf 100644 --- a/IOB-WIN-NEXT/IobGeneric.cs +++ b/IOB-WIN-NEXT/IobGeneric.cs @@ -4517,10 +4517,41 @@ namespace IOB_WIN_NEXT protected int getFluxValInt(DossierFluxLogDTO resultSet, string codFlux) { int answ = 0; - string rawVal = getFluxVal(resultSet, codFlux).Replace(",","."); + double dVal = 0; + var style = NumberStyles.AllowDecimalPoint; + var culture = CultureInfo.InvariantCulture; + string rawVal = getFluxVal(resultSet, codFlux); + if (rawVal.Contains(",")) + { + rawVal = rawVal.Replace(",", "."); + } if (!string.IsNullOrEmpty(rawVal)) { - int.TryParse(rawVal, out answ); + double.TryParse(rawVal, style, culture, out dVal); + answ = (int)dVal; + } + return answ; + } + + /// + /// Recupero dati da FluxLog formato double + /// + /// + /// + /// + protected double getFluxValDouble(DossierFluxLogDTO resultSet, string codFlux) + { + double answ = 0; + var style = NumberStyles.AllowDecimalPoint; + var culture = CultureInfo.InvariantCulture; + string rawVal = getFluxVal(resultSet, codFlux); + if (rawVal.Contains(",")) + { + rawVal = rawVal.Replace(",", "."); + } + if (!string.IsNullOrEmpty(rawVal)) + { + double.TryParse(rawVal, style, culture, out answ); } return answ; } diff --git a/IOB-WIN-NEXT/IobOpcUa.cs b/IOB-WIN-NEXT/IobOpcUa.cs index 35922c3d..065ea264 100644 --- a/IOB-WIN-NEXT/IobOpcUa.cs +++ b/IOB-WIN-NEXT/IobOpcUa.cs @@ -410,7 +410,7 @@ namespace IOB_WIN_NEXT string descr = ""; DateTime locTStamp = DateTime.Now; descr = itemTranslation("OPC", MonIt.DisplayName); - sVal = $"Change: {locTStamp.ToString()} | descr: {descr} | Id: {MonIt.StartNodeId} | Val: {NotifyValue}"; + sVal = $"Change 01: {locTStamp.ToString()} | descr: {descr} | Id: {MonIt.StartNodeId} | Val: {NotifyValue}"; lgInfo(sVal); // verifico se salvare @@ -486,7 +486,7 @@ namespace IOB_WIN_NEXT string descr = ""; DateTime locTStamp = DateTime.Now; descr = itemTranslation("OPC", MonIt.DisplayName); - sVal = $"Change: {locTStamp.ToString()} | descr: {descr} | Id: {MonIt.StartNodeId} | Val: {currVal}"; + sVal = $"Change 02: {locTStamp.ToString()} | descr: {descr} | Id: {MonIt.StartNodeId} | Val: {currVal}"; lgInfo(sVal); // verifico se salvare @@ -537,8 +537,8 @@ namespace IOB_WIN_NEXT string sVal = ""; string descr = $"RunModeVal"; DateTime locTStamp = DateTime.Now; - sVal = $"Change: {locTStamp.ToString()} | descr: {descr} | Id: {opcUaParams.keyRunMode} | Val: {currRun}"; - //cerco se sia un dato/valore + sVal = $"Change 03: {locTStamp.ToString()} | descr: {descr} | Id: {opcUaParams.keyRunMode} | Val: {currRun}"; + // cerco se sia un dato/valore hasVetoLK = opcUaParams.fluxLogKeyValVeto.ContainsKey(descr); if (hasVetoLK) { diff --git a/IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs b/IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs index 18fb793b..23f7f90a 100644 --- a/IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs +++ b/IOB-WIN-NEXT/IobOpcUaMBHCimolai.cs @@ -240,15 +240,34 @@ namespace IOB_WIN_NEXT string sVal = ""; string descr = $"RunModeVal"; DateTime locTStamp = DateTime.Now; - sVal = $"Change: {locTStamp.ToString()} | descr: {descr} | Id: {opcUaParams.keyRunMode} | Val: {currRun}"; - accodaFLog(sVal, qEncodeFLog(descr, currRun)); + sVal = $"Change 04: {locTStamp.ToString()} | descr: {descr} | Id: {opcUaParams.keyRunMode} | Val: {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)); + } } } }