向上计数/向下计数 (CTUD)
CTUD 指令会在 CUEnable 由清零跳变为置位时向上计 1 个数,在 CDEnable 由清零跳变为置位时向下计 1 个数。
架构和安全支持的详细信息
下表列出了支持此指令的控制器和应用程序。
架构 | 标准应用程序 | 安全应用程序 |
|---|---|---|
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370、GuardLogix 5570 | 是 | 否 |
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 | 是 | 是 |
可用语言
梯形图
此指令不可用于梯形图中。
功能块

结构化文本
CTUD(CTUD_tag)
操作数
结构化文本
变量 | 类型 | 格式 | 说明 |
|---|---|---|---|
CTUD 标签 | FBD_COUNTER | 结构 | CTUD 结构 |
有关结构化文本中表达式语法的详细信息,请参阅结构化文本语法。
功能块
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
CTUD tag | FBD_COUNTER | 结构 | CTUD 结构 |
FBD_COUNTER 结构
输入参数 | 数据类型 | 说明 |
|---|---|---|
EnableIn | BOOL | 如果此参数清零,指令不会执行,也不会更新输出。如果置位,则执行指令。 默认置位。 |
CUEnable | BOOL | 启用向上计数。当输入由清零切换为置位时,累加器加 1。 默认清零 |
CDEnable | BOOL | 启用向下计数。当输入由清零切换为置位时,累加器减 1。 默认清零 |
PRE | DINT | 计数器预设值。该值为累加值必须达到的值,当达到该值时,DN 置位。 有效值 = 任意整型值 默认值为 0 |
Reset | BOOL | 计时器复位请求。置位时,计数器复位。 默认清零 |
输出参数 | 数据类型 | 说明 |
|---|---|---|
EnableOut | BOOL | 指令生成的有效结果。 |
ACC | DINT | 累加值。 |
CU | BOOL | 已启用向上计数。 |
CD | BOOL | 已启用向下计数。 |
DN | BOOL | 计数完成。当累加值大于或等于预设值时置位。 |
OV | BOOL | 计数器上溢。指示计数器超出上限值 2,147,483,647。计数器随后将翻转回 -2,147,483,648,并重新开始向下计数。 |
UN | BOOL | 计数器下溢。指示计数器超出下限值 -2,147,483,648。计数器随后翻转为 2,147,483,647,并重新开始向下计数。 |
说明
当条件为真且 CUEnable 为真时,CTUD 指令将计数器按 1 递增。当条件为真且 CDEnable 为真时,CTUD 指令将计数器按 1 递减。
在同一个扫描期间,CUEnable 和 CDEnable 输入参数均可切换。此时,指令先执行向上计数,后执行向下计数。
向上计数

向下计数

禁用后,CTUD 指令保留其累加值。“复位” 输入参数置位时,该指令将复位。
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 。
执行
功能块
条件/状态 | 执行的操作 |
|---|---|
预扫描 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为假 | EnableIn 和 EnableOut 位设置为假。初始化数据,以等待 CuEnable 或 CdEnable 的“0 到 1”跳变,来影响 ACC 值。 |
Tag.EnableIn 为真 | EnableIn 和 EnableOut 位设置为真。 指令执行。 |
指令首次运行 | 初始化数据,以等待 CuEnable 或 CdEnable 的“0 到 1”跳变,来影响 ACC 值。 |
指令首次扫描 | 初始化数据,以等待 CuEnable 或 CdEnable 的“0 到 1”跳变,来影响 ACC 值。 |
指令首次为真 | 不执行任何特定状态下的操作。 |
重置 | 该指令会将 CUEnablen-1、CDEnablen-1、CU、CD、DN、OV 和 UN 清零,并设置 ACC = 0。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“功能块”表中的“预扫描”行。 |
正常执行 | 请参见“功能块”表中的“Tag.EnableIn 为真”行。 |
后扫描 | 请参见“功能块”表中的“后扫描”行。 |
示例
功能块

结构化文本
CTUD_01.PRE := 500;
CTUD_01.Reset := Reset;
CTUD_01.CUEnable := Input;
CTUD(CTUD_01);
counter_state := CTUD_01.DN;
提供反馈