首页 > 基础教程 > 西门子S7-200 SMART完全教程 > 文章内容

西门子S7-200 SMART教程第六课:计数器指令深度解析

时间: 2025-12-21 02:43浏览量:97次
西门子S7-200 SMART教程第六课:计数器指令深度解析
第六课


掌握计数控制技术,实现精确计数与统计

一、计数器指令概述

计数器是PLC中用于实现计数控制的核心指令,能够对脉冲信号进行累加、递减计数。在工业自动化控制中,计数器广泛应用于产品计数、位置检测、速度测量、批量控制等场景。

学习目标
  • 掌握三种计数器(CTU、CTD、CTUD)的工作原理
  • 理解计数器的计数范围和数据类型
  • 熟练使用计数器实现各种计数控制功能
  • 掌握计数器与定时器的组合应用
  • 能够设计复杂的计数统计系统
  • 完成工业现场的计数控制项目
计数器C0内部结构
计数器编号
C0
当前值
0 ~ 32767
预设值(PV)
用户设定
状态位
0或1
计数脉冲
CU/CD输入
复位端
R输入
装载端
LD输入
计数方向
向上/向下

二、计数器基础知识

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 计数器的输入信号

计数器输入信号功能
CU
加计数脉冲
CD
减计数脉冲
R
复位信号
LD
装载信号

三、加计数器(CTU)

3.1 CTU计数器工作原理

CTU(Count Up)是向上加计数器。每次CU输入端从0变为1时,当前值加1。当当前值达到或超过预设值PV时,计数器位变为1。复位端R为1时,计数器复位。

CU脉冲
R复位
当前值CV
0 1 2 3 4 5
计数器位
说明
计数中 达到PV=5 复位
条件 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计数器编程实例

实例1:基本的产品计数控制
梯形图程序
Network 1 // 产品计数
I0.0 I0.1 C0
--| |----| |-----(CTU)--
CU R PV
-- -- 100
Network 2 // 达到100个报警
C0 Q0.0
--| |--------( )--
Network 3 // 手动复位
I0.1 C0
--| |--------(R)--
// I0.0:产品检测,I0.1:手动复位,C0:计数100个
语句表程序
LD I0.0 // 产品检测信号
LD I0.1 // 复位信号
CTU C0, 100 // 计数到100
LD C0 // 计数达到
= Q0.0 // 报警输出

工作过程分析:

产品数量 I0.0脉冲 C0当前值 C0位状态 Q0.0报警 说明
0-99个 每个产品一个脉冲 0→99 0 0 计数中,未到设定值
第100个 一个脉冲 100 1 1 达到设定值,报警
100个以上 继续计数 继续增加 1 1 保持报警状态
按下复位 - 0 0 0 计数器复位,报警解除
实例2:批量包装控制

控制要求:每检测到10个产品,启动包装机包装5秒,然后继续计数。

批量包装控制程序
Network 1 // 产品计数
I0.0 T37 C0
--| |----|/|-----(CTU)--
CU R PV
-- -- 10
Network 2 // 计数到10启动包装
C0 Q0.0
--| |---+----( )--
| | T37
+----+---(TON)--
IN PT
-- 50
Network 3 // 包装完成复位计数
T37 C0
--| |--------(R)--
// I0.0:产品检测,Q0.0:包装机,T37:5秒定时

