FIX IOB-WIN
This commit is contained in:
+3
-3
@@ -53,17 +53,17 @@ namespace IOB_UT
|
||||
/// <summary>
|
||||
/// Indicazione VETO PING a server sino alla data-ora indicata
|
||||
/// </summary>
|
||||
public static DateTime DtHelp.dtVetoPing = DateTime.Now;
|
||||
public static DateTime dtVetoPing = DateTime.Now;
|
||||
#if false
|
||||
{
|
||||
get
|
||||
{
|
||||
return redisMan.servStatus.DtHelp.dtVetoPing;
|
||||
return redisMan.servStatus.dtVetoPing;
|
||||
}
|
||||
set
|
||||
{
|
||||
var currData = redisMan.servStatus;
|
||||
currData.DtHelp.dtVetoPing = value;
|
||||
currData.dtVetoPing = value;
|
||||
redisMan.servStatus = currData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1235,7 +1235,7 @@ namespace IOB_WIN
|
||||
counterMAC = iobObj.contapezziPLC,
|
||||
lastUpdate = lastIobStatus.lastUpdate,
|
||||
online = utils.IOB_Online,
|
||||
lastDataIn = iobObj.DtHelp.lastReadPLC
|
||||
lastDataIn = iobObj.lastReadPLC
|
||||
};
|
||||
// se diverso SALVO!
|
||||
if (lastIobStatus.online != currIobStatus.online || lastIobStatus.lastDataIn != currIobStatus.lastDataIn || lastIobStatus.counterIOB != currIobStatus.counterIOB || lastIobStatus.counterMAC != currIobStatus.counterMAC || lastIobStatus.queueEvLen != currIobStatus.queueEvLen || lastIobStatus.queueFlLen != currIobStatus.queueFlLen || lastIobStatus.queueAlLen != currIobStatus.queueAlLen || lastIobStatus.queueMsLen != currIobStatus.queueMsLen)
|
||||
|
||||
+106
-101
@@ -43,7 +43,7 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// DataOra ultimo avvio adapter x watchdog
|
||||
/// </summary>
|
||||
protected DateTime DtHelp.adpStartRun;
|
||||
protected DateTime adpStartRun;
|
||||
|
||||
/// <summary>
|
||||
/// Vettore 32 BIT valori in ingresso al filtro
|
||||
@@ -78,12 +78,12 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// ultimo tentativo connessione...
|
||||
/// </summary>
|
||||
protected DateTime DtHelp.lastConnectTry;
|
||||
protected DateTime lastConnectTry;
|
||||
|
||||
/// <summary>
|
||||
/// Ultimo invio contapezzi (x invio delayed)
|
||||
/// </summary>
|
||||
protected DateTime DtHelp.lastPzCountSend;
|
||||
protected DateTime lastPzCountSend;
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario ultimi valori (double) delle TSVC
|
||||
@@ -93,7 +93,7 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// Ultima registrazione warning x ODL mancante (x scrivere solo ogni 15 secondi)
|
||||
/// </summary>
|
||||
protected DateTime DtHelp.lastWarnODL;
|
||||
protected DateTime lastWarnODL;
|
||||
|
||||
/// <summary>
|
||||
/// indica se serva refresh parametri e quindi PLC...
|
||||
@@ -192,17 +192,17 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// Data/ora ultimo avvio adapter
|
||||
/// </summary>
|
||||
public DateTime DtHelp.AvvioAdp = DateTime.Now;
|
||||
public DateTime AvvioAdp = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// Data/ora ultimo spegnimento adapter
|
||||
/// </summary>
|
||||
public DateTime DtHelp.StopAdp = DateTime.Now;
|
||||
public DateTime StopAdp = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// Indicazione VETO check status IOB x evitare loop troppo stretti...
|
||||
/// </summary>
|
||||
public DateTime DtHelp.VetoCheckIOB = DateTime.Now.AddDays(-1);
|
||||
public DateTime VetoCheckIOB = DateTime.Now.AddDays(-1);
|
||||
|
||||
/// <summary>
|
||||
/// Abilitazione lettura PrgName
|
||||
@@ -222,27 +222,32 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// dataOra ultima verifica CNC disconnesso...
|
||||
/// </summary>
|
||||
public DateTime DtHelp.lastDisconnCheck;
|
||||
public DateTime lastDisconnCheck;
|
||||
|
||||
/// <summary>
|
||||
/// Data/ora ultima volta che IOB è stato dichairato online
|
||||
/// </summary>
|
||||
public DateTime DtHelp.lastIobOnline = DateTime.Now.AddHours(-1);
|
||||
public DateTime lastIobOnline = DateTime.Now.AddHours(-1);
|
||||
|
||||
/// <summary>
|
||||
/// dataOra ultimo log periodico...
|
||||
/// </summary>
|
||||
public DateTime DtHelp.lastPeriodicLog;
|
||||
public DateTime lastPeriodicLog;
|
||||
|
||||
/// <summary>
|
||||
/// dataOra ultimo PING inviato verso il PLC...
|
||||
/// </summary>
|
||||
public DateTime DtHelp.lastPING;
|
||||
public DateTime lastPING;
|
||||
|
||||
/// <summary>
|
||||
/// DataOra ultimo WatchDog
|
||||
/// </summary>
|
||||
public DateTime lastWatchDog = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// DataOra ultima lettura da PLC
|
||||
/// </summary>
|
||||
public DateTime DtHelp.lastReadPLC;
|
||||
public DateTime lastReadPLC;
|
||||
|
||||
/// <summary>
|
||||
/// ULtimo valore inviato (in caso di disconnessione lo reinvia x garantire watchdog...)
|
||||
@@ -282,22 +287,22 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// Coda valori ALLARMI ove gestiti...
|
||||
/// </summary>
|
||||
public ConcurrentQueue<string> QHelp.QueueAlarm = new ConcurrentQueue<string>();
|
||||
public ConcurrentQueue<string> QueueAlarm = new ConcurrentQueue<string>();
|
||||
|
||||
/// <summary>
|
||||
/// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi)
|
||||
/// </summary>
|
||||
public ConcurrentQueue<string> QHelp.QueueFLog = new ConcurrentQueue<string>();
|
||||
public ConcurrentQueue<string> QueueFLog = new ConcurrentQueue<string>();
|
||||
|
||||
/// <summary>
|
||||
/// Oggetto della coda degli elementi letti (e non ancora trasmessi)
|
||||
/// </summary>
|
||||
public ConcurrentQueue<string> QHelp.QueueIN = new ConcurrentQueue<string>();
|
||||
public ConcurrentQueue<string> QueueIN = new ConcurrentQueue<string>();
|
||||
|
||||
/// <summary>
|
||||
/// Coda valori MESSAGGI/EVENTI (da non sottocampionare come samples)...
|
||||
/// </summary>
|
||||
public ConcurrentQueue<string> QHelp.QueueMessages = new ConcurrentQueue<string>();
|
||||
public ConcurrentQueue<string> QueueMessages = new ConcurrentQueue<string>();
|
||||
|
||||
/// <summary>
|
||||
/// alias booleano false = R
|
||||
@@ -332,7 +337,7 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// Imposta veto chiamata split (durante chiamata, per 60 sec)
|
||||
/// </summary>
|
||||
public DateTime DtHelp.vetoSplit = DateTime.Now.AddMinutes(1);
|
||||
public DateTime vetoSplit = DateTime.Now.AddMinutes(1);
|
||||
|
||||
/// <summary>
|
||||
/// alias booleano true = W
|
||||
@@ -363,7 +368,7 @@ namespace IOB_WIN
|
||||
// configurazione...
|
||||
cIobConf = IOBConf;
|
||||
|
||||
DtHelp.lastConnectTry = DateTime.Now;
|
||||
lastConnectTry = DateTime.Now;
|
||||
|
||||
// aggiungo nel logger IDX Macchina
|
||||
lg = LogManager.GetCurrentClassLogger();
|
||||
@@ -408,11 +413,11 @@ namespace IOB_WIN
|
||||
{
|
||||
bool answ = false;
|
||||
// controllo se ho veto al check...
|
||||
if (DtHelp.VetoCheckIOB < DateTime.Now)
|
||||
if (VetoCheckIOB < DateTime.Now)
|
||||
{
|
||||
if (DemoOut)
|
||||
{
|
||||
answ = (QHelp.QueueIN.Count + QHelp.QueueFLog.Count >= nMaxSend);
|
||||
answ = (QueueIN.Count + QueueFLog.Count >= nMaxSend);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -454,9 +459,9 @@ namespace IOB_WIN
|
||||
// se online imposto veto check a 5 x tempo reinvio...
|
||||
if (answ)
|
||||
{
|
||||
DtHelp.lastIobOnline = DateTime.Now;
|
||||
lastIobOnline = DateTime.Now;
|
||||
}
|
||||
DtHelp.VetoCheckIOB = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 5);
|
||||
VetoCheckIOB = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 5);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
@@ -690,15 +695,15 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// Indicazione VETO PING a server sino alla data-ora indicata
|
||||
/// </summary>
|
||||
public static DateTime DtHelp.dtVetoPing
|
||||
public static DateTime dtVetoPing
|
||||
{
|
||||
get
|
||||
{
|
||||
return utils.DtHelp.dtVetoPing;
|
||||
return utils.dtVetoPing;
|
||||
}
|
||||
set
|
||||
{
|
||||
utils.DtHelp.dtVetoPing = value;
|
||||
utils.dtVetoPing = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -741,7 +746,7 @@ namespace IOB_WIN
|
||||
{
|
||||
bool answ = false;
|
||||
// controllo se ho un VETO all'invio...
|
||||
if (DtHelp.dtVetoPing < DateTime.Now)
|
||||
if (dtVetoPing < DateTime.Now)
|
||||
{
|
||||
if (DemoOut)
|
||||
{
|
||||
@@ -810,7 +815,7 @@ namespace IOB_WIN
|
||||
{
|
||||
lgInfo("SERVER ONLINE in checkServerAlive");
|
||||
parentForm.commSrvActive = 1;
|
||||
DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec);
|
||||
dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -823,7 +828,7 @@ namespace IOB_WIN
|
||||
else
|
||||
{
|
||||
// allungo periodo controllo...
|
||||
DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
|
||||
dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -831,8 +836,8 @@ namespace IOB_WIN
|
||||
lgInfo($"SERVER NOT RESPONDING (PING at {cIobConf.serverData.MPIP})");
|
||||
MPOnline = false;
|
||||
// imposto veto a 10 volte reinvio dati standard...
|
||||
DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
|
||||
utils.dtVetoSend = DtHelp.dtVetoPing;
|
||||
dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
|
||||
utils.dtVetoSend = dtVetoPing;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1034,10 +1039,10 @@ namespace IOB_WIN
|
||||
get
|
||||
{
|
||||
bool answ = false;
|
||||
answ = (DateTime.Now.Subtract(DtHelp.lastPeriodicLog).TotalSeconds > utils.CRI("verboseLogTOut"));
|
||||
answ = (DateTime.Now.Subtract(lastPeriodicLog).TotalSeconds > utils.CRI("verboseLogTOut"));
|
||||
if (answ)
|
||||
{
|
||||
DtHelp.lastPeriodicLog = DateTime.Now;
|
||||
lastPeriodicLog = DateTime.Now;
|
||||
}
|
||||
|
||||
return answ;
|
||||
@@ -1769,14 +1774,14 @@ namespace IOB_WIN
|
||||
// svuoto code se richiesto
|
||||
if (resetQueue)
|
||||
{
|
||||
QHelp.QueueIN = new ConcurrentQueue<string>();
|
||||
QHelp.QueueFLog = new ConcurrentQueue<string>();
|
||||
QHelp.QueueAlarm = new ConcurrentQueue<string>();
|
||||
QHelp.QueueMessages = new ConcurrentQueue<string>();
|
||||
QueueIN = new ConcurrentQueue<string>();
|
||||
QueueFLog = new ConcurrentQueue<string>();
|
||||
QueueAlarm = new ConcurrentQueue<string>();
|
||||
QueueMessages = new ConcurrentQueue<string>();
|
||||
}
|
||||
// imposto contatori blink a zero...
|
||||
i_counters = new int[32];
|
||||
DtHelp.lastPeriodicLog = DateTime.Now;
|
||||
lastPeriodicLog = DateTime.Now;
|
||||
// fix parametri generali...
|
||||
enablePrgName = true;
|
||||
}
|
||||
@@ -1822,22 +1827,22 @@ namespace IOB_WIN
|
||||
private void svuotaCodaFLog()
|
||||
{
|
||||
//controllo se è passato oltre watchdog e non ho inviato nulla --> RE-INVIO (ultimo inviato)!!!!
|
||||
if (DateTime.Now.Subtract(DtHelp.lastWatchDog).TotalSeconds > utils.CRI("watchdogMaxSec"))
|
||||
if (DateTime.Now.Subtract(lastWatchDog).TotalSeconds > utils.CRI("watchdogMaxSec"))
|
||||
{
|
||||
string wdStatus = "elapsed";
|
||||
string sVal = string.Format("[WDST]{0}", wdStatus);
|
||||
// chiamo accodamento...
|
||||
accodaFLog(sVal, qEncodeFLog("WDST", wdStatus));
|
||||
DtHelp.lastWatchDog = DateTime.Now;
|
||||
lastWatchDog = DateTime.Now;
|
||||
}
|
||||
// verifico SE la coda abbia dei valori...
|
||||
if (QHelp.QueueFLog.Count > 0)
|
||||
if (QueueFLog.Count > 0)
|
||||
{
|
||||
// invio pacchetto di dati (max da conf)
|
||||
for (int i = 0; i < nMaxSend; i++)
|
||||
{
|
||||
// SE ho qualcosa in coda...
|
||||
if (QHelp.QueueFLog.Count > 0)
|
||||
if (QueueFLog.Count > 0)
|
||||
{
|
||||
string currVal = "";
|
||||
if (MPOnline)
|
||||
@@ -1845,16 +1850,16 @@ namespace IOB_WIN
|
||||
if (IobOnline)
|
||||
{
|
||||
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
|
||||
if (QHelp.QueueFLog.Count > 1)
|
||||
if (QueueFLog.Count > 1)
|
||||
{
|
||||
List<string> listaValori = new List<string>();
|
||||
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
|
||||
if (QHelp.QueueFLog.Count > maxJsonData)
|
||||
if (QueueFLog.Count > maxJsonData)
|
||||
{
|
||||
// prendoi primi maxJsonDataValori
|
||||
for (int j = 0; j < maxJsonData; j++)
|
||||
{
|
||||
QHelp.QueueFLog.TryDequeue(out currVal);
|
||||
QueueFLog.TryDequeue(out currVal);
|
||||
listaValori.Add(currVal);
|
||||
}
|
||||
sendDataBlock(urlType.FLog, listaValori);
|
||||
@@ -1862,17 +1867,17 @@ namespace IOB_WIN
|
||||
else
|
||||
{
|
||||
// invio in blocco
|
||||
listaValori = QHelp.QueueFLog.ToList();
|
||||
listaValori = QueueFLog.ToList();
|
||||
// invio
|
||||
sendDataBlock(urlType.FLog, listaValori);
|
||||
// svuoto!
|
||||
QHelp.QueueFLog = new ConcurrentQueue<string>();
|
||||
QueueFLog = new ConcurrentQueue<string>();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// INVIO SINGOLO...!!!
|
||||
QHelp.QueueFLog.TryDequeue(out currVal);
|
||||
QueueFLog.TryDequeue(out currVal);
|
||||
sendToMoonPro(urlType.FLog, currVal);
|
||||
}
|
||||
}
|
||||
@@ -2807,7 +2812,7 @@ namespace IOB_WIN
|
||||
// mostro dati variati letti...
|
||||
displayOtherData(val);
|
||||
// accodo IN PRIMIS al FluxLog --> accodo (valore già formattato)!
|
||||
QHelp.QueueFLog.Enqueue(encodedVal);
|
||||
QueueFLog.Enqueue(encodedVal);
|
||||
// accodo ANCHE alla coda allarmi che trasmetterò SOLO SE a scadenza impostata (10 sec?) ho allarmi perdurati...
|
||||
|
||||
// loggo!
|
||||
@@ -2829,18 +2834,18 @@ namespace IOB_WIN
|
||||
// mostro dati variati letti...
|
||||
displayOtherData(val);
|
||||
// --> accodo (valore già formattato)!
|
||||
QHelp.QueueFLog.Enqueue(encodedVal);
|
||||
QueueFLog.Enqueue(encodedVal);
|
||||
// se abilitato controllo coda FLog (superiore a 0...)
|
||||
if (maxQueueFLog > 0)
|
||||
{
|
||||
// se ho una coda superiore a max ammesso
|
||||
if (QHelp.QueueFLog.Count > maxQueueFLog)
|
||||
if (QueueFLog.Count > maxQueueFLog)
|
||||
{
|
||||
// elimino valori iniziali fino a tornare al max ammesso...
|
||||
while (QHelp.QueueFLog.Count > maxQueueFLog)
|
||||
while (QueueFLog.Count > maxQueueFLog)
|
||||
{
|
||||
string currVal = "";
|
||||
QHelp.QueueFLog.TryDequeue(out currVal);
|
||||
QueueFLog.TryDequeue(out currVal);
|
||||
lgInfo($"Eliminazione ca coda FLog per superamento maxLengh: {currVal}");
|
||||
}
|
||||
}
|
||||
@@ -2875,7 +2880,7 @@ namespace IOB_WIN
|
||||
// mostro dati variati letti...
|
||||
displayInData(ref currDispData);
|
||||
// --> accodo (valore già formattato)!
|
||||
QHelp.QueueIN.Enqueue(qEncodeIN);
|
||||
QueueIN.Enqueue(qEncodeIN);
|
||||
// loggo!
|
||||
lgInfo(string.Format("[QUEUE-IN] {0}", qEncodeIN));
|
||||
// aggiorno counters ed eventuale reset
|
||||
@@ -3070,10 +3075,10 @@ namespace IOB_WIN
|
||||
public bool forceSplitOdl()
|
||||
{
|
||||
bool fatto = false;
|
||||
if (DtHelp.vetoSplit < DateTime.Now)
|
||||
if (vetoSplit < DateTime.Now)
|
||||
{
|
||||
// imposto veto x 1 minuto ad altre chiamate...
|
||||
DtHelp.vetoSplit = DateTime.Now.AddMinutes(1);
|
||||
vetoSplit = DateTime.Now.AddMinutes(1);
|
||||
// eseguo SOLO SE sono online...
|
||||
if (MPOnline && IobOnline)
|
||||
{
|
||||
@@ -3184,13 +3189,13 @@ namespace IOB_WIN
|
||||
{
|
||||
// imposto flag adapter running..
|
||||
adpCommAct = true;
|
||||
DtHelp.adpStartRun = DateTime.Now;
|
||||
adpStartRun = DateTime.Now;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
string errore = $"Adapter NOT STARTED!!!{Environment.NewLine}{exc}";
|
||||
adpCommAct = false;
|
||||
DtHelp.adpStartRun = DateTime.Now;
|
||||
adpStartRun = DateTime.Now;
|
||||
currDispData.newLiveLogData = errore;
|
||||
}
|
||||
if (adpCommAct)
|
||||
@@ -3278,11 +3283,11 @@ namespace IOB_WIN
|
||||
// log ADP running
|
||||
lgError("Non eseguo chiamata: ADP ancora in running");
|
||||
// se è bloccato da oltre maxSec lo sblocco...
|
||||
if (DateTime.Now.Subtract(DtHelp.adpStartRun).TotalSeconds > utils.CRI("maxAdapterLockSec"))
|
||||
if (DateTime.Now.Subtract(adpStartRun).TotalSeconds > utils.CRI("maxAdapterLockSec"))
|
||||
{
|
||||
// tolgo flag running
|
||||
adpCommAct = false;
|
||||
DtHelp.adpStartRun = DateTime.Now;
|
||||
adpStartRun = DateTime.Now;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3293,11 +3298,11 @@ namespace IOB_WIN
|
||||
{
|
||||
// controllo se sia scaduto periodi di veto al tryConnect...
|
||||
int waitRecMSec = utils.CRI("waitRecMSec") * 2;
|
||||
DateTime dtVeto = DtHelp.lastConnectTry.AddMilliseconds(waitRecMSec);
|
||||
DateTime dtVeto = lastConnectTry.AddMilliseconds(waitRecMSec);
|
||||
if (DateTime.Now > dtVeto)
|
||||
{
|
||||
lgInfo($"Retry Time Elapsed (waited for {waitRecMSec} ms)--> NOW tryConnect");
|
||||
DtHelp.lastConnectTry = DateTime.Now;
|
||||
lastConnectTry = DateTime.Now;
|
||||
tryConnect();
|
||||
}
|
||||
}
|
||||
@@ -3544,16 +3549,16 @@ namespace IOB_WIN
|
||||
// loggo SOLO se del mio IOB corrente...
|
||||
if (item.classCall == cIobConf.codIOB)
|
||||
{
|
||||
lgInfo("{4}|Chiamate {0}: effettuate {1}, tempo medio {2:N2} msec | impegno canale {3:P3}", item.codCall, item.numCall, item.avgMsec, item.totMsec.TotalSeconds / DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalSeconds, cIobConf.codIOB);
|
||||
lgInfo("{4}|Chiamate {0}: effettuate {1}, tempo medio {2:N2} msec | impegno canale {3:P3}", item.codCall, item.numCall, item.avgMsec, item.totMsec.TotalSeconds / DateTime.Now.Subtract(AvvioAdp).TotalSeconds, cIobConf.codIOB);
|
||||
globNumCall += item.numCall;
|
||||
globAvgMsec += item.totMsec;
|
||||
}
|
||||
}
|
||||
// riporto conteggio medio al secondo...
|
||||
lgInfo("{4}|Chiamate GLOBALI: {0}, periodo: {1:N2} minuti.cent, tempo medio {2:N2} msec | impegno canale {3:P3}", globNumCall, DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalMinutes, globAvgMsec.TotalMilliseconds / globNumCall, globAvgMsec.TotalSeconds / DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalSeconds, cIobConf.codIOB);
|
||||
lgInfo("{4}|Chiamate GLOBALI: {0}, periodo: {1:N2} minuti.cent, tempo medio {2:N2} msec | impegno canale {3:P3}", globNumCall, DateTime.Now.Subtract(AvvioAdp).TotalMinutes, globAvgMsec.TotalMilliseconds / globNumCall, globAvgMsec.TotalSeconds / DateTime.Now.Subtract(AvvioAdp).TotalSeconds, cIobConf.codIOB);
|
||||
lgInfo("{0}--------------- STOP TIMING DATA ---------------{0}", Environment.NewLine);
|
||||
// mostro in form statistiche globali!
|
||||
parentForm.updateComStats(string.Format("Periodo: {0:N2}min | {1} x {2:N2}ms | canale {3:P3}", DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalMinutes, globNumCall, globAvgMsec.TotalMilliseconds / globNumCall, globAvgMsec.TotalSeconds / DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalSeconds));
|
||||
parentForm.updateComStats(string.Format("Periodo: {0:N2}min | {1} x {2:N2}ms | canale {3:P3}", DateTime.Now.Subtract(AvvioAdp).TotalMinutes, globNumCall, globAvgMsec.TotalMilliseconds / globNumCall, globAvgMsec.TotalSeconds / DateTime.Now.Subtract(AvvioAdp).TotalSeconds));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3842,7 +3847,7 @@ namespace IOB_WIN
|
||||
// init obj display
|
||||
newDisplayData currDispData = new newDisplayData();
|
||||
// controllo contatore invio "keepalive"... invio solo a scadenza
|
||||
if (DateTime.Now.Subtract(DtHelp.lastDisconnCheck).TotalSeconds > utils.CRI("disconMaxSec"))
|
||||
if (DateTime.Now.Subtract(lastDisconnCheck).TotalSeconds > utils.CRI("disconMaxSec"))
|
||||
{
|
||||
// resetto tutti i vlaori BYTE IN/PREV/OUT... così invio macchina spenta...
|
||||
B_input = 0;
|
||||
@@ -3850,7 +3855,7 @@ namespace IOB_WIN
|
||||
B_previous = 0;
|
||||
accodaSigIN(ref currDispData);
|
||||
// update controllo
|
||||
DtHelp.lastDisconnCheck = DateTime.Now;
|
||||
lastDisconnCheck = DateTime.Now;
|
||||
}
|
||||
raiseRefresh(currDispData);
|
||||
}
|
||||
@@ -4108,7 +4113,7 @@ namespace IOB_WIN
|
||||
if (connectionOk)
|
||||
{
|
||||
readSemafori(ref currDispData);
|
||||
DtHelp.lastReadPLC = DateTime.Now;
|
||||
lastReadPLC = DateTime.Now;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4132,7 +4137,7 @@ namespace IOB_WIN
|
||||
/// </summary>
|
||||
public virtual void readSemafori(ref newDisplayData currDispData)
|
||||
{
|
||||
DtHelp.lastReadPLC = DateTime.Now;
|
||||
lastReadPLC = DateTime.Now;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -4258,12 +4263,12 @@ namespace IOB_WIN
|
||||
{
|
||||
currDispData.semOut = Semaforo.SV;
|
||||
// se oltre 1 min NON era online --> check pezzi!
|
||||
if (DateTime.Now.Subtract(DtHelp.lastIobOnline).TotalMinutes > 1 && !isMulti)
|
||||
if (DateTime.Now.Subtract(lastIobOnline).TotalMinutes > 1 && !isMulti)
|
||||
{
|
||||
lgInfo($"sendDataBlock --> offline timeout ({DtHelp.lastIobOnline}) --> pzCntReload(true)");
|
||||
lgInfo($"sendDataBlock --> offline timeout ({lastIobOnline}) --> pzCntReload(true)");
|
||||
pzCntReload(true);
|
||||
}
|
||||
DtHelp.lastIobOnline = DateTime.Now;
|
||||
lastIobOnline = DateTime.Now;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4285,7 +4290,7 @@ namespace IOB_WIN
|
||||
// riporto cosa inviato
|
||||
currDispData.newUrlCallData = lastUrl;
|
||||
// aggiorno data ultimo watchdog...
|
||||
DtHelp.lastWatchDog = DateTime.Now;
|
||||
lastWatchDog = DateTime.Now;
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -4334,9 +4339,9 @@ namespace IOB_WIN
|
||||
// loggo!
|
||||
lgInfo(string.Format("[SEND] {0} -> {1}", queueVal, answ));
|
||||
// se oltre 1 min NON era online --> check pezzi!
|
||||
if (DateTime.Now.Subtract(DtHelp.lastIobOnline).TotalMinutes > 1 && !isMulti)
|
||||
if (DateTime.Now.Subtract(lastIobOnline).TotalMinutes > 1 && !isMulti)
|
||||
{
|
||||
lgInfo($"sendToMoonPro --> offline timeaout ({DtHelp.lastIobOnline}) --> pzCntReload(true)");
|
||||
lgInfo($"sendToMoonPro --> offline timeaout ({lastIobOnline}) --> pzCntReload(true)");
|
||||
pzCntReload(true);
|
||||
}
|
||||
// se richiesto effettuo refresh contapezzi
|
||||
@@ -4345,7 +4350,7 @@ namespace IOB_WIN
|
||||
pzCntReload(true);
|
||||
needRefreshPzCount = false;
|
||||
}
|
||||
DtHelp.lastIobOnline = DateTime.Now;
|
||||
lastIobOnline = DateTime.Now;
|
||||
// se "OK" verde, altrimenti errore --> ROSSO
|
||||
if (answ == "OK")
|
||||
{
|
||||
@@ -4374,7 +4379,7 @@ namespace IOB_WIN
|
||||
#endif
|
||||
currDispData.newUrlCallData = lastUrl;
|
||||
// aggiorno data ultimo watchdog...
|
||||
DtHelp.lastWatchDog = DateTime.Now;
|
||||
lastWatchDog = DateTime.Now;
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -4426,11 +4431,11 @@ namespace IOB_WIN
|
||||
maxJsonDataEv = utils.CRI("maxJsonDataEv");
|
||||
parentForm.commPlcActive = false;
|
||||
adpRunning = true;
|
||||
DtHelp.AvvioAdp = DateTime.Now;
|
||||
DtHelp.lastWatchDog = DtHelp.AvvioAdp;
|
||||
DtHelp.lastPING = DtHelp.AvvioAdp;
|
||||
DtHelp.lastReadPLC = DtHelp.AvvioAdp.AddMinutes(-1);
|
||||
DtHelp.lastDisconnCheck = DtHelp.AvvioAdp;
|
||||
AvvioAdp = DateTime.Now;
|
||||
lastWatchDog = AvvioAdp;
|
||||
lastPING = AvvioAdp;
|
||||
lastReadPLC = AvvioAdp.AddMinutes(-1);
|
||||
lastDisconnCheck = AvvioAdp;
|
||||
TimingData.resetData();
|
||||
// aggiungo altri defaults
|
||||
setDefaults(resetQueue);
|
||||
@@ -4449,28 +4454,28 @@ namespace IOB_WIN
|
||||
{
|
||||
// svuoto le code dei valori letti e non ancora trasmessi...
|
||||
parentForm.displayTaskAndLog("[CLOSING] Svuotamento FORZATO coda segnali...");
|
||||
while (QHelp.QueueIN.Count > 0)
|
||||
while (QueueIN.Count > 0)
|
||||
{
|
||||
// INVIO COMUNQUE...!!!
|
||||
string valore = "";
|
||||
QHelp.QueueIN.TryDequeue(out valore);
|
||||
QueueIN.TryDequeue(out valore);
|
||||
sendToMoonPro(urlType.SignIN, valore);
|
||||
}
|
||||
parentForm.displayTaskAndLog("[CLOSING] Svuotamento FORZATO coda FluxLOG...");
|
||||
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
|
||||
if (QHelp.QueueFLog.Count > minJsonData)
|
||||
if (QueueFLog.Count > minJsonData)
|
||||
{
|
||||
while (QHelp.QueueFLog.Count > 0)
|
||||
while (QueueFLog.Count > 0)
|
||||
{
|
||||
List<string> listaValori = new List<string>();
|
||||
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
|
||||
if (QHelp.QueueFLog.Count > maxJsonData)
|
||||
if (QueueFLog.Count > maxJsonData)
|
||||
{
|
||||
string currVal = "";
|
||||
// prendoi primi maxJsonDataValori
|
||||
for (int i = 0; i < maxJsonData; i++)
|
||||
{
|
||||
QHelp.QueueFLog.TryDequeue(out currVal);
|
||||
QueueFLog.TryDequeue(out currVal);
|
||||
listaValori.Add(currVal);
|
||||
}
|
||||
sendDataBlock(urlType.FLog, listaValori);
|
||||
@@ -4478,11 +4483,11 @@ namespace IOB_WIN
|
||||
else
|
||||
{
|
||||
// invio in blocco
|
||||
listaValori = QHelp.QueueFLog.ToList();
|
||||
listaValori = QueueFLog.ToList();
|
||||
// invio
|
||||
sendDataBlock(urlType.FLog, listaValori);
|
||||
// svuoto!
|
||||
QHelp.QueueFLog = new ConcurrentQueue<string>();
|
||||
QueueFLog = new ConcurrentQueue<string>();
|
||||
}
|
||||
}
|
||||
// HO FINITO invio di FLog...
|
||||
@@ -4490,10 +4495,10 @@ namespace IOB_WIN
|
||||
else
|
||||
{
|
||||
string currVal = "";
|
||||
while (QHelp.QueueFLog.Count > 0)
|
||||
while (QueueFLog.Count > 0)
|
||||
{
|
||||
// INVIO COMUNQUE...!!!
|
||||
QHelp.QueueFLog.TryDequeue(out currVal);
|
||||
QueueFLog.TryDequeue(out currVal);
|
||||
sendToMoonPro(urlType.FLog, currVal);
|
||||
}
|
||||
}
|
||||
@@ -4505,7 +4510,7 @@ namespace IOB_WIN
|
||||
|
||||
// chiudo la connessione all'adapter...
|
||||
tryDisconnect();
|
||||
DtHelp.StopAdp = DateTime.Now;
|
||||
StopAdp = DateTime.Now;
|
||||
adpTryRestart = tryRestart;
|
||||
adpRunning = false;
|
||||
// chiudo!
|
||||
@@ -4519,12 +4524,12 @@ namespace IOB_WIN
|
||||
public void svuotaCodaSignIN()
|
||||
{
|
||||
// verifico SE la coda abbia dei valori...
|
||||
if (QHelp.QueueIN.Count > 0)
|
||||
if (QueueIN.Count > 0)
|
||||
{
|
||||
// invio pacchetto di dati (max da conf)
|
||||
for (int i = 0; i < nMaxSend; i++)
|
||||
{
|
||||
if (QHelp.QueueIN.Count > 0)
|
||||
if (QueueIN.Count > 0)
|
||||
{
|
||||
string currVal = "";
|
||||
// se online provo
|
||||
@@ -4533,16 +4538,16 @@ namespace IOB_WIN
|
||||
if (IobOnline)
|
||||
{
|
||||
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
|
||||
if (QHelp.QueueIN.Count > 1)
|
||||
if (QueueIN.Count > 1)
|
||||
{
|
||||
List<string> listaValori = new List<string>();
|
||||
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
|
||||
if (QHelp.QueueIN.Count > maxJsonDataEv)
|
||||
if (QueueIN.Count > maxJsonDataEv)
|
||||
{
|
||||
// prendoi primi maxJsonDataValori
|
||||
for (int j = 0; j < maxJsonDataEv; j++)
|
||||
{
|
||||
QHelp.QueueIN.TryDequeue(out currVal);
|
||||
QueueIN.TryDequeue(out currVal);
|
||||
listaValori.Add(currVal);
|
||||
}
|
||||
sendDataBlock(urlType.SignIN, listaValori);
|
||||
@@ -4550,17 +4555,17 @@ namespace IOB_WIN
|
||||
else
|
||||
{
|
||||
// invio in blocco
|
||||
listaValori = QHelp.QueueIN.ToList();
|
||||
listaValori = QueueIN.ToList();
|
||||
// invio
|
||||
sendDataBlock(urlType.SignIN, listaValori);
|
||||
// svuoto!
|
||||
QHelp.QueueIN = new ConcurrentQueue<string>();
|
||||
QueueIN = new ConcurrentQueue<string>();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// INVIO SINGOLO...!!!
|
||||
QHelp.QueueIN.TryDequeue(out currVal);
|
||||
QueueIN.TryDequeue(out currVal);
|
||||
sendToMoonPro(urlType.SignIN, currVal);
|
||||
}
|
||||
// salvo come last signal in il currVal ultimo... SE !=""
|
||||
@@ -4592,7 +4597,7 @@ namespace IOB_WIN
|
||||
/// </summary>
|
||||
public virtual void tryConnect()
|
||||
{
|
||||
DtHelp.AvvioAdp = DateTime.Now;
|
||||
AvvioAdp = DateTime.Now;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
+11
-11
@@ -59,8 +59,8 @@ namespace IOB_WIN
|
||||
{
|
||||
// gestione invio ritardato contapezzi
|
||||
pzCountDelay = utils.CRI("pzCountDelay");
|
||||
DtHelp.lastPzCountSend = DateTime.Now;
|
||||
DtHelp.lastWarnODL = DateTime.Now;
|
||||
lastPzCountSend = DateTime.Now;
|
||||
lastWarnODL = DateTime.Now;
|
||||
if (IOBConf != null)
|
||||
{
|
||||
// inizializzo correttamente aree memoria secondo CONF - iniFileName
|
||||
@@ -232,10 +232,10 @@ namespace IOB_WIN
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
if (DateTime.Now.Subtract(DtHelp.lastWarnODL).TotalSeconds > 15)
|
||||
if (DateTime.Now.Subtract(lastWarnODL).TotalSeconds > 15)
|
||||
{
|
||||
lgError(exc, "Errore in fase di chiamata URL x ODL corrente | URL chiamato: {0}", urlGetCurrODL);
|
||||
DtHelp.lastWarnODL = DateTime.Now;
|
||||
lastWarnODL = DateTime.Now;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -251,7 +251,7 @@ namespace IOB_WIN
|
||||
if (!string.IsNullOrEmpty(currODL) && currODL != "0")
|
||||
{
|
||||
// controllo se è passato intervallo minimo tra 2 controlli/elaborazioni x distanziare invio e ridurre letture
|
||||
if (DateTime.Now >= DtHelp.lastPzCountSend.AddMilliseconds(pzCountDelay))
|
||||
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
|
||||
{
|
||||
// se sono differenti MOSTRO...
|
||||
if (contapezziPLC != contapezziIOB)
|
||||
@@ -282,16 +282,16 @@ namespace IOB_WIN
|
||||
pzCntReload(true);
|
||||
}
|
||||
// resetto timer...
|
||||
DtHelp.lastPzCountSend = DateTime.Now;
|
||||
lastPzCountSend = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (DateTime.Now >= DtHelp.lastPzCountSend.AddMilliseconds(pzCountDelay))
|
||||
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
|
||||
{
|
||||
lgInfo($"Attenzione: mancanza ODL non procedo con gestione contapezzi. contapezziPLC OSAI: {contapezziPLC} | contapezziIOB {contapezziIOB}");
|
||||
// resetto timer...
|
||||
DtHelp.lastPzCountSend = DateTime.Now;
|
||||
lastPzCountSend = DateTime.Now;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -632,7 +632,7 @@ namespace IOB_WIN
|
||||
if (!connectionOk)
|
||||
{
|
||||
// controllo che il ping sia stato tentato almeno pingTestSec fa...
|
||||
if (DateTime.Now.Subtract(DtHelp.lastPING).TotalSeconds > utils.CRI("pingTestSec"))
|
||||
if (DateTime.Now.Subtract(lastPING).TotalSeconds > utils.CRI("pingTestSec"))
|
||||
{
|
||||
if (verboseLog || periodicLog)
|
||||
{
|
||||
@@ -647,7 +647,7 @@ namespace IOB_WIN
|
||||
if (needPing)
|
||||
{
|
||||
// in primis salvo data ping...
|
||||
DtHelp.lastPING = DateTime.Now;
|
||||
lastPING = DateTime.Now;
|
||||
// ora PING!!!
|
||||
IPAddress address = IPAddress.Loopback;
|
||||
IPAddress.TryParse(cIobConf.cncIpAddr, out address);
|
||||
@@ -674,7 +674,7 @@ namespace IOB_WIN
|
||||
// refresh stato allarmi!!!
|
||||
if (connectionOk)
|
||||
{
|
||||
DtHelp.AvvioAdp = DateTime.Now;
|
||||
AvvioAdp = DateTime.Now;
|
||||
if (adpRunning)
|
||||
{
|
||||
lgInfo("Connessione OK");
|
||||
|
||||
+14
-10
@@ -47,7 +47,11 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// ultimo controllo decremento eventi
|
||||
/// </summary>
|
||||
protected DateTime DtHelp.lastEvCheck;
|
||||
protected DateTime lastEvCheck;
|
||||
/// <summary>
|
||||
/// DataOra ultimo SimData
|
||||
/// </summary>
|
||||
protected DateTime lastSimData = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// Durata minima ODL x reset quando pezzi iob > pezzi macchina...
|
||||
@@ -107,10 +111,10 @@ namespace IOB_WIN
|
||||
// gestione invio ritardato contapezzi
|
||||
|
||||
DateTime adesso = DateTime.Now;
|
||||
DtHelp.lastPzCountSend = adesso;
|
||||
DtHelp.lastWarnODL = adesso;
|
||||
DtHelp.lastEvCheck = adesso;
|
||||
DtHelp.lastSimData = adesso;
|
||||
lastPzCountSend = adesso;
|
||||
lastWarnODL = adesso;
|
||||
lastEvCheck = adesso;
|
||||
lastSimData = adesso;
|
||||
// sistemo parametri x simulazione...
|
||||
if (cIobConf.optPar.Count > 0)
|
||||
{
|
||||
@@ -407,7 +411,7 @@ namespace IOB_WIN
|
||||
}
|
||||
}
|
||||
// resetto timer...
|
||||
DtHelp.lastPzCountSend = DateTime.Now;
|
||||
lastPzCountSend = DateTime.Now;
|
||||
}
|
||||
}
|
||||
// provo a fare split ODL SE NON E' multi....
|
||||
@@ -637,7 +641,7 @@ namespace IOB_WIN
|
||||
// valore non presente in vers default... se gestito fare override
|
||||
Dictionary<string, string> outVal = new Dictionary<string, string>();
|
||||
// verificare periodo SIM parametri... se passato li invio altrimenti NO... FIX a 20 sec
|
||||
if (DtHelp.lastSimData.AddSeconds(waitSimPar) < DateTime.Now)
|
||||
if (lastSimData.AddSeconds(waitSimPar) < DateTime.Now)
|
||||
{
|
||||
Random rnd = new Random();
|
||||
// controllo conf memorie json (se ci sono...)
|
||||
@@ -662,7 +666,7 @@ namespace IOB_WIN
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
DtHelp.lastSimData = DateTime.Now;
|
||||
lastSimData = DateTime.Now;
|
||||
}
|
||||
return outVal;
|
||||
}
|
||||
@@ -701,14 +705,14 @@ namespace IOB_WIN
|
||||
/// </summary>
|
||||
public override void processVHF()
|
||||
{
|
||||
if (DtHelp.lastEvCheck.AddMilliseconds(periodoMSec) < DateTime.Now)
|
||||
if (lastEvCheck.AddMilliseconds(periodoMSec) < DateTime.Now)
|
||||
{
|
||||
// decremento contatore ultimo evento
|
||||
bit2.wait--;
|
||||
bit3.wait--;
|
||||
bit4.wait--;
|
||||
bit5.wait--;
|
||||
DtHelp.lastEvCheck = DateTime.Now;
|
||||
lastEvCheck = DateTime.Now;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -321,7 +321,7 @@ namespace IOB_WIN
|
||||
bool answ = false;
|
||||
if (!string.IsNullOrEmpty(MPIP))
|
||||
{
|
||||
if (utils.DtHelp.dtVetoPing < DateTime.Now)
|
||||
if (utils.dtVetoPing < DateTime.Now)
|
||||
{
|
||||
IPStatus pingStatus = testPingServer;
|
||||
// se passa il ping faccio il resto...
|
||||
@@ -344,7 +344,7 @@ namespace IOB_WIN
|
||||
if (answ)
|
||||
{
|
||||
lgInfo("SERVER ONLINE");
|
||||
utils.DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec);
|
||||
utils.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -356,7 +356,7 @@ namespace IOB_WIN
|
||||
else
|
||||
{
|
||||
// allungo periodo controllo...
|
||||
utils.DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
|
||||
utils.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -365,8 +365,8 @@ namespace IOB_WIN
|
||||
utils.MPIO_Online = false;
|
||||
updateComStats(0, 0, false);
|
||||
// imposto veto a 10 volte reinvio dati standard...
|
||||
utils.DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 10);
|
||||
utils.dtVetoSend = utils.DtHelp.dtVetoPing;
|
||||
utils.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 10);
|
||||
utils.dtVetoSend = utils.dtVetoPing;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user