Mots-clés d'attribut pour les types de variable
Vous pouvez ajouter les mots-clés d'attribut suivants à la déclaration du type de variable, afin de spécifier la portée :
oRETAIN : consultez Variables conservées
oPERSISTENT : consultez Variables persistantes
oCONSTANT : consultez Constantes - CONSTANT, littéraux saisis
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 placer les variables déclarées comme persistantes dans l'objet Persistent list.
Les variables déclarées comme variables 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 du contrôleur ou après un cycle d'alimentation normal du contrôleur (ou lors de l'exécution de la commande En ligne Reset Warm). 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 origin et, contrairement aux variables persistantes, lors de l'exécution de la commande En ligne Reset cold 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.
|
COMPORTEMENT INATTENDU DE L'EQUIPEMENT |
oN'utilisez pas d'interfaces non issues de la bibliothèque SystemConfigurationItf dans la section VAR_RETAIN du programme. oN'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).
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 origin. 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.
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 Persistent list. Si elles sont déclarées ailleurs, elles se comporteront comme des variables conservées et seront signalées comme une erreur Build détectée dans la vue 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, vous serez invité à 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.
Comportement des variables rémanentes
Veuillez consulter le Guide de programmation spécifique à votre contrôleur pour plus d'informations sur le comportement des variables rémanentes.
Les constantes sont identifiées par le mot-clé CONSTANT. Vous pouvez les déclarer localement ou globalement.
Syntaxe
VAR CONSTANT<identificateur>:<type> := <initialisation>;END_VAR
Exemple
VAR CONSTANT
c_iCon1:INT:=12; (* 1. Constant*)
END_VAR
Reportez-vous aux chapitre Opérandes pour obtenir la liste des constantes possibles.
Lors de l'utilisation de 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.
Tant que le paramètre par défaut Replace constants (Fichier > Paramètres du projet > Compile options) 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 la vue affichée. Dans ce cas, elles sont inaccessibles, par exemple en forçage ou en écriture.