Retain-Variablen werden deklariert, indem in Programmierobjekten im Gültigkeitsbereich
VAR, VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_STAT oder VAR_GLOBAL das Schlüsselwort RETAIN hinzugefügt wird.
Syntax bei der Deklaration
<scope> 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.
Beispiel
In einer POU:
VAR RETAIN iVarRetain: INT; END_VAR
In einer GVL:
VAR_GLOBAL RETAIN g_iVarRetain: INT; END_VAR
Mögliche Deklarationsstellen
|
Lokal in einem Programm |
Nur die Variable liegt im Retain-Speicherbereich. Info: Bei der Verwendung von Redundanz liegt das gesamte Programm mit all seinen Daten im Retain-Speicherbereich. |
|
Global in einer globalen Variablenliste |
Nur die Variable liegt im Retain-Speicherbereich. Info: Bei der Verwendung von Redundanz liegt die gesamte globale Variablenliste mit all ihren Daten im Retain-Speicherbereich. |
|
Lokal in einem Funktionsbaustein |
Die komplette Instanz des Funktionsbausteins mit all seinen Daten liegt im Retain-Speicherbereich. Nur die deklarierte Retain-Variable wird geschützt. |
|
Lokal in einer Funktion |
Die Variable liegt nicht im Retain-Speicherbereich. Diese Deklaration hat keine Auswirkung. |
|
Lokal und persistent in einer Funktion |
Die Variable liegt nicht im Retain-Speicherbereich. Diese Deklaration hat keine Auswirkung. |
Vermeiden Sie möglichst, Variablen eines Funktionsbausteins mit RETAIN zu kennzeichnen.