Variable: RETAIN
Las variables de retención son declaradas por la palabra clave RETAIN se agrega en objetos de programación en el alcance VAR, VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_STAT, o VAR_GLOBAL.
Sintaxis para la declaración
<scope> RETAIN
    <identifier>: <data type> ( := <initialization> )? // ( ... )? : Optional
END_VAR
<scope> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBALUna asignación de entradas, salidas o direcciones de memoria con el AT la palabra clave no está permitida.
En un POU
VAR RETAIN
        iVarRetain: INT;
END_VARen una GVL
VAR_GLOBAL RETAIN
        g_iVarRetain: INT;
END_VARPosibles lugares de declaración
| Localmente en un programa | Solo la variable se encuentra en el área de memoria de retención. NotaCuando se usa la redundancia, el programa completo con todos sus datos se ubica en el área de memoria retenida. | 
| Globalmente en una lista de variables globales | Solo la variable se encuentra en el área de memoria de retención. NotaCuando se utiliza la redundancia, la lista completa de variables globales con todos sus datos se encuentra en el área de memoria retenida. | 
| Localmente en un bloque de función | La instancia completa del bloque de función con todos sus datos se encuentra en el área de memoria de retención. Solo la variable de retención declarada está protegida. | 
| Localmente en una función | La variable no se encuentra en el área de memoria de retención. Esta declaración no tiene ningún efecto. | 
| Local y persistentemente en una función | La variable no se encuentra en el área de memoria de retención. Esta declaración no tiene ningún efecto. | 
Sugerencia
Siempre que sea posible, evite usar RETAIN para marcar las variables de un bloque de funciones.