🎛️ PID 控制原理与交互演示

用「小车追目标位置」看懂比例、积分、微分在干什么

← 返回主页

📚 什么是 PID?

PID 是工业与机器人里最常见的反馈控制结构:根据「目标 − 当前值」的误差 \(e(t)\), 算出控制量 \(u(t)\) 去驱动被控对象(电机、阀门、加热器等)。

三个字母分别对应三项「修正策略」:

  • P(比例):现在差多少,就用力多少——离目标远就推得猛。
  • I(积分):过去一直差一点点,就慢慢加码——消除长期偏差(静差)。
  • D(微分):变化太快就提前刹车——抑制超调、让响应更稳。

🧮 连续形式(本演示的离散实现)

\[ e(t) = r(t) - y(t), \qquad u(t) = K_p\, e + K_i \int_0^t e\,\mathrm{d}\tau + K_d \frac{\mathrm{d}e}{\mathrm{d}t} \]

\(r\):目标(setpoint),\(y\):实际位置;\(u\):施加在小车上的力(限幅)。

🚿 生活类比:调淋浴水温
  • P:水太冷就猛加热水——温差越大动作越大。
  • I:总觉得略凉,就一点点多开热水——把「老是差一度」攒起来修掉。
  • D:水温升得很快时提前关小一点——防止烫到(超调)。

下面动画里:黄线是目标位置,蓝车是当前位置,粉色箭头是控制器输出的力。可直接拖动黄色目标在轨道上点击/拖动改目标,也可拖动小车模拟外力扰动。

P — 看现在

只开 P:能靠近目标,但常停不准来回晃(本例有摩擦时更明显)。

I — 看过去

加上 I:慢慢消掉「总差一点」的静差,但 I 太大易迟钝、振荡

D — 看趋势

加上 D:接近目标时提前减速,减少超调,但对噪声敏感(实际常滤波)。

🎮 交互演示:小车位置控制

被控对象:质量 \(m=1\),阻尼 \(b=2\) 的小车(\( \ddot{y} = u - 2\dot{y} \))。拖动滑块观察 P / I / D 对曲线的影响。

8
1.2
4
5
0
当前位置 y
0
误差 e
0
控制力 u
0
P 项
0
I 项
0
D 项
目标位置(可拖动) 小车(可拖动) 控制力(箭头长度)

💡 拖动 黄色目标 或在轨道区域点击/拖动设目标;拖动 小车 可瞬间改变位置并观察 PID 如何拉回。

🔧 调参直觉(入门)

现象 可能原因 可尝试
响应太慢 Kp 太小 略增 Kp
大幅超调、振荡 Kp 或 Ki 过大,Kd 不足 增 Kd 或减 Kp/Ki
总差一点点到不了 只有 P,无积分 加一点 Ki
对噪声敏感、抖动 Kd 过大 减 Kd 或对微分项滤波

🌍 常见应用

  • 巡航定速、无人机姿态与高度、机器人关节位置
  • 化工反应釜温度/液位、电机转速、3D 打印机热床恒温
  • 现代实现多为数字 PID(单片机/PLC),并带抗积分饱和、输出限幅、微分滤波

📖 扩展阅读