2. 电机数学模型:永磁同步电机(PMSM)的数学模型与坐标变换(Clark/Park)

做无感启动,绕不开数学模型。说白了,你得先知道电机内部是怎么“想”的,才能去控制它。

我刚开始接触 PMSM 时,看着那一堆微分方程和矩阵变换,头都大了。后来发现,其实核心就两件事:把交流量变成直流量,以及搞清楚电压和电流怎么产生力矩。今天咱们就把这两件事彻底聊透。

2.1 为什么需要数学模型?

三相永磁同步电机的定子绕组里,通的是三相正弦交流电。转子呢?是永磁体。你想想看,如果直接在三相静止坐标系(ABC 坐标系)下分析,电压、电流、磁链都是随时间正弦变化的,耦合关系非常复杂。

我早期做调试时,试过直接在 ABC 坐标系下写控制算法,结果发现 PI 调节器根本调不好——因为被控量是正弦波,PI 对正弦波跟踪天生就有静差。嗯,这里要注意:我们需要的是一套能把交流量“掰直”的数学工具。

核心思想:通过坐标变换,将三相静止坐标系下的正弦量,等效为两相旋转坐标系下的直流量。这样就能用经典的 PI 控制,像控制直流电机一样控制永磁同步电机。

2.2 三相静止坐标系下的 PMSM 模型

先看原始模型。虽然我们最终不会用它直接写控制代码,但它是所有变换的起点。

电压方程(矩阵形式):

[u_a]   [R_s  0    0   ] [i_a]   [ψ_a]
[u_b] = [0    R_s  0   ] [i_b] + d/dt [ψ_b]
[u_c]   [0    0    R_s] [i_c]   [ψ_c]

磁链方程:

[ψ_a]   [L_aa  L_ab  L_ac] [i_a]   [ψ_f * cos(θ_e)          ]
[ψ_b] = [L_ba  L_bb  L_bc] [i_b] + [ψ_f * cos(θ_e - 2π/3)    ]
[ψ_c]   [L_ca  L_cb  L_cc] [i_c]   [ψ_f * cos(θ_e + 2π/3)    ]

其中:

  • u_a, u_b, u_c:三相相电压
  • i_a, i_b, i_c:三相相电流
  • R_s:定子电阻
  • ψ_f:永磁体磁链(转子磁链)
  • θ_e:转子电角度
  • L_aa, L_bb, L_cc:自感(随转子位置变化)
  • L_ab, L_bc, L_ca:互感(也随转子位置变化)

注意:这里的电感和转子位置强相关。如果你直接拿这个模型去算,每个控制周期都要重新计算电感矩阵,计算量非常大。这也是为什么我们必须做坐标变换——把时变参数变成常数。

2.3 Clark 变换:3 相 → 2 相

Clark 变换,也叫 3/2 变换。它的目标是把三相(A, B, C)变成两相(α, β)。

为什么是两相?因为三相系统本质上只有两个自由度(三相电流之和为零)。

我个人习惯使用等幅值变换,因为这样变换后的电流幅值和实际相电流幅值一致,调试时更容易对应。

变换公式:

[i_α]   [1      -1/2    -1/2  ] [i_a]
[i_β] = [0      √3/2   -√3/2 ] [i_b]
                                [i_c]

反变换(逆 Clark):

[i_a]   [1        0      ] [i_α]
[i_b] = [-1/2     √3/2   ] [i_β]
[i_c]   [-1/2    -√3/2   ]

我在项目中遇到过一个问题:ADC 采样三相电流时,某一相偶尔会跳变。如果直接做 Clark 变换,跳变会直接污染 α-β 轴。后来我加了一相重构逻辑——利用 i_a + i_b + i_c = 0 来校验和修正,效果很好。

小技巧:实际代码中,Clark 变换通常用查表或定点数实现,避免浮点运算。但前期调试阶段,用浮点更直观。

2.4 Park 变换:静止 → 旋转

Clark 变换后,我们得到了 α-β 静止坐标系。但 α-β 轴上的电流仍然是正弦波(频率等于电频率)。

Park 变换的作用,就是把这个静止坐标系“旋转”起来,让它跟着转子一起转。旋转后的坐标系叫 d-q 坐标系。

变换公式:

