diff --git a/IOB-UT-NEXT/Config/Base/IobDto.cs b/IOB-UT-NEXT/Config/Base/IobDto.cs
index 394e810b..4a6bab14 100644
--- a/IOB-UT-NEXT/Config/Base/IobDto.cs
+++ b/IOB-UT-NEXT/Config/Base/IobDto.cs
@@ -67,6 +67,11 @@ namespace IOB_UT_NEXT.Config.Base
///
public double DelayReadPzCount { get; set; } = 0.5;
+ ///
+ /// Tempo di attesa (in minuti) x lettura contapezzi standard DOPO fase di setup (default 6 sec, da init 0.6 sec)
+ ///
+ public double DelayReadPzCountSetup { get; set; } = 0.1;
+
///
/// Disabilitazione invio DynData di WDST (WatchDogStateTransfer)
///
diff --git a/IOB-UT-NEXT/Config/IobConfTree.cs b/IOB-UT-NEXT/Config/IobConfTree.cs
index 23b8e0ba..b0d86f15 100644
--- a/IOB-UT-NEXT/Config/IobConfTree.cs
+++ b/IOB-UT-NEXT/Config/IobConfTree.cs
@@ -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")),
diff --git a/IOB-UT-NEXT/Iob/BaseObj.cs b/IOB-UT-NEXT/Iob/BaseObj.cs
index d877770e..0bedf4b2 100644
--- a/IOB-UT-NEXT/Iob/BaseObj.cs
+++ b/IOB-UT-NEXT/Iob/BaseObj.cs
@@ -298,6 +298,12 @@ namespace IOB_UT_NEXT.Iob
///
public int vetoPingSec = 1;
+ ///
+ /// Veto specifico per la gestione (svuotamento) coda contapezzi (es in fase di attrezzaggio e reset lenti)
+ /// Tipicamente impostato a DelayReadPzCountSetup dopo attrezzaggio...
+ ///
+ public DateTime vetoQueuePzCount = DateTime.Now;
+
///
/// Imposta veto chiamata split (durante chiamata, per 60 sec)
///
diff --git a/IOB-WIN-FORM/Iob/Generic.Protected.cs b/IOB-WIN-FORM/Iob/Generic.Protected.cs
index f28a4c18..25ebbb59 100644
--- a/IOB-WIN-FORM/Iob/Generic.Protected.cs
+++ b/IOB-WIN-FORM/Iob/Generic.Protected.cs
@@ -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);
}
}
}
diff --git a/IOB-WIN-FORM/Iob/Generic.Public.cs b/IOB-WIN-FORM/Iob/Generic.Public.cs
index afaba6a0..314f750d 100644
--- a/IOB-WIN-FORM/Iob/Generic.Public.cs
+++ b/IOB-WIN-FORM/Iob/Generic.Public.cs
@@ -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
{
diff --git a/IOB-WIN-OPC-UA/DATA/CONF/2014.ini b/IOB-WIN-OPC-UA/DATA/CONF/2014.ini
index c96fd44d..6b95e324 100644
--- a/IOB-WIN-OPC-UA/DATA/CONF/2014.ini
+++ b/IOB-WIN-OPC-UA/DATA/CONF/2014.ini
@@ -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
diff --git a/IOB-WIN-OPC-UA/DATA/CONF/2014.json b/IOB-WIN-OPC-UA/DATA/CONF/2014.json
index d984d590..0afccecb 100644
--- a/IOB-WIN-OPC-UA/DATA/CONF/2014.json
+++ b/IOB-WIN-OPC-UA/DATA/CONF/2014.json
@@ -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,
diff --git a/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini b/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini
index c0bfe4da..5b4d1fe7 100644
--- a/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini
@@ -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
diff --git a/IOB-WIN-OPC-UA/IobOpc/OpcUaSiemens.cs b/IOB-WIN-OPC-UA/IobOpc/OpcUaSiemens.cs
index d4814ee5..1203447e 100644
--- a/IOB-WIN-OPC-UA/IobOpc/OpcUaSiemens.cs
+++ b/IOB-WIN-OPC-UA/IobOpc/OpcUaSiemens.cs
@@ -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)
{