4. 电流环PI控制:PI控制器原理、电流环解耦、PI参数整定方法、抗积分饱和实现
电流环,是电机控制三环中最内的一环,也是响应最快的一环。说白了,位置环和速度环的指令最终都要靠电流环去执行。如果电流环调不好,外面两环再漂亮也是空中楼阁。今天我们就来把电流环的PI控制彻底聊透。
4.1 PI控制器原理:从比例到积分
PI控制器,全称比例-积分控制器。它的输出由两部分组成:
- 比例项(P):对当前误差做出即时反应。误差大,输出就大;误差小,输出就小。但纯比例控制会有静差,也就是永远差那么一点点。
- 积分项(I):对过去误差的累积。只要误差存在,积分项就会一直增长,直到把静差消除。
数学表达式很简单:
u(t) = Kp * e(t) + Ki * ∫e(t)dt
其中 e(t) 是目标电流与实际电流的差值,Kp 是比例增益,Ki 是积分增益。
4.2 电流环解耦:为什么需要它?
在同步电机(PMSM)的dq坐标系下,d轴和q轴并不是独立的。你想想看,d轴电压方程里含有q轴电流项,q轴电压方程里也含有d轴电流项。这就是交叉耦合。
如果不做解耦,会出现什么情况?
- 你调节q轴电流(控制转矩),d轴电流会跟着波动。
- 你调节d轴电流(控制弱磁),q轴电流也会受影响。
- 两个环路互相干扰,调试起来非常痛苦。
解耦的核心思想很简单:把耦合项当作前馈补偿掉。
标准的解耦公式如下:
Vd_ref = Vd_pi - ω * Lq * Iq
Vq_ref = Vq_pi + ω * Ld * Id + ω * ψf
其中:
- Vd_pi、Vq_pi 是PI控制器输出的原始电压
- ω 是电角速度
- Ld、Lq 是d/q轴电感
- ψf 是永磁体磁链
4.3 PI参数整定方法:从理论到实战
参数整定是电流环调试中最磨人的环节。我常用的方法有三种,按推荐顺序排列:
4.3.1 基于带宽的整定法(推荐)
这种方法从系统带宽出发,直接计算出Kp和Ki。公式如下:
Kp = L * ω_bw
Ki = R * ω_bw
其中:
- L 是电机电感(d轴或q轴)
- R 是电机相电阻
- ω_bw 是你期望的电流环带宽(rad/s)
带宽怎么选?一般取PWM频率的1/10到1/20。比如10kHz的PWM,带宽可以设在500~1000Hz(约3140~6280 rad/s)。
4.3.2 试凑法(适合没有电机参数的场景)
如果你手头没有准确的电机参数,可以用试凑法:
- 先把Ki设为0,只调Kp。
- 逐渐增大Kp,直到电流响应出现临界振荡。
- 记录此时的Kp值,记为Kp_crit。
- 取Kp = 0.6 * Kp_crit,然后加入Ki。
- Ki从0开始增加,直到静差消除且不产生超调。
4.3.3 基于模型的自整定(进阶)
一些高端驱动器支持自动测量电机参数并计算PI参数。原理是注入高频信号,通过响应反推L和R,然后套用带宽法公式。这个方法我用的不多,因为大多数项目没有这个条件。
4.4 抗积分饱和实现:别让积分“飞”了
积分饱和,是电流环调试中最容易踩的坑之一。你想想看,当电流指令突然增大,PI输出会迅速达到电压限幅值。此时积分项还在继续累积,等电流误差反向时,积分项需要很长时间才能退回来,导致严重的超调甚至振荡。
常用的抗积分饱和方法有:
| 方法 | 原理 | 实现复杂度 | 效果 |
|---|---|---|---|
| 积分限幅法 | 给积分项设置上下限 | 低 | 一般 |
| 条件积分法 | 只在未饱和时积分 | 低 | 较好 |
| 反计算法 | 饱和时反向修正积分 | 中 | 优秀 |
| 积分分离法 | 误差大时停止积分 | 低 | 较好 |
我个人最推荐反计算法(Back-Calculation),实现起来也不复杂:
// 反计算法抗积分饱和
float pi_controller(float error, float *integral, float Kp, float Ki, float Kc, float limit) {
float output = Kp * error + *integral;
// 限幅
float output_sat = clamp(output, -limit, limit);
// 计算饱和差值
float diff = output_sat - output;
// 用饱和差值反向修正积分
*integral += Ki * error + Kc * diff;
return output_sat;
}
其中Kc是反计算增益,一般取1/Kp左右。这个方法的妙处在于:饱和时积分项会被“拉回来”,不会越积越大。
4.5 电流环PI控制知识体系
下面这张图总结了电流环PI控制的核心知识点和它们之间的关系:
4.6 实战中的几个坑
最后,分享几个我在项目中踩过的坑,希望能帮你少走弯路:
- 采样噪声放大:Kp太大时,电流采样中的噪声会被放大,导致PWM占空比抖动。建议在电流采样后加一阶低通滤波,截止频率设为电流环带宽的2~3倍。
- 积分项初始化:电机启动时,积分项应该从0开始。我见过有人忘了初始化,积分项残留了上次停机的值,一启动就冲出去。
- 参数切换平滑:如果要在运行中切换PI参数(比如弱磁区和非弱磁区),一定要做线性过渡,否则电流会突变。
- 电压前馈:在高速区,反电动势很大,PI控制器需要输出很高的电压。加上电压前馈可以减轻PI的负担,让响应更快。
电流环的调试没有捷径,但掌握了这些原理和方法,至少能让你少走弯路。嗯,今天就先聊到这里,剩下的我们实战中见。