4. 永磁同步电机(PMSM)数学模型:Clark变换、Park变换、电压方程、转矩方程、运动方程
好,咱们今天来啃一块硬骨头——PMSM的数学模型。说实话,我刚入行那会儿,看到这一堆变换和方程也头疼。但后来我发现,这东西就像学开车,你不需要懂发动机每个螺丝怎么拧,但得明白油门、刹车、方向盘怎么配合。
电机控制的核心,说白了就是三个字:解耦。把交流电机那种缠在一起的复杂关系,拆成两个独立的直流电机来控。怎么拆?靠的就是Clark和Park变换。
本章核心脉络:三相静止 → 两相静止(Clark) → 两相旋转(Park) → 得到直轴/交轴模型 → 写出电压/转矩/运动方程 → 在Simulink里搭出来。
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里搭建时,我建议按这个顺序来:
- 先搭运动方程,得到转速和位置
- 再搭电压方程,得到电流的微分
- 然后搭Clark和Park变换,把三相电流转成dq电流
- 最后搭转矩方程,把电流转成转矩,反馈给运动方程
这样形成一个闭环,电机模型就跑起来了。
小结一下:这一章我们干了三件事——Clark变换把三相变两相,Park变换把静止变旋转,然后在旋转坐标系下写出了电压、转矩和运动方程。这三板斧是PMSM矢量控制的基石。下一章我会带你在Simulink里把这些方程一个一个搭成模块,到时候你就知道,原来数学公式变成仿真模型,也就那么回事。