Présentation
Les opérateurs sont utilisés sur les opérandes.
Un opérande peut être :
une adresse,
un libellé,
une variable,
une variable multi-éléments,
un élément d’une variable multi-éléments,
une sortie EFB/DFB ou
un appel d'EFB/de DFB.
Types de données
L’opérande et le contenu actuel de l’accumulateur doivent obligatoirement avoir le même type de données. Si des opérandes de différents types de données doivent être traités, une conversion de types doit obligatoirement être effectuée auparavant.
Dans l’exemple,
la variable Integer i1
est convertie en une variable
Real, avant d’être ajoutée à la variable Real r4
.
LD i1
INT_TO_REAL
ADD r4
ST r3
Comme exception à cette règle, des
variables du type de données TIME
peuvent être
multipliées par des variables du type de données INT
, DINT
, UINT
ou UDINT
ou divisées par ces dernières.
Opérations autorisées :
LD timeVar1
DIV dintVar1
ST timeVar2
LD timeVar1
MUL intVar1
ST timeVar2
LD timeVar1
MUL 10
ST timeVar2
Cette fonction est considérée comme " indésirable " par la norme CEI 61131-3.
Utilisation directe d'adresses
Les adresses peuvent être utilisées directement (sans déclaration préalable). Dans ce cas, le type de données est directement affecté à l'adresse. L'affectation a lieu via le "préfixe de taille".
Le tableau suivant indique les différents préfixes de taille.
Préfixe de taille / Symbole |
Exemple |
Type de données |
---|---|---|
pas de préfixe |
|
|
|
|
|
|
%QB102.3 |
|
|
|
|
|
|
|
|
|
|
Utilisation d'autres types de données
Si d’autres types de données doivent
être affectés en tant que types de données par défaut
d'une adresse, cela doit faire l’objet d’une déclaration
explicite. L'éditeur de variables facilite la déclaration
de ces variables. Il n'est pas possible de déclarer directement
le type de données d'une adresse dans une section ST (par exemple
la déclaration AT %MW1 : UINT
; non permise).
Exemple : les variables ci-dessous sont déclarées dans l'éditeur de variables.
UnlocV1 : ARRAY [1..10] OF INT;
LocV1 : ARRAY [1..10] OF INT AT %MW100;
LocV2 : TIME AT %MW100;
Les appels ci-dessous sont donc corrects du point de vue de la syntaxe :
%MW200 := 5;
LD LocV1[%MW200]
ST UnlocV1[2]
LD t#3s
ST LocV2
Accès aux variables de champs
Lors d’un accès aux valeurs d’un tableau (ARRAY
), seuls les libellés et les variables du type INT
, DINT
, UINT
et UDINT
sont autorisés pour l’index.
L'index
d'un élément ARRAY
peut être négatif
si la limite inférieure de la plage est négative.
Exemple : enregistrement d’une valeur d’un tableau
LD var1[i]
ST var2.otto[4]