理论教育 内置高速计数器的比较控制思路分析

内置高速计数器的比较控制思路分析

时间:2023-07-01 理论教育 版权反馈
【摘要】:使用有内置高速计数器的PLC,可用普通比较指令,进行较高速计数器现值与设定值比较,然后按比较结果进行相应处理。为高速计数器比较复位指令,其使用如图4-46所示。为高速计数器用的区间比较指令。其格式为这里,S1为设定数低限,S2设定数高限,S为所使用的高速计数器编号,D为控制对象。

内置高速计数器的比较控制思路分析

使用有内置高速计数器的PLC,可用普通比较指令,进行较高速计数器现值与设定值比较,然后按比较结果进行相应处理。但这不是在中断方式下处理,响应速度低,满足不了实际控制要求,所以不能用。

为了确保足够高的响应速度,对高速计数处理的处理,一般要使用可在中断方式下工作的处理或比较指令。这些指令在执行条件具备时,即当有新的脉冲采集或有关的其他事件(产生中断事件)发生时,才执行。无新的脉冲采集或无有关的其他事件发生,则不执行。尽管不同的PLC这些处理指令的差别较大,但其实现比较控制的目的则都可实现。以下具体介绍CPM2A、S7-200及FX2N机的有关指令。

1.CPM2A机

一般是用CTBL指令建立高速计数比较表,并用INI指令启动比较。CTBL指令梯形图格式为

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

这里有三个操作数。第一个默认为000,第二个为控制字,分别取值为000、001、002、003,第三个为表地址(TB),存储被比较数。

(1)C的含义。

000:建立表比较,并开始比较;

001:建立范围比较,并开始比较;

002:建立表比较,由执行INI指令起动比较;

003:建立范围比较,由执行INI指令起动比较。

(2)表地址的含义。

1)若为表比较:可对16个双字比较,这里TB及随后的字的含义为

TB:指明与多少个字比较,取值为1~16;

TB+1:目标值低4位;

TB+2:目标值高4位;

TB+3:当现值与目标值相等时将调用的子程序号

这相邻的3个字算一组。接着还可设第二组。最多可设16组,占48个字。加上TB,最多时,从TB开始到TB+48的字都要用。

2)若为范围比较,则固定用8个范围,其含义为

TB:低限,低4位;

TB+1:低限,高4位;

TB+2:高限,低4位;

TB+3:高限,高4位;

TB+4:当现值落入上述范围,将调用子程序号。

这里每组用5个字,必须设8组,共用40个字。如设了,但又不用,则应把调子程序号那个字设为FFFF。

如果仅用CTBL指令建立比较,而真要进行比较时,还要用INI指令。INI指令格式为

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

INI为中断指令,也有3个操作数。

P默认为0。C可为0、1、2、3。0,起动比较。1,停止比较。2,现值更新。3,脉冲输出停止(用于脉冲输出控制,与此无关)。当C等0时,P1默认为0;而C等2时,指定为计数器赋值的地址。

提示:CBTL、INI为扩展指令,使用前需指定功能码。一般用微分执行,或在运行程序的第1扫描周期执行就可以了。否则也可能不能达到预期效果。

提示:欧姆龙PLC高速计数器的内容,当PLC掉电,即丢失。这点与S7-200及FX2N不

持计数数据,可用MOV、INI指令及保持继电器处理、解同。如需要保

持计数数据,可用MOV、INI指令及保持继电器处理、解决。

2.S7-200机

它也没有专用可在中断实现的比较指令,但它的每个高速计数器都有计数值与设定值相等3个中断事件。这事件可用“ATCH”指令,使其与中断子程序关联。当这些事件发生时,调这被关联的中断子程序,进行处理。

它的每个高速计数器的3个中断事件,是现计数值与设定值相等、计数方向改变及外部复位。以HSC0为例,这3个事件编号分别为12、27及28。而HSC1,这3个事件编号则分别为13、14及15等。其他的可参阅它的编程软件中的有关帮助。

3.FX2N机

