超前-滞后 (LDLG)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。超前-滞后 (LDLG) 指令用于为输入信号提供相位超前-滞后补偿。此指令通常用于前馈 PID 控制或过程仿真。
可用语言
梯形图
此指令不可用于梯形图中。
功能块

结构化文本
LDLG(LDLG_tag);
操作数
功能块
操作数 | 类型 | 格式 | 说明 |
LDLG 标签 | LEAD_LAG | 结构 | LDLG 结构 |
结构化文本
操作数 | 类型 | 格式 | 说明 |
LDLG 标签 | LEAD_LAG | 结构 | LDLG 结构 |
有关结构化文本中表达式语法的详细信息,请参见
结构化文本语法
部分。LEAD_LAG 结构
输入参数 | 数据类型 | 说明 |
|---|---|---|
EnableIn | BOOL | 启用输入。如果此参数清零,指令不会执行,也不会更新输出。 默认置位。 |
In | REAL | 指令的模拟信号输入。 有效值 = 任意浮点值 默认值 = 0.0 |
Initialize | BOOL | 初始化滤波控制算法的请求。当 Initialize 置位时,Out = (In x Gain) + Bias。 默认值 = 清零 |
Lead | REAL | 超前时间,单位为秒。若设置 Lead = 0.0,会禁用超前控制算法。如果 Lead < 0.0,该指令会将 Status 中的相应位置位,并将 Lead 限制为 0.0。如果 Lead > 最大正浮点数,指令会将 Status 中的相应位置位。 有效值 = 任何 0.0 的浮点数默认值 = 0.0 |
Lag | REAL | 滞后时间,单位为秒。最短滞后时间为 DeltaT/2。如果 Lag < DeltaT/2,该指令会将 Status 中的相应位置位,并将 Lag 限制为 DeltaT/2。如果 Lag > 最大正浮点数,指令会将 Status 中的相应位置位。 有效值 = 任何 DeltaT/2 的浮点数默认值 = 0.0 |
Gain | REAL | 过程增益乘数。该值用于模拟过程增益。In 信号将乘以该值。I = (In x Gain) + Bias 有效值 = 任意浮点值 默认值 = 1.0 |
Bias | REAL | 过程偏移程度。该值用于模拟环境条件。该值将与 In 和 Gain 的乘积相加。I = (In x Gain) + Bias 有效值 = 任意浮点值 默认值 = 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 | REAL | 计算所得的算法输出。数学状态标志用于此输出。 |
DeltaT | REAL | 两次更新间隔的时间。控制算法计算过程输出所用的时间(秒)。 |
Status | DINT | 功能块的状态。 |
InstructFault (Status.0) | BOOL | 该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。 |
LeadInv (Status.1) | BOOL | Lead < 最小值或 Lead > 最大值。 |
LagInv (Status.2) | BOOL | Lag < 最小值或 Lag > 最大值。 |
TimingModeInv (Status.27) | BOOL | TimingMode 值无效。 有关时序模式的更多信息,请参见“功能块属性”部分。 |
RTSMissed (Status.28) | BOOL | 仅用于实时采样模式。当 ABS | DeltaT - RTSTime | > 1(0.001 秒)时置位。 |
RTSTimeInv (Status.29) | BOOL | RTSTime 值无效。 |
RTSTimeStampInv (Status.30) | BOOL | RTSTimeStamp 值无效。 |
DeltaTInv (Status.31) | BOOL | DeltaT 值无效。 |
说明
LDLG 指令支持一个超前和滞后串联。该指令还支持使用可组态的增益和偏置系数。LDLG 指令专用于恒速扫描的任务 (task) 中。
LDLG 指令采用以下公式:

其中,参数限制如下:
参数 | 限制 |
|---|---|
Lead | 下限 = 0.0 HighLimit = 最大正浮点值 |
Lag | LowLimit = DeltaT/2(DeltaT 以秒为单位) HighLimit = 最大正浮点值 |
一旦计算出的输出值无效(NAN 或
INF),指令会设置 Out = 无效值,并将数学溢出状态标志置位。当计算出的输出值有效后,该指令将初始化内部参数并设置 Out = (In x Gain) + Bias。
INF),指令会设置 Out = 无效值,并将数学溢出状态标志置位。当计算出的输出值有效后,该指令将初始化内部参数并设置 Out = (In x Gain) + Bias。数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 通用属性。
执行
功能块
条件 | 功能块操作 |
|---|---|
预扫描 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为假 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为真 | EnableIn 和 EnableOut 位设置为真。 指令执行。 |
指令首次运行 | 不适用 |
指令首次扫描 | 执行“Out = (In * Gain) + Bias”。 重新计算 Lead/Lag 系数。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“功能块”表中的“预扫描”行。 |
正常执行 | 请参见“功能块”表中的“Tag.EnableIn 为真”行。 |
后扫描 | 请参见“功能块”表中的“后扫描”行。 |
示例
本例中,LDLG 指令将向模拟过程添加一阶滞后。用户也可以在 LDLG 指令中输入一个 Gain 来模拟过程增益,还可以输入一个 Bias 来模拟环境条件。
功能块

结构化文本
DEDT_01.In := SimulatedLoop.CVEU;
DEDT(DEDT_01,DEDT_01_array);
LDLG_01.In := DEDT_01.Out;
LDLG(LDLG_01);
SimulatedLoop.PV := LDLG_01.Out;
PIDE(SimulatedLoop);
提供反馈
0.0 的浮点数