4. 开环到闭环切换:切换时机判断、相位对齐策略、平滑过渡算法
好,咱们进入第四章。这一章,说实话,是FOC启动里最容易出问题的地方。
开环跑得好好的,一切换到闭环,电机突然抖一下,甚至直接失步。我早期做项目时,就被这个问题折磨过好几个通宵。后来慢慢摸透了里面的门道,今天全部分享给你。
4.1 切换时机判断:什么时候该切?
开环启动,说白了就是强行拖着电机转。但你不能一直拖下去。什么时候放手让闭环接管?这里有几个关键判断依据。
4.1.1 转速条件
最核心的条件:电机转速必须足够高。高到什么程度?我个人习惯是,至少达到目标转速的 10%-20%。
举个例子,目标转速 3000 RPM,那开环至少要跑到 300-600 RPM 才能考虑切换。转速太低,反电动势信号太弱,观测器根本算不准位置。
4.1.2 电流稳定度
光看转速还不够。你还要看电流环是否稳定。怎么判断?看 Iq 电流的波动。
我在项目中遇到过,转速到了,但 Iq 电流像过山车一样上下乱窜。这时候强行切换,必死无疑。
判断标准:
- Iq 电流波动 < ±5% 额定电流
- 持续稳定时间 > 50ms(至少 3-5 个电周期)
4.1.3 时间保护
嗯,这里要注意。加一个超时保护。如果开环运行超过设定时间(比如 2 秒)还没达到切换条件,果断报错停机。
为什么?因为可能是堵转了。你想想看,电机堵在那里,你还一直开环强拖,电流会飙升,MOS管分分钟烧掉。
4.2 相位对齐策略:让开环和闭环「对上眼」
开环运行时,你给的是一个虚拟角度。闭环运行时,用的是真实角度。这两个角度如果不一致,切换瞬间转子位置会突变,电机就会抖。
说白了,相位对齐就是让虚拟角度和真实角度「握手」。怎么握?
4.2.1 开环角度跟踪
开环运行时,实时记录你给的虚拟角度 θ_open。同时,用观测器(比如滑模观测器)估算真实角度 θ_est。
关键来了:在切换前,不断比较这两个角度。如果偏差太大,说明开环和闭环「没对上眼」,不能切。
// 相位对齐检查伪代码
if (abs(θ_open - θ_est) > THRESHOLD_ANGLE) {
// 偏差太大,继续开环运行
// 可以微调开环频率,让电机跟上
} else {
// 角度对齐,准备切换
ready_to_switch = true;
}
4.2.2 强制对齐法
如果角度偏差一直降不下来怎么办?我有个土办法,但很管用。
在切换前,让电机在当前位置停留 100-200ms。这时候观测器会收敛到真实位置。然后,把开环角度强制设置为观测器角度。
4.2.3 渐进式对齐
对于要求高的场合,可以用渐进式对齐。就是让开环角度慢慢「靠拢」到观测器角度。
比如每 10ms 调整 1 度,这样电机感觉不到突变。我做过测试,这种方法切换时的抖动最小。
4.3 平滑过渡算法:让切换「无感」
好,时机到了,角度也对齐了。怎么切?直接一刀切?不行。要平滑过渡。
4.3.1 权重过渡法
我最常用的方法。切换时,开环和闭环的权重慢慢变化。
// 权重过渡算法
float weight_open = 1.0f;
float weight_close = 0.0f;
float step = 0.01f; // 每次调整步长
for (int i = 0; i < 100; i++) {
// 最终角度 = 开环角度 * 权重 + 闭环角度 * 权重
θ_final = θ_open * weight_open + θ_est * weight_close;
// 更新权重
weight_open -= step;
weight_close += step;
delay_ms(1); // 过渡时间约 100ms
}
你看,这样角度是慢慢过渡的,电机根本感觉不到切换。
4.3.2 电流缓冲
角度过渡的同时,电流也要缓冲。切换瞬间,把 Iq 参考值降低到当前值的 70%,然后慢慢恢复到目标值。
为什么?因为开环和闭环的电流环参数可能不同。直接切,电流会突变。我见过有人切换时电流从 1A 直接跳到 5A,电机差点飞出去。
| 电机类型 | 角度过渡时间 | 电流缓冲时间 |
|---|---|---|
| 小型无人机电机 | 50-80ms | 30-50ms |
| 工业伺服电机 | 100-200ms | 50-100ms |
| 大功率轮毂电机 | 200-500ms | 100-200ms |
4.3.3 状态机管理
最后,用状态机来管理整个切换过程。我习惯分 4 个状态:
- STATE_OPEN_LOOP:纯开环运行
- STATE_ALIGNING:相位对齐中
- STATE_TRANSITION:平滑过渡中
- STATE_CLOSED_LOOP:纯闭环运行
每个状态都有进入条件和退出条件。这样逻辑清晰,不容易出 bug。
4.4 实战经验总结
说了这么多,给你总结几条实战经验:
- 切换前一定要确认角度对齐,偏差超过 5 度就别切
- 过渡时间宁长勿短,100ms 过渡比 10ms 过渡安全得多
- 电流限幅要降低,切换瞬间电流容易过冲
- 加超时保护,防止死锁
嗯,这一章的内容就这些。下一章我们讲「低速重载启动策略」,那又是另一个坑。到时候见。