診斷錯(cuò)誤 OB82
● 診斷錯(cuò)誤 OB82 的功能
S7-1200支持診斷錯(cuò)誤中斷,可以為具有診斷功能的模塊啟用診斷錯(cuò)誤中斷功能來檢測(cè)模塊狀態(tài)。
出現(xiàn)故障(進(jìn)入事件),故障解除(離開事件)均會(huì)觸發(fā)診斷中斷 OB82 。當(dāng)模塊檢測(cè)到故障并且在軟件中使能了診斷錯(cuò)誤中斷時(shí),操作系統(tǒng)將啟動(dòng)診斷錯(cuò)誤中斷,診斷錯(cuò)誤中斷 OB82 將中斷正常的循環(huán)程序優(yōu)先執(zhí)行。此時(shí)無論程序中有沒有診斷中斷 OB82,CPU 都會(huì)保持 RUN 模式,同時(shí) CPU 的 ERROR 指示燈閃爍。如果希望 CPU 在接收到該類型的錯(cuò)誤時(shí)進(jìn)入 STOP 模式,可以在 OB82 中加入 STP 指令使 CPU 進(jìn)入 STOP 模式。
● 與診斷錯(cuò)誤 OB82 相關(guān)的信息
當(dāng)觸發(fā)診斷錯(cuò)誤中斷時(shí),通過 OB82 的接口變量可以讀取相應(yīng)的啟動(dòng)信息,可以幫助確定事件發(fā)生的設(shè)備、通道和錯(cuò)誤原因。OB82 的接口變量及啟動(dòng)信息參考下圖1、2。
圖1. OB82 接口變量
圖2. OB82 啟動(dòng)信息
● 診斷錯(cuò)誤 OB 的使用示例:
例如:模擬量輸出模塊 SM1232 的電壓輸出通道,對(duì)于通道1使能短路診斷,當(dāng)通道1出現(xiàn)短路錯(cuò)誤時(shí),隨即觸發(fā)診斷錯(cuò)誤 OB82 ,此時(shí)可從 OB82 的啟動(dòng)參數(shù)中讀取診斷信息。
1、按如下步驟創(chuàng)建診斷錯(cuò)誤 OB82 。如圖3。
圖3. 創(chuàng)建診斷錯(cuò)誤 OB82
2、OB82 中編程如下圖,創(chuàng)建地址為 MW100、MW102、MW104 的變量用于存儲(chǔ)出現(xiàn)診斷錯(cuò)誤時(shí)讀取到的啟動(dòng)信息。如圖4。
圖4. OB82 中編程
3、在硬件組態(tài)窗口中,選中模擬量輸出模塊,選擇模擬量輸出通道1的“啟用短路診斷”功能。如圖5。
圖5. 設(shè)置診斷功能
4、測(cè)試結(jié)果:程序下載后,在監(jiān)控表中給“channel1”設(shè)置輸出值5000,如果此時(shí)出現(xiàn)了短路故障,則將立即觸發(fā)診斷錯(cuò)誤功能。如圖6。
圖6. 測(cè)試結(jié)果
在 OB82 中使用 SFB 54 進(jìn)行診斷?
支持診斷的信號(hào)模塊和功能模塊將檢測(cè)內(nèi)部和外部錯(cuò)誤,并生成診斷中斷(可通過調(diào)用中斷 OB 對(duì)其進(jìn)行響應(yīng))。與錯(cuò)誤事件有關(guān)的 OB 編碼和開始信息提供有關(guān)錯(cuò)誤原因和位置的初始信息。??
然后可以通過在此錯(cuò)誤 OB 中調(diào)用 SFB54(讀取附加的中斷信息)獲得詳細(xì)的錯(cuò)誤事件信息。?
SFB54 功能?
SFB54“RALARM”將從支持診斷的所有模塊讀取中斷數(shù)據(jù),而不管這些模塊是插入到中央機(jī)架中還是用在 PROFIBUS DP 或 PROFINET IO 中。??
此信息將寫入到輸出參數(shù) STATUS、ID、LEN、TINFO 和 AINFO。可以在 TINFO 目標(biāo)區(qū)域中找到 OB 啟動(dòng)和管理信息。頁眉信息和附加的中斷信息(例如,發(fā)生短路)位于 AINFO 目標(biāo)區(qū)域中。?
通過在 OB82 中調(diào)用 SFB54 進(jìn)行診斷?
如果支持診斷的模塊檢測(cè)到錯(cuò)誤,它將向 CPU 輸出診斷中斷請(qǐng)求(不管是進(jìn)入事件還是離開事件)。這要求已對(duì)相關(guān)模塊啟用診斷中斷。操作系統(tǒng)調(diào)用 OB82 以對(duì)診斷請(qǐng)求進(jìn)行響應(yīng)。?
OB82 的局部變量包含邏輯基址和關(guān)于故障模塊的四個(gè)字節(jié)的診斷數(shù)據(jù)。如果未對(duì) OB82 進(jìn)行編程,則 CPU 狀態(tài)將更改為 STOP。?
使用 SFB54 對(duì) OB82 進(jìn)行編程 :
要求:?
1. ??您已創(chuàng)建并命名了新的 STEP 7 項(xiàng)目。?
2. ??您已添加了帶有 CPU 317-2 PN/DP 的 SIMATIC 300 站。?
3. ??您已在 CPU 317-2 PN/DP 的 PROFINET 子網(wǎng)上組態(tài)了 ET 200S。?
執(zhí)行以下步驟:?
1. ??生成可以存儲(chǔ)中斷數(shù)據(jù)的背景數(shù)據(jù)塊(IDB)。為此 IDB 分配稱“IDB_SFB54”。?
2.? ?插入 OB82?
–? 在 STEP 7 中打開您的項(xiàng)目?
–? 選擇? Insert(插入) -> S7 block(S7 塊)-> Organization block(組織塊),然后在對(duì)話框中輸入塊名稱“OB82”。?
3.? ?啟動(dòng) LAD/STL/FBD 編輯器?
–? 雙擊“OB82”符號(hào),打開 LAD/STL/FBD 編輯器。?
4.? ?聲明 SFB54 中的變量?
–? 在對(duì)話框中輸入“CALL SFB54, DB54”以調(diào)用 SFB。?
–? 然后為 SFB54 的參數(shù)分配從下表中獲取的值。?
CALL? SFB54, DB54? 通過實(shí)例 DB54 調(diào)用 SFB54?
MODE :=? 1? 將設(shè)置所有輸出參數(shù)(與中斷觸發(fā)組件無關(guān))?
F_ID :=? ?不必進(jìn)行設(shè)置,因?yàn)?F_ID 在模式 1 下不相關(guān)
MLEN :=? 1500? 將要讀取的記錄信息的最大長(zhǎng)度設(shè)置為 1500 字節(jié)?
NEW :=? M1000.1? 如果已接收新記錄,則存儲(chǔ)器位 1000.1 = 1?
STATUS :=? MD10? MD10 包含錯(cuò)誤代碼?
ID :=? MD16? 存儲(chǔ)器雙字 16 包含模塊或子模塊的邏輯起始地址,該地址用于接收中斷。?
LEN := MW24? 存儲(chǔ)器字 24 返回讀取的記錄信息的長(zhǎng)度?
TINFO := P#M 500.0 BYTE 32? 指向 MB500 的 ANY 指針,長(zhǎng)度為 32 個(gè)字節(jié)?
AINFO :=? P#M 1500.0 BYTE 1431? 指向 MB1500 的 ANY 指針,長(zhǎng)度為 1431 個(gè)字節(jié)?
在標(biāo)志字節(jié) 500 或 1500 處開始,輸入 TINFO 和 AINFO 變量中返回信息,長(zhǎng)度為 32 字節(jié)或 1431 字節(jié)。TINFO 和 AINFO 目標(biāo)區(qū)域的數(shù)據(jù)存儲(chǔ)器未完全分配,取決于哪個(gè) OB 調(diào)用 SFB54。
審核編輯:劉清
評(píng)論