3. 电流环PI参数整定:d-q轴电流解耦、PI参数计算与调试、抗饱和积分策略
各位同学,欢迎来到第三章。前两章我们把弱磁区的数学模型和电压约束讲清楚了。这一章,咱们要动真格的了——把电流环的PI参数整明白。
说实话,电流环调参是很多工程师的噩梦。我见过不少同行,在弱磁区折腾了好几天,电流就是稳不住。其实问题往往出在两个地方:一个是d-q轴之间的耦合没处理好,另一个是积分饱和在捣乱。今天咱们就把这两个坑填平。
3.1 d-q轴电流解耦:为什么非解不可?
先问一个问题:你给d轴电流指令加一个阶跃,q轴电流会不会动?
会。而且动得还挺厉害。
原因很简单。电机旋转时,d轴和q轴之间存在交叉耦合项。具体来说,d轴方程里藏着-ωeLqiq,q轴方程里藏着ωeLdid + ωeψf。这两个耦合项随着转速升高而增大。在弱磁区,转速本来就高,耦合效应会被放大。
我早期做项目时,就吃过这个亏。当时在5000rpm下调试,d轴电流指令一变化,q轴电流直接振荡了。我盯着示波器看了半天,才意识到是耦合项在作怪。
解耦的核心思想:把耦合项当作可测量的扰动,在前向通道中主动补偿掉。这样,d轴和q轴就能各自独立控制。
解耦公式其实不复杂:
// 电压前馈解耦项
u_d_decouple = -ω_e * L_q * i_q
u_q_decouple = ω_e * L_d * i_d + ω_e * ψ_f
// 最终输出电压指令
u_d_ref = u_d_PI + u_d_decouple
u_q_ref = u_q_PI + u_q_decouple
这里u_d_PI和u_q_PI是PI调节器的输出,u_d_decouple和u_q_decouple是前馈补偿项。两者相加,就是最终送给SVPWM的电压指令。
我的习惯:解耦用的电感参数Ld和Lq,建议用查表法。因为弱磁区电感变化很大,固定值解耦效果会打折扣。我一般在台架上测一条Ld(id, iq)曲线,存成二维表,运行时实时查表。
3.2 PI参数计算:从理论到工程
解耦做好之后,d轴和q轴就变成了两个独立的被控对象。这时候,我们可以用经典的控制理论来设计PI参数。
电流环的被控对象,说白了就是一阶惯性环节加一个纯积分:
G(s) = 1 / (R + sL)
其中R是定子电阻,L是d轴或q轴电感。闭环之后,我们希望电流环的带宽是ωcc(rad/s)。
按照零极点对消法,PI参数可以这样算:
// 比例增益
Kp = ω_cc * L
// 积分增益
Ki = ω_cc * R
举个例子。假设电机参数:R = 0.1Ω,Ld = 0.5mH,目标带宽ωcc = 2000 rad/s(约318Hz)。那么:
Kp_d = 2000 * 0.0005 = 1.0
Ki_d = 2000 * 0.1 = 200
q轴同理,只是电感换成Lq。
注意:这个公式是理论值,实际调试时通常需要微调。我曾经按公式算出来直接上机,结果电流环振荡了。后来发现是数字控制器的延迟效应没考虑进去。建议把Kp先打八折,再慢慢往上加。
带宽ωcc怎么选?我一般遵循两个原则:
- 上限:不超过开关频率的1/10。比如10kHz开关频率,带宽最多1000Hz(约6283 rad/s)。
- 下限:至少是速度环带宽的5~10倍。速度环带宽100Hz,电流环至少500Hz。
| 开关频率 (kHz) | 推荐电流环带宽 (Hz) | 对应 ωcc (rad/s) |
|---|---|---|
| 5 | 200~400 | 1257~2513 |
| 10 | 500~800 | 3142~5027 |
| 20 | 1000~1500 | 6283~9425 |
3.3 抗饱和积分策略:别让积分器“飞”了
积分饱和,是电流环调试中最隐蔽的问题之一。你想想看,当电压指令已经达到母线电压极限时,PI调节器的积分项还在继续累加。这时候,积分项里存了一大笔“债”。一旦电流反向,积分器需要很长时间才能把这笔债还清——这就造成了电流的超调和振荡。
在弱磁区,这个问题尤其严重。因为弱磁区本身就工作在电压极限边界上,积分器几乎时刻处于饱和边缘。
我常用的抗饱和策略有三种:
3.3.1 条件积分法
最简单粗暴的方法:当PI输出超过限幅值时,停止积分累加。
if (u_out >= u_max || u_out <= u_min) {
// 输出饱和,停止积分
integral = integral;
} else {
// 正常积分
integral += Ki * error * Ts;
}
这个方法实现简单,但有个缺点:退出饱和时可能不够平滑。
3.3.2 反计算法(Back-Calculation)
这是我在项目中用得最多的方法。思路是:当输出饱和时,把超出限幅的部分按一定比例反馈回积分器,让积分项主动退回来。
// 计算饱和差值
u_sat = u_out - u_limited;
// 反计算修正积分
integral += (Ki * error - Kc * u_sat) * Ts;
这里的Kc是反计算增益,一般取Kc = 1 / Kp。这样做的物理意义是:积分器的退绕速度与饱和深度成正比。
我的经验:反计算法的效果很稳定。我在一个800V高压项目上用过,弱磁区电流环的响应时间从原来的15ms降到了5ms。关键是参数好调,一个Kc搞定。
3.3.3 积分限幅法
给积分项单独设置一个限幅值,不让它无限累加。
integral = clamp(integral, -integral_max, integral_max);
积分限幅值怎么设?我一般取PI输出限幅值的80%~90%。比如电压限幅是200V,积分限幅就设160V~180V。
3.4 调试流程:从空载到满载
好了,理论讲完了。咱们说说实际调试的步骤。我一般按这个流程走:
- 空载调参:电机不转,只给d轴电流指令。用示波器看电流响应,调整Kp和Ki直到电流能快速跟踪且无超调。
- 低速加载:让电机转起来,转速500rpm左右。给q轴电流指令,观察d轴电流是否被扰动。如果扰动明显,检查解耦参数。
- 高速验证:逐步升速到弱磁区。观察电流环是否稳定,积分器是否饱和。如果出现振荡,优先检查抗饱和策略是否生效。
- 满载测试:在额定负载下,反复给电流阶跃指令。记录上升时间、超调量和稳态误差。
避坑指南:我曾经在高速调试时,发现电流环突然失控。查了半天,原来是ADC采样延迟导致的。C2000的ADC采样和PWM触发之间有时序关系,一定要确保电流采样点落在PWM载波的谷底或峰顶,避开开关噪声。
3.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以把它当作调试时的检查清单。
这张图把解耦、参数计算、抗饱和和调试流程串在了一起。你调试的时候,可以对照着检查:解耦做对了吗?参数算准了吗?积分饱和处理了吗?每一步都到位了,电流环自然就稳了。
好,这一章就到这里。记住,电流环是弱磁控制的基础。基础打牢了,后面弱磁区的电压约束和电流轨迹规划才能顺利展开。