第1章:PMSM矢量控制基础
各位同学,咱们今天聊聊PMSM矢量控制的基础。说实话,我刚入行那会儿,也被这一堆坐标变换和PI参数搞得头大。但后来发现,只要把核心逻辑理清楚,这东西其实挺顺的。
1.1 id=0控制策略
id=0控制,说白了就是让电机的直轴电流保持为零。为什么要这么做?你想想看,永磁同步电机的转子本身就是永磁体,它自己就有磁场。如果我们再往直轴方向通电流,那就会产生额外的磁场,要么增强要么削弱。但在基速以下运行时,我们其实不需要这个额外的磁场。
我个人习惯把id=0控制理解为「让电机只出力,不内耗」。什么意思呢?就是所有电流都用来产生转矩,没有浪费在产生磁场上。这样效率最高,控制也最简单。
核心公式:
Te = 1.5 * p * [ψf * iq + (Ld - Lq) * id * iq]
当id=0时,公式简化为:
Te = 1.5 * p * ψf * iq
转矩与iq成正比,控制变得非常直观。
我在项目中遇到过一个问题:有次调试一台高速主轴电机,id=0控制下转矩响应总是慢半拍。后来发现是电流环带宽没调够,iq的跟踪速度跟不上指令。嗯,这里要注意,id=0虽然简单,但电流环的响应速度必须跟上。
1.2 转速环与电流环PI参数整定
PI参数整定,这可能是大家最头疼的部分。我刚开始做的时候,也是靠试凑法,调一整天都调不好。后来总结了一套方法,分享给大家。
电流环PI整定
电流环是内环,响应速度要快。一般我们按以下步骤来:
- 确定带宽:电流环带宽通常取开关频率的1/10到1/20。比如开关频率10kHz,带宽取500Hz到1kHz。
- 计算Kp:Kp = L * ωc,其中L是电感,ωc是带宽对应的角频率。
- 计算Ki:Ki = R * ωc,其中R是定子电阻。
我的经验:实际调试时,可以先给一个较小的Kp,然后慢慢增大,直到电流波形出现轻微振荡,再回调10%-20%。Ki也是类似,但Ki过大会导致稳态误差增大。
转速环PI整定
转速环是外环,响应速度要比电流环慢一个数量级。我建议:
- 转速环带宽取电流环带宽的1/5到1/10
- Kp主要影响响应速度,Ki主要消除稳态误差
- 先调Kp让转速能跟上指令,再加Ki消除静差
避坑指南:我曾经在调试一台大惯量负载时,转速环Kp给得太大,结果系统振荡得厉害,电机嗡嗡响。后来把Kp降了一半,又适当增加了Ki,才稳定下来。记住,大惯量系统Kp要小一些。
1.3 SVPWM调制原理
SVPWM,空间矢量脉宽调制。说白了,就是用八个基本电压矢量去合成任意方向的电压矢量。为什么不用传统的SPWM?因为SVPWM的电压利用率更高,能到15%的提升。
我画了一张图,帮大家理解SVPWM的核心逻辑:
SVPWM的实现步骤其实就三步:
- 判断扇区:根据Vα和Vβ的大小关系,判断目标矢量在哪个扇区
- 计算作用时间:计算两个相邻基本矢量的作用时间T1和T2
- 生成PWM波形:根据T1和T2,生成七段式或五段式PWM波形
关键代码片段(判断扇区):
// 判断扇区
if (Vbeta > 0) {
if (Valpha > 0) {
if (Valpha * sqrt(3) > Vbeta) sector = 1;
else sector = 2;
} else {
if (-Valpha * sqrt(3) > Vbeta) sector = 4;
else sector = 3;
}
} else {
if (Valpha > 0) {
if (Valpha * sqrt(3) > -Vbeta) sector = 6;
else sector = 5;
} else {
if (-Valpha * sqrt(3) > -Vbeta) sector = 3;
else sector = 4;
}
}
我的小技巧:实际工程中,判断扇区可以用查表法,速度更快。把Vα和Vβ的符号和大小关系编码成一个索引,直接查表得到扇区号。我在DSP上实测,查表法比条件判断快了将近30%。
好了,这一章的内容就这些。id=0控制是基础,PI整定是手艺活,SVPWM是实现手段。三者结合起来,就是PMSM矢量控制的骨架。下一章我们会深入弱磁控制,那才是真正考验功力的时候。