Skip to main content

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.

Exemple 96. Exemple

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.

Astuce

Cliquez sur Déclarations → Ajouter tous les chemins d'instance 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 Déclarations → Ajouter tous les chemins d'instance 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.