Skip to main content

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_GLOBAL

Una asignación de entradas, salidas o direcciones de memoria con el AT la palabra clave no está permitida.

ejemplo 97. Ejemplo

En un POU

VAR RETAIN
        iVarRetain: INT;
END_VAR

en una GVL

VAR_GLOBAL RETAIN
        g_iVarRetain: INT;
END_VAR


Posibles lugares de declaración

Localmente en un programa

Solo la variable se encuentra en el área de memoria de retención.

Nota

Cuando 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.

Nota

Cuando 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.