表达式

概述

表达式是一种进行计算后会返回值的结构。该值在指令中使用。

表达式由操作符操作数和/或赋值组成。操作数可为常量、变量、功能调用或另一个表达式。

示例

33

(* 常量 *)

ivar

(* 变量 *)

fct(a,b,c)

(* 功能调用*)

a AND b

(* 表达式 *)

(x*y) / z

(* 表达式 *)

real_var2 := int_var;

(* 分配,请参阅下文 *)

操作顺序

表达式的计算通过根据特定规则处理操作符来执行。首先处理最高运算次序的操作符,然后处理下个级别的操作符,以此类推,直到处理完所有操作符。

在下面是 ST 运算符的表格,运算符按操作级别顺序排列:

操作

符号

操作级别

置于括号中

(表达式)

最高次序

功能调用

功能名称(参数列表)

..............

EXPT

.............

取反

............

构建补偿

NOT

...........

*

..........

/

.........

模数

MOD

........

+

.......

......

比较 V

<,>,<=,>=

.....

等于

=

....

不等于

<>

...

布尔 AND

AND

..

布尔 XOR

XOR

.

布尔 OR

OR

最低次序

表达式形式的赋值

作为 IEC 61131-3 标准 (ExST) 的扩展,可以表达式的形式使用赋值。

示例:

int_var1 := int_var2 := int_var3 + 9;

(* int_var1int_var2 均等于 int_var3 + 9 的值*)

real_var1 := real_var2 := int_var;

(* 正确赋值,real_var1real_var2 将获得 int_var 的值*)

int_var := real_var1 := int_var;

(* 由于类型不匹配 real-int 将会显示一条消息 *)

IF b := (i = 1) THEN
i := i + 1;
END_IF

(*在 IF 条件声明中使用的表达式:首先根据 i 是否为 1 为 b 分配 TRUE 或 FALSE,然后评估 b 的结果值。*)