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 组合逻辑,你可以对照着理解。
从图上可以看得很清楚:偏差 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 太大,抖得欢。