首页 理论教育 C语言实现的1.4.7计数器:字与比特计数

C语言实现的1.4.7计数器:字与比特计数

时间:2023-06-27 理论教育 版权反馈
【摘要】:32bit计数器可当作32bit数据寄存器使用,但不能用作16bit指令中的操作元件。也就是说,由于只有6个高速计数的输入,因此,最多同时用6个高速计数器。上列所有的计数器均为32bit增/减计数器。图1-12 高速计数器应用示例图1-13 高速计数器错误应用举例1相计数器 1相高速计数器有如下两组:上列两组计数器的计数方式及触点动作与前文中讲述的普通32bit计数器相同。

C语言实现的1.4.7计数器:字与比特计数

1.内部信号计数器

内部信号计数器是在执行扫描操作时对内部元件(如X、Y、M、S、T和C)的信号进行计数的计数器。因此,其接通(ON)时间和断开(OFF)时间应比PLC的扫描周期稍长,通常其输入信号频率大约为几个扫描周期/秒。

(1)16bit增计数器(设定值:1~32767) 有两种类型的16bit二进制增计数器:

1)通用:C0~C99(10点);

2)停电保持用:C100~C199(100点)。

其设定值在K1~K32767之间。设定值K0与K1含义相同,即在第一次计数时,其输出触点动作。

使用计数器C100~C199时,即使停电,当前值和输出触点的置位/复位状态也能保持。

通用/停电保持型计数器数目分配可以通过参数设置加以改变。

如图1-10所示,X11为计数输入,每次X11接通时,计数器当前值增1。当计数器的当前值为10时,即计数输入达到第10次时,计数器C0的输出触点接通,之后即使输入X11再接通,计数器的当前值都保持不变。当复位输入X10接通(ON),执行RST指令,计数器当前值复位为0,输出触点也断开(OFF)。

计数器的设定值,除了可由常数K设定外,还可间接通过指定数据寄存器的元件号来设定,如指定D10而D10的内容为123,则与设定K123等效。

如果将大于设定值的数置入当前值寄存器(例如用MOV指令),则当计数输入端ON时,计数器继续计数。其他计数器也是如此。

978-7-111-34776-7-Chapter01-14.jpg

图1-10 16bit增计数器

(2)32bit双向计数器(设定值:-2147483648~+2147483647) 有两种32bit的增/减计数器:通用计数器C200~C219(20点),保持计数器C220~C234(15点)。其设定值为-2147483648~+2147483647,计数的方向(增计数或减计数)由特殊辅助继电器M8200~M8234设定。

如图1-11所示,用X14作为计数输入,驱动C200线圈进行加计数或减计数。

978-7-111-34776-7-Chapter01-15.jpg

图1-11 32bit双向计数器

当计数器的当前值由-6→-5(增加)时,其触点接通(置1);由-5→-6(减少)时,其触点断开(置0)。

当前值的增减虽与输出触点的动作无关,但从+2147483647起再进行加计数当前值就成为-2147483648。同样从-2147483648起进行减计数,当前值就成了+2147483647(这种动作称为循环计数)。当复位输入X13接通(ON),计数器的当前值就为0,输出触点也复位。

使用停电保持的计数器,其当前值和输出触点状态均能停电保持。

32bit计数器可当作32bit数据寄存器使用,但不能用作16bit指令中的操作元件。

2.高速计数器

虽然C235~C255(共21点)都是高速计数器,但它们共享同一个PLC上的6个高速计数器输入端(X0~X5)。即如果输入已被某个计数器占用,它就不能再用于另一个高速计数器(或其他用途)。也就是说,由于只有6个高速计数的输入,因此,最多同时用6个高速计数器。另外,还可用作比较和直接输出等高速应用功能。

高速计数器的选择并不是任意的,它取决于所需计数器的类型及高速输入的端子。计数器类型如下:

1)1相无启动/复位端子:C235~C240;

2)1相带启动/复位端子:C241~C245;

3)2相双向:C246~C250;

4)2相A—B相型:C251~C255。

上列所有的计数器均为32bit增/减计数器。各种计数器对应输入端子的名称见表1-1。

