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

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

3天内不再提示

如何在STL中的EN/ENO机制仿真示例呢?

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-09-01 09:45 次阅读

程序块调用与 EN/ENO 机制

从 STL 程序块调用的程序块不提供 EN 和 ENO 参数。无论创建程序块时采用何种编程语言,都可通过状态字的 BR 位将错误语句传送到 STL 程序块中。

通过关联状态字的 BR 位 和逻辑运算结果 (RLO),即可对被调用程序块的错误状态进行评估。被调用的程序块开始执行时,RLO 的信号状态即为“1”。如果在程序块执行后未将 RLO 显式地设置为“0”,则其信号状态将保持为“1”。要将错误语句传送回调用程序块,则需将 的信号状态显式地复位为“0”。并通过指令“SAVE:将 RLO 保存在 BR 位中“和”JNB:若 RLO = 0 则跳转,并保存 RLO”,对错误语句进行置位。

在 STL 中,可对 BR 位进行错误分析。在编程语言 LAD、FBD 和 SCL 中,可根据 BR 位生成使能输出 ENO。

如果状态字中 BR 位的值为“0”,则表示在 STL 程序块调用过程中发生了错误(调用程序块是一个 STL 程序块)。

CPU 中指令的执行 BR 位 返回值 整数的符号
存在错误 0 小于“0” 负数(符号位为“1”)
无错误 1 大于或等于“0” 正数(符号位为“0”)

通过 EN/ENO 机制执行程序序列的示例

下文中举例说明了如何使用 EN/ENO 机制执行数值相加的程序段:

STL 说明
A "TagEnable" // 查询操作数“TagEnable”的信号状态是否为“1”,并与当前的 RLO 进行 AND 运算。
JNB MyLABEL // 评估使能输入 EN
// 如果 RLO =“0”,则跳转至跳转标签“MyLABEL”处,并将当前的 RLO 保存到 BR 位中。不执行以下操作。
// 如果 RLO =“1”,则执行以下操作。
L "Tag_Input_1" // 加载加法运算中的第一个值。
L "Tag_Input_2" // 加载加法运算的第二个值。
+I // 添加值
T "Tag_Result" // 将合计值传送给操作数“Tag_Result”。
AN OV // 查询是否发生溢出。
SAVE // 将 RLO 的信号状态传送到 BR 位。
CLR /// 将 RLO 复位为“0”,并结束逻辑序列。
MyLABEL:A BR // 跳转标签“MyLABEL”
// 查询 BR 位。
= "Tag_Output" // 将 RLO 的信号状态分配给操作数“Tag_Output”。

查询操作数“TagEnable”将确定前导逻辑运算 (RLO) 的结果。指令“JNB:若 RLO = 0 则跳转,并保存 RLO”将 RLO 的值保存在 BR 位中。另外,该指令还将对 RLO 的值进行评估,并根据其信号状态指向以下操作:

如果 RLO 为“0”,则程序在跳转标签“MyLABEL”处以 BR 位的查询结果继续执行。而不执行加法运算。将操作数“Tag_Output”的值分配给当前的 RLO。

如果 RLO 为“1”,则执行加法运算。通过对溢出位 (OV) 的查询,可判断加法运算过程中是否存在错误。查询结果将保存在 BR 中。指令“CLR:将 RLO 复位为 0”将 RLO 复位为“0”,并结束逻辑序列。之后,系统将查询 BR 位并将其分配给操作数“Tag_Output”。通过 BR 位的信号状态以及操作数“Tag_Output”可判断加法运算是否成功执行没有任何错误。

通过 EN/ENO 机制调用程序块的示例

下图中举例说明了如何通过 EN/ENO 回路调用程序块:

STL 说明
A "TagEnable" // 查询操作数“TagEnable”的信号状态是否为“1”,并与当前的 RLO 进行 AND 运算。
JNB MyLABEL // 评估使能输入 EN
// 如果 RLO =“0”,则跳转至跳转标签“MyLABEL”处,并将当前的 RLO 保存到 BR 位中。不执行以下操作。
// 如果 RLO =“1”,则执行以下操作。
CALL "Block name", "Block name_DB" // 调用程序块。
MyLABEL:A BR // 跳转标签“MyLABEL”
// 查询 BR 位并在 AND 运算后与 RLO 进行运算。
= "Tag_Output" // 将 RLO 的信号状态分配给操作数“Tag_Output”。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STL
    STL
    +关注

    关注

    0

    文章

    85

    浏览量

    18289
  • 状态机
    +关注

    关注

    2

    文章

    491

    浏览量

    27452
  • 逻辑运算器
    +关注

    关注

    0

    文章

    4

    浏览量

    2405

原文标题:西门子博途:在 STL 中的 EN/ENO 机制仿真示例

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

