03.07 plc怎樣理解中斷功能,有沒有例子說明下?

夾三萬


plc這樣理解中斷功能,在理解中斷時,你首先要清楚plc的運算週期或者說是掃描週期,我們有必要說下plc順控循環執行的流程,這是理解中斷的前提,必須要掌握,分為三部分,輸入處理、程序處理、輸出處理、


1、輸入處理,可編程控制器在執行程序前,將可編程控制器的所有輸入端子的ON/OFF狀態讀入輸入映像區,程序執行過程中即使輸入發生變化,輸入映像區的內容也不會變化,在執行下一個循環的輸入處理時讀取該變化。

2、程序處理、plc根據程序內存中的指令內容,從輸入映像區和其他軟元件的映像區中讀出各軟元件的ON/OFF狀態,然後從0步依次開始運算,並將每次得出的結果寫入到映像區中。因此,各軟元件的映像區隨著程序的執行逐步改變其內容,此外,輸出繼電器的內部觸點根據輸出映像區的內容而執行動作。

3、輸出處理,所有指令執行結束後,輸出Y映像區中的,ON/OFF狀態會傳送至輸出鎖存內存,這個就作為可編程控制器的實際輸出。

執行以一次動作所需要的時間就是運算週期也叫掃描時間,那麼中斷與掃描週期有什麼聯繫呢,中斷就是不按照從上到下順序的完整執行,而是中斷程序優先單獨運行程序處理而且是立即輸出不參與整個週期運算。中斷的作用是什麼呢,我們知道plc掃描週期是很短的,因此我們很難看出plc順控執行過程,這裡我們不妨假設掃描週期為10s的時間,就是執行全部的程序需要10s的時間,有一個很簡單的程序LD X0,OUT Y0,根據上圖當X0為ON時,Y0不是馬上就有輸出的,而是等到10s後才輸出,斷開X0後,同樣Y0也不是馬上就關閉的,都需要得到掃描完後才有結果。那麼這樣在我們實際應用中plc就沒什麼使用了設備就無法進行工作了,這時候就需要中斷處理了,採用輸入中斷功能,立即執行輸入。實際上plc的運算時間是很短只有幾毫秒,完全能夠滿足需要,但一些如高頻脈衝輸入、脈衝捕捉等時間在微秒級的肯定要受到週期運算的影響了。

因此如果在一個週期內要完成很多次ON/OFF狀態處理時,必須使用中斷功能了。在我們一般情況下很少用到中斷,即使需要plc的高速指令都帶有中斷功能無需自己專門編寫中斷子程序了,例如高速計數器採用中斷的方式對從特定的輸入繼電器出來的高速脈衝進行處理,所以無論運算時間多少都可進行計數,計數的結果或是使用高速計數器專用的比較指令立即輸出,或是對高速計數器的計數值用高速計數器中斷方式執行特定的程序處理。

對高頻脈衝進行計數不採用高速計數器進行計數,我們舉例使用中斷功能對高速輸入進行計數,示例如下,從EI到FEND是主程序,從指針I101(輸入X0的中斷指針)開始到IRET是中斷子程序,每當感應到X1的上升沿就執行子程序將數值立即傳送到D10中,這樣就避免了plc運算週期的影響。


工控人


1:徹底明白中斷和掃描的區別。

說到中斷,就是CPU正在處理某個事情的時候,外面發生了更為急切的事情,要求你停下手頭的工作,轉去處理更為緊急的事情,比如你辦公室正在吃飯,大領導叫你去處理事情,你放下筷子和盒飯,你就忙去了,一會忙完了,你又回來繼續吃剩下的盒飯,這個過程就是中斷,實現這種功能部件的叫中斷系統,產生中斷的請求叫中斷源,對於你來說,老闆就是你的中斷源,你去處理事情,就叫中斷響應過程,響應你老闆的中斷加上你處理老闆的事情的過程,就叫中斷服務程序。

2:那什麼又叫PLC的掃描工作模式呢。

就是食堂打飯的過程。到中午,大家都按照秩序排好隊,隊伍的前進就是程序的執行,一個一個挨著往飯盒裡打飯,按順序執行,到你了,你說今飯難吃,不吃了,食堂繼續打飯,循環,直到大家都打完了,就像你在PLC裡在在線看程序一樣,閉合點就會綠,PLC以非常快的速度進行掃描。你不不吃飯,你這個點就是黑的,啥時候你也吃飯了,整個隊伍就徹底的執行了。

3:PLC用的是什麼工作方式。

而PLC用的是循環掃描為主,中斷為輔助的工作方式,PLC一直在循環掃描的執行,直到遇到中斷,那就執行中斷程序,等待中斷的返回,不會有一直執行中斷的情況,就算有,受看門狗的影響,中斷程序也不能長於看門狗的定時時間。執行完後,肯定要返回。PLC因為是工業控制用,為了保持運行的穩定性,採用的就是循環掃描的工作方式。適合有大量IO

的處理。你看看一般的工業PLC程序就明白了。


