采集脉冲信号,小型机用高速计数器或功能块,中、大型机用高速计数单元。此外,还可用外中断及定时中断。只是后两者所采集的频率要低些。
1.用高速计数器或功能块采集
小型PLC多有可处理脉冲量的I/O点。西门子S7-200、三菱的FX机以及和利时LM机情况也类似。以下将以欧姆龙的CP1H、西门子的S7-200、三菱的FX2N以及和利时LM机为例,对其做简要介绍。
(1)CP1H机高速计数输入
1)高速计数模式。可按不同特点分类:
①以计数信号分有4种:
a)两相输入。数据用A、B两相,复位用Z相。输入脉冲来自编码器。
b)脉冲+方向输入。使用方向信号输入及脉冲信号输入,根据方向信号的状态(OFF/ON)将计数值相加或相减。
c)加减脉冲输入。有2个输入点,1个输入正向脉冲、增计数,1个输入反向脉冲、减计数。
d)单相输入。单相输入仅用一个脉冲输入端。有脉冲入,计数值即增加。
②以计数范围分有:
a)线性模式。在下限(-2147483648)与上限(2147483647)值之间计数。初始从计数从0开始。如超过上限,则溢出;如低于下限,则下溢。溢出、下溢后都停止计数。如果为加法模式计数,则下限为0,上限为4294967295(FFFFFFFF)。
b)环形模式。在设定范围内对输入脉冲进行循环计数。如加计数,到最大值,则归0后再继续计数。如减计数,减到0,则先变为最大值,再继续减计数。
③以复位方式分有:
a)软复位。高速计数器复位标志OFF→ON时,将高速计数器当前位置复位。但要在赶上I/O刷新,即1个扫描周期后,才能实现复位,
b)Z相信号+软复位。高速计数器复位标志为ON的状态下,Z相信号(复位输入)OFF→ON时,将高速计数器当前值复位。常用于对编码器做多圈计数的场合。此外,还可选定复位后高速计数器比较是否继续。
2)高速计数特性。CPIH机有X/XA(内嵌有模拟量输入输出点)及Y型机。其高速计数特性及使用内存区见有关说明书。这里略。
图3-1 高速计数器设定画面
3)高速计数器使用。首先要做好设定,确定计数模式、计数范围及复位方式。其次,要做好接线。最后,编写及调试程序。
①设定。用编程软件CX-Programmer,在设定窗口的「内置输入设置」画面上(见图3-1),对高速计数器0~3进行设定。设定后下载给PLC。
从图3-1知,在该画面上可对是否使用高速计数,以及使用的计数模式、输入模式及复位方式进行设定。设定的范围见表3-1。
表3-1 高速计数器设定范围
②接线。图3-2所示为CP1H机高速计数器输入点布置图。如高速计数器0,其输入点为08、09、03点。其接线按图示接。
图3-2 CP1H机高速计数器输入点布置图
图3-3所示为使用欧姆龙E6B2-CWZ6CNPN开路输出的编码器与PLC输入点接线。用的24V直流电源。
③编程。要在主程序中调用处理高速计数的相关指令。同时还要编写高速计数中断服务程序。以下介绍编程所用的相关指令及程序实例。
图3-3 E6B2-CWZ6C编码器与PLC输入点接线
a)高速计数处理相关指令。有INI(动作控制)、PRV(当前值读取)、PRV2(频率转换)及CTBL(表比较)4个指令。
INI指令。可进行如下动作控制:开始或停止高速计数器比较,变更高速计数器当前值,变更中断计数输入当前值。此外,还可控制脉冲输出。其梯形图符号如图3-4所示。
图3-4 INI指令
这里,C1指定输入或输出端口,十六进制数0000为脉冲输出0、十六进制数0001为脉冲输出1、十六进制数0010为高速计数器0、十六进制数0011为高速计数器1、十六进制数1000为PWM输出0、十六进制数1001为PWM输出1等(具体因PLC型号而变)。C2为控制字,十六进制数0000为开始比较,十六进制数0001为停止比较,十六进制数0002为待变更的当前值,十六进制数0003为停止脉冲输出(在脉冲输出停止状态下将清除脉冲量设定)S、S+1两个字用以存储待变更的当前值。不是变更功能设为十六进制数0000,不使用。
PRV指令。主要用以读取高速计数器及脉冲输出当前值、频率、状态(是否溢出、是否进行比较)及比较结果。梯形图符号如图3-5所示。
这里,C1指定输入或输出端口,同指令INI。D、D+1两个字用以存储读取值。C2为控制字,0000H为读取当前值,0001H为读取状态,0002H为读取比较结果,00□3H为读取脉冲频率(□=0,通常方式,□=1,10ms采样方式,□=0,100ms采样方式,□=0,1s采样方式)。通常方式用每个脉冲计数时间的计数进行计算。但在高频时,脉冲上升沿/下降沿失真会引起误差(参考:100kHz中最大为1%的误差。1MHz时的最大误差为(5%))。指定时间采样方式是用测量一定时间(采样时间)内的计数脉冲,计算频率。可选择3个时间,即具体为10ms、100ms及1s(计算该时间内的脉冲数)。
PRV2指令。把读取高速计数器中脉冲频率转换成转速,或把高速计数器的当前值转换成累计旋转数,并用8位十六进制数存储。但只能在高速计数器0中使用。其梯形图符号如图3-6所示。
图3-5 PRV指令
图3-6 PRV2指令
这里,C1指定转换项目,十六进制数1为当前值到累计旋转数转换,十六进制数0#∗0为频率旋转速度转换,其中#指定转速单位、∗指定频率计算方式。C2指定系数。D、D+1两个字用以存储转换结果值。
CTBL指令。用以登记与起动高速计数器当前值与设定值比较。本指令执行一次即有效。其梯形图格式如图3-7所示。
这里,C1指定输入或输出端口,0000H为高速计数器0、0001H为1、0002H为2、0003H为3。C2为控制字,0000H为登录并起动目标值比较、0001H为登录并起动目标范围比较、0002H为登录目标值比较、0003H为登录目标范围比较。S开始的若干字用以存储有关比较参数。
图3-7 CTBL指令
如果为目标值比较,这里S开始的若干字含义为:S指定多少个比较目标值,可在0001H~0030H之间选取。
每个目标值比较固定占用3个字。第1个、第2个字为比较目标值,可以在0000H~FFFFH之间选取。如使用多个目标值比较,这些目标值不能相同。同时,不能把计数的上下限值作为目标值。第3个字指定增或减计数有效及中断任务号。其中高字节的最高位指定增、减计数有效,0增计数有效,1减计数有效;低字节指定中断任务号,可在00H~FFH之间选取。
增减计数有效含义为,如设定增计数有效,只要高速计数器当前值增加到与目标值相等,则激发所指定的中断任务。如设定减计数有效,只要高速计数器当前值减少到与目标值相等,则激发所指定的中断任务。
这个目标值比较设定有多少字,取决于在S中指定。最多可扩展到S+142~S+144。
如果为目标范围比较,固定使用S~S+39共40个字。每个目标范围比较固定占用5个字。所以最多可进行8个范围比较。这5个字的含义为
第1个、第2个字为比较范围下限,可以在0000H~FFFFH之间选取。第3个、第4个字为比较范围上限,可以在0000H~FFFFH之间选取,但必须大于下限。第5个字指定中断任务号。只要高速计数器当前值落入比较范围(含上、下限值),则激发所指定的中断任务。中断任务号,可在00H~FFH之间选取。
如果不进行那么多比较,可把不进行比较的中断号设为FFFFH。
b)程序实例。
图3-8 读脉冲频率程序
例1:图3-8为读脉冲频率程序。当0.01为ON时,执行PRV指令,在该状态下读取输入到高速计数输入0中的脉冲频率,由十六进制数输出到D201,D200中。
提示1:这里的C1、C2值,输入数字前要加“#”号。但早期机型不加“#”。以下各指令也类似。
提示2:欧姆龙CP1M机有更强的脉冲信号处理功能,可专用于运动控制。
例2:图3-9a为2个目标值比较程序。当0.00由OFF到ON时,执行CTBL指令,登录与起动比较。设定参数如图3-9b所示。从图知,本例设定为2个比较数。目标值分别为1F4及3E8H。对应的中断程序为1与2。中断程序的具体内容略。
图3-9 读脉冲频率程序
提示:以上只是对指令的概要介绍。细节多与PLC型号、版本有关,可参阅有关说明书。建议在指令使用前最好先做些测试。
(2)S7-200机
S7-200机可使用于高速计数器与CPU 的具体型号有关。如CPU 221和CPU 222支持4个,即HSC0、HSC3、HSC4和HSC5。而CPU 224、CPU 226和CPU 226XM支持6个,从HSC0~HSC5。实际使用时,其地址的前缀为HC。每个计数器占4个字节,低字节存低位数,高字节存高位数,计数范围从-2147483648~1147483647。计数是循环增、减,如增计数,增到2147483647时,再加1,变为-2147483648。再增,则在此基础上增;减计数,减到-2147483648时,再减1,变为1147483447。再减,则在此基础上减。
计数器有12种计数模式。但不是所有计数器都支持这些模式。具体的计数模式及所使用的输入点,见表3-2。
表3-2 计数模式与计数输入点
在进行高速计数前,要用高速计数定义(HDEF)指令,先对选用哪个计数器,以及对其模式进行设定。对每个计数器,这个指令只是在第1次执行时有效。这意味着,模式一旦选定,中途无法改变。
高速计数要用到有关特殊存储器,从SM36~SM65(分别为HSC0~HSC2所用)及从SM136~SM165(分别为HSC3~HSC5所用)。这些存储器有的用做反映计数状态,有的用做进行计数控制(增、减计数及现值、设定值改变)。其中用于HSC0特殊存储器的功能见表3-3。这里SMB37用以控制计数器工作,而SMB36反映计数器工作状态。其它计数器用的只是按编号依次对应变化。
为了实现高速计数,还要执行一次HSC指令。其目的是使特殊存储器的设定生效,并使指定的计数器(本指令的操作数)做好计数准备。但,此指令不能连续执行,那样也不计数。
表3-3 HSC0用特殊存储器
S7-200高速计数有的模式可用硬件复位,但不能用软件复位。如需要软件复位,可先对存储新现值特殊存储器,如HSC0用SMD38,赋值,再通过特殊存储器的控制位,如HSC0用SM37.6,设定,并再执行一次HSC指令,以把这新现值传给它。如果这个新现值是0,即实现了复位。(www.xing528.com)
提示:S7-200机要按要求,用HDEF指令做好初始化选定,并用HSC指令做好初始化高速计数器调用,则可进行脉冲采集。采集的脉冲数以十六进制格式,存于高速计数器中。但不能连续进行这个调用,那样,将不进行脉冲采集。
(3)FX2N机
FX2N机可使用X000~X005共6个点,对C235~C255共21个高速计数器进行不同模式的计数。表3-4所示为这些点与这些计数器间的可能组合。
表3-4 FX2N机高速计数器与输入点的可能组合
如表3-4所示,用X000点,可对C235、C241、C244进行(U/D)增、减计数(是增、是减?由相应特殊继电器控制);对C246、C247、C249进行(U)增计数;并可做两相计数器C251、C252、C254的A相输入。但一旦选定一种,就不能再用于另一种。表中R为硬件复位输入端。如无硬件复位输入端的,可与普通计数器一样,通过执行RST指令进行复位。表中S为硬件允许高速计数输入端。有此输入端的,只有此输入ON,才能进行计数。
表3-5所示为1相1计数输入时控制计数方向用的特殊继电器。
表3-5 1相1计数输入时控制计数方向用的特殊继电器
如表3-5所示,如使用高速计数器C235,则用M8235控制计数方向。M8235OFF,增计数,ON,减计数。其它的类似。
表3-6所示为计数输入时检测实际计数方向用的特殊继电器。
表3-6 计数输入时检测实际计数方向用的特殊继电器
如表3-6所示,如使用高速计数器C246,若它进行增计数,则M8246OFF,若减计数,则ON。其它的也类似。
与CP1H、S7-200不同是,FX2N高速计数,除了以上初始化工作完成后,还必须用像普通计数器一样,用输出指令调用,否则不计数。
提示1:FX2N机要按要求做好选定,并在程序运行中调用高速计数器,才能进行脉冲采集。采集的脉冲数以十六进制格式,存于高速计数器中。停止调用,脉冲采集也停止。
提示2:用高速计数功能块采集脉冲,只是采集数据是中断的。要实现计数值的中断处理,得要做好相关中断事件选定,中断服务程序指定及处理程序编写。但它自身不生成中断事件。
(4)和利时LM机
和利时LM机可单相或双相采集,也可用中断采集。
1)单相脉冲信号采集。对和利时LM机,单相脉冲信号采集可以使用的功能块有4个,即
(a)HD_CTUD_T2,16位高速可逆计数功能块。脉冲输入为%IX0.0,增减控制为%IX0.1。
(b)HD_CTUD_T3,16位高速可逆计数功能块。脉冲输入为%IX0.2,增减控制为%IX0.3。
(c)HD_CTUD_T4,16位普通可逆计数功能块。脉冲输入为%IX0.4,增减控制为%IX0.5。
(d)HD_T7_CTU,16位高速增计数功能块。输入点用%IX0.6。
2)两相脉冲输入量采集。两相高速脉冲输入可以使用的功能块有4个,即
(a)HD_DCTUD_T2,16位高速可逆计数功能块。A相脉冲入为%IX0.0,B相脉冲入为%IX0.1,清零用%IX0.6。
(b)HD_DCTUD_T3,16位高速可逆计数功能块。A相脉冲入为%IX0.2,B相脉冲入为%IX0.3,清零用%IX0.7。
(c)HD_DCTUD_T4,16位普通可逆计数功能块。A相脉冲入为%IX0.4,B相脉冲入为%IX0.5,清零用%IX0.0。
(d)HD_DCTUD32_T3,32位高速可逆计数功能块。A相脉冲入为%IX0.2,B相脉冲入为%IX0.3。使用它时,HD_DCTUD_T3、HD_DCTUD_T4不能使用。
两路高速脉冲输入量的相位不同,但是频率应该相同,并且以相位决定计数方向。
2.利用内置定时中断采集
如果要计算所采集的脉冲频率怎么办?可采用内置定时中断。
1)如欧姆龙CPM2A机无直接计算所采集脉冲频率的指令,但有定时中断指令,可利用其计算所采集的脉冲频率。定时中断指令,其梯形图格式如图3-10所示。
图3-10 STIM指令
图3-10中C1为控制码,取值000(一次性定时开始),003(周期性定时开始)时,C2为定时时间间隔,C3(BCD码)代表将调用的子程序号;取值006(读定时器现值)时,C2、C2+1及C3存定时器开始定时后已过去的时间及相应单位,见以下注3;取值010(停止定时)时,C2、C3没有用,但需设为0。
注1:C2可以是常数,BCD码格式,取值可从0000~9999,单位毫秒(ms)。但取值为0000时,等于不进行定时中断。C2也可以是地址,要占两个字。低字(C2)代表定时值,BCD码。高字(C2+1)为定时单位,也为BCD码。取值只能在0005~0320之间,单位为0.1ms;即所可能设的单位可以在0.5ms~32ms之间。
注2:STIM也是减计数计时,计时开始,STIM现值为设定值,进而每经历一个计数单位,其现值减1。当现值减到0时,将调以C3编号的子程序。同时,如C1设为003时,STIM的现值又返回到设定值,并重新开始计时。
注3:当C1=006,读定时器现值时,C2存的为定时器已过去时间数,C2+1存的为时间数的单位,都是BCD码。C3存的也为定时器已计过的时间数,BCD码,但其单位为0.1ms。而计算从最后一次计时开始,真正已过去的时间为
{(C2的值)×(C2+1的值)+(C3的值)}×0.1ms
图3-11a所示为起动周期定时中断程序,在PLC第一个扫描周期时执行。其含义是,定义一个定时值为250ms的,周期工作的,内部定时中断程序。每当定时到,即调子程序1。
图3-11b所示为计算脉冲频率子程序1。这里用的是符号地址。每执行一次本子程序,将把通道248、249的值,传送给“BCD码脉冲频率”,然后特殊继电器252.00ON,把高速计数器复位(仅用软件复位),为新一轮计数做准备。由于定时中断子程序是每250ms执行一次,显然,这里“BCD码脉冲频率”中的值乘4即为所求的脉冲频率。
2)S7-200定时中断。S-200有两个中断定时器,Time_0_Intrv1及Time_0_Intrv2。其时间间隔分别用SMB34及SMB134设定。设定单位为毫秒,在1~255间取值。即最短时间间隔为1ms,最大为255ms。
为了实现定时中断,还要启动有关使用中断的指令。图3-12所示为S7-200脉冲采集及定时中断计算脉冲频率程序。
图3-11 定时中断及计算脉冲频率程序
图3-12 频率采集及定时中断计算脉冲频率程序
图3-12a是高速计数初始化程序,可知高速计数用的是HC0,模式为0,增计数,计数器初值设为0。图3-12b是定时中断初始化程序,可知定时中断用定时器0,时间间隔为250ms。关联的子程序为INT0(中断事件10为定时时间到)。图3-12c是定时中断子程序INT0,执行它,只是把HC0的值传给VD10,同时把SMD38的值(从初始化程序知,它为0)传给HC0,使HC0复位,使它又可从0开始计数。显然,这里VD10中的值乘4即为所求的脉冲频率。
3)FX2N也可定时中断。同时可直接用SPD指令直接计算所采集的脉冲频率。FX2N有3个定时中断定时器,I6~I8,见表3-7。
表3-7 FX2N定时中断
表中I6~I8后两个小方框,表示定时中断时间间隔,允许从10~99,时间单位ms。即间隔只能在10ms~99ms间选取。为了实现定时中断,还要起动有关使用中断的指令(EI)。图3-13所示为FX2N脉冲采集及定时中断计算脉冲频率程序。
图3-13 FX2N脉冲采集及脉冲频率计算程序
图3-13a为主程序,要先执行EI指令,允许定时中断。X012ON将调用高速计数器C235。X011ON将使高速计数器C235复位,并停止计数。X010ON,高速计数器C235为减计数,而OFF,为增计数。
图3-13b定时中断子程序。它的标号为I650,表示用定时器I6,而定时时间间隔为50ms。这意味着每50ms执行一次这个子程序。执行它的功能是,把C235的当时值传送给D100、101(MOV的前缀为D,双字传送),并使C235清零。显然,这里D100、101存的就是每50ms采集的脉冲数。此值乘20即为脉冲频率。
图3-13c为使用SPD指令的程序。SPD指令中的X000为脉冲输入点。K250为时间间隔,单位ms。D0为在此时间间隔中所采集的脉冲数。因为这里的K值设为250,即时间间隔为250ms,显然,如果把这里的D0值乘4,则将是所计算的脉冲频率。指定目标字D0后,其后的D1、D2也将被指令占用。D1计即时采集的脉冲,时间间隔到时,它的值自动传给D0,并清零。D2存的是时间间隔的剩余时间。
提示:同一输入点,如用作高速计数,则不能再用作测量脉冲频率。如图3-13,要么用a、b,要么用c。两者都用是不成立的。
4)和利时LM机也利用内置定时中断采集高速脉冲输入。之前要调用功能块HD_TIMER_T7。
3.利用外部中断采集
不少PLC配置有外部中断的输入点。也可利用它采集脉冲数据。如和利时LM机,可使用功能块Fast_ExINT及Fast_ExINT_E。前者输入点为%IX1.0、%IX0.7、及%IX0.6。后者还增加了%IX1.1(对应中断事件为Fast_External0)。但外中断所能采集的频率不如高速计数器高。
4.用高速计数单元、模块或内插板采集
脉冲信号也可用高速计数器单元、模块或内插板采集,特别是多数中、大型机,一般没有内置高速计数器,也没有相关指令,更应如此。
高速计数单元、模块或内插板都有自己的输入、输出点,而且是智能化的,有自己的CPU,可独立进行中断计数、比较,并产生中断输出。PLC的CPU只是用于:与其进行数据交换及对其计数进行起、停控制。
这些单元、模块或内插板很多,而且可以说是与日俱增。不同的PLC有不同的型别与规格,可与相应PLC配合使用。
高速计数单元、内插板有单路的,两路的,以至多路的,分别可处理单路,两路及多路的高速计数。它的性能也都比内置高速计数器高。其计数频率可高达几十、几百Hz,以至于更高。计数范围多为两字长十六进制数。
高速计数单元、内插板的计数模式都较多。可运用软、硬件设定,选用合适的计数模式。
在采集脉冲信号的原理上,这些单元或内插板基本上都是相同的。都是用自身的脉冲采集用中断,输入点采集脉冲,然后存入内部存储器。但在具体使用上,则随型号的不同,多有差别。一般要做的工作如下:
1)高速计数模块类型较多,要选合适的类型。
2)计数模式也很多,也要选用合乎实际需要的。
3)进行硬件设定。这要根据不同厂商、不同型号做不同处理。
4)正确安装及接线。
5)进行参数设定。不同的输入模式、计数模式,或相同的输入模式、计数模式而情况不同,参数的设定也都不可能完全相同。
6)选用命令及使用好标志,正确编制梯形图程序,使高速计数单元实现所要求的功能。除了编好使用程序,还应编写一些出错指示及进行诊断以确定出错地址(点)和出错性质的监控与诊断程序。由于高速计数单元工作频率高,工作过程也较复杂,为了工作可靠,对其进行监控及简单的诊断是必要的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。