Le variabili persistenti sono dichiarate nella sezione di dichiarazione VAR_GLOBAL RETAIN PERSISTENT nell'elenco delle variabili globali persistenti. Per le variabili contrassegnate
con la parola chiave PERSISTENT al di fuori dell'editor di persistenza, i percorsi delle istanze vengono aggiunti
lì.
A partire da CODESYS V3.3.0.1, una dichiarazione di variabile con PERSISTENT RETAIN ha lo stesso effetto di una dichiarazione con 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 nei POU
<scope> PERSISTENT RETAIN
<identifier> : <data type> ( := <initialization> )?; // ( ... )? : Optional
END_VAR
<scope> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBAL
Non è consentita l'assegnazione di ingressi, uscite o indirizzi di memoria con la
parola chiave AT.
Non utilizzare mai il tipo di dati POINTER TO negli elenchi di variabili persistenti. Se l'applicazione viene scaricata di nuovo,
i loro indirizzi potrebbero cambiare. Le avvertenze del compilatore corrispondenti
vengono visualizzate nella finestra dei messaggi.
Se si cambiano spesso i nomi o i tipi di dati delle variabili permanenti, è meglio
dichiararle come variabili di mantenimento con la sola parola chiave RETAIN.




AVVISO

Evitare di inserire percorsi di istanza, perché in questo caso si utilizza il doppio della memoria e si può verificare un tempo di ciclo maggiore. Invece, dichiarare le variabili nell'elenco delle variabili persistenti.
Esempio
Dichiarazione nell'elenco delle variabili persistenti di PersistentVars
{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 blocco funzione FB_A
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR PERSISTENT
iPersistentCounter_A : INT;
END_VAR
Dichiarazione nel programma PLC_PRG
VAR
fb_A1 : FB_A;
END_VAR
|
Possibili luoghi 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 dei messaggi viene visualizzato un avviso. CONSIGLIO: Fare clic su «Declarations Add All Instance Paths» 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. |
Nell'editor di persistenza, fare clic su «Declarations Add All Instance Paths» se le variabili locali sono contrassegnate come PERSISTENT.
Se possibile, evitare di contrassegnare come PERSISTENT le variabili dichiarate in un blocco funzione. Questo perché l'istanza del blocco
funzione viene memorizzata interamente nella memoria permanente e non solo la variabile
marcata.