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_VAR
Syntaxe 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_GLOBAL
Une 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_VAR
Dé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_VAR
Déclaration dans le PLC_PRG
programme
VAR fb_A1 : FB_A; END_VAR
Lieux 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 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.