跳到正文
Learn-SCL
SCL 示例库/SCL 指令手册/SCL 计数器指令

SCL 计数器指令

西门子 SCL 计数器:CTU、CTD、CTUD 的加/减计数、复位、装载和实例写法,含完整 FB 示例和云仿真场景。

SCL 的计数器是 IEC 计数器实例:CTU 加、CTD 减、CTUD 双向。

示例统一用 IEC_COUNTER 实例,调用写成 #MyCounter.CTU(...);实例名不要用 Counter(保留字)。

计数输入都是边沿触发:信号保持为 1 不会每个扫描都计数。

SCL 计数器指令 3

怎么选

需求 指令
来了几个 CTU
还剩几个 CTD
既加又减 CTUD

统一调用写法

SCL
1VAR
2   MyCounter : IEC_COUNTER;
3END_VAR
4 
5#MyCounter.CTU (CU := #Count, R := #Reset, PV := #Preset, Q => #Q, CV => #CV);
6#MyCounter.CTD (CD := #CountDown, LD := #Load, PV := #Preset, Q => #Q, CV => #CV);
7#MyCounter.CTUD(CU := #Up, CD := #Down, R := #Reset, LD := #Load, PV := #Preset, QU => #QU, QD => #QD, CV => #CV);

实例名用 MyCounter,不要用 Counter(TIA 保留字)。

常见问题

CTU、CTD、CTUD 怎么选?

正计数用 CTU,倒计数用 CTD,既要加又要减用 CTUD。

为什么计数输入要保持为 1 不重复计数?

计数器按上升沿计数;要保持为 1 只算一次,再次计数需要先回 0 再上升。

PV 和 CV 类型要一致吗?

要。实例类型(IEC_COUNTER)决定 CV 范围,PV 要用兼容的整数类型。

计数器实例为什么不能用 Counter 命名?

Counter 是 TIA/SCL 的保留字,外部源导入会报错;改名为 MyCounter。

← 返回 SCL 指令手册