3、PI控制器原理:比例环节、积分环节、PI控制器的传递函数

好,咱们进入电流环设计的核心——PI控制器。说实话,搞电机控制这么多年,PI控制器是我打交道最多的东西。你翻遍所有伺服驱动器的 datasheet,电流环清一色全是 PI。为什么?因为它简单、可靠、够用。

但简单归简单,很多人调了一辈子 PI,连比例和积分到底在干什么都没真正搞明白。今天我就带你把这层窗户纸捅破。

3.1 比例环节(P)—— 当下的反应

比例环节,说白了就是「看现在,干现在」。

它的数学表达式很简单:

u(t) = Kp * e(t)

其中 e(t) 是当前误差,Kp 是比例增益。输出 u(t) 正比于误差。

你想想看,如果电流指令是 10A,实际反馈只有 8A,误差就是 2A。比例环节会立刻输出一个正比于 2A 的控制量去推 PWM 占空比。误差越大,推得越狠。

比例环节的特点:

  • 响应快——误差一出现,立马有动作。这是它的最大优点。
  • 有静差——这是它的致命伤。为什么?因为要维持输出,必须要有误差存在。你想想,如果误差为零,比例输出就是零,那系统就停了。所以纯比例控制永远追不上目标值,总会差那么一点点。

关键认知:比例增益 Kp 越大,响应越快,静差越小。但 Kp 过大,系统会震荡甚至发散。我见过太多工程师一上来就把 Kp 拉到最大,结果电机嗡嗡响,电流波形像锯齿——那就是震荡了。

我在项目中遇到过一件事。有一次调试一个 2kW 的伺服驱动器,电流环 Kp 设得偏大,电机空载时还好,一带负载就开始尖叫。后来用示波器看电流波形,发现高频振荡。把 Kp 降了 30%,问题立刻消失。嗯,这就是比例环节的脾气——你不能太贪心。

3.2 积分环节(I)—— 过去的积累

积分环节解决的就是比例环节的静差问题。它的数学表达式:

u(t) = Ki * ∫ e(t) dt

积分环节不看「现在」,它看「过去」。它把过去所有的误差都累加起来,只要误差一直存在,积分值就会一直增长,直到把误差彻底消除。

你想想看,如果系统有 0.1A 的静差,比例环节可能已经无能为力了——因为误差太小,比例输出不足以推动系统。但积分环节会一点一点地累积这个 0.1A,时间长了,积分值越来越大,最终把静差吃掉。

积分环节的特点:

  • 消除静差——这是它的核心价值。没有积分,电流环永远有稳态误差。
  • 引入滞后——积分需要时间累积,所以响应会变慢。Ki 太大,系统容易超调甚至震荡。
  • 积分饱和——这是个大坑。当误差长期存在(比如电机堵转),积分值会一直涨到天上去。等你把误差消除,积分值还得慢慢降下来,这段时间系统完全失控。

避坑指南:我曾经在一个项目中忽略了积分饱和问题。电机堵转时电流指令 20A,实际电流被限在 30A,积分值疯狂增长。等堵转解除,积分值还高高在上,导致电流瞬间冲到 50A 以上,直接触发过流保护。从那以后,我每个 PI 控制器都必加抗积分饱和(Anti-Windup)。

3.3 PI控制器的传递函数

好了,把比例和积分合在一起,就是 PI 控制器。时域表达式:

u(t) = Kp * e(t) + Ki * ∫ e(t) dt

拉普拉斯变换后,得到传递函数:

G(s) = Kp + Ki / s

这个形式在工程中不太直观。我更习惯把它写成:

G(s) = Kp * (1 + 1 / (Ti * s))

其中 Ti = Kp / Ki,称为积分时间常数。Ti 的物理意义很明确:积分环节需要 Ti 秒才能产生与比例环节相同的输出。Ti 越小,积分作用越强。

参数 物理意义 增大效果 减小效果
Kp 比例增益 响应更快,静差更小,易震荡 响应变慢,静差变大
Ki 积分增益 消除静差更快,易超调 消除静差变慢
Ti 积分时间常数 积分作用减弱 积分作用增强

个人习惯:我调试电流环时,一般先调 Kp,让系统有足够的响应速度但不震荡。然后加一点 Ki 消除静差。Ki 从很小的值开始,慢慢往上加,直到电流稳态误差消失。记住,Ki 宁小勿大——积分大了,系统会「晃」。我见过有人把 Ki 调得比 Kp 还大,结果电流波形像心电图,一抖一抖的。

3.4 频域视角:PI控制器在做什么?

从频域看,PI 控制器的传递函数有一个零点和一个极点:

  • 极点 s=0——积分环节带来的,提供无穷大的低频增益。这就是为什么它能消除静差——直流误差被无限放大。
  • 零点 s = -Ki/Kp——用来抵消被控对象的极点,改善相位裕度。

说白了,PI 控制器在低频段提供高增益(保证精度),在高频段增益下降(保证稳定性)。这个特性正好匹配电流环的需求——我们需要精确跟踪直流或低频电流指令,同时抑制高频噪声。

你想想看,如果电流指令是 1kHz 的正弦波,PI 控制器还能跟上吗?嗯,这就要看你的带宽设计了。后面我会专门讲带宽,这里先留个悬念。

3.5 数字实现:离散化

在实际的 MCU 或 DSP 中,我们用的是离散 PI 控制器。最常见的实现是位置式 PI:

// 位置式 PI 控制器
float Kp = 0.5;
float Ki = 0.01;
float integral = 0;
float error_prev = 0;

float pi_controller(float setpoint, float feedback) {
    float error = setpoint - feedback;
    integral += error * Ts;  // Ts 是采样周期
    float output = Kp * error + Ki * integral;
    
    // 抗积分饱和
    if (output > OUTPUT_MAX) {
        output = OUTPUT_MAX;
        integral -= error * Ts;  // 反算积分
    } else if (output < OUTPUT_MIN) {
        output = OUTPUT_MIN;
        integral -= error * Ts;
    }
    
    return output;
}

注意:上面的抗积分饱和实现是简化版。实际项目中,我建议用条件积分法(Conditional Integration)——只在误差较小时才积分。这样能更有效地防止积分饱和。

还有一种增量式 PI,输出的是控制量的增量,而不是绝对值。增量式的好处是不会积分饱和,但需要额外的限幅处理。我个人更习惯位置式加抗积分饱和,逻辑更清晰。

3.6 小结

好了,总结一下今天的内容:

  • 比例环节——看现在,反应快,但有静差
  • 积分环节——看过去,消除静差,但会引入滞后
  • PI 控制器——两者结合,兼顾响应速度和稳态精度
  • 传递函数——G(s) = Kp + Ki/s,频域上低频高增益、高频低增益
  • 数字实现——别忘了抗积分饱和,这是工程落地的关键

下一章,我会讲电流环的带宽设计——这才是真正决定系统性能的核心。到时候你会明白,为什么 PI 参数不是随便调的,它和你的 PWM 频率、采样频率、电机电感都有关系。

嗯,今天就到这里。有问题随时找我。