La tua domanda mi da lo spunto per chiarire il concetto di funzionamento dell’attributo RETAIN sulle variabili. Nella norma IEC 61131 sono indicati due tipi di avvio di un programma in un PLC.
Warm restart conosciuto anche come Warm reboot, alla applicazione della alimentazione al sistema. L’esecuzione del programma parte dal suo inizio e le variabili RETAIN assumono il valore che avevano allo spegnimento del sistema.
Cold restart, dopo avere caricato il programma nel PLC o su condizioni di errore che hanno provocato il riavvio del programma. L’esecuzione del programma parte dal suo inizio e le variabili RETAIN assumono il valore definito nel campo INIT VALUE.
In ogni PLC esistono solitamente ulteriori aree di memoria che pur non avendo l’attributo RETAIN sono ritentive, nel modulo CPU nostro sistema SlimLine ad esempio l’area di memoria DB 100 a partire dall’offset 2048 sino alla sue fine (Offset 4095) è tutta ritentiva. Quindi tutte le variabili allocate in quest’area mantengono il loro valore sullo spegnimento del sistema ed a differenza delle variabili RETAIN lo mantengono anche sul caricamento del programma e/o sul suo riavvio.