PLC中斷指令及其在噴泉控制系統(tǒng)中的應(yīng)用
引言
S7-200PLC設(shè)置了中斷功能,用于實時控制、高速處理、通信和網(wǎng)絡(luò)等特殊和復(fù)雜的控制任務(wù)。中斷功能的合理使用,既可以使一些突發(fā)事件得到即時響應(yīng)和處理,又可以使程序條理清晰,結(jié)構(gòu)合理。本文以噴泉的控制系統(tǒng)為例,闡述S7-200PLC中斷指令及其應(yīng)用情況。
1PLC中斷及相關(guān)概念
PLC在執(zhí)行程序時,如果有一些急需處理的事件發(fā)生,且中斷允許時,PLC會中止當前正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷程序,執(zhí)行完中斷程序,再返回中斷處接著執(zhí)行后續(xù)程序。
下面介紹幾個和PLC中斷有關(guān)的概念。
1.1中斷源
中斷源是指引發(fā)中斷的事件。系統(tǒng)給每個中斷源分配了一個編號,稱為中斷事件號。S7-200系列PLC最多有34個中斷源,分為三大類,即通信中斷、1/0中斷、時基中斷。其中,時基中斷又分為定時中斷和定時器中斷:定時中斷分為定時中斷0和定時中斷1。本例用的是定時中斷0,中斷事件號為10。
1.2中斷優(yōu)先級
在PLC運行期間,多個中斷源同時向PLC申請中斷,需要將中斷源按中斷性質(zhì)和緊急程度進行中斷排序,并按優(yōu)先級高低進行逐項處理。S7-200PLC中斷優(yōu)先權(quán)從高到低依次是通信中斷、1/0中斷和時基中斷,每類中斷中又有不同的優(yōu)先級。
1.3定時中斷
定時中斷用于周期性的定時活動,每隔一段時間,當定時中斷允許時,計時開始,時間到,執(zhí)行一次中斷程序。定時中斷包括定時中斷0和定時中斷1,其中定時中斷0的時間間隔由SMB34中的數(shù)值決定,數(shù)值范圍為1~255,時間單位是毫秒。1.4中段服務(wù)程序
中段服務(wù)程序簡稱中斷程序,是中斷事件發(fā)生時要執(zhí)行的程序。中斷服務(wù)程序不需要調(diào)用,當中斷事件發(fā)生時,系統(tǒng)會自動跳到中斷服務(wù)程序去執(zhí)行。中斷服務(wù)程序在執(zhí)行過程中不能被另一個程序打斷,即使是更高一級的中斷,也必須按中斷優(yōu)先級排序依次執(zhí)行。
2中斷指令介紹
中斷指令包括中斷允許EN1、中斷禁止D1S1、中斷連接ATCH、中斷分離DTCH等指令。
2.1中斷允許指令EN1
中斷允許指令EN1,允許所有被連接的事件產(chǎn)生中斷,按優(yōu)先級進行中斷排序,并依次執(zhí)行中斷程序。
2.2中斷禁止指令D1S1
中斷禁止指令D1S1,全局禁止處理所有中斷事件。
2.3中斷連接指令A(yù)TCH
中斷連接指令A(yù)TCH,將一個中斷事件與一個中斷服務(wù)程序連接起來,并允許這一中斷事件有效。
2.4中斷分離指令DTCH
中斷分離指令DTCH,使能輸入有效時,把一個中斷事件EVENT和一個中斷程序1NT分離,禁止該中斷事件有效。
對于上述中斷指令補充說明如下:
(1)經(jīng)過中斷優(yōu)先級判斷后,將優(yōu)先級最高的中斷請求發(fā)送給CPU,CPU響應(yīng)中斷后自動保存累加器和某些特殊標志寄存器位,即保護現(xiàn)場:中斷處理完成后,自動恢復(fù)中斷時保存的數(shù)據(jù),即恢復(fù)現(xiàn)場。
(2)當進入運行模式時,CPU禁止所有中斷。當執(zhí)行中斷允許指令EN1后,允許所有中斷有效。
(3)多個中斷事件可以調(diào)用同一個中斷程序,但同一個事件不能調(diào)用多個中斷程序。
(4)中斷分離指令DTCH禁止中斷事件和中斷服務(wù)程序之間的聯(lián)系,它只禁止某一中斷事件,而D1S1禁止所有中斷。
3中斷指令的應(yīng)用舉例
本文以噴泉控制為例,闡述S7-200PLC中斷指令的具體應(yīng)用。
噴泉常用電磁閥控制噴頭的噴水動作,電磁閥由其自身的線圈控制,PLC控制電磁閥線圈。其控制線路如圖1所示。
圖中PLC采用CPU224,YV1~YV8為電磁閥線圈,G為24V直流電源,SB1為啟動按鈕,SB2為停止按鈕。控制要求:按下啟動按鈕SB1,電磁閥線圈YV1到Y(jié)V8依次得電,間隔0.5S,且后一個電磁閥線圈得電時,前一個電磁閥線圈斷電,循環(huán)運行:按下停止按鈕SB2,噴泉停止工作。
4系統(tǒng)程序
4.1編程思路
定時中斷0的定時時間由SMB34中的數(shù)值決定,數(shù)值范圍為1~255,時間單位為毫秒,所以定時時間最多為255mS。本例SMB34賦值100,即每隔100mS執(zhí)行一次中斷程序,5次定時中斷的時間和為500mS。
在中斷程序中用VB0來累計中斷的次數(shù),計夠5次耗時0.5S,之后用循環(huán)左移指令將0B0左移一位,對應(yīng)電磁閥得電順序為yV1~yV8。這里需要說明一下為什么要用循環(huán)左移指令,0B0的位排列順序從右到左為00.0~00.7,從圖1線路圖上看,其對應(yīng)的電磁閥線圈得電順序為yV1~yV8,所以用循環(huán)左移指令。
4.2程序
噴泉控制系統(tǒng)程序由主程序、中斷程序組成。主程序中初始化定時中斷0,開啟中斷,中斷服務(wù)程序中的中斷計數(shù)計夠5次,執(zhí)行循環(huán)左移指令。
4.2.1主程序
LDI0.0//按下啟動按鈕SB1,I0.0常開觸點閉合:
M0VB1,0B0//給0B0賦初值1,使00.0對應(yīng)指示燈HL1亮:M0VB0,VB0//清零VB0:VB0存放中斷次數(shù):
M0VB100,SMB34//設(shè)置定時中斷0的時間間隔為100mS:
ATCHINT0,10//將中斷程序INT0和定時中斷0(編號為10)連接起來,這樣當定時中斷0定時時間到,系統(tǒng)就會自動調(diào)用中斷程序0:
一NI//開中斷,啟動定時中斷0,每隔100mS執(zhí)行一次中斷程序:
LDI0.1//按下停止按鈕SB1,I0.1常開觸點閉合:
DTCH1//解除中斷連接關(guān)系,不再執(zhí)行中斷程序,指示燈不再右移:
M0VB0,0B0//輸出清零,指示燈全滅。
4.2.2中斷服務(wù)程序
LDSM0.0//PLC運行時SM0.0常開觸點接通:
INCBVB0//將VB0中的數(shù)值加1,相當于中斷次數(shù)計數(shù)器:
LDBpVB0,5//當VB0=5時,比較觸點接通,累積時間是500mS,即0.5S:
=LB0B0,1//循環(huán)左移指令將0B0對應(yīng)的8位二進制數(shù)值循環(huán)左移1位,對應(yīng)的得電電磁閥右移1位:
M0VB0,VB0//將VB0清零,為下一次計數(shù)作準備。
5結(jié)語
定時中斷是指每隔一段時間就去執(zhí)行一次中斷服務(wù)程序,在中斷服務(wù)程序中累積定時中斷的次數(shù),以此作為定時方式。定時時間到,執(zhí)行循環(huán)左移指令,對應(yīng)的噴泉也依次循環(huán)動作,使用中斷指令編程,能夠使程序結(jié)構(gòu)更加清晰合理。