diff --git a/IOB-WIN/App.config b/IOB-WIN/App.config index d7763b44..255f3049 100644 --- a/IOB-WIN/App.config +++ b/IOB-WIN/App.config @@ -24,6 +24,7 @@ + @@ -57,9 +58,9 @@ - + - + diff --git a/IOB-WIN/IobFanuc.cs b/IOB-WIN/IobFanuc.cs index efd24adc..a5965197 100644 --- a/IOB-WIN/IobFanuc.cs +++ b/IOB-WIN/IobFanuc.cs @@ -131,56 +131,63 @@ namespace IOB_WIN { if (!connectionOk) { - // in primis PING!!! - Ping pingSender = new Ping(); - IPAddress address = IPAddress.Loopback; - IPAddress.TryParse(currIobConf.cncIpAddr, out address); - PingReply reply = pingSender.Send(address); - // se passa il ping faccio il resto... - if (reply.Status == IPStatus.Success) + // controllo che il ping sia stato tentato almeno pingTestSec fa... + if (DateTime.Now.Subtract(lastPING).TotalSeconds > utils.CRI("pingTestSec")) { - string szStatusConnection = ""; - try + if (verboseLog || periodicLog) lg.Info("ConnKO - tryConnect"); + // in primis salvo data ping... + lastPING = DateTime.Now; + // ora PING!!! + Ping pingSender = new Ping(); + IPAddress address = IPAddress.Loopback; + IPAddress.TryParse(currIobConf.cncIpAddr, out address); + PingReply reply = pingSender.Send(address, 100); + // se passa il ping faccio il resto... + if (reply.Status == IPStatus.Success) { - // ora provo connessione... - parentForm.commPlcActive = true; - FANUC_ref.Connect(ref szStatusConnection); - parentForm.commPlcActive = false; - lg.Info("szStatusConnection: " + szStatusConnection); - connectionOk = true; - // refresh stato allarmi!!! - if (connectionOk) + string szStatusConnection = ""; + try { - if (adpRunning) + // ora provo connessione... + parentForm.commPlcActive = true; + FANUC_ref.Connect(ref szStatusConnection); + parentForm.commPlcActive = false; + lg.Info("szStatusConnection: " + szStatusConnection); + connectionOk = true; + // refresh stato allarmi!!! + if (connectionOk) { - // carico status allarmi (completo) - lg.Info("Inizio refresh completo stato allarmi..."); - forceAlarmCheck(); - lg.Info("Completato refresh completo stato allarmi!"); + if (adpRunning) + { + // carico status allarmi (completo) + lg.Info("Inizio refresh completo stato allarmi..."); + forceAlarmCheck(); + lg.Info("Completato refresh completo stato allarmi!"); + } + else + { + lg.Info("Connessione OK"); + } } else { - lg.Info("Connessione OK"); + lg.Error("Impossibile procedere, connessione mancante..."); } } - else + catch (Exception exc) { - lg.Error("Impossibile procedere, connessione mancante..."); + lg.Fatal(string.Format("Errore nella connessione all'adapter FANUC: {0}{1}{2}", szStatusConnection, Environment.NewLine, exc)); + connectionOk = false; + lg.Info(string.Format("Eccezione in TryConnect, Adapter NON running, pausa di {0} msec prima di ulteriori tentativi di riconnessione", utils.CRI("waitRecMSec"))); } } - catch (Exception exc) + else { - lg.Fatal(string.Format("Errore nella connessione all'adapter FANUC: {0}{1}{2}", szStatusConnection, Environment.NewLine, exc)); + // loggo no risposta ping ... connectionOk = false; - lg.Info(string.Format("Eccezione in TryConnect, Adapter NON running, pausa di {0} msec prima di ulteriori tentativi di riconnessione", utils.CRI("waitRecMSec"))); + if (verboseLog || periodicLog) lg.Info(string.Format("Attenzione: controllo PING fallito per IP {0} - {1}", currIobConf.cncIpAddr, reply.Status)); } } - else - { - // loggo no risposta ping ... - connectionOk = false; - lg.Info(string.Format("Attenzione: controllo PING fallito per IP {0} - {1}", currIobConf.cncIpAddr, reply.Status)); - } } // se non è ancora connesso faccio procesisng memoria caso disconnesso... if (!connectionOk) diff --git a/IOB-WIN/IobGeneric.cs b/IOB-WIN/IobGeneric.cs index 0be75f3b..48685c03 100644 --- a/IOB-WIN/IobGeneric.cs +++ b/IOB-WIN/IobGeneric.cs @@ -54,6 +54,10 @@ namespace IOB_WIN /// public DateTime lastWatchDog; /// + /// dataOra ultimo PING inviato... + /// + public DateTime lastPING; + /// /// Oggetto della coda degli elementi letti (e non ancora trasmessi) /// public Queue QueueIN = new Queue(); @@ -338,6 +342,7 @@ namespace IOB_WIN adpRunning = true; dtAvvioAdp = DateTime.Now; lastWatchDog = dtAvvioAdp; + lastPING = dtAvvioAdp; TimingData.resetData(); // aggiungo altri defaults setDefaults(); @@ -490,12 +495,9 @@ namespace IOB_WIN } else { - // log connessione KO - lg.Error("getAndSend - Connessione non disponibile, provo a riconnettere"); // provo a riconnettere SE abilitato tryRestart... if (adpTryRestart && !connectionOk) { - lg.Info("ConnKO - tryConnect"); tryConnect(); } }