TIA Portal 计数器简明教程

在西门子 S7-1200 和 S7-1500 PLC 中,计数器(Counter)扮演着至关重要的角色。它们能够在控制程序中实现事件、脉冲和操作的计数,广泛应用于产品计数、周期跟踪、批处理和位置监控

本文将介绍 TIA Portal 中使用的三种主要计数器类型CTU(加计数器)CTD(减计数器)CTUD(加减计数器)。所有示例均基于 S7-1200 和 S7-1500 PLC,两个系列的计数器逻辑完全相同。

1、计数器的基本结构和参数

TIA Portal 中的计数器以 IEC_COUNTER 结构的形式实现,存储在 数据块(DB) 中。每个计数器实例都会创建自己的 DB,使计数器能够独立运行。

CTU、CTD 和 CTUD 指令具有相似的参数。PVCV 的数据类型在插入指令时选择——最常用的是 Int,但根据预期的计数范围,也可以使用 DIntUIntUDIntSIntUSIntLIntULInt

  • CU – 加计数输入(Bool)。CU 处的上升沿(0→1)将当前值 CV 加 1。在 CTU 和 CTUD 中可用。
  • CD – 减计数输入(Bool)。CD 处的上升沿(0→1)将 CV 减 1。在 CTD 和 CTUD 中可用。
  • R – 复位输入(Bool)。信号为 1 时将 CV 重置为 0 并清除输出 Q。在 CTU 和 CTUD 中可用。R 具有最高优先级——当 R = 1 时,计数被阻止。
  • LD – 加载输入(Bool)。信号为 1 时将预设值 PV 加载到 CV 中。在 CTD 和 CTUD 中可用。用于在倒计数前将计数器预加载到起始值。
  • PV – 预设值。定义计数器将 CV 与之比较的目标值。对于 CTU,当 CV ≥ PV 时 Q 切换为 1。对于 CTD,PV 是通过 LD 加载的起始值。
  • Q – 逻辑输出(Bool),在 CTU 和 CTD 中使用。指示是否已达到计数目标。可用于后续逻辑或可视化。
  • QU – 加计数状态(Bool),仅在 CTUD 中可用。当 CV ≥ PV 时 QU = 1。
  • QD – 减计数状态(Bool),仅在 CTUD 中可用。当 CV ≤ 0 时 QD = 1。
  • CV – 当前值。显示实际计数。可在程序逻辑中读取、存档或在 HMI 上显示。
⚠️ 每个 IEC_COUNTER 结构应仅分配给一个计数器指令,以避免 CU、CD、R 和 LD 信号之间的意外交互。

LAD 中编程时,计数器指令应放置在网络末尾,建议使用标签输出(Q、QU、QD、CV)而不是直接访问 DB 变量。请记住 CU 和 CD 仅对上升沿作出反应——如果需要计数连续电平,请将计数器与边沿检测器结合使用(参见我们关于 R_TRIG 和 F_TRIG 边沿检测 的指南)。

2、加计数

2.1 工作原理

CTU 是 PLC 编程中最常用的计数器。每次输入信号 CU上升沿(从 0 到 1 的跳变)时,当前值 CV 加 1。

CV 随着每个上升沿不断增加,直到达到其数据类型的上限(对于 Int,为 32,767)。一旦 CV ≥ PV,输出 Q 切换为 1。只要 CV 大于或等于 PV,Q 就保持为 1,无论 CU 是否持续脉冲。

如果 R 设为 1,CV 立即重置为 0,Q 变为低电平。当 R = 1 时,计数器忽略 CU 上的上升沿——复位具有绝对优先级。

2.2 典型应用

当你需要跟踪事件或完成操作的数量时,加计数很有用,例如:

  • 计算传送带上的产品
  • 计算已完成的机器周期
  • 跟踪操作直到计划维护(例如每 10,000 个周期)
  • 计算一个班次中的不合格零件或报警次数
  • 在定义数量的事件后触发动作(打包、包装)

3、减计数

3.1 工作原理

CTD 计数器的工作方式与 CTU 相反。在计数开始之前,使用输入 LD 将预设值 PV 加载到 CV 中——LD 处的信号为 1 时在单次扫描中将 PV 复制到 CV。

加载后,每次输入 CD上升沿将 CV 减 1。当 CV 达到 0 或更低时,输出 Q 切换为 1。只要 CV ≤ 0,Q 就保持为 1。

与 CTU 不同,CTD 计数器没有复位输入。要重新开始倒计数,只需再次脉冲 LD = 1——这会将 PV 重新加载到 CV 中并清除 Q。

3.2 典型应用

当过程必须运行定义的步数然后发出完成信号时,使用 CTD 计数器,例如:

  • 倒计数生产批次中剩余的零件
  • 递减票证或令牌池
  • 倒计数到报警或维护通知
  • 每一步都递减剩余计数的机器序列
  • 分配预设数量的物品并自动停止

4、加减计数

4.1 工作原理

CTUD 计数器在单个指令中结合了 CTU 和 CTD 的行为。在 CU 的上升沿时 CV 加 1,在 CD 的上升沿时 CV 减 1,当 R = 1 时重置为 0,当 LD = 1 时加载 PV。

CTUD 暴露两个独立的状态输出:

  • QU = 1 当 CV ≥ PV(达到上限)
  • QD = 1 当 CV ≤ 0(达到下限)

输入之间的优先级是固定的:R 具有最高优先级,其次是 LD,然后是计数输入。如果 CU 和 CD 在同一扫描中都收到上升沿,CV 保持不变。

4.2 典型应用

CTUD 计数器非常适合需要双向计数的场景——跟踪既可以增长也可以减少的数量,例如:

  • 库存或缓冲区跟踪(零件进、零件出)
  • 线性和旋转轴上的位置计数
  • 停车场或仓库占用率监控
  • 计算生产线中两个工作站之间的物品
  • 出入口处的人数计数

5、常见问题和最佳实践

在 TIA Portal 中实现计数器时,一些常见问题经常出现:

  • 丢失边沿 — CU 和 CD 仅计数上升沿。如果驱动信号有噪声或抖动,请在计数器输入前使用去抖滤波器或边沿检测器(R_TRIG)。
  • Int 计数器溢出 — 默认 Int 范围是 −32,768…32,767。对于高速或长时间运行的计数器,请将 PV/CV 切换为 DIntUDInt
  • 计数器未复位 — 检查 R 是否确实转换为 1。复位具有优先级,但如果 R 由于逻辑错误保持为 0,计数器将继续计数。
  • 实例之间共享 DB — 永远不要将两个计数器调用指向同一个实例 DB。每个计数器需要自己的 IEC_COUNTER 实例。
  • 重启后的保持性 — 默认情况下,CV 在电源循环后不会保留。如果需要计数在重启后存活(例如总运行周期),请在 DB 属性中将 DB 变量标记为保持性。

6、结束语

西门子 PLC 中的计数器是基于事件的逻辑的基本工具。理解 CTU、CTD 和 CTUD 的行为,可以让你在 TIA Portal 中构建可靠的产品计数、批处理、位置跟踪和库存监控。与定时器和边沿检测器结合使用,计数器构成了几乎所有工业序列的核心。


原文链接:Counters in TIA Portal – How to Use CTU, CTD and CTUD in Siemens PLCs

汇智网翻译整理,转载请标明出处