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

整个推导分两步走:

  1. Clark变换:把abc三相静止坐标系,变换到αβ两相静止坐标系。
  2. 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 本章知识体系总览

为了让你对整个推导过程有一个全局的把握,我画了一张图:

PMSM dq坐标系数学模型推导流程 PMSM dq坐标系数学模型推导流程 abc自然坐标系 Clark变换 αβ两相静止坐标系 Park变换 dq旋转坐标系 电压方程 ud, uq 表达式 转矩方程 Te 表达式 运动方程 ωm 动态方程 完整状态空间模型 参数辨识的数学基础 Rs, Ld, Lq, ψf, J, B

从这张图你可以看到,整个推导是一个层层递进的过程。每一步变换,都在为后面的控制算法铺路。

2.7 一些实用建议

最后,结合我自己的项目经验,给你几个实操建议:

  • 做仿真时,先用理想模型跑通。我见过太多人一上来就加各种非线性因素,结果模型发散都不知道问题出在哪。先把线性模型调稳,再逐步加入饱和、死区、谐波等效应。
  • 注意单位一致性。电角度和机械角度千万别搞混。我有个同事,就因为把电角速度当机械角速度用,电流环相位裕度算出来全是负的,查了两天才找到原因。
  • 参数辨识前,先确认模型结构。你是SPMSM还是IPMSM?Ld和Lq是否相等?这决定了你后面用哪种辨识算法。

一个小技巧:在实际系统中,如果你不确定电机的Ld和Lq是否相等,可以做一个简单的测试:给一个固定的id,然后看iq的响应速度。如果iq响应随id变化明显,那大概率是IPMSM。

好了,这一节的内容就到这里。dq坐标系下的数学模型,是后续所有参数辨识工作的基石。你把这个模型吃透了,后面学MTPA、弱磁控制、无传感器控制,都会轻松很多。