[i_d]   [cos(θ_e)   sin(θ_e)] [i_α]
[i_q] = [-sin(θ_e)  cos(θ_e)] [i_β]

反变换(逆 Park):

[i_α]   [cos(θ_e)  -sin(θ_e)] [i_d]
[i_β] = [sin(θ_e)   cos(θ_e)] [i_q]

这里 θ_e 就是转子电角度。在无感控制中,这个角度是我们通过观测器估算出来的,不是直接测量的。

为什么要做 Park 变换?因为变换之后,i_d 和 i_q 变成了直流量。你可以把它们理解为:

  • i_d:励磁分量(产生磁场,但永磁体已经有了,所以通常控制为 0)
  • i_q:转矩分量(产生力矩,你想要的加速、减速全靠它)

我曾经犯过一个低级错误:Park 变换的角度符号搞反了。结果电机一启动就往反方向转,还以为是观测器有问题。排查了半天才发现是变换矩阵里的正负号写错了。嗯,这里提醒你:一定要确认你的角度定义是“d 轴对齐转子磁极”还是“q 轴对齐”,不同文献可能定义不同。

2.5 d-q 坐标系下的 PMSM 模型

经过 Clark + Park 变换后,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)

电磁转矩方程:

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

其中:

  • L_d, L_q:d 轴和 q 轴电感(现在是常数!)
  • ω_e:电角速度
  • p:极对数
  • T_e:电磁转矩

关键洞察:从转矩方程可以看出,PMSM 的转矩由两部分组成:

  • ψ_f * i_q:永磁转矩(主转矩,和 i_q 成正比)
  • (L_d - L_q) * i_d * i_q:磁阻转矩(只有凸极电机 L_d ≠ L_q 时才存在)

这也是为什么表贴式 PMSM(L_d ≈ L_q)通常用 i_d = 0 控制,而内置式 PMSM(L_d < L_q)可以用负 i_d 来利用磁阻转矩,提高效率。

2.6 坐标变换的完整流程

把整个变换串起来,就是无感 FOC 的数学基础:

三相电流 (i_a, i_b, i_c)
    ↓ Clark 变换
两相静止电流 (i_α, i_β)
    ↓ Park 变换(需要转子角度 θ_e)
两相旋转电流 (i_d, i_q)
    ↓ PI 调节器(控制 i_d, i_q 到目标值)
两相旋转电压 (u_d_ref, u_q_ref)
    ↓ 逆 Park 变换
两相静止电压 (u_α_ref, u_β_ref)
    ↓ 逆 Clark 变换 + SVPWM
三相占空比 (Ta, Tb, Tc) → 驱动逆变器

下面这张图展示了整个坐标变换与 FOC 控制的核心链路:

PMSM 坐标变换与 FOC 控制链路 三相电流采样 Clark 变换 Park 变换 PI 调节器 逆 Park 变换 逆 Clark + SVPWM 三相逆变器 角度/速度观测器 θ_e, ω_e 说明: 整个链路的核心是将三相交流量转换为 d-q 直流量进行 PI 控制,再通过逆变换还原为三相占空比。角度观测器的精度直接影响 Park 变换和逆 Park 变换的正确性。

2.7 参数辨识与模型误差

数学模型再漂亮,如果参数不准,控制效果也会大打折扣。我在实际项目中遇到过几个常见问题:

参数 常见误差来源 影响
R_s 温度变化(铜损发热) 低速时电压计算偏差,影响启动性能
L_d, L_q 磁路饱和(大电流时电感下降) 高速弱磁时电流环震荡
ψ_f 温度变化(永磁体退磁) 反电动势估算不准,影响无感观测器

避坑指南:我曾经在批量生产时发现,同一批电机测出来的 L_q 差异达到 15%。如果所有电机都用同一套参数,部分电机会出现电流环啸叫。后来我加了一个在线参数辨识的步骤——在电机静止时注入高频信号,实时辨识 L_d 和 L_q,问题才解决。

2.8 小结

这一章的内容,说白了就是三件事:

  • Clark 变换:把三相变成两相,减少变量
  • Park 变换:把静止变成旋转,把交流变成直流
  • d-q 模型:用两个直流量(i_d, i_q)就能完全控制电机

这些变换本身不复杂,但角度精度、参数准确性、采样同步性都会影响最终效果。后面几章我们会基于这个模型,一步步搭建无感启动的完整算法链路。