Skip to main content

Variable: PERSISTENT

Las variables persistentes se declaran en la sección de declaración. VAR_GLOBAL RETAIN PERSISTENT en la lista de variables globales persistentes. Para las variables que están marcadas con el PERSISTENT palabra clave fuera del editor de persistencia, las rutas de instancia se agregan allí.

Sugerencia

A partir de CODESYS V3.3.0.1, una declaración de variable con PERSISTENT RETAIN tiene el mismo efecto que con RETAIN PERSISTENT o PERSISTENT.

Sintaxis de la declaración en la lista de variables persistentes globales PersistentVars

VAR_GLOBAL PERSISTENT RETAIN
    <identifier> : <data type> (:= <initialization>)?;
 <instance path to POU variable>
END_VAR

Sintaxis de la declaración en POUs

<scope> PERSISTENT 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.

Sugerencia

Nunca use el POINTER TO tipo de datos en listas de variables persistentes. Si la aplicación se vuelve a descargar, sus direcciones podrían cambiar. Las advertencias del compilador correspondientes se muestran en la ventana de mensajes.

Sugerencia

Si cambia con frecuencia los nombres o los tipos de datos de las variables remanentes, entonces es mejor declararlas como variables remanentes con el RETAIN palabra clave solamente.

Importante

Evite insertar rutas de instancia porque en este caso se usa el doble de memoria y puede ocurrir un tiempo de ciclo mayor. En su lugar, declare variables en la lista de variables persistentes.

ejemplo 96. Ejemplo

Declaración en el PersistentVars lista de variables persistentes

{attribute 'qualified_only'}
VAR_GLOBAL PERSISTENT RETAIN
        g_iCounter : INT;
        // Generated instance path of persistent variable
        PLC_PRG.fb_A.iPersistentCounter_A: INT;
END_VAR

Declaración en el FB_A bloque de funciones

FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR PERSISTENT
        iPersistentCounter_A : INT;
END_VAR

Declaración en el PLC_PRG programa

VAR
        fb_A1 : FB_A;
END_VAR


Posibles lugares de declaración

Descripción

Directamente en la lista de variables globales persistentes

La variable es persistente y se encuentra en el área de memoria protegida.

Localmente en un programa con una ruta de instancia en la lista de variables persistentes

Localmente en un bloque de funciones con una ruta de instancia en la lista de variables persistentes

La variable es persistente y se encuentra en el área de memoria protegida y en la memoria (doble asignación).

Solo localmente en un programa

Solo localmente en un bloque de función

La variable no es persistente. Se muestra una advertencia en la ventana de mensajes.

Sugerencia

Hacer clic Declaraciones → Agregar todas las rutas de instancias para importar las variables a la lista de variables persistentes.

Localmente en una función

Este tipo de declaración no tiene ningún efecto. La variable no es persistente.

Sugerencia

En el editor de persistencia, haga clic en Declaraciones → Agregar todas las rutas de instancias si las variables locales están marcadas como PERSISTENT.

Sugerencia

Siempre que sea posible, evite marcar las variables como PERSISTENT que se declaran en un bloque de función. Esto se debe a que la instancia del bloque de funciones se almacena por completo en la memoria remanente y no solo en la variable marcada.