以从指令框的下拉列表中选择该比较指令的数据类型 VARIANT。支持以下数据类型的变量:
PLC 数据类型 (UDT)
STRUCT(STRUCT 数据类型的结构需包含在 PLC 数据类型 (UDT) 中,或者待比较的两个结构需为 ARRAY of STRUCT 的两个元素。不支持背景数据块和匿名结构的变量。)
Any 指向的变量
VARIANT 指向的变量
要比较两个 ARRAY 数据类型的变量,需满足以下要求:
元素的数据类型必须相同。
两个 ARRAY 的维数必须相同。
所有维数的元素数量必须相同,而具体的 ARRAY 限值无需相同。
| 说明 ARRAY of BOOL 比较数据类型为 ARRAY OF BOOL 的两个操作数时,如果元素的个数不能被 8 整除,则还会对填充位进行比较,从而会影响终的比较结果。 |
下表举例说明了“==:等于”的结构比较:
| 数据类型为 A 的变量 | 变量值 | 数据类型为 A 的变量 | 变量值 | 1 | ||
| BOOL | FALSE | BOOL | FALSE | |||
| INT | 2 | INT | 2 | |||
| 数据类型为 A 的变量 | 变量值 | 数据类型为 B 的变量 | 变量值 | 0 | ||
| BOOL | FALSE | BOOL | TRUE | |||
| INT | 2 | INT | 3 | |||
| 数据类型为 A 的变量 | 变量值 | VARIANT(由数据类型为 A 的变量提供) | 变量值 | 1 | ||
| BOOL | FALSE | BOOL | FALSE | |||
| INT | 2 | INT | 2 | |||
下表举例说明了“:不等于”结构的比较:
| 数据类型为 A 的变量 | 变量值 | 数据类型为 A 的变量 | 变量值 | 0 | ||
| BOOL | FALSE | BOOL | FALSE | |||
| INT | 2 | INT | 2 | |||
| 数据类型为 A 的变量 | 变量值 | 数据类型为 B 的变量 | 变量值 | 1 | ||
| BOOL | FALSE | BOOL | TRUE | |||
| INT | 2 | INT | 3 | |||
| 数据类型为 A 的变量 | 变量值 | VARIANT(由数据类型为 A 的变量提供) | 变量值 | 0 | ||
| BOOL | FALSE | BOOL | FALSE | |||
| INT | 2 | INT | 2 | |||
关系表达式的数据类型
下表列出了在关系表达式中可使用的数据类型/数据类型组:
| 比较:等于、不等于 | =、 | 整数/浮点数 | 整数/浮点数 | BOOL |
| 位字符串 | 位字符串 | BOOL | ||
| 字符串 | 字符串 | BOOL | ||
| TIME、LTIME | TIME、LTIME | BOOL | ||
| 日期和时间 | 日期和时间 | BOOL | ||
| VARIANT/ANY | VARIANT/ANY | BOOL | ||
| 任何数据类型(但必须与 VARIANT 的变量数据类型相对应) | VARIANT/ANY | BOOL | ||
| VARIANT/ANY | 任何数据类型 | BOOL | ||
| PLC 数据类型 | PLC 数据类型 | BOOL | ||
| ARRAY of ,ARRAY 限值固定/可变 | ARRAY of ,ARRAY 限值固定/可变 | BOOL | ||
| STRUCT | STRUCT | BOOL | ||
| 比较:小于、小于等于、大于、大于等于 | = | 整数/浮点数 | 整数/浮点数 | BOOL |
| 位字符串 (仅 S7-1200/1500) | 位字符串 (仅 S7-1200/1500) | BOOL | ||
| 字符串 | 字符串 | BOOL | ||
| TIME、LTIME | TIME、LTIME | BOOL | ||
| 日期和时间 | 日期和时间 | BOOL |
示例
以下举例说明了一个关系表达式:
| IF a > b THEN c:= a; | |
| IF A > 20 AND B < 20 THEN C:= TRUE; | |
| IF A(B AND C) THEN C:= FALSE; |
| 说明 在 S7-300/400 内部将通过扩展指令执行 STRING 和 DT 类型的比较。以下操作数不可用于这些函数: FC 的参数 STRUCT 或 ARRAY 类型的 FB 的输入输出参数 |
| 说明 比较硬件数据类型 HW_IO 与 HW_DEVICE 如果要比较这两种数据类型,则需先在块接口的“Temp”区域创建一个 HW_ANY 数据类型的变量,将数据类型为 HW_DEVICE 的 LADDR 复制到该变量中。之后,才能比较 HW_ANY 和 HW_IO。 |