前言

如果你搞过工业机器人、四足机器狗或者高端竞速无人机,你一定听说过一个词:FOC(Field Oriented Control,磁场定向控制)

早期的工程师控制无刷电机(BLDC / PMSM),就像是在“盲人摸象”,用简单的六步换向(电调)来给电机供电。这种方法噪音大、震动强、低速扭矩小,根本无法满足机器人关节对“平滑度”和“力矩精度”的苛刻要求。

而 FOC 算法的出现,直接把电机控制的段位拉满了。它能让转子像丝绸一样顺滑地转动,并且能在任意极低转速下输出恒定且巨大的最大扭矩。

很多新手一看到 FOC 里的各种矩阵变换(Clarke、Park)和空间矢量(SVPWM)就头皮发麻。但今天,我们将跳出枯燥的课本,用最直观的生活物理学,带你彻底搞懂 FOC 到底在干什么!


一、 FOC 的终极奥义:一招“降维打击”

在弄懂 FOC 之前,我们先思考一个问题:为什么直流有刷电机那么好控制,而无刷电机(PMSM)却那么难?

  • 直流电机: 里面有换向器(电刷),你只需要加大电压,转速就上去;加大电流,扭矩就上去。两个变量,简单粗暴。
  • 无刷电机: 它有三个绕组(三相电 A, B, C),你需要同时输入三个相位差为 120∘ 的正弦交流电,才能在电机内部产生一个旋转的磁场。三个不断变化的交流电,这在数学上是一个极其复杂的耦合系统。

FOC 的核心思想,就是一招“降维打击”:通过一套绝妙的数学矩阵变换,把极其复杂的三相交流电,伪装成简单的直流电来控制!

生活化比喻:毛驴与胡萝卜 假设转子是一头拉磨的毛驴,定子磁场是你手里拿着的胡萝卜。 你想要毛驴最卖力地往前走(输出最大扭矩),胡萝卜应该放在哪里?答案是:永远放在毛驴正前方 90 度的地方。 如果胡萝卜离毛驴太近或偏了,毛驴要么不使劲,要么力气用错了方向。FOC 算法干的事情,就是通过极其精密的计算,确保定子产生的磁场,永远超前转子磁极正好 90∘


二、 降维打击的两大神器:Clarke 与 Park 变换

要想把三相交流电变成直流电,FOC 需要经历两次极其关键的数学“空间转换”。

1. Clarke 变换:从 3D 到 2D(三相变两相)

电机里有 A, B, CA,B,C 三个线圈,空间上互差 120∘。但根据基尔霍夫电流定律,在星型接法中Ia+Ib+Ic=0。这意味着只要知道两个电流,就能算出第三个。三个变量其实是冗余的。

Clarke 变换把空间上的三个相(a,b,c),投影到一个平面的直角坐标系(α,β)上:

结果: 我们把三个在时间上正弦变化的电流,变成了两个在静止平面上正弦变化的电流。虽然变量减少了,但它还是交流的!

2. Park 变换:从静止到旋转(交流变直流)

这是 FOC 最天才的一步!既然磁场是旋转的,如果我们的观察者(坐标系)也跟着转子一起以相同的速度旋转,那在观察者眼里,磁场不就静止了吗?

Park 变换将静止的(α,β) 坐标系,旋转一个转子当前的角度 θ(这个角度通常由编码器提供),投影到跟着转子一起转的 (d,q) 坐标系上:

  • d 轴(直轴): 穿过转子磁极的方向。沿着这个方向的电流只会把转子往外拉,完全不产生旋转扭矩(纯纯的浪费电,或者用于弱磁超速)。
  • q 轴(交轴): 垂直于转子磁极的方向。这就是我们刚才说的“毛驴正前方的胡萝卜”!这个方向的电流 100% 产生有用的力矩**。

至此,降维打击完成! 不断变化的三相交流电,在 dq 坐标系下变成了两条恒定的直线(直流电)。


三、 FOC 的大脑:双闭环 PI 控制

把交流变成直流后,微控制器(MCU)终于可以干活了。FOC 算法通常有两个非常关键的 PI(比例-积分)控制器:

  1. 电流环 Id 控制器: 我们的目标是不浪费电,所以给它的目标指令永远是 d_ref=0(除了高速弱磁工况)。它会疯狂调节电压,努力把 d 轴电流压到 0。
  2. 电流环 I_qIq 控制器: 这是扭矩控制的核心。你想让机器人腿部出多大的力,就给它下达多大的 Iq_ref 指令。PI 控制器会计算出一个精确的Vqq 轴目标电压)来满足你的力矩需求。

这就是为什么 FOC 能做到极高的力矩响应速度:它在底层独立控制了产生扭矩的有效电流!


四、 逆向施法:SVPWM 空间矢量调制

PI 控制器算出了我们想要的 dq 轴目标电压(VdVq),但问题来了:电机的物理接线依然是 3 根线(A, B, C),你没法直接把 VdVq 塞进电机里。

我们需要把刚才的数学变换逆着推回去

  1. 逆 Park 变换: 把 (Vd,Vq) 根据当前的转子角度 θ,转回静止平面(,)。
  2. SVPWM(空间矢量脉宽调制): 这是最后一步物理输出。

<Image alt="SVPWM 空间矢量调制六边形图,展示了 6 个非零基础矢量和 2 个零矢量" caption="SVPWM 空间矢量六边形"


SVPWM 是怎么工作的? 电机驱动板上有 6 个 MOS 管,它们组合起来只能产生 8 种基础的开关状态(对应 6 个指向正六边形顶点的非零矢量 V1∼V6,和 2 个在中心的零矢量 V0,V7)。

SVPWM 的魔法在于:它利用相邻的两个基础矢量和一个零矢量,在极短的开关周期(比如 100\mu s100μs)内快速切换并分配时间比例,从而“合成”出任意方向、任意大小的目标电压矢量。

最终,微控制器输出 6 路 PWM 波形控制 MOS 管开合,完美还原出你在数学世界里算出的那个目标磁场!


五、 全流程总结:FOC 到底循环了什么?

只要电机在转,MCU 内部就会以几千至几万赫兹(10kHz∼30kHz)的频率,疯狂重复以下死循环:

  1. 采样: ADC 读取电机两相电流(Ia,Ib),读取编码器获取转子角度(θ)。
  2. 正向变换: Clarke 变换转(α,β),Park 变换转(d,q)。
  3. 计算误差: 将当前实际的Id,Iq 与你给定的目标值做差,送入 PI 控制器。
  4. PID 运算: PI 控制器得出目标电压 Vd,Vq
  5. 逆向变换: 逆 Park 变换将 Vd,Vq 还原成 ,
  6. 输出脉冲: SVPWM 算法查表计算,输出 PWM 波形控制 MOS 管。

搞懂了 FOC,你不仅拿到了机器人底层硬件控制的通行证,更会惊叹于前人如何用优雅的线性代数,降服了狂暴的物理电磁学!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