当前位置:首页  >  技术文章  >  西门子博途:EN/ENO 机制的基本知识

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

更新时间:2023-07-04 点击量:4083

简介

使用使能输出 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 块的信号状态,请按以下步骤操作:

    1. 激活 EN/ENO 机制。

    2. 然后编程:

      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 块之后将在被调用的程序块中使用。


联系方式

邮箱:15214375780@163.com 地址:上海市松江区高技路655号4栋413-415
咨询热线

15214375780

(周一至周日9:00-19:00) 在线咨询
微信二维码
移动端浏览
上海茂硕机械设备有限公司©2024版权所有    备案号:沪ICP备18010475号-4 技术支持:化工仪器网    管理登陆    sitemap.xml