2. 电机控制基础理论:永磁同步电机(PMSM)数学模型、Clark变换、Park变换

好,咱们进入正题。这一章讲的是电机控制的“内功心法”。你想想看,如果连电机怎么转的、电流怎么算的都不清楚,那后面的控制算法就是空中楼阁。我个人习惯,每次带新人做项目,第一件事就是让他们把PMSM的数学模型手推一遍。别觉得枯燥,这玩意儿搞透了,后面调参能省一半时间。

2.1 永磁同步电机(PMSM)的数学模型

PMSM,说白了就是转子上贴了永磁体的同步电机。它的定子跟普通异步电机差不多,但转子是永磁的,所以没有励磁电流,效率更高。我在做第一代电驱项目时,就吃过亏——把PMSM当异步电机处理,结果转矩算出来全是错的。

先看电压方程。在三相静止坐标系下,PMSM的电压方程长这样:

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

其中ψ_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、M_ab这些,它们不是常数!因为转子位置变化,磁路会变,电感也跟着变。
  • 永磁体磁链:ψ_f是永磁体产生的磁链,它跟转子位置θ_e有关。
  • 耦合严重:三相之间互相影响,A相电流变化会影响到B相和C相的磁链。

这就是为什么我们没法直接在三相坐标系下做控制——太复杂了!你想想看,一个方程里全是时变系数,怎么设计控制器?

核心结论:三相坐标系下的PMSM模型,是一个强耦合、非线性、时变的系统。直接控制?不现实。

2.2 Clark变换:从三相到两相

Clark变换,也叫3/2变换。它的思路很简单:把三个绕组的系统,等效成两个垂直绕组的系统。为什么是垂直?因为垂直的绕组之间没有互感,解耦了!

变换公式如下:

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

这里有个等幅值变换和等功率变换的区别。我个人习惯用等幅值变换,因为算出来的电流幅值跟实际一致,调试时看着直观。但如果你做功率计算,记得用等功率变换,系数要乘√(2/3)。

Clark变换的本质是什么?说白了,就是把三相120度分布的绕组,投影到两相90度分布的坐标系上。你想想看,三个向量投影到两个轴上,信息有没有丢失?

答案是:没有丢失!因为三相电流满足i_a + i_b + i_c = 0(星形连接,无中线),所以三个变量其实只有两个自由度。Clark变换正好提取了这两个自由度。

实战经验:我在调试一个电机控制器时,发现Clark变换后的i_α和i_β波形有直流偏置。查了半天,原来是电流传感器零点漂移。所以,做Clark变换前,一定要先做电流采样校准。

2.3 Park变换:从静止到旋转

Clark变换解决了“三相变两相”的问题,但i_α和i_β还是交流量——电机转起来,它们跟着正弦变化。这怎么控制?PID控制器对交流量的跟踪效果很差,因为有稳态误差。

Park变换就是来解决这个问题的。它把静止的α-β坐标系,旋转到跟转子同步的d-q坐标系上。这样一来,交流量就变成了直流量!

变换公式:

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

其中θ_e是转子电角度。这里要注意:θ_e必须准确!我见过一个项目,因为旋变解码芯片的零点没校准,导致Park变换后的d-q轴电流全是错的,电机一启动就过流保护。

经过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]

看到没?在d-q坐标系下,电压方程里只有d轴和q轴自己的项,加上一个交叉耦合项(ω_e * L_q * i_q和ω_e * L_d * i_d)。这比三相坐标系下那些乱七八糟的互感简单太多了!

关键理解:i_d控制励磁(磁通),i_q控制转矩。这就是“磁场定向控制”(FOC)的核心思想——把交流电机控制问题,变成了直流电机控制问题。

2.4 坐标变换的物理意义

我经常问新人一个问题:Clark变换和Park变换,到底改变了什么物理量?

答案是:什么都没改变。电流还是那个电流,电压还是那个电压。变换只是换了一个观察角度。

打个比方:你站在路边看一辆车,它在移动。你跳上另一辆车跟它并排行驶,再看它——它静止了。Clark+Park变换,就是让你从“站在路边看”变成“坐在转子上看”。

具体来说:

  • 三相静止坐标系:站在地面看三相绕组,电流是交流的。
  • 两相静止坐标系:还是站在地面,但只看两个垂直绕组,电流还是交流的。
  • 两相旋转坐标系:坐在转子上看,电流变成直流了。

这个“变直流”的好处太大了。你可以用PI控制器无静差地跟踪直流参考值,而且可以独立控制磁通和转矩。

避坑指南:我曾经在一个项目中,把Park变换的角度搞反了——用了-θ_e而不是θ_e。结果d轴和q轴的控制完全反了,i_d控制变成了转矩控制,i_q控制变成了励磁控制。电机抖得像筛子一样。所以,一定要确认你的变换方向跟电机模型一致。

2.5 完整的坐标变换流程

在实际的电机控制代码中,坐标变换的流程是这样的:

// 1. 采样三相电流 i_a, i_b, i_c
// 2. Clark变换:三相 -> 两相静止
i_alpha = i_a;
i_beta = (i_a + 2*i_b) / sqrt(3);  // 等幅值变换

// 3. 获取转子位置 θ_e(从旋变或编码器读取)
// 4. Park变换:两相静止 -> 两相旋转
i_d = i_alpha * cos(θ_e) + i_beta * sin(θ_e);
i_q = -i_alpha * sin(θ_e) + i_beta * cos(θ_e);

// 5. 在d-q坐标系下做PI控制,得到u_d_ref, u_q_ref
// 6. 反Park变换:两相旋转 -> 两相静止
u_alpha_ref = u_d_ref * cos(θ_e) - u_q_ref * sin(θ_e);
u_beta_ref = u_d_ref * sin(θ_e) + u_q_ref * cos(θ_e);

// 7. 反Clark变换(或直接SVPWM):两相静止 -> 三相
// 这里通常用SVPWM直接生成三相占空比

这个流程,我建议你背下来。每个做电机控制的工程师,脑子里都应该有这个流程图。

2.6 本章小结

嗯,这一章内容不少,但都是基础中的基础。我总结几个要点:

变换 作用 输入 输出
Clark变换 三相变两相,解耦 i_a, i_b, i_c i_α, i_β
Park变换 静止变旋转,交流变直流 i_α, i_β, θ_e i_d, i_q
反Park变换 旋转变静止,直流变交流 u_d, u_q, θ_e u_α, u_β

记住:Clark变换是基础,Park变换是核心。没有Clark,你没法解耦;没有Park,你没法做直流控制。两者缺一不可。

下一章,我们会讲SVPWM——怎么把u_α和u_β变成真正的三相电压。到时候你会发现,坐标变换的精度直接决定了SVPWM的效果。所以,这一章的基础一定要打牢。