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 marcadas con la
palabra clave PERSISTENT fuera del editor de persistencia, las rutas de instancia se añaden allí.
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 los POU
<scope> PERSISTENT RETAIN
<identifier> : <data type> ( := <initialization> )?; // ( ... )? : Optional
END_VAR
<scope> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBAL
No se permite la asignación de entradas, salidas o direcciones de memoria con la palabra
clave AT.
Nunca utilice el tipo de datos POINTER TO en listas de variables persistentes. Si se vuelve a descargar la aplicación, sus
direcciones podrían cambiar. Las advertencias correspondientes del compilador se muestran
en la ventana de mensajes.
Si cambias con frecuencia los nombres o los tipos de datos de las variables remanentes,
entonces es mejor declararlas como variables remanentes sólo con la palabra clave
RETAIN.




AVISO

Evite insertar rutas de instancia porque en este caso se utiliza el doble de memoria y puede producirse un mayor tiempo de ciclo. En su lugar, declare variables en la lista de variables persistentes.
Ejemplo
Declaración en la lista de variables persistentes PersistentVars
{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 bloque de funciones FB_A
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR PERSISTENT
iPersistentCounter_A : INT;
END_VAR
Declaración en el programa PLC_PRG
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 la zona 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 la zona de memoria protegida y en la memoria (doble asignación). |
|
Sólo localmente en un programa Sólo localmente en un bloque de funciones |
La variable no es persistente. Se muestra una advertencia en la ventana de mensajes. TIP: Haga clic en «Declarations Add All Instance Paths» 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. |
En el editor de persistencia, haga clic en «Declaraciones Añadir todas las rutas de instancia» si las variables locales están marcadas como PERSISTENT.
Siempre que sea posible, evite marcar como PERSISTENT variables declaradas 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 sólo la
variable marcada.