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

    文章

    6891

    浏览量

    132351
  • 程序
    +关注

    关注

    117

    文章

    3791

    浏览量

    81156
  • 代码
    +关注

    关注

    30

    文章

    4801

    浏览量

    68735

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

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

收藏 人收藏

    评论

    相关推荐

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

    众所周知,在 C 语言中,当一个数除以0的时候,会导致除法运算异常。程序也会因此崩溃。 为了避免程序崩溃,我们需要在代码中包含对 0 的判
    的头像 发表于 09-14 11:11 1797次阅读
    在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

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

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

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

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

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

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

    系统崩溃的解决办法

    由操作失误或病毒恶意软件入侵导致电脑无法正常运作,频繁死机等症状叫做系统崩溃。由软件造成的崩溃即使是性能最好的PC硬件也离不开软件的支持——也就是通常所说的应用程序、操作系统以及驱动程序
    的头像 发表于 03-29 16:03 5201次阅读

    苹果可折叠铰链机制设计曝光,避免显示屏幕出现折痕

      据外媒报道,苹果公司本周获得了一种具有独特铰链机制的可折叠设备专利,该铰链机制利用移动的挡板来帮助防止折叠时显示屏幕出现折痕或损坏。
    的头像 发表于 02-05 14:22 2983次阅读
    苹果可折叠铰链<b class='flag-5'>机制</b>设计曝光,<b class='flag-5'>可</b><b class='flag-5'>避免</b>显示屏幕出现折痕

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

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

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

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

    探究S-1500激活ENENO机制

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

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

    必在块或函数的声明部分声明。 因为EN是一个输入参数,故不能在块内改变EN。 如果没被调用(EN : FALSE),函数的返回值是不定的。 例子(Example) -输出参数ENO
    的头像 发表于 04-30 16:31 1.1w次阅读
    简述西门子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 2782次阅读

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

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

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

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

    如何避免PLC程序卡死呢?

    编写稳定的程序:编写良好的、稳定的PLC程序避免程序卡死的关键。确保程序逻辑清晰、简洁,并遵循编程最佳实践。
    的头像 发表于 01-26 09:14 661次阅读