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

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

3天内不再提示

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

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

简介

使用使能输出 ENO,可检测和处理某些运行系统错误。后续指令的执行取决于该使能输出的信号状态。使用 EN/ENO 机制可避免程序崩溃。块状态将以布尔型变量的形式进行传递。

EN/ENO 机制可用于以下两个方面:

LAD 和 FBD 支持 EN/ENO 机制,可调用程序代码中的简单指令和高级指令。

使用 EN/ENO 机制时,可对以下指令调用进行影响,并使用指令“RET:返回”定制到程序块外的跳转。同时,还可为程序块的使能输出 ENO 赋值(0 或 1)。该特性通常用于 LAD 和 FBD 程序块。在 SCL 程序块中,也可使用该功能,无需再使用指令“RET”对 SCL 程序块的使能输出 ENO 进行影响。

在程序段边界处,该使能输出的信号状态将重复性地置位为“1”。例如,在 LAD 程序块中,可通过以下方式识别:即使上一个程序段中最后一个指令的使能输出 ENO 返回信号状态“0”,左侧母线也始终提供电流。

指令“RET:返回”(LAD/FBD) 的功能

逻辑运算结果为 0 时,不执行该指令而执行下一个程序段。

逻辑运算结果为 1 时,将执行该指令并返回调用程序块。

ENO 块的信号状态可通过以下四个选项确定:

RLO:RLO = 1 时,ENO 块将置位为 TRUE。

TRUE:ENO 块将置位为 TRUE。

FALSE:ENO 块将置位为 FALSE。

Operand:由指定操作数的信号状态确定 ENO 块的信号状态。

编程与 I/O 访问错误

EN/ENO 机制无法编程和 I/O 访问错误。为此,可通过 OB 进行全局错误处理或使用“GET_ERROR”、“GET_ERR_ID”指令进行本地错误处理或(仅 S7-1200/1500)。如果指令成功执行无任何错误,则可评估相关的使能输出 ENO。

所有编程语言中的程序块调用 (S7-300/400)

以下示例适用于 S7-300/400 系列 CPU:如果调用的程序块中不含任何指令,则 BR 位和 ENO 使能输出均不受影响。BR 位的信号状态将保持为一个常量结果。此时,所有语句都无法成功调用该程序块。

影响 SCL 程序块的使能输出 ENO

说明

SCL 程序块中的最后一个指令 ENO 通常会影响 ENO 块。

另外,也可跳出该程序块,并同时使用指令“RETURN”为 ENO 块赋值“1”或“0”。

操作步骤

要影响 ENO 块的信号状态,请按以下步骤操作:

激活 EN/ENO 机制。

然后编程:

IF ENO := 0 THEN

RETURN;

END_IF;

结果

发生错误时(如,结果发生溢出),使能输出 ENO 将先返回信号状态“0”,如一个加指令。该 ENO 块因此为 FALSE,并在上一个程序块调用完成后从该程序块跳到下一个指令处。在一个 SCL 程序段(如,包含多个数学函数等)中,可对该操作步骤进行多次编程。

但无需编程跳转,跳出该程序块。在 SCL 程序块中,如果单个指令的使能输出 ENO 信号状态为“0”,则可确定不执行后续指令。为此,指令 ENO 将在后续的 IF 指令中与以下指令进行关联。

说明
ENO 块的影响
通过 SCL 程序块,最后一个指令 ENO 的信号状态将在该块结束处传送到 ENO 块中。
因此,指令 ENO 可直接影响 ENO 块。

在 SCL 中使用 EN/ENO 机制的示例

使用 EN/ENO 机制的指令示例

要在指令中使用 EN/ENO 机制,则需激活块属性“自动设置 ENO”。下文中举例说明了如何在“a + b”运算中使用使能输出 ENO:

"MyOutputREAL":= #a + #b;
"MyOutputBOOL":= ENO;

如果执行“a/b”运算后成功无错误,则操作数“MyOutputBool”的信号状态为“1”。发生错误时,使能输出 ENO 的信号状态为“0”。

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

