Un'espressione è una costruzione che dopo la valutazione restituisce un valore. Questo valore viene utilizzato nelle istruzioni.
Le espressioni sono composte da operatori, operandi e/o assegnazioni. Un operando può essere una costante, una variabile, una chiamata di funzione o un'altra espressione.
Esempi
33 |
(* Costante *) |
ivar |
(* Variabile *) |
fct(a,b,c) |
(* Chiamata di funzione *) |
a AND b |
(* Espressione *) |
(x*y) / z |
(* Espressione *) |
real_var2 := int_var; |
(* Assegnazione, vedere sotto *) |
La valutazione di un'espressione avviene tramite l'elaborazione degli operatori, in base a regole stabilite. L'operatore con l'ordine di operazione più alto viene elaborato per primo, seguito dall'operatore con il livello operativo successivo e così via, finché non vengono elaborati tutti gli operatori.
Di seguito è riportata una tabella degli operatori ST nell'ordine del rispettivo livello operativo ordinale:
Funzionamento |
Simbolo |
Livello operativo |
---|---|---|
tra parentesi |
(espressione) |
ordine più alto |
chiamata di funzione |
nome di funzione (elenco parametri) |
.............. |
elevazione a potenza |
EXPT |
............. |
negazione |
– |
............ |
compilazione di complementi |
NOT |
........... |
moltiplicazione |
* |
.......... |
divisione |
/ |
......... |
modulo |
MOD |
........ |
addizione |
+ |
....... |
sottrazione |
– |
...... |
confronto V |
<,>,<=,>= |
..... |
uguale a |
= |
.... |
non uguale a |
<> |
... |
AND booleano |
AND |
.. |
XOR booleano |
XOR |
. |
OR booleano |
OR |
ordine più basso |
Come estensione allo standard IEC 61131-3 (ExST), è possibile utilizzare le assegnazioni come espressioni.
Esempi:
|
|
---|---|
int_var1 := int_var2 := int_var3 + 9; |
(* int_var1 e int_var2 corrispondono entrambi al valore di int_var3 + 9*) |
real_var1 := real_var2 := int_var; |
(* assegnazioni corrette, real_var1 e real_var2 otterranno il valore di int_var *) |
int_var := real_var1 := int_var; |
(* viene visualizzato un messaggio per la mancata corrispondenza del tipo di real-int *) |
IF b := (i = 1) THEN |
(*Espressione utilizzata all'interno dell'istruzione della condizione IF: alla prima b verrà assegnato TRUE o FALSE, in base al fatto che i sia o meno 1, quindi verrà valutato il valore risultante di b.*) |