diff --git a/IOB-UT-NEXT/Config/IobConfTree.cs b/IOB-UT-NEXT/Config/IobConfTree.cs
index 3fc607ba..da739d07 100644
--- a/IOB-UT-NEXT/Config/IobConfTree.cs
+++ b/IOB-UT-NEXT/Config/IobConfTree.cs
@@ -232,7 +232,6 @@ namespace IOB_UT_NEXT.Config
{
newConfObj.Device.IsMulti = fIni.ReadInteger("OPTPAR", "IS_MULTI", 0) == 1;
}
- //newConfObj.Device.IsMulti = Convert.ToBoolean(fIni.ReadString("OPTPAR", "IS_MULTI", "false")) || fIni.ReadInteger("OPTPAR", "IS_MULTI", 0) == 1;
}
exclOptPar.Add("IS_MULTI");
diff --git a/IOB-UT-NEXT/Iob/BaseObj.cs b/IOB-UT-NEXT/Iob/BaseObj.cs
index 78aebccd..b07dac9e 100644
--- a/IOB-UT-NEXT/Iob/BaseObj.cs
+++ b/IOB-UT-NEXT/Iob/BaseObj.cs
@@ -194,20 +194,13 @@ namespace IOB_UT_NEXT.Iob
///
/// Minimo numero di px da inviare in blocco
///
- public int minSendPzCountBlock = 5;
+ public int minSendPzCountBlock = 1;
///
/// Variabile booleana che indica se sia necessario fare refresh del contapezzi
///
public bool needRefreshPzCount = true;
-#if false
- ///
- /// Dizionario di persistenza per i valori da salvare da/su file
- ///
- public Dictionary persistenceLayer;
-#endif
-
///
/// Determina se utilizzare blocchi di memoria IOT contigui (e quindi processing
/// "monoblocco" semplificato"=
diff --git a/IOB-WIN-FORM/Iob/Simula.cs b/IOB-WIN-FORM/Iob/Simula.cs
index dcd60f11..8565c1f0 100644
--- a/IOB-WIN-FORM/Iob/Simula.cs
+++ b/IOB-WIN-FORM/Iob/Simula.cs
@@ -86,8 +86,8 @@ namespace IOB_WIN_FORM.Iob
int noise = rnd.Next(1, periodoMSec / 5);
periodoMSec += noise - (periodoMSec / 10);
}
- simPowerOnOff = false;
bool.TryParse(IOBConfFull.OptParGet("SIM_POW_ON_OFF"), out simPowerOnOff);
+ bool.TryParse(IOBConfFull.OptParGet("SIM_IS_SLAVE"), out simSlave);
int.TryParse(IOBConfFull.OptParGet("T_ON"), out tOn);
int.TryParse(IOBConfFull.OptParGet("T_OFF"), out tOff);
bit2 = setupSimPar("SIM_PZCNT");
@@ -357,13 +357,21 @@ namespace IOB_WIN_FORM.Iob
break;
case taskType.nihil:
- case taskType.fixStopSetup:
case taskType.sendWatchDogMes2Plc:
case taskType.startSetup:
case taskType.stopSetup:
taskVal = $"taskReq: {tName} | key: {item.Key} | val: {item.Value} | SKIPPED | NO EXEC";
break;
+ case taskType.fixStopSetup:
+ // ricevuto ad es forzatamente x macchine SLAVE, serve x fermare simulazione contapezzi
+ if (simSlave)
+ {
+ contapezziPLC = 0;
+ taskVal = "SLAVE: fixStopSetup --> RESET contapezziPLC";
+ }
+ break;
+
case taskType.forceResetPzCount:
// forzo sul SIM il valore a ZERO x l'IOB...
contapezziPLC = 0;
@@ -746,7 +754,12 @@ namespace IOB_WIN_FORM.Iob
///
/// BOOL: indica se simulare powerOn/Off (bit 0 e 1) compresi WarmUp e CoolDown
///
- protected bool simPowerOnOff;
+ protected bool simPowerOnOff = false;
+
+ ///
+ /// Indica se va simulata come SLAVE
+ ///
+ protected bool simSlave = false;
///
/// Simulazione effettuazione controlli utente
@@ -1069,63 +1082,83 @@ namespace IOB_WIN_FORM.Iob
// se il contapezzi è OLTRE il valore inviato....
if (contapezziPLC > contapezziIOB)
{
- string machName = "";
- if (isMulti)
+ bool doSend = true;
+ // se è slave gestione verifica se deve davvero inviare o c'è stato un reset e aspetta...
+ if (simSlave)
{
- machName = $"{IOBConfFull.General.CodIOB}|TAV_{nP}";
- }
- // invio SOLO SE sono OLTRE i numSim pz e li invio TUTTI in blocco
- if ((contapezziPLC - contapezziIOB) > minSendPzCountBlock)
- {
- sigPzCount = true;
- trySendPzCountBlock(machName);
- sigPzCount = false;
- }
- // altrimenti invio 1 segnale
- else
- {
- // se NON STAVA inviando di già...
- if (!sigPzCount)
+ // se idxOdl cambiato e contapezzi IOB resettato --> resetto...
+ int prevIdxOdl = currIdxODL;
+ pzCntReload(true);
+ bool changedOdl = prevIdxOdl != currIdxODL;
+ // anche se se variazione contapezzi oltre 1000--> resetto
+ bool countBigChange = contapezziPLC - contapezziIOB > 1000;
+ if (changedOdl || countBigChange)
{
- // segnalo BIT (1 pz)
- B_input += (1 << 2);
- sigPzCount = true;
- // salvo nuovo contapezzi (incremento di 1...) + richiesta refresh conteggio
- contapezziIOB++;
- needRefreshPzCount = true;
- // invio conferma contapezzi..
- string fullUrl = $"{urlSetPzCount}{contapezziIOB}";
- if (isMulti)
- {
- fullUrl = $"{urlSetPzCount.Replace(IOBConfFull.General.CodIOB, $"{IOBConfFull.General.CodIOB}|TAV_{nP}")}{contapezziPLC}";
- }
- string retVal = utils.callUrl(fullUrl);
- // verifica salvataggio
- if (retVal != contapezziIOB.ToString())
- {
- // errore salvataggio contapezzi
- lgInfo($"Errore salvataggio Contapezzi SIMULA 01: contapezziIOB {contapezziIOB} | risposta: {retVal}");
- // rileggo il counter pezzi da server
- pzCntReload(true, machName);
- }
+ contapezziPLC = contapezziIOB;
+ doSend = false;
}
+
+ }
+ if (doSend)
+ {
+ string machName = "";
+ if (isMulti)
+ {
+ machName = $"{IOBConfFull.General.CodIOB}|TAV_{nP}";
+ }
+ // invio SOLO SE sono OLTRE i numSim pz e li invio TUTTI in blocco
+ if ((contapezziPLC - contapezziIOB) > minSendPzCountBlock)
+ {
+ sigPzCount = true;
+ trySendPzCountBlock(machName);
+ sigPzCount = false;
+ }
+ // altrimenti invio 1 segnale
else
{
- string retVal = utils.callUrl($"{urlSetPzCount}{contapezziIOB}");
- if (retVal != contapezziIOB.ToString())
+ // se NON STAVA inviando di già...
+ if (!sigPzCount)
{
- // errore salvataggio contapezzi
- lgInfo($"Errore salvataggio Contapezzi SIMULA 02: contapezziIOB {contapezziIOB} | risposta: {retVal}");
- if (!isMulti)
+ // segnalo BIT (1 pz)
+ B_input += (1 << 2);
+ sigPzCount = true;
+ // salvo nuovo contapezzi (incremento di 1...) + richiesta refresh conteggio
+ contapezziIOB++;
+ needRefreshPzCount = true;
+ // invio conferma contapezzi..
+ string fullUrl = $"{urlSetPzCount}{contapezziIOB}";
+ if (isMulti)
{
+ fullUrl = $"{urlSetPzCount.Replace(IOBConfFull.General.CodIOB, $"{IOBConfFull.General.CodIOB}|TAV_{nP}")}{contapezziPLC}";
+ }
+ string retVal = utils.callUrl(fullUrl);
+ // verifica salvataggio
+ if (retVal != contapezziIOB.ToString())
+ {
+ // errore salvataggio contapezzi
+ lgInfo($"Errore salvataggio Contapezzi SIMULA 01: contapezziIOB {contapezziIOB} | risposta: {retVal}");
// rileggo il counter pezzi da server
pzCntReload(true, machName);
}
}
- sigPzCount = false;
+ else
+ {
+ string retVal = utils.callUrl($"{urlSetPzCount}{contapezziIOB}");
+ if (retVal != contapezziIOB.ToString())
+ {
+ // errore salvataggio contapezzi
+ lgInfo($"Errore salvataggio Contapezzi SIMULA 02: contapezziIOB {contapezziIOB} | risposta: {retVal}");
+ if (!isMulti)
+ {
+ // rileggo il counter pezzi da server
+ pzCntReload(true, machName);
+ }
+ }
+ sigPzCount = false;
+ }
}
+ lgInfo($"S01: Valori contatori: contapezzi macchina contapezziPLC: {contapezziPLC} | contapezziIOB: {contapezziIOB} | contapezziPLC > contapezziIOB");
}
- lgInfo($"S01: Valori contatori: contapezzi macchina contapezziPLC: {contapezziPLC} | contapezziIOB: {contapezziIOB} | contapezziPLC > contapezziIOB");
}
}
else
diff --git a/IOB-WIN-OPC-UA/App.config b/IOB-WIN-OPC-UA/App.config
index d0759166..b30aa4d9 100644
--- a/IOB-WIN-OPC-UA/App.config
+++ b/IOB-WIN-OPC-UA/App.config
@@ -34,7 +34,7 @@
-
+
@@ -46,7 +46,7 @@
-
+
diff --git a/IOB-WIN-OPC-UA/IobOpc/OpcUa.cs b/IOB-WIN-OPC-UA/IobOpc/OpcUa.cs
index 82655bbc..3812ffd6 100644
--- a/IOB-WIN-OPC-UA/IobOpc/OpcUa.cs
+++ b/IOB-WIN-OPC-UA/IobOpc/OpcUa.cs
@@ -143,7 +143,21 @@ namespace IOB_WIN_OPC_UA.IobOpc
// imposto veto per vetoSeconds...
vetoCheckStatus = adesso.AddSeconds(vetoSeconds * 2);
}
- //currCheckErrors++;
+ // provo a riaggiungere... rivedere...
+#if false
+ int dSamplePeriod = 0;
+ float threshDBand = 0;
+ string uuid = "";
+ // formatto
+ OpcUaDataItemExt newItem = formatDataItem(ref dSamplePeriod, ref threshDBand, ref uuid, item);
+ currCheckErrors++;
+ // sistemo valore/periodo
+ newItem.value = $"";
+ newItem.valueTimestamp = adesso;
+ // aggiungo
+ dataItemMem.Add(uuid, newItem);
+ sendDataItemListToServer(dataItem.StartNodeId);
+#endif
}
else
{
@@ -181,6 +195,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
else
{
+ //numErroriCheck = numErroriCheck > 5 ? numErroriCheck-=5 : 0;
+ //numErroriCheck = numErroriCheck > 5 ? numErroriCheck-=5 : 0;
numErroriCheck = numErroriCheck > 0 ? numErroriCheck-- : 0;
}
// se supero soglia errori lettura --> disconnetto e resetto
@@ -494,6 +510,10 @@ namespace IOB_WIN_OPC_UA.IobOpc
lgError($"Errore in decodifica valore contapezzi da {opcUaParams.keyPartCount} | valore vuoto!");
}
+ // controllo comunque, se è ZERO il contapezzi, e sul server è maggiore il
+ // valore x ODL e NON abilitato il trigger reset --> abilito trigger...
+ if (!pzCountResetted && contapezziPLC <= IOBConfFull.Odl.ResetCountMaxPost && contapezziIOB >= IOBConfFull.Odl.ResetCountMinPre)
+ {
// controllo comunque, se è ZERO il contapezzi, e sul server è maggiore il
// valore x ODL e NON abilitato il trigger reset --> abilito trigger...
if (!pzCountResetted && contapezziPLC <= IOBConfFull.Odl.ResetCountMaxPost && contapezziIOB >= IOBConfFull.Odl.ResetCountMinPre)
@@ -504,6 +524,11 @@ namespace IOB_WIN_OPC_UA.IobOpc
// log
lgInfo($"Rilevato Reset Contapezzi PLC 02 | PLC = {contapezziPLC} <= {IOBConfFull.Odl.ResetCountMaxPost} | IOB = {contapezziIOB} >= {IOBConfFull.Odl.ResetCountMinPre}) | pzCountResetted = true");
}
+ // incremento contatore richiesta
+ countKeyRichiesta = countKeyRichiesta + 1;
+ // log
+ lgInfo($"Rilevato Reset Contapezzi PLC 02 | PLC = {contapezziPLC} <= {IOBConfFull.Odl.ResetCountMaxPost} | IOB = {contapezziIOB} >= {IOBConfFull.Odl.ResetCountMinPre}) | pzCountResetted = true");
+ }
// 2025.03.05 calcolo condizione contapezzi con NUOVO CONF
if (IOBConfFull.Odl.ChangeOnResetCount)
@@ -1587,6 +1612,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
else
{
+ // fixMet - todo: non trova word 0 allarmi....
// registro non trovato da aggiungere...
lgInfo($"DataItem non trovato in checkSaveValue: {uuid}");
// provo a creare oggetto in memoria...
diff --git a/IOB-WIN-PING/DATA/CONF/MAIN.ini b/IOB-WIN-PING/DATA/CONF/MAIN.ini
index 43299be3..78b89df6 100644
--- a/IOB-WIN-PING/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-PING/DATA/CONF/MAIN.ini
@@ -13,49 +13,12 @@ CMDIOB2CALL=/IOB/getIob2call?GWIP=
;Client Install
CLI_INST=SteamWareSim
-[IOB]
-;--- TEST sul campo
-; SIMULAZIONE verso server ufficio
-;STARTLIST=SIMUL_01,SIMUL_02,SIMUL_03,SIMUL_04
-;STARTLIST=PIZ09
-;STARTLIST=VL25
-;STARTLIST=SIMUL_03
-;STARTLIST=GIACO_CEDAX_001
-;STARTLIST=GIACO_ICOEL_002
-;STARTLIST=GIACO_CENTERFRIGO
-;STARTLIST=GIACO_NWSE
-;STARTLIST=SIM_DP_01
-;STARTLIST=WPS
-;STARTLIST=FINASSI_HELPI_01
-;STARTLIST=FINASSI_OMP_01
-;STARTLIST=BAGLIETTO_CIMOLAI_01
-;STARTLIST=GIACO_SAIM_003
-;STARTLIST=PIZ09
-;STARTLIST=IMI_RIMOR_SAB_01
-;STARTLIST=IMI_RIMOR_SAB_02
-;STARTLIST=IMI_RIMOR_VER_01
-;STARTLIST=IMI_RIMOR_VER_02
-;STARTLIST=IMI_PAMA_392
-;STARTLIST=Tend_FIMAT_01
-;STARTLIST=PIZ10
-;STARTLIST=IMI_SOITAAB_Z2342_02
-;STARTLIST=IMI_GOMBA
-;STARTLIST=SIMUL_02
-;STARTLIST=SIM_DP_01
-;STARTLIST=FTP_SONATEST
-;STARTLIST=L020
+[IOB]
;STARTLIST=PING
-;STARTLIST=VL27
-
-;NB: mettere copy always ai file di conf x fare test...
-;STARTLIST=2014
-;STARTLIST=Tend_RAMA_10_47
;STARTLIST=3024-PING
-;STARTLIST=2015
-;STARTLIST=3024
;STARTLIST=SIMUL_01
-;STARTLIST=WPS
-STARTLIST=FTP-PING
+;STARTLIST=FTP-PING
+STARTLIST=SIMUL_08
MAXCNC=10
\ No newline at end of file
diff --git a/IOB-WIN-PING/DATA/CONF/SIMUL_07.ini b/IOB-WIN-PING/DATA/CONF/SIMUL_07.ini
new file mode 100644
index 00000000..f9b19360
--- /dev/null
+++ b/IOB-WIN-PING/DATA/CONF/SIMUL_07.ini
@@ -0,0 +1,105 @@
+;Configurazione IOB-WIN
+[IOB]
+CNCTYPE=SIMULA
+PING_MS_TIMEOUT=500
+MinDeltaSec=5
+EnableRedisQueue=true
+
+[MACHINE]
+VENDOR=STEAMWARE
+MODEL=DEMO_SIMULATOR
+
+[CNC]
+IP=127.0.0.1
+PORT=0000
+
+[SERVER]
+MPIP=http://10.74.82.218
+MPURL=/MP/IO
+CMDBASE=/IOB/input/
+CMDFLOG=/IOB/flog/
+CMDALIVE=/IOB
+CMDENABLED=/IOB/enabled/
+CMDADV1=?valore=
+CMDREBO=/sendReboot.aspx?idxMacchina=
+CMD_ODL_STARTED=/IOB/getCurrOdlStart/
+CMD_FORCLE_SPLIT_ODL=/IOB/forceSplitOdlFull/
+CMD_IDLE_TIME=/IOB/getIdlePeriod/
+
+[MEMORY]
+
+[BLINK]
+MAX_COUNTER_BLINK = 15
+BLINK_FILT=0
+
+[OPTPAR]
+AUTO_CHANGE_ODL=true
+AUTO_SNAPSHOT_DOSSIER=false
+CHANGE_ODL_HOURS=24
+CHANGE_ODL_IDLE_MIN=0
+CHANGE_ODL_MODE=SIMUL
+; gestione custom timer
+timerIntMs=200
+;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
+PZCOUNT_MODE=BIT
+ENABLE_PZ_RESET=TRUE
+; per il simulatore: 50|1 = WAIT 50, DURATION 1 con riferimento al PERIODO base (PER_BASE in ms, default 10 secondi)
+PER_BASE=9900
+SIM_PZCNT=13|1
+SIM_ALARM=200|20
+SIM_MANU=150|3
+; indica gestione e simulazione bit 5 --> slow
+SIM_SLOW=2500|20
+; indica gestione e simulazione bit 6 --> warmup/cooldown
+SIM_WUCD=8000|20
+; indica gestione e simulazione bit 7 --> emergenza
+SIM_EMRG=4000|10
+; indica simulazione delle funzionalit� power ON/ OFF
+SIM_POW_ON_OFF=false
+T_ON=6
+T_OFF=22
+; indica simulazione controlli utente
+SIM_RC=87|1
+; indica simulazione registro scarti
+SIM_RS=167|1
+; indica simulazione dichiarazioni (note) utente
+SIM_DICH=267|1
+; indica matricola opr simulata
+SIM_MATR_OPR=1
+
+; gestione DynData simulati
+ENABLE_DYN_DATA=TRUE
+FORCE_DYN_DATA=TRUE
+NEW_DYN_DATA=TRUE
+;gestione invio pezzi in blocco
+ENABLE_SEND_PZC_BLOCK=TRUE
+MIN_SEND_PZC_BLOCK=5
+MAX_SEND_PZC_BLOCK=200
+MIN_DURATA_ODL=960
+; indica parametri gestione TcMan
+TC_MAX_TC_FACTOR=3.9
+TC_LAMBDA=0.4
+TC_MAX_INCR=5
+MAX_PZ_INCR_PERC=1000
+; conf parametri memoria READ/WRITE
+PARAM_CONF=SIMUL_07.json
+
+;conf test FTP
+FTP_SERVER=ftp.steamware.net
+FTP_USER=testftpuser
+FTP_PWD=we4reFromB3rghem!
+FTP_CERT=
+FTP_SKIP=TRUE
+FTP_LOC_DIR=temp\csv
+FTP_REM_DIR=
+
+
+[BRANCH]
+NAME=master
+
+; Tags manuali
+[TAGS]
+Customer=Steamware
+HostOS=WIN
+HostName=IOB-WIN-SIMULA
+HostAddr=10.74.82.76
diff --git a/IOB-WIN-PING/DATA/CONF/SIMUL_07.json b/IOB-WIN-PING/DATA/CONF/SIMUL_07.json
new file mode 100644
index 00000000..1f8c45f1
--- /dev/null
+++ b/IOB-WIN-PING/DATA/CONF/SIMUL_07.json
@@ -0,0 +1,103 @@
+{
+ "mMapWrite": {
+ "setArt": {
+ "name": "setArt",
+ "description": "Articolo",
+ "memAddr": "DB150.DBB12",
+ "tipoMem": "String",
+ "index": 12,
+ "size": 20,
+ "displOrdinal": 1
+ },
+ "setComm": {
+ "name": "setComm",
+ "description": "Commessa",
+ "memAddr": "DB150.DBB32",
+ "tipoMem": "String",
+ "index": 32,
+ "size": 20,
+ "displOrdinal": 2
+ },
+ "setPzComm": {
+ "name": "setPzComm",
+ "description": "Qta Richiesta",
+ "memAddr": "DB150.DBB8",
+ "tipoMem": "Int",
+ "index": 8,
+ "size": 4,
+ "displOrdinal": 3
+ },
+ "forceSetPzCount": {
+ "name": "forceSetPzCount",
+ "description": "Imposta Qta",
+ "memAddr": "DB150.DBB8",
+ "tipoMem": "Int",
+ "index": 8,
+ "size": 4,
+ "displOrdinal": 11
+ }
+ },
+ "mMapRead": {
+ "TEMP_01": {
+ "name": "TEMP_01",
+ "description": "Temperatura 01",
+ "tipoMem": "Real",
+ "minVal": 18,
+ "maxVal": 24,
+ "displOrdinal": 4
+ },
+ "POWER_01": {
+ "name": "POWER_01",
+ "description": "Potenza impianto",
+ "tipoMem": "Int",
+ "minVal": 40,
+ "maxVal": 80,
+ "displOrdinal": 5
+ },
+ "FEED_OVER": {
+ "name": "FEED_OVER",
+ "description": "FEED override",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 100,
+ "displOrdinal": 6
+ },
+ "RAPID_OVER": {
+ "name": "RAPID_OVER",
+ "description": "RAPID override",
+ "tipoMem": "Int",
+ "minVal": 50,
+ "maxVal": 120,
+ "displOrdinal": 7
+ },
+ "POS_X": {
+ "name": "POS_X",
+ "description": "Asse X",
+ "tipoMem": "Int",
+ "minVal": -2000,
+ "maxVal": 2000,
+ "displOrdinal": 8
+ },
+ "POS_Y": {
+ "name": "POS_Y",
+ "description": "Asse Y",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 2000,
+ "displOrdinal": 9
+ },
+ "POS_Z": {
+ "name": "POS_Z",
+ "description": "Asse Z",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 1500,
+ "displOrdinal": 10
+ }
+ },
+ "optKVP": {
+ "fluxLogReduce": true,
+ "fluxLogRedDeadBand": 2.5,
+ "fluxLogResendPeriod": 30,
+ }
+}
\ No newline at end of file
diff --git a/IOB-WIN-PING/DATA/CONF/SIMUL_08.ini b/IOB-WIN-PING/DATA/CONF/SIMUL_08.ini
new file mode 100644
index 00000000..7c411eb6
--- /dev/null
+++ b/IOB-WIN-PING/DATA/CONF/SIMUL_08.ini
@@ -0,0 +1,104 @@
+;Configurazione IOB-WIN
+[IOB]
+CNCTYPE=SIMULA
+PING_MS_TIMEOUT=500
+MinDeltaSec=5
+EnableRedisQueue=true
+
+[MACHINE]
+VENDOR=STEAMWARE
+MODEL=DEMO_SIMULATOR
+
+[CNC]
+IP=127.0.0.1
+PORT=0000
+
+[SERVER]
+MPIP=http://10.74.82.218
+MPURL=/MP/IO
+CMDBASE=/IOB/input/
+CMDFLOG=/IOB/flog/
+CMDALIVE=/IOB
+CMDENABLED=/IOB/enabled/
+CMDADV1=?valore=
+CMDREBO=/sendReboot.aspx?idxMacchina=
+CMD_ODL_STARTED=/IOB/getCurrOdlStart/
+CMD_FORCLE_SPLIT_ODL=/IOB/forceSplitOdlFull/
+CMD_IDLE_TIME=/IOB/getIdlePeriod/
+
+[MEMORY]
+
+[BLINK]
+MAX_COUNTER_BLINK = 15
+BLINK_FILT=0
+
+[OPTPAR]
+AUTO_CHANGE_ODL=false
+AUTO_SNAPSHOT_DOSSIER=false
+CHANGE_ODL_HOURS=48
+CHANGE_ODL_IDLE_MIN=10
+; gestione custom timer
+timerIntMs=200
+;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
+PZCOUNT_MODE=BIT
+ENABLE_PZ_RESET=TRUE
+; per il simulatore: 50|1 = WAIT 50, DURATION 1 con riferimento al PERIODO base (PER_BASE in ms, default 10 secondi)
+PER_BASE=9800
+SIM_IS_SLAVE=TRUE
+SIM_PZCNT=13|1
+SIM_ALARM=200|10
+SIM_MANU=130|3
+; indica gestione e simulazione bit 5 --> slow
+SIM_SLOW=2500|20
+; indica gestione e simulazione bit 6 --> warmup/cooldown
+SIM_WUCD=8000|20
+; indica gestione e simulazione bit 7 --> emergenza
+SIM_EMRG=4000|10
+; indica simulazione delle funzionalit� power ON/ OFF
+SIM_POW_ON_OFF=false
+T_ON=6
+T_OFF=22
+; indica simulazione controlli utente
+SIM_RC=88|1
+; indica simulazione registro scarti
+SIM_RS=168|1
+; indica simulazione dichiarazioni (note) utente
+SIM_DICH=268|1
+; indica matricola opr simulata
+SIM_MATR_OPR=1
+
+; gestione DynData simulati
+ENABLE_DYN_DATA=TRUE
+FORCE_DYN_DATA=TRUE
+NEW_DYN_DATA=TRUE
+;gestione invio pezzi in blocco
+ENABLE_SEND_PZC_BLOCK=TRUE
+MIN_SEND_PZC_BLOCK=5
+MAX_SEND_PZC_BLOCK=200
+MIN_DURATA_ODL=960
+; indica parametri gestione TcMan
+TC_MAX_TC_FACTOR=3.9
+TC_LAMBDA=0.4
+TC_MAX_INCR=5
+MAX_PZ_INCR_PERC=1000
+; conf parametri memoria READ/WRITE
+PARAM_CONF=SIMUL_08.json
+
+;conf test FTP
+FTP_SERVER=ftp.steamware.net
+FTP_USER=testftpuser
+FTP_PWD=we4reFromB3rghem!
+FTP_CERT=
+FTP_SKIP=TRUE
+FTP_LOC_DIR=temp\csv
+FTP_REM_DIR=
+
+[BRANCH]
+NAME=master
+
+; Tags manuali
+[TAGS]
+Customer=Steamware
+HostOS=WIN
+HostName=IOB-WIN-SIMULA
+HostAddr=10.74.82.76
diff --git a/IOB-WIN-PING/DATA/CONF/SIMUL_08.json b/IOB-WIN-PING/DATA/CONF/SIMUL_08.json
new file mode 100644
index 00000000..1f8c45f1
--- /dev/null
+++ b/IOB-WIN-PING/DATA/CONF/SIMUL_08.json
@@ -0,0 +1,103 @@
+{
+ "mMapWrite": {
+ "setArt": {
+ "name": "setArt",
+ "description": "Articolo",
+ "memAddr": "DB150.DBB12",
+ "tipoMem": "String",
+ "index": 12,
+ "size": 20,
+ "displOrdinal": 1
+ },
+ "setComm": {
+ "name": "setComm",
+ "description": "Commessa",
+ "memAddr": "DB150.DBB32",
+ "tipoMem": "String",
+ "index": 32,
+ "size": 20,
+ "displOrdinal": 2
+ },
+ "setPzComm": {
+ "name": "setPzComm",
+ "description": "Qta Richiesta",
+ "memAddr": "DB150.DBB8",
+ "tipoMem": "Int",
+ "index": 8,
+ "size": 4,
+ "displOrdinal": 3
+ },
+ "forceSetPzCount": {
+ "name": "forceSetPzCount",
+ "description": "Imposta Qta",
+ "memAddr": "DB150.DBB8",
+ "tipoMem": "Int",
+ "index": 8,
+ "size": 4,
+ "displOrdinal": 11
+ }
+ },
+ "mMapRead": {
+ "TEMP_01": {
+ "name": "TEMP_01",
+ "description": "Temperatura 01",
+ "tipoMem": "Real",
+ "minVal": 18,
+ "maxVal": 24,
+ "displOrdinal": 4
+ },
+ "POWER_01": {
+ "name": "POWER_01",
+ "description": "Potenza impianto",
+ "tipoMem": "Int",
+ "minVal": 40,
+ "maxVal": 80,
+ "displOrdinal": 5
+ },
+ "FEED_OVER": {
+ "name": "FEED_OVER",
+ "description": "FEED override",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 100,
+ "displOrdinal": 6
+ },
+ "RAPID_OVER": {
+ "name": "RAPID_OVER",
+ "description": "RAPID override",
+ "tipoMem": "Int",
+ "minVal": 50,
+ "maxVal": 120,
+ "displOrdinal": 7
+ },
+ "POS_X": {
+ "name": "POS_X",
+ "description": "Asse X",
+ "tipoMem": "Int",
+ "minVal": -2000,
+ "maxVal": 2000,
+ "displOrdinal": 8
+ },
+ "POS_Y": {
+ "name": "POS_Y",
+ "description": "Asse Y",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 2000,
+ "displOrdinal": 9
+ },
+ "POS_Z": {
+ "name": "POS_Z",
+ "description": "Asse Z",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 1500,
+ "displOrdinal": 10
+ }
+ },
+ "optKVP": {
+ "fluxLogReduce": true,
+ "fluxLogRedDeadBand": 2.5,
+ "fluxLogResendPeriod": 30,
+ }
+}
\ No newline at end of file
diff --git a/IOB-WIN-PING/DATA/HIST/.placeholder b/IOB-WIN-PING/DATA/HIST/.placeholder
deleted file mode 100644
index 5f282702..00000000
--- a/IOB-WIN-PING/DATA/HIST/.placeholder
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/IOB-WIN-PING/IOB-WIN-PING.csproj b/IOB-WIN-PING/IOB-WIN-PING.csproj
index d1efb61a..69c6f53e 100644
--- a/IOB-WIN-PING/IOB-WIN-PING.csproj
+++ b/IOB-WIN-PING/IOB-WIN-PING.csproj
@@ -142,6 +142,14 @@
Resources.resx
True
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
Always
@@ -179,9 +187,6 @@
Always
-
- Always
-