PLC中断指令及其在喷泉控制系统中的应用
扫描二维码
随时随地手机看文章
引言
S7-200PLC设置了中断功能,用于实时控制、高速处理、通信和网络等特殊和复杂的控制任务。中断功能的合理使用,既可以使一些突发事件得到即时响应和处理,又可以使程序条理清晰,结构合理。本文以喷泉的控制系统为例,阐述S7-200PLC中断指令及其应用情况。
1PLC中断及相关概念
PLC在执行程序时,如果有一些急需处理的事件发生,且中断允许时,PLC会中止当前正在执行的程序,转去执行中断程序,执行完中断程序,再返回中断处接着执行后续程序。
下面介绍几个和PLC中断有关的概念。
1.1中断源
中断源是指引发中断的事件。系统给每个中断源分配了一个编号,称为中断事件号。S7-200系列PLC最多有34个中断源,分为三大类,即通信中断、1/0中断、时基中断。其中,时基中断又分为定时中断和定时器中断:定时中断分为定时中断0和定时中断1。本例用的是定时中断0,中断事件号为10。
1.2中断优先级
在PLC运行期间,多个中断源同时向PLC申请中断,需要将中断源按中断性质和紧急程度进行中断排序,并按优先级高低进行逐项处理。S7-200PLC中断优先权从高到低依次是通信中断、1/0中断和时基中断,每类中断中又有不同的优先级。
1.3定时中断
定时中断用于周期性的定时活动,每隔一段时间,当定时中断允许时,计时开始,时间到,执行一次中断程序。定时中断包括定时中断0和定时中断1,其中定时中断0的时间间隔由SMB34中的数值决定,数值范围为1~255,时间单位是毫秒。
1.4中段服务程序
中段服务程序简称中断程序,是中断事件发生时要执行的程序。中断服务程序不需要调用,当中断事件发生时,系统会自动跳到中断服务程序去执行。中断服务程序在执行过程中不能被另一个程序打断,即使是更高一级的中断,也必须按中断优先级排序依次执行。
2中断指令介绍
中断指令包括中断允许EN1、中断禁止DISI、中断连接ATCH、中断分离DTCH等指令。
2.1中断允许指令ENI
中断允许指令EN1,允许所有被连接的事件产生中断,按优先级进行中断排序,并依次执行中断程序。
2.2中断禁止指令DISI
中断禁止指令DISI,全局禁止处理所有中断事件。
2.3中断连接指令ATCH
中断连接指令ATCH,将一个中断事件与一个中断服务程序连接起来,并允许这一中断事件有效。
2.4中断分离指令DTCH
中断分离指令DTCH,使能输入有效时,把一个中断事件EVENT和一个中断程序1NT分离,禁止该中断事件有效。
对于上述中断指令补充说明如下:
(1)经过中断优先级判断后,将优先级最高的中断请求发送给CPU,CPU响应中断后自动保存累加器和某些特殊标志寄存器位,即保护现场:中断处理完成后,自动恢复中断时保存的数据,即恢复现场。
(2)当进入运行模式时,CPU禁止所有中断。当执行中断允许指令EN1后,允许所有中断有效。
(3)多个中断事件可以调用同一个中断程序,但同一个事件不能调用多个中断程序。
(4)中断分离指令DTCH禁止中断事件和中断服务程序之间的联系,它只禁止某一中断事件,而DISI禁止所有中断。
3中断指令的应用举例
本文以喷泉控制为例,阐述S7-200PLC中断指令的具体应用。
喷泉常用电磁阀控制喷头的喷水动作,电磁阀由其自身的线圈控制,PLC控制电磁阀线圈。其控制线路如图1所示。
图中PLC采用CPU224,YV1~YV8为电磁阀线圈,G为24V直流电源,SB1为启动按钮,SB2为停止按钮。控制要求:按下启动按钮SB1,电磁阀线圈YV1到YV8依次得电,间隔0.5S,且后一个电磁阀线圈得电时,前一个电磁阀线圈断电,循环运行:按下停止按钮SB2,喷泉停止工作。
4系统程序
4.1编程思路
定时中断0的定时时间由SMB34中的数值决定,数值范围为1~255,时间单位为毫秒,所以定时时间最多为255mS。本例SMB34赋值100,即每隔100mS执行一次中断程序,5次定时中断的时间和为500mS。
在中断程序中用VB0来累计中断的次数,计够5次耗时0.5S,之后用循环左移指令将○B0左移一位,对应电磁阀得电顺序为yV1~yV8。这里需要说明一下为什么要用循环左移指令,○B0的位排列顺序从右到左为○0.0~○0.7,从图1线路图上看,其对应的电磁阀线圈得电顺序为yV1~yV8,所以用循环左移指令。
4.2程序
喷泉控制系统程序由主程序、中断程序组成。主程序中初始化定时中断0,开启中断,中断服务程序中的中断计数计够5次,执行循环左移指令。
4.2.1主程序
LDI0.0//按下启动按钮SB1,I0.0常开触点闭合:
M0VB1,○B0//给○B0赋初值1,使○0.0对应指示灯HL1亮:M0VB0,VB0//清零VB0:VB0存放中断次数:
M0VB100,SMB34//设置定时中断0的时间间隔为100mS:
ATCHINT0,10//将中断程序INT0和定时中断0(编号为10)连接起来,这样当定时中断0定时时间到,系统就会自动调用中断程序0:
一NI//开中断,启动定时中断0,每隔100mS执行一次中断程序:
LDI0.1//按下停止按钮SB1,I0.1常开触点闭合:
DTCH1//解除中断连接关系,不再执行中断程序,指示灯不再右移:
M0VB0,○B0//输出清零,指示灯全灭。
4.2.2中断服务程序
LDSM0.0//ELC运行时SM0.0常开触点接通:
INCBVB0//将VB0中的数值加1,相当于中断次数计数器:
LDB=VB0,5//当VB0=5时,比较触点接通,累积时间是500mS,即0.5S:
RLB○B0,1//循环左移指令将○B0对应的8位二进制数值循环左移1位,对应的得电电磁阀右移1位:
M0VB0,VB0//将VB0清零,为下一次计数作准备。
5结语
定时中断是指每隔一段时间就去执行一次中断服务程序,在中断服务程序中累积定时中断的次数,以此作为定时方式。定时时间到,执行循环左移指令,对应的喷泉也依次循环动作,使用中断指令编程,能够使程序结构更加清晰合理。