0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用 EN/ENO 機(jī)制可避免程序崩潰

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來(lái)源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 2023-06-28 16:21 ? 次閱讀

簡(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è)母線也始終提供電流。

指令“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 訪問(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)用該程序塊。

影響 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)

c159c516-158b-11ee-962d-dac502259ad0.png

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

c1719b78-158b-11ee-962d-dac502259ad0.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電流
    +關(guān)注

    關(guān)注

    40

    文章

    6491

    瀏覽量

    131104
  • 程序
    +關(guān)注

    關(guān)注

    115

    文章

    3719

    瀏覽量

    80355
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4670

    瀏覽量

    67760

原文標(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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在STM32單片機(jī)上運(yùn)行除零運(yùn)算的C程序代碼時(shí)為何程序崩潰

    眾所周知,在 C 語(yǔ)言中,當(dāng)一個(gè)數(shù)除以0的時(shí)候,會(huì)導(dǎo)致除法運(yùn)算異常。程序也會(huì)因此崩潰。 為了避免程序崩潰,我們需要在代碼中包含對(duì) 0 的判
    的頭像 發(fā)表于 09-14 11:11 ?1423次閱讀
    在STM32單片機(jī)上運(yùn)行除零運(yùn)算的C<b class='flag-5'>程序</b>代碼時(shí)為何<b class='flag-5'>程序</b>不<b class='flag-5'>崩潰</b>?

    ENO方案控制器xc846

    ENO方案控制器xc846
    發(fā)表于 08-20 08:51

    怎么才能避免SD卡頻繁讀寫(xiě)防止死機(jī)機(jī)制 ?

    怎么才能避免SD卡頻繁讀寫(xiě)防止死機(jī)機(jī)制
    發(fā)表于 10-23 08:14

    基于信息熵的WSN節(jié)點(diǎn)擁塞避免機(jī)制

    在本文中,提出了基于節(jié)點(diǎn)相對(duì)信息熵的擁塞避免機(jī)制,該擁塞避免機(jī)制是基于事件的有效信息量,真正體現(xiàn)無(wú)線傳感器網(wǎng)絡(luò)以事件為中心的特點(diǎn)。
    發(fā)表于 06-29 10:34 ?1012次閱讀
    基于信息熵的WSN節(jié)點(diǎn)擁塞<b class='flag-5'>避免</b><b class='flag-5'>機(jī)制</b>

    行走在崩潰邊緣,程序猿“自救”指南!

    摘要:?都說(shuō)錢(qián)是緩解痛苦的良方,可就算是多金的程序猿小哥也有扛不住的崩潰瞬間。到底因何崩潰?究竟是哪些瞬間讓程序猿小哥哭笑不得,崩潰不已?
    發(fā)表于 07-23 18:04 ?123次閱讀

    系統(tǒng)崩潰的解決辦法

    由操作失誤或病毒惡意軟件入侵導(dǎo)致電腦無(wú)法正常運(yùn)作,頻繁死機(jī)等癥狀叫做系統(tǒng)崩潰。由軟件造成的崩潰即使是性能最好的PC硬件也離不開(kāi)軟件的支持——也就是通常所說(shuō)的應(yīng)用程序、操作系統(tǒng)以及驅(qū)動(dòng)程序
    的頭像 發(fā)表于 03-29 16:03 ?4690次閱讀

    蘋(píng)果可折疊鉸鏈機(jī)制設(shè)計(jì)曝光,避免顯示屏幕出現(xiàn)折痕

      據(jù)外媒報(bào)道,蘋(píng)果公司本周獲得了一種具有獨(dú)特鉸鏈機(jī)制的可折疊設(shè)備專(zhuān)利,該鉸鏈機(jī)制利用移動(dòng)的擋板來(lái)幫助防止折疊時(shí)顯示屏幕出現(xiàn)折痕或損壞。
    的頭像 發(fā)表于 02-05 14:22 ?2866次閱讀
    蘋(píng)果可折疊鉸鏈<b class='flag-5'>機(jī)制</b>設(shè)計(jì)曝光,<b class='flag-5'>可</b><b class='flag-5'>避免</b>顯示屏幕出現(xiàn)折痕

    微軟推出Outlook桌面崩潰修復(fù)程序

    Microsoft的Windows Outlook電子郵件應(yīng)用程序在啟動(dòng)時(shí)就開(kāi)始崩潰,今天全世界的許多用戶都在使用它。Office 365商業(yè)用戶報(bào)告說(shuō),Outlook似乎在最近更新之后啟動(dòng)了,然后立即崩潰了。
    的頭像 發(fā)表于 07-16 16:11 ?2668次閱讀

    通過(guò)各種指令中的EN/ENO機(jī)制,可以檢測(cè)運(yùn)行錯(cuò)誤

    為該塊互連了 EN/ENO 機(jī)制。如果執(zhí)行期間沒(méi)有任何錯(cuò)誤,則 ENO 使能輸出的信號(hào)狀態(tài)將為“1”。如果執(zhí)行期間發(fā)生錯(cuò)誤,則 ENO 使能
    的頭像 發(fā)表于 03-02 14:36 ?4563次閱讀

    探究S-1500激活ENENO機(jī)制

    通過(guò)各種指令中的 EN/ENO 機(jī)制,可以檢測(cè)運(yùn)行錯(cuò)誤,并避免程序崩潰。 默認(rèn)情況下,新插入的
    的頭像 發(fā)表于 04-16 11:25 ?1762次閱讀
    探究S-1500激活ENENO<b class='flag-5'>機(jī)制</b>

    簡(jiǎn)述西門(mén)子SCL語(yǔ)言-輸入?yún)?shù)EN/輸出參數(shù)ENO

    必在塊或函數(shù)的聲明部分聲明。 因?yàn)?b class='flag-5'>EN是一個(gè)輸入?yún)?shù),故不能在塊內(nèi)改變EN。 如果沒(méi)被調(diào)用(EN : FALSE),函數(shù)的返回值是不定的。 例子(Example) -輸出參數(shù)ENO
    的頭像 發(fā)表于 04-30 16:31 ?9804次閱讀
    簡(jiǎn)述西門(mén)子SCL語(yǔ)言-輸入?yún)?shù)<b class='flag-5'>EN</b>/輸出參數(shù)<b class='flag-5'>ENO</b>

    SCL中的 EN/ENO 機(jī)制概述

    SCL 中的 EN/ENO 機(jī)制概述 在 SCL 程序段中,可以通過(guò)賦值來(lái)改變 ENO。為此,請(qǐng)寫(xiě)入“E
    的頭像 發(fā)表于 08-23 10:08 ?2012次閱讀

    如何在STL中的EN/ENO機(jī)制仿真示例呢?

    從 STL 程序塊調(diào)用的程序塊不提供 ENENO 參數(shù)。無(wú)論創(chuàng)建程序塊時(shí)采用何種編程語(yǔ)言,都可通過(guò)狀態(tài)字的 BR 位將錯(cuò)誤語(yǔ)句傳送到
    的頭像 發(fā)表于 09-01 09:45 ?831次閱讀

    如何在Windows下使用 Supervisor 重新拉起崩潰的Python程序

    我們用Python定時(shí)跑一些自動(dòng)化程序的時(shí)候會(huì)出現(xiàn)程序崩潰的情況。此時(shí)如果你本人不在電腦面前,或者沒(méi)有留意到程序崩潰,沒(méi)有及時(shí)重新拉起
    的頭像 發(fā)表于 10-21 11:23 ?2329次閱讀
    如何在Windows下使用 Supervisor 重新拉起<b class='flag-5'>崩潰</b>的Python<b class='flag-5'>程序</b>

    如何避免PLC程序卡死呢?

    編寫(xiě)穩(wěn)定的程序:編寫(xiě)良好的、穩(wěn)定的PLC程序避免程序卡死的關(guān)鍵。確保程序邏輯清晰、簡(jiǎn)潔,并遵循編程最佳實(shí)踐。
    的頭像 發(fā)表于 01-26 09:14 ?463次閱讀