Mots-clés d'attribut pour les types de variable

Présentation

Vous pouvez ajouter les mots-clés d'attribut suivants à la déclaration du type de variable, afin de spécifier la portée :

Variables rémanentes - RETAIN, PERSISTENT

Les variables rémanentes peuvent conserver leur valeur tout au long de la période d'exécution du programme habituel. Déclarez-les comme des variables conservées ou, pour davantage de rigueur, comme des variables persistantes.

La déclaration détermine le degré de résistance d'une variable rémanente en cas de réinitialisations, de téléchargements ou de redémarrage du contrôleur. Dans les applications, la combinaison des deux indicateurs rémanents est principalement utilisée (reportez-vous aux Variables persistantes).

NOTE : une déclaration VAR PERSISTENT est interprétée de la même manière qu'une VAR PERSISTENT RETAIN ou VAR RETAIN PERSISTENT.
NOTE : Utilisez la commande Ajouter tous les chemins d'instance pour intégrer dans l'objet Liste persistante, les variables déclarées comme persistantes.

La persistance s'obtient :

  • en déterminant les tâches cycliques qui accèdent à la variable ;

  • en copiant la variable dans la liste des variables globales persistantes à la fin de la première tâche cyclique (dans chaque cycle) ;

  • en copiant la valeur de la variable persistante dans la variable normale au redémarrage du contrôleur.

Comme la mémoire est allouée aux niveaux de la déclaration et du chemin de l'instance, cette variable persistante nécessite une double allocation à chaque cycle. Ce qui peut allonger les temps de traitement, surtout avec des valeurs structurées de taille importante.

Variables conservées

Les variables déclarées comme conservées sont stockées dans une zone de mémoire non volatile. Pour déclarer ce type de variable, utilisez le mot-clé RETAIN dans la partie de déclaration d'un POU ou dans une liste de variables globales.

Exemple

VAR RETAIN
 iRem1 : INT; (* 1. Retain variable*)
END_VAR

Les variables conservées gardent leur valeur même après un arrêt imprévu ou un cycle d'alimentation normal du contrôleur (ou lors de l'exécution de la commande En ligne Reset chaud). Au redémarrage du programme, les valeurs conservées seront de nouveau traitées. Les autres variables (non conservées) sont nouvellement initialisées, soit avec leurs valeurs d'initialisation actuelles, soit avec leurs valeurs d'initialisation par défaut (si aucune valeur d'initialisation n'a été déclarée).

Par exemple, vous pouvez utiliser une valeur conservée lorsqu'une opération, telle que le comptage des pièces dans une machine de production, doit se poursuivre après une coupure de courant.

Les variables conservées sont toutefois réinitialisées lors de l'exécution de la commande En ligne Reset origine et, contrairement aux variables persistantes, lors de l'exécution de la commande En ligne Reset froid ou pendant le téléchargement d'une application.

NOTE : Seules les variables spécifiques définies comme VAR RETAIN sont stockées dans la mémoire non volatile. Toutefois, les variables locales définies comme VAR RETAIN dans les fonctions ne sont PAS stockées dans la mémoire non volatile. La définition locale de VAR RETAIN dans les fonctions n'a aucun effet.

L'utilisation d'interfaces ou de blocs fonction non issus des bibliothèques de configuration système dans la section VAR_RETAIN du programme génère des exceptions système qui risquent de rendre le contrôleur inopérant et de nécessiter un redémarrage.

 AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT
  • N'utilisez pas d'interfaces non issues de la bibliothèque SystemConfigurationItf dans la section VAR_RETAIN du programme.
  • N'utilisez pas de blocs fonction non issus de la bibliothèque SystemConfiguration dans la section VAR_RETAIN du programme.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels.
NOTE : les bibliothèques SystemConfigurationItf et SystemConfiguration ne sont disponibles que pour les contrôleurs PacDrive (PacDrive LMC Eco, PacDrive LMC Pro/Pro2).
NOTE : Si une variable d'un bloc fonction est identifiée par le mot-clé RETAIN, l'instance du bloc fonction et ses variables sont stockées dans la mémoire rémanente. Cette fonction n'est pas disponible pour tous les contrôleurs. Consultez le Guide de programmation correspondant à votre contrôleur. pour plus d'informations.

Variables persistantes

Les variables persistantes sont identifiées par le mot-clé PERSISTENT (VAR_GLOBAL PERSISTENT). Elles sont uniquement réinitialisées lors de l'exécution de la commande En ligne Reset origine. Contrairement aux variables conservées, elles gardent leurs valeurs après un téléchargement.

NOTE : N'utilisez pas la déclaration AT avec VAR PERSISTENT.

Exemple d'application :

Un compteur des heures de fonctionnement, qui doit poursuivre le comptage même après une coupure de courant ou un téléchargement. Reportez-vous au tableau synoptique relatif au comportement des variables rémanentes.

