Ce chapitre fournit des informations supplémentaires concernant les types de variable suivants :
oVAR variables locales
oVAR_INPUT variables d'entrée
oVAR_OUTPUT variables de sortie
oVAR_IN_OUT variables d'entrée et de sortie
oVAR_GLOBAL variables globales
oVAR_TEMP variables temporaires
oVAR_STAT variables statiques
oVAR_EXTERNAL variables externes
oVAR_INST variables d'instance
Toutes les variables locales d'un POU sont déclarées entre les mots clés VAR et END_VAR. Aucune connexion externe n'existe, c'est-à-dire qu'elles ne peuvent pas être écrites depuis l'extérieur.
Il est possible d'ajouter un attribut à une variable VAR.
Exemple
VAR
iLoc1:INT; (* 1. Local Variable*)
END_VAR
Variables d'entrée - VAR_INPUT
Toutes les variables d'entrée d'un POU sont déclarées entre les mots clés VAR_INPUT et END_VAR. La valeur des variables peut donc être fournie avec un appel, à la position d'appel.
Il est possible d'ajouter un attribut.
Exemple
VAR_INPUT
iIn1:INT (* 1. Inputvariable*)
END_VAR
Variables de sortie - VAR_OUTPUT
Toutes les variables de sortie d'un POU sont déclarées entre les mots clés VAR_OUTPUT et END_VAR. Ces valeurs sont donc transmises au POU à l'origine de l'appel.
Il est possible d'ajouter un attribut à une variable VAR_OUTPUT.
Exemple
VAR_OUTPUT
iOut1:INT; (* 1. Outputvariable*)
END_VAR
Variables de sortie dans les fonctions et méthodes :
Conformément à la norme IEC 61131-3 version 2, les fonctions (et les méthodes) peuvent disposer de sorties supplémentaires. Vous pouvez attribuer ces dernières dans l'appel de la fonction, comme illustré ci-dessous.
Exemple
fun(iIn1 := 1, iIn2 := 2, iOut1 => iLoc1, iOut2 => iLoc2);
Variables d'entrée et de sortie - VAR_IN_OUT
Toutes les variables d'entrée et de sortie d'un POU sont déclarées entre les mots clés VAR_IN_OUT et END_VAR.
NOTE : la valeur des variables IN_OUT transmises varie (variable transmise comme pointeur, appel par référence). Cela signifie que la valeur d'entrée de ces variables n'est pas constante. C'est pourquoi il est impossible de lire ou d'écrire directement des variables VAR_IN_OUT d'un bloc fonction depuis l'extérieur via <FBinstance>.<InOutVariable>.
NOTE : n'attribuez pas de symboles de type bit (tels que %MXaa.b ou des variables BOOL associées à une adresse de type bit) à des paramètres BOOL VAR_IN_OUT de blocs fonction. Sinon, ces attributions seront signalées comme une erreur Compiler dans la vue Messages.
Exemple
VAR_IN_OUT
iInOut1:INT; (* 1. Inputoutputvariable *)
END_VAR
Variables globales - VAR_GLOBAL
Vous pouvez déclarer des variables normales, des constantes et des variables externes ou rémanentes qui seront appelées variables globales dans tout le projet. Les variables globales sont à déclarer dans les listes de variables globales (GVL). Pour ajouter une GVL, exécutez la commande Ajouter un objet (disponible par défaut dans le menu Projet).
Déclarez les variables localement entre les mots clés VAR_GLOBAL et END_VAR.
Il est possible d'ajouter un attribut à une variable VAR_GLOBAL.
Les variables globales sont précédées d'un point (par exemple, .iGlobVar1).
Pour obtenir des informations détaillées sur l'usage multiple des noms de variables, l'opérateur de domaine de validité global dot (.) et les espaces de noms, reportez-vous au chapitre Opérateur de domaine de validité global.
Les variables globales ne peuvent être déclarées qu'au sein de GVL, qui servent à gérer les variables globales d'un projet. Pour ajouter une GVL, exécutez la commande Ajouter un objet (disponible par défaut dans le menu Projet).
NOTE : Lorsqu'une variable définie localement dans un POU porte le même nom qu'une variable globale, la priorité revient à la variable locale.
NOTE : Les variables globales sont initialisées avant les variables locales des POU.
Variables temporaires - VAR_TEMP
Cette fonction correspond à une extension de la norme IEC 61131-3.
Les variables temporaires sont (ré)initialisées à chaque appel du POU. Une variable VAR_TEMP ne peut être déclarée que dans un programme ou un bloc fonction. En outre, ce type de variable n'est accessible que depuis le corps du POU du programme ou du bloc fonction.
Déclarez les variables localement entre les mots clés VAR_TEMP et END_VAR.
NOTE : vous pouvez utiliser une variable VAR_TEMP à la place d'une variable VAR afin de limiter l'espace mémoire occupé par un POU (au sein d'un bloc fonction si la variable ne sert que temporairement, par exemple).
Variables statiques - VAR_STAT
Cette fonction correspond à une extension de la norme IEC 61131-3.
Les variables statiques peuvent être utilisées dans des blocs fonction, des méthodes et des fonctions. Déclarez-les localement entre les mots clés VAR_STAT et END_VAR. Ces variables sont initialisées au premier appel du POU correspondant.
À l'instar des variables globales, les variables statiques conservent leur valeur en cas de fermeture de la fenêtre du POU dans lequel elles sont déclarées. Elles sont partagées entre les POU dans lesquels elles sont déclarées (par exemple, plusieurs instances de blocs fonction, fonctions ou méthodes partagent la même variable statique). Vous pouvez les utiliser par exemple comme compteur dans une fonction afin de comptabiliser le nombre d'appels de fonction.
Il est possible d'ajouter un attribut à une variable VAR_STAT.
Variables externes - VAR_EXTERNAL
Il s'agit des variables globales importées dans le POU.
Déclarez-les localement entre les mots clés VAR_EXTERNAL et END_VAR, ainsi que dans la liste de variables globales (GVL). Les déclarations au niveau local et global doivent être identiques. Si la variable globale n'existe pas, un message s'affichera.
NOTE : Définir des variables externes n'est pas une obligation. Ces mots clés permettent d'assurer la compatibilité avec la norme IEC 61131-3.
Exemple
VAR_EXTERNAL
iVarExt1:INT; (* 1st external variable *)
END_VAR
Variables d'instance - VAR_INST
Lorsqu'une variable de méthode est déclarée comme variable d'instance à l'aide de l'attribut VAR_INST, elle est enregistrée sur la pile de l'instance de bloc fonction, et non sur celle de la méthode. Elle se comporte alors comme les autres variables de l'instance de bloc fonction et n'est pas réinitialisée lors de l'appel de la méthode.
Les variables VAR_INST sont admises uniquement dans les méthodes. Vous ne pouvez y accéder que depuis la méthode. Les attributs tels que CONST et RETAIN sont interdits dans la déclaration. Il est possible de surveiller les valeurs des variables dans la partie déclaration de la méthode.
Exemple
METHOD meth_last : INT
VAR_INPUT
iVar : INT;
END_VAR
VAR_INST
iLast : INT := 0;
END_VAR
meth_last := iLast;
iLast := iVar;