diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index ae4d2c02..ac7e681a 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -305,6 +305,28 @@ namespace IOB_WIN string answ = $"{tipo}_{id}"; return answ; } + + /// + /// Verifica / Salva valore generico (NON SAMPLE) + /// + /// + /// + protected bool checkSaveItem(MTConnectStreams.DataItem newValue) + { + bool answ = false; + if (newValue != null) + { + // verifico in memoria se ho l'oggetto condition ed il suo valore.. + if (dataItemMem.ContainsKey(newValue.DataItemId)) + { + // salvo sempre! + dataItemMem[newValue.DataItemId].value = newValue.CDATA; + dataItemMem[newValue.DataItemId].valueTimestamp = newValue.Timestamp; + answ = true; + } + } + return answ; + } /// /// Verifica / Salva valore SAMPLE e restitusice SE sia variato (e quindi da inviare...) /// @@ -388,7 +410,12 @@ namespace IOB_WIN descr = itemTranslation("C", dataItem.DataItemId); sVal = $"CONDITION: {dataItem.Timestamp.ToString()} | descr: {descr} | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; lgInfo(sVal); - accodaFLog(sVal, qEncodeFLog(descr, dataItem.CDATA)); + // verifico se salvare + bool changed = checkSaveItem(dataItem); + if (changed) + { + accodaFLog(sVal, qEncodeFLog(descr, dataItem.CDATA)); + } // devo accodare ed inviare nella coda ALARMS (che POI salva in document MongoDB anche ultimi 3 minuti di FluxLog...) !!!FARE!!! } } @@ -403,7 +430,12 @@ namespace IOB_WIN descr = itemTranslation("E", dataItem.DataItemId); sVal = $"EVENT: {dataItem.Timestamp.ToString()} | descr: {descr} | Name: {dataItem.Name} | Val: {dataItem.CDATA}"; lgInfo(sVal); - accodaFLog(sVal, qEncodeFLog(descr, dataItem.CDATA)); + // verifico se salvare + bool changed = checkSaveItem(dataItem); + if (changed) + { + accodaFLog(sVal, qEncodeFLog(descr, dataItem.CDATA)); + } } } catch @@ -587,17 +619,6 @@ namespace IOB_WIN currDispData.semIn = Semaforo.SV; - -#if false - // effettuo TUTTE le letture - MTC_ref.ReadWords(MTCFinsTCP.Net.PlcMemory.CIO, 0, 60, out memReadCIO_IN); - MTC_ref.ReadWords(MTCFinsTCP.Net.PlcMemory.CIO, 100, 10, out memReadCIO_OUT); - //MTC_ref.ReadWords(MTCFinsTCP.Net.PlcMemory.DM, 0, 8, out memReadDM); - //MTC_ref.ReadWords(MTCFinsTCP.Net.PlcMemory.WR, 0, 8, out memReadWR); - - - lastCountCNC = pesoRilevato; -#endif // decodifica e gestione decodeToBaseBitmap(); reportRawInput(ref currDispData); @@ -636,40 +657,104 @@ namespace IOB_WIN * B2: pzCount * B3: allarme * B4: manuale - * B5: carico SILOS - * B6: carico AUTOBOTTE + * + * + * + * E_Path_01_RUN_MODE + * public enum MtcRunMode + * { + * UNDEFINED = 0, + * AUTOMATIC, + * EDIT, + * MANUAL_DATA_INPUT, + * MANUAL, + * SEMI_AUTO + * } + * + * + * E_Path_01_EXE_MODE + * /// + * /// ENUM degli stati EXE del path MTC + * /// + * public enum MtcExeMode + * { + * UNDEFINED = 0, + * ACTIVE, + * READY, + * STOPPED, + * FEED_HOLD, + * OPTIONAL_STOP, + * PROGRAM_STOPPED, + * PROGRAM_COMPLETED + * } + * + * + * LAVORA SOLO SE + * Path_01_EXE_MODE = ACTIVE + * Path_01_RUN_MODE = AUTOMATIC + * ST_Abilitaz_Abrasivo = ACTIVE + * ST_Getto_On = ACTIVE + * ST_UnOp_01_Status = ACTIVE + * ----------------------------------------------------- */ // bit 0 (poweron) imposto a 1 SE pingo... B_input = testPing == IPStatus.Success ? 1 : 0; -#if false - bool caricoSilos = ((memReadCIO_IN[55] & (1 << 2)) != 0); - bool caricoAutobotte = ((memReadCIO_IN[50] & (1 << 2)) != 0); - // filtro DEVE ANDARE ma VIENE RILEVATO DOPO, POTREBEB andare da solo x scaricare... - bool runFiltro = ((memReadCIO_IN[0] & (1 << 1)) != 0); - - // RUN se CIO_bit 0.01 รจ RUN FILTRO... - if ((caricoAutobotte || caricoSilos)) + // variabili appoggio... + bool hasError = false; + string currExe = ""; + string currRun = ""; + string currUnOpStatus = ""; + try { - // SE HO carico silos OPPURE carico autobotte --> RUN - B_input += (1 << 1); + var exeMode = dataItemMem["Path_01_EXE_MODE"]; + currExe = exeMode.value; } - // ERROR generale (CORREGGERE!) + catch + { } + try + { + var runMode = dataItemMem["Path_01_RUN_MODE"]; + currRun = runMode.value; + } + catch + { } + try + { + var UnOp_Status = dataItemMem["ST_UnOp_01_Status"]; + currUnOpStatus = UnOp_Status.value; + } + catch + { } + + // controllo lavora... + if (currRun == "AUTOMATIC") + { + if (currExe == "ACTIVE") + { + if (currUnOpStatus == "ACTIVE") + { + // RUN = LAVORA! + B_input += (1 << 1); + } + } + } + else + { + // se ho run mode != auto --> manual + B_input += (1 << 4); + } + // se ho almeno 1 allarme --> ALARM! if (hasError) { B_input += (1 << 3); } - // carico SILOS - if (caricoSilos) - { - B_input += (1 << 5); - } - // carico AUTOBOTTE - if (caricoAutobotte) - { - B_input += (1 << 6); - } + + + + +#if false // process ODL e contapezzi string currODL = ""; diff --git a/Jenkinsfile b/Jenkinsfile index bf5f8780..26b831ca 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=537']) { + withEnv(['NEXT_BUILD_NUMBER=538']) { // env.versionNumber = VersionNumber(versionNumberString : '2.5.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.5.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN'