Una expresión es una construcción que devuelve un valor tras su evaluación. Este valor se utiliza en las instrucciones.
Las expresiones están compuestas por operadores, operandos o asignaciones. Un operando puede ser una constante, una variable, una llamada de función u otra expresión.
Ejemplos
33 |
(* Constante *) |
ivar |
(* Variable *) |
fct(a,b,c) |
(* Llamada de función*) |
a AND b |
(* Expresión *) |
(x*y) / z |
(* Expresión *) |
real_var2 := int_var; |
(* Asignación, véase a continuación *) |
La evaluación de una expresión se realiza procesando los operadores según unas reglas determinadas. El operador con el orden más alto de operación se procesa primero, seguido del operador con el nivel de operación siguiente y así sucesivamente hasta que se hayan procesado todos los operadores.
A continuación encontrará una tabla de los operadores ST ordenados por nivel de operación ordinal:
Operación |
Símbolo |
Nivel de operación |
---|---|---|
entre paréntesis |
(expresión) |
orden más alto |
llamada de función |
nombre de la función (lista de parámetros) |
.............. |
exponenciación |
EXPT |
............. |
negación |
– |
............ |
creación de complementos |
NOT |
........... |
multiplicar |
* |
.......... |
dividir |
/ |
......... |
módulo |
MOD |
........ |
sumar |
+ |
....... |
restar |
– |
...... |
comparar V |
<,>,<=,>= |
..... |
igual a |
= |
.... |
no es igual a |
<> |
... |
AND booleano |
AND |
.. |
XOR booleano |
XOR |
. |
OR booleano |
OR |
orden más bajo |
Como ampliación del estándar IEC 61131-3 (ExST), las asignaciones se pueden utilizar como una expresión.
Ejemplos:
|
|
---|---|
int_var1 := int_var2 := int_var3 + 9; |
(* int_var1 e int_var2 equivalen al valor de int_var3 + 9*) |
real_var1 := real_var2 := int_var; |
(* las asignaciones correctas, real_var1 y real_var2 obtendrán el valor de int_var *) |
int_var := real_var1 := int_var; |
(* se mostrará un mensaje debido al conflicto de tipos real-int *) |
IF b := (i = 1) THEN |
(*Expresión empleada dentro de una instrucción de condición IF: primero se asignará a b TRUE o FALSE, en función de si i es 1 o no, tras lo cual se evaluará el valor resultante de b.*) |