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