4. 弱磁控制基本原理:直轴去磁电流的引入、弱磁控制的核心思想、电压反馈型弱磁控制
好,咱们进入正题。弱磁控制,说白了就是让电机在基速以上还能继续往上转。你想想看,电机转速高了,反电动势也跟着涨,涨到直流母线电压都扛不住了,怎么办?这时候就得靠弱磁。
我记得刚入行那会儿,有个项目电机死活跑不到额定转速的两倍。我查了三天,最后发现是弱磁根本没使能。嗯,从那以后,我每次调试都会先确认弱磁策略是不是在线。
4.1 为什么需要弱磁?——电压极限的瓶颈
先看一个基本事实。永磁同步电机的电压方程,在旋转坐标系下是这样的:
ud = Rs * id + Ld * (did/dt) - ωe * Lq * iq
uq = Rs * iq + Lq * (diq/dt) + ωe * (Ld * id + ψf)
稳态下,忽略电阻压降和微分项,电压幅值近似为:
us ≈ ωe * sqrt( (Lq * iq)² + (Ld * id + ψf)² )
看到没?转速 ωe 越高,us 越大。但逆变器能输出的最大电压是有限的,受直流母线电压 Udc 限制:
us_max = Udc / sqrt(3) (SVPWM 线性调制区)
当 us 逼近 us_max 时,电流环就失控了。这时候必须引入弱磁。
核心矛盾:转速升高 → 反电动势升高 → 电压饱和 → 电流环失控。弱磁就是解决这个矛盾的唯一出路。
4.2 直轴去磁电流的引入
弱磁的核心操作,就是往直轴(d轴)注入负的电流,也就是 id < 0。为什么是负的?
你看上面的电压公式,Ld * id + ψf 这一项,如果 id 是正的,它只会让磁链更大,电压更高。但如果 id 是负的,Ld * id 就会抵消一部分永磁体磁链 ψf,等效磁链就变小了。磁链小了,反电动势自然就降下来了。
我在项目中遇到过一种情况:某款内置式永磁电机,Ld 比较小,需要很大的负 id 才能有效弱磁。结果电流全用在去磁上了,转矩输出能力严重下降。这就是所谓的「弱磁深度」问题。
我的习惯:调试弱磁时,先看 id 的响应。如果 id 能快速跟踪到负值,说明电压环还有裕量。如果 id 抖得厉害,大概率是电压饱和了。
4.3 弱磁控制的核心思想
弱磁控制的核心思想,其实就一句话:在电压极限圆内,找到最优的电流工作点。
电机运行时,电流矢量 (id, iq) 必须同时满足两个约束:
- 电流极限圆: id² + iq² ≤ is_max²
- 电压极限椭圆: (Ld * id + ψf)² + (Lq * iq)² ≤ (us_max / ωe)²
转速越高,电压极限椭圆越小。当椭圆缩到比电流圆还小时,就必须沿着椭圆边界走,这就是弱磁区。
你想想看,在基速以下,我们追求 MTPA(最大转矩电流比)。到了弱磁区,目标就变了——要在电压极限内,尽可能输出最大的转矩。这叫 MTPV(最大转矩电压比)。
我曾经踩过的坑:弱磁区如果只盯着电压环,忽略了 MTPV 轨迹,电流可能会跑到电压椭圆外面去。结果就是电流环饱和,转速失控。所以弱磁控制一定要有电压限幅保护。
下面这张图,是我每次培训都会画的。它把弱磁控制的整个逻辑串起来了:
4.4 电压反馈型弱磁控制
讲完了思想,咱们聊聊具体怎么实现。我个人最常用的,就是电压反馈型弱磁。为什么?因为它鲁棒性强,对电机参数不敏感。
电压反馈型弱磁的基本思路是这样的:
- 计算当前电压幅值: us = sqrt(ud² + uq²)
- 与电压极限比较: Δu = us - us_max
- 通过 PI 调节器输出 id_ref: 当 Δu > 0 时,PI 输出负的 id_ref,且 Δu 越大,id_ref 越负
- 限幅处理: id_ref 不能超过电流极限圆
代码实现其实不复杂,我贴一段核心逻辑:
// 电压反馈弱磁 PI 调节器
// 输入:ud, uq, us_max
// 输出:id_weak_ref
float us = sqrtf(ud * ud + uq * uq);
float delta_u = us - us_max; // 电压误差
// 只有电压超过极限时才启动弱磁
if (delta_u > 0.0f) {
// PI 调节,输出负的 id
pi_weak.integral += pi_weak.Ki * delta_u * dt;
// 积分限幅,防止深度饱和
if (pi_weak.integral > 0.0f) pi_weak.integral = 0.0f;
if (pi_weak.integral < -id_max) pi_weak.integral = -id_max;
id_weak_ref = pi_weak.Kp * delta_u + pi_weak.integral;
} else {
// 电压未饱和,弱磁退出
id_weak_ref = 0.0f;
pi_weak.integral = 0.0f; // 清零积分
}
// 最终 id 参考值 = MTPA 的 id + 弱磁的 id
id_ref = id_mtpa_ref + id_weak_ref;
// 限幅
if (id_ref < -id_max) id_ref = -id_max;
调试经验:PI 参数怎么调?我一般先设 Kp 小一点(比如 0.1),Ki 更小(0.01 量级)。然后让电机空载加速,看电压误差 Δu 能不能收敛到 0。如果 id 震荡,减小 Kp;如果响应太慢,增大 Ki。
4.5 电压反馈型 vs 查表型:怎么选?
两种方法各有优劣。我整理了一个对比表,方便你选型:
| 对比项 | 电压反馈型 | 查表/公式型 |
|---|---|---|
| 参数依赖性 | 低(只依赖 us_max) | 高(依赖 Ld, Lq, ψf) |
| 动态响应 | 中等(PI 调节有延迟) | 快(前馈直接给 id) |
| 鲁棒性 | 强(参数变化不影响) | 弱(参数不准就偏) |
| 实现复杂度 | 低(一个 PI 搞定) | 中(需要标定或公式) |
| 适用场景 | 参数未知、变参数场合 | 参数已知、要求高动态 |
我个人习惯是:量产项目首选电压反馈型。因为电机批量生产时,参数一致性没那么好,查表法容易出偏差。电压反馈型靠闭环自己找平衡,省心很多。
注意:电压反馈型弱磁有一个固有缺陷——它只能在电压饱和后才能起作用。如果负载突变导致电压瞬间冲高,PI 来不及响应,电流环可能先饱和了。所以实际工程中,我通常会加一个前馈项,根据转速和转矩提前给一个负的 id 偏置。
4.6 弱磁控制的几个关键参数
最后,我列几个调试时必须关注的参数:
- us_max:电压极限值。一般取 Udc/sqrt(3),但要留 5%-10% 的裕量,防止过调制。
- id_max:直轴电流极限。不能超过电机退磁电流,否则永磁体可能不可逆退磁。
- 弱磁 PI 的积分限幅:我一般设在 -id_max 到 0 之间,防止积分深度饱和。
- 退出阈值:当 us 降到 us_max 以下一定值(比如 95%)时,让弱磁逐渐退出,避免频繁切换。