用可中断工作的、高速计数器专用的比较置位、复位及区间比较指令,即HSCS、HSCR及HSZ指令。

(1)HSCS指令。为高速计数器比较置位指令。其格式为978-7-111-39745-8-Chapter05-105.jpg

这里S1为设定数,S2为所使用的高速计数器编号,D为计数器现值与设定值相等时置位对象。

如图4-45a所示,它的计数器设定值是30,当计数从29增到30,或从31减到30时,将使Y000 ON。并可自动立即刷新,产生输出。但这样的输出点除了Y000,还有Y001~Y007中的一个。其他的输出点可被置位,但无自动输出刷新功能。其响应速度还将受程序扫描周期的影响。

提示:由于高速计数器是双字的,所以HSCS等指令都应双字使用。而且不能微分执行,否则无效。

HSCS指令执行的结果也可调中断子程序。这时,它的目标操作数D应设为中断子程序标号。如图4-45b所示,当C235计数值等于30时,调中断子程序I10,可使Y010置位,并执行立即输出刷新。当C235计数值等于50时,调中断子程序I60,可使Y010复位,并执行立即输出刷新(REF为立即刷新指令)。当然。在程序的开始,须执行允许中断指令(EI)。

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

图4-45 HSCS指令应用

中断子程序标号还可以指定为I20、I30、I40、I50。使用中断编号不能重复。同时,当特殊辅助继电器M8059 ON,这些中断子程序全被禁止。

(2)HSCR指令。为高速计数器比较复位指令,其使用如图4-46所示。它与HSCS工作过程基本相同,只是HSCS前者为置位,而它为复位。

从图4-46可知,当C235计数值从29计到30时,使Y000置位;当C235计数值从49计到50时,使Y000复位。由于使用Y000做输出,故它的输出也是中断执行的。

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

图4-46 HSCR指令应用

HSCR指令与HSCS指令还有一点不同是,HSCR的目标(D,第3个)操作数虽不能用中断标号,但可以是计数器。如果此操作数为自身,则可用其自身快速复位(现值回到0)。

(3)HCZ指令。为高速计数器用的区间比较指令。其格式为978-7-111-39745-8-Chapter05-108.jpg

这里,S1为设定数低限,S2设定数高限,S为所使用的高速计数器编号,D为控制对象。

它有3种模式:简单比较、表格比较及控制脉冲输出频率等3种模式。

1)简单比较。它的功能与FX的普通区域ZCP比较指令一样,不同的只是它中断执行,而ZCP为扫描执行。图4-47a为它的应用。如所示:

当K100>C235,Y002 ON

当K100≤C235≤K200,Y003 ON

当K200<C235,Y004 ON

如第一(S1)、第二(S2)操作数不用常数,也可为地址。此指令应为双字操作,故这应是双字地址。图中M8235为计数方向特殊继电器,它OFF,增计数;ON,减计数。

由于这个Y地址的前两位是00,情况同HSCS、HSCR指令,故它的输出也是自动立即刷新,中断执行的。

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

图4-47 HCZ指令应用

2)表格比较。它的第4个(D)操作数不是输出点,而为特殊继电器M8130。其含义为用于表格比较模式。这时,第1操作数S1指定比较双字在数据存储区(D区)的开始地址。第2操作数S2指定有多少个比较数,且必须用常数直接指定。如图4-47b,S1为D200,指定地址从D200开始;而S2为K5,指定有5个数据比较,最多可指定多少个数据比较与PLC的性能有关。

从D200开始,每个比较用4个字。本例设为5个比较,故共用20个字。这里D200、D201存一个比较数。D202存输出点Y的地址,如H0,则Y000;如H10,则Y010。D203存储输出点使Y置位(如设为K1),还是复位(如设为K0)。D204~D207、D208~D211、D212~D215及D216~D219的设定按此类推。

