炸管小王子 – 炸管小王子

1. 问题背景

当永磁同步电机(PMSM)的转速升高时,反电势随之增大,定子电压逐渐逼近逆变器所能提供的最大电压。此时,系统难以继续运行在最大转矩电流比(MTPA)曲线上,必须进入弱磁(Field Weakening)区域。

然而,弱磁运行点并不一定恰好落在电压极限圆上,而是在圆内的某个位置。为了在高速弱磁区获得最佳的电压利用率,需要引入最大转矩电压比(MTPV)控制。这就带来了两个关键问题:

  • 弱磁运行点究竟在哪里?
  • 控制器如何从 MTPA 平滑切换到弱磁,再过渡到 MTPV?

本文基于 motulator 开源库中的同步电机参考生成器源码,系统分析 MTPV 的数学原理、实现细节以及 MTPA → 弱磁 → MTPV 的切换逻辑。

2. MTPV 在 motulator 中的实现

2.1 数学条件:\(d\tau / d\psi_s = 0\)

MTPV 的核心思想是:在磁链幅值 \(|\psi_s|\) 受电压限制的条件下,寻找能产生最大电磁转矩的电流工作点。其数学条件可表述为:

\[\partial\tau_{\text{M}} / \partial\delta \big|_{|\psi_s|=\text{const}} = 0\]

其中 \(\delta\) 是磁链矢量在 \(dq\) 坐标系中的角度。换言之,对于每一个固定的磁链圆,MTPV 给出了转矩最大的那个点。

2.2 辅助电流 \(\psi_b\)(\(i_a\))的定义与推导

motulator 采用 Varatharajan 等人提出的辅助电流(auxiliary current)概念,将 MTPV 条件写成与 MTPA 对偶的正交形式:

\[\text{Re}(i_a \cdot \psi_s^*) = 0\]

辅助电流 \(i_a\) 的定义式(来自 _parameters.py 中的 aux_current())为:

\[i_a = (G_{\text{qq}}\cdot\psi_d + j\cdot G_{\text{dd}}\cdot\psi_q) – j\cdot G_{\text{dq}}\cdot\psi_s^* – i_s\]

其中 \(G = L_s^{-1}\) 是增量电感矩阵的逆。对于线性不饱和电机(\(L_{\text{dq}} = 0\)),该式可简化为:

\[i_a = \psi_f/L_q + i_d\cdot(L_d/L_q – 1) + j\cdot i_q\cdot(L_q/L_d – 1)\]

将其代入正交条件 \(\text{Re}(i_a \cdot \psi_s^*) = 0\),即可得到 IPMSM 的经典 MTPV 双曲线方程。

2.3 compute_mtpv_locus() 的 Brentq 求根过程

_sm_control_loci.py 中,ControlLoci.compute_mtpv_locus() 通过以下步骤预计算 MTPV 轨迹:

  1. 在 [0, \(\psi_{\text{s,max}}\)] 范围内均匀取 16 个磁链幅值点;
  2. 对每个磁链幅值,调用 compute_mtpv_flux_angle()
  3. 该函数以磁链角度 \(\delta\) 为变量,构造残差函数:\(\text{mtp\_cond}(\delta) = \text{Re}(i_a(\delta) \cdot \psi_s^*(\delta))\);
  4. 在区间 \([\pi/2, \pi]\) 内使用 brentq 算法求根(IPMSM 的 MTPV 根位于第二象限);
  5. 若区间两端点函数值同号,则说明不存在 MTPV(如表贴式电机 \(L_d = L_q\))。

求根完成后,motulator 构造 LUT 插值器 \(i_{\text{s,dq}}\text{ vs }\psi_{\text{s,abs}}\),供控制器在线查表使用。

2.4 _get_mtpv_flux_and_torque() 的 LUT 查表

