Ottimizzato simulazione parametrica...

This commit is contained in:
Samuele E. Locatelli
2019-01-10 12:25:22 +01:00
parent 1db850d1b7
commit 7e8a757775
4 changed files with 130 additions and 9 deletions
+7 -2
View File
@@ -21,15 +21,20 @@ CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
[MEMORY]
[MEMORY]
[BLINK]
MAX_COUNTER_BLINK = 15
BLINK_FILT=0
[OPTPAR]
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
;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, default 1 secondo)
PER_BASE=1
SIM_BIT2=10|1
SIM_BIT3=100|2
SIM_BIT4=25|2
[BRANCH]
NAME=master
+8
View File
@@ -647,6 +647,7 @@ namespace IOB_WIN
bool showDebugData = false;
if (ciclo == gatherCycle.VHF)
{
processVHF();
}
// processing dati memoria (lettura, filtraggio, enqueque)
else if (ciclo == gatherCycle.HF)
@@ -1663,6 +1664,13 @@ namespace IOB_WIN
}
}
}
/// <summary>
/// Classe fittizia in caso di processing task in VHF
/// </summary>
public virtual void processVHF()
{
}
/// <summary>
/// Classe fittizia in caso di processing GLOBALE di tutto in 1 solo colpo...
/// </summary>
+114 -6
View File
@@ -3,9 +3,43 @@ using System.Collections.Generic;
namespace IOB_WIN
{
/// <summary>
/// Configuraizone eventi da simulare
/// </summary>
public class simPar
{
/// <summary>
/// Attesa per evento
/// </summary>
public int wait = 10;
/// <summary>
/// Durata dell'evento
/// </summary>
public int duration = 1;
/// <summary>
/// DateTime ultimo evento
/// </summary>
public DateTime lastEv = DateTime.Now;
}
public class IobSimula : IobGeneric
{
protected int periodoSec = 7;
/// <summary>
/// periodo base del simulatore (in secondi)
/// </summary>
protected int periodoSec = 1;
/// <summary>
/// Parametri simulazione oscillazione bit 3
/// </summary>
protected simPar bit3;
/// <summary>
/// Parametri simulazione oscillazione bit 4
/// </summary>
protected simPar bit4;
/// <summary>
/// ultimo controllo decremento eventi
/// </summary>
protected DateTime lastEvCheck;
/// <summary>
/// estende l'init della classe base...
/// </summary>
@@ -17,6 +51,43 @@ namespace IOB_WIN
pzCountDelay = utils.CRI("pzCountDelay");
lastPzCountSend = DateTime.Now;
lastWarnODL = DateTime.Now;
lastEvCheck = DateTime.Now;
// sistemo parametri x simulazione...
if (cIobConf.optPar.Count > 0)
{
if (cIobConf.optPar["PER_BASE"] != "")
{
int.TryParse(cIobConf.optPar["PER_BASE"], out periodoSec);
}
bit3 = setupSimPar("SIM_BIT3");
bit4 = setupSimPar("SIM_BIT4");
}
}
/// <summary>
/// Setup aprametri di simulazione per BIT indicato
/// </summary>
/// <param name="keyName"></param>
private simPar setupSimPar(string keyName)
{
simPar answ = new simPar();
if (cIobConf.optPar.Count > 0)
{
if (cIobConf.optPar.ContainsKey(keyName))
{
string fullVal = cIobConf.optPar[keyName];
if (fullVal != "" && fullVal.IndexOf("|") > 0)
{
string[] param = fullVal.Split('|');
int.TryParse(param[0], out answ.wait);
int.TryParse(param[1], out answ.duration);
// aggiongo disturbo...
Random rnd = new Random();
int noise = rnd.Next(1, answ.wait / 10);
answ.wait += noise;
}
}
}
return answ;
}
public override void tryConnect()
@@ -58,7 +129,19 @@ namespace IOB_WIN
decodeToBaseBitmap();
decodeOtherData();
}
/// <summary>
/// Processo contatori eventi...
/// </summary>
public override void processVHF()
{
if (lastEvCheck.AddSeconds(periodoSec) < DateTime.Now)
{
// decremento contatore ultimo evento
bit3.wait--;
bit4.wait--;
lastEvCheck = DateTime.Now;
}
}
/// <summary>
/// Effettua decodifica aree memoria alla bitmap usata x MAPO
/// </summary>
@@ -73,14 +156,38 @@ namespace IOB_WIN
* B2: pzCount
* B3: allarme
* B4: manuale
* B5: emergenza
* B6: error prog
* B7: auto mode
* B5: emergenza
----------------------------------------------------- */
// di base macchina in RUN
B_input = 3;
if (bit3.wait <= 0)
{
// segnalo BIT
B_input = 9;
// decremento duration
bit3.duration--;
// controllo se sia scaduta la duration... in quel caso reset...
if (bit3.duration <= 0)
{
bit3 = setupSimPar("SIM_BIT3");
}
}
else if (bit4.wait <= 0)
{
// segnalo BIT
B_input = 17;
// decremento duration
bit4.duration--;
// controllo se sia scaduta la duration... in quel caso reset...
if (bit4.duration <= 0)
{
bit4 = setupSimPar("SIM_BIT4");
}
}
#if false
// ogni periodo_sec x 2 invio un segnale allarme = B3
if ((DateTime.Now.Second % (periodoSec * 2)) == 0)
{
@@ -90,7 +197,8 @@ namespace IOB_WIN
else if ((DateTime.Now.Second % periodoSec) == 0)
{
B_input = 17;
}
}
#endif
// CONTROLLO INVIO SOLO SE è in stato "3"...
if (B_input == 3)
{
Vendored
+1 -1
View File
@@ -16,7 +16,7 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
withEnv(['NEXT_BUILD_NUMBER=329']) {
withEnv(['NEXT_BUILD_NUMBER=330']) {
// env.versionNumber = VersionNumber(versionNumberString : '2.1.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '2.1.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'MAPO-IOB-WIN'