Iniziata gestione SIM nuova...

This commit is contained in:
Samuele E. Locatelli
2019-10-19 11:26:45 +02:00
parent 7546206d89
commit 37e09dfb02
5 changed files with 64 additions and 56 deletions
Binary file not shown.
+1 -1
View File
@@ -510,7 +510,7 @@ namespace IOB_WIN
cpuType = fIni.ReadString("CNC", "CPUTYPE", ""),
rack = (short)fIni.ReadInteger("CNC", "RACK", 0),
slot = (short)fIni.ReadInteger("CNC", "SLOT", 0),
serverData = new serverMapo(fIni.ReadString("SERVER", "MPIP", "::1"), fIni.ReadString("SERVER", "MPURL", "/"), fIni.ReadString("SERVER", "CMDBASE", "/"), fIni.ReadString("SERVER", "CMDFLOG", "/"), fIni.ReadString("SERVER", "CMDALIVE", "/"), fIni.ReadString("SERVER", "CMDENABLED", "/"), fIni.ReadString("SERVER", "CMDREBO", "/")),
serverData = new serverMapo(fIni.ReadString("SERVER", "MPIP", "::1"), fIni.ReadString("SERVER", "MPURL", "/"), fIni.ReadString("SERVER", "CMDBASE", "/"), fIni.ReadString("SERVER", "CMDFLOG", "/"), fIni.ReadString("SERVER", "CMDALIVE", "/"), fIni.ReadString("SERVER", "CMDENABLED", "/"), fIni.ReadString("SERVER", "CMDREBO", "/"), fIni.ReadString("SERVER", "CMD_ODL_STARTED", "/IOB/getCurrOdlStart/")),
MAX_COUNTER_BLINK = Convert.ToInt32(fIni.ReadString("BLINK", "MAX_COUNTER_BLINK", "1")),
BLINK_FILT = Convert.ToInt32(fIni.ReadString("BLINK", "BLINK_FILT", "0"))
};
+1
View File
@@ -18,6 +18,7 @@ CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMD_ODL_STARTED=/IOB/getCurrOdlStart/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
+8 -3
View File
@@ -95,7 +95,7 @@ namespace IOB_WIN
rack = 0;
slot = 0;
tipoIob = tipoAdapter.SIMULA;
serverData = new serverMapo("127.0.0.1", "/", "/IOB/input/", "/IOB/flog/", "/IOB", "/IOB/enabled/", "/sendReboot.aspx?idxMacchina=");
serverData = new serverMapo("127.0.0.1", "/", "/IOB/input/", "/IOB/flog/", "/IOB", "/IOB/enabled/", "/sendReboot.aspx?idxMacchina=", "/IOB/getCurrOdlStart/");
MAX_COUNTER_BLINK = 10;
BLINK_FILT = 0;
optPar = new Dictionary<string, string>();
@@ -129,6 +129,10 @@ namespace IOB_WIN
/// </summary>
public string CMDENABLED = "";
/// <summary>
/// comando base x check avvio ODL
/// </summary>
public string CMD_ODL_STARTED = "";
/// <summary>
/// comando base x comando reboot
/// </summary>
public string CMDREBO = "";
@@ -141,9 +145,9 @@ namespace IOB_WIN
/// <param name="CMDFLOG_">Comando x invio LOG per FLUSSO generico</param>
/// <param name="CMDALIVE_">Comando x check alive</param>
/// <param name="CMDENABLED_">Comando x check abilitato</param>
/// <param name="CMDADV1_">Comando x parametri opz</param>
/// <param name="CMDREBO_">Comando x reboot</param>
public serverMapo(string MPIP_, string MPURL_, string CMDBASE_, string CMDFLOG_, string CMDALIVE_, string CMDENABLED_, string CMDREBO_)
/// <param name="CMD_ODL_STARTED_">Comando x check data avvio ODL</param>
public serverMapo(string MPIP_, string MPURL_ = "/MP/IO", string CMDBASE_ = "/IOB/input/", string CMDFLOG_ = "/IOB/flog/", string CMDALIVE_ = "IOB", string CMDENABLED_ = "/IOB/enabled/", string CMDREBO_ = "/sendReboot.aspx?idxMacchina=", string CMD_ODL_STARTED_ = "/IOB/getCurrOdlStart/")
{
MPIP = MPIP_.Replace("http://", ""); // tolgo http...
MPURL = MPURL_;
@@ -152,6 +156,7 @@ namespace IOB_WIN
CMDALIVE = CMDALIVE_;
CMDENABLED = CMDENABLED_;
CMDREBO = CMDREBO_;
CMD_ODL_STARTED = CMD_ODL_STARTED_;
}
}
+54 -52
View File
@@ -754,6 +754,8 @@ namespace IOB_WIN
{
processOtherCounters();
processProgram();
// verifico se devo gestire cambio ODL in modo automatico
processAutoOdl();
}
else if (ciclo == gatherCycle.VLF)
{
@@ -766,8 +768,6 @@ namespace IOB_WIN
}
// recupero dati SETUP (sysinfo) e li invio/mostro se variati...
processSysInfo();
// verifico se devo gestire cambio ODL in modo automatico
processAutoOdl();
// checkLogDir x shrink!
checkShrinkDir();
// eventuale log!
@@ -1452,7 +1452,7 @@ namespace IOB_WIN
}
}
/// <summary>
/// URL per check alive...
/// URL per check se abilitato...
/// </summary>
public string urlIobEnabled
{
@@ -1462,6 +1462,16 @@ namespace IOB_WIN
}
}
/// <summary>
/// URL per recupero inizio ODL...
/// </summary>
public string urlInizioOdlIob
{
get
{
return string.Format(@"http://{0}{1}{2}{3}", cIobConf.serverData.MPIP, cIobConf.serverData.MPURL, cIobConf.serverData.CMD_ODL_STARTED, cIobConf.codIOB);
}
}
/// <summary>
/// URL per segnalazione reboot...
/// </summary>
public string urlReboot
@@ -2104,7 +2114,7 @@ namespace IOB_WIN
/// <summary>
/// Verifica e processing x gestione ODL automatica
/// </summary>
private void processAutoOdl()
private bool processAutoOdl()
{
bool fatto = false;
if (getOptPar("AUTO_CHANGE_ODL") != "")
@@ -2127,61 +2137,53 @@ namespace IOB_WIN
// controllo parametri validi
if (minOdlDurHours > 0 && minPlcIdelMin > 0)
{
// !!!FIXME leggo da IOB se ci sia scadenza programmata in REDIS
bool scadOdlProgr = false; // !!!FIXME recuperare da MP/IO
// verifico se ci sia PROGRAMMATA la scadenza automatica ODL, in tal caso confronto con data-ora attuali...
if (scadOdlProgr)
{
// recupero scadenza
DateTime scadenzaOdl = adesso.AddDays(1); // !!!FIXME recuperare da MP/IO
// verifico se periodo sia scaduto
if (scadenzaOdl <= adesso)
{
// controllo SE sono fermo (spento o in manuale) per il periodo minimo richiesto...
int idlePeriod = 0; // !!!FIXME recuperare da MP/IO coem conteggio durata STATUS, ma solo SE non sono in running...
if (idlePeriod >= minPlcIdelMin)
{
// invio chiamata URL x reset ODL
fatto = true; // !!!FIXME fare chiamando MP/IO e controllare risultato
// leggo da server inizio ODL
DateTime inizioOdl = DateTime.Now;
string rawDataInizio = callUrl(urlInizioOdlIob);
DateTime.TryParse(rawDataInizio, out inizioOdl);
/***************************************************
* 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
*
***************************************************/
}
}
}
else
//verifico se sia scaduto...
if (inizioOdl.AddHours(minOdlDurHours) < adesso)
{
// chiedo a server data-ora inizio ODL corrente
DateTime odlStarted = DateTime.Now; // !!!FIXME recuperare da MP/IO
// imposto scadenza (periodo )
DateTime odlPrevEnd = odlStarted.AddHours(minOdlDurHours);
// salvo su MP/IO
// !!!FIXME!!! fare!!!
// controllo SE sono fermo (spento o in manuale) per il periodo minimo richiesto...
int idlePeriod = 0; // !!!FIXME recuperare da MP/IO coem conteggio durata STATUS, ma solo SE non sono in running...
if (idlePeriod >= minPlcIdelMin)
{
// invio chiamata URL x reset ODL
fatto = true; // !!!FIXME fare chiamando MP/IO e controllare risultato
/***************************************************
* 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
*
***************************************************/
}
}
}
}
}
}
return fatto;
}
/// <summary>
/// Processo lettura dati sysinfo