Home › Forum › Programmazione IEC 61131 (LogicLab) › Chiarimenti sul concetto di variabili RETAIN in IEC61131
- Questo topic ha 3 risposte, 2 partecipanti ed รจ stato aggiornato l'ultima volta 14 anni, 9 mesi fa da
Sergio Bertana.
-
AutorePost
-
Dicembre 21, 2011 alle 7:27 am #35145
Piero
PartecipanteSto programmando con LogicLab un Vs sistema SlimLine, e mi trovo con un problema sulle variabili con attributo RETAIN.
In pratica alla riaccensione del sistema le variabili mantengono il valore che avevano quando il sistema è stato spento, ma ogni volta che eseguo una modifica di programma e lo trasferisco sulla CPU di SlimLine tutte le variabili RETAIN assumono valore “0”.
Dicembre 21, 2011 alle 7:29 am #37084Sergio Bertana
Amministratore del forumLa 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.
Dicembre 21, 2011 alle 7:45 am #37085Sergio Bertana
Amministratore del forumDa quanto esposto nel post precedente risulta ovvio che variabili che contengono valori che devono restare “in macchina” oltre che allo spegnimento e riaccensione del sistema, anche tra ricaricamenti successivi del programma, non possono essere allocate in variabili RETAIN ma solo nella memoria ritentiva del sistema (Esempio a partire da DB 100.2048 sui sistemi SlimLine).
Fanno parte di questa categoria tutte le impostazioni di set definiti tramite pannello operatore e/o impostati da debug all’atto del test dell’impianto. Eventuali contametri, contapezzi, ecc. e qualsiasi altra variabile che abbia valenza storica per l’impianto.
Dicembre 21, 2011 alle 8:01 am #37086Sergio Bertana
Amministratore del forumSulle versioni attualmente distribuite di LogicLab (Versione 1.7.0.0) abbinate al nostro modulo CPU SlimLine con sistema operativo SFW167D000, esiste un un bug sulla gestione delle variabili RETAIN.
Se la variabile RETAIN è inizializzata (Campo INIT VALUE), ad un valore diverso da 0, quando si spegne il PLC e lo si riavvia, essa riassume il valore dichiarato in INIT VALUE. Se invece il valore definito in INIT VALUE è 0 il funzionamento è corretto, il suo valore è mantenuto allo spegnimento del sistema.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.