Vous pouvez uniquement déclarer des variables persistantes dans une liste de variables globales spécifique pour les variables persistantes de type d'objet, qui est attribuée à une application. Vous ne pouvez ajouter qu'une seule liste de ce type à une application.

NOTE : Une déclaration avec VAR_GLOBAL PERSISTENT produit le même résultat qu'une déclaration avec VAR_GLOBAL PERSISTENT RETAIN ou VAR_GLOBAL RETAIN PERSISTENT.
NOTE : Des chemins d'instance sont ajoutés pour les variables marquées avec le mot-clé PERSISTENT hors de l'éditeur de liste persistante. Pour plus d'informations, consultez la commande Ajouter tous les chemins d'instance.

Comme les variables conservées, les variables persistantes sont stockées dans une zone de mémoire distincte.

Exemple

VAR_GLOBAL PERSISTENT RETAIN
  iVarPers1 : DINT; (* 1. Persistent+Retain Variable App1 *)
  bVarPers : BOOL;  (* 2. Persistent+Retain Variable App1 *)
END_VAR
NOTE : Les variables persistantes ne peuvent être déclarées que dans l'objet Liste persistante. Si elles sont déclarées ailleurs, elles se comportent comme des variables conservées et sont signalées comme une erreur de compilation dans l'affichage Messages. (Les variables conservées peuvent être déclarées dans les listes de variables globales ou dans les POU.)

Lors de chaque rechargement de l'application, la liste de variables persistantes sur le contrôleur est comparée à celle du projet. L'application permet d'identifier la liste présente sur le contrôleur. En cas d'incohérences, il vous sera demandé de réinitialiser toutes les variables persistantes de l'application. Une incohérence peut résulter de l'attribution d'un nouveau nom, d'une suppression ou d'autres modifications des déclarations existantes qui figurent dans la liste.

NOTE : Examinez attentivement toutes les modifications effectuées dans la partie de déclaration de la liste de variables persistantes et les effets des résultats sur la réinitialisation.

Vous pouvez ajouter de nouvelles déclarations uniquement à la fin de la liste. Lors d'un téléchargement, celles-ci seront détectées comme nouvelles, ce qui évite de réinitialiser toute la liste. Si vous modifiez le nom ou le type de données d'une variable, la déclaration est considérée comme nouvelle et déclenche une réinitialisation de la variable après la nouvelle modification en ligne ou le nouveau téléchargement.

NOTE : Si une variable d'un bloc fonction est identifiée par le mot-clé PERSISTENT, l'instance du bloc fonction et ses variables sont stockées dans la mémoire rémanence, mais seule la variable est traitée comme persistante.

Comportement des variables rémanentes

Consultez le Guide de programmation correspondant à votre contrôleur. pour plus d'informations sur le comportement des variables rémanentes.

Constantes - CONSTANT

Les constantes sont identifiées par le mot-clé CONSTANT. Vous pouvez les déclarer localement (objet de programmation) ou globalement (liste de variables globales). Les variables constantes sont accessibles en lecture seule dans la partie implémentation d'un POU.

Syntaxe

<scope> CONSTANT <identifier>:<type> := <initialization>;
END_VAR

Avec <scope> : VAR | VAR_INPUT | VAR_STAT | VAR_GLOBAL

N'oubliez pas d'affecter une valeur d'initialisation lors de la déclaration d'une variable constante.

Exemple

VAR CONSTANT
c_iCon1:INT:=12; (* 1. Constant*)
END_VAR

Reportez-vous aux chapitre Opérandes pour obtenir la liste des constantes possibles.

Valeurs littérales typées

Lors de l'utilisation des constantes IEC, le plus petit type de données possible est utilisé. Si un autre type de données doit être utilisé, vous devez recourir aux littéraux saisis sans qu'il soit nécessaire de déclarer explicitement les constantes. Pour ce faire, la constante sera fournie avec un préfixe déterminant le type.

Syntaxe

<type>#<littéral>;

<type>

spécifie le type de donnée souhaité

Entrées possibles : BOOL, SINT, USINT, BYTE, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, LREAL

Ecrivez le type en lettres majuscules.

<littéral>

spécifie la constante

Entrez des données correspondant au type défini sous <type>.

Exemple

iVar1:=DINT#34;

Si la constante ne peut pas être convertie vers le type cible sans perte de données, un message est émis.

Vous pouvez utiliser les littéraux saisis partout où des constantes normales peuvent être utilisées.

Constantes en mode En ligne

Tant que le paramètre par défaut Remplacer les constantes (Fichier > Paramètres du projet > Options compilateur) est activé, les constantes en mode En ligne ont un symbole qui précède la valeur dans la colonne Valeur de la déclaration ou de l'affichage. Dans ce cas, elles sont inaccessibles, par exemple en forçage ou en écriture.