西門子s7-200中斷指令入門
1、什么是中斷
中斷是指CPU在正常運(yùn)行程序時,由于內(nèi)部/外部事件或由程序預(yù)先安排的事件,引起CPU中斷正在運(yùn)行的程序,而轉(zhuǎn)到為內(nèi)部/外部事件或?yàn)轭A(yù)先安排的時間服務(wù)的程序中去,服務(wù)完畢,再返回去執(zhí)行被中斷暫停的程序。
2、中斷的作用
中斷跟掃描周期無關(guān),響應(yīng)快,只要中斷事件發(fā)生才會去執(zhí)行程序,可以節(jié)省時間,避免等待和浪費(fèi)時間。中斷可以做出來一些比較特殊的,比較緊急的事情,例如急停。
3、中斷的分類
中斷主要分為3類:
(1)輸入輸出中斷簡稱I/O中斷,又包括輸入中斷(8個);輸出中斷:高速計數(shù)器中斷14個,高速脈沖輸出中斷2個。
(2)時基中斷,又包括:定時循環(huán)中斷2個(SMB34/SMB35),定時器中斷2個(T32/T96)
(3)通訊中斷6個。
4、CPU響應(yīng)中斷的原則
(1)當(dāng)不同優(yōu)先級別的中斷事件同時發(fā)出申請中斷時,CPU先響應(yīng)優(yōu)先級別高的中斷事件。
(2)在相同優(yōu)先級別的中斷事件中,CPU按“先來后到”的原則處理中斷事件。
(3)CPU在任何時刻只執(zhí)行一個中斷程序,當(dāng)CPU正在處理某中斷時,不會被別的中斷程序甚至是優(yōu)先級別更高的中斷程序所打斷,一直執(zhí)行到結(jié)束,新出現(xiàn)的中斷時間需要排隊,等待處理。
(4)中斷事件被觸發(fā),立刻執(zhí)行中斷程序,中斷程序不存在嵌套。
這里我們先在程序當(dāng)中,來梳理一下中斷指令。
按下F1之后,在幫助文件中尋找“中斷事件優(yōu)先級別表”。
重點(diǎn)了解事件號碼中的0-7這幾項(xiàng):
說明:中斷事件的號碼,是從0-33,共計34類中斷事件。這里的中斷說明介紹了事件號碼對應(yīng)的啟動條件。舉例,如實(shí)踐號碼為5,則這個中斷指令在收到外部信號觸發(fā)影響時,一定是I0.2的下降沿,作為啟動條件的。而事件優(yōu)先級是指當(dāng)兩個中斷指令被同時觸發(fā)時,按照優(yōu)先級高的先執(zhí)行,優(yōu)先級低的后執(zhí)行的規(guī)則來處理。
下面在軟件中編輯一條中斷指令:
注意,觸發(fā)中斷指令的外部條件,需要與事件號(EVNT)條件相一致;INT數(shù)與中斷程序名稱相一致。比如“I0.0+下降沿”,好比一把鑰匙,而EVNT中的1好比是1號房間,那只有當(dāng)1號房間的鑰匙,插入1號房間的鎖里,才能打開1號房間。打開之后做什么?通過指令連接INT_0中斷程序里面的內(nèi)容。
說明,由于中斷程序的執(zhí)行,不受掃描周期的影響,而是立即響應(yīng)的。所以激活它的條件一定是用到(上升/下降)沿指令,而且只需觸發(fā)一次即可。
在新建(插入)中斷程序時,方法與新建子程序的方式是一致的。
那么,指令激活已完成,中斷程序連接也接上了,那是不是就可以監(jiān)控到輸出的結(jié)果了?
答案是否定的,因?yàn)檫需要開放中斷(ENI),就是中斷程序執(zhí)行后的結(jié)果,需要通過ENI指令,讓全局都可以調(diào)用和監(jiān)控。
歸納起來,中斷程序的執(zhí)行共分為三步:
1、激活中斷(1次即可);
2、中斷事件連接中斷程序;
3、開放中斷程序(結(jié)果)。