题目4:MTPA轨迹计算
好,咱们今天聊聊MTPA。全称是Maximum Torque Per Ampere,最大转矩电流比。
说白了,就是花最少的电流,干最多的活。这在电机控制里,是个很实在的目标。你想想看,电流小了,铜耗就小,效率自然就上去了。尤其在低速区,这招特别管用。
MTPA原理:为什么会有这个“最优点”?
永磁同步电机有个特点,它既有永磁体产生的磁链,又有磁阻转矩。这两个东西叠加在一起,就产生了一个有趣的现象——转矩和电流不是简单的正比关系。
我打个比方。你用力推一扇门,直着推和斜着推,效果不一样。MTPA就是找到那个最省力的角度。
从数学上看,转矩方程是这样的:
T = 1.5 * p * [ψf * iq + (Ld - Lq) * id * iq]
这里面,ψf * iq 是永磁转矩,(Ld - Lq) * id * iq 是磁阻转矩。对于内置式永磁同步电机,Ld 小于 Lq,所以 Ld - Lq 是负的。这意味着,我们需要一个负的 id 电流,才能让磁阻转矩为正。
嗯,这里要注意。id 是直轴电流,它起到去磁的作用。id 负得越多,去磁越强,但磁阻转矩也越大。这中间就有一个平衡点。
这个平衡点,就是MTPA点。在这个点上,电流的利用率最高。
核心结论:MTPA的本质,是在电流矢量幅值不变的约束下,寻找使转矩最大的 id、iq 组合。
MTPA曲线推导:从公式到图形
推导过程其实不复杂。我们设电流幅值为 Is,那么:
Is² = id² + iq²
我们的目标,是在 Is 固定的情况下,最大化转矩 T。这是一个典型的条件极值问题。用拉格朗日乘数法,构造一个辅助函数:
F = T + λ * (id² + iq² - Is²)
然后对 id、iq 求偏导,令其为零。经过一番代数运算(我当年推这个也花了不少时间),可以得到:
id = -ψf / (2 * (Ld - Lq)) - sqrt(ψf² / (4 * (Ld - Lq)²) + iq²)
这个公式,就是MTPA的解析表达式。它给出了 id 和 iq 之间的约束关系。
画成曲线,就是一条在 id-iq 平面上的抛物线。这条曲线从原点出发,随着 iq 增大,id 往负方向走。这就是MTPA轨迹。
个人经验:我在项目中遇到过,电机参数 Ld、Lq 会随着电流变化。这时候,理论曲线和实际会有偏差。所以,我建议在标定阶段,一定要实测修正。
查表法与公式法实现
在实际工程中,怎么用MTPA?主要有两种路子:查表法和公式法。
查表法
查表法,说白了就是“事先算好,用时去查”。
具体做法是:
- 根据电机参数,离线计算出不同转矩指令下的 id、iq 值。
- 把这些值存到一个二维表里。横轴是转矩,纵轴是转速(或者电流幅值)。
- 运行时,根据当前的转矩指令,查表得到 id_ref 和 iq_ref。
查表法的优点是:
- 计算量小,实时性好。
- 可以方便地修正参数变化带来的误差。
缺点是:
- 需要提前标定,工作量大。
- 表格精度受限于存储空间。
我曾经在一个项目里,用查表法做MTPA。标定花了整整一周,但跑起来效果确实稳。尤其是低速大转矩工况,效率提升很明显。
公式法
公式法,就是直接用解析公式计算 id、iq。
核心公式就是上面推导的那个:
id = -ψf / (2 * (Ld - Lq)) - sqrt(ψf² / (4 * (Ld - Lq)²) + iq²)
但实际用的时候,我们通常反过来。给定转矩指令 T_ref,先估算一个 iq,然后算出 id,再校验转矩是否匹配。如果不匹配,就迭代调整。
代码实现大概是这样的:
// 公式法MTPA计算
float calc_mtpa_id(float iq, float psi_f, float Ld, float Lq) {
float delta = psi_f / (2.0f * (Ld - Lq));
float id = -delta - sqrt(delta * delta + iq * iq);
return id;
}
// 迭代求解
float solve_mtpa(float T_ref, float psi_f, float Ld, float Lq, float p) {
float iq = 0.0f;
float id = 0.0f;
float T_est = 0.0f;
float error = 0.0f;
for (int i = 0; i < 10; i++) {
id = calc_mtpa_id(iq, psi_f, Ld, Lq);
T_est = 1.5f * p * (psi_f * iq + (Ld - Lq) * id * iq);
error = T_ref - T_est;
iq += error * 0.01f; // 简单的比例调节
}
return id, iq;
}
公式法的优点是:
- 不需要提前标定,参数一变,公式自动适应。
- 理论上精度更高,没有量化误差。
缺点是:
- 计算量大,迭代过程可能耗时。
- 对参数敏感,参数不准,结果就偏。
避坑指南:我曾经在公式法上栽过跟头。当时电机参数 Ld、Lq 随温度变化很大,导致MTPA计算出来的 id 偏小,转矩输出不足。后来我加了一个在线参数辨识模块,才把这个问题解决。所以,用公式法,一定要考虑参数鲁棒性。
两种方法的对比
| 对比项 | 查表法 | 公式法 |
|---|---|---|
| 计算量 | 小 | 大 |
| 存储需求 | 大 | 小 |
| 参数敏感性 | 低(可离线修正) | 高 |
| 标定工作量 | 大 | 小 |
| 实时性 | 好 | 一般 |
| 适用场景 | 批量生产、参数稳定 | 研发阶段、参数多变 |
我个人习惯,在量产项目里用查表法。虽然前期标定累一点,但跑起来省心。在研发阶段,我更喜欢公式法,调参方便,迭代快。
MTPA轨迹的图形化理解
为了让你更直观地理解,我画了一张图。这张图展示了MTPA轨迹在 id-iq 平面上的位置。
这张图里,红色曲线就是MTPA轨迹。它和每个恒电流圆相切,切点就是该电流下的最大转矩点。你仔细看,这些切点连起来,就是MTPA轨迹。
嗯,这里有个关键点。MTPA轨迹只在低速区有效。一旦进入弱磁区,电流轨迹就要沿着电压极限椭圆走了。这个我们后面会详细讲。
实用技巧:在实际调试时,我习惯先让电机空载运行,记录 id、iq 数据。然后逐渐加载,看 id 是否沿着MTPA轨迹走。如果偏离了,就检查参数或者查表数据。
好了,MTPA的内容就这些。核心就是一句话:用最少的电流,出最大的力。查表法和公式法各有千秋,选哪种,看你的项目需求。
公众号:蓝海资料掘金营,微信deep3321