CPM1A的子程序控制与中断控制指令.ppt
一、子程序控制指令1、在编写PLC的应用程序时,有的程序段需多次重复使用。这样的程序段可以编成一个子程序,在满足一定条件时,中断主程序而转去执行子程序,子程序执行完毕,再返回断点处继续执行主程序。2、另外,有的程序段需多次使用,且程序段的结构不变,但每次输入和输出操作数不同。对这样的程序段也可以编成一个子程序,在满足执行条件时,中断主程序的执行而转去执行子程序,并且每次调用时赋予该子程序不同的输入和输出操作数,子程序执行完毕再返回断点处继续执行主程序。,第六讲CPM1A的子程序控制与中断控制指令,一、子程序控制指令1.子程序调用指令SBS(91)/SBS(91)2.子程序定义指令SBN(92)/SBN(92)3.子程序返回指令RET(93)/RET(93)4.宏指令MCRO(99)/MCRO(99),1.子程序调用指令SBS(91)/SBS(91)格式SBSN符号N子程序编号。其取值为00~99。功能调用编号为N的子程序。主程序中调用子程序的次数不受限制,子程序还可以调用其它的子程序,但不可以调用本身。,,2.子程序定义指令SBN(92)/SBN(92)格式SBNN符号N子程序编号。其取值为00~99。功能SBN定义子程序的开始,不需要执行条件。子程序的编号不可重复。,,3.子程序返回指令RET(93)/RET(93)格式RET符号功能RET表示子程序结束。RET指令不带操作数,也不需要执行条件。SBN和RET指令要成对使用,组成一个完整的子程序。,,宏指令MCRO(99)/MCRO(99)格式MCRON符号S1S2N子程序编号。其取值为00~99。S1输入开始通道。取值范围IR、HR、AR、LR、TC、DM、*DM。S2输出开始通道。取值范围同S1。,,宏指令MCRO(99)/MCRO(99)功能用一个子程序N代替数个相同结构但操作数不同的子程序。当执行条件为ON时,停止执行主程序,将输入通道S1~S13的内容复制到通道SR232~SR235中;将输出通道S2~S23的内容复制到通道SR236~SR239中,然后调用子程序N。子程序执行完毕,再将通道SR236~SR239中的内容传送到输出通道S2~S23中,并返回到MCRO指令的下一条语句,继续执行主程序。,,使用子程序调用程序时要注意以下几点(1)所有子程序都必须放在主程序之后和END指令之前。(2)主程序调用各子程序的次数没有限制。(3)子程序可以嵌套调用。即子程序中又调用别的子程序。但是嵌套不能超过16级,且子程序不能自调用。,,,,宏指令调用子程序的例子,,,,,二、中断控制指令中断指在外部或内部触发信号的作用下,中断主程序的执行而转去执行一个预先编写的子程序,即中断处理子程序也称中断服务程序,中断处理子程序执行完毕再返回断点处继续执行主程序的现象。,二、中断控制指令中断功能作用在实际控制过程中,控制系统中有些随时可能发生的情况需要PLC处理;具有中断功能的PLC可以不受扫描周期的影响;及时将这种随机的信息输入到PLC中;提高PLC对外部信息的响应速度。,1.外部输入中断CPMlA系列PLC中,00003~00006这四个点是外部输入中断的输入点。外部发生的事件所产生的信号通过中断输入点送入PLC,当某个中断输入点为ON或ON一定次数时,产生中断请求信号。当不使用中断功能时,这些点作为普通输入点使用。外部输入中断有输入中断和计数中断两种模式。,二、中断控制指令常见中断有三种形式外部输入中断、间隔定时器中断和高速计数器中断。,(1)外部输入中断模式。1)输入中断模式在非屏蔽情况下,只要中断输入点接通则产生中断响应。若在屏蔽情况下,即使中断输入点接通也不能产生中断响应,但该中断信号被记忆下,待屏蔽解除后立即产生中断。若屏蔽解除后不希望响应所记忆的中断,可用指令清除该记忆。,2)计数器中断模式对中断输入点接通的次数进行高速计数减计数,当达到设定的次数时产生中断,计数器停止计数、中断被屏蔽。若想再产生中断需使用指令进行设定。计数器的计数范围0~65535,计数频率最高为lkHz。对计数模式中断,CPMlA系列规定用通道SR240~243(分别对应00003~00006输入点)存放计数器设定值。,外部输入点对应固定的中断处理子程序编号中断输入0输入点00003子程序号为000中断输入1输入点00004子程序号为001中断输入2输入点00005子程序号为002中断输入3输入点00006子程序号为003优先级中断输入0中断输入1中断输入2中断输入3。不使用中断功能,这些子程序号可用作普通子程序编号。中断处理子程序也用SBN定义其开始,用RET定义其结束。中断处理子程序也必须放在主程序之后和END之前。,在外部输入中断使用之前,要用编程器对DM6628进行设定,若不进行设定就没有中断功能。DM6628设定的内容和含义如图,(2)外部输入中断控制指令INT(89)/INT(89)格式INTC1符号000C2C1控制码。其取值为000~003,100,200。C2控制数据。C1002时取值范围IR、HR、AR、LR、TC、DM、*DMC1≠002时取值范围DM、*DM、0000~000F。功能当执行条件ON时,根据C1的数据完成6种功能中一种。,C1是控制码,其取值和含义1)C1000对00003~00006输入点屏蔽/不屏蔽。是否屏蔽,由C2的bit00~bit03位来决定.,2)C1001清除/不清除输入中断记忆。是否清除,由C2的bit00~bit03位来决定。(1/0清除/不清除3C1002读出00003~00006输入点的当前屏蔽状态写入C2中,为屏蔽时C2的对应位为1。,4)C1003更新/不更新00003~00006输入点的计数器设定值。是否更新设定值,由C2的bit00~bit03位来决定,(1/0不更新/更新5)C1100屏蔽所有中断(包括外部输入中断、间隔定时器中断和高速计数器中断)。屏蔽期间若有中断请求将不响应,但可记忆各种中断信号,待屏蔽解除时立即响应中断。6)C1200解除屏蔽所有中断,恢复到执行“屏蔽所有中断”之前的状态,但不解除各个中断自己的屏蔽字(如C1000时,INT写入的屏蔽字)。,注C1100和C1200时,C20000为固定设置;屏蔽所有中断与解除屏蔽所有中断应成对使用;不是十分必要,一般不要使用屏蔽所有中断。,记数器模式外部中断举例。生产线记数装箱程序(局部)。对产品进行记数,每到50件便执行装箱子程序。00003为记数脉冲输入点。程序运行前首先设定DM66280001,使输入点00003成为中断输入点。1部分计数器设定值输入,设定值为50;2部分中断控制,设定输入点00003更新,其余输入点为屏蔽状态;3部分中断处理子程序用来执行装箱子程序,应注意的是中断输入点00003对应的中断处理子程序号是000。,,2.间隔定时器中断CPM1A有一个间隔定时器,是递减计数器,定时时间到时,不受扫描周期的影响,停止执行主程序并建立断点,立即转去执行中断子程序,实现高精度的定时中断处理。间隔定时器中断有两种工作模式1单触发模式,当规定时间到时,只执行一次中断;2重复中断模式,每隔一定时间反复执行中断。,间隔定时器中断控制指令STIM(69)/STIM(69)格式STIMC1符号C2C3C1控制码。其取值为000,003,006,010。C2控制数据1。取值IR、HR、AR、LR、DM、*DM、。C3控制数据2。取值IR、HR、AR、LR、DM、*DM、。功能执行条件为ON时,据Cl的数据完成4种功能中的一种。C2、C3的取值根据C1的状态来决定。,C1是控制码,其取值和含义如下(1)C1000启动单次中断模式1)C2若为常数BCD码,0000~9999时,为定时器的设定值。实际定时时间即为该常数值,单位毫秒ms。C3为子程序号。2)C2若为通道号,C2、C21通道决定定时时间,C2内容为BCD码,取值0000~9999,C21内容为BCD码,取值0005~0320。C3为子程序号。实际定时时间[C2的内容C21的内容]0.1ms,实际定时范围0.5~319968ms。,C1是控制码,其取值和含义如下2C1003启动重复中断模式C2、C21、C3的意义及定时时间的计算同上。3C1006读出定时器的当前值4C1010停止间隔定时器工作。此时C2、C3固定为000。,间隔定时器中断举例。程序中STIM指令的控制码C1003,启动重复中断模式;控制数据C2为通道号DM0000,定时时间为60001000.160000ms。满足条件时每隔60s启动中断子程序010一次。,,3.高速计数器中断PLC普通计数器的计数脉冲频率受扫描周期及输入滤波器时间常数的限制,不能对高频脉冲信号进行计数。对高频脉冲信号的计数,大、中型PLC是采用特殊功能单元来处理。小型PLC,例如CPMlA系列,由于其设置了高频脉冲信号的输入点,配合相关的指令及设定,处理高频脉冲信号的计数问题。,(1)脉冲编码器在自控系统中经常使用脉冲编码器。,脉冲编码器向PLC输出的信号形式1增减模式,有A相B相(脉冲输入)和Z相(复位)三个信号,进行增减记数;2递增模式,一个单相脉冲信号A和一个计数复位信号Z作为PLC输入。,,1增减计数A00000B00001Z00002a\递增计数当A相超前B相90゜时,在A、B相脉冲的前沿,计数器的当前值加1;b\递减计数当B相超前A相90゜时,在A、B相脉冲的前沿,计数器的当前值减1。增减计数的最高计数频率是2.5kHz;计数范围32767~32767F0007FFF~00007FFF,最高位的F表示负数。,2递增计数时,被计数的高频脉冲信号由PLC的00000输入点输入。这个脉冲信号可以是外部被计数的事件提供的信号,也可以是旋转编码器提供的单相脉冲信号。在输入计数脉冲信号的前沿,高速计数器的当前值加1。递增计数的最高计数频率是5kHz;递增计数的计数范围0~6553500000000~0000FFFF。,(2)CPMlA系列PLC高速计数器的设定使用高速计数器前必须进行设定。CPMlA系列PLC,其设定值放在DM6642中。CPMlA系列PLC,高速计数器的当前值PV放在SR248和SR249中。SR248存放当前值的低4位,SR249存放当前值的高4位。,高速计数器计数时,若从上限值开始进行递增计数就会发生上溢出,当前值为0FFFFFFF;若从下限开始进行递减计数就会发生下溢出,当前值为FFFFFFFF。溢出时计数器停止计数,记数脉冲到来时,当前值不再变化。,3高速计数器复位时,其当前值PV0。CPMlA系列PLC的高速计数器有两种复位方式。1硬件复位Z信号软件复位,分两种情况其一,若高速计数器的复位标志位25200先为ON时,在复位Z信号为ON的前沿时刻,高速计数器复位;其二,若复位Z信号先ON时,在25200为0N一个扫描周期后,高速计数器复位。Ts是扫描周期。,,2软件复位当25200为ON一个扫描周期后高速计数器复位,如图所示。另外,当PLC断电后又通电时高速计数器会自动复位。,,(4)高速计数器中断方式目标值比较中断和区域比较中断。1)目标值比较中断要建立一个目标值比较表,目标值比较表占用一个区域的若干个通道,其中首通道存放目标值个数BCD码。比较表中最多放16个目标值,每个目标值占2个通道各存放目标值的低4位和高4位。每个目标值紧跟一个中断子程序号,存放16个子程序号需16个通道,所以目标值比较表最多占用48个通道。目标值比较表中的数据可用编程器预先写入。,目标值比较中断的执行过程高速计数器计数时,若其当前值与比较表中某个目标值相同,则停止执行主程序而转去执行与该目标值对应的子程序。子程序执行完毕,返回到断点处继续执行主程序。,2区域比较中断建立一个区域比较表,分8个区域,每个区域占5个通道,其中两个通道用来存放下限值的低4位和高4位,两个通道用来存放上限值的低4位和高4位,一个通道存放与该区域对应的中断子程序号。当实际使用的比较区域不满8个时,要把其余区域存放上、下限值的通道都置0,将存放子程序号的通道都置FFFF。区域比较表中的数据可用编程器预先写入。,区域比较中断的执行过程高速计数器计数过程中,若其当前值落在区域比较表中某个区域时,即下限值≤高速计数器PV值≤上限值,则停止执行主程序而转去执行与该区域对应的中断处理子程序。子程序执行完毕,返回到断点处继续执行主程序。,(5)高速计数器的控制指令1.操作模式控制指令INI(61)/INI(61)格式INIP符号CSP端口定义。取值为000。C控制数据。取值为000,001,002,003。S设定值开始通道。取值IR、SR、HR、AR、LR、DM、*DM。,,功能执行条件ON时,据C的内容启动或停止比较表的比较;更新高速计数器当前值;停止由01000和01001脉冲输出。1)C000启动比较表。2)C001停止比较表。上述取值时S固定为0003)C002改变高速计数器当前值,将S1高4位、S低4位内容传到SR248、249通道,作为高速计数器新的当前值。4)C003停止脉冲输出此时S固定为000,脉冲输出见第七节。,2、比较表登录指令CTBL(63)/CTBL(63)格式CTBLP符号CSP端口定义。取值为000。C控制数据。取值为000,001,002,003。S比较表开始通道。取值IR、HR、AR、LR、DM、*DM。执行区域比较中断时,比较结果存放在AR11通道的00-07位。功能执行条件ON时,根据C内容,登录一个目标值比较表或区域比较表,并根据C的内容,决定启动比较的方式。,2、比较表登录指令CTBL(63)/CTBL(63)C是控制数据,含义1)C000登录一个目标值比较表,并启动比较。2)C001登录一个区域比较表,并启动比较。3)C002登录一个目标值比较表,用INI启动比较。4)C003登录一个区域比较表,用1NI启动比较,,采用高速计数器目标值比较中断的例子,高速计数器目标值比较中断的程序,1部分为CTBL设定,控制数据C为000表示登录一个目标值比较表,并启动比较。比较表开始通道S为DM0100。为目标值比较表,共设定了两个目标值00004000,对应中断子程序号为050;00800000,对应中断子程序号为051。,,,,若高速计数器的当前值等于目标值1时,中断主程序执行050号中断程序,把4000传送到HR00中,执行完毕返回断点继续执行主程序。若高速计数器的当前值等于目标值2时,中断主程序执行051号中断子程序,把0080传送到HR04中。当00005为ON时,高速计数器复位。,,,