diff --git a/IOB-WIN-FORM/Iob/Generic.Public.cs b/IOB-WIN-FORM/Iob/Generic.Public.cs index 9368bb5e..72ec9b51 100644 --- a/IOB-WIN-FORM/Iob/Generic.Public.cs +++ b/IOB-WIN-FORM/Iob/Generic.Public.cs @@ -858,23 +858,6 @@ namespace IOB_WIN_FORM.Iob } else { - //// anche se NON connesso alcuni task di bassa freq li eseguo... - //if (ciclo == gatherCycle.LF) - //{ - // // verifico se devo gestire cambio ODL in modo automatico - // await ProcessAutoOdlAsync(); - // // verifico se devo gestire auto generazione dossier quotidiana - // ProcessAutoDossier(); - // // effettua gestione import file se configurato... - // await ProcessFileImportAsync(); - // // effettua process ritorno ricette - // await ProcessRecipeFileRetAsync(); - //} - //else if (ciclo == gatherCycle.VLF) - //{ - // processRecipeSyncArch(); - //} - // provo a riconnettere SE abilitato tryRestart... if (adpTryRestart && !connectionOk) { diff --git a/IOB-WIN-FORM/Iob/PingWatchDog.cs b/IOB-WIN-FORM/Iob/PingWatchDog.cs index 18b890fe..56843e48 100644 --- a/IOB-WIN-FORM/Iob/PingWatchDog.cs +++ b/IOB-WIN-FORM/Iob/PingWatchDog.cs @@ -55,17 +55,28 @@ namespace IOB_WIN_FORM.Iob { // effettuo check ping! DateTime adesso = DateTime.Now; - if (adesso.Subtract(lastPING).TotalSeconds >= PoweroffTimeoutSec) + var lastCheck = lastPING < lastReadPLC ? lastReadPLC : lastReadPLC; + if (adesso.Subtract(lastCheck).TotalSeconds >= PoweroffTimeoutSec) { + // gestione invio anche in caso di disconnessione // invio poweroff! newDisplayData currDispData = new newDisplayData(); - readSemafori(ref currDispData); + try + { + readSemafori(ref currDispData); + } + catch (Exception exc) + { + lgError($"Eccezione in processDisconnectedTask{Environment.NewLine}{exc}"); + } + lgDebug($"processDisconnectedTask | B_output: {B_output}"); // SOLO SE ho poweroff da inviare... if (B_output == 0) { accodaSigIN(ref currDispData); // reset last ping... lastPING = DateTime.Now; + lastReadPLC = DateTime.Now; } } } @@ -133,7 +144,9 @@ namespace IOB_WIN_FORM.Iob } sw.Stop(); // fermo per una quota del tempo di attesa previsto - Task.Delay(vetoCheckSec - (int)sw.ElapsedMilliseconds + 20); + int nextWait = vetoCheckSec * 1000 - (int)sw.ElapsedMilliseconds + 20; + nextWait = nextWait < 0 ? 10 : nextWait; + Task.Delay(nextWait); } public override void startAdapter(bool resetQueue) @@ -142,7 +155,6 @@ namespace IOB_WIN_FORM.Iob // 2023.09.05 imposto anche primo ping e check disconnected... DateTime adesso = DateTime.Now; lastWatchDog = adesso; - //lastPING = adesso; lastReadPLC = adesso; lastDisconnCheck = adesso; // faccio un primo check POST ritardo @@ -158,8 +170,6 @@ namespace IOB_WIN_FORM.Iob lgDebug($"PING: tryConnect step 01 | connectionOk: {connectionOk}"); if (!connectionOk) { - //// resetto coda... - //QueuePing = new DataQueue("000", "QueuePing", false); // controllo che il ping sia stato tentato almeno pingTestSec fa... if (DateTime.Now.Subtract(lastPING).TotalSeconds > utils.CRI("pingTestSec")) { @@ -191,6 +201,10 @@ namespace IOB_WIN_FORM.Iob { // loggo no risposta ping ... lgError("PING KO"); + // 2026.05.19 aggiunta esecuzione disconnect + queueInEnabCurr = true; + processDisconnectedTask(); + queueInEnabCurr = false; } } } @@ -227,7 +241,7 @@ namespace IOB_WIN_FORM.Iob // controllo: se era spenta e risulta ping ok --> reset coda! if (B_input == 0 && pingOk) { - B_input = 1; + B_input = bInOn; QueuePing = new DataQueue(IOBConfFull.General.FilenameIOB, "QueuePing", false, redisMan); lgTrace($"QueuePing resetted on addTest"); } @@ -255,7 +269,7 @@ namespace IOB_WIN_FORM.Iob long numOk = listaValori.Where(x => x == "1").Count(); long numKo = numVal - numOk; answ = numOk >= numKo; - lgTrace($"PING ok per: {numOk} > {numKo}"); + lgTrace($"PING | numOK:{numOk} | numKO: {numKo}"); } else { diff --git a/IOB-WIN-PING/DATA/CONF/3023-PING.ini b/IOB-WIN-PING/DATA/CONF/3023-PING.ini index 69998dc9..80e1b769 100644 --- a/IOB-WIN-PING/DATA/CONF/3023-PING.ini +++ b/IOB-WIN-PING/DATA/CONF/3023-PING.ini @@ -10,14 +10,16 @@ MODEL=WATCHDOG [CNC] IP=192.168.1.151 -;IP=192.168.1.7 +;IP=192.168.1.8 PORT=0000 [SERVER] MPIP=http://192.168.1.7 -MPURL=/MP/IO +MPURL=/MP/RIOC/api +APICLASS=IOB CMDBASE=/IOB/input/ CMDFLOG=/IOB/flog/ +CMDULOG=/IOB/ulog/ CMDALIVE=/IOB CMDENABLED=/IOB/enabled/ CMDADV1=?valore= @@ -30,6 +32,7 @@ MAX_COUNTER_BLINK = 15 BLINK_FILT=0 [OPTPAR] +MAX_ERR_CHECK=10 timerIntMs=300 VETO_QUEUE_IN=15 AUTO_CHANGE_ODL=false @@ -57,3 +60,4 @@ Customer=JETCO HostOS=WIN HostName=IOB-WIN-09 HostAddr=192.168.1.133 + diff --git a/IOB-WIN-PING/DATA/CONF/MAIN.ini b/IOB-WIN-PING/DATA/CONF/MAIN.ini index ab68298b..6c58c8da 100644 --- a/IOB-WIN-PING/DATA/CONF/MAIN.ini +++ b/IOB-WIN-PING/DATA/CONF/MAIN.ini @@ -15,8 +15,8 @@ CLI_INST=SteamWareSim ;STARTLIST=PING ;STARTLIST=SIMUL_01 ;STARTLIST=FTP-PING -STARTLIST=SIMUL_08 -;STARTLIST=3024-PING ;STARTLIST=3023-PING,3024-PING +;STARTLIST=SIMUL_08 +STARTLIST=3023-PING MAXCNC=10 diff --git a/IOB-WIN-SIEMENS/DATA/CONF/3023-PING.ini b/IOB-WIN-SIEMENS/DATA/CONF/3023-PING.ini new file mode 100644 index 00000000..ec3d2e6d --- /dev/null +++ b/IOB-WIN-SIEMENS/DATA/CONF/3023-PING.ini @@ -0,0 +1,63 @@ +;Configurazione IOB-WIN +[IOB] +CNCTYPE=PingWatchdog +PING_MS_TIMEOUT=500 +IOB_NAME=3023 + +[MACHINE] +VENDOR=STEAMWARE +MODEL=WATCHDOG + +[CNC] +;IP=192.168.1.151 +IP=192.168.1.8 +PORT=0000 + +[SERVER] +MPIP=http://192.168.1.7 +MPURL=/MP/RIOC/api +APICLASS=IOB +CMDBASE=/IOB/input/ +CMDFLOG=/IOB/flog/ +CMDULOG=/IOB/ulog/ +CMDALIVE=/IOB +CMDENABLED=/IOB/enabled/ +CMDADV1=?valore= +CMDREBO=/sendReboot.aspx?idxMacchina= + +[MEMORY] + +[BLINK] +MAX_COUNTER_BLINK = 15 +BLINK_FILT=0 + +[OPTPAR] +MAX_ERR_CHECK=10 +timerIntMs=300 +VETO_QUEUE_IN=15 +AUTO_CHANGE_ODL=false +POWEROFF_TIMEOUT_SEC=60 +DISABLE_PZCOUNT=TRUE +;; gestioni PING +;MAX_TRY_PING=3 +;VETO_QUEUE_IN=4 +;VETO_PING_SEC=4 +;VETO_CHECKDIR_SEC=10 +;MAX_ELAPSED_TIME_SEC=60 +;VETO_SEND_SNAPSHOT=3 +VETO_SIG_IN=false +B_IN_OFF=0 +B_IN_ON=129 +VETO_PING_SEC=6 +VETO_SCADUTO=TRUE + +[BRANCH] +NAME=master + +; Tags manuali +[TAGS] +Customer=JETCO +HostOS=WIN +HostName=IOB-WIN-09 +HostAddr=192.168.1.133 +