4. PID 控制基础:比例、积分、微分与组合效果

聊到伺服调参,PID 是绕不开的核心。很多新手一上来就调 P、调 I、调 D,结果越调越乱。其实,搞懂这三个字母到底在干什么,比记住一组参数值重要得多。

我个人习惯把 PID 理解成三个“性格不同”的调节器。它们各自有脾气,组合在一起却能干出漂亮的活。今天我们就一个一个拆开看。

一句话总结:P 管“现在”,I 管“过去”,D 管“未来”。三者配合,才能让伺服轴跑得又快又稳。

4.1 比例控制(P)—— 最直接的“推一把”

比例控制,说白了就是“偏差越大,出力越大”。你设定位置是 100mm,现在实际在 80mm,差了 20mm。P 控制器就会输出一个和 20mm 成正比的力,把轴往目标推。

这个比例系数,我们叫 Kp。Kp 越大,推的力气越大,响应越快。但力气太大,就容易推过头——冲过目标,再拉回来,再冲过去……系统就开始震荡了。

我遇到过的一个案例:有一次调试一台贴片机,客户说轴总是“哆嗦”。我一看,Kp 设到了 80。对于那个负载来说,这就像用大锤砸鸡蛋。降到 25 之后,轴立刻安静了。

经验之谈:调 P 的时候,先把 I 和 D 设为 0。慢慢增大 Kp,直到系统开始出现轻微震荡,然后退回 60%~70%。这个点,通常就是 P 的“甜区”。

纯比例控制有个硬伤——稳态误差。比如你推一个箱子,摩擦力是 10N,你的 P 输出只有 8N,那箱子永远到不了目标位置,差那么一截。这时候,就需要 I 出场了。

4.2 积分控制(I)—— 专治“差一口气”

积分控制,看名字就知道,它是对偏差做积分。只要偏差还在,积分值就会一直累积。累积到一定程度,输出就会增加,直到把那个“差一口气”补上。

积分系数 Ki 决定了累积的速度。Ki 太大,积分值涨得太快,系统容易超调,甚至“积分饱和”——就是积分值已经大到离谱,偏差都反向了它还在使劲,导致系统大幅震荡。

我曾经踩过这个坑:调试一个大型转台,加了 I 之后,每次启动都会冲过头,然后来回晃好几下才稳住。后来发现是积分限幅没设,积分值在启动瞬间就爆了。加上限幅之后,问题解决。

注意:积分不是万能的。如果系统本身有死区或摩擦,积分可能会让轴在目标位置附近“爬行”或“来回找”。这时候,适当加一点死区补偿,或者用条件积分(只在偏差较小时才积分),效果会更好。

纯 P 控制有静差,加 I 能消除静差。但 I 会让系统变“懒”——响应变慢,容易超调。那有没有办法让系统提前“刹车”?有,就是 D。

4.3 微分控制(D)—— 提前踩刹车

微分控制,看的是偏差的变化趋势。偏差在快速增大?D 会输出一个反向力,阻止它继续增大。偏差在快速减小?D 也会输出一个力,防止它冲过头。

微分系数 Kd 越大,刹车力度越大。但 D 对噪声极其敏感。你想想看,如果位置反馈信号上有毛刺,微分一算,瞬间变化率巨大,控制器就会猛地抖一下。这就是为什么很多现场工程师干脆把 D 设为 0。

我的建议:除非你的系统对动态响应要求极高(比如高速点焊、飞剪),否则 D 可以不用,或者只用很小的值。我一般从 Kd = 0.1 * Kp 开始试,再根据波形微调。

避坑指南:如果反馈信号有噪声,先做滤波,再加 D。我曾经在一条包装线上吃过亏,没滤波直接加 D,结果电机高频啸叫,差点烧驱动器。后来加了一阶低通滤波,D 才正常工作。

4.4 PID 组合效果 —— 三个臭皮匠,顶个诸葛亮

单独看 P、I、D 各有短板,但组合起来,就能取长补短。下面这张图,是我自己总结的 PID 组合逻辑,你可以对照着理解。

PID 控制组合逻辑图 目标值 R(t) 实际值 Y(t) 偏差 e(t) = R - Y 比例 P · Kp 积分 I · Ki ∫e dt 微分 D · Kd de/dt ∑ 控制输出 U(t) 组合效果: P 快速响应,消除大部分偏差 I 消除稳态误差,但会降低响应 D 提前抑制趋势,改善动态性能

从图上可以看得很清楚:偏差 e(t) 同时送给 P、I、D 三个通道,各自算完后求和,得到最终的控制输出 U(t)。这个输出再送给驱动器,驱动电机运动。

实际应用中,我们很少用完整的 PID。根据现场需求,常见的有:

  • P 控制:要求不高、负载稳定的场合,比如简单的传送带定位。
  • PI 控制:最常用。P 保证响应,I 消除静差。90% 的伺服应用,PI 就够了。
  • PD 控制:对超调敏感、但允许有轻微静差的场合,比如张力控制。
  • PID 控制:高性能场合,比如高速高精度定位、机器人关节控制。

4.5 PID 参数对系统的影响 —— 一张表说清楚

调参的时候,你肯定想知道:调大 Kp 会怎样?调大 Ki 会怎样?下面这张表,是我多年调参经验的总结,建议你收藏。

参数 增大后的效果 副作用 我的建议
Kp ↑ 响应变快,稳态误差减小 超调增大,系统容易震荡 从 0 慢慢加,直到出现震荡再退回 60%
Ki ↑ 稳态误差消除更快 超调增大,响应变慢,可能积分饱和 先设一个较小的值,观察稳态误差消除时间
Kd ↑ 抑制超调,改善动态响应 对噪声敏感,可能引起高频抖动 先滤波,再从 Kp 的 0.1 倍开始试

重要提醒:参数之间会互相影响。比如你增大了 Kp,系统震荡了,然后你加 Kd 去压震荡,结果发现 I 又需要重新调。这就是为什么我建议“先调 P,再调 I,最后调 D”,而且每次只改一个参数。

最后分享一个我自己的调参口诀,虽然有点土,但很管用:

  • P 不够,响应慢;P 太大,来回窜。
  • I 不够,差一点;I 太大,冲上天。
  • D 不够,刹不住;D 太大,抖得欢。