关系表达式
说明:关系表达式将两个操作数的值或数据类型进行比较,然后得到一个布尔值。如果比较结果为真,则结果为 TRUE,否则为FALSE。
关系运算符可以处理当前 CPU 所支持的各种数据类型。结果的数据类型始终为 Bool。
编写关系表达式时,请注意以下规则:
以下数据类型组中的所有变量都可以进行比较:
整数/浮点数
位、位序列
字符串
对于以下数据类型,只能比较相同类型的变量:
TIME
日期和时间
UDT
Array
Struct
Variant
String 比较是对以 Windows 字符集编码的字符进行比较;而 WSting比较则是对 UTF-16编码的字符进行比较。在比较过程中,将比较变量的长度及各字符对应的数值。
Array 比较需要数组维度、数组元素数据类型与数量完全相同
UDT、Array、Struct、Variant等进行的比较只能使用S7-1200 V4.2及其以上的版本。
关系表达式的数据类型
表2列出了在关系表达式中可使用的数据类型/数据类型组:
运算 | 运算符 | 优先级 | 第一个操作数 | 第二个操作数 | 结果 |
---|---|---|---|---|---|
小于、小于等于、大于、大于等于 | <、<=、>、>= | 6 | 整数/浮点数 | 整数/浮点数 | Bool |
位序列 | 位序列 | Bool | |||
字符串 | 字符串 | Bool | |||
Time | Time | Bool | |||
日期和时间 | 日期和时间 | Bool | |||
等于、不等于 | ==、<> | 7 | 整数/浮点数 | 整数/浮点数 | Bool |
位序列 | 位序列 | Bool | |||
字符串 | 字符串 | Bool | |||
Time | Time | Bool | |||
日期和时间 | 日期和时间 | Bool | |||
Variant | 任意数据类型 | Bool | |||
UDT | UDT | Bool | |||
Array | Array | Bool | |||
Struct | Struct | Bool |
示例
以下举例说明了一个关系表达式:
IF a > b THEN c:= a;
IF A > 20 AND B < 20 THEN C:= TRUE;
IF A<>(B AND C) THEN C:= FALSE;
逻辑表达式
说明:逻辑表达式由两个操作数和逻辑运算符(AND、OR 或 XOR)或取反操作数 (NOT) 组成。
逻辑运算符可以处理当前 CPU 所支持的各种数据类型。如果两个操作数都是 Bool 数据类型,则逻辑表达式的结果也为Bool数据类型。如果两个操作数中至少有一个是位序列,则结果也为位序列而且结果是由Zui高操作数的类型决定。例如,当逻辑表达式的两个操作数分别是Byte 类型和 Word 类型时,结果为 Word类型。
逻辑表达式中一个操作数为 Bool类型而另一个为位序列时,必须先将 Bool类型的操作数显式转换为位序列类型。
逻辑表达式的数据类型
下表列出了逻辑表达式中可使用的数据类型:
运算 | 运算符 | 优先级 | 第一个操作数 | 第二个操作数 | 结果 |
---|---|---|---|---|---|
取反 | NOT | 3 | Bool | - | Bool |
求反码 | 位序列 | - | 位序列 | ||
与 | AND、& | 8 | Bool | Bool | Bool |
位序列 | 位序列 | 位序列 | |||
异或 | XOR | 9 | Bool | Bool | Bool |
位序列 | 位序列 | 位序列 | |||
或 | OR | 10 | Bool | Bool | Bool |
位序列 | 位序列 | 位序列 |