第三讲:经典PID控制及其局限
各位同学好,今天我们聊聊PID控制。说实话,PID这东西在工业界摸爬滚打这么多年,我敢说90%以上的运动控制回路里都有它的影子。但你要问我它是不是万能的?那肯定不是。今天我就把它的底细给大家掰扯清楚。
3.1 PID控制原理——三兄弟的配合
PID说白了就是三个环节的线性组合:比例、积分、微分。我习惯把它们比作三个性格迥异的兄弟:
- 比例(P):直性子,误差有多大,输出就有多大。反应快,但容易过头。
- 积分(I):记仇,误差只要存在就一直累积。能消除静差,但容易惹出震荡。
- 微分(D):预言家,看误差的变化趋势提前动作。能抑制超调,但对噪声敏感。
数学表达式很简单:
u(t) = Kp * e(t) + Ki * ∫e(τ)dτ + Kd * de(t)/dt
嗯,这里要注意一点——实际工程中我们用的都是离散化版本。我在项目中见过有人直接把连续公式套到数字控制器里,结果采样周期一长,系统直接发散。你想想看,这能不出问题吗?
3.2 参数整定方法——经验与套路
整定PID参数,说白了就是给三兄弟分配话语权。我这些年总结下来,常用的方法就这几类:
3.2.1 齐格勒-尼科尔斯法(Z-N法)
这是最经典的工程方法。我记得刚入行时,师傅教我的第一招就是这个。步骤很简单:
- 先把Ki和Kd设为零,只留Kp
- 慢慢增大Kp,直到系统出现等幅振荡
- 记录此时的临界增益Ku和振荡周期Tu
- 按经验公式计算参数
| 控制器类型 | Kp | Ki | Kd |
|---|---|---|---|
| P | 0.5Ku | - | - |
| PI | 0.45Ku | 1.2Kp/Tu | - |
| PID | 0.6Ku | 2Kp/Tu | Kp*Tu/8 |
我的经验:Z-N法整出来的参数往往偏激进。我在做伺服驱动器时,用Z-N法算出的Kp值通常要再打7折,系统才稳定。别迷信公式,最终还是要靠现场微调。
3.2.2 试凑法——老工程师的直觉
说实话,我到现在还是最常用试凑法。流程大概是:
- 先调P:让系统不震荡,但响应要快
- 再加I:消除静差,但别加太多,否则低频抖动
- 最后加D:抑制超调,但注意高频噪声会被放大
我曾经遇到一个案例:某精密平台定位精度要求1微米,用试凑法调了三天。最后发现是机械谐振频率刚好落在微分环节的放大区,把D项一关,反而好了。所以说,经验这东西,有时候比公式管用。
3.3 面对扰动时的性能瓶颈——PID的软肋
好了,前面说了PID这么多好话,现在该泼冷水了。PID最大的问题是什么?说白了就是:它不知道扰动来了,只能等误差出现了再反应。
3.3.1 负载突变——积分饱和的噩梦
想象一个场景:电机带着负载匀速运行,突然负载翻倍。PID会怎么反应?
- 误差瞬间增大,P项猛输出
- I项开始疯狂累积
- 等负载恢复时,I项已经积了一大堆,导致严重的超调
这就是经典的积分饱和问题。我在做机器人关节控制时吃过这个亏——六轴机器人突然抓起一个重物,结果另外五个轴全跟着抖。后来加了抗积分饱和(Anti-windup)才解决。
避坑指南:我曾经在高速贴片机项目里,因为没处理积分饱和,导致吸嘴在换料时直接撞到供料器。从那以后,我所有项目的PID都必加积分限幅和条件积分。
3.3.2 高频扰动——微分环节的致命伤
微分环节对噪声极其敏感。你想想看,如果反馈信号上有1mV的噪声,微分之后可能变成1V的输出。我见过有人把D增益调得很大,结果系统高频啸叫,跟杀猪似的。
解决办法?我一般会在微分前加一阶低通滤波:
// 带滤波的微分项实现
static float last_error = 0;
static float filtered_derivative = 0;
float alpha = 0.1; // 滤波系数
float derivative = (error - last_error) / dt;
filtered_derivative = (1-alpha) * filtered_derivative + alpha * derivative;
output += Kd * filtered_derivative;
last_error = error;
3.3.3 周期性扰动——PID的盲区
比如电机转一圈产生一次的位置波动,或者传送带的周期性张力变化。PID对这种同频扰动基本没辙——你想想看,误差信号本身就是周期性的,积分项跟着一起振荡,微分项更是火上浇油。
我当年做印刷机套准控制时,滚筒每转一圈就有0.1mm的误差。PID怎么调都消不掉,最后上了重复控制(Repetitive Control)才搞定。这个后面章节会详细讲。
3.4 总结——什么时候该放弃PID?
说了这么多,不是要否定PID。恰恰相反,PID在80%的场景下都是最优解。但如果你遇到以下情况,就该考虑更高级的控制策略了:
- 系统有大幅值、快变化的负载扰动
- 要求极高的动态响应(ms级)
- 存在强非线性或参数时变
- 需要抑制特定频率的周期性扰动
下一讲,我们就来聊聊如何用扰动观测器(DOB)来弥补PID的这些短板。说白了,就是给PID装上一双「预知未来的眼睛」。
核心要点回顾:
- PID三兄弟各有性格,P管快、I管准、D管稳
- 参数整定要结合公式和经验,别死搬硬套
- PID最大的局限是「被动响应」,无法主动抑制扰动
- 积分饱和、微分噪声、周期扰动是三大常见坑
好了,今天就到这里。有问题随时找我,咱们下节课见。