简介
使用使能输出 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)

用于程序块调用(块 ENO)

全部0条评论
快来发表一下你的评论吧 !