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.