1. FOC启动概述:为什么需要启动策略?开环与闭环的基本概念

大家好,我是你们的老朋友。今天咱们聊聊FOC启动这个话题。

说实话,我刚开始做FOC驱动那会儿,也踩过不少坑。最典型的一次——电机一上电,转子纹丝不动,电流却飙得老高。我当时就纳闷:明明算法算得好好的,怎么就不转呢?

后来才明白,FOC启动这事儿,真不是随便写几行代码就能搞定的。它背后藏着不少门道。

1.1 为什么需要启动策略?

你想想看,FOC的核心是矢量控制,它需要知道转子的精确位置。但电机刚上电时,转子在哪儿?我们一无所知。

这就好比你在黑夜里开车,却不知道车头朝哪个方向。你一脚油门下去,车可能往前冲,也可能原地打转,甚至可能撞墙。

具体来说,没有启动策略会带来三个问题:

  • 位置未知:转子初始位置不确定,电流矢量可能完全不对
  • 反电动势为零:转速为零时,反电动势信号为零,无法估算位置
  • 电流失控:盲目给电流,轻则抖动,重则过流烧驱动

核心结论:FOC启动策略的本质,就是解决「从零速度、未知位置」到「稳定闭环运行」的过渡问题。

我在项目中遇到过一台风机,启动时总是先反转半圈再正转。客户投诉说「这电机有毛病」。后来我加了预定位策略,先给一个固定电流把转子拉到已知位置,再平滑切入闭环。问题就解决了。

1.2 开环控制 vs 闭环控制

这两个概念,说白了就是:

  • 开环控制:你给指令,电机执行,但你不看结果。就像你闭着眼睛走路。
  • 闭环控制:你给指令,同时不断看反馈,调整输出。就像你睁着眼睛走路。

在FOC启动中,我们通常先用开环把电机「忽悠」到一定转速,再切换到闭环。

对比项 开环控制 闭环控制
位置反馈 不需要 需要(传感器或无感估算)
启动能力 强,零速也能转 弱,零速时无法估算位置
抗扰动 差,负载变化容易失步 好,能自动调节
适用阶段 启动初期(0~几百RPM) 正常运行(中高速)

我的经验:开环启动时,电流给太大容易过冲,给太小又带不动负载。我一般先给额定电流的30%~50%,然后根据负载情况微调。

1.3 开环启动的核心逻辑

开环启动说白了就是:我不管转子实际在哪儿,我强行让电流矢量旋转起来。

具体做法是这样的:

  1. 给定一个固定的电流幅值 Iq_ref(比如1A)
  2. 让电流角度 θ 从0开始匀速增加
  3. 电流矢量就会带着转子一起转

代码实现很简单:

// 开环启动:强制给定角度和电流
float theta_openloop = 0.0f;
float speed_rad_per_s = 50.0f;  // 目标电角速度

while(1) {
    theta_openloop += speed_rad_per_s * dt;
    if(theta_openloop > 2*PI) theta_openloop -= 2*PI;
    
    // 给定电流
    set_current_reference(Iq_ref, 0.0f, theta_openloop);
    
    // 等待下一个周期
    delay_ms(1);
}

嗯,这里要注意:开环启动时,电流角度和转子实际角度之间会有偏差。但只要偏差不太大(一般不超过90°),转子就能跟着转。

我曾经踩过的坑:开环启动加速度太快,导致转子跟不上电流矢量的旋转速度,结果电机剧烈抖动,差点把联轴器甩飞。后来我把加速度限制在500RPM/s以内,才稳定下来。

1.4 开环到闭环的切换时机

什么时候从开环切到闭环?这是启动策略的关键。

我的判断标准有三个:

  • 转速足够高:一般建议达到额定转速的5%~10%以上
  • 反电动势可测量:反电动势幅值要大于ADC的量化噪声
  • 位置估算收敛:无感算法输出的角度要稳定

切换过程要平滑,不能生硬。我习惯用「软切换」:

// 软切换:开环角度逐渐过渡到闭环角度
float alpha = 0.0f;  // 0=纯开环, 1=纯闭环

for(int i=0; i<200; i++) {
    alpha += 0.005f;  // 200步完成切换
    if(alpha > 1.0f) alpha = 1.0f;
    
    // 混合角度
    float theta_mix = (1-alpha)*theta_openloop + alpha*theta_observer;
    
    set_current_reference(Iq_ref, 0.0f, theta_mix);
    delay_ms(1);
}

这样切换,电机几乎感觉不到冲击。

1.5 知识体系总览

下面这张图,是我自己总结的FOC启动知识框架。你一看就明白了:

FOC启动策略知识体系 FOC启动策略 为什么需要启动策略? 开环控制 闭环控制 位置未知 反电动势为零 电流失控风险 强制给定角度 固定电流幅值 匀速旋转 位置估算 PI调节器 抗扰动 核心目标:从开环平滑过渡到闭环

这张图把FOC启动的核心脉络都串起来了。你仔细看,左边是「为什么需要」,中间是「开环怎么做」,右边是「闭环怎么做」,底部是最终目标。

我个人习惯把这张图打印出来贴在工位上。每次调试启动参数时,看一眼就知道自己卡在哪个环节。

1.6 小结

好了,这一章的内容就这些。总结一下:

  • FOC启动需要策略,是因为零速时位置未知、反电动势为零
  • 开环控制适合启动初期,闭环控制适合正常运行
  • 开环到闭环的切换要平滑,不能生硬

下一章我会详细讲「预定位技术」——就是怎么在启动前先把转子拉到已知位置。这个技巧在重载启动时特别管用。


公众号:蓝海资料掘金营,微信deep3321