Variable : PERSISTENT
Les variables persistantes sont déclarées dans la section déclaration VAR_GLOBAL RETAIN PERSISTENT dans la liste des variables globales persistantes. Pour les variables marquées avec le PERSISTENT mot-clé en dehors de l'éditeur de persistance, les chemins d'instance y sont ajoutés.
Astuce
À partir de CODESYS V3.3.0.1, une déclaration de variable avec PERSISTENT RETAIN a le même effet qu'avec RETAIN PERSISTENT ou PERSISTENT.
Syntaxe de la déclaration dans la liste globale des variables persistantes PersistentVars
VAR_GLOBAL PERSISTENT RETAIN
<identifier> : <data type> (:= <initialization>)?;
<instance path to POU variable>
END_VARSyntaxe de la déclaration dans les POU
<scope> PERSISTENT RETAIN
<identifier> : <data type> ( := <initialization> )?; // ( ... )? : Optional
END_VAR
<scope> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBALUne affectation d'entrées, de sorties ou d'adresses mémoire avec AT mot-clé n'est pas autorisé.
Astuce
N'utilisez jamais le POINTER TO type de données dans les listes de variables persistantes. Si l'application est téléchargée à nouveau, leurs adresses pourraient changer. Les avertissements correspondants du compilateur sont affichés dans la fenêtre de message.
Astuce
Si vous modifiez fréquemment les noms ou les types de données des variables rémanentes, il est préférable de les déclarer comme variables de rétention avec la RETAIN mot-clé uniquement.
Important
Évitez d'insérer des chemins d'instance car dans ce cas, deux fois plus de mémoire est utilisée et un temps de cycle plus long peut se produire. Au lieu de cela, déclarez des variables dans la liste des variables persistantes.
Déclaration dans le PersistentVars liste de variables persistantes
{attribute 'qualified_only'}
VAR_GLOBAL PERSISTENT RETAIN
g_iCounter : INT;
// Generated instance path of persistent variable
PLC_PRG.fb_A.iPersistentCounter_A: INT;
END_VARDéclaration dans le FB_A bloc fonction
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR PERSISTENT
iPersistentCounter_A : INT;
END_VARDéclaration dans le PLC_PRG programme
VAR
fb_A1 : FB_A;
END_VARLieux de déclaration possibles | La description |
|---|---|
Directement dans la liste des variables globales persistantes | La variable est persistante et située dans la zone de mémoire protégée. |
Localement dans un programme avec un chemin d'instance dans la liste des variables persistantes Localement dans un bloc fonction avec un chemin d'instance dans la liste des variables persistantes | La variable est persistante et située dans la zone mémoire protégée et dans la mémoire (double allocation). |
Seulement localement dans un programme Uniquement localement dans un bloc fonctionnel | La variable n'est pas persistante. Un avertissement s'affiche dans la fenêtre de message. AstuceCliquez sur pour importer les variables dans la liste des variables persistantes. |
Localement dans une fonction | Ce type de déclaration n'a aucun effet. La variable n'est pas persistante. |
Astuce
Dans l'éditeur de persistance, cliquez sur si les variables locales sont marquées comme PERSISTENT.
Astuce
Dans la mesure du possible, évitez de marquer les variables comme PERSISTENT qui sont déclarés dans un bloc fonction. En effet, l'instance du bloc fonction est entièrement stockée dans la mémoire rémanente et pas seulement la variable marquée.