第1章 电机控制基础回顾:PMSM数学模型、坐标变换与SVPWM
各位工程师朋友,欢迎来到《电机控制性能优化实战》。我是你们这门课的主讲人。说实话,做了十几年电机控制,我见过太多人一上来就调PID参数,结果调了半天电流波形还是乱七八糟。为什么?因为基础没打牢。
这一章,咱们把永磁同步电机(PMSM)的三大基石捋一遍:数学模型、坐标变换、SVPWM。这些东西你理解了,后面的优化才有根。不然你连电流环为什么抖都找不到原因。
1.1 永磁同步电机的数学模型
先说说PMSM的数学模型。很多人觉得这东西就是一堆公式,背下来就行了。其实不然。我刚开始做电机控制时,也死记硬背过,结果一遇到弱磁控制就懵了。
PMSM的数学模型,说白了就是描述电机内部电磁关系的方程组。咱们最常用的是d-q轴数学模型。为什么用d-q轴?因为交流量变成了直流量,好控制。
核心公式:PMSM在d-q同步旋转坐标系下的电压方程
ud = Rs * id + Ld * (did/dt) - ωe * Lq * iq
uq = Rs * iq + Lq * (diq/dt) + ωe * (Ld * id + ψf)
这里:
- ud、uq:d轴和q轴电压
- id、iq:d轴和q轴电流
- Rs:定子电阻
- Ld、Lq:d轴和q轴电感
- ωe:电角速度
- ψf:永磁体磁链
嗯,这里要注意一个坑:Ld和Lq不一定相等。对于表贴式PMSM(SPMSM),Ld ≈ Lq;但对于内置式PMSM(IPMSM),Lq > Ld。这个差异直接决定了你是否能用磁阻转矩。
我的经验:做IPMSM控制时,千万别忽略Ld和Lq的差异。我曾经在一个项目中,直接用Ld = Lq去算MTPA(最大转矩电流比),结果效率比预期低了5%。后来查出来,就是电感参数没标定准。
再看转矩方程:
Te = 1.5 * p * [ψf * iq + (Ld - Lq) * id * iq]
这个公式很关键。第一项是永磁转矩,第二项是磁阻转矩。对于IPMSM,第二项可以利用起来,这就是MTPA控制的基础。
1.2 坐标变换:Clark变换与Park变换
坐标变换,说白了就是把三相交流量变成两相直流量。你想想看,三相电流是正弦波,PID控制器处理正弦波很费劲。但变成直流量后,用PI控制器就能做到无静差跟踪。
1.2.1 Clark变换(3s → 2s)
Clark变换把三相静止坐标系(a-b-c)变换到两相静止坐标系(α-β)。公式如下:
iα = ia
iβ = (ia + 2*ib) / √3
这里用了等幅值变换。我个人习惯用等幅值,因为电流采样值直接对应,调试时直观。
避坑指南:我曾经在一个项目中,Clark变换的系数写错了,用了等功率变换的系数。结果电流环的增益怎么调都不对,波形一直有静差。查了两天才发现是变换系数的问题。所以,务必确认你用的是等幅值还是等功率变换,两者系数差√(2/3)。
1.2.2 Park变换(2s → 2r)
Park变换把α-β坐标系变换到d-q旋转坐标系。需要用到转子位置角θe:
id = iα * cos(θe) + iβ * sin(θe)
iq = -iα * sin(θe) + iβ * cos(θe)
这里θe是电角度,不是机械角度。电角度 = 机械角度 × 极对数p。
我建议你把Clark和Park变换写成函数,调试时单独测试。我见过太多人把两个变换写在一起,结果出问题了都不知道是哪个环节的错。
1.3 SVPWM原理与实现
SVPWM(空间矢量脉宽调制)是电机控制的核心技术之一。它比SPWM的电压利用率高15%左右,谐波也更小。
1.3.1 基本原理
SVPWM的基本思想是:用八个基本电压矢量(六个非零矢量+两个零矢量)来合成任意方向和大小的电压矢量。
为什么会这样?因为逆变器只有六个开关管,只能产生八种开关状态。但我们可以通过在一个PWM周期内组合这些状态,来等效出任意电压矢量。
1.3.2 实现步骤
SVPWM的实现,我总结为四步:
- 判断扇区:根据Uα、Uβ计算Vref所在的扇区
- 计算作用时间:计算两个相邻非零矢量的作用时间T1、T2
- 计算占空比:根据T1、T2计算三相占空比Ta、Tb、Tc
- 生成PWM:将占空比写入定时器比较寄存器
这里我贴一段我常用的扇区判断代码,简洁高效:
// 扇区判断函数
uint8_t SVPWM_CalcSector(float Ualpha, float Ubeta)
{
uint8_t sector = 0;
float Vref1 = Ubeta;
float Vref2 = 0.866f * Ualpha - 0.5f * Ubeta;
float Vref3 = -0.866f * Ualpha - 0.5f * Ubeta;
if (Vref1 > 0) sector |= 0x01;
if (Vref2 > 0) sector |= 0x02;
if (Vref3 > 0) sector |= 0x04;
return sector;
}
我的习惯:扇区判断用查表法,比if-else快很多。把sector值映射到0-5,然后查表获取T1、T2的计算系数。这样在中断里执行,时间开销几乎可以忽略。
1.3.3 七段式与五段式SVPWM
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 七段式SVPWM | 谐波小,开关损耗较高 | 对谐波要求高的场合 |
| 五段式SVPWM | 开关损耗低,谐波略大 | 大功率、对效率敏感的场合 |
我个人在工业项目中,默认用七段式。除非客户明确要求降低开关损耗,我才换成五段式。你想想看,七段式每个扇区都从零矢量开始和结束,波形对称性好,电流谐波小。
我曾经踩过的坑:有一次做高速电机(20000rpm以上),PWM频率只有10kHz。七段式SVPWM在每个PWM周期内要切换7次开关状态,导致开关损耗太大,MOSFET发热严重。后来换成五段式,每个周期只切换5次,温度降了15°C。所以,高速应用务必评估开关损耗。
1.4 本章小结
这一章我们回顾了PMSM控制的三个基础:
- 数学模型:d-q轴电压方程和转矩方程,是后续所有控制算法的基础
- 坐标变换:Clark和Park变换,把交流量变成直流量,让PI控制成为可能
- SVPWM:用八个基本矢量合成任意电压矢量,是逆变器控制的核心
这些内容看起来基础,但每一个细节都可能成为你项目中的坑。我建议你花时间把Clark/Park变换的代码自己写一遍,把SVPWM的扇区判断和占空比计算推导一遍。基础打牢了,后面讲电流环优化、MTPA、弱磁控制时,你才能跟得上。