理论教育 如何采集脉冲信号

如何采集脉冲信号

时间:2023-07-01 理论教育 版权反馈
【摘要】:采集脉冲信号,中、大型机用高速计数单元,小型机用高速计数器或功能块。如欧姆龙PLC,它的CPM2A机可使用000通道的00、01、02三个输入点处理脉冲量输入,进行高速计数。此外,还可控制脉冲输出。其梯形图符号为图4-12 E6B2-CWZ6C编码器与PLC输入点接线这里,C1指定输入或输出端口,十六进制数0000为脉冲输出0、十六进制数0001为脉冲输出1、十六进制数0010为高速计数器0、十六进制数0011为1、十六进制数1000为PWM输出0、十六进制数1001为PWM输出1等。

如何采集脉冲信号

采集脉冲信号,中、大型机高速计数单元小型机用高速计数器或功能块。此外,还可用外中断及定时中断。只是后两者所采集的频率要低些。

1.用高速计数器或功能块采集

小型PLC多有可处理脉冲量的I/O点。高速计数时,每组一般有3个输入点。如欧姆龙PLC,它的CPM2A机可使用000通道的00、01、02三个输入点处理脉冲量输入,进行高速计数。它的新型的小型机的这个功能及性能又有很大提升。如CQM1H机还有高速计数的内插板,插入CPU单元内,可处理4路、频率高达500kHz的高速计数。再如CJ1M机内置有多个脉冲输入、输出点。可进行多组、多种脉冲输入、输出操作。CP1H机是欧姆龙新推出的小型机,也有很强的高速计数功能。

西门子S7-200、三菱的FX机以及和利时LM机情况也类似。以下将以CP1H、S7-200、FX2N及LM机为例,对其做简要介绍。

(1)CP1H机高速计数输入。

1)高速计数模式。可按不同特点分类:

(a)以计数信号分有4种:

a)两相输入。数据用有A、B两相,复位用Z相。输入脉冲来自编码器。其可能的一种接线如图4-6所示。

b)脉冲+方向输入。使用方向信号输入及脉冲信号输入,根据方向信号的状态(OFF/ON)将计数值相加或相减。

c)加减脉冲输入。有两个输入点,一个输入正向脉冲、增计数,一个输入反向脉冲、减计数。

d)单相输入。单相输入仅用一个脉冲输入端。有脉冲入,计数值即增加。

(b)以计数范围分有:

a)线性模式。在下限(-2147483648)与上限(2147483647)值之间计数。初始从计数从0开始。如超过上限,则溢出;如超过限,则下溢。溢出、下溢后都停止计数。如果为加法模式计数,则下限为0,上限为4294967295(FFFFFFFF)。

b)环形模式。在设定范围内对输入脉冲进行循环计数。如加计数,到最大值,则归0后再继续计数。如减计数,减到0,则先变为最大值,再继续减计数。设定的最大值不应超过二进制值FFFFFFFF。用环形模式计数,不存在负值。

(c)以复位方式分有:

a)软复位。高速计数器复位标志OFF→ON时,将高速计数器当前位置复位。但要在赶上I/O刷新,即一个扫描周期后,才能实现复位,如图4-8所示。

b)Z相信号+软复位。高速计数器复位标志为ON的状态下,Z相信号(复位输入)OFF→ON时,将高速计数器当前值复位。常用于对编码器做多圈计数的场合。图4-9所示为这种复位方式的定时图。

此外,还可选定复位后高速计数器比较是否继续。

978-7-111-39745-8-Chapter05-9.jpg

图4-8 软件复位

978-7-111-39745-8-Chapter05-10.jpg

图4-9 Z相信号+软件复位定时图

2)高速计数特性。CPIH机有X/XA(内嵌有模拟量输入输出点)及Y型机。其高速计数特性见表4-1。高速计数使用的内存区见表4-2。

表4-1 高速计数特性

978-7-111-39745-8-Chapter05-11.jpg

(续)

978-7-111-39745-8-Chapter05-12.jpg

■区域分配

表4-2 高速计数使用的内存区

978-7-111-39745-8-Chapter05-13.jpg

3)高速计数器使用。首先要做好设定,确定计数模式、计数范围、及复位方式。其次,要做好接线。最后,编写及调试程序。

