西門子S7-200 PLC中斷程序,該咋辦?學會方法,不用愁!

1.中斷與中斷程序

有很多PLC內部或外部的事件是隨機發生的,例如外部開關量輸入信號的上升沿或下降沿、通信事件、高速計數器的當前值等於設定值和定時中斷等,事先並不知道這些事件何時發生,但是它們出現時需要儘快地處理它們,PLC用中斷來快速處理上述事件。

例如電力系統出現故障時,可能引發多個斷路器相繼跳閘。為了分析故障的起因,需要及時準確記錄事故發生的時間。可以用硬件中斷來完成這一任務。

西門子S7-200 PLC中斷程序,該咋辦?學會方法,不用愁!

由於PLC的掃描工作方式,普通定時器的定時誤差很大,定時時間到了也不能馬上去處理要作的事情。可以用定時中斷來實現高精度定時,在定時時間到時CPU自動調用定時中斷程序。

在出現一箇中斷事件時,當前正在執行的程序在當前指令執行完後被停止執行(被中斷),操作系統將會調用一個用戶編寫的分配給該事件的中斷程序(S7-300/400稱為組織塊)。中斷程序被執行完後,被暫停執行的程序將從被中斷的地方開始繼續執行。這一過程不受PLC掃描工作方式的影響,因此使PLC能迅速響應中斷事件。換句話說,中斷程序不是在每次掃描循環中處理,而是在需要時才被及時地處理。

2.編寫中斷程序應注意的問題

因為不能預知系統何時調用中斷程序,為了避免在中斷程序中改寫其他程序使用的存儲器,在中斷程序中應儘量使用局部變量。

應優化中斷程序,使中斷程序儘量短小,以減少中斷程序的執行時間,減少對其他處理的延遲,否則可能引起主程序控制的設備操作異常。設計中斷程序時應遵循“越短越好”的格言。為了減少中斷程序的執行時間,可以在中斷程序設置一個軟件標誌,在主程序中根據標誌處理對於快速性要求不是很高、執行時間很長的任務。

西門子S7-200 PLC中斷程序,該咋辦?學會方法,不用愁!

3.中斷程序為什麼沒有輸入、輸出變量?

中斷程序不像子程序那樣,被用戶程序調用,而是在中斷事件發生時,由操作系統調用,因此S7系列PLC的中斷程序不需要輸入參數和輸出參數,它的局部變量表中只有臨時變量。S7-300/400的中斷程序稱為組織塊,它有自動生成的20字節的臨時局部變量,包含了與觸發組織塊的事件有關的信息,它們由操作系統提供。

4.中斷的優先級

中斷事件有不同的優先級,高優先級的中斷程序可以中斷低優先級的中斷程序。如果在執行中斷程序時,又檢測到一箇中斷請求,CPU將比較兩個中斷源的中斷優先級。如果優先級相同,按照產生中斷請求的先後次序進行處理。如果後者的優先級比正在執行的中斷源的優先級高,將中止當前正在處理的中斷程序,改為調用較高優先級的中斷源的中斷程序,這種處理方式稱為中斷程序的嵌套調用。

5.中斷的控制

不是所有的用戶都需要PLC的中斷功能,用戶一般也不需要處理所有的中斷事件,因此允許用戶用指令來控制是否需要中斷和需要哪些中斷。

S7-200的中斷允許指令EI允許處理中斷事件。至於需要處理哪些中斷事件,需要單獨設置。禁止中斷指令DI禁止處理所有的中斷事件。

S7-200進入RUN模式時自動禁止中斷,在RUN模式執行中斷允許指令後,各中斷事件發生時是否會執行中斷程序,取決於是否執行了該中斷事件的中斷連接指令ATCH。

中斷分離指令DTCH用來斷開某個中斷事件與中斷程序之間的聯繫,從而禁止單箇中斷事件。


分享到:


相關文章: