一、计数器指令概述
计数器是PLC中用于实现计数控制的核心指令,能够对脉冲信号进行累加、递减计数。在工业自动化控制中,计数器广泛应用于产品计数、位置检测、速度测量、批量控制等场景。
- 掌握三种计数器(CTU、CTD、CTUD)的工作原理
- 理解计数器的计数范围和数据类型
- 熟练使用计数器实现各种计数控制功能
- 掌握计数器与定时器的组合应用
- 能够设计复杂的计数统计系统
- 完成工业现场的计数控制项目
二、计数器基础知识
2.1 计数器的工作原理
PLC中的计数器是一个16位有符号整数寄存器,用于累加或递减输入脉冲。当计数值达到预设值(PV)时,计数器位动作。
| 计数器参数 | 数值范围 | 数据类型 | 存储大小 | 说明 |
|---|---|---|---|---|
| 计数器编号 | C0 - C255 | 计数器地址 | 3个字 | 共256个计数器 |
| 当前值 | -32768 ~ +32767 | 有符号整数 | 1个字 | 实际计数值 |
| 预设值(PV) | 1 ~ 32767 | 有符号整数 | 1个字 | 目标计数值 |
| 状态位 | 0或1 | 布尔型 | 1位 | 达到预设值时置1 |
- 计数器当前值和预设值都是16位有符号整数
- 计数器位是布尔量,当当前值≥预设值时置1
- 计数器在达到预设值后继续计数,不会停止
- 每个计数器占用3个字的存储空间
- 计数器编号C0-C255,不能重复使用
2.2 计数器的三种类型
S7-200 SMART提供三种计数器,满足不同的计数需求:
| 计数器类型 | 指令 | 计数方向 | 复位方式 | 典型应用 |
|---|---|---|---|---|
| 加计数器 | CTU | 向上计数 | 复位端R | 产品计数、产量统计 |
| 减计数器 | CTD | 向下计数 | 装载端LD | 剩余数量显示、倒计时 |
| 加减计数器 | CTUD | 双向计数 | 复位端R | 位置控制、流量累计 |
2.3 计数器的输入信号
三、加计数器(CTU)
3.1 CTU计数器工作原理
CTU(Count Up)是向上加计数器。每次CU输入端从0变为1时,当前值加1。当当前值达到或超过预设值PV时,计数器位变为1。复位端R为1时,计数器复位。
| 条件 | CU脉冲 | R复位 | 当前值CV | 计数器位 | 说明 |
|---|---|---|---|---|---|
| 初始状态 | 任意 | 0 | 0 | 0 | 计数器未启动 |
| CU上升沿 | 0→1 | 0 | CV+1 | CV<PV时为0 | 计数值加1 |
| CV≥PV | 任意 | 0 | 继续增加 | 1 | 达到预设值,位置1 |
| R=1复位 | 任意 | 1 | 0 | 0 | 计数器复位 |
3.2 CTU计数器编程实例
工作过程分析:
| 产品数量 | I0.0脉冲 | C0当前值 | C0位状态 | Q0.0报警 | 说明 |
|---|---|---|---|---|---|
| 0-99个 | 每个产品一个脉冲 | 0→99 | 0 | 0 | 计数中,未到设定值 |
| 第100个 | 一个脉冲 | 100 | 1 | 1 | 达到设定值,报警 |
| 100个以上 | 继续计数 | 继续增加 | 1 | 1 | 保持报警状态 |
| 按下复位 | - | 0 | 0 | 0 | 计数器复位,报警解除 |
控制要求:每检测到10个产品,启动包装机包装5秒,然后继续计数。
工作过程:
四、减计数器(CTD)
4.1 CTD计数器工作原理
CTD(Count Down)是向下减计数器。每次CD输入端从0变为1时,当前值减1。当当前值减到0时,计数器位变为1。装载端LD为1时,计数器装载预设值PV。
| 条件 | CD脉冲 | LD装载 | 当前值CV | 计数器位 | 说明 |
|---|---|---|---|---|---|
| LD=1装载 | 任意 | 1 | PV | 0 | 装载预设值,位置0 |
| CD上升沿 | 0→1 | 0 | CV-1 | CV>0时为0 | 计数值减1 |
| CV=0 | 任意 | 0 | 0 | 1 | 减到0,位置1 |
| 继续CD脉冲 | 0→1 | 0 | 保持0 | 1 | 保持0,位置1 |
4.2 CTD计数器编程实例
控制要求:初始有50个工件,每加工完成一个减少1个,显示剩余数量,全部加工完成报警。
工作过程分析:
| 操作 | 当前值CV | 计数器位 | VW100显示 | Q0.0报警 | 说明 |
|---|---|---|---|---|---|
| 初始化I0.0=1 | 50 | 0 | 50 | 0 | 装载初始值50 |
| 加工第1个 | 49 | 0 | 49 | 0 | 剩余49个 |
| 加工第49个 | 1 | 0 | 1 | 0 | 剩余1个 |
| 加工第50个 | 0 | 1 | 0 | 1 | 全部完成,报警 |
五、加减计数器(CTUD)
5.1 CTUD计数器工作原理
CTUD(Count Up/Down)是双向加减计数器。具有加计数CU和减计数CD两个输入端,可以同时进行加减计数。复位端R为1时,计数器复位。
| 条件 | CU脉冲 | CD脉冲 | 当前值CV | 计数器位 | 说明 |
|---|---|---|---|---|---|
| 初始状态 | 任意 | 任意 | 0 | 0 | 计数器未启动 |
| CU上升沿 | 0→1 | 任意 | CV+1 | CV≥PV时为1 | 加计数 |
| CD上升沿 | 任意 | 0→1 | CV-1 | CV≥PV时为1 | 减计数 |
| CV≥PV | 任意 | 任意 | 继续变化 | 1 | 达到预设值 |
| R=1复位 | 任意 | 任意 | 0 | 0 | 计数器复位 |
5.2 CTUD计数器编程实例
控制要求:统计仓库物料数量,入库时加计数,出库时减计数,库存低于10报警。
工作过程分析:
| 操作 | 入库I0.0 | 出库I0.1 | C0当前值 | C0位状态 | Q0.0报警 | 说明 |
|---|---|---|---|---|---|---|
| 初始 | 0 | 0 | 0 | 0 | 1 | 库存0,报警 |
| 入库5次 | 5个脉冲 | 0 | 5 | 0 | 1 | 库存5,仍报警 |
| 再入库5次 | 5个脉冲 | 0 | 10 | 1 | 0 | 库存10,报警解除 |
| 出库3次 | 0 | 3个脉冲 | 7 | 0 | 1 | 库存7,报警 |
控制要求:控制小车在轨道上运行,前进传感器计数加,后退传感器计数减,到达指定位置停止。
控制逻辑:
六、计数器扩展与组合应用
6.1 大范围计数扩展
单个计数器最大计数值为32767,通过计数器级联可以实现更大范围的计数。
计数范围计算:
千位计数器C1:0 ~ 999 (代表0~999,000)
百万位计数器C2:0 ~ 999 (代表0~999,000,000)
总计数范围:0 ~ 999,999,999
6.2 计数器与定时器组合
控制要求:测量电机转速,计算每分钟转数。
工作原理:
七、综合应用案例
7.1 案例一:自动包装生产线
- 生产线有3个工位,每个工位有独立计数器
- 产品经过每个工位时计数,并记录该工位产量
- 每100个产品自动打包一次
- 每打包10箱(1000个)自动换箱
- 记录总产量、班产量、打包箱数
- 有产量清零、班次切换功能
I/O分配:
- 工位1检测:I0.0,工位2检测:I0.1,工位3检测:I0.2
- 打包启动:Q0.0,换箱启动:Q0.1
- 班次切换:I0.3,产量清零:I0.4
- 运行指示:Q0.2,故障报警:Q0.3
计数器规划:
| 计数器 | 功能 | 预设值 | 存储地址 |
|---|---|---|---|
| C0 | 工位1产量 | 无限制 | VW10 |
| C1 | 工位2产量 | 无限制 | VW12 |
| C2 | 工位3产量 | 无限制 | VW14 |
| C3 | 打包计数(每100个) | 100 | VW16 |
| C4 | 箱数计数(每10箱) | 10 | VW18 |
| C5 | 总产量累计 | 无限制 | VW20 |
7.2 案例二:立体仓库管理系统
- 仓库有5层货架,每层有20个货位
- 入库时选择空货位,出库时选择有货货位
- 记录每个货位的库存状态(0/1)
- 统计总入库数、总出库数、当前库存
- 库存低于安全库存时报警
- 每月自动生成库存报表
程序设计思路:
库存计算:
VW100 = C10 - C11
库存率 = (当前库存 ÷ 总容量) × 100%
缺货报警:当前库存 < 安全库存
八、常见问题与调试技巧
8.1 常见编程问题
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 计数器不计数 | 脉冲信号没有上升沿 | 检查脉冲信号,使用上升沿检测 |
| 计数不准确 | 脉冲信号抖动 | 增加硬件滤波或软件防抖 |
| 计数器不复位 | 复位条件不满足 |


















































