Merge branch 'release/DelayPzCount_setup'

This commit is contained in:
Samuele Locatelli
2026-03-25 10:47:14 +01:00
9 changed files with 65 additions and 38 deletions
+5
View File
@@ -67,6 +67,11 @@ namespace IOB_UT_NEXT.Config.Base
/// </summary>
public double DelayReadPzCount { get; set; } = 0.5;
/// <summary>
/// Tempo di attesa (in minuti) x lettura contapezzi standard DOPO fase di setup (default 6 sec, da init 0.6 sec)
/// </summary>
public double DelayReadPzCountSetup { get; set; } = 0.1;
/// <summary>
/// Disabilitazione invio DynData di WDST (WatchDogStateTransfer)
/// </summary>
+1
View File
@@ -121,6 +121,7 @@ namespace IOB_UT_NEXT.Config
CodIOB = fIni.ReadString("IOB", "IOB_NAME", codIob),
CodGruppoIob = fIni.ReadString("OPTPAR", "CodGruppoIob", "ND-00"),
DelayReadPzCount = Convert.ToDouble(fIni.ReadString("OPTPAR", "DELAY_READ_PZ_COUNT", "0")),
DelayReadPzCountSetup = Convert.ToDouble(fIni.ReadString("OPTPAR", "DELAY_READ_PZ_COUNT_SETUP", "0.01")),
FileName = Path.GetFileName(iniFilePath),
Customer = fIni.ReadString("TAGS", "Customer", "EgalWare"),
EnabelPodlManFull = bool.Parse(fIni.ReadString("OPTPAR", "EnabelPodlManFull", "false")),
+6
View File
@@ -298,6 +298,12 @@ namespace IOB_UT_NEXT.Iob
/// </summary>
public int vetoPingSec = 1;
/// <summary>
/// Veto specifico per la gestione (svuotamento) coda contapezzi (es in fase di attrezzaggio e reset lenti)
/// Tipicamente impostato a DelayReadPzCountSetup dopo attrezzaggio...
/// </summary>
public DateTime vetoQueuePzCount = DateTime.Now;
/// <summary>
/// Imposta veto chiamata split (durante chiamata, per 60 sec)
/// </summary>
+42 -33
View File
@@ -5792,46 +5792,55 @@ namespace IOB_WIN_FORM.Iob
private async Task SvuotaCodaContapezziAsync()
{
// permetto al max 2 tentativi infruttuosi...
int maxTry = 2;
int oldContapezzi = contapezziIOB;
// SE HO gestione contapezzi...
if (!IOBConfFull.Device.EnabPzCount)
// verifico non sia impedita la gestione contapezzi (per evitare invio su macchine lente nel reset all'attrezzaggio)
if (DateTime.Now <= vetoQueuePzCount)
{
lgDebug($"Contapezzi disabilitato da configuraizone: IOBConfFull.Device.EnabPzCount: {IOBConfFull.Device.EnabPzCount}");
lgInfo($"Ciclo SvuotaCodaContapezziAsync DISABILITATO fino a {vetoQueuePzCount}");
}
else
{
// se ho contapezzi OLTRE limite...
while ((MPOnline) && (contapezziPLC > contapezziIOB + minSendPzCountBlock))
// permetto al max 2 tentativi infruttuosi...
int maxTry = 2;
int oldContapezzi = contapezziIOB;
// SE HO gestione contapezzi...
if (!IOBConfFull.Device.EnabPzCount)
{
lgInfo($"Ciclo SvuotaCodaContapezziAsync --> contapezziPLC: {contapezziPLC} | contapezziIOB: {contapezziIOB}");
if (!isMulti)
lgDebug($"Contapezzi disabilitato da configuraizone: IOBConfFull.Device.EnabPzCount: {IOBConfFull.Device.EnabPzCount}");
}
else
{
// se ho contapezzi OLTRE limite...
while ((MPOnline) && (contapezziPLC > contapezziIOB + minSendPzCountBlock))
{
pzCntReload(true);
lgInfo($"Ciclo SvuotaCodaContapezziAsync --> contapezziPLC: {contapezziPLC} | contapezziIOB: {contapezziIOB}");
if (!isMulti)
{
pzCntReload(true);
}
// provo invio
if (!isMulti)
{
trySendPzCountBlock();
}
// verifica per evitare loop infinito invio fallito
if (oldContapezzi == contapezziIOB)
{
maxTry--;
}
else
{
maxTry = 2;
oldContapezzi = contapezziIOB;
}
// verifico maxTry: se li ho esauriti esco!
if (maxTry <= 0)
{
return;
}
// aspetto x dare tempo calcolo
await Task.Delay(500);
}
// provo invio
if (!isMulti)
{
trySendPzCountBlock();
}
// verifica per evitare loop infinito invio fallito
if (oldContapezzi == contapezziIOB)
{
maxTry--;
}
else
{
maxTry = 2;
oldContapezzi = contapezziIOB;
}
// verifico maxTry: se li ho esauriti esco!
if (maxTry <= 0)
{
return;
}
// aspetto x dare tempo calcolo
await Task.Delay(500);
}
}
}
+2
View File
@@ -1245,6 +1245,8 @@ namespace IOB_WIN_FORM.Iob
{
taskVal = $"NO DATA MEM, SET task: {iKey} --> {item.Value}";
}
// imposto reset gestione pzcount da parametri
vetoQueuePzCount = DateTime.Now.AddMinutes(IOBConfFull.General.DelayReadPzCountSetup);
}
else
{
+2
View File
@@ -75,6 +75,8 @@ VETO_SIG_IN=false
BASE_SAMPLE_PERIOD=600
MAX_ELAPSED_TIME_SEC=900
DISABLE_SEND_WDST=TRUE
; ritardo rilettura pezzi post setup in minuti
DELAY_READ_PZ_COUNT_SETUP=0.5
; conf parametri memoria READ/WRITE
OPC_PARAM_CONF=2014.json
+3 -3
View File
@@ -360,7 +360,7 @@
"name": "OPC_actParts",
"description": "Contapezzi",
"func": "POINT",
"period": 6,
"period": 60,
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/State/actParts",
"index": 0,
@@ -371,7 +371,7 @@
"description": "Ultimo TCiclo",
"func": "POINT",
"period": 60,
"tipoMem": "Int",
"tipoMem": "String",
"memAddr": "ns=2;s=/Channel/State/oldProgNetTime",
"index": 0,
"size": 1
@@ -380,7 +380,7 @@
"name": "OPC_QUANTITA_PRODOTTA",
"description": "QUANTITA PRODOTTA",
"func": "MAX",
"period": 6,
"period": 60,
"tipoMem": "Int",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_PRODOTTA",
"index": 0,
+2 -2
View File
@@ -28,8 +28,8 @@ CLI_INST=SteamWareSim
;STARTLIST=3026
;STARTLIST=TFT_RAMA_001
;STARTLIST=SIM_DP_01
STARTLIST=1042
;STARTLIST=2014
;STARTLIST=1042
STARTLIST=2014
;STARTLIST=2015
;STARTLIST=2016
+2
View File
@@ -113,6 +113,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
if (addResetPzCount)
{
// imposto reset gestione pzcount da parametri
vetoQueuePzCount = DateTime.Now.AddMinutes(IOBConfFull.General.DelayReadPzCountSetup);
// se è una doppia tavola aggiungo anche tag "processOtherInfo"...
if (isMulti)
{