2. 永磁同步电机(PMSM)在dq坐标系下的数学模型推导
做电机控制的人,绕不开一个核心问题:怎么把电机这个又复杂又耦合的系统,变得好控制?
三相PMSM在自然坐标系(abc)下的方程,你翻开课本一看,满篇都是时变系数、强耦合项。我当年第一次看到那堆公式,说实话,头都大了。后来老师跟我说了一句话,我记到现在:“别在abc里硬扛,转到dq坐标系去。”
这一节,我们就来把这件事彻底讲清楚。
2.1 为什么非要用dq坐标系?
先看一个事实:三相PMSM的定子电感,在abc坐标系下是转子位置θ的函数。也就是说,电机一转,电感就在变。你想想看,一个控制系统的被控对象参数一直在跳,这控制器还怎么设计?
我早期做项目时,曾经试图在abc坐标系下直接做电流环PI调节。结果呢?电流波形抖得跟心电图似的,转速一高就振荡。后来我才明白——不是PI不行,是坐标系没选对。
dq变换的核心思想,说白了就一句话:把交流量变成直流量。
通过坐标变换,我们把定子三相电流投影到与转子同步旋转的dq轴上。这样一来,原本随时间变化的电感矩阵变成了常数,电流环的PI控制器终于有了用武之地。
核心结论:dq坐标系下的PMSM模型,是矢量控制的数学基础。没有这个模型,FOC(磁场定向控制)就是空中楼阁。
2.2 坐标变换:从abc到dq
整个推导分两步走:
- Clark变换:把abc三相静止坐标系,变换到αβ两相静止坐标系。
- Park变换:把αβ静止坐标系,变换到dq旋转坐标系。
我习惯把Clark变换叫做“降维”,把Park变换叫做“旋转”。你记住这两个词,后面就好理解了。
2.2.1 Clark变换
假设三相电流对称(ia + ib + ic = 0),Clark变换的公式是:
iα = ia
iβ = (ia + 2*ib) / √3
如果三相不对称,就需要用完整的变换矩阵。不过在实际工程中,我们通常默认对称,因为电机设计本身就会保证这一点。
2.2.2 Park变换
这一步是关键。我们把αβ轴上的交流量,投影到以电角速度ωe旋转的dq轴上:
id = iα * cos(θe) + iβ * sin(θe)
iq = -iα * sin(θe) + iβ * cos(θe)
其中θe是转子电角度。你注意看,这个变换里用到了转子的位置信息。所以,没有准确的转子位置,dq变换就是错的——这也是为什么PMSM控制离不开位置传感器或者无位置传感器观测器。
我的经验:在实际代码里,我一般会把sin和cos提前算好,用查表法或者CORDIC算法。千万别在中断里实时算三角函数,那会吃掉你大量的CPU时间。
2.3 dq坐标系下的电压方程
好了,现在我们把变换做完,直接给出PMSM在dq坐标系下的电压方程:
ud = Rs * id + Ld * (did/dt) - ωe * Lq * iq
uq = Rs * iq + Lq * (diq/dt) + ωe * (Ld * id + ψf)
这里面每个符号的含义,我列个表:
| 符号 | 含义 | 单位 |
|---|---|---|
| ud, uq | d轴和q轴定子电压 | V |
| id, iq | d轴和q轴定子电流 | A |
| Rs | 定子相电阻 | Ω |
| Ld, Lq | d轴和q轴电感 | H |
| ωe | 电角速度 | rad/s |
| ψf | 永磁体磁链 | Wb |
你仔细看这个方程,会发现一个很有意思的现象:d轴和q轴之间,存在耦合项。
具体来说:
- d轴方程里多了一项
-ωe * Lq * iq - q轴方程里多了一项
+ωe * (Ld * id + ψf)
这就是所谓的反电动势耦合和交叉耦合。我在做电流环调试时,如果不做解耦补偿,你会发现id和iq互相打架——你调id,iq跟着抖;你压iq,id又飘了。
注意:对于表贴式PMSM(SPMSM),Ld = Lq,耦合项相对简单。但对于内置式PMSM(IPMSM),Ld < Lq,耦合效应更明显,必须做前馈解耦。
2.4 dq坐标系下的转矩方程
转矩方程,是电机控制的最终目标。在dq坐标系下,电磁转矩的表达式非常简洁:
Te = (3/2) * p * [ ψf * iq + (Ld - Lq) * id * iq ]
其中p是极对数。
这个公式可以拆成两部分:
- 永磁转矩:
(3/2) * p * ψf * iq—— 这部分只和iq有关,和id无关。 - 磁阻转矩:
(3/2) * p * (Ld - Lq) * id * iq—— 这部分利用了d轴和q轴电感的差异。
对于SPMSM,Ld = Lq,磁阻转矩为0,转矩只由iq控制。这时候你只要让id=0,就能获得最大转矩电流比(MTPA)。
但对于IPMSM,情况就不同了。我记得有一次做一款车用驱动电机,客户要求低速大扭矩。我一开始也用的id=0控制,结果扭矩就是上不去。后来改成MTPA控制,通过注入负的id来利用磁阻转矩,扭矩直接提升了15%。
一句话总结:IPMSM的id不是越小越好,合理利用负id可以“榨”出更多扭矩。
2.5 运动方程与状态空间模型
光有电磁方程还不够,我们还需要把机械部分加进来。完整的PMSM模型,还包括运动方程:
J * (dωm/dt) = Te - TL - B * ωm
其中:
- J:转动惯量(kg·m²)
- ωm:机械角速度(rad/s),ωm = ωe / p
- TL:负载转矩(N·m)
- B:粘滞摩擦系数(N·m·s/rad)
把电压方程、转矩方程和运动方程组合起来,就得到了PMSM在dq坐标系下的完整状态空间模型。写成矩阵形式:
d/dt [id; iq; ωm] =
[ -Rs/Ld, ωe*Lq/Ld, 0;
-ωe*Ld/Lq, -Rs/Lq, -ψf/Lq;
0, (3/2)*p*ψf/J, -B/J ]
* [id; iq; ωm]
+ [1/Ld, 0; 0, 1/Lq; 0, -1/J] * [ud; uq; TL]
这个模型,就是后面所有参数辨识算法的基础。你后面会看到,无论是离线辨识还是在线辨识,本质上都是在估计这个模型里的参数——Rs、Ld、Lq、ψf、J、B。
2.6 本章知识体系总览
为了让你对整个推导过程有一个全局的把握,我画了一张图:
从这张图你可以看到,整个推导是一个层层递进的过程。每一步变换,都在为后面的控制算法铺路。
2.7 一些实用建议
最后,结合我自己的项目经验,给你几个实操建议:
- 做仿真时,先用理想模型跑通。我见过太多人一上来就加各种非线性因素,结果模型发散都不知道问题出在哪。先把线性模型调稳,再逐步加入饱和、死区、谐波等效应。
- 注意单位一致性。电角度和机械角度千万别搞混。我有个同事,就因为把电角速度当机械角速度用,电流环相位裕度算出来全是负的,查了两天才找到原因。
- 参数辨识前,先确认模型结构。你是SPMSM还是IPMSM?Ld和Lq是否相等?这决定了你后面用哪种辨识算法。
一个小技巧:在实际系统中,如果你不确定电机的Ld和Lq是否相等,可以做一个简单的测试:给一个固定的id,然后看iq的响应速度。如果iq响应随id变化明显,那大概率是IPMSM。
好了,这一节的内容就到这里。dq坐标系下的数学模型,是后续所有参数辨识工作的基石。你把这个模型吃透了,后面学MTPA、弱磁控制、无传感器控制,都会轻松很多。