累加器 (TOT)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。累加器 (TOT) 指令可对一段时间内的模拟输入值进行累加。
可用语言
梯形图
此指令不可用于梯形图逻辑中。
功能块

结构化文本
TOT(TOT_tag)
操作数
功能块
操作数 | 类型 | 格式 | 说明 |
TOT 标签 | TOTALIZER | 结构 | TOT 结构 |
结构化文本
操作数 | 类型 | 格式 | 说明 |
TOT 标签 | TOTALIZER | 结构 | TOT 结构 |
有关结构化文本中表达式语法的详细信息,请参见
结构化文本语法
部分。TOTALIZER 结构
输入参数 | 数据类型 | 说明 |
|---|---|---|
EnableIn | BOOL | 启用输入。如果为假,指令不会执行,也不会更新输出。 默认值为真。 |
In | REAL | 指令的模拟信号输入。 有效值 = 任意浮点值 默认值 = 0.0 |
InFault | BOOL | In 不良状况指示器。如果为真,说明输入信号存在错误,此指令会将 Status 中的相应位置位,控制算法不会执行且不会更新 Total。 默认值为假。 |
TimeBase | DINT | 时基输入。基于 In 工程单位的累加时基。 0 = 秒 1 = 分钟 2 = 小时 3 = 天 例如,如果 In 的单位为 gal/min,则使用 TimeBase = 分钟。如果该值无效,该指令会将 Status 中的相应位置位,并且不会更新 Total。 有关时序模式的更多信息,请参见“功能块属性”部分。 有效值 = 0 至 3 默认值 = 0 |
Gain | REAL | 增量累加值的乘数。用户可以使用 Gain 来转换累加单位。例如,可以使用 Gain 将 gal/min 转换为以桶为单位的总计值。 有效值 = 任意浮点值 默认值 = 1.0 |
ResetValue | REAL | 复位值输入。OperResetReq 或 ProgResetReq 由假跳变为真时的 Total 重置值。 有效值 = 任意浮点值 默认值 = 0.0 |
Target | REAL | 累加的 In 的目标值。 有效值 = 任意浮点值 默认值 = 0.0 |
TargetDev1 | REAL | Total 预设目标值与 Target 值之间较大的偏差值。此值表示为与 Target 的偏差。 有效值 = 任意浮点值 默认值 = 0.0 |
TargetDev2 | REAL | Total 预设目标值与 Target 值之间较小的偏差值。此值表示为与 Target 的偏差。 有效值 = 任意浮点值 默认值 = 0.0 |
LowInCutoff | REAL | 指令输入下限输入。当 In 等于或小于 LowInCutoff 值时,累加停止。 有效值 = 任意浮点值 默认值 = 0.0 |
ProgProgReq | BOOL | 程序发出的程序控制请求。设置为真时可请求程序控制。如果 ProgOperReq 为真,则忽略该值。若此参数保持为真,并且 ProgOperReq 保持为假,会将指令锁定在程序控制模式。 默认值为假。 |
ProgOperReq | BOOL | 程序发出的操作员控制请求。设置为真时可请求操作员控制。若将此参数保持为真,会将该指令锁定在操作员控制模式。 默认值为假。 |
ProgStartReq | BOOL | 程序启动请求输入。设置为真时可请求累加启动。 默认值为假。 |
ProgStopReq | BOOL | 程序停止请求输入。设置为真时可请求累加停止。 默认值为假。 |
ProgResetReq | BOOL | 程序复位请求输入。设置为真时可请求 Total 复位为 ResetValue。 默认值为假。 |
OperProgReq | BOOL | 操作员发出的程序控制请求。由操作员界面设置为真以请求程序控制模式。指令将该输入设置为假。 默认值为假。 |
OperOperReq | BOOL | 操作员发出的操作员控制请求。由操作员界面设置为真可请求操作员控制模式。指令将该输入设置为假。 默认值为假。 |
OperStartReq | BOOL | 操作员启动请求输入。由操作员界面设置为真可请求累加启动。指令将该输入设置为假。 默认值为假。 |
OperStopReq | BOOL | 操作员停止请求输入。由操作员界面设置为真可请求累加停止。指令将该输入设置为假。 默认值为假。 |
OperResetReq | BOOL | 操作员复位请求输入。由操作员界面设置为真可请求累加复位。指令将该输入设置为假。默认值为假。 |
ProgValueReset | BOOL | 将程序控制值复位。该值为真时,每次执行指令时,所有程序请求输入都将设置为假。 默认值为假。 |
TimingMode | DINT | 选择时序执行模式。 0 = 周期模式 1 = 过采样模式 2 = 实时采样模式 有关时序模式的更多信息,请参见“功能块属性”部分。 有效值 = 0 至 2 默认值 = 0 |
OversampleDT | REAL | 过采样模式的执行时间。 有效值 = 0 到 4194.303 秒 默认值 = 0 |
RTSTime | DINT | 实时采样模式的模块更新周期 有效值 = 1 至 32,767 ms 默认值 = 1 |
RTSTimeStamp | DINT | 实时采样模式的模块时戳值。 有效值 = 0 至 32,767 ms 默认值 = 0 |
输出参数 | 数据类型 | 说明 |
|---|---|---|
EnableOut | BOOL | 指示指令是否处于启用状态。如果 Total 值溢出,则设置为假。 |
Total | REAL | 累加值(如果出现 In 值)。 |
OldTotal | REAL | 复位前的总计值。可通过监视该值来读取最近一次复位前的确切总计值。 |
ProgOper | BOOL | 程序/操作员控制指示器。在程序控制模式下为真。在操作员控制模式下为假。 |
RunStop | BOOL | 累加器运行状态指示器。TOT 指令运行时为真。TOT 指令停止时为假。 |
ProgResetDone | BOOL | 该指示器用于指示 TOT 指令已完成程序复位请求。指令因 ProgResetReq 而复位时,设置为真。可通过监视此参数来确定是否已成功完成复位。ProgResetReq 为假时设置为假。 |
TargetFlag | BOOL | Total 值的标志。当 Total Target 时,设置为 true。 |
TargetDev1Flag | BOOL | TargetDev1 值的标志。当 Total Target - TargetDev1 时,设置为 true。 |
TargetDev2Flag | BOOL | TargetDev2 值的标志。当 Total Target - TargetDev2 时,设置为 true。 |
LowInCutoffFlag | BOOL | 指令输入下限标志输出。在以下情况下设置为真 In £ LowInCutoff。 |
DeltaT | REAL | 两次更新间隔的时间。控制算法计算过程输出所用的时间(秒)。 |
Status | DINT | 功能块的状态。 |
InstructFault (Status.0) | BOOL | 该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。 |
InFaulted (Status.1) | BOOL | In 值有误。 |
TimeBaseInv (Status.2) | BOOL | TimeBase 值无效。 |
TimingModeInv (Status.27) | BOOL | TimingMode 值无效。 |
RTSMissed (Status.28) | BOOL | 仅用于实时采样模式。在以下情况下设置为真 ABS(DeltaT – RTSTime) > 1 毫秒。 |
RTSTimeInv (Status.29) | BOOL | RTSTime 值无效。 |
RTSTimeStampInv (Status.30) | BOOL | RTSTimeStamp 值无效。 |
DeltaTInv (Status.31) | BOOL | DeltaT 值无效。如果在过采样时序模式下 OversampleDT 值无效,则可能发生此情况。 |
说明
该指令通常根据流量信号对一定时间内添加的物料量进行累加。
TOT 指令支持以下功能:
- 将时基选择为秒、分、小时或天。
- 可指定一个目标值和最多两个预设目标值。预设目标值通常用于切换为更慢的给料速度。相应的数字标志会指示是否达到目标值或预设目标值。
- 可使用低流量输入下限值,来避免在进料流停止时因微小的流量计校准错误而发生负向累加。
- 可由操作员或程序控制启动/停止/复位功能。
- 可由用户自定义复位值。
- 支持梯形规则的数字积分,可提高准确度。
- 内部累加采用双精度运算方式,可提高准确度。
监视 TOT 指令
TOT 指令有相应的操作员面板。
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 通用属性。
执行
功能块
条件/状态 | 执行的操作 |
|---|---|
预扫描 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为假 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为真 | EnableIn 和 EnableOut 位设置为真。 指令执行。 |
指令首次运行 | Total 设置为 ResetValue。 OldTotal 清零为 0.0。 ProgOper 设置为假。 |
指令首次扫描 | 所有操作员请求输入设置为假。如果 ProgValueReset 为真,则所有程序请求输入设置为假。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“功能块”表中的“预扫描”行。 |
正常执行 | 请参见“功能块”表中的“Tag.EnableIn 为真”行。 |
后扫描 | 请参见“功能块”表中的“后扫描”行。 |
检查低流量输入下限
如果 (In <= LowInCutoff),则指令将 LowInCutoffFlag 设置为真,并使 In(n-1) = 0.0。
否则,指令将 LowInCutoffFlag 设置为假。
LowInCutoffFlag 为真时,会确定工作模式,但停止累加。
LowInCutoffFlag 为假时,该次扫描将继续累加。
工作模式
下图显示了 TOT 指令在程序控制与操作员控制模式之间进行切换的方式。

