如何使用中斷組織塊OB82對系統進行故障診斷?

設備在運行過程中不可避免的會發生一些故障(比如外圍感測器的斷線或者短路),設備維護人員希望在故障發生後,能快速的找到故障的原因,以便最快的採取措施進行處理。西門子S7-300/400系列PLC的CPU內部有診斷緩衝區,通過在線讀取緩衝區的數據可以獲取故障信息,但是這種方法需要維修人員拿著筆記本電腦到現場(也可以遠程)連接到CPU中進行在線讀取,對故障的反應速度比較慢,也不直觀。有沒有一種方法能在故障發生後把故障源直接顯示在現場的屏幕上,從而免去了再次連線的繁瑣?今天這篇文章,我們以西門子ET200S的模擬量模塊的感測器斷線故障為例,介紹如何通過S7的診斷中斷組織OB82來快速獲得診斷信息。

要使用診斷功能,首先模塊本身要支持診斷功能,其次需要在硬體組態上把診斷功能開啟。比如使用ET200S的2AI 2/4WIRE HF模擬量模塊,該模塊支持斷線診斷功能。通過勾選「Diagnostics:Wire Break(診斷:斷線)」選項,可以開啟通道0和通道1的斷線診斷功能,如下圖:

硬體組態開啟診斷功能後,把組態信息下載到CPU中。

若在某個時刻通道0發生了斷線故障,則AI模塊會向CPU發出一個中斷請求。CPU檢測到中斷請求後,會調用診斷中斷組織塊OB82進行處理。

若此時PLC的程序中沒有OB82,則PLC會進入停機(STOP)狀態。停機的是保證系統安全,防止意外的發生。

若編程人員下載了OB82組織塊,但是裡面沒有任何處理中斷的代碼,那麼PLC不會停機,而是會繼續帶故障運行。這種方法可以避免因為PLC停機造成的停線,但是並不推薦。因為斷線可能產生的危害是未知的,PLC帶故障運行存在很大的安全隱患。正確的做法是在OB82中對中斷請求進行處理,獲取中斷地址,判斷故障等級,以進行警告或者緊急停機。

OB82是PLC的操作系統和用戶程序溝通的橋樑,它有很多的臨時變數,如下圖:

CPU在調用OB82的時候,會將相應的臨時變數賦值。通過讀取相應臨時變數的值,就可以獲取診斷信息。

接下來我們在OB82中寫兩段簡單的代碼,將故障發生時模塊的地址和事件等級保存到一個全局數據塊中。

首先,新建一個全局數據塊,命名為DB82。在DB82中新建兩個變數「Diagnostic_Address」和「Event_Class」,如下圖:

然後在OB82中,加入兩段代碼分別對模塊的地址和事件等級進行保存,如下圖:

通過以上的代碼,我們可以讀取並保存診斷事件的等級及發生故障的模塊的地址。可以在需要的時候把故障模塊顯示在觸摸屏上,這樣維修人員就可以直觀的發現問題的所在,以便儘快處理。

OB82還支持很多診斷功能,比如外部低電壓、通信故障、看門狗停止等等,可以根據實際需要讀取或保存。

好了,關於S7-300/400的診斷中斷組織塊OB82就先介紹到這裡,歡迎登陸官網(founderchip.com)瀏覽更多技術類文章。


推薦閱讀:

TAG:可編程邏輯控制器PLC | 電氣工程 | 電氣工程及其自動化專業 |