在运行时,ReferenceGenerator._get_mtpv_flux_and_torque(psi_s_abs_ref) 直接以当前磁链参考值为索引,通过 LUT 插值查得 MTPV 电流 \(i_s\),再反算出对应的磁链 \(\psi_s\) 和转矩 \(\tau_{\text{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() 方法中。该方法通过五个连续的”渐进式约束”步骤,将原始转矩参考 \(\tau_{\text{M,ref}}\) 逐步修正为最终可行的 \((\psi_{\text{s,ref}}, \tau_{\text{M,ref}})\):

步骤 操作 物理意义 切换判据
1 \(\psi_s = \text{abs}(\psi_{\text{s,MTPA}}(\tau_{\text{M,ref}}))\) 按 MTPA 曲线计算目标磁链 默认优先 MTPA
2 \(\text{clip}(\psi_s, \psi_{\text{s,min}}, \psi_{\text{s,max}})\) 磁链硬限幅 \(\psi_s\) 超出预设范围时触发
3 \(\psi_s = \min(\psi_s, u_{\text{s,max}} / |\omega|)\) 电压极限弱磁 当转速升高导致电压极限收缩时触发
4 \(\tau_{\text{M}} = \min(\tau_{\text{CL}}, |\tau_{\text{M,ref}}|) \cdot \operatorname{sgn}\) 电流极限转矩截断 所需转矩超出电流极限圆与电压极限圆交集时触发
5 \(\tau_{\text{M}} = \min(k_{\text{mtpv}}\cdot\tau_{\text{MTPV}}, |\tau_{\text{M,ref}}|) \cdot \operatorname{sgn}\) MTPV 极限 工作点越过 MTPV 轨迹时触发

这种 clip + min 的组合实现了渐进式约束,而非硬切换:当转速从低到高变化时,电压极限圆自然收缩,MTPA 磁链被逐步”压”到电压极限以下,最终可能进一步被 MTPV 约束截断转矩。

4. 仿真验证 — \(i_d\)-\(i_q\) 平面轨迹分析

为了验证上述理论分析,我们在 motulator 中运行了 3600 rpm 风机负载仿真,并在 \(i_d\)-\(i_q\) 平面上绘制了实际电流轨迹与理论曲线的对比。

MTPV i_d-i_q trajectory analysis

图中包含以下信息:

  • 红色实线:仿真实际运行轨迹 \(i_d(t)\) vs \(i_q(t)\),起点为绿色圆点,终点为红色圆点
  • 青色虚线:MTPA 理论曲线;
  • 洋红色虚线:MTPV 理论曲线;
  • 黑色实线:电流极限圆(\(i_{\text{s,max}} = 2.0\) pu);
  • 彩色虚线椭圆:不同转速下的电压极限椭圆(\(V_{\text{dc}} = 180\ \text{V}\) / \(150\ \text{V}\));
  • magma 等高线:磁链幅值 \(|\psi_s|\) 的等值线。

从图中可以观察到:

  1. 电机从静止启动时,电流从原点 \((0, 0)\) 出发,沿 MTPA 方向加速;
  2. 随着转速升高,电压极限椭圆收缩,工作点逐渐偏离 MTPA 曲线,向弱磁区(\(i_d \lt 0\))移动;
  3. 在 3600 rpm 稳态运行时,实际轨迹位于电压极限椭圆内部,靠近 MTPV 曲线但受电流极限圆约束;
  4. \(V_{\text{dc}} = 150\ \text{V}\) 时电压极限椭圆明显收缩,弱磁程度更深,验证了母线电压对运行边界的影响。

5. 结论

本文系统分析了 motulator 中 MTPV 的实现原理与 MTPA → 弱磁 → MTPV 的切换机制,主要结论如下:

  • MTPV 数学条件通过辅助电流 \(i_a\) 与磁链 \(\psi_s\) 的正交关系 \(\text{Re}(i_a \cdot \psi_s^*) = 0\) 统一表达,适用于饱和与不饱和电机;
  • Brentq 求根用于离线预计算 MTPV 轨迹 LUT,保证了数值稳健性和收敛速度;
  • 五步渐进式约束链(MTPA → clip → 电压极限 → 电流极限 → MTPV)实现了各工作模式之间的平滑过渡,避免了硬切换带来的转矩冲击;
  • 仿真轨迹验证了理论分析:实际运行点从 MTPA 出发,经弱磁区逐渐收敛到电压极限与 MTPV 的交界附近。

motulator 通过 clipmin 等简单运算实现了复杂的模式切换逻辑,其设计思路对永磁同步电机驱动的工程实现具有重要参考价值。

6. 附录:符号对照表

本文使用的代码标识符与数学符号之间的对应关系如下:

代码标识符 数学符号 说明
tau_M_ref \(\tau_{\text{M,ref}}\) 转矩参考值
tau_M_cl \(\tau_{\text{M,cl}}\) 电流极限转矩
tau_M \(\tau_{\text{M}}\) 电磁转矩(通用)
psi_s \(\psi_{\text{s}}\) 定子磁链矢量
psi_s_max \(\psi_{\text{s,max}}\) 最大定子磁链幅值
psi_s_ref \(\psi_{\text{s,ref}}\) 定子磁链参考值
psi_s_abs_ref \(\psi_{\text{s,abs,ref}}\) 定子磁链幅值参考
psi_s_dq \(\psi_{\text{s,dq}}\) 定子磁链 dq 分量
u_s_max \(u_{\text{s,max}}\) 最大定子电压
u_dc \(u_{\text{dc}}\) 直流母线电压
i_s_max \(i_{\text{s,max}}\) 最大定子电流
i_d \(i_d\) d 轴电流
i_q \(i_q\) q 轴电流
i_s_dq \(i_{\text{s,dq}}\) 定子电流 dq 分量
k_mtpv \(k_{\text{mtpv}}\) MTPV 安全系数
tau_CL \(\tau_{\text{CL}}\) 电流极限约束转矩
w_m \(\omega_{\text{m}}\) 机械角速度
n_p \(n_{\text{p}}\) 极对数

函数对应:

代码函数 数学记号 说明
compute_flux_and_torque_refs(tau_M_ref, w_m, u_dc) \((\tau_{\text{M,ref}}, \omega_{\text{m}}, u_{\text{dc}}) \mapsto (\psi_{\text{s,ref}}, \tau_{\text{M,ref}})\) 参考生成主入口
compute_mtpa_locus() \(\text{MTPA trajectory}\) MTPA 轨迹预计算
compute_mtpv_locus() \(\text{MTPV trajectory}\) MTPV 轨迹预计算
mtpa_cond(gamma) \(F_{\text{MTPA}}(\gamma)\) MTPA 正交条件
mtpv_cond(delta) \(F_{\text{MTPV}}(\delta)\) MTPV 正交条件残差
root_scalar / brentq \(\texttt{Brentq root-finding}\) Brentq 求根算法
clip \(\operatorname{clip}\) 硬限幅函数
min \(\min\) 最小值函数
sign \(\operatorname{sgn}\) 符号函数

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注