表4-14所示为D200~D219有关表格比较数据设定一例。这里的比较数据为升幂排列,即D200、D201设的数最小,而D216、D217设的数最大。也可降幂排列。前者适合于在增计数过程中进行控制;而后者适合于在减计数过程中进行控制。也可任意排列,但要清楚,它的比较虽很多,但它是按行的顺序进行的(而CPM2A无顺序说法不同)。第一行的设定数最先比较,这个比较完成后,才进入第二行的设定数比较。依次类推。如输出点使用的编号Y000~Y007之间,也将立即刷新、中断输出,可得到更快速的响应。

图4-48为与表4-24对应的输出特性。

表4-24 表格比较数据设定实例

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

978-7-111-39745-8-Chapter05-111.jpg(www.daowen.com)

图4-48 比较输出特性

从图4-48可知,高速计数器现值增到123(D200、D201的设定数)时,根据D202、D203的设定,将使Y010置位;而增到234(D204、D205的设定数)时,根据D206、D207的设定,将使Y010复位。

高速计数器现值增到345(D208、D209的设定数)时,根据D210、D211的设定,将使Y011置位;增到456(D212、D213的设定数)时,根据D214、D215的设定,将使Y011复位;而增到567(D216、D217的设定数)时,根据D218、D219的设定,又使Y011置位。

除了以上介绍的输出变化,这里用的输出点被置位(或复位)后,也可用别的指令使其复位(或置位)。

与M8130特殊继电器相应的,也是在表格比较时要用到特殊继电器M8131及特殊寄存器D8130、D8132。可使用它们对表格比较过程进行监视。开始进入表格比较时,M8130ON、M8131OFF,而比较完成,则M8130OFF、M8131ON。D8130记录完成比较的序号,如本例,高速计数器现值已增到345,完成此次比较后,D8130的值将置为3。

再就是,执行此指令后,要先完成表格“制作”,才能通过中断进行比较。这个“制作”应在执行这指令的第一个END指令后,由PLC系统进行。所以这个指令生效是在这个“制作”完成后的周期中。

3)控制脉冲输出频率。用采集到的高速计数器的计数值与多个设定值比较,根据不同的比较结果,与PLSY指令配合,使PLSY指令产生相应的频率输出脉冲。为此,本指令的第4个操作数应是M8132(见图4-49)。

图中①是使用控制脉冲输出频率格式执行HSZ指令,它的比较结果得到的频率值存于与M8132对应的D8132中。②使M100产生微分输出。③用M100的常闭触点调用PLSY指令,目的是在X010 ON后,延时一个扫描周期再执行脉冲输出。这是因为执行HSZ指令建立比较表,是在执行END指令后才完成的,所以必须这么做。

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

图4-49 控制脉冲输出频率模式

这种格式时,S1指定存储比较数据区的首地址,这里D300,指D300为首地址。S2指定有多少个数据比较,这里K5为5个比较。S指定计数器,这里C251,即指定用计数器C251。

比较数据区的地址分配是每组占4个字:头两个双字存储比较数据,后两个双字指定输出频率(高位字常为0)。如数据按照表4-25设定,则当X010 ON,执行图4-26程序,C251从0变化到800时,PLSY的输出频率将依次作如图4-50所示的变化。最后操作完成,特殊继电器M8133 ON,并回到第1行重新工作。如不再要求重新工作,如本例,最后一步置频率为K0。

表4-25 表格比较数据设定实例

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

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

图4-50 脉冲输出变化特性

提示:FX2N高速计数器处理指令较多,可用于很多不同的场合。但实际使用时是受一些限制的。有关细节请参考有关说明书。

用高速计数器进行比较控制是很常用的。图4-51所示切料长度控制就是一个例子。

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

图4-51 切料长度控制

从图4-51可知,导轮2逆时针转动可使卷料放出。它有快、慢速运动。放料时,编码器2也将转动,将按放出料的长度计脉冲。PLC高速计数器采集的即为此脉冲。其工作过程是,先快速放料;快到尺寸时,再慢速放料;到要求长度后,放料停止,进而开动切刀切料。其具体控制指标如图4-52所示。

