4. 永磁同步电机(PMSM)数学模型:Clark变换、Park变换、电压方程、转矩方程、运动方程

好,咱们今天来啃一块硬骨头——PMSM的数学模型。说实话,我刚入行那会儿,看到这一堆变换和方程也头疼。但后来我发现,这东西就像学开车,你不需要懂发动机每个螺丝怎么拧,但得明白油门、刹车、方向盘怎么配合。

电机控制的核心,说白了就是三个字:解耦。把交流电机那种缠在一起的复杂关系,拆成两个独立的直流电机来控。怎么拆?靠的就是Clark和Park变换。

本章核心脉络:三相静止 → 两相静止(Clark) → 两相旋转(Park) → 得到直轴/交轴模型 → 写出电压/转矩/运动方程 → 在Simulink里搭出来。

PMSM数学模型知识体系 PMSM数学模型知识体系 三相静止坐标系 (A, B, C) Clark 两相静止坐标系 (α, β) Park 两相旋转坐标系 (d, q) 电压方程 转矩方程 运动方程 为什么要做这些变换? • 三相系统耦合严重,控制复杂 • αβ坐标系减少一相,仍为交流量 • dq坐标系将交流量变为直流量 • 实现磁链和转矩的解耦控制 • 可以像控制直流电机一样控制PMSM

4.1 为什么需要坐标变换?

先想一个问题:三相交流电机的电压、电流、磁链,都是随时间正弦变化的。你直接去控制一个正弦量,PID调起来非常别扭——因为参考值本身就在变。我早期做项目时试过直接在三相坐标系下做PI控制,结果电流震荡得一塌糊涂。

后来前辈告诉我:把坐标系转到转子上去。转子在转,坐标系也跟着转,这样从转子角度看,那些正弦量就变成了恒定值。这就是Park变换的精髓。

而Clark变换是中间一步:先把三相(A,B,C)变到两相(α,β),为Park变换做准备。你想想看,三相比两相多了一维冗余,去掉它计算更简单。

4.2 Clark变换

Clark变换也叫3s/2s变换,把三相静止坐标系映射到两相静止坐标系。这里有个前提:三相系统是平衡的,也就是 iA + iB + iC = 0。

变换公式如下(等幅值变换):

i_α = i_A
i_β = (i_A + 2*i_B) / √3

写成矩阵形式更清楚:

[ i_α ]   [ 1      -1/2    -1/2  ] [ i_A ]
[ i_β ] = [ 0      √3/2   -√3/2 ] [ i_B ]
[ i_0 ]   [ 1/2    1/2     1/2   ] [ i_C ]

注意这个 i0 是零序分量,平衡系统里它恒为0,建模时可以忽略。

我的习惯:在Simulink里做Clark变换时,我一般直接用Fcn模块写公式,或者用Matrix Multiply模块。别用那个自带的Clark变换库——它默认是等功率变换,和等幅值变换差一个系数,容易搞混。

等幅值和等功率的区别,说白了就是:等幅值变换前后电流幅值不变,但功率会变;等功率变换功率不变,但幅值会变。我个人习惯用等幅值,因为调试时看电流波形更直观。

4.3 Park变换

Park变换把αβ坐标系旋转θe角度,得到dq坐标系。θe是转子电角度,由位置传感器(比如编码器)测得。

公式:

i_d =  i_α * cos(θ_e) + i_β * sin(θ_e)
i_q = -i_α * sin(θ_e) + i_β * cos(θ_e)

反过来,逆Park变换(dq→αβ)在SVPWM调制里要用:

i_α = i_d * cos(θ_e) - i_q * sin(θ_e)
i_β = i_d * sin(θ_e) + i_q * cos(θ_e)

我曾经踩过的坑:Park变换的角度θ_e是电角度,不是机械角度。PMSM的极对数p决定了电角度 = p * 机械角度。有一次我忘了乘极对数,结果电流环完全失控,电机嗡嗡响就是不转。查了两天才发现是角度错了。

做完Park变换,id和iq就变成了直流量。这时候你再用PI控制器去跟踪,效果会好很多。

