中斷功能常用于可編程plc控制器程序中,其中的中斷就相當(dāng)于子程序,子程序服務(wù)于主程序。在PLC的眾多功能中中斷功能平時(shí)用處不大。但是在高速脈沖處理過程中,只需要1MS的定時(shí)就可以實(shí)現(xiàn)其功能而不中斷,但不如中斷定時(shí)準(zhǔn)確。畢竟沒有中斷,程序掃描受掃描周期的約束。
但是,在某些程序中,必須使用中斷,通常是PID,并且檢測和讀取周期必須準(zhǔn)確。無論是之前我們自己編寫的PID中斷程序,還是現(xiàn)在集成的PID中斷程序塊,都是利用精確的時(shí)間控制來即時(shí)處理信息的中斷。
今天這篇文章,我們就來說說如何使用PLC的中斷功能。
這樣,當(dāng)PLC理解中斷功能時(shí),就需要先了解PLC的運(yùn)行周期或掃描周期。有必要談?wù)凱LC順序控制回路執(zhí)行的流程,這是理解中斷的前提,必須掌握。它分為三個(gè)部分,輸入處理,程序處理,輸出處理,
1.輸入處理:程序執(zhí)行前,可編程控制器將可編程控制器所有輸入端子的開/關(guān)狀態(tài)讀入輸入圖像區(qū)。即使在程序執(zhí)行期間輸入改變,輸入圖像區(qū)域的內(nèi)容也不會(huì)改變,并且當(dāng)執(zhí)行下一周期的輸入處理時(shí),將讀取該改變。
2.程序處理:PLC根據(jù)程序存儲(chǔ)器中的指令內(nèi)容,從輸入圖像區(qū)和其他軟件組件的圖像區(qū)讀出各軟件組件的開/關(guān)狀態(tài),然后從步驟0開始依次操作,將每次得到的結(jié)果寫入圖像區(qū)。因此,每個(gè)軟件組件的圖像區(qū)域隨著程序的執(zhí)行而逐漸改變其內(nèi)容。此外,輸出繼電器的內(nèi)部觸點(diǎn)根據(jù)輸出圖像區(qū)域的內(nèi)容執(zhí)行動(dòng)作。
3.輸出處理:所有指令執(zhí)行完畢后,輸出Y像區(qū)的開/關(guān)狀態(tài)會(huì)傳送到輸出鎖存存儲(chǔ)器,作為可編程控制器的實(shí)際輸出。
執(zhí)行一個(gè)動(dòng)作所需的時(shí)間就是操作周期,也叫掃描時(shí)間。那么中斷和掃描周期有什么聯(lián)系呢?中斷不是從上到下順序地完全執(zhí)行,而是中斷程序優(yōu)先單獨(dú)運(yùn)行程序,立即輸出,不參與整個(gè)循環(huán)操作。
中斷的作用是什么?我們知道PLC掃描周期很短,所以我們很難看到PLC順序控制的執(zhí)行過程。在這里,我們不妨假設(shè)掃描周期為10s,即執(zhí)行所有程序需要10s。有一個(gè)很簡單的程序LDX0,OUTY0。根據(jù)上圖,當(dāng)X0為ON時(shí),Y0不會(huì)立即輸出,而是10s后才會(huì)輸出。X0斷開后,Y0不會(huì)立即關(guān)閉。那么,在我們的實(shí)際應(yīng)用中,plc不使用設(shè)備就無法工作。此時(shí)需要中斷處理,采用輸入中斷功能立即執(zhí)行輸入。其實(shí)PLC的運(yùn)行時(shí)間很短,只有幾毫秒,完全可以滿足需求。然而,某些時(shí)間,如微秒級(jí)的高頻脈沖輸入和脈沖捕獲,必須受到周期性操作的影響。
因此,如果要在一個(gè)周期內(nèi)多次完成開/關(guān)狀態(tài)處理,必須使用中斷功能。一般來說,我們很少使用中斷。即使需要帶中斷功能的PLC高速指令,也不需要專門編寫中斷子程序。例如,高速計(jì)數(shù)器使用中斷模式來處理來自特定輸入繼電器的高速脈沖,因此無論操作時(shí)間如何,它都可以計(jì)數(shù)。可以使用高速計(jì)數(shù)器的特殊比較指令立即輸出計(jì)數(shù)結(jié)果,也可以使用高速計(jì)數(shù)器中斷方式處理高速計(jì)數(shù)器的計(jì)數(shù)值。
高速計(jì)數(shù)器不用于計(jì)數(shù)高頻脈沖。我們使用中斷功能來計(jì)數(shù)高速輸入。例子如下:EI到FEND為主程序,從指針I(yè)101(輸入X0的中斷指針)到IRET是中斷子程序。每當(dāng)感測到X1的上升沿時(shí),執(zhí)行子程序立即將該值傳輸?shù)紻10,從而避免了PLC運(yùn)行周期的影響。