(a)设定。用编程软件CX-Programmer,在设定窗口的「内置输入设置」画面上(见图4-10),对高速计数器0~3进行设定。设定后下载给PLC。

从图4-10可知,在该画面上可对是否使用高速计数,以及使用的计数模式、输入模式及复位方式进行设定。设定的范围见表4-3。

(b)接线。图4-11所示为CP1H机高速计数器输入点布置图。如高速计数器0,其输入点为08、09、03点。其功能涂上也有注明。接线就要注明接。

图4-12所示为使用欧姆龙,E6B2-CWZ6C NPN开路输出的编码器与PLC输入点接线。用的24V滞留电源

978-7-111-39745-8-Chapter05-14.jpg

图4-10 高速计数器设定画面

表4-3 高速计数器设定范围

978-7-111-39745-8-Chapter05-15.jpg

978-7-111-39745-8-Chapter05-16.jpg

图4-11 CP1H机高速计数器输入点布置图

(c)编程。要在主程序中调用处理高速计数的相关指令。同时还要编写高速计数中断服务程序。以下介绍编程所用的相关指令及程序实例。

a)高速计数处理相关指令。有INI(动作控制)、PRV(当前值读取)、PRV2(频率转换)及CTBL(表比较)4个指令。

INI指令。可进行如下动作控制:开始或停止高速计数器比较,变更高速计数器当前值,变更中断计数输入当前值。此外,还可控制脉冲输出。其梯形图符号为

978-7-111-39745-8-Chapter05-17.jpg

图4-12 E6B2-CWZ6C编码器与PLC输入点接线

978-7-111-39745-8-Chapter05-18.jpg

这里,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指令。主要用以读取高速计数器及脉冲输出当前值、频率、状态(是否溢出、是否进行比较)及比较结果。梯形图符号为

978-7-111-39745-8-Chapter05-19.jpg

这里,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中使用。其梯形图符号为

978-7-111-39745-8-Chapter05-20.jpg

这里,C1指定转换项目,十六进制数1为当前值到累计旋转数转换,十六进制数0#∗0为频率旋转速度转换,其中#指定转速单位、∗指定频率计算方式。C2指定系数。D、D+1两个字用以存储转换结果值。

CTBL指令。用以登记与起动高速计数器当前值与设定值比较。本指令执行一次即有效。其梯形图格式为

978-7-111-39745-8-Chapter05-21.jpg

这里,C1指定输入或输出端口,十六进制数0000为高速计数器0、十六进制数0001为1、十六进制数0002为2、十六进制数0003为3。C2为控制字,十六进制数0000为登录并起动目标值比较、十六进制数0001为登录并起动目标范围比较、十六进制数0002为登录目标值比较、十六进制数0003为登录目标范围比较。S开始的若干字用以存储有关比较参数。

如果为目标值比较,这里S开始的若干字含义为

S指定多少个比较目标值,可在十六进制数0001~0030之间选取。

每个目标值比较固定占用3个字。第一、二个字为比较目标值,可以在十六进制数0000~FFFF之间选取。如使用多个目标值比较,这些目标值不能相同。同时,不能把计数的上下限值作为目标值。第三个字指定增或减计数有效及中断任务号。其中高字节的最高位指定增、减计数有效,0增计数有效,1减计数有效;低字节指定中断任务号,可在十六进制数00~FF之间选取。

增减计数有效含义为,如设定增计数有效,只要高速计数器当前值增加到与目标值相等,则激发所指定的中断任务。如设定减计数有效,只要高速计数器当前值减少到与目标值相等,则激发所指定的中断任务。

这个目标值比较设定有多少字,取决于在S中指定。最多可扩展到S+142~S+144。

如果为目标范围比较,固定使用S~S+39共40个字。每个目标范围比较固定占用5个字。所以最多可进行8个范围比较。这5个字的含义为

第一、二个字为比较范围下限,可以在十六进制数0000~FFFF之间选取。第三、四个字为比较范围上限,可以在十六进制数0000~FFFF之间选取,但必须大于下限。第5个字指定中断任务号。只要高速计数器当前值落入比较范围(含上、下限值),则激发所指定的中断任务。中断任务号,可在十六进制数00~FF之间选取。

如果不进行那么多比较,可把不进行比较的中断号设为十六进制数FFFF。

