S7-300 CPU DP主站如何知道從站節(jié)點故障
劉玉蓉
發(fā)布于2014-10-17 16:52
1345
0
標簽:
DP主站如何知道從站節(jié)點故障,有DP系統(tǒng)繼存器查詢嗎。
問題補充:
主站下有15個變頻器,如果全啟動了,將變頻器的其中一插頭拔下,我的程序如何知道這個變頻器通信故障了。我試了下要在將插頭插入,才能從變頻器中知道故障。我想CPU硬件知道故障了,不知道如何讀出這故障為我所用。。
佳答案
雖然可以通過在程序中直接調(diào)用SIMATIC S7 的 標準的PROFIBUS DP 診斷塊 FB125、FC126可以判斷系統(tǒng)PROFIBUS-DP中站點和模塊的錯誤,但需要編寫相應(yīng)的程序,對一般使用人員來說并不現(xiàn)實;你也可以利用BT200進行硬件測試與診斷、利用STEP7中繼器Diagnostics Repeater進行診斷、以及通過使用通信處理器CP343-5進行診斷,但需要額外硬件,也并不現(xiàn)實
其實簡單經(jīng)濟、可操作的辦法是利用分布式I/O站故障錯誤處理組織塊OB86中的變量聲明表中內(nèi)容,利用MOVE指令通過簡單的編程就可以知道讀出具體的PROFIBUS-DP模塊的故障,再通過變量表(Variable Table)就可以實時監(jiān)控數(shù)據(jù)的變化,從而知道那個變頻器故障。OB86的變量聲明表中變量OB86_MDL_ADDR中內(nèi)容就是故障PROFIBUS-DP網(wǎng)絡(luò)中的DP從站地址。在OB86中編寫如下的程序:
個賦值指令MOVE中輸入端IN為OB86變量聲明表中變量OB86_EV_CLASS(事件級別和標識),輸出端OUT為位儲存器字節(jié)MB0;第二個MOVE指令中輸入端IN為OB86_FLT_ID(故障代碼),輸出端OUT為位存儲器字節(jié)MB1;第三個MOVE指令這輸入端IN為OB86_MDL_ADDR(PROFIBUS-DP網(wǎng)絡(luò)中從站模塊的DP地址),輸出端OUT為MW2
當發(fā)生某個變頻器故障時,即PROFIBUS-DP網(wǎng)絡(luò)通信發(fā)生問題或者訪問不到DP從站變頻器時調(diào)用錯誤處理組織塊OB86,當OB86執(zhí)行時通過它的變量聲明表中上述臨時變量所編寫的程序讀出產(chǎn)生故障代碼、事件類型和DP從站模塊的DP地址,通過它們的組合可以得到具體變頻器的故障、以及產(chǎn)生錯誤的變頻器的DP地址。由于STEP7沒有實時監(jiān)控功能,可以利用變量表監(jiān)控上述OB86程序塊中位存儲器MB0、MB1、MW2,實時監(jiān)控數(shù)據(jù)的變化,從而知道具體變頻器的故障