表1-1 高速计数器(X0,X2,X3:最高10kHz;X1,X4,X5:最高7kHz)

978-7-111-34776-7-Chapter01-16.jpg

注:U——增计数输入;D——减计数输入;A——A相输入;B——B相输入;R——复位输入;S——启动输入。

X6和X7也是高速不同输入,但只能用作启动信号而不能用于高速计数。不同类型的计数器可同时使用,但它们的输入不能共用。

注:输入端X0~X7不能同时用于多个计数器,例如,如果使用了C251,下列计数器和指令就不能使用:C235,C236,C241,C244,C246,C247,C249,C252,C254,I0∗∗,I1∗∗及SPD(FNC56)指令的有关输入。

高速计数器是按中断原则运行的,因而它独立于扫描周期,选定计数器的线圈应以连续方式驱动,以表示这个计数器及其有关输入连续有效,其他高速处理不能再用其输入端子。

[例1-1] 高速计数器应用如图1-12所示,当X20接通时,选中高速计数器C235,根据表1-1,C235对应计数输入X0,因此,计数输入脉冲应从X0而不是X20输入。当X20断开,线圈C235断开;同时,C236接通,因此,选中计数器C236,其计数输入为X1端。

警告:不要用计数输入端作计数器线圈的驱动触点,如图1-13所示。

978-7-111-34776-7-Chapter01-17.jpg

图1-12 高速计数器应用示例

978-7-111-34776-7-Chapter01-18.jpg

图1-13 高速计数器错误应用举例

(1)1相计数器(C235~C245) 1相高速计数器有如下两组:

978-7-111-34776-7-Chapter01-19.jpg

上列两组计数器的计数方式及触点动作与前文中讲述的普通32bit计数器相同。做增计数器时,当计数值达到设定值时,触点动作并保持;作减计数时,到达计数值则复位。

1相计数器的计数方向取决于其对应标志MS△△△,△△△为对应计数器号(235~245)。

图1-14a所示为1相无启动/复位(C235~C240)高速计数器。每个计数器只用一个计数输入端。其动作如下:

978-7-111-34776-7-Chapter01-20.jpg

图1-14 1相(C235~C245)高速计数器(www.xing528.com)

1)方向标志M8235为ON时,计数器C235减计数;为OFF时,计数器C235增计数。

2)X11接通,C235复位至地触点C235断开。

3)当X12接通,C235选中,从表1-1中得知,对应计数器C235的输入为X0,C235对X0输入的OFF→ON信号计数。

图1-14b所示为1相带启动/复位(C241~C245)高速计数器。这些计数器各有一个计数输入及一个复位输入。计数器C244和C245还另有一个启动输入。其动作如下:

1)当方向标志M8245为ON时,C245减计数;M8245为OFF时,C245增计数。

2)当X14接通,C245像普通32bit计数器一样复位。从表1-1可知,C245还能由外部输入X3复位。

3)计数器C245还有外部启动输入端对。当X7接通,C245开始计数;对断开时,C245停止计数。

4)X15选通C245,对R输入端的“OFF→ON”计数。

注意:对C245设置D0实际上是设置D0、DI,因为计数器为32bit;外部控制启动(X7)和复位(X3)是立即响应的,它不受程序扫描周期的影响。

(2)2相双向计数器(C246~C250) 这种计数器具有一个输入端用于增计数,另一个输入端用于减计数。某些计数器还具有复位和启动输入。

以图1-15a所示计数器C246为例,其动作如下:

1)当X10接通,C246以普通32bit增/减计数器一样的方式复位。

2)从表1-1可知。C246计数器用X0作为增计数端,X1作为减计数端,X11必须接通以选通C246,以使X0、X1输入有效:

X0“OFF→ON”,C246增1

X1“OFF→ON”,C246减1

又如图1-15b所示计数器C250:

1)由表1-1得知,双向计数器C250将X5作为复位输入,X7作为启动输入,因此,可由外部复位,而不必使用RSTC250指令。