b)程序实例。

例1,图4-13为读脉冲频率程序。当0.01为ON时,执行PRV指令,在该状态下读取输入到高速计数输入0中的脉冲频率,由十六进制数输出到D201,D200中。

978-7-111-39745-8-Chapter05-22.jpg

图4-13 读脉冲频率程序

提示:这里的C1、C2值,输入数字前要加“#”号。但早期机型不加“#”。以下各指令也类似。

提示:欧姆龙CP1M机油更强的脉冲信号处理功能,可专用于运动控制。

例2,图4-14a为两个目标值比较程序。当0.00由OFF到ON时,执行CTBL指令,登录与起动比较。设定参数如图4-14b所示。从图知,本例设定为2个比较数。目标值分别为1F4H及3E8H。对应的中断程序为1与2。中断程序的具体内容略。

978-7-111-39745-8-Chapter05-23.jpg

图4-14 读脉冲频率程序

提示:以上只是对指令的概要介绍。细节多与PLC型号、版本有关,可参阅有关说明书。建议在指令使用前最好先做些测试。

(2)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。计数是循环增、减,如增计数,增到2 147483647时,再加1,变为-2147483648。再增,则在此基础上增;减计数,减到-2147483648时,再减1,变为1147483447。再减,则在此基础上减。

计数器有12种计数模式。但不是所有计数器都支持这些模式。具体的计数模式及所使用的输入点,见表4-4。

表4-4 计数模式与计数输入点

978-7-111-39745-8-Chapter05-24.jpg

在进行高速计数前,要用高速计数定义(HDEF)指令,先对选用哪个计数器,以及对其模式进行设定。对每个计数器,这个指令只是在第一次执行时有效。这意味着,模式一旦选定,中途无法改变。

高速计数要用到有关特殊存储器,从SM36~SM65(分别为HSC0~HSC2所用)及从SM136~SM165(分别为HSC3~HSC5所用)。这些存储器有的用作反映计数状态,有的用作进行计数控制(增、减计数及现值、设定值改变)。其中用于HSC0特殊存储器的功能见表4-5。这里SMB37用以控制计数器工作,而SMB36反映计数器工作状态。其他计数器用的只是按编号依次对应变化。

表4-5 HSC0用特殊存储器

978-7-111-39745-8-Chapter05-25.jpg

为了实现高速计数,还要执行一次HSC指令。其目的是使特殊存储器的设定生效,并使指定的计数器(本指令的操作数)做好计数准备。但此指令不能连续执行,那样也不计数。

S7-200高速计数有的模式可用硬件复位,但不能用软件复位。如需要软件复位,可先对存储新现值特殊存储器,如HSC0用SMD38,赋值,再通过特殊存储器的控制位,如HSC0用SM37.6设定,并再执行一次HSC指令,以这新现值把传给它。如果这个新现值是0,即实现了复位。

提示:S7-200要按要求,用HDEF指令做好初始化选定,并用HSC指令做好初始化高速计数器调用,则可进行脉冲采集。采集的脉冲数以十六进制格式,存于高速计数器中。但不能连续进行这个调用,那样,将不进行脉冲采集。

(3)FX2N机。可使用X000~X005共6个点,对C235~C255共21个高速计数器进行不同模式的计数。表4-6为这些点与这些计数器间的可能组合。

表4-6 FX2N机高速计数器与输入点的可能组合

978-7-111-39745-8-Chapter05-26.jpg

如表所示,用X000点,可对C235、C241、C244进行(U/D)增、减计数(是增、是减?由相应特殊继电器控制);对C246、C247、C249进行(U)增计数;并可做两相计数器C251、C252、C254的A相输入。但一旦选定一种,就不能再用于另一种。表中R为硬件复位输入端。如无硬件复位输入端的,可与普通计数器一样,通过执行RST指令进行复位。表中S为硬件允许高速计数输入端。有此输入端的,只有此输入ON,才能进行计数。

表4-7所示为单相1计数输入时控制计数方向用的特殊继电器。

表4-7 单相1计数输入时控制计数方向用的特殊继电器

978-7-111-39745-8-Chapter05-27.jpg

如表所示,如使用高速计数器C235,则用M8235控制计数方向。M8235 OFF,增计数;ON,减计数。其他的类似。

