From 39c13ec4fb81671803f5fd6c3e434c39356f7059 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Wed, 21 Oct 2020 17:12:52 +0200 Subject: [PATCH 1/3] modifiche x gestione comportamento livello EM63 --- IOB-WIN/IobFileEurom63.cs | 42 +++++++++++++++++++++++++++++---------- Jenkinsfile | 2 +- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/IOB-WIN/IobFileEurom63.cs b/IOB-WIN/IobFileEurom63.cs index 80aa367e..541b9f1c 100644 --- a/IOB-WIN/IobFileEurom63.cs +++ b/IOB-WIN/IobFileEurom63.cs @@ -32,6 +32,11 @@ namespace IOB_WIN /// protected Eurom63.ProtoConf confE63; + /// + /// Valore currStatus validato (per gestione "disconnessioni") + /// + protected CachedInt Last_B_Input = new CachedInt() { Value = 0 }; + /// /// Valore currStatus validato (per gestione "disconnessioni") /// @@ -40,7 +45,7 @@ namespace IOB_WIN /// /// Massimo delay lettura dati prima di considerarli scaduti (30 sec, ma x test 1 gg) /// - protected int maxDelaySec = 60; + protected int maxDelaySec = 30; #endregion Protected Fields @@ -79,8 +84,9 @@ namespace IOB_WIN { // elimino TUTTE le risposte... cleanupResp(currSession.SessionName); - // imposto livello... - actLevel = Eurom63.ComLevel.HasInfo; + // imposto livellotornando indietro di 1 alla volta... senza andare in negativoS + actLevel = actLevel - 1; + actLevel = actLevel > 0 ? actLevel : 0; } } } @@ -691,10 +697,9 @@ namespace IOB_WIN { currDispData.semIn = Semaforo.SV; } - readDone = true; // salvo in cache! Last_CurrStatus.Value = currStatus; - Last_CurrStatus.ValidUntil = DateTime.Now.AddSeconds(15); + Last_CurrStatus.ValidUntil = DateTime.Now.AddSeconds(maxDelaySec * 4); // ora verifico SE siano validi anche le dataora dei valori letti (< 20 sec ritardo da ora...) string data = statusData[0].Trim(); @@ -713,10 +718,11 @@ namespace IOB_WIN // elimino file RSP... cleanupResp(sessStatus.SessionName); } + readDone = true; } else { - lgError($"decodifica StatusData in errore: trovati {statusData.Length} campi in {rawLines}"); + lgError($"Decodifica StatusData in errore: trovati {statusData.Length} campi in {rawLines}"); } } else @@ -728,12 +734,15 @@ namespace IOB_WIN } else { - actLevel = Eurom63.ComLevel.ChannelOk; // se valido RILEGGO ultimo curr status if (Last_CurrStatus.ValidUntil > adesso) { currStatus = Last_CurrStatus.Value; } + else + { + actLevel = Eurom63.ComLevel.ChannelOk; + } } } @@ -764,8 +773,18 @@ namespace IOB_WIN { B_input += (1 << 3); } + // salvo B_Input in cache! + Last_B_Input.Value = B_input; + Last_B_Input.ValidUntil = DateTime.Now.AddSeconds(maxDelaySec * 4); + } + // se disponibile riporto B_Input precedente + else + { + if (Last_B_Input.ValidUntil > adesso) + { + B_input = Last_B_Input.Value; + } } - // riporto bitmap... reportRawInput(ref currDispData); } @@ -776,12 +795,13 @@ namespace IOB_WIN currDispData.semIn = Semaforo.SR; } + // ultimo controllo... if (!readDone) { - // se valido RILEGGO ultimo curr status - if (Last_CurrStatus.ValidUntil > adesso) + // se valido RILEGGO ultimo B_INPUT + if (Last_B_Input.ValidUntil > adesso) { - currStatus = Last_CurrStatus.Value; + B_input = Last_B_Input.Value; } } } diff --git a/Jenkinsfile b/Jenkinsfile index 0c3ba53d..c2564110 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,7 +9,7 @@ pipeline { steps { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=733']) { + withEnv(['NEXT_BUILD_NUMBER=734']) { // env.versionNumber = VersionNumber(versionNumberString : '3.3.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '3.3.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN' From eca25db4191effdda145bacabc37c75490187907 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Wed, 21 Oct 2020 17:19:13 +0200 Subject: [PATCH 2/3] conf cache aprametrica --- IOB-WIN/DATA/CONF/EM63.ini | 8 +++++--- IOB-WIN/IobFileEurom63.cs | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/IOB-WIN/DATA/CONF/EM63.ini b/IOB-WIN/DATA/CONF/EM63.ini index 52254098..78c2e172 100644 --- a/IOB-WIN/DATA/CONF/EM63.ini +++ b/IOB-WIN/DATA/CONF/EM63.ini @@ -58,9 +58,11 @@ PZCOUNT_MODE=NONE DISABLE_PZCOUNT=TRUE ENABLE_DYN_DATA=TRUE FORCE_DYN_DATA=TRUE -;ENABLE_SEND_PZC_BLOCK=TRUE -;MIN_SEND_PZC_BLOCK=0 -;MAX_SEND_PZC_BLOCK=100 +ENABLE_SEND_PZC_BLOCK=TRUE +MIN_SEND_PZC_BLOCK=0 +MAX_SEND_PZC_BLOCK=1200 +MAX_DELAY_SEC=15 +CACHE_MULT=8 ; CONF variabili da recuperare in WebPage (stato macchina, contatori, variabili, ...) LUT_CONF=EM63.json timerIntMs=10 diff --git a/IOB-WIN/IobFileEurom63.cs b/IOB-WIN/IobFileEurom63.cs index 541b9f1c..e17ba235 100644 --- a/IOB-WIN/IobFileEurom63.cs +++ b/IOB-WIN/IobFileEurom63.cs @@ -27,6 +27,11 @@ namespace IOB_WIN /// protected string appPath = Directory.GetCurrentDirectory(); + /// + /// Moltiplicatore durata cache + /// + protected int cacheMult = 4; + /// /// Oggetti decodificati da pagina /// @@ -60,6 +65,12 @@ namespace IOB_WIN { lgInfo("INIT IobFileEurom63"); appPath = Path.GetDirectoryName(Application.ExecutablePath); + + string MAX_DELAY_SEC = getOptPar("MAX_DELAY_SEC"); + string CACHE_MULT = getOptPar("CACHE_MULT"); + int.TryParse(MAX_DELAY_SEC, out maxDelaySec); + int.TryParse(CACHE_MULT, out cacheMult); + #if DEBUG maxDelaySec = 60 * 60 * 24; #endif @@ -87,6 +98,7 @@ namespace IOB_WIN // imposto livellotornando indietro di 1 alla volta... senza andare in negativoS actLevel = actLevel - 1; actLevel = actLevel > 0 ? actLevel : 0; + lgInfo($"Sessione inattiva, {actLevel + 1} --> {actLevel}"); } } } @@ -699,7 +711,7 @@ namespace IOB_WIN } // salvo in cache! Last_CurrStatus.Value = currStatus; - Last_CurrStatus.ValidUntil = DateTime.Now.AddSeconds(maxDelaySec * 4); + Last_CurrStatus.ValidUntil = DateTime.Now.AddSeconds(maxDelaySec * cacheMult); // ora verifico SE siano validi anche le dataora dei valori letti (< 20 sec ritardo da ora...) string data = statusData[0].Trim(); @@ -775,7 +787,7 @@ namespace IOB_WIN } // salvo B_Input in cache! Last_B_Input.Value = B_input; - Last_B_Input.ValidUntil = DateTime.Now.AddSeconds(maxDelaySec * 4); + Last_B_Input.ValidUntil = DateTime.Now.AddSeconds(maxDelaySec * cacheMult); } // se disponibile riporto B_Input precedente else From 99e356f5cd26ca3f3cdea33739df5ea7fc5e566d Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Wed, 21 Oct 2020 17:23:05 +0200 Subject: [PATCH 3/3] fix conf cache --- IOB-WIN/DATA/CONF/EM63.ini | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/IOB-WIN/DATA/CONF/EM63.ini b/IOB-WIN/DATA/CONF/EM63.ini index 78c2e172..3a71a257 100644 --- a/IOB-WIN/DATA/CONF/EM63.ini +++ b/IOB-WIN/DATA/CONF/EM63.ini @@ -8,10 +8,9 @@ PING_MS_TIMEOUT=500 VENDOR=PlasticMetal MODEL=MPW280SP -[CNC] -;IP=192.168.1.55 +[CNC] IP=10.74.82.253 -;IP=10.82.74.1 +;IP=192.168.1.151 [SERVER] MPIP=http://10.74.82.218 @@ -61,8 +60,8 @@ FORCE_DYN_DATA=TRUE ENABLE_SEND_PZC_BLOCK=TRUE MIN_SEND_PZC_BLOCK=0 MAX_SEND_PZC_BLOCK=1200 -MAX_DELAY_SEC=15 -CACHE_MULT=8 +MAX_DELAY_SEC=30 +CACHE_MULT=6 ; CONF variabili da recuperare in WebPage (stato macchina, contatori, variabili, ...) LUT_CONF=EM63.json timerIntMs=10