以从指令框的下拉列表中选择该比较指令的数据类型 VARIANT。支持以下数据类型的变量:
PLC 数据类型 (UDT)
STRUCT(STRUCT 数据类型的结构需包含在 PLC 数据类型 (UDT) 中,或者待比较的两个结构需为 ARRAY of STRUCT 的两个元素。不支持背景数据块和匿名结构的变量。)
Any 指向的变量
VARIANT 指向的变量
要比较两个 ARRAY 数据类型的变量,需满足以下要求:
元素的数据类型必须相同。
两个 ARRAY 的维数必须相同。
所有维数的元素数量必须相同,而具体的 ARRAY 限值无需相同。
说明 ARRAY of BOOL 比较数据类型为 ARRAY OF BOOL 的两个操作数时,如果元素的个数不能被 8 整除,则还会对填充位进行比较,从而会影响最终的比较结果。 |
下表举例说明了“==:等于”的结构比较:
<操作数 1> | <操作数 2> | 指令的 RLO | ||||
---|---|---|---|---|---|---|
数据类型为 A 的变量 |
变量值 |
数据类型为 A 的变量 |
变量值 | 1 | ||
BOOL | FALSE | BOOL | FALSE | |||
INT | 2 | INT | 2 |
<操作数 1> | <操作数 2> | 指令的 RLO | ||||
---|---|---|---|---|---|---|
数据类型为 A 的变量 |
变量值 |
数据类型为 B 的变量 |
变量值 | 0 | ||
BOOL | FALSE | BOOL | TRUE | |||
INT | 2 | INT | 3 |
<操作数 1> | <操作数 2> | 指令的 RLO | ||||
---|---|---|---|---|---|---|
数据类型为 A 的变量 |
变量值 | VARIANT(由数据类型为 A 的变量提供) | 变量值 | 1 | ||
BOOL | FALSE | BOOL | FALSE | |||
INT | 2 | INT | 2 |
下表举例说明了“<>:不等于”结构的比较:
<操作数 1> | <操作数 2> | 指令的 RLO | ||||
---|---|---|---|---|---|---|
数据类型为 A 的变量 |
变量值 |
数据类型为 A 的变量 |
变量值 | 0 | ||
BOOL | FALSE | BOOL | FALSE | |||
INT | 2 | INT | 2 |
<操作数 1> | <操作数 2> | 指令的 RLO | ||||
---|---|---|---|---|---|---|
数据类型为 A 的变量 |
变量值 |
数据类型为 B 的变量 |
变量值 | 1 | ||
BOOL | FALSE | BOOL | TRUE | |||
INT | 2 | INT | 3 |
<操作数 1> | <操作数 2> | 指令的 RLO | ||||
---|---|---|---|---|---|---|
数据类型为 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 |
示例
以下举例说明了一个关系表达式:
SCL | |
---|---|
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。 |
审核编辑:汤梓红
-
plc
+关注
关注
5006文章
13088浏览量
461277 -
西门子
+关注
关注
93文章
2989浏览量
115422 -
数据类型
+关注
关注
0文章
236浏览量
13590 -
SCL
+关注
关注
1文章
239浏览量
17020
原文标题:西门子博途:SCL 关系表达式
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论