前言
本文将介绍以下几点:
1、位置式PID
2、增量式PID
3、抗积分饱和原理
4、对比
通过本文,你将对位置式、增量式PID有基础了解,并掌握增量式PID的抗积分饱和原理。本文不涉及其他各式各样的抗积分饱和原理。
示意图


概述
简单来说:增加式(或称增量式)PID之所以能天然抗积分饱和,是因为它的算法不直接计算和存储积分项的历史累积值,而是计算控制量的变化量。当输出被限幅时,这个“变化量”的计算会自动将饱和因素考虑在内,从而避免了积分项的持续累积(即windup)。
下面我们进行详细分解。
什么是“积分饱和”(Integral Windup)
根源:在位置式PID中,积分项是对所有历史误差的累加(∑e(t))。当系统输出由于执行机构限幅(例如阀门全开/全关、电机最大转速)而无法再跟踪控制量的要求时,误差e(t)会持续存在。
问题:尽管输出已经达到极限,但控制器内部的积分项因为误差的持续存在而会继续无限增大(“积分饱和”或“windup”)。
后果:当设定值改变(例如需要反向调节时),由于积分项已经变得非常大,控制器需要很长时间才能将这个巨大的积分项“消化”掉,导致系统出现严重的超调和平稳时间延长。在这段“消化”时间里,执行机构会一直卡在极限位置,无法及时响应。
位置式PID vs. 增量式PID
我们通过公式对比来理解。
位置式PID (Positional PID)
输出的是控制量的绝对位置。
u(k) = Kp * e(k) + Ki * ∑e(j) + Kd * [e(k) - e(k-1)] (其中 j=0 to k)
关键点:它有一个独立的、不断累积的积分项 ∑e(j)。这个项是造成windup的直接原因。一旦输出饱和,这个累加值会变得巨大且与实际情况脱节。
增量式PID (Incremental PID)
输出的是控制量相对于上一次的变化量 (Δu)。
Δu(k) = u(k) - u(k-1) = Kp * [e(k) - e(k-1)] + Ki * e(k) + Kd * [e(k) - 2e(k-1) + e(k-2)]
关键点:它没有独立的积分项。积分作用体现在 Ki * e(k) 这一项上,它只与当前误差有关,而不是所有历史误差的总和。
最终的输出是:u(k) = u(k-1) + Δu(k)
这意味着当前的控制输出严格依赖于上一次的输出值。
增量式PID如何天然抗饱和?
核心就在于这个 u(k) = u(k-1) + Δu(k) 的迭代结构。
让我们模拟一下饱和时的情况:
- 假设执行机构的输出被限制在 [Umin, Umax] 之间。
- 在某个时刻 k-1,计算出的 u(k-1) 已经达到了上限 Umax(即饱和了)。
- 进入时刻 k,控制器计算增量 Δu(k)。由于误差可能仍然很大,Δu(k) 可能还是一个很大的正数。
- 现在计算 u(k) = u(k-1) + Δu(k) = Umax + Δu(k)。显然,这个结果会远远超过 Umax。
-
关键一步:在实际应用中,我们必须对最终输出进行限幅:
u(k) = clamp( u(k-1) + Δu(k), Umin, Umax )**
因此,u(k) 实际上被强制设定为 Umax。 - 进入时刻 k+1:
计算 u(k+1) = u(k) + Δu(k+1) = Umax + Δu(k+1)
同样,计算结果再次被限幅为 Umax。
发生了什么?
在位置式中,即使输出饱和,内部的积分累加器 ∑e(j) 仍在疯狂增长,与真实的输出值 Umax 严重脱节。
在增量式中,虽然计算出的 Δu(k) 很大,但由于输出被限幅,实际生效的值 u(k) 被牢牢地钉在了 Umax 上。并且,这个被限幅后的值 Umax 会作为下一次计算的基准 u(k-1)。
换句话说,积分效应(通过 Ki * e(k) 体现)被“冻结”了。 只要系统处于饱和状态,计算出的任何正增量 Δu 都是无效的,输出会一直保持在最大值 Umax 不动。一旦误差减小或变为负值(需要反向调节),Δu(k) 会立刻变为负数,输出 u(k) 也能立即从 Umax 开始下降,响应没有丝毫延迟。
总结对比
| 特性 | 位置式PID | 增量式PID |
|---|---|---|
| 输出含义 | 控制量的绝对位置 | 控制量的变化量 (Δu) |
| 积分项 | 独立,累积所有历史误差 (∑e),是windup的根源 | 无独立积分项,积分效果由当前误差项 Ki*e(k) 体现 |
| 抗饱和能力 | 无天然抗饱和能力,需额外算法(如 clamping, back-calculation) | 天然抗饱和 |
| 安全性 | 差。若计算机故障导致输出巨大跳变,可能损坏执行机构。 好。 | 输出变化是渐进的,更安全。 |
| 应用 | 需直接定位的执行机构(如阀门开度),实际应用中需要配合抗积分饱和算法 | 需控制变化率的执行机构(如步进电机) |
因此,增量式PID因其算法结构特性,无需任何额外代码就实现了天然的抗积分饱和功能,这是它相对于位置式PID的一个巨大优势。