簡(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è)方面:
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è)母線(xiàn)也始終提供電流。
指令“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)確定:
RLO:RLO = 1 時(shí),ENO 塊將置位為 TRUE。
TRUE:ENO 塊將置位為 TRUE。
FALSE:ENO 塊將置位為 FALSE。
Operand:由指定操作數(shù)的信號(hào)狀態(tài)確定 ENO 塊的信號(hào)狀態(tài)。
編程與 I/O 訪(fǎng)問(wèn)錯(cuò)誤
EN/ENO 機(jī)制無(wú)法編程和 I/O 訪(fǎng)問(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)用該程序塊。
影響 SCL 程序塊的使能輸出 ENO
說(shuō)明
SCL 程序塊中的最后一個(gè)指令 ENO 通常會(huì)影響 ENO 塊。
另外,也可跳出該程序塊,并同時(shí)使用指令“RETURN”為 ENO 塊賦值“1”或“0”。
操作步驟
要影響 ENO 塊的信號(hào)狀態(tài),請(qǐng)按以下步驟操作:
激活 EN/ENO 機(jī)制。
然后編程:
IF ENO := 0 THEN
RETURN;
END_IF;
結(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)用的程序塊中使用。
用于單個(gè)指令(指令 ENO)
用于程序塊調(diào)用(塊 ENO)
-
電流
+關(guān)注
關(guān)注
40文章
6945瀏覽量
132752 -
程序
+關(guān)注
關(guān)注
117文章
3797瀏覽量
81456 -
代碼
+關(guān)注
關(guān)注
30文章
4834瀏覽量
69116
原文標(biāo)題:西門(mén)子博途:EN/ENO 機(jī)制的基本知識(shí)
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
在STM32單片機(jī)上運(yùn)行除零運(yùn)算的C程序代碼時(shí)為何程序不崩潰?
![在STM32單片機(jī)上運(yùn)行除零運(yùn)算的C<b class='flag-5'>程序</b>代碼時(shí)為何<b class='flag-5'>程序</b>不<b class='flag-5'>崩潰</b>?](https://file1.elecfans.com/web2/M00/A4/5A/wKgaomUCejyASp5qAAA61EGOFTs831.png)
基于信息熵的WSN節(jié)點(diǎn)擁塞避免機(jī)制
![基于信息熵的WSN節(jié)點(diǎn)擁塞<b class='flag-5'>避免</b><b class='flag-5'>機(jī)制</b>](https://file1.elecfans.com//web2/M00/A5/EB/wKgZomUMOsqAAfapAAAOVelQ0Uk132.jpg)
行走在崩潰邊緣,程序猿“自救”指南!
系統(tǒng)崩潰的解決辦法
蘋(píng)果可折疊鉸鏈機(jī)制設(shè)計(jì)曝光,可避免顯示屏幕出現(xiàn)折痕
![蘋(píng)果可折疊鉸鏈<b class='flag-5'>機(jī)制</b>設(shè)計(jì)曝光,<b class='flag-5'>可</b><b class='flag-5'>避免</b>顯示屏幕出現(xiàn)折痕](https://file.elecfans.com/web1/M00/B3/8B/o4YBAF46XtOAWVFEAADp-gfPhtQ835.jpg)
微軟推出Outlook桌面崩潰修復(fù)程序
通過(guò)各種指令中的EN/ENO機(jī)制,可以檢測(cè)運(yùn)行錯(cuò)誤
簡(jiǎn)述西門(mén)子SCL語(yǔ)言-輸入?yún)?shù)EN/輸出參數(shù)ENO
![簡(jiǎn)述西門(mén)子SCL語(yǔ)言-輸入?yún)?shù)<b class='flag-5'>EN</b>/輸出參數(shù)<b class='flag-5'>ENO</b>](https://file.elecfans.com/web1/M00/ED/4D/o4YBAGCLwOyALMsAAAAnJw-BM6Q810.png)
SCL中的 EN/ENO 機(jī)制概述
如何在STL中的EN/ENO機(jī)制仿真示例呢?
如何在Windows下使用 Supervisor 重新拉起崩潰的Python程序
![如何在Windows下使用 Supervisor 重新拉起<b class='flag-5'>崩潰</b>的Python<b class='flag-5'>程序</b>](https://file1.elecfans.com/web2/M00/A9/A7/wKgaomUzRBWANijOAACvGYRUWaI818.jpg)
評(píng)論