3、弱磁控制基本原理:从基速到弱磁区,电压饱和与电流分配策略

好,咱们进入正题。

弱磁控制,说白了就是让电机跑得比额定转速更快。你想想看,电机到了基速以后,反电动势都快赶上母线电压了,这时候还想提速怎么办?只能靠弱磁。

我刚开始接触PMSM时,总觉得弱磁是个很玄乎的东西。后来亲手调过几台电机,踩过坑,才慢慢摸清楚这里面的门道。今天我就把核心思路拆开来讲。

3.1 电压极限与基速的物理含义

先搞清楚一个问题:为什么会有基速?

电机运行时,定子绕组会产生反电动势。这个反电动势跟转速成正比,跟磁链也成正比。当转速升高到某个点,反电动势接近甚至等于母线电压时,电流就再也灌不进去了。这个转速,就是基速。

用公式表达更清楚:

U_s = ω * ψ_s + I_s * R_s
其中:
U_s — 定子电压矢量幅值
ω — 电角速度
ψ_s — 定子磁链幅值
I_s — 定子电流矢量幅值
R_s — 定子电阻

忽略电阻压降(高速时电阻压降占比很小),近似为:

U_s ≈ ω * ψ_s

所以,当U_s达到母线电压极限U_dc/√3(SVPWM调制下),转速再想往上走,就必须减小ψ_s。这就是弱磁的本质。

核心结论:弱磁不是真的把磁钢消磁,而是通过施加直轴去磁电流Id(负值),抵消一部分永磁体产生的磁链,从而降低总磁链ψ_s。

我在项目里遇到过一台额定3000rpm的电机,客户非要跑到4500rpm。一开始我硬着头皮加电压,结果电流波形都畸变了。后来老老实实做弱磁,才把问题解决。嗯,这里要注意:弱磁不是万能的,它受限于电机本身的退磁电流极限。

3.2 电压饱和:你碰到的第一个瓶颈

电压饱和,就是逆变器输出电压不够用了。

你想想看,SVPWM调制下,最大相电压幅值是U_dc/√3。当电机反电动势加上阻抗压降超过这个值,电流环就失控了。表现出来就是:给定电流很大,实际电流却上不去,转速也提不动。

判断是否进入电压饱和,我一般看两个指标:

  • 电流环输出限幅标志:如果d轴或q轴电压指令持续达到限幅值,说明已经饱和。
  • 实际电流跟踪误差:给定Id=0,实际Id却偏正,说明电压不够用了。

调试小技巧:我习惯在示波器上同时观察Vd_ref和Vq_ref。当这两个值加起来接近电压极限圆时,就该启动弱磁了。别等到完全饱和再介入,那时候电流环已经乱了。

3.3 电流分配策略:Id和Iq怎么分?

进入弱磁区后,电流分配就不再是简单的Id=0了。我们需要在电压极限圆和电流极限圆之间找到一个工作点。

先看两个约束条件:

电流极限圆:Id² + Iq² ≤ I_max²
电压极限圆:(Ld*Id + ψ_f)² + (Lq*Iq)² ≤ (U_max/ω)²

其中:

  • Ld、Lq — dq轴电感
  • ψ_f — 永磁体磁链
  • U_max — 最大相电压幅值
  • I_max — 最大相电流幅值

说白了,我们要在电流圆和电压圆的交集里,找一个能让输出转矩最大的点。

常用的分配策略有三种:

策略名称 核心思路 适用场景
查表法 离线计算好Id/Iq对应表,运行时查表 对实时性要求高、处理器资源有限
梯度下降法 在线搜索最优工作点 参数变化大、需要自适应
电压反馈法 根据电压裕量调节Id 工程中最常用,鲁棒性好

我个人最常用的是电压反馈法。为什么呢?因为它简单、稳定,而且对电机参数不敏感。

具体做法是这样的:

  1. 实时计算电压利用率:U_ratio = sqrt(Vd² + Vq²) / U_max
  2. 当U_ratio超过某个阈值(比如0.95),启动弱磁调节器
  3. 弱磁调节器输出负的Id_ref,抵消磁链
  4. 同时根据Id_ref重新计算Iq_ref,保证电流不超限

