一、什么是 PID?
PID 控制器是工业界使用最广泛的反馈控制算法。它持续测量误差 e(t) = 设定值 − 实际值, 并把误差的「现在(P)」「过去(I)」「未来(D)」三种信息加权求和,得到控制输出 u(t):
u(t) = Kp·e(t) + Ki·∫₀ᵗ e(τ)dτ + Kd·de(t)/dt
离散实现(采样周期 Δt):
u[k] = Kp·e[k] + Ki·Σe[j]·Δt + Kd·(e[k]−e[k−1])/Δt
二、多维度理解三个参数
维度 1 · 数学含义
- P(比例):只看当前误差。误差越大,出力越大。但误差为零时出力也为零,所以面对持续扰动(如重力、负载、散热)会留下稳态误差。
- I(积分):累加历史误差。只要误差不归零,积分就不断增长,最终顶住恒定扰动、消除稳态误差;代价是响应变"钝"、容易超调甚至振荡。
- D(微分):看误差的变化趋势。误差快速缩小时提前"踩刹车",抑制超调、增加阻尼;但对测量噪声非常敏感。
维度 2 · 物理直觉(开车类比)
- P:离目的地越远,油门踩得越深;
- I:发现一直被顶头风拖慢(误差一直在),就额外多给一点油,且越欠越补;
- D:眼看就要冲过停车线了(误差迅速变小),提前松油门带刹车。
维度 3 · 时域响应特征(增大某一参数的影响)
| 增大参数 | 上升时间 | 超调量 | 调节时间 | 稳态误差 | 稳定性 |
|---|---|---|---|---|---|
| Kp ↑ | 减小 | 增大 | 小幅变化 | 减小(不消除) | 变差 |
| Ki ↑ | 减小 | 增大 | 增大 | 消除 | 变差 |
| Kd ↑ | 小幅变化 | 减小 | 减小 | 无影响 | 改善(噪声小时) |
维度 4 · 工程实践要点
- 积分饱和 (Windup):执行器到达极限(阀门全开、电压到顶)后误差仍在累积,积分越攒越大,导致回程时巨大超调。解决:积分限幅 / 反算抗饱和。本网站的仿真均内置了抗饱和,可在"恒温控制"场景中体会。
- 微分噪声:D 项放大高频噪声,工程上常加一阶低通滤波,或改为"对测量值微分"。
- 输出限幅:真实执行器都有上下限,仿真中也做了限幅,更贴近实际。
- 采样周期:离散 PID 的 Δt 应远小于系统时间常数(经验上 1/10 以下)。
三、手动调参口诀与步骤(试凑法)
"参数整定找最佳,从小到大顺序查;先是比例后积分,最后再把微分加。"
- 令 Ki=Kd=0,从小到大增大 Kp,直到系统响应足够快、出现轻微振荡,然后退回一些;
- 逐步加入 Ki 消除稳态误差,Ki 过大会引起缓慢振荡,需折中;
- 若超调仍偏大,加入少量 Kd 增加阻尼;噪声大的系统慎用 D;
- 施加扰动(本网站每个场景都有扰动按钮)检验抗扰能力,反复微调。
建议顺序游玩:参数实验室 → 电机(看 I 抗负载)→ 恒温(看积分饱和)→ 无人机(看重力稳态误差与 D 的阻尼作用)。
🧪 参数实验室 —— 二阶系统位置控制
被控对象:m·x″ = u − c·x′(质量块推到目标位置)。这是最能展现超调与振荡的教学对象。先只用 P,再加 I、加 D,观察曲线变化。
实验建议
- 预设「纯 P」:注意没有持续扰动时纯 P 也能到达目标,但 Kp 大了会振荡;
- 把 Kp 拉大:本对象纯 P 始终缓慢收敛,但 Kp 越大振荡衰减越慢;真正的持续振荡来自积分——理论上当 Ki > 1.2·Kp 时本系统失稳(Routh 判据),预设「激进(等幅振荡)」正好压在 Ki = 1.2·Kp 的临界稳定边界上,可看到等幅振荡,此时只要加一点 Kd 就立即镇定;
- 预设「PD」再对比「PID」:D 是阻尼,I 是除稳态误差的"慢功夫";
- 点「施加外力扰动」:观察只有含 I 的组合能完全顶回扰动。
🔄 场景一 · 直流电机转速控制
模型:J·ω′ = K·u − b·ω − Tload,电压限幅 ±24V。目标:让转盘稳定在设定转速,加上负载后仍能恢复。
这个场景教会你什么?
- 转速控制对象近似一阶系统,纯 P 就能跟得不错——直到负载出现;
- 点「加载负载」:纯 P 时转速被压低且永远回不去(稳态误差 = 负载/某常数 ÷ Kp 相关),因为误差必须留着才能维持出力;
- 加入 Ki 后再加载(3 N·m):转速短暂跌落后被积分"扛"回设定值——这就是 I 项的核心价值;
- 点「超重负载 6 N·m」:维持 150 rad/s 需要 (0.05×150+6)/0.5 = 27V,超过 ±24V 上限——执行器饱和后,再完美的 PID 也到不了目标(极限转速只有 120 rad/s)。这时盯着电压指标看"⚠饱和",体会抗积分饱和为什么重要。
🌡 场景二 · 恒温箱温度控制(时间 20 倍速)
模型:C·T′ = Pmax·u − h·(T − Tenv),加热功率 0~1000W,只能加热不能制冷(单向执行器),环境温度 25℃。热过程慢,已按 20 倍速播放。
这个场景教会你什么?
- 温度系统时间常数大(升温慢),而且只能加热、降温全靠散热,超调的代价是"等它自己凉下来";
- 把 Ki 调大并切换目标温度:升温阶段加热器满功率(饱和),若无抗饱和,积分疯长会导致冲过目标好几度——本仿真内置抗饱和,可点「关闭抗饱和」按钮对比灾难效果;
- 「开盖散热」相当于散热突然加剧的持续扰动,再次体现 I 项扛扰动;「倒入冷水」是阶跃式状态扰动;
- 适量 Kd 能在温度逼近目标时提前收油,明显减小超调。
🚁 场景三 · 无人机定高悬停
模型:m·z″ = u·Fmax − m·g(m=1kg,最大推力 20N,油门 0~100%)。悬停需要持续约 49% 油门对抗重力——重力就是一个永不消失的恒定扰动。
这个场景教会你什么?
- 预设「纯 P」:无人机悬停在目标之下——必须留着一段误差来产生抵抗重力的油门,这就是恒定扰动下 P 控制的本质缺陷;
- 加入 Ki:积分慢慢攒出"悬停油门",机体贴线悬停(真机上常用前馈 + 小积分实现同样效果);
- 双积分对象(推力→加速度→速度→高度)天生容易振荡,Kd 在这里相当于人造空气阻尼,几乎不可缺少——试试把 Kd 归零;
- 点「阵风」:观察 D 项第一时间产生强烈反应(它看的是变化率),P、I 随后跟进。
📷 场景四 · 摄像头光学防抖 OIS(俯视图)
模型:音圈电机(VCM)驱动镜片组,机械阻尼极低(ζ=0.012),弹簧将镜片与机身耦合。摄像头晃动时弹簧把镜片"拖走",OIS 通过 PID 把镜片拉回世界坐标原点(= 图像稳定)。
物理方程:m·x″ + b·x′ + k·x = K·u + k·xcam(m=1g,b=0.003,k=5.6 N/m,VCM K=5.6)
这个场景教会你什么?
- 无防抖:弹簧将镜片拖向机身位置,镜片随机身同步晃动,图像完全模糊;
- 纯 P=10(会振铃):P 把镜片拉回中心,防抖率约 91%——但机械阻尼极低(ζ=0.012),VCM 遇到突发冲击(点击按钮)后会振铃长达约 2.9 秒(在"有 OIS"取景框中可见快速抖动);
- PD 推荐:Kd 提供主动阻尼,将闭环阻尼比从 0.012 提升至 0.66,冲击后 0.05s 内收敛——这是 D 项在高性能 VCM 中最关键的工程作用;
- 完整 PID:Ki 消除弹簧偏置/重力引起的静态偏差(点"模拟相机倾斜"后对比有无 I 的静止误差);
- 传感器噪声 ON + 大 Kd:展示 D 的核心代价——D 对噪声的微分放大造成镜片高频抖动,这也是真实 OIS 限制 Kd 上限的原因;
- 俯视图中蓝色圆为 OIS 镜片,左下取景框(红)= 无防抖画面,右下(绿)= 有 OIS 画面,观察两个圆点的抖动幅度差异。