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();
}
}