1. PID控制理论:从P到I到D,为什么需要这三个环节?

各位同学,咱们今天聊点实在的。

做飞控这么多年,我见过太多人一上来就调PID,P加大、I加大、D加大,结果飞机要么抖成筛子,要么直接翻跟头。调了半天,连这三个字母到底在干嘛都没搞明白。

说白了,PID就是三个“纠错工具”。一个管现在,一个管过去,一个管未来。你想想看,如果只用一个工具,能不能把飞机稳住?

1.1 先从P说起:比例控制,最直接的纠错

P,比例控制,公式很简单:输出 = Kp × 误差。

误差是什么?就是你想要的姿态角度,和当前实际角度的差值。比如我想让飞机俯仰10度,现在只有5度,那误差就是5度。P环节就根据这个5度,输出一个控制量去推飞机。

听起来很合理对吧?但问题来了——

P控制的致命缺陷:永远追不上目标

当误差变小的时候,P的输出也会变小。到最后,误差小到输出不足以克服阻力,飞机就停在离目标还有一点距离的地方。这就是所谓的“稳态误差”。

我在项目里遇到过一架四轴,P调得再大,悬停时总是偏左5度。为什么?因为飞机重心偏了,P需要一直保留一个误差才能产生足够的力矩去对抗偏载。这就是P的局限——它必须有误差才能工作。

个人经验:P不是越大越好。P太大,系统会震荡,甚至发散。我一般先从Kp=0.5开始试,看响应速度,再逐步往上加,直到出现轻微震荡,然后回调20%。

1.2 然后引入I:积分控制,专治“老赖”误差

I,积分控制,公式:输出 = Ki × ∫误差 dt。

积分是什么意思?就是把过去所有的误差累加起来。只要误差一直存在,积分值就会一直增长,输出就会越来越大,直到把那个“老赖”误差彻底干掉。

还是刚才那个例子,飞机偏左5度,P已经尽力了,但就是差那么一口气。这时候I上场了——它把过去几秒钟的误差累积起来,输出一个持续增大的修正力,直到飞机回到目标位置。

注意:I不是万能的

积分有个副作用叫“积分饱和”。如果误差长时间存在,积分值会累积到非常大,等你把目标改回来,它还得花时间“泄掉”,导致超调甚至震荡。我曾经在调试一款固定翼时,I给太大,结果飞机转弯后回不来,直接螺旋下坠……嗯,从那以后我再也不敢乱加I了。

环节 作用 副作用 适用场景
P 快速响应当前误差 稳态误差 所有系统的基础
I 消除累积误差 积分饱和、超调 有恒定干扰的系统
D 预测误差变化趋势 放大噪声 需要快速抑制震荡的系统

1.3 最后是D:微分控制,提前踩刹车

D,微分控制,公式:输出 = Kd × d(误差)/dt。

微分看的是误差的变化率。误差变化越快,D的输出越大。说白了,D就是在预测“接下来误差会变大还是变小”,然后提前给出反向控制力。

举个例子:飞机快要到达目标角度了,但速度很快。P还在拼命推,I还在累积,结果飞机冲过头了。D这时候站出来说:“慢着!误差正在快速减小,再推就过了!”然后输出一个反向力,帮飞机稳稳停住。

D的妙用:抑制震荡。如果你发现飞机在目标角度附近来回晃,加D通常能解决问题。但D对噪声非常敏感——传感器抖动一下,D的输出可能瞬间爆炸。

我个人习惯,D的取值一般比P小一个数量级。比如P=2.0,D可能从0.02开始试。太大反而坏事。

1.4 三个环节如何协同工作?

现在我们把P、I、D加起来:

输出 = Kp × 误差 + Ki × ∫误差 dt + Kd × d(误差)/dt

这个公式就是PID控制器的全部秘密。三个环节各司其职:

  • P:快速响应,把系统拉到目标附近
  • I:消除最后的偏差,对抗恒定干扰
  • D:抑制震荡,让系统平稳收敛

你想想看,如果只有P,飞机会永远差那么一点;如果只有I,响应太慢,而且容易超调;如果只有D,系统根本动不了。三个一起上,才能又快又准又稳。

避坑指南:我曾经调试一架六轴,P和I都调好了,但悬停时总是轻微抖动。折腾了两天,最后发现是D太小,抑制不住高频震荡。把Kd从0.01调到0.03,问题立刻解决。所以别小看D,它往往是“最后一公里”的关键。

1.5 PID控制的核心逻辑图

下面这张图,是我自己画的一个PID控制流程。你看一眼,就能明白这三个环节是怎么配合的。

PID控制核心逻辑图 PID控制核心逻辑 目标值 误差计算 反馈值 P 比例控制 I 积分控制 D 微分控制 求和 P+I+D 执行器 被控对象 说明 P:快速响应 I:消除静差 D:抑制震荡 三者缺一不可

从图上你能看到:目标值和反馈值先做差,得到误差。误差同时送给P、I、D三个环节,各自算完后再求和,输出给执行器。执行器驱动被控对象,被控对象的输出又通过传感器反馈回来,形成闭环。

这就是PID的全部秘密。说白了,就是三个“纠错员”一起干活,一个管现在,一个管过去,一个管未来。

核心总结:没有P,系统响应太慢;没有I,永远有静差;没有D,震荡停不下来。三个环节,一个都不能少。