diff --git a/IOB-WIN/DATA/CONF/SIMUL_01.ini b/IOB-WIN/DATA/CONF/SIMUL_01.ini
index 8c7dbaab..302a4b62 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_01.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_01.ini
@@ -31,10 +31,16 @@ BLINK_FILT=0
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
PZCOUNT_MODE=BIT
; per il simulatore: 50|1 = WAIT 50, DURATION 1 con riferimento al PERIODO base (PER_BASE in ms, default 1 secondo)
-PER_BASE=1200
+PER_BASE=1200
SIM_PZCNT=5|1
-SIM_ALARM=1000|20
+SIM_ALARM=1000|20
SIM_MANU=50|6
+; indica gestione e simulazione bit 5 --> slow/emergenza
+SIM_SLOW=500|20
+; indica simulazione delle funzionalità power ON/ OFF
+SIM_POW_ON_OFF=true
+SIM_MIN_WU_CD=20
+SIM_POFF=440
[BRANCH]
NAME=master
\ No newline at end of file
diff --git a/IOB-WIN/DATA/CONF/SIMUL_02.ini b/IOB-WIN/DATA/CONF/SIMUL_02.ini
index d7a5d448..55b057d3 100644
--- a/IOB-WIN/DATA/CONF/SIMUL_02.ini
+++ b/IOB-WIN/DATA/CONF/SIMUL_02.ini
@@ -34,7 +34,13 @@ PZCOUNT_MODE=BIT
PER_BASE=1500
SIM_PZCNT=8|1
SIM_ALARM=900|15
-SIM_MANU=40|5
+SIM_MANU=40|5
+; indica gestione e simulazione bit 5 --> slow/emergenza
+SIM_SLOW=500|20
+; indica simulazione delle funzionalità power ON/ OFF
+SIM_POW_ON_OFF=true
+SIM_MIN_WU_CD=20
+SIM_POFF=440
[BRANCH]
NAME=master
\ No newline at end of file
diff --git a/IOB-WIN/DATA/CONF/SIM_DP_01.ini b/IOB-WIN/DATA/CONF/SIM_DP_01.ini
index 44a2d087..f52415cd 100644
--- a/IOB-WIN/DATA/CONF/SIM_DP_01.ini
+++ b/IOB-WIN/DATA/CONF/SIM_DP_01.ini
@@ -31,12 +31,18 @@ BLINK_FILT=0
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
PZCOUNT_MODE=BIT
; per il simulatore: 50|1 = WAIT 50, DURATION 1 con riferimento al PERIODO base (PER_BASE in ms, default 1 secondo)
-PER_BASE=800
+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
-SIM_MULTI=1
+SIM_MULTI=1
+; indica gestione e simulazione bit 5 --> slow/emergenza
+SIM_SLOW=500|20
+; indica simulazione delle funzionalità power ON/ OFF
+SIM_POW_ON_OFF=true
+SIM_MIN_WU_CD=20
+SIM_POFF=440
[BRANCH]
diff --git a/IOB-WIN/IobSimula.cs b/IOB-WIN/IobSimula.cs
index 30a362d0..3c425d56 100644
--- a/IOB-WIN/IobSimula.cs
+++ b/IOB-WIN/IobSimula.cs
@@ -37,6 +37,18 @@ namespace IOB_WIN
///
protected int periodoMSec = 1000;
///
+ /// BOOL: indica se simulare powerOn/Off (bit 0 e 1) compresi WarmUp e CoolDown
+ ///
+ protected bool simPowerOnOff;
+ ///
+ /// valore in minuti della durata dei cicli PowerOff / WarmUp
+ ///
+ protected int min_WU_CD = 20;
+ ///
+ /// valore in minuti della durata dei cicli PowerOff / WarmUp
+ ///
+ protected int min_POFF = 440;
+ ///
/// Parametri simulazione oscillazione bit 2
///
protected simPar bit2;
@@ -49,6 +61,10 @@ namespace IOB_WIN
///
protected simPar bit4;
///
+ /// Parametri simulazione oscillazione bit 5
+ ///
+ protected simPar bit5;
+ ///
/// ultimo controllo decremento eventi
///
protected DateTime lastEvCheck;
@@ -75,9 +91,14 @@ namespace IOB_WIN
int noise = rnd.Next(1, periodoMSec / 5);
periodoMSec += noise - (periodoMSec / 10);
}
+ simPowerOnOff = false;
+ bool.TryParse(cIobConf.optPar["SIM_POW_ON_OFF"], out simPowerOnOff);
+ int.TryParse(cIobConf.optPar["SIM_MIN_WU_CD"], out min_WU_CD);
+ int.TryParse(cIobConf.optPar["SIM_POFF"], out min_POFF);
bit2 = setupSimPar("SIM_PZCNT");
bit3 = setupSimPar("SIM_ALARM");
bit4 = setupSimPar("SIM_MANU");
+ bit4 = setupSimPar("SIM_SLOW");
}
}
///
@@ -194,92 +215,137 @@ namespace IOB_WIN
// di base macchina in RUN
B_input = 3;
- if (bit3.wait <= 0)
+ /*----------------------------------------
+ * Simulazione segnali con priorità:
+ * - Power ON / OFF (bit0/1)
+ * - ALLARMI
+ * - SLOW
+ * - MANUALE
+ * - contapezzi
+ *
+ *----------------------------------------*/
+
+ // se simulo PowerOn/Off --> spegnimento con CoolDown e accensione con WarmUp.. avvio dopo le 22...
+ if (simPowerOnOff)
{
- // segnalo BIT
- B_input += (1 << 3);
- // decremento duration
- bit3.duration--;
- // controllo se sia scaduta la duration... in quel caso reset...
- if (bit3.duration <= 0)
+ DateTime adesso = DateTime.Now;
+ // se l'orario è dopo le 22 --> NO RUN...
+ if (adesso.Hour >= 22 || adesso.Hour <= 6)
{
- bit3 = setupSimPar("SIM_ALARM");
- }
- }
- else if (bit4.wait <= 0)
- {
- // segnalo BIT
- B_input += (1 << 4);
- // decremento duration
- bit4.duration--;
- // controllo se sia scaduta la duration... in quel caso reset...
- if (bit4.duration <= 0)
- {
- bit4 = setupSimPar("SIM_MANU");
- }
- }
- else if (bit2.wait <= 0)
- {
- // se multipallet --> cP a zero!
- if (isMulti)
- {
- cP = 0;
- }
- // se NON Multi fa contapezzi...
- else
- {
- // segnalo BIT
- B_input += (1 << 2);
- }
- // decremento duration
- bit2.duration--;
- // controllo se sia scaduta la duration... in quel caso reset...
- if (bit2.duration <= 0)
- {
- bit2 = setupSimPar("SIM_PZCNT");
- // salvo nuovo contapezzi (incremento di 1...)
- contapezzi++;
- sendContapezzi = true;
- // registro contapezzi
- lgInfo(string.Format("Contapezzi SIMULAZIONE: {0}", contapezzi));
- }
- if (sendContapezzi)
- {
- // controllo se ALMENO sia pingabile il server
- if (checkServerAlive)
+ // se prima mezz'ora è ancora accesa NON in run...
+ if (adesso.AddMinutes(-min_WU_CD).Hour < 22 || adesso.AddMinutes(min_WU_CD).Hour > 6)
{
- // invio a server contapezzi (aggiornato)
- string retVal = utils.callUrl(urlSetPzCount + contapezzi.ToString());
- // verifica se tutto OK
- if (retVal != "OK")
- {
- // errore salvataggio contapezzi
- lgInfo(string.Format("Errore salvataggio Contapezzi SIMULAZIONE {0} | Errore salvataggio: {1}", contapezzi, retVal));
- }
- // resetto timer...
- lastPzCountSend = DateTime.Now;
+ B_input = 1;
+ }
+ else
+ {
+ B_input = 0;
}
}
}
- // se multi gestisco il bit delel tavole...
- if (isMulti)
+ // questa aprte la processo SOLO SE sono in run --> B_input == 3
+ if (B_input == 3)
{
- // se sono in fase di fronte d'usita (invio contapezzi) INVERTO nP...
- if (sendContapezzi)
+ if (bit3.wait <= 0)
{
- nP = nP == 1 ? 2 : 1;
- // assegno a cP il valore nP...
- cP = nP;
+ // segnalo BIT
+ B_input += (1 << 3);
+ // decremento duration
+ bit3.duration--;
+ // controllo se sia scaduta la duration... in quel caso reset...
+ if (bit3.duration <= 0)
+ {
+ bit3 = setupSimPar("SIM_ALARM");
+ }
}
- // se cP > 0 --> segnalo bit tavola...
- if (cP == 1)
+ else if (bit4.wait <= 0)
{
- B_input += (1 << 6);
+ // segnalo BIT
+ B_input += (1 << 4);
+ // decremento duration
+ bit4.duration--;
+ // controllo se sia scaduta la duration... in quel caso reset...
+ if (bit4.duration <= 0)
+ {
+ bit4 = setupSimPar("SIM_MANU");
+ }
}
- else if (cP == 2)
+ else if (bit5.wait <= 0)
{
- B_input += (1 << 7);
+ // segnalo BIT
+ B_input += (1 << 5);
+ // decremento duration
+ bit5.duration--;
+ // controllo se sia scaduta la duration... in quel caso reset...
+ if (bit5.duration <= 0)
+ {
+ bit5 = setupSimPar("SIM_SLOW");
+ }
+ }
+ else if (bit2.wait <= 0)
+ {
+ // se multipallet --> cP a zero!
+ if (isMulti)
+ {
+ cP = 0;
+ }
+ // se NON Multi fa contapezzi...
+ else
+ {
+ // segnalo BIT
+ B_input += (1 << 2);
+ }
+ // decremento duration
+ bit2.duration--;
+ // controllo se sia scaduta la duration... in quel caso reset...
+ if (bit2.duration <= 0)
+ {
+ bit2 = setupSimPar("SIM_PZCNT");
+ // salvo nuovo contapezzi (incremento di 1...)
+ contapezzi++;
+ sendContapezzi = true;
+ // registro contapezzi
+ lgInfo(string.Format("Contapezzi SIMULAZIONE: {0}", contapezzi));
+ }
+ if (sendContapezzi)
+ {
+ // controllo se ALMENO sia pingabile il server
+ if (checkServerAlive)
+ {
+ // invio a server contapezzi (aggiornato)
+ string retVal = utils.callUrl(urlSetPzCount + contapezzi.ToString());
+ // verifica se tutto OK
+ if (retVal != "OK")
+ {
+ // errore salvataggio contapezzi
+ lgInfo(string.Format("Errore salvataggio Contapezzi SIMULAZIONE {0} | Errore salvataggio: {1}", contapezzi, retVal));
+ }
+ // resetto timer...
+ lastPzCountSend = DateTime.Now;
+ }
+ }
+ }
+
+ // se multi gestisco il bit delel tavole...
+ if (isMulti)
+ {
+ // se sono in fase di fronte d'usita (invio contapezzi) INVERTO nP...
+ if (sendContapezzi)
+ {
+ nP = nP == 1 ? 2 : 1;
+ // assegno a cP il valore nP...
+ cP = nP;
+ }
+ // se cP > 0 --> segnalo bit tavola...
+ if (cP == 1)
+ {
+ B_input += (1 << 6);
+ }
+ else if (cP == 2)
+ {
+ B_input += (1 << 7);
+ }
}
}
}
diff --git a/Jenkinsfile b/Jenkinsfile
index 2378f267..27ca0093 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -16,7 +16,7 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
- withEnv(['NEXT_BUILD_NUMBER=357']) {
+ withEnv(['NEXT_BUILD_NUMBER=358']) {
// env.versionNumber = VersionNumber(versionNumberString : '2.2.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '2.2.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'MAPO-IOB-WIN'