PLC程序中經(jīng)常用到中斷功能,中斷相當于子程序,子程序相當于主程序,說起來 PLC里的中斷平時根本沒什么用。這么說,像告訴脈沖處理,不用中斷,只用1MS的計時能實現(xiàn)其功能,但是卻沒有中斷計時來的精確,畢竟不用中斷,程序掃瞄受掃描周期束縛。
但有些程序,必須要用到中斷,典型的就是PID,檢測讀取周期必須精確。不管是以前自己編PID中斷程序,還是現(xiàn)在集成的PID中斷程序塊,都使用到了精確的時間控制,立即處理信息的中斷。
今天這篇文章,我們就來談談,PLC中斷功能怎么用?
plc這樣理解中斷功能,在理解中斷時,首先要清楚plc的運算周期或者說是掃描周期,有必要說下plc順控循環(huán)執(zhí)行的流程,這是理解中斷的前提,必須要掌握,分為三部分,輸入處理、程序處理、輸出處理。
可編程控制器在執(zhí)行程序前,將可編程控制器的所有輸入端子的ON/OFF狀態(tài)讀入輸入映像區(qū),程序執(zhí)行過程中即使輸入發(fā)生變化,輸入映像區(qū)的內容也不會變化,在執(zhí)行下一個循環(huán)的輸入處理時讀取該變化。
plc根據(jù)程序內存中的指令內容,從輸入映像區(qū)和其他軟元件的映像區(qū)中讀出各軟元件的ON/OFF狀態(tài),然后從0步依次開始運算,并將每次得出的結果寫入到映像區(qū)中。因此,各軟元件的映像區(qū)隨著程序的執(zhí)行逐步改變其內容,此外,輸出繼電器的內部觸點根據(jù)輸出映像區(qū)的內容而執(zhí)行動作。
所有指令執(zhí)行結束后,輸出Y映像區(qū)中的,ON/OFF狀態(tài)會傳送至輸出鎖存內存,這個就作為可編程控制器的實際輸出。
執(zhí)行以一次動作所需要的時間就是運算周期也叫掃描時間,那么中斷與掃描周期有什么聯(lián)系呢,中斷就是不按照從上到下順序的完整執(zhí)行,而是中斷程序優(yōu)先單獨運行程序處理而且是立即輸出不參與整個周期運算。
中斷的作用是什么呢,我們知道plc掃描周期是很短的,因此我們很難看出plc順控執(zhí)行過程,這里我們不妨假設掃描周期為10s的時間,就是執(zhí)行全部的程序需要10s的時間,有一個很簡單的程序LD X0,OUT Y0,根據(jù)上圖當X0為ON時,Y0不是馬上就有輸出的,而是等到10s后才輸出,斷開X0后,同樣Y0也不是馬上就關閉的,都需要得到掃描完后才有結果。那么這樣在我們實際應用中plc就沒什么使用了設備就無法進行工作了,這時候就需要中斷處理了,采用輸入中斷功能,立即執(zhí)行輸入。實際上plc的運算時間是很短只有幾毫秒,完全能夠滿足需要,但一些如高頻脈沖輸入、脈沖捕捉等時間在微秒級的肯定要受到周期運算的影響了。
因此如果在一個周期內要完成很多次ON/OFF狀態(tài)處理時,必須使用中斷功能了。在我們一般情況下很少用到中斷,即使需要plc的高速指令都帶有中斷功能無需自己專門編寫中斷子程序了,例如高速計數(shù)器采用中斷的方式對從特定的輸入繼電器出來的高速脈沖進行處理,所以無論運算時間多少都可進行計數(shù),計數(shù)的結果或是使用高速計數(shù)器專用的比較指令立即輸出,或是對高速計數(shù)器的計數(shù)值用高速計數(shù)器中斷方式執(zhí)行特定的程序處理。
對高頻脈沖進行計數(shù)不采用高速計數(shù)器進行計數(shù),我們舉例使用中斷功能對高速輸入進行計數(shù),示例如下,從EI到FEND是主程序,從指針I(yè)101(輸入X0的中斷指針)開始到IRET是中斷子程序,每當感應到X1的上升沿就執(zhí)行子程序將數(shù)值立即傳送到D10中,這樣就避免了plc運算周期的影響。