比例 + 积分 (PI)

此信息适用于
CompactLogix
5370、
ControlLogix
5570、
Compact GuardLogix
5370、
GuardLogix
5570、
CompactLogix
5380、
ControlLogix
5580 和 ControlLogix 5590 控制器。
PI 指令提供两种运算方法。第一种方法采用传统 PI 算法,其中比例和积分增益在整个输入信号(误差)范围内保持恒定。第二种方法采用非线性算法,其中比例和积分增益在整个输入信号范围内会发生变化。输入信号是过程设置点与反馈之差。
可用语言
梯形图
此指令不可用于梯形图中。
功能块
PI_FBD_avail_v31
结构化文本
PI(PI_tag);
操作数
功能块
操作数
类型
格式
说明
PI tag
PROP_INT
结构
PI 结构
结构化文本
操作数
类型
格式
说明
PI tag
PROP_INT
结构
PI 结构
有关结构化文本中表达式语法的详细信息,请参见
结构化文本语法
部分。
PROP_INT 结构
输入参数
数据类型
说明
EnableIn
BOOL
启用输入。如果此参数清零,指令不会执行,也不会更新输出。
默认置位。
In
REAL
过程误差信号输入。这就是设定值和反馈的区别。
有效值 = 任意浮点值
默认值 = 0.0
Initialize
BOOL
指令初始化命令。置位时,Out 和内部积分器设为等于 InitialValue 的值。
默认清零。
InitialValue
REAL
输入初始值。Initialize 置位时,Out 和积分器设为 InitialValue 的值。使用 HighLimit 和 LowLimit 来限制 InitialValue 的值。
有效值 = 任意浮点值
默认值 = 0
Kp
REAL
比例增益。该值会影响比例和积分控制算法的计算值。如果该值无效,指令会将 Kp 强制设为限值,并将 Status 中的相应位置位。
有效值 = 大于 0.0 的任意浮点数。
默认值 = 最小正浮点值
Wld
REAL
超前频率(弧度/秒)。该值会影响积分控制算法的计算值。如果该值无效,指令会将 Wld 强制设为限值,并将 Status 中的相应位置位。
有效值 = 有关有效范围,请参阅下面的“说明”部分
默认值 = 0.0
HighLimit
REAL
上限值。这是 Out 的最大值。如果 HighLimit Less than or equal to LowLimit,则指令会将 HighAlarm 和 LowAlarm 置位,将 Status 中的相应位置位,并设置 Out = LowLimit。
有效值 = LowLimit < HighLimit Less than or equal to 最大正浮点值
默认值 = 最大正浮点值
LowLimit
REAL
下限值。这是 Out 的最小值。如果 HighLimit Less than or equal to LowLimit,则指令会将 HighAlarm 和 LowAlarm 置位,将 Status 中的相应位置位,并设置 Out = LowLimit。
有效值 = 最大负浮点值 Less than or equal to LowLimit < HighLimit
默认值 = 最大负浮点值
HoldHigh
BOOL
保持高位命令。置位时,不允许内部积分器的值增大。
默认清零。
HoldLow
BOOL
保持低位命令。置位时,不允许内部积分器的值减小。
默认清零。
ShapeKpPlus
REAL
正 Kp 修正增益乘数。当 In Greater than or equal to0 时使用。如果该值无效,指令会将 ShapeKpPlus 强制设为限值,并将 Status 中的相应位置位。在 NonLinearMode 清零时不使用。
有效值 = 0.1 至 10.0
默认值 = 1.0
ShapeKpMinus
REAL
负 Kp 修正增益乘数。In < 0 时使用。如果该值无效,指令会将 ShapeKpMinus 强制设为限值,并将 Status 中的相应位置位。在 NonLinearMode 清零时不使用。
有效值 = 0.1 至 10.0
默认值 = 1.0
KpInRange
REAL
比例增益修正范围。定义一个 In(误差)范围,比例增益在该范围内根据 | In | / KpInRange 之比增大或减小。当 | In | > KpInRange 时,指令使用输入的 Kp 修正增益 x (In - KpInRange) 计算比例误差变化。如果该值无效,指令会将 KpInRange 强制设为限值,并将 Status 中的相应位置位。在 NonLinearMode 清零时不使用。
有效值 = 大于 0.0 的任意浮点数。
默认值 = 最大正浮点值
ShapeWldPlus
REAL
正 Wld 修正增益乘数。当 In Greater than or equal to 0 时使用。如果该值无效,指令会将 ShapeWldPlus 强制设为限值,并将 Status 中的相应位置位。在 NonLinearMode 清零时不使用。
有效值 = 0.0 至 10.0
默认值 = 1.0
ShapeWldMinus
REAL
负 Wld 修正增益乘数。In < 0 时使用。如果该值无效,指令会将 ShapeWldMinus 强制设为限值,并将 Status 中的相应位置位。在 NonLinearMode 清零时不使用。
有效值 = 0.0 至 10.0
默认值 = 1.0
WldInRange
REAL
积分增益修正范围。定义一个 In(误差)范围,积分增益在该范围内根据 | In | / WldInRange 之比增大或减小。条件
|In| > WldInRange 时,计算积分误差时,指令会将 In 限制为 WldInRange。如果该值无效,指令会将 WldInRange 强制设为限值,并将 Status 中的相应位置位。在 NonLinearMode 清零时不使用。
有效值 = 大于 0.0 的任意浮点数。
默认值 = 最大正浮点值
NonLinearMode
BOOL
启用非线性增益模式。置位时,指令会使用由 ParabolicLinear 选择的非线性增益模式来计算实际的比例增益和积分增益。清零时,指令会禁用非线性增益模式,并将 Kp 和 Wld 值用作比例增益和积分增益。
默认清零。
ParabolicLinear
BOOL
选择非线性增益模式。模式可以是线性模式或抛物线模式。置位时,指令使用抛物线增益方法 y=a * x
2
+ b 来计算实际的比例增益和积分增益。清零时,指令使用线性增益方法 y=a * x + b。
默认清零。
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
计算出的 PI 算法输出。将该输出的数学状态标志置位。
HighAlarm
BOOL
上限报警指示器。当 Out 的计算值Greater than or equal toHighLimit 且输出和积分器强制设为 HighLimit 时置位。
LowAlarm
BOOL
下限报警指示器。当 Out 的计算值Less than or equal to LowLimit 且输出和积分器强制设为 LowLimit 时置位。
DeltaT
REAL
两次更新间隔的时间。控制算法计算过程输出所用的时间(秒)。
Status
DINT
功能块的状态。
InstructFault (Status.0)
BOOL
该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。
KpInv (Status.1)
BOOL
Kp < 最小值或 Kp > 最大值。
WldInv (Status.2)
BOOL
Wld < 最小值或 Wld > 最大值。
HighLowLimsInv (Status.3)
BOOL
HighLimit Less than or equal to LowLimit。
ShapeKpPlusInv (Status.4)
BOOL
ShapeKpPlus < 最小值或 ShapeKpPlus > 最大值。
ShapeKpMinusInv (Status.5)
BOOL
ShapeKpMinus < 最小值或 ShapeKpMinus > 最大值。
KpInRangeInv (Status.6)
BOOL
KpInRange < 最小值或 KpInRange > 最大值。
ShapeWldPlusInv (Status.7)
BOOL
ShapeWldPlus < 最小值或 ShapeWldPlus > 最大值。
ShapeWldMinusInv (Status.8)
BOOL
ShapeWldMinus < 最小值或 ShapeWldMinus > 最大值。
WldInRangeInv (Status.9)
BOOL
WldInRange < 最小值或 WldInRange > 最大值。
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 值无效。
DeltaT (Status.31)
BOOL
DeltaT 值无效。
说明
PI 指令采用位置式 PI 算法。这意味着,增益项直接应用于输入信号,而非输入信号的变化。PI 指令专用于恒速扫描的任务 (task) 中。
在非线性算法中,比例增益和积分增益随着输入信号幅值的变化而变化。PI 指令支持两种非线性增益模式:线性和抛物线增益模式。在线性算法中,增益随输入幅值的变化呈线性变化。在抛物线算法中,增益随输入幅值的变化呈抛物线变化。
PI 指令使用以下公式计算 Out:
PI_fbd_eq
一旦计算出的输出值无效(NAN 或 Plus or Minus sign INF),指令会设置 Out = 无效值,并将数学溢出状态标志置位。内部参数不会更新。在每次的后续扫描过程中,都会使用上一次扫描(输出有效)的内部参数计算输出。
在线性模式下工作
在线性模式下,非线性增益模式将被禁用。指令使用 Kp 和 Wld 值作为比例增益和积分增益。计算 Out 值的公式如下:
公式
ITerm
PI_fbd_ITerm_eq
其中,DeltaT 以秒为单位。
PTerm
Kp x In
Out
ITerm + PTerm
Wld 的限值如下:
  • 下限 > 0.0
  • 上限 = 0.7
    p
    /DeltaT
  • WldInput = In
