Présentation
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,
un appel de fonction ou
une sortie FFB.
Types de données
Les types de données des opérandes à traiter dans une instruction doivent être identiques. 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
.
r3 := r4 + SIN(INT_TO_REAL(i1)) ;
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 :
timeVar1 := timeVar2 / dintVar1;
timeVar1 := timeVar2 * intVar1;
timeVar := 10 * time#10s;
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 ex.
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;
UnlocV1[2] := LocV1[%MW200];
LocV2 := t#3s;
Accès aux variables de champs
Lors d’un accès aux variables de champ (ARRAY
), seuls les libellés et les variables du type INT
, UINT
, DINT
et UDINT
sont autorisés dans l’indication d’index.
L'index d'un élément ARRAY peut être négatif si la limite inférieure de la plage est négative.
Exemple : Emploi de variables de zone
var1[i] := 8 ;
var2.otto[4] := var3 ;
var4[1+i+j*5] := 4 ;