表4-8所示为计数输入时检测实际计数方向用的特殊继电器。

表4-8 计数输入时检测实际计数方向用的特殊继电器

978-7-111-39745-8-Chapter05-28.jpg

如表4-8所示,如使用高速计数器C246,若它进行增计数,则M8246 OFF,若减计数,则ON。其他的也类似。

与CP1H、S7-200不同是,FX2N高速计数,除了以上初始化工作完成后,还必须用像普通计数器一样,用输出指令调用,否则不计数。

提示:FX2N机要按要求,做好选定,并在程序运行中,调用高速计数器,才能进行脉冲采集。采集的脉冲数以十六进制格式,存于高速计数器中。停止调用,脉冲采集也停止。

(4)和利时LM机。可单相或双相采集,也可用中断采集。

1)单相脉冲信号采集。对和利时LM机,单相脉冲信号采集可以使用的功能块有4个,即

(a)HDCTUDT2,16位高速可逆计数功能块。脉冲输入为%IX0.0,增减控制为%IX0.1。

(b)HDCTUDT3,16位高速可逆计数功能块。脉冲输入为%IX0.2,增减控制为%IX0.3。

(c)HDCTUDT4,16位普通可逆计数功能块。脉冲输入为%IX0.4,增减控制为%IX0.5。

(d)HDT7CTU,16位高速增计数功能块。输入点用%IX0.6。

以HDCTUDT2为例,它的脉冲信号输入点为%IX0.0。它的梯形图格式如图4-15所示。有关参数说明见表4-9。它的最高计数频率为100kHz。

978-7-111-39745-8-Chapter05-29.jpg

图4-15 单相高速计数功能块HDCTUDT2(www.daowen.com)

表4-9 单相高速计数功能块HDCTUDT2有关参数说明

978-7-111-39745-8-Chapter05-30.jpg

提示:和利时LM机这种执行功能块的方法实现单相高速脉冲信号采集,比其他有的PLC用设定实现要方便得多。但使用前必须加载HeolysysPLCEXCT.Lib库文件。

图4-16所示为HDCTUDT2功能块使用程序。它的变量声明如下:

978-7-111-39745-8-Chapter05-31.jpg

978-7-111-39745-8-Chapter05-32.jpg

如图4-16所示,当EN OFF时,停止计数,Q输出0,计数值CV保持。当EN ON时,开始计数。每当%IX0.0采集到1个脉冲上升信号,其计数值增1。当CV=PV时,Q输出ON。

978-7-111-39745-8-Chapter05-33.jpg

图4-16 HDCTUDT2功能块使用程序

这时,如“RSTLD”OFF,计数值仍保持,但再次ON后,将从0开始计数。

提示:用高速计数功能块采集脉冲,只是采集数据是中断的。要实现计数值的中断处理,INTEN应置1,同时,还要与做好相关中断事件选定,中断服务程序指定及处理程序编写。

2)两相脉冲输入量采集。两相高速脉冲输入可以使用的功能块有4个,即

(a)HDDCTUDT2,16位高速可逆计数功能块。A相脉冲入为%IX0.0,B相脉冲入为%IX0.1,清零用%IX0.6。

(b)HDDCTUDT3,16位高速可逆计数功能块。A相脉冲入为%IX0.2,B相脉冲入为%IX0.3,清零用%IX0.7。

(c)HDDCTUDT4,16位普通可逆计数功能块。A相脉冲入为%IX0.4,B相脉冲入为%IX0.5,清零用%IX0.0。

(d)HDDCTUD32T3,32位高速可逆计数功能块。A相脉冲入为%IX0.2,B相脉冲入为%IX0.3。使用它时,HDDCTUDT3、HDDCTUDT4不能使用。

以HDDCTUDT2为例,它输入点为%IX0.0(A相)及%IX0.1(B相)。它的梯形图格式如图4-17所示。有关参数说明见表4-10。它的最高计数频率为100kHz。

978-7-111-39745-8-Chapter05-34.jpg

图4-17 两相高速计数功能块HDDCTUDT2

表4-10 两相高速计数功能块HDDCTUDT2有关参数说明

978-7-111-39745-8-Chapter05-35.jpg

(续)

