為什么循環(huán)中斷組織塊OB35不能取代主程序OB1
發(fā)布時間:2019-08-01 10:49:47來源:
為什么循環(huán)中斷組織塊OB35不能取代主程序OB1
比較近有人在網(wǎng)上提出是否可以用S7-300/400的OB35取代OB1。循環(huán)中斷組織塊OB35是按照精確的時間間隔周期性執(zhí)行的,執(zhí)行的周期在CPU的屬性對話框中設(shè)置。主程序OB1也是周期性循環(huán)執(zhí)行的,OB1可以調(diào)用FB、FC。每次循環(huán)執(zhí)行的時間與用戶程序的長短有很大的關(guān)系。由于程序中跳轉(zhuǎn)指令和調(diào)用邏輯塊的條件的變化,OB1的掃描循環(huán)時間是動態(tài)變化的。前一次調(diào)用OB1結(jié)束后,馬上又開始下一次的調(diào)用。我做了仿真實驗和硬件實驗,實驗證明如果刪除OB1,將程序放在OB35中,S7-300也可以正常運行。CPU的SF(系統(tǒng)故障)燈未亮,診斷緩沖區(qū)中沒有任何故障信息。
但是這并不表明可以用OB35完全取代OB1!!其原因很簡單,很難合理地選取OB35的循環(huán)執(zhí)行的時間間隔。如果設(shè)置的時間間隔太短,OB35的執(zhí)行時間大于其時間間隔,上一次的程序還沒有執(zhí)行完,下一次循環(huán)中斷又出現(xiàn)了,導致時間錯誤,CPU將會調(diào)用OB80。如果時間間隔太長,執(zhí)行完OB35的程序后,CPU無所事事,白白浪費了CPU的資源,并且使系統(tǒng)的響應(yīng)延遲時間增大。
通常將需要嚴格的時間間隔的程序(例如PID控制功能塊)放在OB35中,其他程序(不包括處理中斷的程序)放在OB1,可以很好地解決上述的難題。OB1被循環(huán)執(zhí)行,不會出現(xiàn)CPU空閑的情況。有中斷事件產(chǎn)生時,將停止執(zhí)行OB1。執(zhí)行完中斷組織塊后,從斷點開始,繼續(xù)執(zhí)行OB1的程序。
S7-200的系統(tǒng)手冊說得好:“應(yīng)當使中斷程序短小而簡單,執(zhí)行時對其他處理也不要延時過長。如果做不到這些,意外的條件可能會引起由主程序控制的設(shè)備操作異常。對中斷而言,其格言是‘越短越好’”請牢記,這可是PLC高手的肺腑之言啊!
綜上所述,雖然刪除OB1也不會報錯,但是將程序分別放在OB1和OB35更為合理。