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