E’ possibile utilizzare una variabile RETAIN di tipo BOOL. Come visibile in questo topic, le variabili di tipo RETAIN mantengono il loro valore allo spegnimento del sistema, mentre sono azzerate al caricamento del programma.
Quindi se definisci ad esempio una variabile PReload di tipo BOOL come RETAIN, al primo loop di programma potrai verificare se è FALSE o TRUE e così gestire le tue inizializzazioni. Dopo il controllo la variabile PReload andrà settata. Ecco come gestirla in un semplice programma ST eseguito in task Boot (Allego programma di esempio per download).
IF NOT(PReload) THEN
IsReload:=TRUE; (* Program reload *)
ELSE
IsStartup:=TRUE; (* Program start-up *)
END_IF;
PReload:=TRUE; (* Program reload flag *)