Merge branch 'release/SprintToVers3.9_03'

This commit is contained in:
Samuele Locatelli
2025-03-04 08:32:39 +01:00
7 changed files with 52 additions and 162 deletions
+15
View File
@@ -31,5 +31,20 @@ namespace IOB_UT_NEXT.Config.Base
/// </summary>
public bool ResetOnStopSetup { get; set; } = false;
/// <summary>
/// Abilita invio di più pezzi alla volta (IdxEv: 120)
/// </summary>
public bool EnabSendPzcBlock { get; set; } = true;
/// <summary>
/// Numero minimo pezzi x invio in blocco
/// </summary>
public int SendPzcBlockMin { get; set; } = 0;
/// <summary>
/// Numero massimo x invio in blocco
/// </summary>
public int SendPzcBlockMax { get; set; } = 100;
}
}
+5
View File
@@ -50,6 +50,11 @@ namespace IOB_UT_NEXT.Config.Base
/// </summary>
public bool DisabWDST { get; set; } = true;
/// <summary>
/// Tempo massimo di WatchDog dopo cui inviare un segnale x evitare C101
/// </summary>
public int WatchDogSec { get; set; } = 60;
/// <summary>
/// Abilita salvataggio coda eventi su redis (ritentiva)
/// </summary>
+9 -1
View File
@@ -112,7 +112,8 @@ namespace IOB_UT_NEXT.Config
EnabRedisQue = bool.Parse(fIni.ReadString("IOB", "EnableRedisQueue", "true")),
MinDeltaSec = fIni.ReadInteger("IOB", "MinDeltaSec", 6),
RelVers = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Version}",
WaitRecMsec = Convert.ToInt32(fIni.ReadString("OPTPAR", "WAIT_REC_MSEC", "90000"))
WaitRecMsec = Convert.ToInt32(fIni.ReadString("OPTPAR", "WAIT_REC_MSEC", "90000")),
DisabWDST = bool.Parse(fIni.ReadString("OPTPAR", "DISABLE_SEND_WDST", "true"))
};
// da togliere da conf app...
int uiTimer = utils.CRI("timerIntMs");
@@ -137,6 +138,7 @@ namespace IOB_UT_NEXT.Config
};
exclOptPar.Add("WAIT_REC_MSEC");
exclOptPar.Add("DISABLE_SEND_WDST");
exclOptPar.Add("timerIntMs");
// tipo adapter// verifico tipo adapter
@@ -206,11 +208,17 @@ namespace IOB_UT_NEXT.Config
newConfObj.Counters.EnableSetPzReq = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_PZ_REQ", "false"));
newConfObj.Counters.ResetOnStartSetup = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_PZ_RESET", "false"));
newConfObj.Counters.ResetOnStopSetup = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_PZ_RESET_stopSetup", "false"));
newConfObj.Counters.EnabSendPzcBlock = bool.Parse(fIni.ReadString("OPTPAR", "ENABLE_SEND_PZC_BLOCK", "false"));
newConfObj.Counters.SendPzcBlockMin = int.Parse(fIni.ReadString("OPTPAR", "MIN_SEND_PZC_BLOCK", "0"));
newConfObj.Counters.SendPzcBlockMax = int.Parse(fIni.ReadString("OPTPAR", "MAX_SEND_PZC_BLOCK", "100"));
exclOptPar.Add("ENABLE_PZ_CNT");
exclOptPar.Add("ENABLE_PZ_REQ");
exclOptPar.Add("ENABLE_PZ_RESET");
exclOptPar.Add("ENABLE_PZ_RESET_stopSetup");
exclOptPar.Add("ENABLE_SEND_PZC_BLOCK");
exclOptPar.Add("MIN_SEND_PZC_BLOCK");
exclOptPar.Add("MAX_SEND_PZC_BLOCK");
// gestione ODL
-5
View File
@@ -36,7 +36,6 @@
<!-- watchdog, ping, check disconnesso -->
<add key="nMaxSend" value="10" />
<add key="pingTestSec" value="5" />
<add key="watchdogMaxSec" value="90" />
<add key="disconMaxSec" value="30" />
<add key="defIOB" value="2999" />
<add key="pauseSendMSec" value="2000" />
@@ -51,7 +50,6 @@
<add key="maxReadErrors" value="20" />
<!--parametri SIM-->
<add key="waitSimPar" value="30" />
<!--<add key="waitSimPar" value="45" />-->
<!--gestione REDIS-->
<add key="RedisConn" value="localhost,abortConnect=false,ssl=false" />
<add key="RedisConnAdmin" value="localhost,abortConnect=false,ssl=false" />
@@ -61,7 +59,6 @@
<add key="maxJsonData" value="100" />
<add key="maxJsonDataEv" value="25" />
<!--gestione multithread-->
<add key="sendDataByThread" value="false" />
<!--Modalità DEMO: DemoOUT indica che NON invia davvero al server e DemoIN che simula e NON legge da PLC-->
<add key="DemoIn" value="false" />
<add key="DemoInSample" value="false" />
@@ -87,8 +84,6 @@
<add key="resxPath" value="Resources" />
<add key="mainConfFile" value="MAIN.ini" />
<add key="defaultPersLayerFile" value="PersistData.dat" />
<!--<add key="simDataFile" value="SimData.dat" />-->
<!--<add key="memDumpFile" value="MemoryDump.dat" />-->
<add key="numSim" value="1" />
<add key="AUpdAsAdm" value="true" />
<add key="ConfToCloud" value="false" />
-36
View File
@@ -947,13 +947,6 @@ namespace IOB_WIN_FORM
#region Protected Fields
#if false
/// <summary>
/// contatore veloce
/// </summary>
protected int fastCount;
#endif
/// <summary>
/// Data-Ora prima apertura FORM...
/// </summary>
@@ -974,13 +967,6 @@ namespace IOB_WIN_FORM
/// </summary>
protected DateTime lastStartTry;
#if false
/// <summary>
/// contatore normale
/// </summary>
protected int normCount;
#endif
/// <summary>
/// Oggetto connessioen REDIS
/// </summary>
@@ -1001,18 +987,6 @@ namespace IOB_WIN_FORM
/// </summary>
protected bool sendStartFLog = false;
#if false
/// <summary>
/// contatore lento
/// </summary>
protected int slowCount;
/// <summary>
/// contatore sync allarmi
/// </summary>
protected int verySlowCount;
#endif
/// <summary>
/// Temnpo attesa std in MS
/// </summary>
@@ -1570,16 +1544,6 @@ namespace IOB_WIN_FORM
}
// controllo TUTTE le scadenze...
checkScad();
#if false
// check esecuzione FastTask
checkScad(gatherCycle.HF);
// check esecuzione NormTask
checkScad(gatherCycle.MF);
// check esecuzione SlowTask
checkScad(gatherCycle.LF);
// check esecuzione AlarmSync
checkScad(gatherCycle.VLF);
#endif
if (utils.CRI("waitEndCycle") > 0)
{
Thread.Sleep(utils.CRI("waitEndCycle"));
-53
View File
@@ -24,15 +24,6 @@ namespace IOB_WIN_FORM.Iob
/// <param name="args"></param>
public void lgError(string message, params object[] args)
{
#if false
try
{
}
catch
{
readErrorCurr++;
}
#endif
bool doVeto = checkLogVeto(2, ref message);
// se non ho veto --> loggo
if (!doVeto)
@@ -377,49 +368,5 @@ namespace IOB_WIN_FORM.Iob
#endregion Protected Methods
#if false
/// <summary>
/// Verifica se ci sia veto log attivo e gestisce casistiche
/// </summary>
/// <param name="vetoSec"></param>
/// <param name="message"></param>
/// <returns></returns>
protected bool checkLogVeto(int vetoSec, ref string message)
{
//verifico SE si debba fare log, altrimenti metto in coda...
bool doVeto = true;
DateTime adesso = DateTime.Now;
if (VetoLog.ContainsKey(message))
{
// conteggio num veto a +1...
if (VetoLogCount.ContainsKey(message))
{
VetoLogCount[message]++;
}
else
{
VetoLogCount.Add(message, 1);
}
// controllo scadenza, quando superata soglia aggiorno messaggio con {n} x {messaggio}
if (adesso.Subtract(VetoLog[message]).TotalSeconds > vetoSec)
{
doVeto = false;
string newMessage = $"{VetoLogCount[message]} x {message}";
VetoLog.Remove(message);
VetoLogCount.Remove(message);
message = newMessage;
}
}
else
{
// primo --> loggo
doVeto = false;
VetoLog.Add(message, adesso.AddSeconds(vetoSec));
VetoLogCount.Add(message, 0);
}
// restituisco esito!
return doVeto;
}
#endif
}
}
+23 -67
View File
@@ -3615,13 +3615,6 @@ namespace IOB_WIN_FORM.Iob
/// </summary>
protected bool enablePzCountByApp = true;
#if false
/// <summary>
/// Boolean x indicare contapezzi abilitato forzatamente da IOB
/// </summary>
protected bool enablePzCountByIob = true;
#endif
/// <summary>
/// Abilitazione gestione slow data
/// </summary>
@@ -5490,24 +5483,13 @@ namespace IOB_WIN_FORM.Iob
}
else
{
string currPar = "";
lgInfo("loadMemConf.01");
lgInfoStartup("BEGIN loadMemConf");
// variabili x gestione send contapezzi in blocco
string currPar = getOptPar("ENABLE_SEND_PZC_BLOCK");
if (!string.IsNullOrEmpty(currPar))
{
bool.TryParse(currPar, out enableSendPzCountBlock);
// se abilitato leggo num pezzi da reinviare in blocco
if (enableSendPzCountBlock)
{
int.TryParse(getOptPar("MAX_SEND_PZC_BLOCK"), out maxSendPzCountBlock);
int.TryParse(getOptPar("MIN_SEND_PZC_BLOCK"), out minSendPzCountBlock);
}
}
else
{
lgError("loadMemConf: parametro ENABLE_SEND_PZC_BLOCK non trovato, verificare anche MAX_SEND_PZC_BLOCK e MIN_SEND_PZC_BLOCK");
}
enableSendPzCountBlock = IOBConfFull.Counters.EnabSendPzcBlock;
minSendPzCountBlock = IOBConfFull.Counters.SendPzcBlockMin;
maxSendPzCountBlock = IOBConfFull.Counters.SendPzcBlockMax;
lgInfo("loadMemConf.02");
currPar = getOptPar("MIN_RESP_TIME_MS");
if (!string.IsNullOrEmpty(currPar))
@@ -5527,13 +5509,7 @@ namespace IOB_WIN_FORM.Iob
}
// abilitazione invio WDST disabilitazione controllo range valori DynData
if (!string.IsNullOrEmpty(getOptPar("DISABLE_SEND_WDST")))
{
bool checkDisWdst = false;
bool.TryParse(getOptPar("DISABLE_SEND_WDST"), out checkDisWdst);
disableWdst = checkDisWdst;
}
disableWdst = IOBConfFull.General.DisabWDST;
// disabilitazione controllo range valori DynData
if (!string.IsNullOrEmpty(getOptPar("disDynDataRangeCheck")))
{
@@ -7217,47 +7193,27 @@ namespace IOB_WIN_FORM.Iob
if (checkServerAlive)
{
bool iobOk = false;
if (utils.CRB("sendDataByThread"))
{
Task taskCheck = Task.Run(() => iobOk = checkIobEnabled);
}
else
{
iobOk = checkIobEnabled;
}
iobOk = checkIobEnabled;
// verifico SE posso inviare dati
if (iobOk)
{
currDispData.semOut = Semaforo.SV;
// verificare come gestire il task secondario senza interferenza (chiamate
// update su FORM da thread secondari danno errori)
if (utils.CRB("sendDataByThread"))
{
// invio con thread separato...
Task taskSigIN = Task.Run(() => svuotaCodaSignIN());
Task taskFLog = Task.Run(() => svuotaCodaFLog());
Task taskRawTransf = Task.Run(() => svuotaCodaRawTransf());
Task taskULog = Task.Run(() => svuotaCodaULog());
}
else
{
// gestione queue SignalIN (invio, display)
svuotaCodaSignIN();
currDispData.counter = contapezziIOB;
raiseRefresh(currDispData);
// provo a svuotare coda contapezzi
svuotaCodaContapezzi();
currDispData.counter = contapezziIOB;
raiseRefresh(currDispData);
// gestione queue FluxLog (invio, display)
svuotaCodaFLog();
// coda RawTransf
svuotaCodaRawTransf();
// coda UserLog
svuotaCodaULog();
// refresh
raiseRefresh(currDispData);
}
// gestione queue SignalIN (invio, display)
svuotaCodaSignIN();
currDispData.counter = contapezziIOB;
raiseRefresh(currDispData);
// provo a svuotare coda contapezzi
svuotaCodaContapezzi();
currDispData.counter = contapezziIOB;
raiseRefresh(currDispData);
// gestione queue FluxLog (invio, display)
svuotaCodaFLog();
// coda RawTransf
svuotaCodaRawTransf();
// coda UserLog
svuotaCodaULog();
// refresh
raiseRefresh(currDispData);
// se arrivo è tutto ok...
currSendErrors = 0;
}
@@ -8380,7 +8336,7 @@ namespace IOB_WIN_FORM.Iob
{
bool sendOnMachineOff = false;
// controllo se è passato oltre watchdog e non ho inviato nulla --> RE-INVIO (ultimo inviato)!!!!
if (DateTime.Now.Subtract(lastWatchDog).TotalSeconds > utils.CRI("watchdogMaxSec"))
if (DateTime.Now.Subtract(lastWatchDog).TotalSeconds > IOBConfFull.General.WatchDogSec)
{
string wdStatus = "elapsed";
string sVal = string.Format("[WDST]{0}", wdStatus);