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

%I10, %CH203.MOD, %CH203.MOD.ERR

BOOL

X

%MX20

BOOL

B

%QB102.3

BYTE

W

%KW43

INT

D

%QD100

DINT

F

%MF100

REAL

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]