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