2)要选通C250必须接通X13,启动输入X7必须接通,以开始脉冲计数,X7为OFF时,停止计数。

3)增计数输入:X3;减计数输入:X4。

4)计数方向可由监视相应的状态寄存器M8△△△得到,△△△为计数器号。ON:减计数;OFF:增计数。

978-7-111-34776-7-Chapter01-21.jpg

图1-15 2相双向计数器

(3)2相A-B相计数器(设定值:-2147483648~+2147483647) 2相2输入(C251~C255,1个或2个,电池后备)最多可有2个2相32bit二进制增减计数器,其对于计数数据的动作过程与前文中描述的32bit计数器相同。对这些计数器,只有表1-1中所示的输入端可用于计数。它是采用中断方式计数,与扫描周期无关。这些计数器还有一些独立于逻辑操作的执行比较和输出操作的应用指令。选定计数器元件号后,对应的启动、复位及输入信号就能使用。A相和B相信号决定了计数器是增计数还是减计数。当A相波形为ON状态时:B相输入OFF—ON:增计数;B相输入ON~OFF:减计数。

978-7-111-34776-7-Chapter01-22.jpg

如图1-16所示,检查对应的特殊继电器M8△△△可知道计数器是增计数还是减计数:

1)在X11接通时,C251对输入X0(A相)、X1(B相)的“ON/OFF”事件计数。

2)选通信号X13接通时,一旦X7(S启动输入)接通,C255立即开始计数,计数输入为X3(A相)和X4(B相)。

3)X5(R复位输入)接通时,C255复位。在程序中编入虚线所示指令,则X12接通时也能使C255复位。

978-7-111-34776-7-Chapter01-23.jpg

图1-16 2相A-B相计数器应用实例

最高计数频率:计数器的最高计数频率受两个因素约束:各个输入的响应速度;全部高速计数器的处理时间。

1)各输入端的响应速度:它由硬件所限制,只用一个计数器时各输入点的最高响应频率为:X0、X2、X3:最高10kHz;X1、X4、X5:最高7kHz。

2)全部高速计数器的处理时间:这是高速计数器的主要速度限制。计数器操作是采用中断方式,因此,计数器用得越少,则可计数频率就越高。但如果某些计数器用比较低的频率计数,则其他计数器可以较高的频率计数。

使用的全部计数器的频率总和应低于20kHz。频率总和是指同时在PLC上出现所有信号的最大频率的总和。为使高速计数器准确计数,这个频率总和必须小于20kHz。

注意,FX2N的X0、X1是特殊的硬件计数器,当C235、C236、C246作为单相高速计数器时,最高频率可达60kHz;C251作为两相计数器时,最高频率可达30kHz。使用高速比较指令采用X0、X1作为输入点时也有频率限制:FNC53、FNC54最高可达11kHz;FNC55最高可达5.5kHz。

3.相计数器

(1)双向型 设计成增计数信号和减计数信号不会同时发生。实际上,在特定时刻只使用1相信号。因此,它们可按单相计数器计算方法来计算频率总和。

当增、减计数信号脉冲同时到达计数器,则作为2相信号计数器来计算频率总和。

当使用具有顺时针和逆时针输出形式的编码器时,这些双向计数器可用比A—B相型计数器高得多的频率计数,而不会影响结果。

(2)A—B相型 是另一种类型的计数器,它可同时将A相与B相信号解码,自动确定增计数或减计数。

在使用1个或2个这种计数器后,建议不要用高于2kHz的频率对其计数。

当计算频率总和时,每一个计数器的最大信号频率应乘以4后再与其他计数器的频率相加。

虽然求得频率总和(19kHz)低于20kHz,但双向计数器(C246)的输入X1的硬件响应频率限制为7kHz。因此,C246的信号频率需从8kHz降为7kHz。

当使用多个计数器或多种类型的计数器时,其频率总和必须低于20kHz(记住将A—B相计数器频率乘以4)。

[例1-2] 1相计数器:10kHz(1个),2kHz(1个);

A—B相计数器:2kHz(1个);

频率总和=10kHz+2kHz+2kHzX4=20kHz。

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

我要反馈