Merge branch 'release/IobWinMBus_10'

This commit is contained in:
Samuele Locatelli
2025-02-04 11:47:03 +01:00
9 changed files with 29 additions and 20 deletions
+6 -13
View File
@@ -209,44 +209,32 @@ namespace IOB_UT_NEXT.Iob
/// </summary>
public DataQueue QueueAlarm = new DataQueue("000", "QueueAlarm", false);
//public ConcurrentQueue<string> QueueAlarm = new ConcurrentQueue<string>();
/// <summary>
/// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi)
/// </summary>
public DataQueue QueueFLog = new DataQueue("000", "QueueFLog", false);
//public ConcurrentQueue<string> QueueFLog = new ConcurrentQueue<string>();
/// <summary>
/// Oggetto della coda degli elementi letti (e non ancora trasmessi)
/// </summary>
public DataQueue QueueIN = new DataQueue("000", "QueueIN", false);
//public ConcurrentQueue<string> QueueIN = new ConcurrentQueue<string>();
/// <summary>
/// Coda valori MESSAGGI/EVENTI (da non sottocampionare come samples)...
/// </summary>
public DataQueue QueueMessages = new DataQueue("000", "QueueMessages", false);
//public ConcurrentQueue<string> QueueMessages = new ConcurrentQueue<string>();
/// <summary>
/// Oggetto della coda degli elementi di tipo RawTransf (e non ancora trasmessi)
/// NB: sono salvati serializzati come stringhe
/// </summary>
public DataQueue QueueRawTransf = new DataQueue("000", "QueueRawTransf", false);
//public ConcurrentQueue<string> QueueRawTransf = new ConcurrentQueue<string>();
/// <summary>
/// Coda valori LOG UTENTE (da non sottocampionare come samples)...
/// </summary>
public DataQueue QueueULog = new DataQueue("000", "QueueULog", false);
//public ConcurrentQueue<string> QueueULog = new ConcurrentQueue<string>();
/// <summary>
/// alias booleano false = R
/// </summary>
@@ -524,6 +512,11 @@ namespace IOB_UT_NEXT.Iob
/// </summary>
protected DateTime lastLogStartup = DateTime.Today.AddHours(-1);
/// <summary>
/// Tempo minimo ammissibile di risposta (es x errori ModBus che risponde troppo in fretta) in millisec
/// </summary>
protected int minRespTimeMs = 5;
/// <summary>
/// Veto per registrazione completa log di startup (minuti)
/// </summary>
@@ -596,7 +589,7 @@ namespace IOB_UT_NEXT.Iob
}
}
}
catch(Exception exc)
catch (Exception exc)
{
lg.Error($"Eccezione in checkLogVeto: reset contatori VetoLog/VetoLogCount | message: {message}");
lg.Error($"Raised Exc:{Environment.NewLine}{exc}");
+5
View File
@@ -6003,6 +6003,11 @@ namespace IOB_WIN_FORM.Iob
lgError("loadMemConf: parametro ENABLE_SEND_PZC_BLOCK non trovato, verificare anche MAX_SEND_PZC_BLOCK e MIN_SEND_PZC_BLOCK");
}
lgInfo("loadMemConf.02");
currPar = getOptPar("MIN_RESP_TIME_MS");
if (!string.IsNullOrEmpty(currPar))
{
int.TryParse(currPar, out minRespTimeMs);
}
// gruppo macchina
CodGruppoIob = getOptPar("CodGruppoIob");
+2
View File
@@ -62,6 +62,8 @@ FORCE_DYN_DATA=TRUE
; gestione delta minimo accettabile tra min/MAX
DELTA_VAL=0.1
COPY_DYN2PROD_DATA =TRUE
;tempo minimo risposta perché sia valida
MIN_RESP_TIME_MS=10
; clock base (da 10ms)
timerIntMs=50
+2
View File
@@ -62,6 +62,8 @@ FORCE_DYN_DATA=TRUE
; gestione delta minimo accettabile tra min/MAX
DELTA_VAL=0.1
COPY_DYN2PROD_DATA =TRUE
;tempo minimo risposta perché sia valida
MIN_RESP_TIME_MS=10
; clock base (da 10ms)
timerIntMs=50
+2
View File
@@ -62,6 +62,8 @@ FORCE_DYN_DATA=TRUE
; gestione delta minimo accettabile tra min/MAX
DELTA_VAL=0.1
COPY_DYN2PROD_DATA =TRUE
;tempo minimo risposta perché sia valida
MIN_RESP_TIME_MS=10
; clock base (da 10ms)
timerIntMs=50
+2
View File
@@ -63,6 +63,8 @@ FORCE_DYN_DATA=TRUE
; gestione delta minimo accettabile tra min/MAX
DELTA_VAL=0.1
COPY_DYN2PROD_DATA =TRUE
;tempo minimo risposta perché sia valida
MIN_RESP_TIME_MS=10
; clock base (da 10ms)
timerIntMs=50
+8 -5
View File
@@ -2081,21 +2081,24 @@ namespace IOB_WIN_MBUS.IobModbusTCP
int memAddr = startAddr - baseAddr;
rawData = currPLC.ReadHoldingRegisters(memAddr, numReg);
stopwatch.Stop();
lgTrace($"Lettura in blocco HoldingRegisters| startAddr: {startAddr} | numReg {numReg} | rawData.lenght: {rawData.Length} | {stopwatch.ElapsedMilliseconds}ms");
lgTrace($"Lettura in blocco HoldingRegisters| startAddr: {startAddr} | numReg {numReg} | rawData.lenght: {rawData.Length} | {stopwatch.Elapsed.TotalMilliseconds}ms");
lastReadPLC = DateTime.Now;
// se risposta troppo rapida (< minRespTimeMs, tipicamente 5 msse non impostato in OptPar) indico NON ok e errori...
if (stopwatch.Elapsed.TotalMilliseconds < minRespTimeMs)
{
allOk = false;
currReadErrors += 10;
}
// se leggo tutti zero --> indico +5 read error!
bool allZero = (rawData.Where(x => x > 0).Count() == 0);
if (allZero)
{
currReadErrors += 3;
currReadErrors += 5;
#if false
allOk = false;
#endif
}
// salvo in LUT la versione ESPLOSA 2 byte alla volta...
#if false
if (allOk && rawData.Length > 0)
#endif
if (rawData.Length > 0)
{
for (int i = 0; i < rawData.Length / 2; i++)
+1 -1
View File
@@ -49,7 +49,7 @@ BLINK_FILT=0
[OPTPAR]
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
PZCOUNT_MODE=STD.DB85.DBRE16
PZCOUNT_MODE=STD.DB85.DBB16
DISABLE_PZCOUNT=FALSE
ENABLE_SEND_PZC_BLOCK=TRUE
MIN_SEND_PZC_BLOCK=0
+1 -1
View File
@@ -48,7 +48,7 @@ BLINK_FILT=0
[OPTPAR]
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
PZCOUNT_MODE=STD.DB85.DBRE16
PZCOUNT_MODE=STD.DB85.DBB16
DISABLE_PZCOUNT=FALSE
ENABLE_SEND_PZC_BLOCK=TRUE
MIN_SEND_PZC_BLOCK=0