从图4-52可知,工作开始后,先使部件高速位移950脉冲当量,接着位移停止。延时1s后,继续慢速位移50个脉冲当量,然后工作停止。

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

图4-52 位移控制指标

与此对应的PLC编程要点是:

(1)调用高速计数功能块,或运行初始化程序。

(2)启动快速运动,复位高速计数功能块,并令高速计数功能块开始计数。

(3)设定相应的高速计数功能块比较与处理方法,并执行比较。

(4)比较结果处理并产生相应控制输出。

以下结合此例,看怎样用“内置高速计数器比较控制”去达到这个要求。根据设计要求,所设计的这个控制的算法如图4-53所示。

从图4-53可知,它的控制过程是:起动→被控制对象高速运动,并通过编码器发送脉冲(步1)→PLC接收所发脉冲→PLC对累计接收的脉冲与设定值进行比较,以判断是否达到运动行程所要求的脉冲累计数→如达到要求,使控制对象运动停止并起动定时器(步2)→定时器设定时间到,再起动控制对象慢速运动,并继续通过编码器发送脉冲(步3)→PLC又接收所发脉冲→PLC又对累计接收的脉冲(可以是复位后的新值,也可为在原值的基础上累加)与设定值进行比较,以判断是否达到新要求的运动行程→如达到要求,使被控制对象停止运动(步4)。

图4-54、图4-55所示为PLC对应的梯形图程序。各PLC都是分4步控制。但高速计数器的比较、处理差别较大。

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

图4-53 比较控制算法框图

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

图4-54 比较控制程序

图4-54a为欧姆龙CPM2A用的程序。它首先是做好高速计数器设定。结合本例,按照单相增计数,软件复位的要求,用CPX软件设定。但这在图形图上体现不出来。

其次是选用CTBL指令建立高速计数比较表,并用INI指令起动比较。如图程序,比较数据DM0(2个比较)设为2,DM1(第1比较数低位)设为950,DM2(第1比较数高位)设为0,DM3(调子程序号)设为1,DM4(第2比较数低位)设为1000,DM5(第2比较数高位)设为0,DM6(调子程序号)设为1。

第三是根据比较结果,做相应控制。这里,步1是使“输出1”复位,步3是使“输出2”复位,步2是启动定时器。当定时时间到,进入步3。

最后是进入步4,则退出控制。

图4-54b为西门子S7-200的程序。如图,“起动”ON后进入步1,进而运行初始化程序(HSC-INIT),做好高速计数器设定。结合本例选模式0,HSC 0,单相增计数,I0.0为输入点,软件复位,设定值为950(赋值给SMD42)。同时,选用HSC比较相等事件12与COUNT-EQ中断子程序关联,并开中断。这意味着,当计数值等于950时,则调此子程序。步1还使“输出1”置位,进行快速放料。

当计数值等于950时,则调COUNT-EQ子程序,使“输出1”复位,放料停止,并使“步1完成”置位。

“步1完成”置位,则使“步2”ON,进入步2,使定时器T101计时。计时到,“步2完成”ON,则使“步3”ON,进入步3。它调子程序SBR-0,把设定值改为1000,并使其生效。同时使输出2置位,进行慢速放料。

到了计数值等于这1000,则仍执行COUNT-EQ中断子程序。使输出2复位,放料停止。同时运行DTAH指令,退出高速计数器中断,并使“步3完成”置位,使“步4”ON,进而退出控制。

图4-54c为三菱FX2N的程序。它的高速计数器基本上用不着设定(选用什么标号的高速计数器也就等于对它设定),也不要运行初始化程序。完全用程序与对有关数据区赋值进行处理。

如图,“起动”ON后,进入步1。

在步1开始时,复位计数器C235(结合本例,选用它就是单相增计数,X000为输入点,M8235 OFF为赠计数,软件复位)。然后执行OUT C235指令及比较复位(HSCR)指令,使计数器工作,并开始执行中断比较。当计数值等于950时,使“输出1”复位,停止放料。进而使“步1完成”置位。“步1完成”置位,“步2”ON,进入步2。

