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_VARSintassi 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_GLOBALUn'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_VARDichiarazione nel FB_A blocco funzione
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR PERSISTENT
iPersistentCounter_A : INT;
END_VARDichiarazione nel PLC_PRG programma
VAR
fb_A1 : FB_A;
END_VARPossibili 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 se le variabili locali sono contrassegnate come 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.