4.4 计数器指令

4.4.1 计数器

(1)计数器指令格式及功能

计数器指令格式及功能如表4-20所示。

表4-20 计数器指令格式及功能

(2)计数器相关参数

① CTU、CTD、CTUD CT指计数器,U(UP)是增加的意思,D(DOWN)是减少的意思,UD则指增减。故CTU、CTD、CTUD分别为增计数器、减计数器和增减计数器标志。

② 计数器编号Cn Cn为计数器编号,取值范围为C0~C255。

③ CU、CD CU为增计数脉冲输入端,CD为减计数脉冲输入端,数据类型都为BOOL型。

④ 脉冲设定值PV PV为脉冲设定值输入端,数据类型为INT型。

⑤ R、LD R为复位信号输入端,LD为装载输入端,数据类型都为BOOL型。

⑥ 计数器位和计数器当前值Cn Cn不仅仅是计数器的编号,它还包含两方面的变量信息:计数器位和计数器当前值。

计数器位:存储计数器的状态,当计数器的当前值大于等于预设值PV时,该位发生动作,其数据类型为BOOL型,取值为0或1。

计数器当前值:其数据类型为16位有符号整数。

4.4.2 计数器指令编程案例

(1)例说增计数器(CTU)

从梯形图4-32(a)来看,当I0.1断开时,复位端(R)的状态为0,此时,当脉冲输入端CU持续有上升沿脉冲输入时,计数器的当前值加1,当前值增加到等于预设值(PV)时,计数器位被置1,其常开触点C2闭合,使Q0.0得电。

图4-32 梯形图和时序图

若此时脉冲输入依然有上升沿脉冲输入,计数器的当前值将继续增加,直到达到32767为止。在此期间计数器位保持1,其常开触点C2保持闭合,使Q0.0保持得电。

当I0.1闭合时,计数器被复位,其当前值被清0,计数器位变0,使Q0.0失电,此时,即使脉冲输入端有上升沿脉冲输入,计数器不再计数,直到I0.1断开,计数器才会重新工作。

从时序图4-32(b)来看,I0.1共有三次断开。

① 第一次 当I0.1第一次断开期间,I0.0有两个脉冲上升沿,计数器的当前值有两次递增,此时当前值为2,还没有达到预设值3,计数器位保持0。随后,I0.1闭合时,计数器被复位,其当前值被清0。

② 第二次 当I0.1第二次断开期间,I0.0有三个脉冲上升沿,每来一个上升沿,计数器加一。计数器的当前值加到3时,正好等于预设值,计数器位变为1,其常开触点C2闭合,使Q0.0得电;随后,I0.1闭合时,计数器被复位,其当前值被清0,计数器位变为0,其常开触点C2断开,使Q0.0失电。

③ 第三次 当I0.1第三次断开期间,计数器开始工作,但因为脉冲输入没有上升沿脉冲输入,计数器当前值和计数器位没有改变。

(2)例说减计数器(CTD)

从梯形图4-33(a)来看,当I0.1闭合时,计数器被复位,计数器位清零,预设值3装载入计数器的当前值中。

图4-33 梯形图和时序图

当I0.1断开时,装载端LD的状态变为0,计数器开始接受脉冲输入,当脉冲输入端(CD)每来一个上升沿,计数器的当前值就减1,当前值减为0时,计数器停止计数,当前值不再改变,其计数器位C1变为1,线圈Q0.0得电。

从时序图4-33(b)来看,I0.1共闭合两次:

① 第一次 当I0.1第一次闭合时,计数器被复位,计数器位清零,计数器的当前值等于预设值3;

I0.1断开以后,计数器开始接受脉冲输入,当脉冲输入端(CD)来第三个上升沿时,计数器的当前值减为0,计数器停止计数,其计数器位C1变为1,线圈Q0.0得电。此后即使再来上升沿,当前值不再改变。

② 第二次 当I0.1第二次闭合时,计数器位C1清零,计数器的当前值又等于预设值3,重复第一次的过程。

(3)例说增减计数器(CTUD)

从梯形图4-34(a)来看:

图4-34 梯形图和时序图

