死区时间 (DEDT)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。死区时间 (DEDT) 指令用于执行单路输入的延时。死区时间延时可以选择。
可用语言
梯形图
此指令不可用于梯形图逻辑中。
功能块

结构化文本
DEDT(DEDT_tag,storage);
操作数
结构化文本
操作数 | 类型 | 格式 | 说明 |
DEDT 标签 | DEADTIME | 结构 | DEDT 结构 |
storage | REAL | 数组 | 死区时间缓冲区 |
有关结构化文本中表达式语法的详细信息,请参见
结构化文本语法
部分。功能块
操作数 | 类型 | 格式 | 说明 |
DEDT 标签 | DEADTIME | 结构 | DEDT 结构 |
storage | REAL | 数组 | 死区时间缓冲区 |
DEADTIME 结构
输入参数 | 数据类型 | 说明 |
|---|---|---|
EnableIn | BOOL | 启用输入。如果为假,指令不会执行,也不会更新输出。 默认值为真。 |
In | REAL | 指令的模拟信号输入。 有效值 = 任意浮点值 默认值 = 0.0 |
InFault | BOOL | 输入不良状况指示器。如果输入值从模拟输入读取,则 InFault 由模拟输入的故障状态控制。InFault 为真时,说明输入信号存在错误,此指令会将 Status 中的相应位置位,控制算法不会执行且 Out 处于保持状态。 默认值为假。 假 = 状况良好 |
Deadtime | REAL | 指令的死区时间输入。以秒为单位输入死区时间。如果该值无效,该指令会假定该值等于零并置位 Status 中的相应位。 有效值 = 0.0 至(StorageArray 大小 * DeltaT) 默认值 = 0.0 |
Gain | REAL | 指令的增益输入。In 的值将与该值相乘。这允许模拟过程增益。 有效值 = 任意浮点值 默认值 = 1.0 |
Bias | REAL | 指令的偏置输入。In 的值将乘以 Gain,然后再与该值相加。这允许模拟环境条件。 有效值 = 任意浮点值 默认值 = 0.0 |
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 | 指示指令是否处于启用状态。如果 Out 溢出,则设置为假。 |
Out | REAL | 计算所得的死区时间算法输出。 |
DeltaT | REAL | 两次更新间隔的时间。控制算法计算过程输出所用的时间(秒)。 |
Status | DINT | 功能块的状态。 |
InstructFault (Status.0) | BOOL | 该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。 |
InFaulted (Status.1) | BOOL | In 状况不良。 |
DeadtimeInv (Status.2) | BOOL | Deadtime 值无效。 |
TimingMode (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 值无效。 |
说明
DEDT 指令使用数据缓冲区存储延迟的数据,因此支持使用任意时长的所需死区时间。DEDT 指令设计为在扫描速率保持恒定的任务中执行。
要使用 DEDT 指令,需创建一个存储数组,存储用于保存 (In x Gain) + Bias 采样值的死区时间缓冲区。存储数组的大小应足以容纳所需的最长死区时间,计算公式如下:
所需 StorageArray 的大小 = 最大死区时间(秒)/DeltaT(秒)
提供死区时间缓冲区服务
运行期间,该指令将检查 Deadtime 是否有效。Deadtime 必须介于 0.0 和(StorageArray 的大小 x DeltaT)之间。
如果 Deadtime 无效,该指令会将 Status 中的相应位置位,并设置 Out = (In x Gain) + Bias。
死区时间缓冲区用作先进先出缓冲区。每次死区时间算法执行时,最先进入死区时间缓冲区的值都会移到 Out 中。缓冲区中的其余值下移,而值 ((Inx Gain) + Bias) 则移至死区时间缓冲区的开始位置。经过 Deadtime 秒后,放入死区时间缓冲区中的新值将显示在 Out 中。
执行所设延时所需的数组元素数按 Deadtime 除以 DeltaT 计算。如果 Deadtime 不能被 DeltaT 整除,则数组元素数将四舍五入为最接近的整数,所设延时则四舍五入为最接近的 DeltaT 增量。例如,给定 Deadtime = 4.25s 且 DeltaT = 0.50s,执行所设延时所需的数组元素数计算如下:
4.25s / 0.50s = 8.5
所需数组元素数为 9
此示例中应用于输入的实际延时为:
数组元素数 x DeltaT = 所设延时,即
9 x 0.5s = 4.5s
若在运行期间更改 Deadtime 或 DeltaT,将改变各个值从缓冲区中移出时对应的时间点。执行所设延时所需的元素数既可以增大也可以减小。提供死区时间缓冲区服务之前,将执行以下更新:
如果所需元素数需要增大,则使用当前死区时间缓冲区中最先进入的值填充新的缓冲区元素。
如果所需元素数需要减小,则放弃当前死区时间缓冲区中最先进入的元素。
InFault 跳变时指令的行为
InFault 为真(状况不良)时,指令将暂停执行,保持上一个输出并将 Status 中的相应位置位。
当 InFault 由真跳变为假时,指令会将死区时间缓冲区中的所有值设置为 In x Gain + Bias。
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 通用属性。
执行
功能块
条件/状态 | 执行的操作 |
|---|---|
预扫描 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为假 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为真 | EnableIn 和 EnableOut 位设置为真。 指令执行。 |
指令首次运行 | 不适用 |
指令首次扫描 | 不适用 该指令不会执行,但确实验证输入参数。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“功能块”表中的“预扫描”行。 |
正常执行 | 请参见“功能块”表中的“Tag.EnableIn 为真”行。 |
后扫描 | 请参见“功能块”表中的“后扫描”行。 |
示例
本例中,DEDT 指令将对所模拟过程中的死区时间延时进行模拟。为模拟此过程,PIDE 指令的输出将经过死区时间延时和一阶滞后。数组 DEDT_01array 是一个包含 100 个元素的 REAL 数组,最多可支持 100 个采样值的死区时间。例如,如果此例程每 100 毫秒执行一次,则该数组最多可支持 10 秒的死区时间。
功能块

提供反馈