进入步2,使定时器T1计时。计时到,“步2完成”ON,则使“步3”ON,进入步3。步3开始时,它使“输出2”置位,进行慢速放料。同时,又执行OUT C235指令及比较复位(HSCR)指令,使计数器工作,并开始执行中断比较。但这时的比较值为1000。

到了计数值等于这1000,则使输出2复位,放料停止。同时使“步3完成”置位,使“步4”ON,进而退出控制。

提示:从本例可知,弄通PLC指令是多么重要。不能正确地理解指令,即使弄通算法,也无法编程。弄通指令,要仔细读有关说明书。必要时还用PLC进行实际测试。由于PLC技术多有推进,这个测试已越来越为重要。

图4-55所示为和利时LM机程序,主程序也是分四步控制。如图所示,“start1”ON、“step1”ON,进入步1。

在步1,进行快速放料。同时,调用“HDCTUDT2”功能块,起动高速计数。本例的PV设为950,Edeg、UPDN、INTEN设为1,EXUD设为0,%I0.0为输入点。设定中断事件为“HD-TC2 interrupt”,并设定此事件调用的中断服务子程序名为“int1”。中断子程序,见图4-55c。当计数值等于950时,则调此子程序,使“step1F”置位,进而使“step2”ON,进入步2。

提示:为了主程序与中断程序能共享数据,这里的“step1”、“step3”、“step1F”及“step3F”应声明为全局变量。

在步2,“step1”复位,放料停止。同时,“HDCTUDT2”功能块也复位,停止计数。同时,定时功能块TON(ton1)开始计时。计时到,“step2F”ON,进而使“Step3”ON,进入步3。

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

图4-55 脉冲量入开关量出的闭环控制

在步3,进行慢速放料。同时,把“HDCTUDT2”功能块设定值改为50,并重新调用“HDCTUDT2”功能块。同时,复位“step2F”及“step2”。而到了计数值等于50时,则仍执行“int1”中断子程序,并使“step3F”置位,使“step4”ON,进而使“step3”、“step3F”复位,程序复原。

为了提高控制精度,这里步的输出最好立即刷新。即转换步后,马上输出生效,而不必等到I/O刷新后才生效。

和利时LM机有立即刷新的功能块(OutPutBit)。还有设置屏蔽正常刷新的功能块(SetINTOutPut)。前者产生的输出可立即刷新。而后者是可用于屏蔽正常的输出刷新,有此功能块可以避免两个刷新之间的相互冲突。

OutPutBit功能块的梯形图符号见图4-55b、d,是中断程序的一部分。这里调用此功能块的目的是把“step1”、“step3”的状态赋值给%QX0.0及%QX0.1,并立即刷新。这里假设%QX0.0用于控制放料电动机快转,而%QX0.1用于控制放料电动机慢转。

表4-26为OutPutBit功能块的使用参数及其说明。

表4-26 OutPutBit功能块使用参数及其说明

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

而在主程序中,则调用SetINTOutPut功能块(见图4-55a)。这里“mode”设为十六进制3(二进制为选取0、1两位),即当“x1”ON时,本功能块使能,将使输出的0、1两位,即%QX0.0及%QX0.1正常的输出刷新功能屏蔽。而它立即刷新由功能块OUTput执行。如图4-55b所示,当“x1”ON后,即使执行节7、8两指令,都不能改变这两点的状态。

表4-27为SetINTOutPut功能块的使用参数及其说明。

表4-27 SetINTOutPut功能块的使用参数及其说明

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

脉冲量入开关量出的闭环控制还可以用做电梯工作控制。如山东某金矿提升机,其位置显示及控制,曾用它代替行程开关控制。当时它是用欧姆龙的CQM1机去实现这个控制。为此,它要作好设定,建立数据表,调用处理指令及设计中断服务程序等。而用和利时LM机的高速计数功能块进行处理,也比较方便。只是这里还要处理好和利时LM机功能块的计数现值不能用初始化方法赋值的问题。

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

我要反馈