1. 问题背景
当永磁同步电机(PMSM)的转速升高时,反电势随之增大,定子电压逐渐逼近逆变器所能提供的最大电压。此时,系统难以继续运行在最大转矩电流比(MTPA)曲线上,必须进入弱磁(Field Weakening)区域。
然而,弱磁运行点并不一定恰好落在电压极限圆上,而是在圆内的某个位置。为了在高速弱磁区获得最佳的电压利用率,需要引入最大转矩电压比(MTPV)控制。这就带来了两个关键问题:
- 弱磁运行点究竟在哪里?
- 控制器如何从 MTPA 平滑切换到弱磁,再过渡到 MTPV?
本文基于 motulator 开源库中的同步电机参考生成器源码,系统分析 MTPV 的数学原理、实现细节以及 MTPA → 弱磁 → MTPV 的切换逻辑。
2. MTPV 在 motulator 中的实现
2.1 数学条件:dτ / dψ_s = 0
MTPV 的核心思想是:在磁链幅值 |ψ_s| 受电压限制的条件下,寻找能产生最大电磁转矩的电流工作点。其数学条件可表述为:
∂τ_M / ∂δ |_{|ψ_s|=const} = 0
其中 δ 是磁链矢量在 dq 坐标系中的角度。换言之,对于每一个固定的磁链圆,MTPV 给出了转矩最大的那个点。
2.2 辅助电流 ψ_b(i_a)的定义与推导
motulator 采用 Varatharajan 等人提出的辅助电流(auxiliary current)概念,将 MTPV 条件写成与 MTPA 对偶的正交形式:
Re(i_a · ψ_s*) = 0
辅助电流 i_a 的定义式(来自 _parameters.py 中的 aux_current())为:
i_a = (G_qq·ψ_d + j·G_dd·ψ_q) - j·G_dq·ψ_s* - i_s
其中 G = L_s^{-1} 是增量电感矩阵的逆。对于线性不饱和电机(L_dq = 0),该式可简化为:
i_a = ψ_f/L_q + i_d·(L_d/L_q - 1) + j·i_q·(L_q/L_d - 1)
将其代入正交条件 Re(i_a · ψ_s*) = 0,即可得到 IPMSM 的经典 MTPV 双曲线方程。
2.3 compute_mtpv_locus() 的 Brentq 求根过程
在 _sm_control_loci.py 中,ControlLoci.compute_mtpv_locus() 通过以下步骤预计算 MTPV 轨迹:
- 在 [0, ψ_s_max] 范围内均匀取 16 个磁链幅值点;
- 对每个磁链幅值,调用
compute_mtpv_flux_angle(); - 该函数以磁链角度 δ 为变量,构造残差函数:
mtp_cond(δ) = Re(i_a(δ) · ψ_s*(δ)); - 在区间 [π/2, π] 内使用 Brentq 算法求根(IPMSM 的 MTPV 根位于第二象限);
- 若区间两端点函数值同号,则说明不存在 MTPV(如表贴式电机 L_d = L_q)。
求根完成后,motulator 构造 LUT 插值器 i_s_dq_vs_psi_s_abs,供控制器在线查表使用。
2.4 _get_mtpv_flux_and_torque() 的 LUT 查表
在运行时,ReferenceGenerator._get_mtpv_flux_and_torque(psi_s_abs_ref) 直接以当前磁链参考值为索引,通过 LUT 插值查得 MTPV 电流 i_s,再反算出对应的磁链 ψ_s 和转矩 τ_M:
i_s = self.i_s_mtpv(psi_s_abs_ref)
psi_s = complex(self.par.psi_s_dq(i_s))
tau_M = 1.5 * self.par.n_p * (i_s * psi_s.conjugate()).imag
3. MTPA → 弱磁 → MTPV 切换逻辑
所有参考生成的核心集中在 compute_flux_and_torque_refs() 方法中。该方法通过五个连续的“渐进式约束”步骤,将原始转矩参考 τ_M_ref 逐步修正为最终可行的 (ψ_s_ref, τ_M_ref):
| 步骤 | 操作 | 物理意义 | 切换判据 |
|---|---|---|---|
| 1 | ψ_s = abs(ψ_s_MTPA(τ_M_ref)) | 按 MTPA 曲线计算目标磁链 | 默认优先 MTPA |
| 2 | clip(ψ_s, ψ_s_min, ψ_s_max) | 磁链硬限幅 | ψ_s 超出预设范围时触发 |
| 3 | ψ_s = min(ψ_s, u_s_max / |ω|) | 电压极限弱磁 | 当转速升高导致电压极限收缩时触发 |
| 4 | τ_M = min(τ_CL, |τ_M_ref|) · sign | 电流极限转矩截断 | 所需转矩超出电流极限圆与电压极限圆交集时触发 |
| 5 | τ_M = min(k_mtpv·τ_MTPV, |τ_M_ref|) · sign | MTPV 极限 | 工作点越过 MTPV 轨迹时触发 |
这种 clip + min 的组合实现了渐进式约束,而非硬切换:当转速从低到高变化时,电压极限圆自然收缩,MTPA 磁链被逐步“压”到电压极限以下,最终可能进一步被 MTPV 约束截断转矩。
4. 仿真验证 — i_d-i_q 平面轨迹分析
为了验证上述理论分析,我们在 motulator 中运行了 3600 rpm 风机负载仿真,并在 i_d-i_q 平面上绘制了实际电流轨迹与理论曲线的对比。

图中包含以下信息:
- 红色实线:仿真实际运行轨迹 i_d(t) vs i_q(t),起点为绿色圆点,终点为红色圆点;
- 青色虚线:MTPA 理论曲线;
- 洋红色虚线:MTPV 理论曲线;
- 黑色实线:电流极限圆(i_s_max = 2.0 pu);
- 彩色虚线椭圆:不同转速下的电压极限椭圆(V_dc = 180V / 150V);
- magma 等高线:磁链幅值 |ψ_s| 的等值线。
从图中可以观察到:
- 电机从静止启动时,电流从原点 (0, 0) 出发,沿 MTPA 方向加速;
- 随着转速升高,电压极限椭圆收缩,工作点逐渐偏离 MTPA 曲线,向弱磁区(i_d < 0)移动;
- 在 3600 rpm 稳态运行时,实际轨迹位于电压极限椭圆内部,靠近 MTPV 曲线但受电流极限圆约束;
- V_dc = 150V 时电压极限椭圆明显收缩,弱磁程度更深,验证了母线电压对运行边界的影响。
5. 结论
本文系统分析了 motulator 中 MTPV 的实现原理与 MTPA → 弱磁 → MTPV 的切换机制,主要结论如下:
- MTPV 数学条件通过辅助电流 i_a 与磁链 ψ_s 的正交关系 Re(i_a · ψ_s*) = 0 统一表达,适用于饱和与不饱和电机;
- Brentq 求根用于离线预计算 MTPV 轨迹 LUT,保证了数值稳健性和收敛速度;
- 五步渐进式约束链(MTPA → clip → 电压极限 → 电流极限 → MTPV)实现了各工作模式之间的平滑过渡,避免了硬切换带来的转矩冲击;
- 仿真轨迹验证了理论分析:实际运行点从 MTPA 出发,经弱磁区逐渐收敛到电压极限与 MTPV 的交界附近。
motulator 通过 clip 和 min 等简单运算实现了复杂的模式切换逻辑,其设计思路对永磁同步电机驱动的工程实现具有重要参考价值。