diff --git a/IOB-WIN/DATA/CONF/EM63.ini b/IOB-WIN/DATA/CONF/EM63.ini index 52254098..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 @@ -58,9 +57,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=30 +CACHE_MULT=6 ; 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 80aa367e..e17ba235 100644 --- a/IOB-WIN/IobFileEurom63.cs +++ b/IOB-WIN/IobFileEurom63.cs @@ -27,11 +27,21 @@ namespace IOB_WIN /// protected string appPath = Directory.GetCurrentDirectory(); + /// + /// Moltiplicatore durata cache + /// + protected int cacheMult = 4; + /// /// Oggetti decodificati da pagina /// 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 +50,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 @@ -55,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 @@ -79,8 +95,10 @@ 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; + lgInfo($"Sessione inattiva, {actLevel + 1} --> {actLevel}"); } } } @@ -691,10 +709,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 * cacheMult); // ora verifico SE siano validi anche le dataora dei valori letti (< 20 sec ritardo da ora...) string data = statusData[0].Trim(); @@ -713,10 +730,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 +746,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 +785,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 * cacheMult); + } + // 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 +807,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'