Variable: RETAIN
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_GLOBALEine Zuweisung von Ein-, Ausgabe- oder Speicheradressen mit dem Schlüsselwort AT ist nicht erlaubt.
In einer POU
VAR RETAIN
iVarRetain: INT;
END_VARIn einer GVL
VAR_GLOBAL RETAIN
g_iVarRetain: INT;
END_VARMögliche Deklarationsstellen
Lokal in einem Programm | Nur die Variable liegt im Retain-Speicherbereich. AnmerkungBei 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. AnmerkungBei 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. |
Tipp
Vermeiden Sie möglichst, Variablen eines Funktionsbausteins mit RETAIN zu kennzeichnen.