收藏 人收藏

    评论

    相关推荐

    何在proteus里完成51单片机的仿真

    何在proteus里完成51单片机的仿真?其仿真步骤有哪些
    发表于 01-24 06:17

    X-CUBE-STL与ARM的STL的区别是什么?

    大家好,我正在做一些关于 STL 的研究。STM 的 X-CUBE-STL 产品与 ARM STL 库有何不同?你为什么要用一个而不是另一个?
    发表于 12-02 07:18

    ls1028A如何启用eno3?

    我想启用 eno3 接口。 根据手册: 内部连接(MAC 到 MAC)到 swp5。这用于在交换机和 Linux 网桥之间传输交换机控制的流量。如果在 RCW 设置了第 851 位,则此接口存在
    发表于 05-06 07:22

    C++ STL的概念及举例

      本篇文章是作者本人使用STL 后的一些看法, 对於想要靠此文章学习STL, 是不可能的. 建议叁后面介绍的一些书入门.   STL的概念   在STL
    发表于 08-30 11:39 1396次阅读

    STL算法在GIS的应用

    使用STL 算法实现GIS 算法可以保证它的简洁和高效该文结合C++代码实例抽象出了地理算子的概念应用在GIS 算法当中通过定制适配器来消除地理算子和STL 算法之间的不匹配同时拓展了ST
    发表于 06-28 16:55 33次下载

    multisim10仿真软件示波器如何看幅度及相位

    Multisim是一个强大的电路图捕捉和仿真环境,工程师、学生以及教授可用来仿真电路和设计印刷电路板(PCB)原型。如何在multisim10仿真软件
    发表于 01-04 10:28 5.1w次阅读
    multisim10<b class='flag-5'>仿真</b>软件<b class='flag-5'>中</b>示波器如何看幅度及相位

    通过各种指令EN/ENO机制,可以检测运行错误

    为该块互连了 EN/ENO 机制。如果执行期间没有任何错误,则 ENO 使能输出的信号状态将为“1”。如果执行期间发生错误,则 ENO 使能
    的头像 发表于 03-02 14:36 4671次阅读

    探究S-1500激活ENENO机制

    通过各种指令EN/ENO 机制,可以检测运行错误,并避免程序崩溃。 默认情况下,新插入的 ENO 指令已被禁用。随后可以激活
    的头像 发表于 04-16 11:25 1822次阅读
    探究S-1500激活ENENO<b class='flag-5'>机制</b>

    简述西门子SCL语言-输入参数EN/输出参数ENO

    必在块或函数的声明部分声明。 因为EN是一个输入参数,故不能在块内改变EN。 如果没被调用(EN : FALSE),函数的返回值是不定的。 例子(Example) -输出参数ENO
    的头像 发表于 04-30 16:31 1w次阅读
    简述西门子SCL语言-输入参数<b class='flag-5'>EN</b>/输出参数<b class='flag-5'>ENO</b>

    STL的概述

    C++ STL 是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法,关于 STL ,下面通过一个系统框图来对其进行一个总结
    的头像 发表于 01-20 17:08 1301次阅读
    <b class='flag-5'>STL</b>的概述

    博途使用STL的MOVE指令

    现在,在 S7-1500 CPU 上可使用 STL 的 MOVE 指令进行编程。
    的头像 发表于 06-06 11:10 6175次阅读
    博途使用<b class='flag-5'>STL</b><b class='flag-5'>中</b>的MOVE指令

    使用 EN/ENO 机制可避免程序崩溃

    可用于以下两个方面: LAD 和 FBD 支持 EN/ENO 机制,可调用程序代码的简单指令和高级指令。 使用 EN/
    的头像 发表于 06-28 16:21 2293次阅读
    使用 <b class='flag-5'>EN</b>/<b class='flag-5'>ENO</b> <b class='flag-5'>机制</b>可避免程序崩溃

    SCLEN/ENO 机制概述

    SCL EN/ENO 机制概述 在 SCL 程序段,可以通过赋值来改变 ENO。为此,请
    的头像 发表于 08-23 10:08 2369次阅读

    如何显示STL程序的程序状态

    在表循环更新并显示程序的状态。执行 STL 程序后立即显示这些表格。并读取程序每一行的执行状态。显示内容取决于所用的 CPU(S7-300、S7-400 或 S7-1500)。
    的头像 发表于 08-23 10:31 941次阅读
    如何显示<b class='flag-5'>STL</b>程序的程序状态<b class='flag-5'>呢</b>?

    西门子博途示例:如何使能指令的ENO输出

    在梯形图(LAD)和功能块图(FBD)中有些指令具有 ENO (使能输出) 。
    的头像 发表于 01-15 09:22 3242次阅读
    西门子博途<b class='flag-5'>示例</b>:如何使能指令的<b class='flag-5'>ENO</b>输出<b class='flag-5'>呢</b>?