978-7-111-39745-8-Chapter05-36.jpg

提示:和利时LM机这种执行功能块的方法实现两相高速脉冲信号采集,比其他有的PLC用设定实现要方便得多。但使用前必须加载HollysysPLCEXDCT.Lib库文件。对HDDCTUD32T3,32功能块,要加载HollysysPLCEXDCT32.Lib库文件。

图4-18所示为HDDCTUDT2功能块使用程序。它的变量声明如下:

978-7-111-39745-8-Chapter05-37.jpg

978-7-111-39745-8-Chapter05-38.jpg

图4-18 HDDCTUDT2功能块调用程序

如图4-18所示,当EN复位时,停止计数,Q输出0,计数值CV保持。当EN输入ON开始计数,Q输出1。此后,每当通道%I0.0和通道%I0.1接收到1个脉冲量的上升沿或下降沿时,则计数值CV增加1。当CV=PVmax时,CV=0,并重新开始计数。

两路高速脉冲输入量的频率相位不同,但是应该相同,并且以相位决定计数方向。计数频率与硬件通道性能有关。

提示:用高速计数功能块采集脉冲,只是采集数据是中断的。要实现计数值的中断处理,得要做好相关中断事件选定,中断服务程序指定及处理程序编写。但它自身不生成中断事件。

2.利用内置定时中断采集

如果要计算所采集的脉冲频率怎么办?可采用内置定时中断。

(1)如欧姆龙CPM2A机无直接计算所采集脉冲频率的指令,但有定时中断指令,可利用其计算所采集的脉冲频率。定时中断指令,其梯形图格式为

978-7-111-39745-8-Chapter05-39.jpg

这里,C1为控制码,取值000(一次性定时开始),003(周期性定时开始)时,C2为定时时间间隔,C3(BCD码)代表将调用的子程序号;取值006(读定时器现值)时,C2、C2+1及C3存定时器开始定时后已过去的时间及相应单位,见以下注3;取值010(停止定时)时,C2、C3没有用,但须设为0;

注1:C2可以是常数,BCD码格式,取值可从0000~9999,单位毫秒。但取值为0000时,等于不进行定时中断。C2也可以是地址,要占两个字。低字(C2)代表定时值,BCD码。高字(C2+1)为定时单位,也为BCD码。取值只能在0005~0320之间,单位为0.1ms;即所可能设的单位可以在0.5~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

图4-19a所示为启动周期定时中断程序,在PLC第一个扫描周期时执行。其含义是,定义一个定时值为250ms的,周期工作的,内部定时中断程序。每当定时到,即调子程序1。

图4-19b所示为计算脉冲频率子程序1。这里用的是符号地址。每执行一次本子程序,将把通道248、249的值传送给“BCD码脉冲频率”,然后特殊继电器252.00 ON,把高速计数器复位(仅用软件复位),为新一轮计数作准备。由于定时中断子程序是每250ms执行一次,显然,这里“BCD码脉冲频率”中的值乘4即为所求的脉冲频率。

978-7-111-39745-8-Chapter05-40.jpg

图4-19 定时中断及计算脉冲频率程序

(2)S7-200定时中断。S-200有两个中断定时器,Time0Intrvl及Time0Intrv2。其时间间隔分别用SMB34及SMB134设定。设定单位为ms,在1~255间取值。即最短时间间隔为1ms,最大为255ms。

为了实现定时中断,还要启动有关使用中断的指令。图4-20所示为S7-200脉冲采集及定时中断计算脉冲频率程序。

图4-20a是高速计数初始化程序,可知高速计数用的是HC0,模式为0,增计数,计数器初值设为0。图4-20b是定时中断初始化程序,,可知,定时中断用定时器0,时间间隔为250ms。关联的子程序为INT 0(中断事件10为定时时间到)。图4-20c是定时中断子程序INT 0,执行它,只是把HC0的值传给VD10,同时把SMD38的值(从初始化程序知,它为0)传给HC0,使HC0复位,使它又可从0开始计数。显然,这里VD10中的值乘4即为所求的脉冲频率。

(3)FX2N也可定时中断。同时可直接用SPD指令直接计算所采集的脉冲频率。FX2N有3个定时中断定时器,I6~I8,见表4-11。

978-7-111-39745-8-Chapter05-41.jpg

