Introduction

Un opérateur est un symbole pour :

  • une opération arithmétique à effectuer ou

  • une opération logique à exécuter ou

  • un traitement de fonction (appel)

Les opérateurs sont génériques, ce qui signifie qu’ils s’adaptent automatiquement au type de données de l’opérande.

Tableau des opérateurs

Les opérateurs sont exécutés en fonction de leur rang, voir également Ordre de l'exécution.

Opérateurs du langage ST :

Opérateur

Signification

Rang

Opérandes possibles

Description

()

Mise entre parenthèses

1 (le plus haut)

Expression

La mise entre parenthèses est utilisée pour modifier la séquence d’exécution des opérateurs.

Exemple : Si les opérandes A, B, C and D ont respectivement les valeurs 1, 2, 3 et 4, alors

A+B-C*D

donne le résultat -9 et

(A+B-C)*D

donne le résultat 0.

FUNCNAME (liste des paramètres réels)

Traitement de fonction (appel)

2

Expression, valeur littérale, variable, adresse (tous les types de données)

Le traitement de fonction est utilisé pour exécuter des fonctions (voir Appel de fonctions élémentaires).

-

Négation

3

Expression, valeur littérale, variable, adresse du type de données INT, DINT ou REAL

Dans le cas de la négation -, le système change le signe de la valeur de l’opérande.

Exemple : Dans l'exemple, OUT a la valeur -4 si IN1 est égal à 4.

OUT := - IN1 ;

NON

Complément

3

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD

Dans le cas de NOT, le système effectue une inversion de chaque bit de l’opérande.

Exemple : Dans l'exemple, OUT a la valeur 0011001100 si IN1 est égal à 1100110011.

OUT := NOT IN1 ;

**

Elévation de puissance

4

Expression, valeur littérale, variable, adresse du type de données REAL (base) et INT, DINT, UINT, UDINT ou REAL (exposant)

Dans le cas de l’élévation à une puissance plus haute **, la valeur du premier opérande (base) est augmentée de la valeur du second opérande (exposant).

Exemple : Dans l'exemple, OUT est égal à 625,0 si IN1 est 5,0 et IN2 4,0.

OUT := IN1 ** IN2 ;

*

Multiplication

5

Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT, UDINT ou REAL

Dans le cas de la multiplication *, la valeur du premier opérande est multipliée par la valeur du deuxième opérande.

Exemple : Dans l'exemple, OUT est égal à 20.0 si IN1 est 5,0 et IN2 4,0.

OUT := IN1 * IN2 ;

Note : La fonction MULTIME de la bibliothèque obsolète est destinée aux multiplications du type de données Time.

/

Division

5

Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT, UDINT ou REAL

Dans le cas de la division /, la valeur du premier opérande est divisée par la valeur du deuxième opérande.

Exemple : Dans l'exemple, OUT est égal à 4.0 si IN1 est 20.0 et IN2 5.0.

OUT := IN1 / IN2 ;

Note : La fonction DIVTIME de la bibliothèque obsolète est destinée aux divisions du type de données Time.

MOD

Modulo

5

Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT ou UDINT

Dans le cas de MOD, la valeur du premier opérande est divisée par la valeur du deuxième opérande et le reste de la division (Modulo) est sorti comme résultat.

Exemple : Dans cet exemple,

  • OUT est 1, si IN1 est 7 et IN2 2

  • OUT est 1, si IN1 est 7 et IN2 -2

  • OUT est -1, si IN1 est -7 et IN2 2

  • OUT est -1, si IN1 est -7 et IN2 -2

OUT := IN1 MOD IN2 ;

+

Addition

6

Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT, UDINT, REAL ou TIME

Dans le cas de l’addition +, la valeur du premier opérande est ajoutée à la valeur du deuxième opérande.

Exemple : Dans cet exemple,

OUT est égal à 9 si IN1 est 7 et IN2 2.

OUT := IN1 + IN2 ;

-

Soustraction

6

Expression, valeur littérale, variable, adresse du type de données INT, DINT, UINT, UDINT, REAL ou TIME