① 当I0.2断开时,复位端(R)状态为0,计数脉冲输入有效,当增计数输入端(CU)有上升沿脉冲输入时,计数器的当前值加1,当减计数输入端(CD)有上升沿脉冲输入时,计数器的当前值减1。

② 当计数器的当前值大于等于预设值时,计数器位被置1,其常开触点C48闭合,线圈Q0.0得电。此时,如果脉冲输入端CU或CD继续有脉冲上升沿输入时,则当前值将继续增加或减小。

③ 计数器的当前值达到最大值32767后,下一个CU脉冲上升沿将使计数器当前值跳变为最小值-32768。计数器的当前值达到最小值-32768后,下一个CD脉冲上升沿使计数器的当前值跳变为最大值32767。

④ 当I0.2闭合时,复位端(R)状态为1,计数器位置0,当前值变零。

从时序图4-34(b)来看:

① 当I0.2断开期间,计数脉冲输入有效,当增计数输入端(CU)有上升沿脉冲输入时,计数器的当前值加1,到第4个上升沿,计数器的当前值达到预设值4,计数器位被置1,其常开触点C48闭合,线圈Q0.0得电。

②接着脉冲输入端CU又来一个上升沿,使当前值加到5,随后,CD端又来两个下降沿,使当前值减到3,此时当前值小于预设值,计数器位变为0。

③当I0.2闭合时,计数器位置0,当前值变0。

④当计数器的当前值大于等于预设值时,计数器位为1,当计数器的当前值小于预设值时,计数器位为0。

4.4.3 综合实例

综合实例1——倍数计时

范例示意如图4-35所示。

图4-35 范例示意

日常生活中经常需要各种定时器以满足不同方面的需求,这里我们利用PLC控制的倍数计时程序来完成成倍形式的计时功能。

元件说明见表4-21。

表4-21 元件说明

控制程序如图4-36所示。

图4-36 控制程序

① 接通启动开关I0.0,定时器T37开始定时,10s后,定时时间到,T37常开触点闭合一次,其常闭触点T37断开,使T37复位。复位后,T37常闭触点又闭合使T37重新定时,这样便可实现每隔10s,T37的常开触点闭合一次。

② T37常开触点每闭合一次,计数器的当前值就加1。当计数器的当前值累计到5时,C0=ON,Q0.0=ON,提醒装置启动。同时,梯形图第1行的C0常闭触点断开,使T37复位,停止计时。

③ 按下I0.1时,I0.1=ON,C0复位。

综合实例2——产品批量包装与产量统计

范例示意如图4-37所示。

图4-37 范例示意

在产品包装线上,光电传感器每检测到6个产品,机械手动作1次,将6个产品转移到包装箱中,机械手复位;当24个产品装满后,进行打包,打印生产日期,统计日产量,最后下线。图4-37为产品的批量包装与产量统计示意图,光电传感器A用于检测产品,6个产品通过后,向机械手发出动作信号,机械手将这6个产品转移至包装箱内,转移4次后,开始打包,打包完成后,打印生产日期;传感器B用于检测包装箱,统计产量,下线。

元件说明见表4-22。

表4-22 元件说明

控制程序如图4-38所示。

图4-38 控制程序

① 光电传感器每检测到1个产品时,I0.0就触发1次(OFF→ON),C0计数1次。

② 当C0计数达到6次时,C0的常开触点闭合,Q0.0=ON,机械手执行移动动作,同时C1计数1次。

③ 当机械手移动动作完成后,机械手完成传感器接通,I0.1由OFF→ON变化1次,复原指令被执行,Q0.0和C0均被复位,等待下次移动。

④ 当C1计数达4次时,C1的常开触点闭合,Q0.1=ON,打包机将纸箱折叠并封口,完成打包后,I0.2由OFF→ON变化1次,复原指令被执行,Q0.1和C1均被复位,同时Q0.2为ON,打号机将生产日期打印在包装箱表面。

⑤ 光电传感器检测到包装箱时,I0.3就触发1次(OFF→ON),C112计数1次。按下清零按钮I0.4可将产品产量记录清零,又可对产品数从0开始进行计数。