一套程序可以分為主程序區,還有子程序區,中斷程序區等等,主程序區的程序是無時無刻都會掃描執行的,而子程序還有中斷程序就必須觸發某些條件,然后程序會停止運行主程序,跳到指定運行的中斷程序里面運行。在一段程序里面,主程序是必須有的,其他程序可以選擇是否需要。
如下圖,是一段程序,有一段主程序,還有2段中斷程序I001和I200。假如只有主程序,那么程序結尾就需要一個END指令就可以,如果別別的程序,就需要和下圖一樣,在主程序區尾端假如一行FEND,主程序結束指令,把主程序和其他程序區分開。
中斷程序寫在主程序的后面,在左母線的左邊輸入中斷程序的編號,I1代表從這一行開始是I001中斷程序(中斷指令的編號是3位的,I1就是I001)結束的標準是IRET。第二段中斷程序從左母線I200的符號開始,結束時到IRET。這兩段中斷程序都比較段只有1行程序。
主程序時無時無刻執行的,那么中斷程序怎么來觸發的呢。首先,看我們程序的第一行,有一條EI指令,代表的是打開中斷的功能,這個時候中斷就被允許調用了。怎么通過來調用呢?有3種調用的方式。
外部中斷
如下圖,我們更改用的中斷的編號其中一個是I001,那么對應的應該是X0的上升沿,也就是說,我們外部按下X0的按鈕的一瞬間,這一段中斷程序就會運行,只運行一個plc的掃描周期,然后又跳回主程序,只運行了一次;又比如I200這段中斷程序,需要觸發X2的下降沿,就可以跳出主程序,執行I200這一段中斷程序,執行一次后又跳回主程序。其他幾個X點的不同信號分別對應了不同的中斷程序編號。我們可以隨意選擇。
定時器中斷
如下圖的I620的中斷指針,代表的是每20ms執行一次中斷程序,假如是I630,那么就是30ms執行一次中斷的程序,時間的設定可以從10到99ms這個時間隨意設置。中斷的指針編號由6、7、8這3個,時間都可以自己設定。
高速計數器中斷
指針的編號有6個,從I010到I060,我們可以用高速計數器計算X點的脈沖數,然后通過DHSCS這一條高速中斷指令進行設定,控制我們對應的中斷指針執行,比如我們下圖,就是計數達到1000個脈沖的時候執行中斷指針I010。