Skip to main content

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.

Esempio 96. Esempio

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.

Suggerimento

Clic Dichiarazioni → Aggiungi tutti i percorsi di istanza 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 Dichiarazioni → Aggiungi tutti i percorsi di istanza 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.