-
1 # 巨控PLC遠端控制系統
-
2 # 控制研究控
中斷功能不僅僅能在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年,等好久也等不到程式執行。
-
3 # 工控人
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運算週期的影響。
-
4 # Talk工控白
在PLC控制過程中,經常要求對某些過程資訊進行立即處理,來提高系統的響應速度,或者有些時限要求嚴格的程式時間控制處理。
根據可程式設計控制器的週期掃描機制特殊性,需要引入中斷功能。中斷功能是指當中斷訊號達到要求時,控制系統就會立刻停止當前正在執行的操作任務,從而去執行相應的中斷服務程式,完成中斷服務程式後再來執行之前停止執行被中斷的操作任務。
打個比方,假如你在上課期間,突然父母來學校找你,但看到你正在上課不好叫你,此時父母就會向老師提出請求,老師得到請求指令後可能會同意你出去與父母見面。在這個過程中,老師如同PLC中的CPU,其本職工作是上課,接受到請求放下授課而是來處理學生與父母見面的問題,那麼父母這個請求就是中斷請求。當老師將這個中斷請求處理好後,再回頭來講授剩餘的課。看起來這個比喻平淡無奇,但其是一個典型的中斷過程。
而在PLC中的中斷過程;中斷請求—儲存當前正在執行程式的資料—處理中斷事件—恢復原來被中斷的程式執行。那麼PLC中的CPU會把當前正在執行任務的暫存器資料儲存到中斷棧,然後轉到中斷服務程式開始執行中斷事件處理,等中斷事件處理完畢,CPU又會繼續執行之前未完成的程式,從中斷棧取出之前儲存的資料,重新執行之前未完成的任務。
例如在西門子S7系列中的中斷請求一般有通訊口中斷請求、I/O中斷請求、時基中斷請求。其中最高優先等級是通訊口中斷請求,最低優先等級是時基中斷請求。那麼PLC在執行過程中會根據中斷事件出現的情況,會立即發出控制指令,從而呼叫處理特殊情況的中斷服務程式,從而實現對現場裝置的實時控制。下圖是中斷指令格式及功能表格!
-
5 # PLC電氣測控
1:徹底明白中斷和掃描的區別。
說到中斷,就是CPU正在處理某個事情的時候,外面發生了更為急切的事情,要求你停下手頭的工作,轉去處理更為緊急的事情,比如你辦公室正在吃飯,大領導叫你去處理事情,你放下筷子和盒飯,你就忙去了,一會忙完了,你又回來繼續吃剩下的盒飯,這個過程就是中斷,實現這種功能部件的叫中斷系統,產生中斷的請求叫中斷源,對於你來說,老闆就是你的中斷源,你去處理事情,就叫中斷響應過程,響應你老闆的中斷加上你處理老闆的事情的過程,就叫中斷服務程式。
2:那什麼又叫PLC的掃描工作模式呢。
就是食堂打飯的過程。到中午,大家都按照秩序排好隊,隊伍的前進就是程式的執行,一個一個挨著往飯盒裡打飯,按順序執行,到你了,你說今飯難吃,不吃了,食堂繼續打飯,迴圈,直到大家都打完了,就像你在PLC裡在線上看程式一樣,閉合點就會綠,PLC以非常快的速度進行掃描。你不不吃飯,你這個點就是黑的,啥時候你也吃飯了,整個隊伍就徹底的執行了。
3:PLC用的是什麼工作方式。
而PLC用的是迴圈掃描為主,中斷為輔助的工作方式,PLC一直在迴圈掃描的執行,直到遇到中斷,那就執行中斷程式,等待中斷的返回,不會有一直執行中斷的情況,就算有,受看門狗的影響,中斷程式也不能長於看門狗的定時時間。執行完後,肯定要返回。PLC因為是工業控制用,為了保持執行的穩定性,採用的就是迴圈掃描的工作方式。適合有大量IO
的處理。你看看一般的工業PLC程式就明白了。
回覆列表
每個廠家的PLC程式都不一樣,現在我以西門子smart200來對案例說明一下。
中斷指令
S7-200 SMART設定了中斷功能,用於實時控制、高速處理、通訊和網路等複雜和特殊的控制任務。
S7-200 SMART 系列可程式設計控制器最多有38箇中斷源(9個預留),分為三大類:通訊中斷、輸入/輸出(I/O)中斷和時基中斷,S7-200 SMART規定的中斷優先由高到低依次是:通訊中斷、I/O中斷和時基中斷。每類中斷中不同的中斷事件又有不同的優先權。
中斷指令主要包括以下幾種:
· ATCH:中斷連線,連線某中斷事件所要呼叫的程式段。
· ENI:全域性允許中斷,開放中斷處理功能。
· DISI:全域性禁止中斷,禁止處理中斷服務程式,但中斷事件仍然會排隊等候。
· DTCH:中斷分離,將中斷事件號與中斷服務程式之間的關聯切斷,並禁止該中斷事件。
· RETI:條件中斷返回,根據邏輯操作的條件,從中斷服務程式中返回。
· CLR_EVNT:清空中斷佇列。
與S7-200相比,下表所示中斷事件號為S7-200 SMART 所特有的 :
表1.S7-200 SMART 特有中斷事件號
中斷指令的有效運算元如下:
表2.中斷指令的有效運算元
中斷程式例項
本例使用定時中斷實現對100ms定時週期計數。我們使用特殊儲存器定時中斷0。由定時中斷0的中斷事件號為10,確定週期的特殊暫存器位元組時SMB34。
該程式主要包括以下幾部分:
· SBR_0:中斷初始化程式;
· INT_0:中斷服務程式;
在主程式中呼叫SBR_0,如下圖所示:
圖1.SBR_0的呼叫
其中,初始化中斷程式秩序呼叫一次,因此用SM0.1作為條件。
SBR_0程式設計如下圖所示:
圖2.SBR_0程式設計
其中,寫入定時週期數100ms,連線10號中斷事件即定時中斷0,指定中斷服務程式名稱為INT_0。
INT_0程式設計如下圖所示:
圖3.INT_0程式設計
其中,用雙字長的整數加法對VD200自身加1。
注意:中斷程式的初始化只需執行一次。也可根據需要重新定義中斷事件。
使用狀態表監視,VD200的內容就是100ms週期到達的次數,如下圖所示:
圖4.狀態表監視