Variabile: PERSISTENT
Le variabili persistenti sono dichiarate nella sezione di dichiarazione VAR_GLOBAL RETAIN PERSISTENT
nell'elenco delle variabili globali persistenti. Per le variabili contrassegnate con PERSISTENT
parola chiave al di fuori dell'editor di persistenza, i percorsi di istanza vengono aggiunti lì.
Suggerimento
Come di CODESYS V3.3.0.1, una dichiarazione di variabile con PERSISTENT RETAIN
ha lo stesso effetto di RETAIN PERSISTENT
o PERSISTENT
.
Sintassi della dichiarazione nell'elenco delle variabili persistenti globali PersistentVars
VAR_GLOBAL PERSISTENT RETAIN <identifier> : <data type> (:= <initialization>)?; <instance path to POU variable> END_VAR
Sintassi della dichiarazione nelle POU
<scope> PERSISTENT RETAIN <identifier> : <data type> ( := <initialization> )?; // ( ... )? : Optional END_VAR <scope> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBAL
Un'assegnazione di ingressi, uscite o indirizzi di memoria con il AT
la parola chiave non è consentita.
Suggerimento
Non usare mai il POINTER TO
tipo di dati negli elenchi di variabili persistenti. Se l'applicazione viene scaricata di nuovo, i loro indirizzi potrebbero cambiare. Gli avvisi del compilatore corrispondenti vengono visualizzati nella finestra dei messaggi.
Suggerimento
Se modifichi frequentemente i nomi o i tipi di dati delle variabili rimanenti, è meglio dichiararle come variabili ritentive con il RETAIN
solo parola chiave.
Importante
Evitare di inserire percorsi di istanza perché in questo caso viene utilizzata il doppio della memoria e può verificarsi un tempo di ciclo maggiore. Invece, dichiara le variabili nell'elenco delle variabili persistenti.
Dichiarazione nel PersistentVars
elenco di variabili persistenti
{attribute 'qualified_only'} VAR_GLOBAL PERSISTENT RETAIN g_iCounter : INT; // Generated instance path of persistent variable PLC_PRG.fb_A.iPersistentCounter_A: INT; END_VAR
Dichiarazione nel FB_A
blocco funzione
FUNCTION_BLOCK FB_A VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR PERSISTENT iPersistentCounter_A : INT; END_VAR
Dichiarazione nel PLC_PRG
programma
VAR fb_A1 : FB_A; END_VAR
Possibili posizioni di dichiarazione | Descrizione |
---|---|
Direttamente nell'elenco delle variabili globali persistenti | La variabile è persistente e si trova nell'area di memoria protetta. |
Localmente in un programma con un percorso di istanza nell'elenco delle variabili persistenti Localmente in un blocco funzione con un percorso di istanza nell'elenco delle variabili persistenti | La variabile è persistente e si trova nell'area di memoria protetta e nella memoria (doppia allocazione). |
Solo localmente in un programma Solo localmente in un blocco funzione | La variabile non è persistente. Nella finestra del messaggio viene visualizzato un avviso. SuggerimentoClic per importare le variabili nell'elenco delle variabili persistenti. |
Localmente in una funzione | Questo tipo di dichiarazione non ha alcun effetto. La variabile non è persistente. |
Suggerimento
Nell'editor di persistenza, fare clic su PERSISTENT
.
Suggerimento
Quando possibile, evitare di contrassegnare le variabili come PERSISTENT
che sono dichiarati in un blocco funzione. Questo perché l'istanza del blocco funzione è archiviata interamente nella memoria rimanente e non solo nella variabile contrassegnata.