PID 可视化模拟调参

Y=0.00
目标=0.00
U=0.00
P=0.00
I=0.00
D=0.00
Kp?比例增益:对当前误差立即响应。越大越快,但更易超调/振荡且更容易让 U 饱和。
Ki?积分增益:累积误差以消除稳态误差。过大更容易慢性振荡与积分风up。
Kd?微分增益:对变化趋势增加阻尼,抑制超调与振荡。过大更容易放大噪声导致抖动。
目标?期望输出值(Setpoint)。
增益?对象静态增益:同样的 U 会引起多大的 Y 变化。越大越“灵敏”。
惯性?时间常数(tau):越大系统越慢、越难调快。
延迟?纯滞后(delay):控制作用延后生效。越大越容易超调/振荡。
噪声?给输出叠加随机扰动,用于观察 Kd 放大噪声导致的 U 抖动。
U限?执行器幅度限制:U 会被夹在 [-uMax, +uMax]。长期贴边表示饱和。
窗长?画布显示的时间窗口长度(秒)。短窗更适合看快速响应,长窗更适合看慢性振荡。

欢迎来到 可交互 PID 调参练习台!本教程将带你直观理解 PID 控制器的原理及调参方法,通过动手操作,你可以看到:

  • 上半图:系统输出 Y 如何跟踪 目标 Setpoint
  • 下半图:控制器输出 U 及 P / I / D 三个分量的贡献

模型使用经典的 一阶惯性 + 纯滞后(FOPDT),帮助你建立调参直觉:为什么会超调、振荡,为什么积分可以消静差,为什么微分可以增加阻尼但容易受噪声影响。

一、快速上手

1. 默认模式:静态响应

  • 曲线固定在一段时间窗内,调参后会立即更新整段曲线
  • 更适合初学者观察参数对系统行为的影响

2. 实时滚动模式

  • 曲线随时间滚动,可开始/暂停
  • 可注入扰动,观察抗扰能力,更接近真实控制器体验

3. 预设参数

  • 温和:响应平稳、超调少
  • 激进:快速响应,但易接近振荡
  • 振荡:演示参数过大或积分风up现象

二、PID 参数理解

参数作用调大效果调小效果
Kp(比例)对当前误差立即反应响应更快,但更易超调/振荡,U 更可能饱和更稳但响应慢
Ki(积分)对累计误差反应,用于消除静态误差静差消除快,但易振荡稳定但可能残留静差
Kd(微分)对误差变化趋势反应,增加阻尼超调少、更稳,但易受噪声影响响应平滑,但阻尼不足易振荡
I限限制积分最大输出太大+Ki大易超调太小积分作用不足
抗饱和当 U 饱和时防止积分继续累积开启可减轻积分风up关闭可观察积分累积效果

三、被控对象(Plant)参数

参数含义
目标/Setpoint目标值
增益对象增益,U 引起的 Y 变化幅度
惯性时间常数,越大响应越慢
延迟纯滞后,越大越难调,易超调/振荡
噪声输出噪声,可观察 Kd 对噪声的敏感度

四、输出约束与显示

  • uMax:限制 U 的最大值,模拟执行器能力
  • windowSeconds:显示时间窗长度

注意:U 长时间贴边表示饱和,会影响调参判断

五、调参建议流程

  1. 静态响应模式
    • 噪声 = 0,延迟 小,U限 足够
    • 防止一上来就饱和
  2. 调 Kp(比例)
    • 作用:对“当前误差”立即反应,让Y能快速接近目标
    • 调大:响应更快,但更容易超调/振荡,U 更可能饱和
    • 调小:更稳但更慢
  3. 调 Ki(积分)
    • 作用:对“累计误差”反应,用于消除稳态误差(静差)
    • 调大:更容易消静差,但更可能慢性振荡/超调增大
    • 调小:更稳,但可能残留静差
  4. 调 Kd(微分)
    • 作用:对变化趋势反应,提升阻尼,抑制超调与振荡
    • 调大:更稳、更少超调,但更怕噪声(U 可能更抖)
    • 调小:更平滑,但阻尼不足时更易超调
  5. 切换实时滚动模式
    • 点“扰动”,观察系统恢复过程是否平稳

六、PID 原理详解:它们到底在干什么?

PID 控制器其实就是飞行员大脑里的三个思考维度。假设你现在推了一下摇杆,要求飞机倾斜 30度(这是你的 Setpoint 目标值)。

1. P (Proportional) —— 现在的“蛮力”

例子: 当飞机发现目前只有 0 度,离目标还差 30 度时,P 会大喊一声:“差距太大了,哥们快加力!”。

作用: 它是主要的动力来源。误差越大,电机转得越快。

手感:

  • P 高了: 飞机感觉非常“硬”,像长在手上的铁块,反应极快。但太高了飞机会像打冷颤一样高频抖动。
  • P 低了: 飞机感觉像在“开船”,肉肉的、反应慢,你推了摇杆它要等一下才慢悠悠地倾斜。

2. I (Integral) —— 过去的“执念”

例子: 假设你的飞机重心不稳(电池挂歪了),或者有一阵持续的侧风。P 只管当前的误差,而 I 会盯着过去一段时间发现:“不对劲,我明明出力了,怎么还没到 30 度?肯定有东西在挡我!” 于是 I 会一点点增加力量,直到把那几度的残余误差彻底消掉。

作用: 它是用来对抗外界持续干扰(风、重心偏移)的。它确保飞机能“死死钉在”你指定的角度上。

手感:

  • I 高了: 飞机非常稳,像贴在轨道上飞。但太高了会让飞机反应变迟钝,甚至出现低频的点头晃动(补过头了)。
  • I 低了: 飞机总是在“漂移”。你松开摇杆后,它可能慢慢地往回掉,或者定不住角度。

3. D (Derivative) —— 未来的“预判”

例子: 当飞机在 P 的带动下快速接近 30 度时,D 发现:“停!快到目标了,速度太快了,再不刹车就要撞过去了!”。它观察误差缩小的快慢,并在接近目标时反向给电机施加阻力。

作用: 它是刹车和减震器。专门对付超调(冲过头)和震荡。

手感:

  • D 合适: 飞机做完翻滚动作后,像磁铁吸住一样瞬间停住,没有任何回弹。
  • D 高了: 电机会非常烫(因为它在疯狂做细微的微操),且飞行声音会有难听的“沙沙”声。
  • D 低了: 飞机在停下时会像果冻一样回弹晃动(Bounce-back)。

综合调参总结(穿越机口诀):

  • 先加 P: 加到飞机开始快速抖动(震荡),然后往回退一点。这时候飞机反应最快,但停不稳。
  • 再加 D: 加上 D 来吸掉翻滚停下时的回弹。如果 D 加上去电机开始烫手,说明你 D 给多了或者 P 太高了。
  • 最后补 I: 去飞个直线或者大圈,如果发现飞机总是自己慢慢偏离角度,就一点点加 I,直到它像被胶水粘在空中一样。