4. 积分系数(I)的影响:消除稳态误差的双刃剑

积分项,也就是 I 系数,在飞控里是个很有意思的存在。它不像 P 项那么直接,也不像 D 项那么敏感。但说实话,没有它,你的飞机大概率会飘到天上去。

我刚开始做飞控那会儿,总觉得 P 和 D 调好了就万事大吉。结果飞机悬停时,高度总是差那么几厘米,角度也回不到正中间。后来师傅跟我说:「你试试加点 I。」嗯,从那以后,我再也不敢小看这个 I 了。

4.1 I 值的核心作用:消除稳态误差

先说说什么是稳态误差。简单讲,就是系统稳定后,实际值和目标值之间的那个「死差」。比如你让飞机悬停在 10 米高度,它最后停在 9.8 米,那 0.2 米就是稳态误差。

为什么会这样?因为 P 项是靠误差驱动的。误差越小,P 项输出越小。当误差小到一定程度,P 项的输出已经不足以克服重力、风阻这些外部干扰了。这时候飞机就停在那里,不动了。

I 项的作用,就是专门收拾这个「死差」。它会把过去所有的误差累积起来,时间越长,累积越大,输出就越强。直到误差被完全消除,累积才停止。

核心逻辑: I 项 = 对历史误差的积分 × I 系数。只要误差存在,积分就会增长,输出就会增加,直到误差归零。

我习惯把 I 项比作「记账本」。每次有误差,就记一笔。账本越厚,输出的力量越大。直到你把欠的债(误差)还清了,账本才不再增加。

4.2 I 值过大的后果:积分饱和与低频震荡

I 值不是越大越好。这个坑我踩过,而且踩得挺深。

有一次我在调一个大型四旋翼的悬停参数,想着把 I 加大一点,消除误差更快。结果飞机一解锁,直接往上窜了 3 米,然后开始上下震荡,像在跳蹦床。我赶紧切回手动,才没炸机。

这就是典型的 积分饱和。

4.2.1 积分饱和是怎么发生的?

飞机在地面时,目标高度是 10 米,实际高度是 0 米。误差 10 米,很大。积分项开始疯狂累积。但这时候电机还没转,输出被限幅器卡住了。等飞机起飞后,误差开始减小,但积分项已经累积了巨大的值,它不会立刻消失。

结果就是:飞机到了 10 米,积分项还在输出,继续往上推。等过了头,误差变负,积分项才开始慢慢减少。这个过程就造成了严重的超调和震荡。

避坑指南: 我曾经因为积分饱和,在测试台上把一架飞机的电机烧了。后来我养成了一个习惯——所有积分项都必须加限幅,而且限幅值不能太大。

4.2.2 低频震荡

I 值过大还会引发另一种问题:低频震荡。这种震荡频率不高,但幅度很大,肉眼就能看出来。

原因很简单:I 项响应慢。它是对历史误差的累积,所以当系统已经出现震荡时,I 项的反应总是慢半拍。这种滞后,反而会放大震荡。

I 值状态 表现 原因
I 值过大 超调大、低频震荡、响应迟钝 积分累积过快,输出饱和,相位滞后
I 值适中 稳态误差小、响应平滑 积分累积速度与系统响应匹配
I 值过小 稳态误差大、跟踪滞后 积分力量不足,无法消除累积误差

4.3 I 值过小的问题:跟踪滞后

反过来,I 值太小也不行。你想想看,如果 I 值几乎为零,那系统就只剩下 P 和 D 了。P 项消除不了稳态误差,D 项只对变化敏感。结果就是:飞机永远差那么一点。

我遇到过这样一个案例:一架测绘无人机,需要精确跟踪航线。P 和 D 都调得不错,但每次转弯后,飞机都要花好几秒才能回到航线上。这就是典型的 I 值偏小导致的跟踪滞后。

为什么会滞后?因为转弯时产生了横向误差,P 项在努力纠正,但外部风扰一直在。I 项太小,累积的力量不足以抵消持续的风扰。结果飞机就像在泥潭里走路,总是慢半拍。

我的调试习惯: 先调 P 让系统稳定,再加 D 抑制震荡,最后慢慢加 I 消除稳态误差。加 I 的时候,从 0 开始,每次增加 10%,观察 5-10 秒,直到误差消失。如果出现震荡,立刻减半。

4.4 I 项的核心逻辑图

下面这张图,是我自己总结的 I 项工作流程。每次调参前我都会看一眼,提醒自己不要犯低级错误。

积分项(I)工作流程与影响 误差输入 e(t) 积分器 ∫ e(t) dt × I 系数 输出限幅 I 项输出 关键说明 1. 误差持续存在时, 积分值不断增大 2. I 系数放大积分效果 3. 限幅防止积分饱和 4. 误差归零后,积分 值保持当前值 常见问题: • I 过大 → 积分饱和 • I 过大 → 低频震荡 • I 过小 → 稳态误差 • I 过小 → 跟踪滞后

4.5 实际调试中的 I 值策略

说了这么多理论,最后分享几个我在项目中用过的实用策略。

  1. 从零开始加 I:先把 I 设为 0,调好 P 和 D。等系统稳定后,再慢慢加 I。每次加 0.01 或 0.001,看效果。
  2. 观察稳态误差:如果飞机悬停时高度偏差超过 0.1 米,或者角度偏差超过 0.5 度,说明 I 不够。
  3. 注意响应速度:如果飞机对遥控指令反应迟钝,或者转弯后回正很慢,可能是 I 太大,也可能是 I 太小。怎么区分?看超调。有超调是 I 太大,没超调是 I 太小。
  4. 加限幅:所有积分输出都必须限幅。我一般把限幅值设为 P 项最大输出的 20%-30%。
  5. 条件积分:在误差很大时暂停积分,等误差减小到一定范围再恢复。这个技巧能有效防止起飞时的积分饱和。

一句话总结: I 值是把双刃剑。太小消除不了稳态误差,太大引发震荡和饱和。找到那个「刚刚好」的点,才是调参的真功夫。

我记得有一次在户外调试,风很大,飞机一直在 10 米高度上下飘。我试了好几个 I 值都不理想。后来我把 I 值减半,同时把限幅也减半,反而稳住了。有时候,少即是多。