diff --git a/IOB-WIN/DATA/CONF/IMI_50.ini b/IOB-WIN/DATA/CONF/IMI_50.ini
index 56521241..bb65e120 100644
--- a/IOB-WIN/DATA/CONF/IMI_50.ini
+++ b/IOB-WIN/DATA/CONF/IMI_50.ini
@@ -58,6 +58,7 @@ PZCOUNT_MODE=STD.DM20.2
DISABLE_PZCOUNT=TRUE
ENABLE_DYN_DATA=FALSE
FORCE_DYN_DATA=TRUE
+ENABLE_DATA_FILTER=FALSE
; conf parametri memoria READ/WRITE
PARAM_CONF=IMI_50.json
diff --git a/IOB-WIN/DATA/CONF/INTERCL_01.ini b/IOB-WIN/DATA/CONF/INTERCL_01.ini
index 8fe462df..2a2bd67e 100644
--- a/IOB-WIN/DATA/CONF/INTERCL_01.ini
+++ b/IOB-WIN/DATA/CONF/INTERCL_01.ini
@@ -1,4 +1,4 @@
-;Configurazione IOB-WIN
+;Configurazione IOB-WIN
[IOB]
;Macchina preriscaldo barre per Valvital
CNCTYPE=SIEMENS_AT2001
@@ -29,30 +29,17 @@ ADDR_READ=DB1000.DBB0
ADDR_WRITE=DB1001.DBB0
SIZE_READ=64
SIZE_WRITE=90
-;BIT0=CONN
-;BIT1=DB60.DBB1
-;BIT2=PZCOUNT.STD.DB700.DBW22
-;BIT3=DB60.DBB3
-;BIT4=DB60.DBB4
[BLINK]
-;MAX_COUNTER_BLINK = 30
MAX_COUNTER_BLINK = 15
-;bit0 = 0
-;bit1 = 0
-;bit2 = 1
-;bit3 = 1
-;bit4 = 1
-;bit5 = 0
-;bit6 = 0
-;bit7 = 0
BLINK_FILT=0
-;BLINK_FILT=28
[OPTPAR]
+AUTO_CHANGE_ODL=true
+CHANGE_ODL_HOURS=24
+CHANGE_ODL_IDLE_MIN=1
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
-; attenzione memoria sempre base BYTE (1604 DW --> 6416...)
PZCOUNT_MODE=STD.DB1275.DBDW4
DISABLE_PZCOUNT=TRUE
ENABLE_DYN_DATA=TRUE
@@ -61,6 +48,7 @@ FORCE_DYN_DATA=TRUE
; conf parametri memoria READ/WRITE
PARAM_CONF=INTERCL_01.json
WRITE_CHECK=TRUE
+TEST_MODE=TRUE
[BRANCH]
NAME=master
\ No newline at end of file
diff --git a/IOB-WIN/DATA/CONF/INTERCL_02.ini b/IOB-WIN/DATA/CONF/INTERCL_02.ini
index 25ef319b..b91763ae 100644
--- a/IOB-WIN/DATA/CONF/INTERCL_02.ini
+++ b/IOB-WIN/DATA/CONF/INTERCL_02.ini
@@ -28,30 +28,16 @@ ADDR_READ=DB9999.DBB0
ADDR_WRITE=DB9999.DBB0
SIZE_READ=0
SIZE_WRITE=0
-;BIT0=CONN
-;BIT1=DB60.DBB1
-;BIT2=PZCOUNT.STD.DB700.DBW22
-;BIT3=DB60.DBB3
-;BIT4=DB60.DBB4
-
[BLINK]
-;MAX_COUNTER_BLINK = 30
MAX_COUNTER_BLINK = 15
-;bit0 = 0
-;bit1 = 0
-;bit2 = 1
-;bit3 = 1
-;bit4 = 1
-;bit5 = 0
-;bit6 = 0
-;bit7 = 0
BLINK_FILT=0
-;BLINK_FILT=28
[OPTPAR]
+AUTO_CHANGE_ODL=true
+CHANGE_ODL_HOURS=24
+CHANGE_ODL_IDLE_MIN=1
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
-; attenzione memoria sempre base BYTE (1604 DW --> 6416...)
PZCOUNT_MODE=STD.DM20.2
DISABLE_PZCOUNT=TRUE
ENABLE_DYN_DATA=TRUE
diff --git a/IOB-WIN/DATA/CONF/SIMUL_02.ini b/IOB-WIN/DATA/CONF/SIMUL_02.ini
index fd4d8a9e..38f6d8eb 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_02.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_02.ini
@@ -51,7 +51,7 @@ T_OFF=22
; gestione DynData simulati
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
-
+NEW_DYN_DATA=TRUE
; conf parametri memoria READ/WRITE
PARAM_CONF=SIMUL_02.json
diff --git a/IOB-WIN/DATA/CONF/SIMUL_03.ini b/IOB-WIN/DATA/CONF/SIMUL_03.ini
index 74fb9347..e83cdfe3 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_03.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_03.ini
@@ -51,7 +51,7 @@ T_OFF=22
; gestione DynData simulati
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
-
+NEW_DYN_DATA=TRUE
; conf parametri memoria READ/WRITE
PARAM_CONF=SIMUL_03.json
diff --git a/IOB-WIN/DATA/CONF/SIMUL_04.ini b/IOB-WIN/DATA/CONF/SIMUL_04.ini
index bd1abf1e..e7a4771f 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_04.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_04.ini
@@ -51,7 +51,7 @@ T_OFF=22
; gestione DynData simulati
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
-
+NEW_DYN_DATA=TRUE
; conf parametri memoria READ/WRITE
PARAM_CONF=SIMUL_04.json
diff --git a/IOB-WIN/DATA/CONF/SIMUL_05.ini b/IOB-WIN/DATA/CONF/SIMUL_05.ini
index 5a7a4b61..fcdbf14b 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_05.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_05.ini
@@ -51,7 +51,7 @@ T_OFF=22
; gestione DynData simulati
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
-
+NEW_DYN_DATA=TRUE
; conf parametri memoria READ/WRITE
PARAM_CONF=SIMUL_05.json
diff --git a/IOB-WIN/DATA/CONF/SIMUL_06.ini b/IOB-WIN/DATA/CONF/SIMUL_06.ini
index f3853f63..fbe269a1 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_06.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_06.ini
@@ -51,7 +51,7 @@ T_OFF=22
; gestione DynData simulati
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
-
+NEW_DYN_DATA=TRUE
; conf parametri memoria READ/WRITE
PARAM_CONF=SIMUL_05.json
diff --git a/IOB-WIN/DATA/CONF/SIMUL_07.ini b/IOB-WIN/DATA/CONF/SIMUL_07.ini
index 112bd649..11b84d95 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_07.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_07.ini
@@ -51,7 +51,7 @@ T_OFF=22
; gestione DynData simulati
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
-
+NEW_DYN_DATA=TRUE
; conf parametri memoria READ/WRITE
PARAM_CONF=SIMUL_07.json
diff --git a/IOB-WIN/DATA/CONF/SIMUL_08.ini b/IOB-WIN/DATA/CONF/SIMUL_08.ini
index 571a8b4e..9d63cbb7 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_08.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_08.ini
@@ -51,7 +51,7 @@ T_OFF=22
; gestione DynData simulati
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
-
+NEW_DYN_DATA=TRUE
; conf parametri memoria READ/WRITE
PARAM_CONF=SIMUL_08.json
diff --git a/IOB-WIN/DATA/CONF/SIM_DP_01.ini b/IOB-WIN/DATA/CONF/SIM_DP_01.ini
index 39699781..8bc40b80 100644
--- a/IOB-WIN/DATA/CONF/SIM_DP_01.ini
+++ b/IOB-WIN/DATA/CONF/SIM_DP_01.ini
@@ -1,4 +1,4 @@
-;Configurazione IOB-WIN
+;Configurazione IOB-WIN
[IOB]
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
@@ -44,11 +44,11 @@ PER_BASE=800
SIM_PZCNT=10|3
SIM_ALARM=1000|20
SIM_MANU=50|6
-; 1 = indica che la macchina è multi --> allo scadere del contapezzo gestisce ANCHE il giro tavola sui bit relativi
+; 1 = indica che la macchina � multi --> allo scadere del contapezzo gestisce ANCHE il giro tavola sui bit relativi
SIM_MULTI=1
; indica gestione e simulazione bit 5 --> slow/emergenza
SIM_SLOW=3500|20
-; indica simulazione delle funzionalità power ON/ OFF
+; indica simulazione delle funzionalit� power ON/ OFF
SIM_POW_ON_OFF=true
T_ON=6
T_OFF=22
diff --git a/IOB-WIN/DATA/CONF/SIM_DP_02.ini b/IOB-WIN/DATA/CONF/SIM_DP_02.ini
index ebef3e58..c49bbca9 100644
--- a/IOB-WIN/DATA/CONF/SIM_DP_02.ini
+++ b/IOB-WIN/DATA/CONF/SIM_DP_02.ini
@@ -1,4 +1,4 @@
-;Configurazione IOB-WIN
+;Configurazione IOB-WIN
[IOB]
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
@@ -44,11 +44,11 @@ PER_BASE=800
SIM_PZCNT=10|2
SIM_ALARM=1000|20
SIM_MANU=50|6
-; 1 = indica che la macchina è multi --> allo scadere del contapezzo gestisce ANCHE il giro tavola sui bit relativi
+; 1 = indica che la macchina � multi --> allo scadere del contapezzo gestisce ANCHE il giro tavola sui bit relativi
SIM_MULTI=1
; indica gestione e simulazione bit 5 --> slow/emergenza
SIM_SLOW=6500|20
-; indica simulazione delle funzionalità power ON/ OFF
+; indica simulazione delle funzionalit� power ON/ OFF
SIM_POW_ON_OFF=false
T_ON=6
T_OFF=22
diff --git a/IOB-WIN/IobGeneric.cs b/IOB-WIN/IobGeneric.cs
index 854726f3..d8c41ad0 100644
--- a/IOB-WIN/IobGeneric.cs
+++ b/IOB-WIN/IobGeneric.cs
@@ -2992,12 +2992,169 @@ namespace IOB_WIN
// chiamo accodamento...
accodaFLog(sVal, qEncodeFLog("PROG", currPrgName));
}
- }
+ }
+
+ ///
+ /// Verifica se sia machcina multi = DoppioPallet da CONF
+ ///
+ public bool isMulti
+ {
+ get
+ {
+ bool answ = false;
+ if (cIobConf.optPar.Count > 0)
+ {
+ // cerco con chaive reale IS_MULTI
+ string keyName = "IS_MULTI";
+ if (!cIobConf.optPar.ContainsKey(keyName))
+ {
+ // legacy: accetto anche SIM_MULTI...
+ keyName = "SIM_MULTI";
+ }
+ // vera verifica su chaive...
+ if (cIobConf.optPar.ContainsKey(keyName))
+ {
+ string SIM_MULTI = getOptPar(keyName);
+ answ = SIM_MULTI == "1";
+ }
+ }
+ return answ;
+ }
+ }
///
/// Verifica e processing x gestione ODL automatica
///
- public virtual void processAutoOdl()
- {
+
+ public void processAutoOdl()
+ {
+ bool fatto = false;
+ if (!string.IsNullOrEmpty(getOptPar("AUTO_CHANGE_ODL")))
+ {
+ string IOB_MULTI_CNAME = "";
+ string[] elencoMulti = null;
+ string fullUrl = "";
+ if (isMulti)
+ {
+ // devo chiamare cambio ODL x OGNI tavola: mi servono i parametri opzionali...
+ IOB_MULTI_CNAME = getOptPar("IOB_MULTI_CNAME");
+ elencoMulti = IOB_MULTI_CNAME.Split(',');
+ }
+ // controllo SIA abilitato...
+ bool doProc = false;
+ DateTime adesso = DateTime.Now;
+ bool.TryParse(getOptPar("AUTO_CHANGE_ODL"), out doProc);
+ if (doProc)
+ {
+ // carico i parametri di configurazione x reset ODL...
+ string CHANGE_ODL_HOURS = getOptPar("CHANGE_ODL_IDLE_MIN");
+ string CHANGE_ODL_IDLE_MIN = getOptPar("CHANGE_ODL_IDLE_MIN");
+ if (!string.IsNullOrEmpty(CHANGE_ODL_HOURS) && !string.IsNullOrEmpty(CHANGE_ODL_IDLE_MIN))
+ {
+ int minOdlDurHours = -1;
+ int minPlcIdelMin = -1;
+ int.TryParse(CHANGE_ODL_HOURS, out minOdlDurHours);
+ int.TryParse(CHANGE_ODL_IDLE_MIN, out minPlcIdelMin);
+ // controllo parametri validi
+ if (minOdlDurHours > 0 && minPlcIdelMin > 0)
+ {
+ // leggo da server inizio ODL... se non multi 1 solo...
+ DateTime inizioOdl = DateTime.Now;
+ string rawDataInizio = "";
+ if (!isMulti)
+ {
+ rawDataInizio = callUrl(urlInizioOdlIob, true);
+ DateTime.TryParse(rawDataInizio, out inizioOdl);
+ }
+ else
+ {
+ DateTime tmpData = DateTime.Now;
+ // prendo il + vecchio...
+ foreach (var item in elencoMulti)
+ {
+ fullUrl = $"{urlInizioOdlIob}|{item}";
+ rawDataInizio = callUrl(fullUrl, true);
+ DateTime.TryParse(rawDataInizio, out tmpData);
+ inizioOdl = (tmpData < inizioOdl) ? tmpData : inizioOdl;
+ }
+ }
+ //verifico se sia scaduto...
+ if (inizioOdl.AddHours(minOdlDurHours) < adesso)
+ {
+ string rawIdle = "";
+ int idlePeriod = 0;
+ if (!isMulti)
+ {
+ // controllo SE sono fermo (spento o in manuale) per il periodo minimo richiesto...
+ rawIdle = callUrl(urlIdleTime, true);
+ int.TryParse(rawIdle, out idlePeriod);
+ }
+ else
+ {
+ int tmpIdle = 0;
+ // prendo il + grande...
+ foreach (var item in elencoMulti)
+ {
+ fullUrl = $"{urlIdleTime}|{item}";
+ rawIdle = callUrl(fullUrl, true);
+ int.TryParse(rawIdle, out tmpIdle);
+ idlePeriod = tmpIdle > idlePeriod ? tmpIdle : idlePeriod;
+ }
+ }
+ if (idlePeriod >= minPlcIdelMin)
+ {
+ /***************************************************
+ * Descrizione procedura (OK X SIMULATORI...)
+ *
+ * - chiamata su MP/IO
+ * - verifica che su DB sia abilitato AUTO ODL
+ * - il server inserisce un evento fine prod HW 1 minuto prima e inizio setup HW
+ * - viene duplicato e chiuso ODL corrente
+ * - viene fatto partire ODL nuovo ADESSO
+ * - num pezzi come ODL precedente (o da media 3 ODL precedenti)
+ * - conferme pezzi & co... gestione NULL (NON SERVONO si tratta di impianti SENZA gestione vera ODL)
+ * - reset contapezzi PLC locale...
+ *
+ *
+ *
+ * DA VALUTARE (x macchine tipo linea con + impianti... es valvital) SE
+ * - creare una gestione ALTERNATIVA sul server che preveda impianto LEADER e impianti follower (RIGIDAMENTE CONFIGURATI)
+ * - ogni volta che si fa setup LEADER --> si ripete su impianti FOLLOWER (eventi!!!)
+ * - viene fatto reset contapezzi sui follower (+ altre operazioni opzionali, ES imposstazione nome commessa, quantità, articolo...)
+ * - viene fatto reset + nuovo ODL (con stessi articoli e quantità) su follower, SENZA avere gestione x ODL di un codice esterno (quindi registra TUTTO ma NON RITORNERA' dati non avendo link verso esterno)
+ * - serve NUOVA TABELLA delle macchine LEADER | FOLLOWER (1:n) e gestione da MP/IO
+ *
+ ***************************************************/
+
+ string rawSplit = "";
+ // se multi gestisco il bit delle tavole...
+ if (!isMulti)
+ {
+ // invio chiamata URL x reset ODL su macchina
+ rawSplit = callUrl(urlForceSplit, false);
+ fatto = (rawSplit == "OK") ? true : false;
+ }
+ else
+ {
+ foreach (string item in elencoMulti)
+ {
+ // invio chiamata URL x reset ODL su macchina, ATTENZIONE scriviamo | al posto di "#" che in URL sarebbe filtrato...
+ fullUrl = $"{urlForceSplit}|{item}";
+ rawSplit = callUrl(fullUrl, true);
+ }
+ fatto = (rawSplit == "OK") ? true : false;
+ }
+
+ }
+ }
+ }
+ }
+ }
+ }
+ // loggo se fatto
+ if (fatto)
+ {
+ lg.Info($"Effettuato processAutoOdl");
+ }
}
///
/// Processo lettura dati sysinfo
diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs
index ed878c38..ba54a3f1 100644
--- a/IOB-WIN/IobMTC.cs
+++ b/IOB-WIN/IobMTC.cs
@@ -26,6 +26,10 @@ namespace IOB_WIN
///
protected MTConnectClient MTC_ref;
///
+ /// Gestione filtraggio dati
+ ///
+ protected bool enableDataFilter = false;
+ ///
/// URL x salvataggio elenco dataItems MTC
///
protected string urlSaveDataItems
@@ -56,6 +60,11 @@ namespace IOB_WIN
{
// gestione invio ritardato contapezzi
pzCountDelay = utils.CRI("pzCountDelay");
+ // gestione data filtering...
+ if (!string.IsNullOrEmpty(getOptPar("ENABLE_DATA_FILTER")))
+ {
+ bool.TryParse(getOptPar("ENABLE_DATA_FILTER"), out enableDataFilter);
+ }
lastPzCountSend = DateTime.Now;
lastWarnODL = DateTime.Now;
}
@@ -233,10 +242,18 @@ namespace IOB_WIN
break;
case MTConnect.DataItemCategory.SAMPLE:
uuid = $"S_{dataItem.Id}";
- threshDBand = 1;
- if (dataItem.Id.EndsWith("PosAct") || dataItem.Id.EndsWith("PosTgt"))
+ // SOLOS E è abilitato il datafiltering...
+ if (enableDataFilter)
{
- threshDBand = 5;
+ threshDBand = 1;
+ if (dataItem.Id.EndsWith("PosAct") || dataItem.Id.EndsWith("PosTgt"))
+ {
+ threshDBand = 5;
+ }
+ }
+ else
+ {
+ threshDBand = 0;
}
dSamplePeriod = 60;
break;
@@ -321,9 +338,14 @@ namespace IOB_WIN
///
protected bool checkSaveItem(MTConnectStreams.DataItem newValue)
{
- bool answ = false;
+ bool answ = !enableDataFilter;
+
if (newValue != null)
{
+ if (utils.CRB("verbose"))
+ {
+ lgInfo($"Richiesta checkSaveItem per {newValue} | id: {newValue.DataItemId} | CDATA: {newValue.CDATA}");
+ }
// verifico in memoria se ho l'oggetto condition ed il suo valore..
if (dataItemMem.ContainsKey(newValue.DataItemId))
{
@@ -333,6 +355,10 @@ namespace IOB_WIN
answ = true;
}
}
+ else
+ {
+ lgError("Attenzione: checkSaveItem con newValue null!");
+ }
return answ;
}
///
@@ -342,11 +368,15 @@ namespace IOB_WIN
///
protected bool checkSaveSample(MTConnectStreams.Sample newValue)
{
- bool answ = false;
+ bool answ = !enableDataFilter;
double oldVal = 0;
double newVal = 0;
if (newValue != null)
{
+ if (utils.CRB("verbose"))
+ {
+ lgInfo($"Richiesta checkSaveSample per {newValue} | id: {newValue.DataItemId} | CDATA: {newValue.CDATA}");
+ }
// verifico in memoria se ho l'oggetto condition ed il suo valore..
if (dataItemMem.ContainsKey(newValue.DataItemId))
{
@@ -365,6 +395,10 @@ namespace IOB_WIN
// controllo SE ho DeadBand...
if (dataItemMem[newValue.DataItemId].thresholdDeadBand > 0)
{
+ if (utils.CRB("verbose"))
+ {
+ lgInfo($"Test deadband: oldVal: {oldVal} | newVal: {newVal}");
+ }
// recupero i valori e testo DeadBand...
double.TryParse(dataItemMem[newValue.DataItemId].value.Replace(".", ","), out oldVal);
double.TryParse(newValue.CDATA.Replace(".", ","), out newVal);
@@ -385,6 +419,10 @@ namespace IOB_WIN
}
}
}
+ else
+ {
+ lgError("Attenzione: checkSaveItem con newValue null!");
+ }
return answ;
}
@@ -457,6 +495,13 @@ namespace IOB_WIN
{
accodaFLog(sVal, qEncodeFLog(locTStamp, descr, dataItem.CDATA));
}
+ else
+ {
+ if (utils.CRB("verbose"))
+ {
+ lgInfo($"NON ACCODATO sample poiché verifica variazioen ha dato esito negativo");
+ }
+ }
}
}
catch
@@ -752,6 +797,8 @@ namespace IOB_WIN
string currExe = "";
string currRun = "";
string currUnOpStatus = "";
+ string currGettoOn = "";
+ string currAbilAbras = "";
try
{
var exeMode = dataItemMem["Path_01_EXE_MODE"];
@@ -840,6 +887,19 @@ namespace IOB_WIN
lgInfo(string.Format("Trasformazione B_input: {0}", B_input));
}
}
+ ///
+ /// Verifica un DataItem e se il valore corrisponde a quello indicato come "true value" restituisce true
+ ///
+ ///
+ ///
+ ///
+ protected bool checkDataItem(string itemName, string trueVal)
+ {
+ bool answ = false;
+
+ return answ;
+ }
+
///
/// Recupero dati dinamici...
///
diff --git a/IOB-WIN/IobSimula.cs b/IOB-WIN/IobSimula.cs
index 37751b69..5ec73fd4 100644
--- a/IOB-WIN/IobSimula.cs
+++ b/IOB-WIN/IobSimula.cs
@@ -103,137 +103,6 @@ namespace IOB_WIN
}
setParamPlc();
}
- public override void processAutoOdl()
- {
- bool fatto = false;
- if (getOptPar("AUTO_CHANGE_ODL") != "")
- {
- string IOB_MULTI_CNAME = "";
- string[] elencoMulti = null;
- string fullUrl = "";
- if (isMulti)
- {
- // devo chiamare cambio ODL x OGNI tavola: mi servono i parametri opzionali...
- IOB_MULTI_CNAME = getOptPar("IOB_MULTI_CNAME");
- elencoMulti = IOB_MULTI_CNAME.Split(',');
- }
- // controllo SIA abilitato...
- bool doProc = false;
- DateTime adesso = DateTime.Now;
- bool.TryParse(getOptPar("AUTO_CHANGE_ODL"), out doProc);
- if (doProc)
- {
- // carico i parametri di configurazione x reset ODL...
- string CHANGE_ODL_HOURS = getOptPar("CHANGE_ODL_IDLE_MIN");
- string CHANGE_ODL_IDLE_MIN = getOptPar("CHANGE_ODL_IDLE_MIN");
- if (CHANGE_ODL_HOURS != "" && CHANGE_ODL_IDLE_MIN != "")
- {
- int minOdlDurHours = -1;
- int minPlcIdelMin = -1;
- int.TryParse(CHANGE_ODL_HOURS, out minOdlDurHours);
- int.TryParse(CHANGE_ODL_IDLE_MIN, out minPlcIdelMin);
- // controllo parametri validi
- if (minOdlDurHours > 0 && minPlcIdelMin > 0)
- {
- // leggo da server inizio ODL... se non multi 1 solo...
- DateTime inizioOdl = DateTime.Now;
- string rawDataInizio = "";
- if (!isMulti)
- {
- rawDataInizio = callUrl(urlInizioOdlIob, true);
- DateTime.TryParse(rawDataInizio, out inizioOdl);
- }
- else
- {
- DateTime tmpData = DateTime.Now;
- // prendo il + vecchio...
- foreach (var item in elencoMulti)
- {
- fullUrl = $"{urlInizioOdlIob}|{item}";
- rawDataInizio = callUrl(fullUrl, true);
- DateTime.TryParse(rawDataInizio, out tmpData);
- inizioOdl = (tmpData < inizioOdl) ? tmpData : inizioOdl;
- }
- }
- //verifico se sia scaduto...
- if (inizioOdl.AddHours(minOdlDurHours) < adesso)
- {
- string rawIdle = "";
- int idlePeriod = 0;
- if (!isMulti)
- {
- // controllo SE sono fermo (spento o in manuale) per il periodo minimo richiesto...
- rawIdle = callUrl(urlIdleTime, true);
- int.TryParse(rawIdle, out idlePeriod);
- }
- else
- {
- int tmpIdle = 0;
- // prendo il + grande...
- foreach (var item in elencoMulti)
- {
- fullUrl = $"{urlIdleTime}|{item}";
- rawIdle = callUrl(fullUrl, true);
- int.TryParse(rawIdle, out tmpIdle);
- idlePeriod = tmpIdle > idlePeriod ? tmpIdle : idlePeriod;
- }
- }
- if (idlePeriod >= minPlcIdelMin)
- {
- /***************************************************
- * Descrizione procedura (OK X SIMULATORI...)
- *
- * - chiamata su MP/IO
- * - verifica che su DB sia abilitato AUTO ODL
- * - il server inserisce un evento fine prod HW 1 minuto prima e inizio setup HW
- * - viene duplicato e chiuso ODL corrente
- * - viene fatto partire ODL nuovo ADESSO
- * - num pezzi come ODL precedente (o da media 3 ODL precedenti)
- * - conferme pezzi & co... gestione NULL (NON SERVONO si tratta di impianti SENZA gestione vera ODL)
- * - reset contapezzi PLC locale...
- *
- *
- *
- * DA VALUTARE (x macchine tipo linea con + impianti... es valvital) SE
- * - creare una gestione ALTERNATIVA sul server che preveda impianto LEADER e impianti follower (RIGIDAMENTE CONFIGURATI)
- * - ogni volta che si fa setup LEADER --> si ripete su impianti FOLLOWER (eventi!!!)
- * - viene fatto reset contapezzi sui follower (+ altre operazioni opzionali, ES imposstazione nome commessa, quantità, articolo...)
- * - viene fatto reset + nuovo ODL (con stessi articoli e quantità) su follower, SENZA avere gestione x ODL di un codice esterno (quindi registra TUTTO ma NON RITORNERA' dati non avendo link verso esterno)
- * - serve NUOVA TABELLA delle macchine LEADER | FOLLOWER (1:n) e gestione da MP/IO
- *
- ***************************************************/
-
- string rawSplit = "";
- // se multi gestisco il bit delle tavole...
- if (!isMulti)
- {
- // invio chiamata URL x reset ODL su macchina
- rawSplit = callUrl(urlForceSplit, false);
- fatto = (rawSplit == "OK") ? true : false;
- }
- else
- {
- foreach (string item in elencoMulti)
- {
- // invio chiamata URL x reset ODL su macchina, ATTENZIONE scriviamo | al posto di "#" che in URL sarebbe filtrato...
- fullUrl = $"{urlForceSplit}|{item}";
- rawSplit = callUrl(fullUrl, true);
- }
- fatto = (rawSplit == "OK") ? true : false;
- }
-
- }
- }
- }
- }
- }
- }
- // loggo se fatto
- if (fatto)
- {
- lg.Info($"Effettuato processAutoOdl");
- }
- }
///
/// Effettua reset del contapezzi
///
@@ -290,26 +159,6 @@ namespace IOB_WIN
answ += noise - (answ / 10);
return answ;
}
- ///
- /// Verifica se sia machcina multi = DoppioPallet da CONF
- ///
- public bool isMulti
- {
- get
- {
- bool answ = false;
- string keyName = "SIM_MULTI";
- if (cIobConf.optPar.Count > 0)
- {
- if (cIobConf.optPar.ContainsKey(keyName))
- {
- string SIM_MULTI = getOptPar(keyName);
- answ = SIM_MULTI == "1";
- }
- }
- return answ;
- }
- }
public override void tryConnect()
{
diff --git a/IOB-WIN/Resources/ChangeLog.html b/IOB-WIN/Resources/ChangeLog.html
index 471121c3..c5613b55 100644
--- a/IOB-WIN/Resources/ChangeLog.html
+++ b/IOB-WIN/Resources/ChangeLog.html
@@ -6,6 +6,13 @@
Note di rilascio:
+ -
+ v.2.5.* → v.2.6.*
+
+ - revisione sistema timeout Ping
+ - Gestione AutoODL in prod generale (non solo SIM)
+
+
-
v.2.4.* → v.2.5.*
diff --git a/Jenkinsfile b/Jenkinsfile
index c3763dfe..c0058760 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -16,9 +16,9 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
- withEnv(['NEXT_BUILD_NUMBER=547']) {
- // env.versionNumber = VersionNumber(versionNumberString : '2.5.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
- env.versionNumber = VersionNumber(versionNumberString : '2.5.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
+ withEnv(['NEXT_BUILD_NUMBER=551']) {
+ // env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
+ env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'MAPO-IOB-WIN'
}
}