西門(mén)子博途:EN/ENO 機(jī)制的基本知識(shí)
簡(jiǎn)介
使用使能輸出 ENO,可檢測(cè)和處理某些運(yùn)行系統(tǒng)錯(cuò)誤。后續(xù)指令的執(zhí)行取決于該使能輸出的信號(hào)狀態(tài)。使用 EN/ENO 機(jī)制可避免程序崩潰。塊狀態(tài)將以布爾型變量的形式進(jìn)行傳遞。
EN/ENO 機(jī)制可用于以下兩個(gè)方面:
RLO:RLO = 1 時(shí),ENO 塊將置位為 TRUE。
TRUE:ENO 塊將置位為 TRUE。
FALSE:ENO 塊將置位為 FALSE。
Operand:由操作數(shù)的信號(hào)狀態(tài)確定 ENO 塊的信號(hào)狀態(tài)。
激活 EN/ENO 機(jī)制。
然后編程:
IF ENO := 0 THEN
RETURN;
END_IF;
LAD 和 FBD 支持 EN/ENO 機(jī)制,可調(diào)用程序代碼中的簡(jiǎn)單指令和高級(jí)指令。
使用 EN/ENO 機(jī)制時(shí),可對(duì)以下指令調(diào)用進(jìn)行影響,并使用指令“RET:返回”定制到程序塊外的跳轉(zhuǎn)。同時(shí),還可為程序塊的使能輸出 ENO 賦值(0 或 1)。該特性通常用于 LAD 和 FBD 程序塊。在 SCL 程序塊中,也可使用該功能,無(wú)需再使用指令“RET”對(duì) SCL 程序塊的使能輸出 ENO 進(jìn)行影響。
在程序段邊界處,該使能輸出的信號(hào)狀態(tài)將重復(fù)性地置位為“1”。例如,在 LAD 程序塊中,可通過(guò)以下方式識(shí)別:即使上一個(gè)程序段中最后一個(gè)指令的使能輸出 ENO 返回信號(hào)狀態(tài)“0”,左側(cè)母線也始終提供電流。
指令“RET:返回”(LAD/FBD) 的功能
邏輯運(yùn)算結(jié)果為 0 時(shí),不執(zhí)行該指令而執(zhí)行下一個(gè)程序段。
邏輯運(yùn)算結(jié)果為 1 時(shí),將執(zhí)行該指令并返回調(diào)用程序塊。
ENO 塊的信號(hào)狀態(tài)可通過(guò)以下四個(gè)選項(xiàng)確定:
編程與 I/O 訪問(wèn)錯(cuò)誤
EN/ENO 機(jī)制無(wú)法編程和 I/O 訪問(wèn)錯(cuò)誤。為此,可通過(guò) OB 進(jìn)行全局錯(cuò)誤處理或使用“GET_ERROR”、“GET_ERR_ID”指令進(jìn)行本地錯(cuò)誤處理或(僅 S7-1200/1500)。如果指令成功執(zhí)行無(wú)任何錯(cuò)誤,則可評(píng)估相關(guān)的使能輸出 ENO。
所有編程語(yǔ)言中的程序塊調(diào)用 (S7-300/400)
以下示例適用于 S7-300/400 系列 CPU:如果調(diào)用的程序塊中不含任何指令,則 BR 位和 ENO 使能輸出均不受影響。BR 位的信號(hào)狀態(tài)將保持為一個(gè)常量結(jié)果。此時(shí),所有語(yǔ)句都無(wú)法成功調(diào)用該程序塊。
說(shuō)明
SCL 程序塊中的最后一個(gè)指令 ENO 通常會(huì)影響 ENO 塊。
另外,也可跳出該程序塊,并同時(shí)使用指令“RETURN”為 ENO 塊賦值“1”或“0”。
操作步驟
要影響 ENO 塊的信號(hào)狀態(tài),請(qǐng)按以下步驟操作:
結(jié)果
發(fā)生錯(cuò)誤時(shí)(如,結(jié)果發(fā)生溢出),使能輸出 ENO 將先返回信號(hào)狀態(tài)“0”,如一個(gè)加指令。該 ENO 塊因此為 FALSE,并在上一個(gè)程序塊調(diào)用完成后從該程序塊跳到下一個(gè)指令處。在一個(gè) SCL 程序段(如,包含多個(gè)數(shù)學(xué)函數(shù)等)中,可對(duì)該操作步驟進(jìn)行多次編程。
但無(wú)需編程跳轉(zhuǎn),跳出該程序塊。在 SCL 程序塊中,如果單個(gè)指令的使能輸出 ENO 信號(hào)狀態(tài)為“0”,則可確定不執(zhí)行后續(xù)指令。為此,指令 ENO 將在后續(xù)的 IF 指令中與以下指令進(jìn)行關(guān)聯(lián)。
說(shuō)明 ENO 塊的影響 通過(guò) SCL 程序塊,最后一個(gè)指令 ENO 的信號(hào)狀態(tài)將在該塊結(jié)束處傳送到 ENO 塊中。 因此,指令 ENO 可直接影響 ENO 塊。 |
在 SCL 中使用 EN/ENO 機(jī)制的示例
使用 EN/ENO 機(jī)制的指令示例
要在指令中使用 EN/ENO 機(jī)制,則需激活塊屬性“自動(dòng)設(shè)置 ENO”。下文中舉例說(shuō)明了如何在“a + b”運(yùn)算中使用使能輸出 ENO:
"MyOutputREAL":= #a + #b; |
"MyOutputBOOL":= ENO; |
如果執(zhí)行“a/b”運(yùn)算后成功無(wú)錯(cuò)誤,則操作數(shù)“MyOutputBool”的信號(hào)狀態(tài)為“1”。發(fā)生錯(cuò)誤時(shí),使能輸出 ENO 的信號(hào)狀態(tài)為“0”。
通過(guò) EN/ENO 機(jī)制調(diào)用程序塊的示例
以下示例顯示了程序塊的調(diào)用過(guò)程。為此,需激活 EN/ENO 機(jī)制,且必須事先編程一個(gè)影響塊 ENO 的指令:
IF ENO := 1 THEN |
"Block name_DB"(); |
END_IF; |
僅當(dāng)使能輸出 ENO 的信號(hào)狀態(tài)為“1”時(shí),才調(diào)用并執(zhí)行該程序塊。如果激活了 EN/ENO 機(jī)制,則被調(diào)用的程序塊還將返回一個(gè) ENO 塊。該 ENO 塊之后將在被調(diào)用的程序塊中使用。
相關(guān)產(chǎn)品
免責(zé)聲明
- 凡本網(wǎng)注明“來(lái)源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來(lái)源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其他來(lái)源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。