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_VARSyntax 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_GLOBALEine 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_VARDeklaration im Funktionsbaustein FB_A
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR PERSISTENT
iPersistentCounter_A : INT;
END_VARDeklaration im Programm PLC_PRG
VAR
fb_A1 : FB_A;
END_VARMö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 , wenn lokale Variablen mit 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.