Dans le cas de la soustraction -, la valeur du deuxième opérande est soustraite à la valeur du premier opérande.

Exemple : Dans l'exemple, OUT est égal à 6 si IN1 est 10 et IN2 4.

OUT := IN1 - IN2 ;

<

Comparaison "inférieur à"

7

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD

< permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est inférieure à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est supérieure ou égale à celle du second, le résultat est un 0 booléen.

Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est inférieur à 10. Sinon, il vaut 0.

OUT := IN1 < 10 ;

>

Comparaison "supérieur à"

7

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD

> permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est supérieure à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est inférieure ou égale à celle du second, le résultat est un 0 booléen.

Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est supérieur à 10. Si IN1 est inférieur à 0, alors il vaut 0.

OUT := IN1 > 10 ;

<=

Comparaison "inférieur ou égal à"

7

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD

<= permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est inférieure ou égale à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est supérieure à celle du second, le résultat est un 0 booléen.

Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est inférieur ou égal à 10. Sinon, il est égal à 0.

OUT := IN1 <= 10 ;

>=

Comparaison "supérieur ou égal à"

7

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD

>= permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est supérieure ou égale à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est inférieure à celle du second, le résultat est un 0 booléen.

Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est supérieur ou égal à 10. Sinon, il est égal à 0.

OUT := IN1 >= 10 ;

=

Egalité

8

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD

= permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est égale à celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est différente de celle du second, le résultat est un 0 booléen.

Exemple : Dans l'exemple, OUT est égal à 1 si IN1 est égal à 10. Sinon, il vaut 0.

OUT := IN1 = 10 ;

<>

Inégalité

8

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE ou TOD

<> permet de comparer la valeur du premier opérande à celle du deuxième opérande. Si la valeur du premier opérande est différente de celle du second, le résultat est un 1 booléen. Si la valeur du premier opérande est égale à celle du second, le résultat est un 0 booléen.

Exemple : Dans l'exemple, OUT est égal à 1 si IN1 n'est pas égal à 10. Sinon, il vaut 0.

OUT := IN1 <> 10 ;

&

ET logique

9

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD

& permet d'établir une liaison ET logique entre les opérandes. Pour les types de données BYTE, WORD et DWORD, le lien est fait par bit.

Exemple : Dans les exemples OUT est égal à 1 si IN1, IN2 et IN3 valent 1.

OUT := IN1 & IN2 & IN3 ;

AND

ET logique

9

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD

AND permet d'établir une liaison ET logique entre les opérandes. Pour les types de données BYTE, WORD et DWORD, le lien est fait par bit.

Exemple : Dans les exemples OUT est égal à 1 si IN1, IN2 et IN3 valent 1.

OUT := IN1 AND IN2 AND IN3 ;

XOR

OU exclusif logique

10

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD

XOR permet d'établir une liaison OU exclusif logique entre les opérandes. Pour les types de données BYTE, WORD et DWORD, le lien est fait par bit.

Exemple : Dans l'exemple, OUT est égal à 1 si IN1 et IN2 ne sont pas égaux. Si IN1 et IN2 ont le même état (tous deux 0 ou 1), OUT est sur 0.

OUT := IN1 XOR IN2 ;

Si plus de deux opérandes sont reliés, le résultat de l’opération est à l’état 1 pour un nombre impair d'états 1 et à l’état 0 pour un nombre pair d’états 1.

Exemple : Dans l'exemple, OUT est égal à 1 si 1 ou 3 opérandes valent 1. OUT vaut 0 si 0, 2 ou 4 opérandes valent 1.

OUT := IN1 XOR IN2 XOR IN3 XOR IN4 ;

OR

OU logique

11 (le plus bas)

Expression, valeur littérale, variable, adresse du type de données BOOL, BYTE, WORD ou DWORD

OR permet d'établir une liaison OU logique entre les opérandes. Pour les types de données BYTE, WORD et DWORD, le lien est fait par bit.

Exemple : Dans l'exemple, OUT a la valeur 1 si IN1, IN2 ou IN3 est sur 1.

OUT := IN1 OR IN2 OR IN3 ;