(1) 当 ProgOperReq 为真时,指令保持在操作员控制模式。
下图显示了 TOT 指令在运行模式和停止模式之间进行切换的方式。

(1) 停止请求优先于启动请求。
(2) 停止后再次运行时的首次扫描期间,不计算累加值,但更新 In
n-1
。下次扫描时,继续进行累加。
每次扫描结束时,所有操作员请求输入都将设置为假。如果 ProgValueReset 为真,每次扫描结束时,所有程序请求输入都将设置为假。
复位 TOT 指令
如果 ProgOper 为真,当 ProgResetReq 跳变为真值时,将发生以下情况:
- OldTotal = Total
- Total = ResetValue
- ProgResetDone 设置为真
如果 ProgResetReq 为假且 ProgResetDone 为真,则 ProgResetDone 设置为假
如果 ProgOper 为假,当 OperResetReq 跳变为真值,将发生以下情况:
- OldTotal = Total
- Total = ResetValue
计算累加值
当 RunStop 为真且 LowInCutoffFlag 为假时,将根据以下公式进行累加计算。

其中 TimeBase 为:
值 | 条件 |
|---|---|
1 | TimeBase = 0(秒) |
60 | TimeBase = 1(分钟) |
3600 | TimeBase = 2(小时) |
86400 | TimeBase = 3(天) |
确定是否达到目标值
计算出累加值后,将根据以下规则确定是否达到目标值或预设目标值:
- 当 Total
Target 时,TargetFlag 为 true - 当 Total
(Target - TargetDev1) 时,TargetDev1Flag 为 true - 当 Total
(Target - TargetDev2) 时,TargetDev2Flag 为 true
示例
在本示例中,使用 TOT 指令计量加入水箱中的水量,当添加量达到特定值后,水流关闭。按下 AddWater 按钮后,TOT 指令会复位并开始累加流入水箱的水量。达到 Target 值后,TOT 指令将 TargetFlag 输出置位,使电磁阀关闭。在此示例中,通过将 ProgProgReq 和 ProgStartReq 输入置位,将 TOT 指令“锁定”到程序运行模式。这样,操作员便无需再直接控制 TOT 指令。
功能块

结构化文本
TotalWaterFlow.In := WaterFlowRate;
TotalWaterFlow.ProgProgReq := 1;
TotalWaterFlow.ProgStartReq := 1;
TotalWaterFlow.ProgResetReq := AddWater;
TOT(TotalWaterFlow);
RESD_01.Set := AddWater;
RESD_01.Reset := TotalWaterFlow.TargetFlag;
RESD(RESD_01);
WaterSolenoidValve := RESD_01.Out;
提供反馈