4、弱磁控制策略:超前角弱磁法、负直轴电流补偿法、查表法

好,咱们进入第四章。前面几章我们把 SVPWM 在弱磁区间的理论基础、电压极限圆和电流极限圆都聊透了。那理论终归要落地,今天我就把工程上最常用的三种弱磁控制策略掰开揉碎了讲给你听。

这三种方法分别是:超前角弱磁法、负直轴电流补偿法和查表法。说白了,它们都是在回答同一个问题——当电机转速超过基速,反电动势高到逆变器输出电压不够用的时候,我们怎么通过调整电流矢量,让电机还能继续往上转。

我个人习惯把这三招分成两类:闭环调节类(超前角法和负直轴补偿法)和开环查表类(查表法)。各有各的脾气,咱们一个一个看。

4.1 超前角弱磁法

这个方法,我最早是在一个高速主轴项目里接触到的。当时电机额定转速 3000rpm,客户要求跑到 6000rpm,而且负载变化还挺剧烈。用超前角法,算是帮我解了围。

它的核心思路很简单:不直接控制 d 轴电流,而是控制电流矢量的角度。你想想看,当电压饱和时,我们让电流矢量往 d 轴负方向偏一偏,也就是让电流超前角变大,这样就能在电压极限圆内腾出空间来。

超前角弱磁的核心逻辑:

  • 检测当前逆变器输出电压 Vs 与最大可用电压 Vmax 的差值
  • 通过 PI 调节器输出一个角度增量 Δθ
  • 将这个角度叠加到电流指令的相位上
  • 最终电流指令变为:id* = Is·cos(θ+Δθ),iq* = Is·sin(θ+Δθ)

嗯,这里要注意一个关键点:超前角调节器的输入是电压误差,不是转速误差。为什么?因为弱磁的本质是电压受限,不是转速受限。电压一旦饱和,我们就得动手。

我在项目中遇到过一个问题:当负载突然卸掉时,电压误差瞬间变成负值,超前角会往回缩,但缩得太快会导致电流振荡。后来我加了一个退饱和限幅和积分分离,才把这个问题压下去。

避坑指南:

我曾经在调试时发现,超前角 PI 的输出限幅如果设得太宽,电流角度会跳变,导致转矩脉动。建议把角度增量限幅控制在 ±15° 以内,步进速度慢一点,稳定性会好很多。

4.2 负直轴电流补偿法

这个方法,说白了就是直接往 d 轴电流指令里塞一个负的补偿量。它比超前角法更直观,也更符合我们平时调电流环的习惯。

它的工作原理是这样的:

  1. 正常运行时,id* = 0(表贴式)或某个 MTPA 点(内置式)
  2. 当检测到电压饱和,启动一个补偿 PI 调节器
  3. 这个 PI 的输出是一个负的 d 轴电流增量 Δid
  4. 最终 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 个点,精度已经能满足要求。

查表法实现要点:

  1. 表格生成:在 MATLAB/Simulink 中,根据电机参数和电压极限方程,遍历所有工作点,计算最优 id、iq
  2. 表格存储:按转速和转矩两个维度索引,建议转速步长 100-200rpm,转矩步长 5-10% 额定转矩
  3. 在线查表:根据当前转速和转矩指令,找到表格中相邻的四个点,做双线性插值
  4. 边界处理:当指令超出表格范围时,做饱和限幅,不要外推
// 查表法双线性插值示例(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 控制可以做到全速域最优。
  • 如果你在做对响应速度要求极高的场合,比如航空航天或高端数控——选查表法。但前提是你有足够的标定时间和资源。

下面这张图,是我自己总结的三种策略在弱磁区间的控制逻辑对比,你可以直观地看到它们的区别:

三种弱磁控制策略逻辑对比 超前角弱磁法 检测 Vs 与 Vmax 误差 PI 调节 → 角度增量 Δθ 叠加到电流矢量角度 输出 id*、iq* 负直轴电流补偿法 检测 Vs 与 Vmax 误差 PI 调节 → Δid 负补偿 叠加到 MTPA 的 id* iq* 按极限圆限幅 查表法 输入:转速 + 转矩指令 查二维表 + 双线性插值 直接输出 id*、iq* 无 PI 调节,响应最快 选型建议 超前角法:通用变频器、参数不确定场合 负直轴补偿法:电动汽车、高速主轴(参数已知) 查表法:极致响应速度、有标定资源

最后说一句:没有银弹。我在实际项目中,甚至会把超前角法和查表法结合起来用——查表法给出粗调,超前角法做细调。这样既有查表法的快速响应,又有闭环调节的鲁棒性。嗯,这个思路你可以记一下,后面遇到棘手项目时或许用得上。