第三讲:经典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法)

这是最经典的工程方法。我记得刚入行时,师傅教我的第一招就是这个。步骤很简单:

  1. 先把Ki和Kd设为零,只留Kp
  2. 慢慢增大Kp,直到系统出现等幅振荡
  3. 记录此时的临界增益Ku和振荡周期Tu
  4. 按经验公式计算参数
控制器类型 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最大的局限是「被动响应」,无法主动抑制扰动
  • 积分饱和、微分噪声、周期扰动是三大常见坑

好了,今天就到这里。有问题随时找我,咱们下节课见。