在非线性模式下工作
在非线性模式下,指令使用由 ParabolicLinear 选择的非线性增益模式来计算实际的比例增益和积分增益。
当 In = 0 时,Kp 和 Wld 指定的增益将乘以 1.0。随着误差幅值的变化,相应的比例和积分算法也会分别增大或减小比例或积分增益。这些算法使用输入范围和修正增益参数计算实际的比例增益和积分增益。输入范围将定义进行增益修正的 In(即误差)范围。输入范围由 KpInRange 和 WldInRange 这两个参数设置。修正增益定义在修正增益参数所控制的象限内的增益乘数。修正增益由 ShapeKpPlus、ShapeKpMinus、ShapeWldPlus 和 ShapeWldMinus 设置。
ParabolicLinear 输入用于选择非线性增益模式。如果 ParabolicLinear 清零,则选择线性模式。如果 ParabolicLinear 置位,则选择抛物线模式。
要配置特定的修正增益曲线,可输入 0.0-10.0 的积分修正增益和 0.1-10.0 的比例修正增益,并输入要进行修正的输入范围。将 Kp 和 Wld 与计算出的 ShapeMultiplier 相乘即可得出实际的比例增益和积分增益。如果输入的修正增益为 1.0,则禁用用于为象限计算比例增益或积分增益的非线性算法。
当 In(误差)幅值大于 InRange 时,ShapeMultiplier 等于 | In | 与 InRange 相等时计算出的值。
下图显示了表示抛物线增益和线性增益公式的最大和最小增益曲线。
PI_fbd_GainCurves
计算 Out 值的公式如下:
公式
Kp 修正增益乘数
PI_fbd_KPShapeGainMult_eq
Kp 输入比率
PI_fbd_KPInputRatio_eq
Kp 比率
PI_fbd_KPRatio_eq
Kps 修正增益
PI_fbd_KPSShapingGain_eq
比例输出
PI_fbd_PropOutput_eq
Wld 修正增益
PI_fbd_WLDShapingGain_eq
Wld 输入
PI_fbd_WLDInput_eq
Wld 输入比率
PI_fbd_WLDInputRatio_eq
Wld 比率
PI_fbd_WLDRatio_eq
Wlds 修正增益
PI_fbd_WLDSShapingGain_eq
Wlds 限值
PI_fbd_WLDSLimits_eq
积分输出
PI_fbd_IntegralOutput_eq
输出
PI_fbd_Output_eq
限制
指令根据保持输入的状态停止 ITerm 的积分饱和。
条件
Action
PI_fbd_Condition1
PI_fbd_Action1
PI_fbd_Condition2
PI_fbd_Action1
指令还会根据 HighLimit 和 LowLimit 值停止积分器的积分饱和。
条件
Action
Integrator > HighLimit
Integrator = HighLimit
Integrator > LowLimit
Integrator = LowLimit
指令会根据 HighLimit 和 LowLimit 值限制 Out 值。
条件
Action
HighLimit Less than or equal to LowLimit
Out = LowLimit
ITerm = LowLimit
HighLowLimsInv 已设置
HighAlarm 置位
LowAlarm 置位
WldInput = 0
Out Greater than or equal to HighLimit
Out = HighLimit
ITerm = ITerm
n-1
HighAlarm 置位
ITerm > HighLimit
ITerm = HighLimit
Out Less than or equal to LowLimit
Out = LowLimit
ITerm = ITerm
n-1
LowAlarm 置位
ITerm < LowLimit
ITerm = LowLimit
影响数学状态标志
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参见“通用属性”。
执行
功能块
条件
执行的操作
预扫描
EnableIn 和 EnableOut 设置为假。
Tag.EnableIn 为假
EnableIn 和 EnableOut 位设置为假。
Tag.EnableIn 为真
EnableIn 和 EnableOut 位设置为真。
指令执行。
指令首次运行
Out n-1 = 0
将不执行用于计算 Out 的算法。
指令首次扫描
Out n-1 = 0
将不执行用于计算 Out 的算法。
后扫描
EnableIn 和 EnableOut 位设置为假。
结构化文本
条件/状态
执行的操作
预扫描
请参见“功能块”表中的“预扫描”行。
正常执行
请参见“功能块”表中的“Tag.EnableIn 为真”行。
后扫描
请参见“功能块”表中的“后扫描”行。
示例
PI 指令是包含比例增益分量和积分增益分量的调节指令。积分增益分量由用户设置(弧度/秒),用于设置 PI 调节器的基本频率响应。比例增益用于设置功能块的总增益,包括功能块的比例增益和积分增益。
下图显示了 PI 功能块在线性模式下的基本调节回路,其中不包括初始化和保持/钳位功能。
PI 指令:线性模式
PI Instruction Linear Mode_v31
在下面的示例中,PI 指令作为速度调节器使用。本例中,速度误差通过将系统速度参考值与速度反馈信号相减(通过 SCRV 指令)得出(参见 PMUL 指令示例)。速度误差直接送入 PI 指令,该指令将根据上图所示的函数对该信号进行处理。
功能块
PI_FBD_example_v31
结构化文本
Reference_Select.In1 := Master_Machine_Ref;
Reference_Select.Select1 := Master_Machine_Select;
Reference_Select.In2 := Section_Jog;
Reference_Select.Select2 := Jog_Select;
SSUM(Reference_Select);
S_Curve.In := Reference_Select.Out;
S_Curve.AccelRate := accel_rate;
S_Curve.DecelRate := accel_rate;
SCRV(S_Curve);
PMUL_01.In := Resolver_Feedback;
PMUL_01.WordSize := 12;
PMUL_01.Multiplier := 100000;
PMUL(PMUL_01);
Speed_Feedback := PMUL_01.Out;
Velocity_Error := S_Curve.Out - Speed_Feedback;
PI_01.In := Velocity_Error;
PI_01.Initialize := Enable_Regulator;
PI_01.Kp := Velocity_Proportional_Gain;
PI_01.Wld := Velocity_Integral_Gain;
PI(PI_01);
Torque_Reference := PI_01.Out;
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal