Vous pouvez ajouter les mots-clés d'attribut suivants à la déclaration du type de variable, afin de spécifier la portée :
RETAIN
: consultez Variables conservées
PERSISTENT
: consultez Variables persistantes
CONSTANT
: consultez Constantes - CONSTANT, littéraux saisis
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).
VAR PERSISTENT
est interprétée de la même manière qu'une VAR PERSISTENT RETAIN
ou VAR RETAIN PERSISTENT
.
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.
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
). 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
et, contrairement aux variables persistantes, lors de l'exécution de la commande ou pendant le téléchargement d'une application.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 | |
---|---|
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.
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 . Contrairement aux variables conservées, elles gardent leurs valeurs après un téléchargement.
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.
VAR_GLOBAL PERSISTENT
produit le même résultat qu'une déclaration avec VAR_GLOBAL PERSISTENT RETAIN
ou VAR_GLOBAL RETAIN PERSISTENT
.
PERSISTENT
hors de l'éditeur de liste persistante. Pour plus d'informations, consultez la commande .
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
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.
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.
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.
Consultez le Guide de programmation correspondant à votre contrôleur. pour plus d'informations sur le comportement des variables rémanentes.
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.
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.