4.4 dq坐标系下的电压方程

好了,现在坐标系已经转到转子上了。PMSM在dq坐标系下的电压方程长这样:

u_d = R_s * i_d + L_d * di_d/dt - ω_e * L_q * i_q
u_q = R_s * i_q + L_q * di_q/dt + ω_e * (L_d * i_d + ψ_f)

其中:

  • Rs:定子电阻
  • Ld, Lq:直轴和交轴电感
  • ωe:电角速度(ωe = p * ωm)
  • ψf:永磁体磁链

注意看,ud方程里多了一项 -ωeLqiq,uq方程里多了一项 +ωe(Ldid+ψf)。这两项叫反电动势项或者耦合项。它们把d轴和q轴耦合在了一起——你调id会影响uq,调iq会影响ud。

解耦思路:在控制器里加上前馈补偿,把耦合项抵消掉。比如在ud的参考值里加上 +ωeLqiq,在uq的参考值里减去 -ωe(Ldid+ψf)。这样d轴和q轴就独立了,可以分别设计PI参数。

4.5 转矩方程

PMSM的电磁转矩公式:

T_e = 1.5 * p * [ ψ_f * i_q + (L_d - L_q) * i_d * i_q ]

这个公式很有意思,它包含两部分:

  • ψf * iq:永磁转矩,和iq成正比。这是主要转矩来源。
  • (Ld - Lq) * id * iq:磁阻转矩,利用d轴和q轴电感差异产生。对于内置式PMSM(IPMSM),Ld < Lq,这个差值为正,可以贡献额外转矩。

对于表贴式PMSM(SPMSM),Ld ≈ Lq,磁阻转矩项几乎为零。这时候转矩只和iq有关,控制更简单——你只需要让id = 0就行。

我个人的经验:做SPMSM控制时,id=0是最常用的策略。但做IPMSM时,我会用最大转矩电流比(MTPA)控制,主动注入负的id来利用磁阻转矩,同样的电流能输出更大转矩。这个后面章节会细讲。

4.6 运动方程

最后是运动方程,它把电磁转矩和机械运动联系起来:

J * dω_m/dt = T_e - T_L - B * ω_m

其中:

  • J:转动惯量(包括电机转子和负载)
  • ωm:机械角速度
  • TL:负载转矩
  • B:阻尼系数(摩擦系数)

这个方程说白了就是牛顿第二定律的旋转版本:惯量 × 角加速度 = 合转矩。在Simulink里,我通常用一个积分器来实现:输入是角加速度,输出是转速,再积分一次得到位置。

注意:转动惯量J的单位是kg·m²,不是g·cm²。我见过有人把单位搞错,结果仿真出来的加速时间差了1000倍。做仿真前先确认单位,这个习惯能省很多排查时间。

4.7 完整的PMSM数学模型

把上面所有方程串起来,就得到了PMSM在dq坐标系下的完整数学模型。我习惯把它画成一个框图:

模块 输入 输出 关键参数
Clark变换 iA, iB, iC iα, iβ 无(固定变换矩阵)
Park变换 iα, iβ, θe id, iq θe = p × θm
电压方程 id, iq, ωe ud, uq Rs, Ld, Lq, ψf
转矩方程 id, iq Te p, Ld, Lq, ψf
运动方程 Te, TL ωm, θm J, B

在Simulink里搭建时,我建议按这个顺序来:

  1. 先搭运动方程,得到转速和位置
  2. 再搭电压方程,得到电流的微分
  3. 然后搭Clark和Park变换,把三相电流转成dq电流
  4. 最后搭转矩方程,把电流转成转矩,反馈给运动方程

这样形成一个闭环,电机模型就跑起来了。

小结一下:这一章我们干了三件事——Clark变换把三相变两相,Park变换把静止变旋转,然后在旋转坐标系下写出了电压、转矩和运动方程。这三板斧是PMSM矢量控制的基石。下一章我会带你在Simulink里把这些方程一个一个搭成模块,到时候你就知道,原来数学公式变成仿真模型,也就那么回事。