PLC電氣測控


  中斷功能不僅僅能在PLC編程中用到,應該說每種編程語言中都設置有中斷功能,因為事情有輕重緩急,對於編程來說優先級越高的程序應該最先被執行,即使原程序的執行步驟被打亂了,打斷原有的執行順序,優先執行更加重要的步驟,就叫做中斷。

  舉例來說,你早上起來去上學,走到半路發覺肚子疼,就要去廁所,有可能上學就會遲到,但是你依然要去上廁所。雖然這個舉例不夠文雅,但是出門一直去上學,準時到達學校就是你是原始計劃,肚子疼就是突發情況,這個突發情況發生之後,就不能繼續執行去上學的計劃,就要先中斷一下,即去上廁所。在這裡邊,肚子疼就是觸發事件,觸發的是要去上廁所這個事件,上廁所這個事件的重要性(也就是優先級),肯定是比準時到學校這件事情更緊急,也就說上廁所的事件優先級是高於準時到達學校這件事情的。通過這個例子,你應該明白了,中斷的實質就是更高優先級的事情,在某個情況下被觸發了,一旦該事件被觸發,原有的計劃就要就要被中斷,等上廁所這個事情完畢後,再回來繼續去學校。所以,中斷程序打斷了原有程序的執行步驟,但是中斷程序執行完畢後,還是要回來繼續執行原來的程序。

  以本人手上現有的西門子PLC程序來做個實驗吧,因為中斷事件有硬件中斷,定時中斷,循環中斷,以及通訊中斷等。我就選一個定時中斷來做說明吧:

如下圖:CPU的屬性中time of day interrupts就是時間日期中斷,我設置的時候編程電腦的時間是15:29分,Active勾選後就可以設置時間了時間設置成今天的15:40分。且該定時中斷的時間到達後就會觸發執行OB10中的程序。--所以,時間到只是觸發點,到了要幹什麼是需要寫程序的。

上圖設置好了定時中斷對應的塊,那麼我們就在OB10中寫程序,這個程序很簡單,就是將M100.0置位為1。注意下圖就是我15:37分運行了PLC監控M100.0的情況,我還做了個WINCC畫面圓圈關聯的點也是M100.0。從程序和監控點以及畫面中,都可以看到M100.0沒有被置位。也就是說OB10中的這段程序此時沒有被執行,因為我的M0.1是個總是為1的點,此時M0.1最左邊的母線沒有能流,所以M0.1看上去也沒有被激勵。(剛剛監控切圖的時候忘記把M0.1也監控了,這樣更清楚,但是請放心,本人保證M0.1是一個CPU一旦開機運行,它就總是為1的點,請不要質疑。)

下圖中可見,15:40分,OB10中的一段程序執行了,M100.0也被置位了,wincc畫面關聯的圓顏色也變成了紅色。也就是說定時中斷要執行的程序已經執行。

至此,一個定時中斷程序就執行完了,程序將返回到OB1中主程序中的其他程序,還需要說點經驗之談的是我上邊OB10是一個獨立的塊,沒有被任何其他塊調用,在OB1中也沒有調用,因為OB塊之間是不能相互調用的。

還需要說明一點是,做我這個實驗的話,cpu的時間要和編程電腦的時間同步,如下圖,請確保做了正確的勾選,不然可能CPU的時間還在1994年,等好久也等不到程序執行。

回答完畢,希望能對提問者有所幫助,謝謝!


控制研究控


在PLC控制過程中,經常要求對某些過程信息進行立即處理,來提高系統的響應速度,或者有些時限要求嚴格的程序時間控制處理。

根據可編程控制器的週期掃描機制特殊性,需要引入中斷功能。中斷功能是指當中斷信號達到要求時,控制系統就會立刻停止當前正在執行的操作任務,從而去執行相應的中斷服務程序,完成中斷服務程序後再來執行之前停止執行被中斷的操作任務。

打個比方,假如你在上課期間,突然父母來學校找你,但看到你正在上課不好叫你,此時父母就會向老師提出請求,老師得到請求指令後可能會同意你出去與父母見面。在這個過程中,老師如同PLC中的CPU,其本職工作是上課,接受到請求放下授課而是來處理學生與父母見面的問題,那麼父母這個請求就是中斷請求。當老師將這個中斷請求處理好後,再回頭來講授剩餘的課。看起來這個比喻平淡無奇,但其是一個典型的中斷過程。

而在PLC中的中斷過程;中斷請求—保存當前正在執行程序的數據—處理中斷事件—恢復原來被中斷的程序執行。那麼PLC中的CPU會把當前正在執行任務的寄存器數據保存到中斷棧,然後轉到中斷服務程序開始執行中斷事件處理,等中斷事件處理完畢,CPU又會繼續執行之前未完成的程序,從中斷棧取出之前保存的數據,重新執行之前未完成的任務。

例如在西門子S7系列中的中斷請求一般有通訊口中斷請求、I/O中斷請求、時基中斷請求。其中最高優先等級是通訊口中斷請求,最低優先等級是時基中斷請求。那麼PLC在運行過程中會根據中斷事件出現的情況,會立即發出控制指令,從而調用處理特殊情況的中斷服務程序,從而實現對現場設備的實時控制。下圖是中斷指令格式及功能表格!



Talk工控小白


在我看來plc裡邊的中斷頂多叫事件處理程序,只是提供了一種處理突發請求的途徑。


分享到:


相關文章: