From 93d4bba04f4a34ca7cd7fb4e4dc8b30bb11f4469 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 3 Dec 2019 16:05:19 +0100 Subject: [PATCH 1/7] Update x test MTC con filtraggio dati TROPPO aggressivo --- IOB-WIN/DATA/CONF/IMI_50.ini | 1 + IOB-WIN/IobMTC.cs | 70 +++++++++++++++++++++++++++++++++--- Jenkinsfile | 2 +- 3 files changed, 67 insertions(+), 6 deletions(-) diff --git a/IOB-WIN/DATA/CONF/IMI_50.ini b/IOB-WIN/DATA/CONF/IMI_50.ini index 56521241..bb65e120 100644 --- a/IOB-WIN/DATA/CONF/IMI_50.ini +++ b/IOB-WIN/DATA/CONF/IMI_50.ini @@ -58,6 +58,7 @@ PZCOUNT_MODE=STD.DM20.2 DISABLE_PZCOUNT=TRUE ENABLE_DYN_DATA=FALSE FORCE_DYN_DATA=TRUE +ENABLE_DATA_FILTER=FALSE ; conf parametri memoria READ/WRITE PARAM_CONF=IMI_50.json diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index ed878c38..ba54a3f1 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -26,6 +26,10 @@ namespace IOB_WIN /// protected MTConnectClient MTC_ref; /// + /// Gestione filtraggio dati + /// + protected bool enableDataFilter = false; + /// /// URL x salvataggio elenco dataItems MTC /// protected string urlSaveDataItems @@ -56,6 +60,11 @@ namespace IOB_WIN { // gestione invio ritardato contapezzi pzCountDelay = utils.CRI("pzCountDelay"); + // gestione data filtering... + if (!string.IsNullOrEmpty(getOptPar("ENABLE_DATA_FILTER"))) + { + bool.TryParse(getOptPar("ENABLE_DATA_FILTER"), out enableDataFilter); + } lastPzCountSend = DateTime.Now; lastWarnODL = DateTime.Now; } @@ -233,10 +242,18 @@ namespace IOB_WIN break; case MTConnect.DataItemCategory.SAMPLE: uuid = $"S_{dataItem.Id}"; - threshDBand = 1; - if (dataItem.Id.EndsWith("PosAct") || dataItem.Id.EndsWith("PosTgt")) + // SOLOS E è abilitato il datafiltering... + if (enableDataFilter) { - threshDBand = 5; + threshDBand = 1; + if (dataItem.Id.EndsWith("PosAct") || dataItem.Id.EndsWith("PosTgt")) + { + threshDBand = 5; + } + } + else + { + threshDBand = 0; } dSamplePeriod = 60; break; @@ -321,9 +338,14 @@ namespace IOB_WIN /// protected bool checkSaveItem(MTConnectStreams.DataItem newValue) { - bool answ = false; + bool answ = !enableDataFilter; + if (newValue != null) { + if (utils.CRB("verbose")) + { + lgInfo($"Richiesta checkSaveItem per {newValue} | id: {newValue.DataItemId} | CDATA: {newValue.CDATA}"); + } // verifico in memoria se ho l'oggetto condition ed il suo valore.. if (dataItemMem.ContainsKey(newValue.DataItemId)) { @@ -333,6 +355,10 @@ namespace IOB_WIN answ = true; } } + else + { + lgError("Attenzione: checkSaveItem con newValue null!"); + } return answ; } /// @@ -342,11 +368,15 @@ namespace IOB_WIN /// protected bool checkSaveSample(MTConnectStreams.Sample newValue) { - bool answ = false; + bool answ = !enableDataFilter; double oldVal = 0; double newVal = 0; if (newValue != null) { + if (utils.CRB("verbose")) + { + lgInfo($"Richiesta checkSaveSample per {newValue} | id: {newValue.DataItemId} | CDATA: {newValue.CDATA}"); + } // verifico in memoria se ho l'oggetto condition ed il suo valore.. if (dataItemMem.ContainsKey(newValue.DataItemId)) { @@ -365,6 +395,10 @@ namespace IOB_WIN // controllo SE ho DeadBand... if (dataItemMem[newValue.DataItemId].thresholdDeadBand > 0) { + if (utils.CRB("verbose")) + { + lgInfo($"Test deadband: oldVal: {oldVal} | newVal: {newVal}"); + } // recupero i valori e testo DeadBand... double.TryParse(dataItemMem[newValue.DataItemId].value.Replace(".", ","), out oldVal); double.TryParse(newValue.CDATA.Replace(".", ","), out newVal); @@ -385,6 +419,10 @@ namespace IOB_WIN } } } + else + { + lgError("Attenzione: checkSaveItem con newValue null!"); + } return answ; } @@ -457,6 +495,13 @@ namespace IOB_WIN { accodaFLog(sVal, qEncodeFLog(locTStamp, descr, dataItem.CDATA)); } + else + { + if (utils.CRB("verbose")) + { + lgInfo($"NON ACCODATO sample poiché verifica variazioen ha dato esito negativo"); + } + } } } catch @@ -752,6 +797,8 @@ namespace IOB_WIN string currExe = ""; string currRun = ""; string currUnOpStatus = ""; + string currGettoOn = ""; + string currAbilAbras = ""; try { var exeMode = dataItemMem["Path_01_EXE_MODE"]; @@ -840,6 +887,19 @@ namespace IOB_WIN lgInfo(string.Format("Trasformazione B_input: {0}", B_input)); } } + /// + /// Verifica un DataItem e se il valore corrisponde a quello indicato come "true value" restituisce true + /// + /// + /// + /// + protected bool checkDataItem(string itemName, string trueVal) + { + bool answ = false; + + return answ; + } + /// /// Recupero dati dinamici... /// diff --git a/Jenkinsfile b/Jenkinsfile index 82973a6b..c0058760 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=550']) { + withEnv(['NEXT_BUILD_NUMBER=551']) { // env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN' From cc202c5a9e66f6f65fadfd791d042edef0f41906 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 3 Dec 2019 17:34:05 +0100 Subject: [PATCH 2/7] Modifica x debug REMOSA --- IOB-WIN/IobMTC.cs | 20 ++++++++++++++++---- Jenkinsfile | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index ba54a3f1..24409027 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -797,8 +797,6 @@ namespace IOB_WIN string currExe = ""; string currRun = ""; string currUnOpStatus = ""; - string currGettoOn = ""; - string currAbilAbras = ""; try { var exeMode = dataItemMem["Path_01_EXE_MODE"]; @@ -842,6 +840,11 @@ namespace IOB_WIN { // se ho run mode != auto --> manual B_input += (1 << 4); + // loggo cosa sia curr run! + if (utils.CRB("verbose")) + { + lgInfo($"Indicato manuale | currRun = {currRun}"); + } } @@ -884,7 +887,7 @@ namespace IOB_WIN // log opzionale! if (verboseLog) { - lgInfo(string.Format("Trasformazione B_input: {0}", B_input)); + lgInfo($"Trasformazione B_input: {B_input} | currRun = {currRun} | currExe = {currExe} | currUnOpStatus {currUnOpStatus}"); } } /// @@ -896,7 +899,16 @@ namespace IOB_WIN protected bool checkDataItem(string itemName, string trueVal) { bool answ = false; - + MtcDataItemExt currValue = null; + try + { + currValue = dataItemMem[itemName]; + answ = (currValue.value.Equals(trueVal)); + } + catch + { + lgError($"Errore in decodifica valore per {itemName} rispetto a {trueVal} | recuperato {currValue} / {currValue.value}"); + } return answ; } diff --git a/Jenkinsfile b/Jenkinsfile index c0058760..efa0d321 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=551']) { + withEnv(['NEXT_BUILD_NUMBER=552']) { // env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN' From ebbe709915ef398b0d9ff5fd16d0a43f9062b183 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 3 Dec 2019 17:53:41 +0100 Subject: [PATCH 3/7] Verboso il log in eccezioni decodifica semafori... --- IOB-WIN/IobMTC.cs | 26 +++++++++++++++++--------- Jenkinsfile | 2 +- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index 24409027..4f37e28e 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -785,11 +785,13 @@ namespace IOB_WIN var exeMode = dataItemMem["POWER"]; currPowerOn = exeMode.value; } - catch - { } + catch (Exception exc) + { + lgError($"Eccezione in decodifica currPowerOn: {Environment.NewLine}{exc}"); + } bool checkPowerOn = (currPowerOn == "ON"); - // bit 0 (poweron) imposto a 1 SE pingo o ho PowerOn... + // bit 0 (poweron) imposto a 1 SE pingo o PowerOn=="ON"... B_input = (checkPing || checkPowerOn) ? 1 : 0; @@ -802,22 +804,28 @@ namespace IOB_WIN var exeMode = dataItemMem["Path_01_EXE_MODE"]; currExe = exeMode.value; } - catch - { } + catch (Exception exc) + { + lgError($"Eccezione in decodifica exeMode: {Environment.NewLine}{exc}"); + } try { var runMode = dataItemMem["Path_01_RUN_MODE"]; currRun = runMode.value; } - catch - { } + catch (Exception exc) + { + lgError($"Eccezione in decodifica runMode: {Environment.NewLine}{exc}"); + } try { var UnOp_Status = dataItemMem["ST_UnOp_01_Status"]; currUnOpStatus = UnOp_Status.value; } - catch - { } + catch (Exception exc) + { + lgError($"Eccezione in decodifica UnOp_Status: {Environment.NewLine}{exc}"); + } // controllo lavora... if (currRun == "AUTOMATIC" || currRun == "SEMI_AUTO") diff --git a/Jenkinsfile b/Jenkinsfile index efa0d321..657420fb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=552']) { + withEnv(['NEXT_BUILD_NUMBER=553']) { // env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN' From 19496c21669aa9299d4de04beb6060b7fad36fb5 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 3 Dec 2019 18:17:33 +0100 Subject: [PATCH 4/7] Fix decodifica eventi (da rendere configurabile!!!) --- IOB-WIN/IobMTC.cs | 9 +++++---- Jenkinsfile | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index 4f37e28e..b8d423a4 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -782,13 +782,14 @@ namespace IOB_WIN string currPowerOn = ""; try { - var exeMode = dataItemMem["POWER"]; + var exeMode = dataItemMem["E_POWER"]; currPowerOn = exeMode.value; } catch (Exception exc) { lgError($"Eccezione in decodifica currPowerOn: {Environment.NewLine}{exc}"); } + bool checkPowerOn = (currPowerOn == "ON"); // bit 0 (poweron) imposto a 1 SE pingo o PowerOn=="ON"... @@ -801,7 +802,7 @@ namespace IOB_WIN string currUnOpStatus = ""; try { - var exeMode = dataItemMem["Path_01_EXE_MODE"]; + var exeMode = dataItemMem["E_Path_01_EXE_MODE"]; currExe = exeMode.value; } catch (Exception exc) @@ -810,7 +811,7 @@ namespace IOB_WIN } try { - var runMode = dataItemMem["Path_01_RUN_MODE"]; + var runMode = dataItemMem["E_Path_01_RUN_MODE"]; currRun = runMode.value; } catch (Exception exc) @@ -819,7 +820,7 @@ namespace IOB_WIN } try { - var UnOp_Status = dataItemMem["ST_UnOp_01_Status"]; + var UnOp_Status = dataItemMem["E_ST_UnOp_01_Status"]; currUnOpStatus = UnOp_Status.value; } catch (Exception exc) diff --git a/Jenkinsfile b/Jenkinsfile index 657420fb..e4d1997a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=553']) { + withEnv(['NEXT_BUILD_NUMBER=554']) { // env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN' From 72219b30f5562859a29d181d867d72e510e75d03 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 3 Dec 2019 18:43:34 +0100 Subject: [PATCH 5/7] test x loggin info ausiliarie... --- IOB-WIN/IobMTC.cs | 36 +++++++++++++++++++++--------------- Jenkinsfile | 2 +- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index b8d423a4..6a9ae229 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -286,6 +286,11 @@ namespace IOB_WIN }; // aggiungo dataItemMem.Add(dataItem.Id, currDataItem); + // lo g x capire COME ho chiamato alcune cosette... + if (dataItem.Id.Contains("EXE_MODE")) + { + lgInfo($"DEBUG DATA | EXE_MODE: ID dataItem : {dataItem.Id}"); + } // salvo oggetto x registrazione su server MP-IO currMapoDataItem = new machDataItem() { @@ -443,7 +448,7 @@ namespace IOB_WIN { descr = itemTranslation("C", dataItem.DataItemId); locTStamp = dataItem.Timestamp.ToLocalTime(); - sVal = $"CONDITION: {locTStamp.ToString()} | descr: {descr} | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; + sVal = $"CONDITION: {locTStamp.ToString()} | descr: {descr} | Id: {dataItem.DataItemId} | | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; lgInfo(sVal); // verifico se salvare bool changed = checkSaveItem(dataItem); @@ -464,7 +469,7 @@ namespace IOB_WIN { descr = itemTranslation("E", dataItem.DataItemId); locTStamp = dataItem.Timestamp.ToLocalTime(); - sVal = $"EVENT: {locTStamp.ToString()} | descr: {descr} | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; + sVal = $"EVENT: {locTStamp.ToString()} | descr: {descr} | Id: {dataItem.DataItemId} | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; lgInfo(sVal); DateTime tStamp = dataItem.Timestamp; var time2 = tStamp.ToLocalTime(); @@ -487,7 +492,7 @@ namespace IOB_WIN { descr = itemTranslation("S", dataItem.DataItemId); locTStamp = dataItem.Timestamp.ToLocalTime(); - sVal = $"SAMPLE: {locTStamp.ToString()} | descr: {descr} | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; + sVal = $"SAMPLE: {locTStamp.ToString()} | descr: {descr} | Id: {dataItem.DataItemId} | | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; lgInfo(sVal); // verifico se salvare bool changed = checkSaveSample(dataItem); @@ -780,14 +785,15 @@ namespace IOB_WIN // Controllo booleano PING e POWERON... bool checkPing = (testPingMachine == IPStatus.Success); string currPowerOn = ""; + MtcDataItemExt currMTC_DI = null; try { - var exeMode = dataItemMem["E_POWER"]; - currPowerOn = exeMode.value; + currMTC_DI = dataItemMem["POWER"]; + currPowerOn = currMTC_DI.value; } catch (Exception exc) { - lgError($"Eccezione in decodifica currPowerOn: {Environment.NewLine}{exc}"); + //lgError($"Eccezione in decodifica currPowerOn: {Environment.NewLine}{exc}"); } bool checkPowerOn = (currPowerOn == "ON"); @@ -802,30 +808,30 @@ namespace IOB_WIN string currUnOpStatus = ""; try { - var exeMode = dataItemMem["E_Path_01_EXE_MODE"]; - currExe = exeMode.value; + currMTC_DI = dataItemMem["Path_01_EXE_MODE"]; + currExe = currMTC_DI.value; } catch (Exception exc) { - lgError($"Eccezione in decodifica exeMode: {Environment.NewLine}{exc}"); + //lgError($"Eccezione in decodifica exeMode: {Environment.NewLine}{exc}"); } try { - var runMode = dataItemMem["E_Path_01_RUN_MODE"]; - currRun = runMode.value; + currMTC_DI = dataItemMem["Path_01_RUN_MODE"]; + currRun = currMTC_DI.value; } catch (Exception exc) { - lgError($"Eccezione in decodifica runMode: {Environment.NewLine}{exc}"); + //lgError($"Eccezione in decodifica runMode: {Environment.NewLine}{exc}"); } try { - var UnOp_Status = dataItemMem["E_ST_UnOp_01_Status"]; - currUnOpStatus = UnOp_Status.value; + currMTC_DI = dataItemMem["ST_UnOp_01_Status"]; + currUnOpStatus = currMTC_DI.value; } catch (Exception exc) { - lgError($"Eccezione in decodifica UnOp_Status: {Environment.NewLine}{exc}"); + //lgError($"Eccezione in decodifica UnOp_Status: {Environment.NewLine}{exc}"); } // controllo lavora... diff --git a/Jenkinsfile b/Jenkinsfile index e4d1997a..98e1de8a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=554']) { + withEnv(['NEXT_BUILD_NUMBER=555']) { // env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN' From 3fda4d791b748b43c4e8c6eee222fcc5db4c4976 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 3 Dec 2019 19:08:34 +0100 Subject: [PATCH 6/7] Ancora update! --- IOB-WIN/IobMTC.cs | 173 +++++++++++++++++++++++++++++----------------- Jenkinsfile | 2 +- 2 files changed, 110 insertions(+), 65 deletions(-) diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index 6a9ae229..d0189e1f 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -208,6 +208,7 @@ namespace IOB_WIN } protected void DevicesSuccessful(MTConnectDevices.Document document) { + lgInfo("STEP DevicesSuccessful reached!"); MtcDataItemExt currDataItem = null; machDataItem currMapoDataItem = null; List elencoDataItems = new List(); @@ -227,70 +228,9 @@ namespace IOB_WIN lgInfo(sVal); try { - // uuid e parametri secondo categoria... - switch (dataItem.Category) - { - case MTConnect.DataItemCategory.CONDITION: - uuid = $"C_{dataItem.Id}"; - threshDBand = 0; - dSamplePeriod = 0; - break; - case MTConnect.DataItemCategory.EVENT: - uuid = $"E_{dataItem.Id}"; - threshDBand = 0; - dSamplePeriod = 0; - break; - case MTConnect.DataItemCategory.SAMPLE: - uuid = $"S_{dataItem.Id}"; - // SOLOS E è abilitato il datafiltering... - if (enableDataFilter) - { - threshDBand = 1; - if (dataItem.Id.EndsWith("PosAct") || dataItem.Id.EndsWith("PosTgt")) - { - threshDBand = 5; - } - } - else - { - threshDBand = 0; - } - dSamplePeriod = 60; - break; - default: - break; - } - // salvo oggetto x "uso interno" - currDataItem = new MtcDataItemExt() - { - Id = dataItem.Id, - Category = dataItem.Category, - Constraints = dataItem.Constraints, - CoordinateSystem = dataItem.CoordinateSystem, - Name = dataItem.Name, - NativeScale = dataItem.NativeScale, - NativeUnits = dataItem.NativeUnits, - SampleRate = dataItem.SampleRate, - Representation = dataItem.Representation, - SignificantDigits = dataItem.SignificantDigits, - Source = dataItem.Source, - Statistic = dataItem.Statistic, - SubType = dataItem.SubType, - Type = dataItem.Type, - TypePath = dataItem.TypePath, - Units = dataItem.Units, - XPath = dataItem.XPath, - uid = uuid, - thresholdDeadBand = threshDBand, - samplePeriod = dSamplePeriod - }; + currDataItem = formatDataItem(ref dSamplePeriod, ref threshDBand, ref uuid, dataItem); // aggiungo dataItemMem.Add(dataItem.Id, currDataItem); - // lo g x capire COME ho chiamato alcune cosette... - if (dataItem.Id.Contains("EXE_MODE")) - { - lgInfo($"DEBUG DATA | EXE_MODE: ID dataItem : {dataItem.Id}"); - } // salvo oggetto x registrazione su server MP-IO currMapoDataItem = new machDataItem() { @@ -304,8 +244,10 @@ namespace IOB_WIN // aggiungo elencoDataItems.Add(currMapoDataItem); } - catch - { } + catch (Exception exc) + { + lgError($"Eccezione in DevicesSuccessful / DataItem:{Environment.NewLine}{exc}"); + } } // invio IN BLOCCO il dataItem serializzati... sendDataItemsList(elencoDataItems); @@ -313,6 +255,76 @@ namespace IOB_WIN } } } + + private MtcDataItemExt formatDataItem(ref int dSamplePeriod, ref int threshDBand, ref string uuid, MTConnectDevices.DataItem dataItem) + { + MtcDataItemExt currDataItem; + // uuid e parametri secondo categoria... + switch (dataItem.Category) + { + case MTConnect.DataItemCategory.CONDITION: + uuid = $"C_{dataItem.Id}"; + threshDBand = 0; + dSamplePeriod = 0; + break; + case MTConnect.DataItemCategory.EVENT: + uuid = $"E_{dataItem.Id}"; + threshDBand = 0; + dSamplePeriod = 0; + break; + case MTConnect.DataItemCategory.SAMPLE: + uuid = $"S_{dataItem.Id}"; + // SOLOS E è abilitato il datafiltering... + if (enableDataFilter) + { + threshDBand = 1; + if (dataItem.Id.EndsWith("PosAct") || dataItem.Id.EndsWith("PosTgt")) + { + threshDBand = 5; + } + } + else + { + threshDBand = 0; + } + dSamplePeriod = 60; + break; + default: + break; + } + // salvo oggetto x "uso interno" + currDataItem = new MtcDataItemExt() + { + Id = dataItem.Id, + Category = dataItem.Category, + Constraints = dataItem.Constraints, + CoordinateSystem = dataItem.CoordinateSystem, + Name = dataItem.Name, + NativeScale = dataItem.NativeScale, + NativeUnits = dataItem.NativeUnits, + SampleRate = dataItem.SampleRate, + Representation = dataItem.Representation, + SignificantDigits = dataItem.SignificantDigits, + Source = dataItem.Source, + Statistic = dataItem.Statistic, + SubType = dataItem.SubType, + Type = dataItem.Type, + TypePath = dataItem.TypePath, + Units = dataItem.Units, + XPath = dataItem.XPath, + uid = uuid, + thresholdDeadBand = threshDBand, + samplePeriod = dSamplePeriod + }; + // lo g x capire COME ho chiamato alcune cosette... + if (dataItem.Id.Contains("EXE_MODE") || dataItem.Id.Contains("RUN_MODE") || dataItem.Id.Contains("POWER") || dataItem.Id.EndsWith("_Status")) + { + lgInfo($"DEBUG DATA | dataItem.Id : {dataItem.Id}"); + } + + return currDataItem; + } + /// /// Effettua invio a MP/IO dell'elenco serializzato dei dataItems /// @@ -359,6 +371,34 @@ namespace IOB_WIN dataItemMem[newValue.DataItemId].valueTimestamp = newValue.Timestamp; answ = true; } + else + { + // registro non trovato da aggiungere... + lgInfo($"DataItem non trovato in checkSaveItem: {newValue.DataItemId}"); +#if false + List elencoDataItems = new List(); + int dSamplePeriod = 0; + int threshDBand = 0; + string uuid = ""; + var currDataItem = formatDataItem(ref dSamplePeriod, ref threshDBand, ref uuid, (MTConnectDevices.DataItem)newValue); + // aggiungo + dataItemMem.Add(newValue.DataItemId, currDataItem); + // salvo oggetto x registrazione su server MP-IO + var currMapoDataItem = new machDataItem() + { + uuid = newValue.DataItemId, + Category = (DataItemCategory)newValue.Category, + Name = newValue.Name, + Type = newValue.Type, + SubType = newValue.SubType, + //Units = newValue.Units + }; + // aggiungo + elencoDataItems.Add(currMapoDataItem); + // invio IN BLOCCO il dataItem serializzati... + sendDataItemsList(elencoDataItems); +#endif + } } else { @@ -423,6 +463,11 @@ namespace IOB_WIN dataItemMem[newValue.DataItemId].valueTimestamp = newValue.Timestamp; } } + else + { + // registro non trovato da aggiungere... + lgInfo($"DataItem non trovato in checkSaveSample: {newValue.DataItemId}"); + } } else { diff --git a/Jenkinsfile b/Jenkinsfile index 98e1de8a..4bfc3186 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=555']) { + withEnv(['NEXT_BUILD_NUMBER=556']) { // env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN' From 2b268fa9e6c882de7ca218e155da309be31fd020 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 3 Dec 2019 20:45:55 +0100 Subject: [PATCH 7/7] Fix date x non ridurre a duplicato... --- IOB-WIN/IobMTC.cs | 8 ++++++-- Jenkinsfile | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index d0189e1f..a2b5e894 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -495,12 +495,15 @@ namespace IOB_WIN locTStamp = dataItem.Timestamp.ToLocalTime(); sVal = $"CONDITION: {locTStamp.ToString()} | descr: {descr} | Id: {dataItem.DataItemId} | | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; lgInfo(sVal); + DateTime tStamp = dataItem.Timestamp; + var time2 = tStamp.ToLocalTime(); // verifico se salvare bool changed = checkSaveItem(dataItem); if (changed) { // accodare ed invia nella coda ALARMS (che POI salva in document MongoDB anche ultimi x minuti di FluxLog...) - accodaAlarmLog(sVal, qEncodeFLog(locTStamp, descr, dataItem.CDATA)); + accodaAlarmLog(sVal, qEncodeFLog(time2, descr, dataItem.CDATA)); + //accodaAlarmLog(sVal, qEncodeFLog(locTStamp, descr, dataItem.CDATA)); } } } @@ -522,7 +525,8 @@ namespace IOB_WIN bool changed = checkSaveItem(dataItem); if (changed) { - accodaFLog(sVal, qEncodeFLog(locTStamp, descr, dataItem.CDATA)); + accodaFLog(sVal, qEncodeFLog(time2, descr, dataItem.CDATA)); + //accodaFLog(sVal, qEncodeFLog(locTStamp, descr, dataItem.CDATA)); } } } diff --git a/Jenkinsfile b/Jenkinsfile index 4bfc3186..f288335f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=556']) { + withEnv(['NEXT_BUILD_NUMBER=557']) { // env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN'