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_VARSintaxis 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_GLOBALUna 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.
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_VARDeclaració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_VARDeclaració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. SugerenciaHacer clic 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  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.