以下示例显示了程序块的调用过程。为此,需激活 EN/ENO 机制,且必须事先编程一个影响块 ENO 的指令:

IF ENO := 1 THEN
"Block name_DB"();
END_IF;

仅当使能输出 ENO 的信号状态为“1”时,才调用并执行该程序块。如果激活了 EN/ENO 机制,则被调用的程序块还将返回一个 ENO 块。该 ENO 块之后将在被调用的程序块中使用。

用于单个指令(指令 ENO)

c159c516-158b-11ee-962d-dac502259ad0.png

用于程序块调用(块 ENO)

c1719b78-158b-11ee-962d-dac502259ad0.png

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

    关注

    40

    文章

    6002

    浏览量

    129921
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79552
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66807

原文标题:西门子博途:EN/ENO 机制的基本知识

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

收藏 人收藏

    评论

    相关推荐

    在STM32单片机上运行除零运算的C程序代码时为何程序崩溃

    众所周知,在 C 语言中,当一个数除以0的时候,会导致除法运算异常。程序也会因此崩溃。 为了避免程序崩溃,我们需要在代码中包含对 0 的判
    的头像 发表于 09-14 11:11 916次阅读
    在STM32单片机上运行除零运算的C<b class='flag-5'>程序</b>代码时为何<b class='flag-5'>程序</b>不<b class='flag-5'>崩溃</b>?

    ENO方案控制器xc846

    ENO方案控制器xc846
    发表于 08-20 08:51

    求大神解答LabVIEW 程序崩溃

    这个程序本来可以运行,后来崩溃一次之后,每次运行,,没几秒就崩溃了。重写其他的类似程序也一直崩溃
    发表于 05-12 15:47

    怎么才能避免SD卡频繁读写防止死机机制

    怎么才能避免SD卡频繁读写防止死机机制
    发表于 10-23 08:14

    永华ENO-88电磁炉电路图

    永华ENO-88电磁炉电路图,原理图,图纸。
    发表于 01-15 18:28 118次下载
    永华<b class='flag-5'>ENO</b>-88电磁炉电路图

    基于信息熵的WSN节点拥塞避免机制

    在本文中,提出了基于节点相对信息熵的拥塞避免机制,该拥塞避免机制是基于事件的有效信息量,真正体现无线传感器网络以事件为中心的特点。
    发表于 06-29 10:34 922次阅读
    基于信息熵的WSN节点拥塞<b class='flag-5'>避免</b><b class='flag-5'>机制</b>

    行走在崩溃边缘,程序猿“自救”指南!

    摘要: 都说钱是缓解痛苦的良方,可就算是多金的程序猿小哥也有扛不住的崩溃瞬间。到底因何崩溃?究竟是哪些瞬间让程序猿小哥哭笑不得,崩溃不已?
    发表于 07-23 18:04 90次阅读

    微软推出Outlook桌面崩溃修复程序

    Microsoft的Windows Outlook电子邮件应用程序在启动时就开始崩溃,今天全世界的许多用户都在使用它。Office 365商业用户报告说,Outlook似乎在最近更新之后启动了,然后立即崩溃了。
    的头像 发表于 07-16 16:11 2601次阅读

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

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

    探究S-1500激活ENENO机制

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

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

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

    SCL中的 EN/ENO 机制概述

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

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

    从 STL 程序块调用的程序块不提供 ENENO 参数。无论创建程序块时采用何种编程语言,都可通过状态字的 BR 位将错误语句传送到
    的头像 发表于 09-01 09:45 533次阅读

    如何在Windows下使用 Supervisor 重新拉起崩溃的Python程序

    我们用Python定时跑一些自动化程序的时候会出现程序崩溃的情况。此时如果你本人不在电脑面前,或者没有留意到程序崩溃,没有及时重新拉起
    的头像 发表于 10-21 11:23 1175次阅读
    如何在Windows下使用 Supervisor 重新拉起<b class='flag-5'>崩溃</b>的Python<b class='flag-5'>程序</b>

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

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