计数器操作
CTU、CTD、CTUD 和 Legacy S5
事件计数是工业控制的核心。掌握 TIA Portal 中的标准 IEC 计数器和遗留指令,用于您的生产应用。
什么是 TIA Portal 中的计数器操作?
TIA Portal 中的计数器操作允许计数程序内部事件或外部信号(上升沿)。这些是符合 IEC 61131-3 标准的功能块,用于管理递增、递减、复位以及与预设值 (PV) 的比较。
TIA Portal 提供 3 种类型的 IEC 计数器(CTU、CTD、CTUD)以及 S5 兼容指令(Legacy)和计数器线圈。每个计数器实例都需要自己的实例数据块 (IDB),或者可以作为多重实例集成在 FB 中。
IEC 计数器
3 种标准计数功能块 — 灵活且强大
CTU — 增计数器 (Count Up)
功能
在计数输入 CU 上对上升沿进行计数。每次 CU 从 FALSE 变为 TRUE 时,当前计数值 CV 增加 1。当 CV 大于或等于预设值 PV 时,输出 Q 变为 TRUE。输入 R (Reset) 将 CV 重置为 0,将 Q 重置为 FALSE。
适用场景
用于计数传送带上的零件、机器循环次数或报警发生频率。适用于任何需要达到数值目标以触发操作的过程。
专家提示
计数停止在所用数据类型(Int、DInt 等)的最大值。如果没有复位,CV 不会自动回零。
输入 R 具有优先级:只要 R 为 TRUE,计数器就保持在 0 并忽略 CU 上的边沿。
在 SCL 中:myCTU(CU := trigger, R := reset, PV := 10); IF myCTU.Q THEN ... END_IF;
CTD — 减计数器 (Count Down)
功能
从初始值开始倒计数。每次输入 CD 出现上升沿时,当前值 CV 减少 1。当 CV 小于或等于 0 时,输出 Q 变为 TRUE。输入 LD (Load) 将预设值 PV 加载到 CV 中。
适用场景
用于管理库存(减去零件)、过程倒计时或监控水箱或仓库的剩余容量。
专家提示
输入 LD 用于“重新加载”计数器。只要 LD 为 TRUE,CV 就等于 PV。
与 CTU 不同,当 CV 达到 0(或更小)时,满足输出 Q 条件。
计数器停止在数据类型的最小值(例如:Int 为 -32768)。
CTUD — 双向计数器 (Up/Down)
功能
在单个块中结合了 CTU 和 CTD 的功能。它有两个计数输入(CU 用于递增,CD 用于递减)和两个输出(QU 用于“达到高限计数”,QD 用于“达到零”)。它同时具有复位 (R) 和加载 (LD) 输入。
适用场景
非常适合简单的位置跟踪(前进/后退)、停车场管理(车辆进入/离开)或动态库存跟踪。
专家提示
如果 CV >= PV,则 QU 变为 TRUE。如果 CV <= 0,则 QD 变为 TRUE。
R (Reset) 将 CV 重置为 0。LD (Load) 将 CV 初始化为 PV。R 的优先级高于 LD。
对于自动化仓库非常有用:包裹进入时递增,离开时递减。
Legacy 指令及线圈
适用于 LAD/FBD 的 S5 计数器和线圈型指令
S_CU / S_CD / S_CUD
功能
在 S7-300/400 上使用的旧计数指令 (Legacy S5)。它们使用全局计数器编号 (C0...C255) 而不是实例 DB。它们允许在单个复杂指令中进行参数化、计数和复位。
适用场景
仅用于维护现有程序或将 S5/S7-300 项目迁移到 S7-1500。避免在开发新项目时使用。
专家提示
这些计数器不像 IEC 计数器那样具有“类型”。它们的范围有限 (0-999)。
它们对上升沿的响应行为可能与 IEC 标准不同。
在重构时系统地将它们替换为 IEC CTU/CTD,以获得更好的可移植性。
—(SC)— 预设计数器值
—(SC)—功能
线圈型指令,当 RLO 变为 TRUE 时,将预设值加载到指定的计数器中。它是加载输入 (LD) 的图形等效形式。
适用场景
在 LAD/FBD 中,用于从单独的网络强制将值加载到计数器中。
专家提示
主要用于遗留计数器。
加载的值通常由常量或整数变量定义。
对于 IEC 计数器,请改用块的 LD 输入或直接访问实例。
—(CU) / —(CD)— 计数线圈
—(CU)—功能
线圈型指令,在 RLO 的每个上升沿递增 (CU) 或递减 (CD) 计数器。允许在不使用网络中完整功能块的情况下驱动计数器。
适用场景
用于非常紧凑的 LAD 编程,只需在行尾触发计数。
专家提示
这些线圈引用特定的计数器(例如 C1 或 IEC 计数器 DB)。
注意可读性:使用线圈比使用块更难查看到当前值 (CV)。
优先使用 FB 块,以便获得更好的代码自动文档化。
关于 S5 兼容性的说明
全局计数器
S5 计数器 (S_CU, S_CD, S_CUD) 限制为 256 个全局实例,范围为 0 到 999。优选 IEC 计数器 (CTU, CTD, CTUD),因为它们使用实例 DB,支持更宽的数据类型 (LInt),并且没有固定的数量限制。
计数器比较 — 使用哪一个?
为您的工业应用选择合适的计数器
| 您需要... | 使用此计数器 | 示例 |
|---|---|---|
| 增量计数事件 | CTU | 成品包装数量 |
| 倒计数至零 | CTD | 货架剩余空间 |
| 跟踪双向流动 | CTUD | 停车场内的车辆 |
| 加载目标值 | PV / LD | 通过 HMI 设置 50 件的批次 |
| 自动复位 | 复位 (R) | 批次结束,准备下一批 |
| 管理数百万个单位 | IEC (DInt/LInt) | 年度生产总计数器 |
常见问题
IEC 计数器和 S5 计数器有什么区别?
IEC 计数器使用实例数据块 (DB),允许创建无限多个。它们支持 16、32 或 64 位整数。S5 计数器限制为 256 个全局编号 (C0-C255),且最高只能计数到 999。
如何让计数器自动从零开始?
您可以将计数器的 Q 输出连接到其自身的 R (Reset) 输入。这样,一旦达到目标,计数器就会立即清除。
我可以使用计数器来测量速度吗?
计数器本身不能测量速度。您必须在固定时间内(由定时器管理的时间窗口)计数脉冲,然后进行计算:速度 = 脉冲 / 时间。
PLC 停止时计数器会丢失数值吗?
与定时器一样,当前值 (CV) 存储在实例 DB 中。如果 DB 配置为“保持性”(Retentive),计数器将在重启后保留其数值。