diff --git a/IOB-WIN-FANUC/DATA/CONF/MAIN.ini b/IOB-WIN-FANUC/DATA/CONF/MAIN.ini
index 1d21585c..f621315d 100644
--- a/IOB-WIN-FANUC/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-FANUC/DATA/CONF/MAIN.ini
@@ -33,5 +33,4 @@ CLI_INST=SteamWareSim
;STARTLIST=3001
STARTLIST=SIMUL_01
-
-
+MAXCNC=10
diff --git a/IOB-WIN-FORM/AdapterForm.cs b/IOB-WIN-FORM/AdapterForm.cs
index 336486cc..3663366b 100644
--- a/IOB-WIN-FORM/AdapterForm.cs
+++ b/IOB-WIN-FORM/AdapterForm.cs
@@ -1338,15 +1338,16 @@ namespace IOB_WIN_FORM
///
private CancellationTokenSource _ctsMachine;
- ///
- /// Cancellation tocken x processi verso server
- ///
- private CancellationTokenSource _ctsServer;
///
/// Cancellation tocken x processi verso Redis
///
private CancellationTokenSource _ctsRedis;
+ ///
+ /// Cancellation tocken x processi verso server
+ ///
+ private CancellationTokenSource _ctsServer;
+
///
/// Ritardo per errori (extra nei cicli)
///
@@ -2132,6 +2133,86 @@ namespace IOB_WIN_FORM
}
}
+ ///
+ /// Metodo x gestione I/O Redis (status IOB)
+ ///
+ ///
+ ///
+ private async Task RedisWorkerLoopAsync(CancellationToken token)
+ {
+ while (!token.IsCancellationRequested)
+ {
+ try
+ {
+ if (iobObj != null)
+ {
+ // 1. Estrazione dati dalle code (operazione logica)
+ long alQueueLen = iobObj.QHelp.QueueAlarm.Count;
+ long evQueueLen = iobObj.QHelp.QueueIN.Count;
+ long flQueueLen = iobObj.QHelp.QueueFLog.Count;
+ long msQueueLen = iobObj.QHelp.QueueMessages.Count;
+ long rtrQueueLen = iobObj.QHelp.QueueRawTransf.Count;
+ long ulQueueLen = iobObj.QHelp.QueueULog.Count;
+
+ var setPar = new Dictionary
+ {
+ { "IP", iobObj.IOBConfFull.Device.Connect.IpAddr },
+ { "PORT", iobObj.IOBConfFull.Device.Connect.Port }
+ };
+
+ IobWinStatus currIobStatus = new IobWinStatus()
+ {
+ CodIob = iobObj.IOBConfFull.General.FilenameIOB,
+ IobType = $"{iobObj.IOBConfFull.General.IobType}",
+ queueAlLen = alQueueLen,
+ queueEvLen = evQueueLen,
+ queueFlLen = flQueueLen,
+ queueMsLen = msQueueLen,
+ queueRawTransfLen = rtrQueueLen,
+ queueUlLen = ulQueueLen,
+ counterIOB = iobObj.contapezziIOB,
+ counterMAC = iobObj.contapezziPLC,
+ lastUpdate = lastIobStatus.lastUpdate > iobObj.DtHelp.lastWatchDog ? lastIobStatus.lastUpdate : iobObj.DtHelp.lastWatchDog,
+ online = utils.IOB_Online,
+ lastDataIn = iobObj.DtHelp.lastReadPLC,
+ lastDataOut = iobObj.DtHelp.lastIobOnline,
+ setupParams = setPar,
+ freeNotes = $"{iobObj.IOBConfFull.General.FilenameIOB} | DT ultimo avvio: {iobObj.DtHelp.AvvioAdp}"
+ };
+
+ // 2. Logica di salvataggio su REDIS (Rete -> Thread di background!)
+ if (!currIobStatus.Equals(lastIobStatus))
+ {
+ currIobStatus.lastUpdate = DateTime.Now;
+ iobObj.redisMan.iobStatus = currIobStatus;
+ lastIobStatus = currIobStatus;
+ }
+
+ if (lastSrvStatus.online != utils.MPIO_Online)
+ {
+ ServerMpStatus currSrvStatus = iobObj.redisMan.servStatus;
+ currSrvStatus.online = utils.MPIO_Online;
+ currSrvStatus.lastUpdate = DateTime.Now;
+ iobObj.redisMan.servStatus = currSrvStatus;
+ lastSrvStatus = currSrvStatus;
+ }
+ }
+ }
+ catch (Exception exc)
+ {
+ lgError($"Eccezione nel background gather: {exc}");
+ }
+
+ // Calcolo del delay dinamico tra standard e suspended da Timers.MsHF
+ int currentDelay = _isSuspended ? IOBConfFull.General.Timers.MsMF : IOBConfFull.General.Timers.MsHF;
+
+ // in ogni caso max 15 sec di attesa...
+ currentDelay = currentDelay > 15000 ? 15000 : currentDelay;
+
+ await Task.Delay(currentDelay, token);
+ }
+ }
+
private void refreshFormData()
{
// verifica se mostrare update
@@ -2191,7 +2272,7 @@ namespace IOB_WIN_FORM
// salvo su redis e in obj corrente
iobObj.redisMan.servStatus = currSrvStatus;
lastSrvStatus = currSrvStatus;
- }
+ }
#endif
}
@@ -2383,7 +2464,6 @@ namespace IOB_WIN_FORM
lgInfo("--- WORKER REDIS AVVIATO ---");
}
-
// avvio altro thread di comunicazione server...
// 1. Controllo se è già in esecuzione
if (_workerTask != null && !_workerTask.IsCompleted)
@@ -2464,101 +2544,6 @@ namespace IOB_WIN_FORM
checkAssignSize();
}
- ///
- /// Metodo x gestione I/O Redis (status IOB)
- ///
- ///
- ///
- private async Task RedisWorkerLoopAsync(CancellationToken token)
- {
- while (!token.IsCancellationRequested)
- {
- try
- {
- if (iobObj != null)
- {
- // 1. Estrazione dati dalle code (operazione logica)
- long alQueueLen = iobObj.QHelp.QueueAlarm.Count;
- long evQueueLen = iobObj.QHelp.QueueIN.Count;
- long flQueueLen = iobObj.QHelp.QueueFLog.Count;
- long msQueueLen = iobObj.QHelp.QueueMessages.Count;
- long rtrQueueLen = iobObj.QHelp.QueueRawTransf.Count;
- long ulQueueLen = iobObj.QHelp.QueueULog.Count;
-
- var setPar = new Dictionary
- {
- { "IP", iobObj.IOBConfFull.Device.Connect.IpAddr },
- { "PORT", iobObj.IOBConfFull.Device.Connect.Port }
- };
-
- IobWinStatus currIobStatus = new IobWinStatus()
- {
- CodIob = iobObj.IOBConfFull.General.FilenameIOB,
- IobType = $"{iobObj.IOBConfFull.General.IobType}",
- queueAlLen = alQueueLen,
- queueEvLen = evQueueLen,
- queueFlLen = flQueueLen,
- queueMsLen = msQueueLen,
- queueRawTransfLen = rtrQueueLen,
- queueUlLen = ulQueueLen,
- counterIOB = iobObj.contapezziIOB,
- counterMAC = iobObj.contapezziPLC,
- lastUpdate = lastIobStatus.lastUpdate > iobObj.DtHelp.lastWatchDog ? lastIobStatus.lastUpdate : iobObj.DtHelp.lastWatchDog,
- online = utils.IOB_Online,
- lastDataIn = iobObj.DtHelp.lastReadPLC,
- lastDataOut = iobObj.DtHelp.lastIobOnline,
- setupParams = setPar,
- freeNotes = $"{iobObj.IOBConfFull.General.FilenameIOB} | DT ultimo avvio: {iobObj.DtHelp.AvvioAdp}"
- };
-
- // 2. Logica di salvataggio su REDIS (Rete -> Thread di background!)
- if (!currIobStatus.Equals(lastIobStatus))
- {
- currIobStatus.lastUpdate = DateTime.Now;
- iobObj.redisMan.iobStatus = currIobStatus;
- lastIobStatus = currIobStatus;
- }
-
- if (lastSrvStatus.online != utils.MPIO_Online)
- {
- ServerMpStatus currSrvStatus = iobObj.redisMan.servStatus;
- currSrvStatus.online = utils.MPIO_Online;
- currSrvStatus.lastUpdate = DateTime.Now;
- iobObj.redisMan.servStatus = currSrvStatus;
- lastSrvStatus = currSrvStatus;
- }
-
- // 3. Prepariamo i dati per la UI e li salviamo in modo thread-safe
- lock (_statusLock)
- {
- _latestSnapshotForUI = currIobStatus;
- _cachedCounterIob = $"pz MES {iobObj.contapezziIOB}";
- _cachedCounterMac = $"pz PLC {iobObj.contapezziPLC}";
- }
- }
- }
- catch (Exception exc)
- {
- lgError($"Eccezione nel background gather: {exc}");
- }
-
- // Frequenza di aggiornamento Redis/Code (es. ogni 1 secondo)
- // Rilascia la CPU senza fare context switch distruttivi
- await Task.Delay(1000, token);
- }
- }
-
- // Oggetto per il lock thread-safe
- private readonly object _statusLock = new object();
-
- // Questa variabile conterrà l'ultimo stato valido calcolato in background
- private IobWinStatus _latestSnapshotForUI;
-
- // Stringhe pronte per la UI calcolate in background per evitare manipolazioni di stringhe sul thread UI
- private string _cachedCounterIob = "";
- private string _cachedCounterMac = "";
- private string _cachedNote = "";
-
///
/// Loop di gestione worker
///
diff --git a/IOB-WIN-FTP/DATA/CONF/MAIN.ini b/IOB-WIN-FTP/DATA/CONF/MAIN.ini
index d10acd09..ebc0bef6 100644
--- a/IOB-WIN-FTP/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-FTP/DATA/CONF/MAIN.ini
@@ -20,5 +20,3 @@ CLI_INST=SteamWareSim
STARTLIST=FTP_SONATEST
MAXCNC=10
-
-
diff --git a/IOB-WIN-MTC/DATA/CONF/MAIN.ini b/IOB-WIN-MTC/DATA/CONF/MAIN.ini
index b8e74cd4..4b123815 100644
--- a/IOB-WIN-MTC/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-MTC/DATA/CONF/MAIN.ini
@@ -27,4 +27,3 @@ STARTLIST=3024
;STARTLIST=LVF652
MAXCNC=10
-
diff --git a/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini b/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini
index a9d47506..72bea7db 100644
--- a/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini
@@ -34,4 +34,3 @@ STARTLIST=SIMUL_01
;STARTLIST=3026
MAXCNC=10
-
diff --git a/IOB-WIN-PING/DATA/CONF/MAIN.ini b/IOB-WIN-PING/DATA/CONF/MAIN.ini
index 14fc4c91..01bdf429 100644
--- a/IOB-WIN-PING/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-PING/DATA/CONF/MAIN.ini
@@ -20,4 +20,3 @@ STARTLIST=SIMUL_01
;STARTLIST=3023-PING
MAXCNC=10
-
diff --git a/IOB-WIN-SIEMENS/DATA/CONF/MAIN.ini b/IOB-WIN-SIEMENS/DATA/CONF/MAIN.ini
index 839e455b..41774edf 100644
--- a/IOB-WIN-SIEMENS/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-SIEMENS/DATA/CONF/MAIN.ini
@@ -41,5 +41,4 @@ CLI_INST=SteamWareSim
;STARTLIST=SIMUL_01
STARTLIST=3010
-
-
+MAXCNC=10
diff --git a/IOB-WIN-WPS/DATA/CONF/MAIN.ini b/IOB-WIN-WPS/DATA/CONF/MAIN.ini
index 87ce4112..a81dc4b2 100644
--- a/IOB-WIN-WPS/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-WPS/DATA/CONF/MAIN.ini
@@ -23,5 +23,4 @@ STARTLIST=3018
;STARTLIST=3019
;STARTLIST=SIMUL_06
-
-
+MAXCNC=10