注意:我曾经在一个项目中,弱磁调节器的PI参数没调好,导致Id来回震荡。电机嗡嗡响,电流波形像锯齿。后来把比例系数减小了一半,积分时间放大了两倍,才稳住。弱磁环的带宽一般要比电流环低一个数量级,别调太快。

3.4 从基速到弱磁区的过渡

过渡过程处理不好,很容易出现转矩抖动。

我建议的做法是:在基速附近设置一个过渡区。比如基速是3000rpm,那从2800rpm开始就逐渐引入弱磁,而不是到了3000rpm突然切入。

过渡区的处理:

  • 线性过渡:根据转速线性增加Id的负值
  • 查表过渡:预先标定好不同转速下的最优Id
  • 自适应过渡:根据电压裕量动态调整

我做过对比,线性过渡最简单,但转矩波动稍大。查表法最平滑,但标定工作量大。自适应过渡是折中方案,工程上用得最多。

实战建议:第一次调弱磁时,先用手动模式。给定一个固定的负Id,比如-10A,然后慢慢升速。观察电流波形和转矩输出。等摸清楚电机的脾气了,再上自动弱磁。我当年就是太心急,直接上自动,结果电机震得像要散架。

3.5 一个简单的弱磁控制代码框架

下面给个C语言风格的伪代码,帮你理解整个流程:

// 弱磁控制主函数
void FieldWeakeningControl(float speed_ref, float speed_fb)
{
    // 1. 计算电压利用率
    float U_ratio = sqrt(Vd_ref*Vd_ref + Vq_ref*Vq_ref) / U_max;
    
    // 2. 判断是否进入弱磁区
    if (U_ratio > 0.95)
    {
        // 3. 弱磁调节器(PI)
        error = U_ratio - 0.95;
        Id_fw = Id_fw + Kp_fw * (error - error_last) + Ki_fw * error * Ts;
        
        // 限制Id_fw为负值
        if (Id_fw > 0) Id_fw = 0;
        if (Id_fw < Id_min) Id_fw = Id_min;  // Id_min为退磁极限
        
        // 4. 重新分配Iq
        float I_max_available = sqrt(I_max*I_max - Id_fw*Id_fw);
        if (Iq_ref > I_max_available) Iq_ref = I_max_available;
        
        // 5. 更新Id参考值
        Id_ref = Id_fw;
    }
    else
    {
        // 未进入弱磁区,保持Id=0或MTPA
        Id_ref = 0;  // 或查MTPA表
    }
    
    error_last = error;
}

这段代码很基础,但框架是完整的。实际项目中,你还需要加入抗积分饱和、限幅处理、模式切换平滑等细节。

我的习惯:弱磁调节器的输出Id_fw,我会加一个一阶低通滤波。时间常数设个5ms左右,能有效抑制噪声引起的抖动。别小看这个滤波,有时候就是它决定了系统稳不稳。

3.6 常见问题与避坑指南

最后,分享几个我踩过的坑:

  • 弱磁深度不够:转速提不上去。检查Id是否真的负得足够多,有时候是Id限幅设得太保守。
  • 弱磁过头:转矩输出严重下降,甚至出现不可逆退磁。我曾经有一台样机,弱磁电流设到-30A,结果跑了几百小时后磁钢退磁了,电机性能永久下降。从那以后,我每次都会查电机手册的退磁曲线。
  • 电压环和电流环打架:弱磁调节器和电流环共用同一个电压资源,容易互相干扰。解决办法是让弱磁环的响应慢一些,别跟电流环抢带宽。
  • 过渡区抖动:从基速到弱磁区切换时,转矩会突然下降。我一般会在过渡区加一个转矩补偿,根据转速差适当增加Iq。

好了,弱磁的基本原理和电流分配策略就讲到这里。下一章我会详细讲弱磁调节器的参数整定方法,包括PI参数怎么调、怎么避免震荡。到时候咱们再细聊。