PID 控制器

三个字母,一套反馈——理解工业界最常用的控制算法

0知识地图

PID 由四个核心概念构成,按依赖顺序展开。关键洞察是调参权衡——每个分量都是双刃剑。

① 闭环回路 误差 = 设定 - 实际 ② P 比例 当前误差 × Kp ③ I 积分 累积误差 × Ki ④ D 微分 误差变化率 × Kd 关键洞察:调参权衡 每个分量都是双刃剑 ⚠ P 大≠好 ⚠ I 有副作用 ⚠ D 放大噪声
P 比例(当前) I 积分(过去) D 微分(未来) 关键洞察

1核心交互:实时调参

这是一个无人机高度控制系统。目标高度 1.0,重力会把它拉下来。拖动三个滑块改变 Kp/Ki/Kd,观察响应曲线如何变化。先预测,再拖动——惊讶来自预期与现实的落差。

预测一下:如果把 Kp 调到很大(比如 15),无人机会更快到达目标,还是会上下乱窜?先把 Kp 拖到 15 看看。
系统状态(无人机高度)
响应曲线(高度 vs 时间)
4.0
2.0
1.5
上升时间 Tr
超调 Mp
稳态误差 Ess
稳定时间 Ts

2学习递进

四个级别,从观察到独立调参。每个级别都需在上方仿真器中操作。

L1 识别 · 观察三个分量各自的作用 ▼ 展开
任务 1.1

点击「纯 P」预设按钮,观察响应曲线。预测:无人机会停在目标高度 1.0 吗?为什么没停住?

提示看稳态误差指标 Ess——重力把无人机往下拉,纯 P 的推力与误差成正比,要平衡重力就必须留一点误差。
任务 1.2

在纯 P 基础上,慢慢增大 Ki(从 0 到 2)。观察曲线和 Ess 指标。预测:稳态误差会消失吗?代价是什么?

提示I 会累积误差,即使误差很小,时间一长积分项也会变大,最终把误差压到 0。但累积过头会导致超调。
任务 1.3

切到「过冲」预设,再慢慢增大 Kd。观察超调 Mp。预测:D 能压住超调吗?

提示D 看的是误差变化率——当无人机快速冲向目标时,误差在快速减小(变化率为负),D 项产生反向力"刹车"。
L2 引导练习 · 消除稳态误差 ▼ 展开
任务

点击「稳态误差演示」预设(Kp=2, Ki=0, Kd=0)。你会看到无人机停在目标下方一段距离——这就是稳态误差。

你的任务:只调整 Ki(保持 Kp=2, Kd=0),让稳态误差 Ess 降到 0.01 以下。

记录你最终用的 Ki 值:

提示 1Ki 太小(如 0.3)积分太慢,需要很长时间才能消除误差。
提示 2Ki 太大(如 5)会剧烈超调甚至振荡。试 1.5~2.5 之间。
增大 Ki 能消除稳态误差,但 Ki 过大会导致积分饱和和剧烈超调——I 是双刃剑。
L3 独立调参 · 达到性能指标 ▼ 展开
验收标准

从 Kp=0, Ki=0, Kd=0 开始,调出一组参数满足全部指标:

  • 上升时间 Tr < 1.5 秒
  • 超调 Mp < 15%
  • 稳态误差 Ess < 0.02
  • 稳定时间 Ts < 4 秒

记录你的参数:Kp= Ki= Kd=

调参顺序建议(Ziegler-Nichols 思路)① 先调 Kp:增大到刚好开始振荡,再退回 60%。② 再加 Kd:抑制 Kp 带来的超调。③ 最后加 Ki:消除稳态误差,从小的值开始。
L4 拓展 · 噪声环境下的 D 之祸 ▼ 展开
任务

用你在 L3 调好的参数。点击「噪声:开」按钮(开启高度传感器噪声)。观察响应曲线和控制信号。

问题:开启噪声后,哪个分量让控制信号变得抖动剧烈?为什么?该如何缓解?

提示D 项是对误差求导。噪声是高频抖动,求导后会放大这些高频成分。这就是为什么实际系统常对 D 项加低通滤波。
D 放大噪声——这是 D 项最隐蔽的代价。在含噪声的真实系统中,D 增益常需配合滤波器,或干脆放弃 D 用 PI。

3反思(不看材料,从记忆提取)

Q1:为什么纯 P 控制无法消除稳态误差?

稳态时系统需要一定推力来抵消重力(或其他恒定负载)。纯 P 的推力 = Kp × 误差,要有推力就必须保留误差。误差 = 重力 / Kp,Kp 越大误差越小,但永远不为 0。

Q2:I 项如何消除稳态误差?它的代价是什么?

I 项累积误差随时间增长——即使误差很小,时间一长积分也会变大,产生足够推力把误差压到 0。代价是累积过程有滞后,容易"过头"导致超调;极端情况下积分饱和会引发剧烈振荡。

Q3:D 项"预测未来"是什么意思?为什么它放大噪声?

D 项 = 误差变化率 = 当前误差减上一次误差。变化率为正说明误差在增大(偏离目标),为负说明在减小(接近目标)。D 项根据这个趋势提前反应。但噪声是高频抖动,相邻两次采样的误差差值被噪声主导,求导后噪声被放大——所以 D 常需配合滤波。

Q4:三个分量分别对应"过去/现在/未来"中的哪个?

P = 现在(当前误差);I = 过去(历史误差累积);D = 未来(误差变化趋势,预测下一步)。三者合起来从三个时间维度综合决策。

Q5:调参时通常先调哪个?为什么?

一般先调 P(确立响应速度的基本框架),再加 D(抑制 P 带来的超调),最后加 Ki(消除稳态误差)。因为 P 是基础,D 依赖 P 已有响应才有意义,I 最危险放最后小量加入。