Persistente Variablen werden im Deklarationsabschnitt VAR_GLOBAL RETAIN PERSISTENT in der Liste der persistenten globalen Variablen deklariert. Für Variablen, die außerhalb
des Persistenzeditors mit dem Schlüsselwort PERSISTENT gekennzeichnet sind, werden dort Instanzpfade hinzugefügt.
Ab CODESYS V3.3.0.1 hat eine Variablendeklaration mit PERSISTENT RETAIN die gleiche Wirkung wie mit RETAIN PERSISTENT oder PERSISTENT.
Syntax der Deklaration in der Liste der globalen persistenten Variablen PersistentVars
VAR_GLOBAL PERSISTENT RETAIN
<identifier> : <data type> (:= <initialization>)?;
<instance path to POU variable>
END_VAR
Syntax der Erklärung in POEs
<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 Eingängen, Ausgängen oder Speicheradressen mit dem Schlüsselwort
AT ist nicht zulässig.
Verwenden Sie niemals den Datentyp POINTER TO in persistenten Variablenlisten. Wenn die Anwendung erneut heruntergeladen wird,
könnten sich die Adressen ändern. Die entsprechenden Compiler-Warnungen werden im
Meldungsfenster angezeigt.
Wenn Sie die Namen oder Datentypen von remanenten Variablen häufig ändern, ist es
besser, sie nur mit dem Schlüsselwort RETAIN als Retain-Variablen zu deklarieren.




HINWEIS

Vermeiden Sie das Einfügen von Instanzpfaden, da in diesem Fall doppelt so viel Speicher verwendet wird und eine höhere Zykluszeit auftreten kann. Deklarieren Sie stattdessen Variablen in der Liste der persistenten Variablen.
Beispiel
Deklaration in der Liste der persistenten Variablen 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
Erklärung im Funktionsblock FB_A
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR PERSISTENT
iPersistentCounter_A : INT;
END_VAR
Erklärung im Programm PLC_PRG
VAR
fb_A1 : FB_A;
END_VAR
|
Mögliche Meldeorte |
Beschreibung |
|---|---|
|
Direkt in der Liste der persistenten globalen Variablen |
Die Variable ist persistent und befindet sich im geschützten Speicherbereich. |
|
lokal in einem Programm mit einem Instanzpfad in der Liste der persistenten Variablen lokal in einem Funktionsblock mit einem Instanzpfad in der Liste der persistenten Variablen |
Die Variable ist persistent und befindet sich im geschützten Speicherbereich und im Speicher (doppelte Zuordnung). |
|
Nur lokal in einem Programm Nur lokal in einem Funktionsblock |
Die Variable ist nicht persistent. Im Meldungsfenster wird eine Warnung angezeigt. TIPP: Klicken Sie auf „Declarations Add All Instance Paths“ um die Variablen in die Liste der persistenten Variablen zu importieren. |
|
Örtlich in einer Funktion |
Diese Art von Erklärung hat keine Wirkung. Die Variable ist nicht persistent. |
Klicken Sie im Persistenzeditor auf „Deklarationen Alle Instanzpfade hinzufügen“, wenn lokale Variablen als PERSISTENT markiert sind.
Vermeiden Sie nach Möglichkeit die Kennzeichnung von Variablen als PERSISTENT, die in einem Funktionsblock deklariert werden. Der Grund dafür ist, dass die Instanz
des Funktionsblocks vollständig im remanenten Speicher gespeichert wird und nicht
nur die markierte Variable.