三个字母,一套反馈——理解工业界最常用的控制算法
PID 由四个核心概念构成,按依赖顺序展开。关键洞察是调参权衡——每个分量都是双刃剑。
这是一个无人机高度控制系统。目标高度 1.0,重力会把它拉下来。拖动三个滑块改变 Kp/Ki/Kd,观察响应曲线如何变化。先预测,再拖动——惊讶来自预期与现实的落差。
四个级别,从观察到独立调参。每个级别都需在上方仿真器中操作。
点击「纯 P」预设按钮,观察响应曲线。预测:无人机会停在目标高度 1.0 吗?为什么没停住?
在纯 P 基础上,慢慢增大 Ki(从 0 到 2)。观察曲线和 Ess 指标。预测:稳态误差会消失吗?代价是什么?
切到「过冲」预设,再慢慢增大 Kd。观察超调 Mp。预测:D 能压住超调吗?
点击「稳态误差演示」预设(Kp=2, Ki=0, Kd=0)。你会看到无人机停在目标下方一段距离——这就是稳态误差。
你的任务:只调整 Ki(保持 Kp=2, Kd=0),让稳态误差 Ess 降到 0.01 以下。
记录你最终用的 Ki 值:
从 Kp=0, Ki=0, Kd=0 开始,调出一组参数满足全部指标:
记录你的参数:Kp= Ki= Kd=
用你在 L3 调好的参数。点击「噪声:开」按钮(开启高度传感器噪声)。观察响应曲线和控制信号。
问题:开启噪声后,哪个分量让控制信号变得抖动剧烈?为什么?该如何缓解?
稳态时系统需要一定推力来抵消重力(或其他恒定负载)。纯 P 的推力 = Kp × 误差,要有推力就必须保留误差。误差 = 重力 / Kp,Kp 越大误差越小,但永远不为 0。
I 项累积误差随时间增长——即使误差很小,时间一长积分也会变大,产生足够推力把误差压到 0。代价是累积过程有滞后,容易"过头"导致超调;极端情况下积分饱和会引发剧烈振荡。
D 项 = 误差变化率 = 当前误差减上一次误差。变化率为正说明误差在增大(偏离目标),为负说明在减小(接近目标)。D 项根据这个趋势提前反应。但噪声是高频抖动,相邻两次采样的误差差值被噪声主导,求导后噪声被放大——所以 D 常需配合滤波。
P = 现在(当前误差);I = 过去(历史误差累积);D = 未来(误差变化趋势,预测下一步)。三者合起来从三个时间维度综合决策。
一般先调 P(确立响应速度的基本框架),再加 D(抑制 P 带来的超调),最后加 Ki(消除稳态误差)。因为 P 是基础,D 依赖 P 已有响应才有意义,I 最危险放最后小量加入。