4、弱磁控制策略分类:超前角弱磁控制、负id补偿弱磁控制、单电流调节器弱磁控制、深度弱磁控制
好,咱们进入第四讲。前面聊了弱磁的基本原理,说白了就是当母线电压不够用的时候,怎么把永磁电机的反电势给「压」下去。那具体怎么压?业界有几种主流打法。我这些年做项目,四种策略都碰过,各有各的脾气。
今天我把它们拆开揉碎了讲。你想想看,选哪种策略,其实取决于你的应用场景——是追求响应快,还是追求算法简单,还是想榨干电机最后一点功率。
4.1 超前角弱磁控制
先讲第一种,超前角弱磁。这个名字很形象——让电流矢量的相位角超前于反电势。怎么实现?直接在电压指令上叠加一个角度偏移量。
我记得2018年做一款高速风机项目,转速要跑到12000rpm,当时用的就是超前角法。结构特别简单:在Park反变换之前,给电压角度加一个Δθ。这个Δθ由电压环PI调节器输出,当母线电压不够时,PI自动把角度往前推。
具体实现步骤:
- 采样直流母线电压Vdc,计算当前电压极限圆半径Vlim
- 计算实际电压矢量幅值Vs = sqrt(Vd² + Vq²)
- 如果Vs > Vlim,启动弱磁:Δθ = Kp*(Vs - Vlim) + Ki*∫(Vs - Vlim)dt
- 将Δθ叠加到转子位置角θ上:θ' = θ + Δθ
- 用θ'进行Park反变换,生成SVPWM占空比
代码实现大概长这样:
// 超前角弱磁 - 电压环PI
float Vlim = Vdc / sqrt(3); // SVPWM最大不失真电压
float Vs = sqrt(vd*vd + vq*vq);
// 电压误差
float Verr = Vs - Vlim;
if(Verr < 0) Verr = 0; // 只有过调制时才启动
// PI调节
delta_theta += Kp_weak * Verr + Ki_weak * Verr * Ts;
// 限幅
if(delta_theta > THETA_MAX) delta_theta = THETA_MAX;
if(delta_theta < 0) delta_theta = 0;
// 叠加到转子角度
theta_weak = theta + delta_theta;
4.2 负id补偿弱磁控制
第二种,负id补偿法。这是工程中最常用的方案,没有之一。为什么?因为它直接修改电流指令,物理意义清晰,调试起来也直观。
说白了,就是当电压不够时,主动给id指令一个负的增量。id负得越多,直轴去磁效果越强,反电势就越低。
我在做电动汽车主驱控制器时,用的就是这种方案。当时遇到一个问题:id和iq的耦合很严重,id负向增加时,iq会跟着波动。后来加了前馈解耦才解决。
控制逻辑:
- 电压环PI:输入是Vd²+Vq²与Vlim²的误差,输出是Δid_ref
- 电流指令修正:id_ref* = id_ref_original + Δid_ref(Δid_ref为负值)
- iq限幅:根据id_ref*和电流极限圆,重新计算iq_max
表格对比一下两种常见实现:
| 对比项 | 电压平方误差法 | 电压幅值误差法 |
|---|---|---|
| 输入信号 | Vd² + Vq² - Vlim² | sqrt(Vd²+Vq²) - Vlim |
| PI输出 | Δid_ref(负值) | Δid_ref(负值) |
| 优点 | 计算简单,无开方 | 物理意义直观 |
| 缺点 | 误差非线性,增益难调 | 需要开方运算 |
| 我的推荐 | 资源受限的MCU | 有FPU的处理器 |
4.3 单电流调节器弱磁控制
第三种,单电流调节器法。这个名字有点绕,其实核心思想是:只保留一个电流环(通常是q轴),d轴电压直接由电压环给定。
为什么要这么做?因为传统双电流环在深度弱磁时,d轴和q轴会互相打架——你调id,iq就跳;你调iq,id就变。单电流调节器直接砍掉一个环,反而稳定了。
我记得在做一个伺服驱动器项目时,客户要求转速范围从500rpm到8000rpm,跨度很大。双环怎么调都调不好,换成单电流调节器后,一次通过。
实现要点:
- q轴电流环保留:负责转矩控制,输出Vq_ref
- d轴电压由电压环直接给定:电压环PI输出Vd_ref
- 电压环输入:Vq_ref与Vlim的误差(或Vd²+Vq²与Vlim²的误差)
- Vd_ref限幅:保证合成电压矢量不超出六边形
伪代码示例:
// 单电流调节器弱磁
// 1. q轴电流环(正常PI)
Vq_ref = PI_iq(iq_ref, iq_fbk);
// 2. 电压环 - 输出Vd_ref
float Vlim = Vdc / SQRT3;
float Verr = fabs(Vq_ref) - Vlim;
if(Verr < 0) Verr = 0;
Vd_ref = PI_voltage(Verr); // 输出为负值
// 3. 限幅 - 保证合成电压不超限
float Vmax = Vlim;
if(sqrt(Vd_ref*Vd_ref + Vq_ref*Vq_ref) > Vmax) {
// 按比例缩小
float scale = Vmax / sqrt(Vd_ref*Vd_ref + Vq_ref*Vq_ref);
Vd_ref *= scale;
Vq_ref *= scale;
}
4.4 深度弱磁控制(MTPV区域)
最后一种,深度弱磁。这其实是弱磁的终极形态——进入MTPV(最大转矩电压比)区域。
什么叫MTPV?当转速高到一定程度,电流极限圆和电压极限圆相交的区域越来越小。这时候你不能再按MTPA(最大转矩电流比)走了,而是要按照MTPV曲线走,才能输出最大转矩。
说实话,这个区域我接触得不多,主要是在做超高速电机(50000rpm以上)时才碰到。普通工业应用很少进这个区域,因为对电机本体的考验太大了。
实现方式有两种:
- 查表法:离线计算MTPV曲线,存成二维表(转速→id_ref, iq_ref)
- 在线计算法:根据电机参数实时计算MTPV轨迹
MTPV的数学条件:
// MTPV轨迹方程(忽略定子电阻)
// 条件:d(Torque)/d(id) = 0,且满足电压极限圆
// 近似解:
id_mtpv = -ψf/Ld + sqrt((ψf/Ld)² + (Vlim/(ω*Ld))²)
iq_mtpv = sqrt((Vlim/(ω*Lq))² - id_mtpv²)
4.5 四种策略怎么选?
好,四种策略都讲完了。你可能会问:那我到底该用哪一种?
我个人的选择逻辑是这样的:
| 应用场景 | 推荐策略 | 理由 |
|---|---|---|
| 风机、水泵(恒速) | 超前角法 | 结构简单,代码改动小 |
| 电动汽车主驱(宽调速) | 负id补偿法 | 工程成熟,调试工具多 |
| 伺服驱动器(高动态) | 单电流调节器 | 稳定性好,抗参数变化强 |
| 超高速电机(>3倍基速) | 深度弱控(MTPV) | 必须进入MTPV区域才能输出转矩 |