Variable: PERSISTENT
Persistente Variablen werden in der persistenten globalen Variablenliste im Deklarationsabschnitt VAR_GLOBAL RETAIN PERSISTENT
deklariert. Für Variablen, die außerhalb des Persistenzeditors mit dem Schlüsselwort PERSISTENT
gekennzeichnet sind, werden dort Instanzpfade hinzugefügt.
Tipp
Ab CODESYS-Version 3.3.0.1 bewirkt eine Variablendeklaration mit PERSISTENT RETAIN
dasselbe wie mit RETAIN PERSISTENT
oder PERSISTENT
.
Syntax der Deklaration in der globalen persistenten Variablenliste PersistentVars
VAR_GLOBAL PERSISTENT RETAIN <identifier> : <data type> (:= <initialization>)?; <instance path to POU variable> END_VAR
Syntax der Deklaration in POUs
<scope> PERSISTENT RETAIN <identifier> : <data type> ( := <initialization> )?; // ( ... )? : Optional END_VAR <scope> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBAL
Eine Zuweisung von Ein-, Ausgabe- oder Speicheradressen mit dem Schlüsselwort AT
ist nicht erlaubt.
Tipp
Verwenden Sie in persistenten Variablenlisten nie den Datentyp POINTER TO
. Bei erneutem Download der Applikation können sich nämlich deren Adressen verändern. Im Meldungsfenster werden entsprechende Compilerwarnungen ausgegeben.
Tipp
Wenn Sie die Namen oder die Datentypen einer remanenten Variablen häufig ändern, ist es besser, diese als Retain-Variablen nur mit dem Schlüsselwort RETAIN
zu deklarieren.
Wichtig
Vermeiden Sie das Einfügen von Instanzpfaden, da in diesem Fall doppelt so viel Speicher verbraucht wird und eine erhöhte Zykluszeit auftreten kann. Deklarieren Sie stattdessen Variablen direkt in der Liste der persistenten Variablen.
Deklaration in der persistenten Variablenliste 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
Deklaration im Funktionsbaustein FB_A
FUNCTION_BLOCK FB_A VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR PERSISTENT iPersistentCounter_A : INT; END_VAR
Deklaration im Programm PLC_PRG
VAR fb_A1 : FB_A; END_VAR
Mögliche Deklarationsstellen | Beschreibung |
---|---|
Direkt in der persistenten globalen Variablenliste | Die Variable ist persistent und liegt im geschützten Speicherbereich. |
Lokal in einem Programm mit Instanzpfad in der persistenten Variablenliste Lokal in einem Funktionsbaustein mit Instanzpfad in der persistenten Variablenliste | Die Variable ist persistent und liegt im geschützten Speicherbereich und im Speicher (Doppelbelegung). |
Nur lokal in einem Programm Nur lokal in einem Funktionsbaustein | Die Variable ist nicht persistent. Im Meldungsfenster wird eine Warnung ausgegeben. TippWählen Sie den Befehl , um die Variablen in die persistente Variablenliste aufzunehmen. |
Lokal in einer Funktion | Eine solche Deklaration hat keine Auswirkung. Die Variable ist nicht persistent. |
Tipp
Wählen Sie im Persistenzeditor den Befehl PERSISTENT
gekennzeichnet sind.
Tipp
Vermeiden Sie möglichst, Variablen, die lokal in einem Funktionsbaustein deklariert sind, mit PERSISTENT
zu kennzeichnen. Denn dabei wird die Funktionsbaustein-Instanz vollständig im remanenten Speicher abgelegt und nicht nur die gekennzeichnete Variable.