簡介
使用使能輸出 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)將重復(fù)性地置位為“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í)行無任何錯誤,則可評估相關(guān)的使能輸出 ENO。
所有編程語言中的程序塊調(diào)用 (S7-300/400)
以下示例適用于 S7-300/400 系列 CPU:如果調(diào)用的程序塊中不含任何指令,則 BR 位和 ENO 使能輸出均不受影響。BR 位的信號狀態(tài)將保持為一個常量結(jié)果。此時,所有語句都無法成功調(diào)用該程序塊。
影響 SCL 程序塊的使能輸出 ENO
說明
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ù)學(xué)函數(shù)等)中,可對該操作步驟進行多次編程。
但無需編程跳轉(zhuǎn),跳出該程序塊。在 SCL 程序塊中,如果單個指令的使能輸出 ENO 信號狀態(tài)為“0”,則可確定不執(zhí)行后續(xù)指令。為此,指令 ENO 將在后續(xù)的 IF 指令中與以下指令進行關(guān)聯(lián)。
|
說明 ENO 塊的影響 通過 SCL 程序塊,最后一個指令 ENO 的信號狀態(tài)將在該塊結(jié)束處傳送到 ENO 塊中。 因此,指令 ENO 可直接影響 ENO 塊。 |
在 SCL 中使用 EN/ENO 機制的示例
使用 EN/ENO 機制的指令示例
要在指令中使用 EN/ENO 機制,則需激活塊屬性“自動設(shè)置 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; |
僅當(dāng)使能輸出 ENO 的信號狀態(tài)為“1”時,才調(diào)用并執(zhí)行該程序塊。如果激活了 EN/ENO 機制,則被調(diào)用的程序塊還將返回一個 ENO 塊。該 ENO 塊之后將在被調(diào)用的程序塊中使用。
用于單個指令(指令 ENO)

用于程序塊調(diào)用(塊 ENO)

-
電流
+關(guān)注
關(guān)注
40文章
7212瀏覽量
141193 -
程序
+關(guān)注
關(guān)注
117文章
3846瀏覽量
85228 -
代碼
+關(guān)注
關(guān)注
30文章
4967瀏覽量
73954
原文標(biāo)題:西門子博途:EN/ENO 機制的基本知識
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
在STM32單片機上運行除零運算的C程序代碼時為何程序不崩潰?
如何避免存儲示波器再次崩潰?
基于信息熵的WSN節(jié)點擁塞避免機制
行走在崩潰邊緣,程序猿“自救”指南!
蘋果可折疊鉸鏈機制設(shè)計曝光,可避免顯示屏幕出現(xiàn)折痕
微軟推出Outlook桌面崩潰修復(fù)程序
通過各種指令中的EN/ENO機制,可以檢測運行錯誤
簡述西門子SCL語言-輸入?yún)?shù)EN/輸出參數(shù)ENO
如何在STL中的EN/ENO機制仿真示例呢?
如何在Windows下使用 Supervisor 重新拉起崩潰的Python程序
使用 EN/ENO 機制可避免程序崩潰
評論