2. 电机模型基础:永磁同步电机数学模型、Clark变换与Park变换、反电动势观测原理

做无感控制,说白了就是跟电机模型打交道。你连电机怎么转的都不清楚,那后面的观测器、启动策略全是空中楼阁。这一章咱们把最核心的三个东西捋清楚:数学模型、坐标变换、反电动势观测。我当年刚入门时,就是在这块吃了不少亏,所以今天把经验直接给你。

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

先看电机本身。永磁同步电机(PMSM)的定子跟异步机差不多,但转子上贴了永磁体。这就导致它的数学模型比直流电机复杂不少。嗯,咱们从电压方程和磁链方程入手。

2.1.1 三相静止坐标系下的方程

在三相(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

其中 ψ_a、ψ_b、ψ_c 是各相磁链,包含自感和互感,还有转子永磁体贡献的部分。这个方程本身不难,但麻烦在于——电感是随转子位置变化的。你想想看,转子转一个角度,磁路就变一次,电感矩阵里全是 cos(2θ) 这种项。直接拿这个模型做控制,计算量太大,而且物理意义不直观。

核心问题:三相模型强耦合、时变,不适合实时控制。必须做坐标变换,把变量解耦。

2.1.2 为什么需要坐标变换?

我在项目中遇到过一件事:早期用三相模型直接做电流环,参数整定整得我头大。后来发现,其实电机控制界的共识就是——把交流电机等效成直流电机来控。怎么做?通过坐标变换,把三相静止的交流量,变成两相旋转的直流量。这样一来,电流环就可以用 PI 控制器轻松搞定。

2.2 Clark变换与Park变换

坐标变换分两步走:Clark 变换把三相变两相静止,Park 变换把两相静止变两相旋转。咱们一个一个说。

2.2.1 Clark变换(3s/2s)

Clark 变换的数学表达式:

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_c]

这里有个小细节:我习惯用等幅值变换,也就是变换前后电流幅值不变。还有一种等功率变换,系数不同。你在做无感算法时,一定要确认自己用的是哪种,不然观测器增益算出来全是错的。我曾经在这个坑里爬了两天。

个人习惯:无感控制里,我推荐用等幅值 Clark 变换。这样反电动势观测出来的幅值直接对应物理量,调试时方便很多。

2.2.2 Park变换(2s/2r)

Park 变换把 αβ 坐标系旋转到 dq 坐标系,旋转角度就是转子位置 θ:

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

反过来,逆 Park 变换用于把 dq 电压变回 αβ:

u_α = u_d * cos(θ) - u_q * sin(θ)
u_β = u_d * sin(θ) + u_q * cos(θ)

你看,经过这两步变换,原来三相交流的 i_a、i_b、i_c,变成了直流的 i_d 和 i_q。i_d 控制励磁,i_q 控制转矩,完全解耦。这就是矢量控制的精髓。

2.2.3 变换的物理意义

我打个比方:Clark 变换就像把三根绳子拧成两根,但绳子还在原地晃;Park 变换就像你跟着绳子一起转,这样在你眼里绳子就不动了。无感控制的核心,就是估计出这个“跟着转”的角度 θ。

下面这张图展示了整个变换流程:

坐标变换与反电动势观测流程 三相电流 i_a, i_b, i_c Clark变换 3s → 2s αβ电流 i_α, i_β Park变换 2s → 2r dq电流 i_d, i_q 反电动势观测器 E_α, E_β 角度估计 θ̂ = atan2(-E_α, E_β) θ̂ 反馈给Park变换 说明:无感控制的核心闭环——电流经Clark/Park变换后,送入观测器估计反电动势, 再通过反电动势计算转子角度,最后将角度反馈给Park变换,形成自同步。

2.3 反电动势观测原理

好,现在到了无感控制最核心的部分——怎么在没有位置传感器的情况下知道转子位置?答案就是观测反电动势。

2.3.1 反电动势从哪来?

电机转起来后,永磁体旋转会在定子绕组里感应出电压,这就是反电动势。在 αβ 坐标系下,PMSM 的电压方程可以写成:

u_α = R_s * i_α + L_s * di_α/dt + E_α
u_β = R_s * i_β + L_s * di_β/dt + E_β

其中 E_α 和 E_β 就是反电动势,它们包含转子位置信息:

E_α = -ψ_f * ω_e * sin(θ_e)
E_β =  ψ_f * ω_e * cos(θ_e)

你看,只要知道 E_α 和 E_β,转子角度 θ_e 就能算出来:

θ_e = atan2(-E_α, E_β)

注意:这个公式在零速和低速时不好使。因为 ω_e 接近 0 时,反电动势幅值也接近 0,信噪比极差。这就是为什么无感启动需要特殊策略——零速时反电动势观测器基本失效。

2.3.2 怎么观测反电动势?

实际中我们没法直接测量反电动势,只能通过电压和电流来估计。最常用的方法是滑模观测器(SMO)或龙伯格观测器。以滑模观测器为例,它的思路是:

  1. 构建电流误差方程:用估计电流减去实际电流,得到误差。
  2. 滑模面控制:通过符号函数(sign)或饱和函数,迫使误差收敛到 0。
  3. 提取反电动势:滑模控制的输出经过低通滤波,就是反电动势估计值。

代码实现大致长这样:

// 滑模观测器核心代码(伪代码)
// 电流估计
i_α_est += (u_α - R_s*i_α_est - z_α) * Ts / L_s;
i_β_est += (u_β - R_s*i_β_est - z_β) * Ts / L_s;

// 电流误差
err_α = i_α_est - i_α;
err_β = i_β_est - i_β;

// 滑模控制
z_α = K_smo * sign(err_α);
z_β = K_smo * sign(err_β);

// 低通滤波提取反电动势
E_α += (z_α - E_α) * ω_c * Ts;
E_β += (z_β - E_β) * ω_c * Ts;

避坑指南:我曾经把滑模增益 K_smo 设得太小,结果观测器在高频时根本锁不住。后来总结了一个经验——K_smo 至少要大于反电动势峰值,一般取 1.5~2 倍。另外,低通滤波的截止频率 ω_c 要跟电机转速匹配,太低了相位滞后严重,太高了滤波效果差。

2.3.3 反电动势观测的局限性

说实话,反电动势观测法不是万能的。我列几个实际项目中容易踩的坑:

问题 原因 影响
零速/低速失效 反电动势幅值正比于转速 无法启动,需要开环强拖或高频注入
参数敏感 R_s 和 L_s 随温度变化 观测误差增大,角度偏移
滤波延迟 低通滤波引入相位滞后 高速时角度估计滞后,影响效率
谐波干扰 逆变器死区、电机齿槽效应 反电动势波形畸变,角度抖动

嗯,这些问题咱们在后面的章节都会逐一解决。比如低速启动用 I/F 强拖,参数变化用在线辨识补偿,滤波延迟用相位补偿或锁相环(PLL)来修正。

2.4 本章小结

这一章咱们把无感控制的数学基础过了一遍。你记住三条线:

  • 数学模型:三相电压方程 → 强耦合时变 → 需要变换
  • 坐标变换:Clark(3s→2s)+ Park(2s→2r)→ 解耦成直流
  • 反电动势观测:从电压电流中估计 E_α、E_β → 算出角度 θ