工作过程:

  • 产品经过检测传感器I0.0,产生计数脉冲
  • 计数器C0对脉冲计数,每10个产品计数一次
  • 计数到10时,C0位=1,启动包装机Q0.0
  • 同时启动定时器T37,定时5秒
  • 5秒后T37动作,复位计数器C0
  • 计数器清零,准备下一批计数
  • 四、减计数器(CTD)

    4.1 CTD计数器工作原理

    CTD(Count Down)是向下减计数器。每次CD输入端从0变为1时,当前值减1。当当前值减到0时,计数器位变为1。装载端LD为1时,计数器装载预设值PV。

    CD脉冲
    LD装载
    当前值CV
    5 4 3 2 1 0
    计数器位
    说明
    装载PV=5 减到0
    条件 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计数器编程实例

    实例3:剩余工件数量显示

    控制要求:初始有50个工件,每加工完成一个减少1个,显示剩余数量,全部加工完成报警。

    梯形图程序
    Network 1 // 初始装载50个
    I0.0 C0
    --| |--------(CTD)--
    CD LD PV
    -- -- 50
    Network 2 // 工件加工完成
    I0.1 I0.0 C0
    --|P|----|/|-----(CTD)--
    CD LD PV
    -- -- 50
    Network 3 // 全部完成报警
    C0 Q0.0
    --| |--------( )--
    Network 4 // 剩余数量显示
    SM0.0 VW100
    --| |---+---(MOV_W)--
    | IN OUT
    | -- --
    +----(C0)--VW100
    // I0.0:初始化,I0.1:加工完成,C0:剩余数量

    工作过程分析:

    操作 当前值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 1 2 3 2 1
    计数器位
    说明
    初始0 加计数 减计数
    条件 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计数器编程实例

    实例4:仓库库存管理

    控制要求:统计仓库物料数量,入库时加计数,出库时减计数,库存低于10报警。

    库存管理程序
    Network 1 // 入库出库计数
    I0.0 I0.1 I0.2 C0
    --|P|----|P|----| |-----(CTUD)--
    CU CD R PV
    -- -- -- 10
    Network 2 // 库存显示
    SM0.0 VW100
    --| |---+---(MOV_W)--
    | IN OUT
    | -- --
    +----(C0)--VW100
    Network 3 // 低库存报警
    C0 Q0.0
    --| |--------( )--
    Network 4 // 手动清零
    I0.2 C0
    --| |--------(R)--
    // I0.0:入库,I0.1:出库,I0.2:清零,C0:库存数量

    工作过程分析:

    操作 入库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,报警
    实例5:双向位置控制

    控制要求:控制小车在轨道上运行,前进传感器计数加,后退传感器计数减,到达指定位置停止。

    位置控制程序
    Network 1 // 位置计数
    I0.0 I0.1 I0.2 C0
    --|P|----|P|----| |-----(CTUD)--
    CU CD R PV
    -- -- -- 100
    Network 2 // 前进控制
    I0.3 C0 I0.4 Q0.0
    --| |----|/|----|/|-----( )--
    Network 3 // 后退控制
    I0.4 C0 I0.3 Q0.1
    --| |----|/|----|/|-----( )--
    Network 4 // 位置显示
    SM0.0 VW100
    --| |---+---(MOV_W)--
    | IN OUT
    | -- --
    +----(C0)--VW100
    // I0.0:前进脉冲,I0.1:后退脉冲,I0.2:复位

    控制逻辑:

  • 前进时I0.3=1,Q0.0输出,小车前进
  • 前进传感器I0.0每检测到一个位置脉冲,C0加1
  • 当C0≥100时,C0位=1,停止前进
  • 后退时I0.4=1,Q0.1输出,小车后退
  • 后退传感器I0.1每检测到一个位置脉冲,C0减1
  • VW100实时显示当前位置
  • 六、计数器扩展与组合应用

    6.1 大范围计数扩展

    单个计数器最大计数值为32767,通过计数器级联可以实现更大范围的计数。

    实例6:百万级产品计数
    级联计数程序
    Network 1 // 个位计数
    I0.0 I0.1 C0
    --| |----| |-----(CTU)--
    CU R PV
    -- -- 1000
    Network 2 // 千位计数脉冲
    C0 M0.0
    --| |---+----( )--
    | | C0
    +----+---(R)--
    // 每1000个产品产生一个脉冲
    Network 3 // 千位计数
    M0.0 I0.1 C1
    --| |----| |-----(CTU)--
    CU R PV
    -- -- 1000
    Network 4 // 百万位计数脉冲
    C1 M0.1
    --| |---+----( )--
    | | C1
    +----+---(R)--
    Network 5 // 百万位计数
    M0.1 I0.1 C2
    --| |----| |-----(CTU)--
    CU R PV
    -- -- 1000
    Network 6 // 总产量计算
    SM0.0 VD100
    --| |---+---(MOV_DW)--
    | IN OUT
    | -- --
    +----(C0)--VD100
    ITD C1, VD104
    *D 1000, VD104
    ITD C2, VD108
    *D 1000000, VD108
    +D VD100, VD104, VD112
    +D VD108, VD112, VD116
    // 总产量 = C0 + C1×1000 + C2×1000000

    计数范围计算:

    个位计数器C0:0 ~ 999
    千位计数器C1:0 ~ 999 (代表0~999,000)
    百万位计数器C2:0 ~ 999 (代表0~999,000,000)
    总计数范围:0 ~ 999,999,999

    6.2 计数器与定时器组合

    实例7:设备运行频率测量

    控制要求:测量电机转速,计算每分钟转数。

    转速测量程序
    Network 1 // 1秒定时
    I0.0 T37
    --| |--------(TON)--
    IN PT
    -- 10
    Network 2 // 1秒脉冲计数
    I0.1 T37 C0
    --|P|----|/|-----(CTU)--
    CU R PV
    -- -- 65535
    // I0.1:编码器脉冲,每转1个脉冲
    Network 3 // 1秒到处理
    T37 VW100
    --| |---+---(MOV_W)--
    | IN OUT
    | -- --
    +----(C0)--VW100
    | C0
    +---(R)--
    Network 4 // 计算转速(rpm)
    SM0.0 VW102
    --| |---+---(MUL)--
    | IN1 IN2 OUT
    | -- -- --
    +---(VW100) 60 VW102
    // 转速 = 1秒脉冲数 × 60

    工作原理:

  • 启动测量I0.0=1,开始1秒定时
  • 在1秒内对编码器脉冲I0.1计数
  • 1秒到T37动作,将计数值传送到VW100
  • 复位计数器C0,准备下一次计数
  • 转速 = VW100 × 60 (转/分)
  • VW102显示实时转速
  • 七、综合应用案例

    7.1 案例一:自动包装生产线

    控制要求:
    1. 生产线有3个工位,每个工位有独立计数器
    2. 产品经过每个工位时计数,并记录该工位产量
    3. 每100个产品自动打包一次
    4. 每打包10箱(1000个)自动换箱
    5. 记录总产量、班产量、打包箱数
    6. 有产量清零、班次切换功能

    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 案例二:立体仓库管理系统

    控制要求:
    1. 仓库有5层货架,每层有20个货位
    2. 入库时选择空货位,出库时选择有货货位
    3. 记录每个货位的库存状态(0/1)
    4. 统计总入库数、总出库数、当前库存
    5. 库存低于安全库存时报警
    6. 每月自动生成库存报表

    程序设计思路:

  • 使用位存储器阵列记录100个货位状态(V0.0-V99.7)
  • 入库计数器CTU统计总入库数(C10)
  • 出库计数器CTU统计总出库数(C11)
  • 当前库存 = 总入库 - 总出库(VW100)
  • 使用比较指令判断安全库存(VW102)
  • 每月定时器触发报表生成(TONR)
  • 库存计算:

    当前库存 = 总入库数 - 总出库数
    VW100 = C10 - C11
    库存率 = (当前库存 ÷ 总容量) × 100%
    缺货报警:当前库存 < 安全库存

    八、常见问题与调试技巧

    8.1 常见编程问题

    问题现象 可能原因 解决方法
    计数器不计数 脉冲信号没有上升沿 检查脉冲信号,使用上升沿检测
    计数不准确 脉冲信号抖动 增加硬件滤波或软件防抖
    计数器不复位 复位条件不满足
    下载资料前请先绑定手机号码
    对不起,请登录后再发表评论!

    触屏端
    扫一扫手机也能发信息
    明扬工控商城-工控网-工控自动化真品,一站式专业服务!