0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

西门子博途中的SCL关系表达式

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-06-21 09:31 次阅读

以从指令框的下拉列表中选择该比较指令的数据类型 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
    plc
    +关注

    关注

    5006

    文章

    13088

    浏览量

    461277
  • 西门子
    +关注

    关注

    93

    文章

    2989

    浏览量

    115422
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13590
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    17020

原文标题:西门子博途:SCL 关系表达式

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是正则表达式?正则表达式如何工作?哪些语法规则适用正则表达式

    正则表达式又称规则表达式(Regular Expression,在代码中常简写为 regex、regexp 或 RE),是一种用于匹配、查找、替换文本的强大工具。它能够以特定的模式匹配字符串,从而
    的头像 发表于 11-03 14:41 2623次阅读
    什么是正则<b class='flag-5'>表达式</b>?正则<b class='flag-5'>表达式</b>如何工作?哪些语法规则适用正则<b class='flag-5'>表达式</b>?

    防范表达式的失控

    在C 语言中,表达式是最重要的组成部分之一,几乎所有的代码都由表达式构成。表达式的使用如此广泛,读者也许会产生这样的疑问,像+ 、- 、3 、/ 、& & 这样简单的运算也会出现
    发表于 04-22 16:57 13次下载

    浅谈西门子PLC的“SCL语言”编程

    介绍西门子PLC的“SCL语言”编程,相关编程代码
    发表于 01-22 17:25 0次下载

    博世和西门子哪个好_博世和西门子关系

    本文开始阐述了博世和西门子关系以及分析了西门子和博世哪个更好,其次分析了西门子和博世的冰箱哪个更好,最后介绍了博世和西门子家电集团在中国的
    的头像 发表于 04-04 09:30 15.8w次阅读

    Python正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则
    发表于 03-26 09:13 10次下载
    Python正则<b class='flag-5'>表达式</b>指南

    西门子PLC中使用SCL语言编程的技巧

    西门子PLC中使用SCL语言编程的技巧说明。
    发表于 04-22 11:15 63次下载

    浅谈西门子PLC的SCL语言编程

    西门子PLC的SCL语言编程说明。
    发表于 04-22 14:39 46次下载

    浅谈西门子SCL编程

    浅谈西门子SCL编程资料免费下载。
    发表于 04-23 10:44 27次下载

    Lambda表达式详解

    C++11中的Lambda表达式用于 **定义并创建匿名的函数对象** ,以简化编程工作。下面看一下Lambda表达式的基本构成。
    的头像 发表于 02-09 11:28 1116次阅读

    表达式与逻辑门之间的关系

    逻辑表达式是指表示一个表示逻辑运算关系的式子,是一个抽象的类似数学表达式,下面我们重点说明下其表达式与逻辑门之间的关系
    的头像 发表于 02-15 14:54 1521次阅读
    <b class='flag-5'>表达式</b>与逻辑门之间的<b class='flag-5'>关系</b>

    C语言的表达式

    在C语言中,表达式是由操作符和操作数组成。表达式可以由一个或者多个操作数组成,不同的操作符与操作数组成不同的表达式,因此,表达式才是C语言的基本。
    的头像 发表于 02-21 15:09 1272次阅读
    C语言的<b class='flag-5'>表达式</b>

    途中SCL的赋值运算

    可通过赋值运算,可以将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧为表达式的值。
    的头像 发表于 06-19 10:57 5169次阅读

    西门子SCL:WHILE:满足条件时执行

    使用“满足条件时执行”指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(TRUE 或 FALSE)的表达式。可以将逻辑表达式或比较表达式作为条件。
    的头像 发表于 06-27 16:42 2857次阅读

    西门子SCL练习1:使用FC计算平均值

    西门子SCL练习1:使用FC计算平均值
    的头像 发表于 01-02 10:25 2498次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b>图<b class='flag-5'>SCL</b>练习1:使用FC计算平均值

    西门子途的算术表达式

    算术表达式既可以是一个数字值,也可以是由带有算术运算符的两个值或表达式组合而成。 算术运算符可以处理当前 CPU 所支持的各种数据类型。如果在该运算中有 2 个操作数,那么可根据以下条件来确定结果的数据类型。
    的头像 发表于 01-24 11:36 908次阅读