簡介
使用使能輸出 ENO,可檢測和處理某些運行系統(tǒng)錯誤。后續(xù)指令的執(zhí)行取決于該使能輸出的信號狀態(tài)。使用 EN/ENO 機制可避免程序崩潰。塊狀態(tài)將以布爾型變量的形式進行傳遞。
EN/ENO 機制可用于以下兩個方面:
LAD 和 FBD 支持 EN/ENO 機制,可調(diào)用程序代碼中的簡單指令和高級指令。
使用 EN/ENO 機制時,可對以下指令調(diào)用進行影響,并使用指令“RET:返回"定制到程序塊外的跳轉(zhuǎn)。同時,還可為程序塊的使能輸出 ENO 賦值(0 或 1)。該特性通常用于 LAD 和 FBD 程序塊。在 SCL 程序塊中,也可使用該功能,無需再使用指令“RET"對 SCL 程序塊的使能輸出 ENO 進行影響。
在程序段邊界處,該使能輸出的信號狀態(tài)將重復性地置位為“1"。例如,在 LAD 程序塊中,可通過以下方式識別:即使上一個程序段中最后一個指令的使能輸出 ENO 返回信號狀態(tài)“0",左側(cè)母線也始終提供電流。
指令“RET:返回"(LAD/FBD) 的功能
邏輯運算結(jié)果為 0 時,不執(zhí)行該指令而執(zhí)行下一個程序段。
邏輯運算結(jié)果為 1 時,將執(zhí)行該指令并返回調(diào)用程序塊。
ENO 塊的信號狀態(tài)可通過以下四個選項確定:
RLO:RLO = 1 時,ENO 塊將置位為 TRUE。
TRUE:ENO 塊將置位為 TRUE。
FALSE:ENO 塊將置位為 FALSE。
Operand:由操作數(shù)的信號狀態(tài)確定 ENO 塊的信號狀態(tài)。
編程與 I/O 訪問錯誤
EN/ENO 機制無法編程和 I/O 訪問錯誤。為此,可通過 OB 進行全局錯誤處理或使用“GET_ERROR"、“GET_ERR_ID"指令進行本地錯誤處理或(僅 S7-1200/1500)。如果指令成功執(zhí)行無任何錯誤,則可評估相關的使能輸出 ENO。
所有編程語言中的程序塊調(diào)用 (S7-300/400)
以下示例適用于 S7-300/400 系列 CPU:如果調(diào)用的程序塊中不含任何指令,則 BR 位和 ENO 使能輸出均不受影響。BR 位的信號狀態(tài)將保持為一個常量結(jié)果。此時,所有語句都無法成功調(diào)用該程序塊。
說明
SCL 程序塊中的最后一個指令 ENO 通常會影響 ENO 塊。
另外,也可跳出該程序塊,并同時使用指令“RETURN"為 ENO 塊賦值“1"或“0"。
操作步驟
要影響 ENO 塊的信號狀態(tài),請按以下步驟操作:
激活 EN/ENO 機制。
然后編程:
IF ENO := 0 THEN
RETURN;
END_IF;
結(jié)果
發(fā)生錯誤時(如,結(jié)果發(fā)生溢出),使能輸出 ENO 將先返回信號狀態(tài)“0",如一個加指令。該 ENO 塊因此為 FALSE,并在上一個程序塊調(diào)用完成后從該程序塊跳到下一個指令處。在一個 SCL 程序段(如,包含多個數(shù)學函數(shù)等)中,可對該操作步驟進行多次編程。
但無需編程跳轉(zhuǎn),跳出該程序塊。在 SCL 程序塊中,如果單個指令的使能輸出 ENO 信號狀態(tài)為“0",則可確定不執(zhí)行后續(xù)指令。為此,指令 ENO 將在后續(xù)的 IF 指令中與以下指令進行關聯(lián)。
說明 ENO 塊的影響 通過 SCL 程序塊,最后一個指令 ENO 的信號狀態(tài)將在該塊結(jié)束處傳送到 ENO 塊中。 因此,指令 ENO 可直接影響 ENO 塊。 |
在 SCL 中使用 EN/ENO 機制的示例
使用 EN/ENO 機制的指令示例
要在指令中使用 EN/ENO 機制,則需激活塊屬性“自動設置 ENO"。下文中舉例說明了如何在“a + b"運算中使用使能輸出 ENO:
"MyOutputREAL":= #a + #b; |
"MyOutputBOOL":= ENO; |
如果執(zhí)行“a/b"運算后成功無錯誤,則操作數(shù)“MyOutputBool"的信號狀態(tài)為“1"。發(fā)生錯誤時,使能輸出 ENO 的信號狀態(tài)為“0"。
通過 EN/ENO 機制調(diào)用程序塊的示例
以下示例顯示了程序塊的調(diào)用過程。為此,需激活 EN/ENO 機制,且必須事先編程一個影響塊 ENO 的指令:
IF ENO := 1 THEN |
"Block name_DB"(); |
END_IF; |
僅當使能輸出 ENO 的信號狀態(tài)為“1"時,才調(diào)用并執(zhí)行該程序塊。如果激活了 EN/ENO 機制,則被調(diào)用的程序塊還將返回一個 ENO 塊。該 ENO 塊之后將在被調(diào)用的程序塊中使用。