4、弱磁控制策略:超前角弱磁法、负直轴电流补偿法、查表法
好,咱们进入第四章。前面几章我们把 SVPWM 在弱磁区间的理论基础、电压极限圆和电流极限圆都聊透了。那理论终归要落地,今天我就把工程上最常用的三种弱磁控制策略掰开揉碎了讲给你听。
这三种方法分别是:超前角弱磁法、负直轴电流补偿法和查表法。说白了,它们都是在回答同一个问题——当电机转速超过基速,反电动势高到逆变器输出电压不够用的时候,我们怎么通过调整电流矢量,让电机还能继续往上转。
我个人习惯把这三招分成两类:闭环调节类(超前角法和负直轴补偿法)和开环查表类(查表法)。各有各的脾气,咱们一个一个看。
4.1 超前角弱磁法
这个方法,我最早是在一个高速主轴项目里接触到的。当时电机额定转速 3000rpm,客户要求跑到 6000rpm,而且负载变化还挺剧烈。用超前角法,算是帮我解了围。
它的核心思路很简单:不直接控制 d 轴电流,而是控制电流矢量的角度。你想想看,当电压饱和时,我们让电流矢量往 d 轴负方向偏一偏,也就是让电流超前角变大,这样就能在电压极限圆内腾出空间来。
超前角弱磁的核心逻辑:
- 检测当前逆变器输出电压
Vs与最大可用电压Vmax的差值 - 通过 PI 调节器输出一个角度增量
Δθ - 将这个角度叠加到电流指令的相位上
- 最终电流指令变为:
id* = Is·cos(θ+Δθ),iq* = Is·sin(θ+Δθ)
嗯,这里要注意一个关键点:超前角调节器的输入是电压误差,不是转速误差。为什么?因为弱磁的本质是电压受限,不是转速受限。电压一旦饱和,我们就得动手。
我在项目中遇到过一个问题:当负载突然卸掉时,电压误差瞬间变成负值,超前角会往回缩,但缩得太快会导致电流振荡。后来我加了一个退饱和限幅和积分分离,才把这个问题压下去。
避坑指南:
我曾经在调试时发现,超前角 PI 的输出限幅如果设得太宽,电流角度会跳变,导致转矩脉动。建议把角度增量限幅控制在 ±15° 以内,步进速度慢一点,稳定性会好很多。
4.2 负直轴电流补偿法
这个方法,说白了就是直接往 d 轴电流指令里塞一个负的补偿量。它比超前角法更直观,也更符合我们平时调电流环的习惯。
它的工作原理是这样的:
- 正常运行时,
id* = 0(表贴式)或某个 MTPA 点(内置式) - 当检测到电压饱和,启动一个补偿 PI 调节器
- 这个 PI 的输出是一个负的 d 轴电流增量
Δid - 最终
id* = id_mtpa + Δid,iq*则根据电流极限圆做限幅
你可能会问:那 iq 怎么办?
好问题。当 d 轴电流往负方向走,总电流幅值 Is 不能超过电流极限圆,所以 iq 必须相应地减小。通常的做法是:先算 d 轴补偿,再根据 Is_max 反算出 q 轴上限。
| 对比项 | 超前角弱磁法 | 负直轴补偿法 |
|---|---|---|
| 控制对象 | 电流矢量角度 | d 轴电流分量 |
| PI 输入 | 电压误差 | 电压误差 |
| PI 输出 | 角度增量 Δθ | d 轴电流增量 Δid |
| q 轴处理 | 由角度和幅值自动决定 | 需单独限幅计算 |
| 适用场景 | 表贴式 PMSM | 内置式 PMSM(配合 MTPA) |
| 调试难度 | 中等(角度限幅需小心) | 较低(直观) |
我个人更倾向于在内置式永磁同步电机上用负直轴补偿法。因为内置式电机本身就有磁阻转矩,MTPA 曲线已经给了一个初始的 id 负值,弱磁时只需要在此基础上继续往负方向推就行,物理意义很清晰。
注意:
负直轴补偿法有一个隐患——如果 PI 参数调得太激进,Δid 会快速往负方向跑,导致 iq 被极限圆削波,转矩瞬间掉下来。我在一个电动汽车项目中吃过这个亏,急加速时动力突然中断。后来加了 Δid 的变化率限制,才把这个问题解决。
4.3 查表法
查表法,说白了就是离线算好,在线查用。它不依赖 PI 调节器,而是事先把不同转速、不同转矩下的最优 id、iq 指令算好,存成一张二维表。运行时根据当前转速和转矩指令,直接查表得到电流指令。
它的优势很明显:
- 响应快:没有 PI 调节器的积分过程,查表就是一次内存访问
- 无振荡:不存在调节器超调或积分饱和的问题
- 可优化:表格数据可以通过离线优化算法(比如遗传算法、粒子群)得到全局最优解
但缺点也很突出:
- 工作量大:需要覆盖全转速、全转矩范围,电机参数稍有变化就得重新标定
- 鲁棒性差:电机温度变化、参数漂移时,查出来的点可能已经不是最优了
- 存储开销:表格太粗精度不够,表格太细占 Flash 空间
我记得在一个伺服驱动器项目里,客户要求极致的响应速度,不允许有任何 PI 调节的延迟。我们最终选了查表法,配合线性插值,把表格大小控制在 20×20 个点,精度已经能满足要求。
查表法实现要点:
- 表格生成:在 MATLAB/Simulink 中,根据电机参数和电压极限方程,遍历所有工作点,计算最优
id、iq - 表格存储:按转速和转矩两个维度索引,建议转速步长 100-200rpm,转矩步长 5-10% 额定转矩
- 在线查表:根据当前转速和转矩指令,找到表格中相邻的四个点,做双线性插值
- 边界处理:当指令超出表格范围时,做饱和限幅,不要外推
// 查表法双线性插值示例(C语言伪代码)
float lookup_id(float speed, float torque) {
int idx_s = (int)((speed - SPEED_MIN) / SPEED_STEP);
int idx_t = (int)((torque - TORQUE_MIN) / TORQUE_STEP);
// 边界钳位
idx_s = CLAMP(idx_s, 0, SPEED_TABLE_SIZE-2);
idx_t = CLAMP(idx_t, 0, TORQUE_TABLE_SIZE-2);
// 四个角的值
float q11 = id_table[idx_s][idx_t];
float q12 = id_table[idx_s][idx_t+1];
float q21 = id_table[idx_s+1][idx_t];
float q22 = id_table[idx_s+1][idx_t+1];
// 归一化系数
float x = (speed - (SPEED_MIN + idx_s*SPEED_STEP)) / SPEED_STEP;
float y = (torque - (TORQUE_MIN + idx_t*TORQUE_STEP)) / TORQUE_STEP;
// 双线性插值
return (1-x)*(1-y)*q11 + x*(1-y)*q21 + (1-x)*y*q12 + x*y*q22;
}
4.4 三种策略的对比与选型建议
好了,三种方法都讲完了。你可能会问:那我到底该用哪一种?
我的建议是这样的:
- 如果你在做通用变频器或伺服驱动器,面对的是不同型号的电机,参数不确定——选超前角弱磁法。它不依赖电机参数,鲁棒性好。
- 如果你在做电动汽车主驱或高速主轴,电机参数已知且相对稳定——选负直轴补偿法。它物理意义清晰,配合 MTPA 控制可以做到全速域最优。
- 如果你在做对响应速度要求极高的场合,比如航空航天或高端数控——选查表法。但前提是你有足够的标定时间和资源。
下面这张图,是我自己总结的三种策略在弱磁区间的控制逻辑对比,你可以直观地看到它们的区别:
最后说一句:没有银弹。我在实际项目中,甚至会把超前角法和查表法结合起来用——查表法给出粗调,超前角法做细调。这样既有查表法的快速响应,又有闭环调节的鲁棒性。嗯,这个思路你可以记一下,后面遇到棘手项目时或许用得上。