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 都是第一直觉起点