Iniziata gestione SIM nuova...
This commit is contained in:
Binary file not shown.
@@ -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"))
|
||||
};
|
||||
|
||||
@@ -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=
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user