图4-20 频率采集及定时中断计算脉冲频率程序

表4-11 FX2N定时中断

978-7-111-39745-8-Chapter05-42.jpg

表中I6~I8后两个小方框,表示定时中断时间间隔,允许从10~99,时间单位毫秒。即间隔只能在10~99ms间选取。为了实现定时中断,还要启动有关使用中断的指令(EI)。图4-21所示为FX2N脉冲采集及定时中断计算脉冲频率程序。

图4-21a为主程序,要先执行EI指令,允许定时中断。X012 ON将调用高速计数器C235。X011 ON将使高速计数器C235复位,并停止计数。X010 ON,高速计数器C235为减计数,而OFF,为增计数。

图4-21b定时中断子程序。它的标号为I650,表示用定时器I6,而定时时间间隔为50ms。这意味着每50ms执行一次这个子程序。执行它的功能是,把C235的当时值传送给D100、101(MOV的前缀为D,双字传送),并使C235清零。显然,这里D100、101存的就是每50ms采集的脉冲数。此值乘20即为脉冲频率。

978-7-111-39745-8-Chapter05-43.jpg

图4-21 FX2N脉冲采集及脉冲频率计算程序

图4-21c为使用SPD指令的程序。SPD指令中的X000为脉冲输入点。K250为时间间隔,单位毫秒。D0为在此时间间隔中所采集的脉冲数。因为这里的K值设为250,即时间间隔为250ms,显然,如果把这里的D0值乘4,则将是所计算的脉冲频率。指定目标字D0后,其后的D1、D2也将被指令占用。D1计即时采集的脉冲,时间间隔到时,它的值自动传给D0,并清零。D2存的是时间间隔的剩余时间。

978-7-111-39745-8-Chapter05-44.jpg

图4-22 内置定时功能块HDTIMERT7

提示:同一输入点,如使用作高速计数,则不能再用作测量脉冲频率。如图4-21,要么用图a、b,要么用图c。两者都用是不成立的。

(4)和利时LM机利用内置定时中断采集高速脉冲输入要使用功能块HDTIMERT7。它的梯形图格式如图4-22所示。有关参数说明见表4-12。它的最小定时间隔为100μs。

表4-12 内置定时功能块HDTIMERT7有关参数说明

978-7-111-39745-8-Chapter05-45.jpg

提示:和利时LM机这种执行功能块的方法实现定时中断,比其他有的PLC用设定实现要方便得多。但使用前必须加载HeolysysPLCEXTIMER.Lib库文件。

图4-23所示为一例HDTIMERT7功能块使用程序。它的变量声明如下:

978-7-111-39745-8-Chapter05-46.jpg

978-7-111-39745-8-Chapter05-47.jpg

图4-23 HDTIMERT7使用实例

如图4-23所示,当EN复位时,停止产生HDTC7 interrupt中断事件,Q输出0。当EN置位并保持时,Q输出1。因为INTEN等于1,所以每隔5000μs就触发一次中断关联事件(HDTC7 interrupt)。为了让这事件能调用如图4-26所示中断服务程序(HDTC7 int1),得做好相关设定。本例选定“HDTC7 interrupt t”(定时中断)为中断事件项,并指定(called POU)名为“HDTC7 int1”。

从图4-24可知,它的节1为调用计数功能块增ccc。输入点为%IX0.7。PV值为10000。“zhouqi”为复位信号zo。只要%IX0.7变化周期大于定时中断周期的两倍,则ccc即可正常计数。

节2为定时中断次数统计,每执行一次中断,“cishu”加1。

节3为比较,只要次数大等于200,即经历了200×5ms(1s),则“zhouqi”ON。

节4,当“zhouqi”ON时,将把当前的计数值传送给“pp”。同时,使“cishu”置0。为新的次数统计作准备。

可知,这里的“pp”存的数就是1s内采集的%IX0.7脉冲,即它的频率。

978-7-111-39745-8-Chapter05-48.jpg

图4-24 中断服务程序(HDTC7 int1)

3.利用外部中断采集

不少PLC配置有可外部中断的输入点。也可利用它采集脉冲数据。如和利时LM机,可使用功能块FastExINT及FastExINTE。前者输入点为%IX1.0、%IX0.7及%IX0.6。后者还增加了%IX1.1(对应中断事件为FastExternal0)。以FastExINT功能块为例,它的梯形图格式如图4-25a所示。有关参数说明见表4-13。它的最高计数频率为100kHz。

