PID 用比例、积分、微分三种作用加权叠加消除误差,是反馈控制的工业标准——不需要被控对象的精确模型,就能把常微分方程描述的动态系统稳定拉回设定值。
核心公式
设定值 与测量值 之差为误差 ,控制器输出:
| 项 | 作用 | 直觉 | 副作用 |
|---|---|---|---|
| 比例 P | 误差大就用力拉,即时响应 | 留稳态误差,过大会振荡 | |
| 积分 I | 累积历史误差,清零残余偏差 | 相位滞后,易超调、积分饱和 | |
| 微分 D | 预测趋势提前刹车,增加阻尼 | 放大噪声 |
三项分别回应误差的现在、过去、未来——这是 PID 的全部直觉。
为什么有效
- 多数被控对象在工作点附近可近似为低阶线性系统(一阶滞后 + 纯延迟),PID 的两个零点恰好能补偿这类极点结构
- 只依赖误差信号、不依赖模型——参数漂移、模型失配下依然鲁棒,这是它统治工业界的真正原因
- 频域视角:控制器传递函数 ,积分项抬高低频增益消除稳态误差,微分项抬高频宽加速响应
闭环特征方程 的根决定收敛、振荡还是发散——本质是常微分方程的稳定性问题(特征方程一节),系统化的稳定判据见系统稳定性 Stability。
调参
手动整定顺序:I、D 置零,增大 到响应出现明显振荡后回退;加 消稳态误差;最后加 压超调。
| 现象 | 调整 |
|---|---|
| 响应慢、稳态误差大 | 增大 |
| 超调、振荡 | 减小 或增大 |
| 稳态误差消不掉 | 增大 |
| 单调收敛但太慢 | 增大 (盯住超调) |
| 执行器抖动、噪声敏感 | 减小 ,微分项加低通滤波 |
Ziegler–Nichols 整定:纯 P 下增大增益至等幅振荡,记临界增益 与振荡周期 :
| 控制器 | |||
|---|---|---|---|
| P | — | — | |
| PI | — | ||
| PID |
给的是起点不是终点,几乎总要再看响应曲线微调。
离散实现
计算机用求和替积分、差分替微分,采样周期 (采样带来的全部工程权衡见离散控制系统 Digital Control)。位置式输出绝对量:
增量式输出变化量,适合执行器本身带积分特性的场景(步进电机、阀门开度):
工程上三个必做的改进:
- 微分先行:对测量值 而非误差 微分,设定值阶跃时不会产生微分踢(derivative kick)
- 微分滤波:微分项串一阶低通 ,压制高频噪声
- 积分抗饱和(anti-windup):执行器饱和期间冻结或回算积分项,否则退出饱和极慢、超调恶化
Python 实现
import numpy as np
class PID:
"""位置式 PID:微分先行 + 条件积分抗饱和"""
def __init__(self, kp, ki, kd, dt, umin=-10.0, umax=10.0):
self.kp, self.ki, self.kd, self.dt = kp, ki, kd, dt
self.umin, self.umax = umin, umax
self.integral = 0.0
self.y_prev = 0.0
def __call__(self, r, y):
e = r - y
d = -(y - self.y_prev) / self.dt # 对测量值微分,设定值阶跃时不产生微分踢
u_unsat = self.kp * e + self.integral + self.kd * d
# 输出未饱和才积累积分,饱和期间冻结,防 windup
if self.umin < u_unsat < self.umax:
self.integral += self.ki * e * self.dt
self.y_prev = y
return np.clip(u_unsat, self.umin, self.umax)
# 一阶滞后对象 dy/dt = (u - y) / tau,单位阶跃响应
dt, tau, steps = 0.01, 0.5, 800
pid = PID(kp=2.0, ki=4.0, kd=0.1, dt=dt, umax=5.0)
y, hist = 0.0, []
for _ in range(steps):
u = pid(1.0, y) # 设定值 r = 1
y += dt * (u - y) / tau # 欧拉法推进被控对象
hist.append(y)
# 调参实验:ki=kd=0 纯 P 收敛到 0.8(稳态误差);补 ki 后误差清零;
# kd 过大(>0.5)时未滤波的微分项反而使响应迟滞理论定位
- 适用边界:单变量、工作点附近近似线性、延迟不太大的回路——覆盖绝大多数工业场景
- 力不从心处:多变量耦合、强非线性、大纯延迟 → 状态空间、LQR、MPC;无模型可辨识时转向强化学习
- 尽管现代控制理论层出不穷,工业回路九成以上仍是 PID:简单、鲁棒、任何维护工程师都看得懂
应用场景
- 过程控制:温度、流量、压力、液位回路,炼化与半导体制造的标配
- 运动控制:电机伺服、云台增稳、无人机姿态环(Pixhawk 的级联 PID)、3D 打印机(Marlin 固件)
- 日常设备:空调恒温、烤箱、定速巡航
- 同构场景:任何「测误差 → 反馈修正」的循环,如服务限流、训练超参调度,PID 都是第一直觉起点