高速计数器控制指令高速计数器概述高速计数器控制指令高速计数器的计数功能高速计数器的中断功能CPM1A系列PLC设置了高频脉冲输入点,配合相关指令及必要的设定,可以对高频脉冲进行处理。可以用高速计数器对高频脉冲进行计数。可以用高速计数器实现中断处理。一、高速计数器概述CPM1A系列PLC的高频脉冲输入点是00000~00002。高频脉冲可来源于控制现场,也可由旋转编码器提供。旋转编码器一种旋转编码器与PLC的连接示意图000000000100002CPM1APLCDC24V+-COM-DC24V+A相B相Z相COM旋转编码器两相脉冲单相脉冲计数脉冲1234递增计数脉冲递减计数脉冲A相B相1234567876543210有的旋转编码器可提供三相脉冲,即A、B、Z相。各种脉冲信号的波形A超前BA滞后B二、高速计数器的计数功能高速计数器的计数模式计数器当前值的存储区高速计数器的复位方式使用高速计数器时的设定高速计数器的溢出1.高速计数器的计数模式高频脉冲由PLC的00000输入点输入,在输入计数脉冲的前沿,高速计数器的当前值加1。(1)递增计数模式最高计数频率是5KHz,计数范围是0~65535(00000000~0000FFFF)增减计数的最高计数频率是2.5KHz,计数范围是-32767~+32767(F0007FFF~00007FFF,第一位的F表示负数)。(2)增减计数模式在增减计数时可使用旋转编码器。旋转编码器的A相脉冲接00000输入点,B相脉冲接00001输入点,复位Z信号接在00002输入点。递增计数:当A相超前B相90°时,在A、B相脉冲的前沿,计数器的当前值加1。递减计数:当B相超前A相90°时,在A、B相脉冲的前沿,计数器的当前值减1。2.高速计数器的复位方式高速计数器复位时,其当前值为0。①若高速计数器的复位标志位25200先ON时,在复位Z信号ON的前沿时刻,高速计数器复位;②若复位Z信号先ON时,在25200ON后一个扫描周期时,高速计数器复位。Ts是扫描周期。25200复位Z信号00002Ts复位(1)Z信号+软件复位Ts复位25200(2)软件复位当25200ON一个扫描周期后高速计数器复位。另外,当PLC断电再上电时高速计数器自动复位。3.使用高速计数器时的设定使用高速计数器前必须进行必要的设定,否则使用无效。对CPM1A系列PLC,设定值写入DM6642中。不能用程序写入设定值(用编程工具)。用设定值确定高速计数器功能是否使用、复位方式、计数模式等。高速计数器的设定位号DM664200~0304~0708~15通道号复位方式设定(0:Z信号+软件复位;1:软件复位)高速计数器使用/不使用(00:不使用;01:使用)计数模式(4:递增计数0:增减计数)各位数字的含义例如:DM6642的内容为#0114使用高速计数器软件复位递增计数4.高速计数器的溢出当高速计数器计数时:若从下限开始进行递减计数就会发生下溢出,其当前值为FFFFFFFF。重新复位高速计数器时,将清除溢出状态。若从上限值开始进行递增计数就会发生上溢出,其当前值为0FFFFFFF;发生溢出时计数器停止计数。5.高速计数器的当前值存储区对CPM1A系列PLC,高速计数器的当前值存放在SR248和SR249中。在高速计数器执行高速计数操作后,可以利用指令从SR248和SR249中读出其当前值,也可以利用指令更改其当前值。SR248存放低4位,SR249存放高4位。二、高速计数器的中断功能高速计数器中断功能有两种模式区域比较中断模式目标值比较中断模式1.高速计数器的目标值比较中断最多放16个目标采取目标值比较中断时,要建立一个目标值比较表目标1TBTB+1TB+2TB+3TB+4TB+5TB+6目标值的个数目标值1低4位目标值1高4位中断处理子程序号目标值2低4位目标值2高4位中断处理子程序号目标值比较表…………目标2在高速计数器计数过程中,若其当前值与比较表中某个目标值相同时,则停止执行主程序而转去执行与该目标值对应的子程序。表中数据可预先写入子程序执行完毕,返回到断点处继续执行主程序。2.高速计数器的区域比较中断采取区域比较中断时要建立一个区域比较表TBTB+1TB+2TB+3TB+4TB+5TB+6下限值1低4位下限值1高4位上限值1低4位上限值1高4位中断处理子程序号下限值2低4位中断处理子程序号区域比较表…………下限值2高4位TB+7TB+8TB+9上限值2高4位上限值2低4位区域1区域2每个区占5个通道比较表分8个区域表中数据可预先写入当实际使用的区域不满8个时,要把其余存放上、下限值的通道都置为0,将存放子程序号的通道都置为FFFF。区域比较中断的执行过程若高速计数器的当前值落在比较表中某个区域时(下限值≤计数器PV值≤上限值),则停止执行主程序而转去执行与该区域对应的中断子程序。子程序执行完毕,返回到断点处继续执行主程序。执行区域比较中断时,比较结果存放在AR1100~AR1107中。例如,当计数器的当前值落在比较表的区域1中时,AR1100置为ON,当计数器的当前值落在比较表的区域2中时,AR1101置为ON等。三、高速计数器控制指令CTBL(63)PCTB@CTBL(63)PCTBCTBL(63)PCTB@CTBL(63)PCTBP:端口定义(000)C:控制数据TB:比较表首通道C的含义比较表登录指令000:登录一个目标值比较表,并启动比较。001:登录一个区域比较表,并启动比较。002:登录一个目标值比较表,用指令INI启动比较003:登录一个区域比较表,用指令INI启动比较INI(61)PCP1@INI(61)PCP1INI(61)PCP1@INI(61)PCP1P:端口定义(000)C:控制数据P1:设定值首通道C的含义操作模式控制指令000:启动CTBL定义的比较表(P1固定为000)。001:停止CTBL定义的比较表(P1固定为000)。002:更新高速计数器的当前值。将P1+1(高4位)、P1(低4位)传送到IR248和249中,作为高速计数器的新当前值。003:停止脉冲输出(P1固定为000)。PRV(62)PCD@PRV(62)PCDPRV(62)PCD@PRV(62)PCDP:端口定义(000)C:控制数据(000)D:目的首通道读出当前值指令读出的当前值低4位放在D,高4位放在D+1中。配合上述各指令,可以编写使用高速计数器的程序。高速计数器目标值比较中断使用高速计数器举例@MOV#5000HR00CTBL(63)000000DM0000SBN(92)010RET(93)25315253132520000100SBN(92)011@CMPHR00HR10RET(93)END(01)011012531325505000025000000000100000000200112个目标值目标值1:5000子程序号目标值2:20000子程序号比较表首地址DM0000中断处理子程序也要放在主程序之后、END之前。登录比较表、启动比较比较表首地址软件复位设DM6642的内容为#0104——表示使用高速计数器、递增计数、Z信号+软复位。若高速计数器的当前值等于目标值1时,中断主程序而执行010号中断子程序:把#5000传送到HR00中。子程序执行完毕返回断点处继续执行主程序。@MOV#5000HR00CTBL(63)000000DM0000SBN(92)010RET(93)25315253132520000100SBN(92)011@CMPHR00HR10RET(93)END(01)011012531325505000025000000000100000000200112个目标值目标值1:5000子程序号目标值2:20000子程序号比较表首地址DM0000若高速计数器的当前值等于目标值2时,中断主程序而执行011号中断子程序:将HR00与HR10中的内容进行一次比较,若HR00的内容大于HR10时,01101为ON。子程序执行完毕返回断点处继续执行主程序。若00100ON且有Z信号时,高速计数器复位。@MOV#5000HR00CTBL(63)000000DM0000SBN(92)010RET(93)25315253132520000100SBN(92)011@CMPHR00HR10RET(93)END(01)011012531325505000025000000000100000000200112个目标值目标值1:5000子程序号目标值2:20000子程序号比较表首地址DM0000高速计数器区域比较中断使用高速计数器举例CTBL(61)000003DM000025315INI(61)000002HR00@INI(61)00000000000005XFER(70)#0002248HR0025313PRV(62)000000LR0025313SBN(92)000子程序000REN(93)SBN(92)001子程序001RET(93)END(01)25200001001500000030000000000075000000下限1:1500上限1:3000子程序号子程序号000000010001下限2:7500上限2:10000没用的区域登录比较表、用INI启动比较表首地址更新当前值启动比较将248、249内容传送到HR00、HR01。读出当前值CTBL(61)000003DM000025315INI(61)000002HR00@INI(61)00000000000005XFER(70)#0002248HR0025313PRV(62)000000LR0025313SBN(92)000子程序000REN(93)SBN(92)001子程序001RET(93)END(01)2520000100设DM6642的内容为0100,表示使用高速计数器、增减计数方式、复位方式是采用Z信号+软复位。执行XFER(70)指令,可将高速计数器的当前值248和249中的内容传送到HR00和HR01中。这样,一旦PLC掉电,高速计数器的当前值能被保存在HR00和HR01中。再上电时通过执行第一个INI指令,就可以把掉电前的当前值传送到高速计数器的当前值通道248、249中,作为新当前值。执行当前值读出指令PRV,将248、249中的当前值读到LR00中去。若00100ON且有Z信号,则高速计数器复位CTBL(61)000003DM000025315INI(61)000002HR00@INI(61)00000000000005XFER(70)#0002248HR0025313PRV(62)000000LR0025313SBN(92)000子程序000REN(93)SBN(92)001子程序001RET(93)END(01)2520000100高速计数器控制指令小结1.高速计数器的计数功能(1)高速计数器的计数模式可分为递增计数和增减计数(可配合使用旋转编码器)两类。(2)高速计数器的复位可分为软件复位和Z+软件复位两种方式。Z信号由旋转编码器提供。(3)使用高速计数器必须在DM6642中进行设定,以确定使用/不使用高速计数器、计数模式、复位方式(4)使用高速计数器时,SR248、249存放计数器当前值,不可另作它用。2.高速计数器的中断功能(1)高速计数器的中断分为目标值比较中断和区域比较中断。(2)使用两种比较中断时,要用指令CTBL确定一个比较表,以确定启动比较的方式(直接或用INI启动)及子程序号。(3)用指令INI可以改变计数器的当前值或停止比较。(4)用指令PRV可以读出计数器的当前值。3.注意执行各种指令时对标志位的影响。脉冲输出控制指令中断控制指令步进控制指令特殊指令CPM1A系列PLC的输出点01000和01001可输出20Hz~2KHz的脉冲信号。输出的脉冲可设置成两类:独立模式和连续模式。◎同一时刻只能从一个点输出脉冲。输出脉冲的模式和频率要用控制指令来设定。◎正在输出脉冲时,不能用指令改变输出脉冲个数。概述输出脉冲控制