2、PMSM数学模型:从三相静止到dq旋转坐标系
大家好,欢迎来到第二章。这一章咱们要啃的,是PMSM无传感器控制的“地基”——数学模型。
说实话,我刚入行那会儿,觉得数学公式特别烦人。心想“我写代码就完了,搞这么复杂干嘛?”后来踩了坑才明白,模型不清,控制就是空中楼阁。你想想看,连电机怎么转的都不知道,怎么去估它的位置和速度?
所以,这一章我会带着大家,从最直观的三相静止坐标系出发,一步步推导到最常用的dq旋转坐标系。我会把我在项目中遇到的坑和心得,都揉进去讲。
2.1 三相静止坐标系模型(ABC模型)
这是最原始的模型。说白了,就是直接描述电机三相绕组里的电压、电流和磁链关系。
永磁同步电机的定子有三相绕组,空间上相差120度。转子呢,是一块永磁体。我们给三相绕组通电,就会产生旋转磁场,拉着转子转。
在三相静止坐标系(ABC坐标系)下,电压方程长这样:
u_a = R_s * i_a + d(ψ_a)/dt
u_b = R_s * i_b + d(ψ_b)/dt
u_c = R_s * i_c + d(ψ_c)/dt
其中,u_a、u_b、u_c是三相电压,i_a、i_b、i_c是三相电流,R_s是定子电阻,ψ_a、ψ_b、ψ_c是三相磁链。
磁链方程就复杂一些了,因为它包含了自感和互感,还有转子永磁体产生的磁链:
ψ_a = L_aa * i_a + M_ab * i_b + M_ac * i_c + ψ_f * cos(θ_e)
ψ_b = M_ba * i_a + L_bb * i_b + M_bc * i_c + ψ_f * cos(θ_e - 2π/3)
ψ_c = M_ca * i_a + M_cb * i_b + L_cc * i_c + ψ_f * cos(θ_e + 2π/3)
这里L_aa、L_bb、L_cc是自感,M_ab等是互感,ψ_f是永磁体磁链,θ_e是转子电角度。
核心问题:这个模型里,电感L和互感M都是随转子位置θ_e变化的!
这意味着什么?意味着方程是时变的,非常难解。你想想,每算一步都要更新一大堆电感值,实时控制根本跑不动。
我在做第一个无传感器项目时,就试图直接用这个模型做观测器。结果呢?代码跑得跟蜗牛一样,还经常发散。后来我才明白,必须做坐标变换,把时变系统变成时不变系统。
2.2 Clark变换:从三相到两相
Clark变换的目的,就是把ABC三相坐标系,变换到αβ两相静止坐标系。
为什么要这么做?因为三相系统本质上是一个平面旋转磁场,用三个坐标轴(ABC)描述太冗余了。用两个互相垂直的轴(αβ)就够了。
变换公式很简单(等幅值变换):
[i_α] [1, -1/2, -1/2 ] [i_a]
[i_β] = [0, √3/2, -√3/2] [i_b]
[i_c]
嗯,这里要注意,Clark变换有两种形式:等幅值变换和等功率变换。我个人习惯用等幅值变换,因为这样变换后的电流幅值跟实际三相电流幅值一样,调试起来更直观。
我的经验:在代码实现时,Clark变换只需要两个电流传感器(比如只测i_a和i_b),因为i_c = -i_a - i_b。这样可以省一个ADC通道,降低成本。
变换之后,αβ坐标系下的电压方程变成了:
u_α = R_s * i_α + L_s * di_α/dt - ω_e * ψ_f * sin(θ_e)
u_β = R_s * i_β + L_s * di_β/dt + ω_e * ψ_f * cos(θ_e)
这里L_s是定子电感(在表贴式PMSM中,L_d = L_q = L_s)。虽然方程简化了,但依然包含sin和cos项,还是时变的。
2.3 Park变换:从静止到旋转
Park变换才是真正的“杀手锏”。它把αβ静止坐标系,变换到dq旋转坐标系。
dq坐标系是跟着转子一起转的。d轴(直轴)指向转子磁极方向,q轴(交轴)超前d轴90度电角度。
变换公式:
[i_d] [cos(θ_e), sin(θ_e)] [i_α]
[i_q] = [-sin(θ_e), cos(θ_e)] [i_β]
反过来,逆Park变换:
[u_α] [cos(θ_e), -sin(θ_e)] [u_d]
[u_β] = [sin(θ_e), cos(θ_e)] [u_q]
关键点:经过Park变换后,在dq坐标系下看,电机模型变成了直流电机模型!
i_d和i_q变成了直流量,不再随转子位置正弦变化。这就是矢量控制的精髓所在。
2.4 dq旋转坐标系下的数学模型
好了,终于到了最常用的模型。在dq坐标系下,PMSM的电压方程是这样的:
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)
其中:
- u_d、u_q:d轴和q轴电压
- i_d、i_q:d轴和q轴电流
- L_d、L_q:d轴和q轴电感(对于表贴式PMSM,L_d = L_q;对于内置式PMSM,L_d < L_q)
- ω_e:电角速度
- ψ_f:永磁体磁链
电磁转矩方程:
T_e = 1.5 * p * [ψ_f * i_q + (L_d - L_q) * i_d * i_q]
这里p是极对数。注意看,转矩由两部分组成:
- 永磁转矩:1.5 * p * ψ_f * i_q —— 这是主要的,跟i_q成正比
- 磁阻转矩:1.5 * p * (L_d - L_q) * i_d * i_q —— 只有L_d ≠ L_q时才存在,内置式PMSM可以利用这个来提升效率
避坑指南:我曾经在调试一个内置式PMSM时,忽略了磁阻转矩项,结果算出来的转矩跟实际差了一大截。后来查了半天才发现,原来(L_d - L_q) * i_d * i_q这一项不能省!
对于表贴式PMSM(L_d = L_q),磁阻转矩为0,可以简化。但内置式的一定要保留。
2.5 状态空间方程
为了做无传感器控制(比如用观测器估测位置和速度),我们需要把dq模型写成状态空间方程的形式。
状态空间方程的标准形式:
dx/dt = A * x + B * u
y = C * x + D * u
对于PMSM,我们通常选择电流作为状态变量。以i_d和i_q为例:
d/dt [i_d] = [-R_s/L_d, ω_e * L_q/L_d] [i_d] + [1/L_d, 0 ] [u_d]
[i_q] [-ω_e * L_d/L_q, -R_s/L_q] [i_q] [ 0 , 1/L_q] [u_q]
+ [ 0 ]
[-ω_e * ψ_f/L_q]
写成矩阵形式更清晰:
状态向量 x = [i_d, i_q]^T
输入向量 u = [u_d, u_q]^T
输出向量 y = [i_d, i_q]^T(通常电流是可测量的)
A矩阵 = [[-R_s/L_d, ω_e * L_q/L_d],
[-ω_e * L_d/L_q, -R_s/L_q]]
B矩阵 = [[1/L_d, 0 ],
[ 0 , 1/L_q]]
C矩阵 = [[1, 0],
[0, 1]]
D矩阵 = [[0, 0],
[0, 0]]
注意:这个状态空间方程里,A矩阵包含了ω_e(转速信息)。这意味着,如果我们能通过某种方法(比如滑模观测器、扩展卡尔曼滤波器)从电流中反推出ω_e,就能实现无传感器控制。
说白了,无传感器控制的核心,就是利用这个模型,从可测量的电压和电流中,把不可测量的转子位置和速度“算”出来。
在实际项目中,我们通常会对这个模型进行离散化处理(比如用欧拉法或双线性变换),才能在数字处理器(DSP/MCU)上运行。
小结
这一章我们走完了从ABC到dq的完整推导路径。我个人觉得,理解这个变换过程,比死记硬背公式重要得多。你想想看,当你真正理解了“为什么dq模型是直流模型”,你就能明白为什么矢量控制这么好用。
下一章,我们会基于这个dq模型,开始讲具体的无传感器控制算法。到时候你会发现,今天打下的数学基础,全都会用上。
嗯,今天就到这里。有问题欢迎交流。