978-7-111-39745-8-Chapter05-49.jpg

图4-25 快速外部中断功能块及其调用程序

4-13 快速外部中断功能块FastExINT有关参数说明

978-7-111-39745-8-Chapter05-50.jpg

提示:和利时LM机这种执行功能块的方法实现外中断,比其他有的PLC用设定实现要方便得多。但使用前必须加载HeolysysPLCEXEXINT.Lib库文件。

图4-25b所示为一例FastExINT功能块使用程序。它的变量声明如下:

978-7-111-39745-8-Chapter05-51.jpg

当EN复位时,输入通道I1.0停止接收中断脉冲,Q输出0。当EN置位并保持时,Q输出1。每当输入通道I1.0接收到1个脉冲量的上升沿时,就触发相应的快速外部中断。而为执行中断,还要做两项工作:

(1)设定中断事件,并指定响应它的中断服务程序名称;

(2)设计中断服务程序。

图4-26所示为进行事件设定及设计服务程序的例子。图4-26a是在当选定“任务配置”,并单击“system events”项后弹出的窗口。窗口出现后,本例选定“Fast External1 interrupt”(外中断1)中断事件项,并指定(called POU)名为“INTEXSAPLE”。

这样选定意味着,这里使用了“Fast Extent1 interrupt”(外中断1)中断事件。其目的是,当此事件发生时,即%IX0.0从OFF到ON一次,则调用名为“INTEXSAPLE”的服务程序一次。

所设计的服务程序如图4-26b所示。这服务程序有3节。节1进行加1计算,以使“count”计数。节2作比较处理,只要“count”不小于(即大、等于)设定值“shD”,则位“Da”ON。节3对比较结果进行处理。一旦“Da”ON,则产生输出“shuchu”,并使“count”回0。

可知,本例设定及服务程序的目的是利用%I1.0点进行高速计数。计数值存于字“count”中。一旦计数值达到设定值“shD”,产生输出,并使计数值复位。而所有这些过程都是中断执行的。所以可以用其采集与处理高速脉冲信号。

4.用高速计数单元、模块或内插板采集

脉冲信号也可用高速计数器单元、模块或内插板采集,特别是多数中、大型机,一般没有内置高速计数器,也没有相关指令,更应如此。

978-7-111-39745-8-Chapter05-52.jpg

图4-26 中断事件设定及服务程序

高速计数单元、模块或内插板都有自己的输入、输出点,而且是智能化的,有自己的CPU,可独立进行中断计数,比较,并产生中断输出。PLC的CPU只是用于与其进行数据交换及对其计数进行起、停控制。

这些单元、模块或内插板很多,而且可以说是与日俱增。不同的PLC有不同的型别与规格,可与相应PLC配合使用。

高速计数单元、内插板有单路的,两路的,以及多路的,分别可处理单路,两路及多路的高速计数。它的性能也都比内置高速计数器高。其计数频率可高达几十、几百赫兹,以至于更高。计数范围多为2字长十六进制数。

高速计数单元、内插板的计数模式都较多。可运用软、硬件设定,选用合适的计数模式。

在采集脉冲信号的原理上,这些单元或内插板基本上都是相同的。都是用自身的脉冲采集用中断,输入点采集脉冲,然后存入内部存储器。但在具体使用上,则随型号的不同,多有差别。一般要做的工作是:

1)高速计数模块类型较多,要选合适的类型。

2)计数模式也很多,也要选用合乎实际需要的。

3)进行硬件设定。这要根据不同厂商、不同型号作不同处理。

4)正确安装及接线。

5)进行参数设定。不同的输入模式、计数模式,或相同的输入模式、计数模式而情况不同,参数的设定也都不可能完全相同。

6)选用命令及使用好标志,正确编制梯形图程序,使高速计数单元实现所要求的功能。除了编好使用程序,还应编写一些出错指示及进行诊断以确定出错地址(点)和出错性质的监控与诊断程序。由于高速计数单元工作频率高,工作过程也较复杂,为了工作可靠,对其进行监控及简单的诊断是必要的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