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