Cosa succede all'accensione / power on in ControlHUB
|
In un sistema di controllo impiegato per compiti reali e non solo amatoriali è importante progettare tutto sapendo molto bene cosa può succedere quando si accende il sistema, sia questo avvenga da zero, sia dopo un calo di corrente.
Be' in realtà questo è cosa ben fatta e fa piacere anche in sistemi amatoriali!!
Naturalmente molti comportamenti dipendono dal particolare sistema, quindi di molte cose devi tener conto tu, non è che ControlHUB faccia le magie.
ControlHUB però ti dà una mano per aiutarti a programmare comportamenti ben definiti.
Vediamo come.
Ecco cosa succede all'accensione:
- la
variabile speciale
$poweron$ è messa a 1 (puoi così usarla all'interno di tue
condizioni per far eseguire compiti particolari quando c'è l'accensione oppure per NON far eseguire alcune cose se il sistema è in fase di accensione)
- tutte le
variabili vengono caricate dalle ultime letture che erano state salvate (ultime "risposte" seriali e/o ModBus, ultime azioni/lettura HTTP, ultime ricezioni di topic MQTT)
- ControlHUB attende di essere collegato in rete e quindi attende, chiedendola a un pool di orologi atomici, l'informazione ora/data corrente (per time tminute, ecc);
- in assenza dopo un po' si procede comunque, con data 1-1-2019 o 1-1-1970 0:0.0 (questo vuol dire che azioni o condizioni che hanno a che fare con data o ora possono per esempio decidere di non fare nulla se $tyear$<2020 ovvero l'informazione di data/ora è non valida)
- viene eseguita l'azione che nelle
Impostazioni hai definito come "azione iniziale", come prima
azione in assoluto ad essere eseguita
- vengono valutate tutte le
condizioni ed eseguite eventuali
azioni relative,
ma attenzione non in modo completo: sono eseguite le azioni seriali o ModBus e relé interni (per ripristinare eventuali stati persi con un Power Off); sono invece non eseguite le azioni MQTT/HTTP (in caso di calo di tensione, non possiamo sapere se il poweroff ha colpito anche i dispositivi remoti e in ogni caso penseranno loro a sé); puoi usare $poweron$ dentro eventualmente le tue condizioni
- la variabile $poweron$ ritorna non definita, ovvero va a 00
Cosa succede se il collegamento Internet ha qualche problema?
- l'informazione data/ora non sarà valida (sarà vera/TRUE l'espressione $tyear$<2023)
- le condizioni associate a time,tminute ecc saranno IN OGNI CASO valutate al cambio del minuto ora ecc., perché ci possono essere azioni che si vuole siano effettuate anche se l'orologio non è giusto (es. se umidità bassa apri il relé per l'acqua alle 14 e chiudi alle 15, dove magari non importa tanto se l'ora fosse sbagliata ma è più importante che l'irrigazione si apra in ogni caso per un'ora).
Se ci fossero azioni che non vuoi eseguire se data/ora non è valida, basta usare $tyear$ - ricordiamo infatti che se l'ora/data non è valida, sarà un numero minore di 2023...