一、FOC控制基础:从原理到实现

大家好,我是你们的老朋友。今天咱们来聊聊FOC控制的基础知识。说实话,我刚接触FOC那会儿,也被一堆变换公式搞得头大。但后来我发现,只要理解了核心思想,这些东西其实没那么可怕。

FOC,全称是磁场定向控制。说白了,就是让电机转得又稳又准,效率还高。我最早做电机控制时用的是方波驱动,电机嗡嗡响,噪音大,扭矩还抖。后来换成FOC,那感觉,就像从拖拉机换成了小轿车。

核心思想:FOC的本质是把交流电机模拟成直流电机来控制。通过坐标变换,把三相交流量变成两相直流量,然后像控制直流电机一样去控制转矩和磁通。

1.1 FOC的基本原理

FOC控制的核心,就是解耦。你想想看,交流电机的转矩和磁通是耦合在一起的,牵一发而动全身。FOC通过坐标变换,把它们解耦成独立的d轴和q轴分量。

d轴控制磁通,q轴控制转矩。这样,控制就变得简单了——想要大力矩?加大q轴电流就行。想要弱磁提速?减小d轴电流就行。

我在项目中遇到过一个问题:电机在高速运行时突然失步。查了半天,原来是d轴电流控制没跟上,磁通衰减了。后来加了前馈补偿,问题就解决了。

1.2 坐标变换:Clark变换与Park变换

坐标变换是FOC的数学基础。这里有两个关键变换:Clark变换和Park变换。

Clark变换(3相→2相)

Clark变换把三相静止坐标系(a, b, c)变换到两相静止坐标系(α, β)。公式如下:

// Clark变换
Iα = Ia
Iβ = (Ia + 2*Ib) / √3

嗯,这里要注意,Clark变换是等幅值变换还是等功率变换?我建议你用等幅值变换,因为后续计算方便。等功率变换会多一个系数√(2/3),容易搞混。

我的经验:实际代码中,Clark变换可以写成查表形式,省去浮点运算。但前提是你的电流采样精度够高,否则查表误差会放大。

Park变换(2相旋转→2相静止)

Park变换把两相静止坐标系(α, β)变换到两相旋转坐标系(d, q)。公式:

// Park变换
Id = Iα * cos(θ) + Iβ * sin(θ)
Iq = -Iα * sin(θ) + Iβ * cos(θ)

这里的θ是转子位置角,通常由编码器或霍尔传感器提供。没有位置传感器?那就得用无传感器算法了,这个后面会讲。

我曾经犯过一个低级错误:Park变换的θ角没对齐,导致d轴和q轴电流控制反了。电机转是能转,但效率低得可怜,还发热严重。后来用示波器抓波形才发现问题。

1.3 SVPWM调制技术

SVPWM,空间矢量脉宽调制。这是FOC的最后一环,把d-q轴的电压指令变成实际的PWM波形。

SVPWM的核心思想是:用8个基本电压矢量(6个非零矢量+2个零矢量)来合成任意方向的电压矢量。你想想看,就像用不同颜色的颜料调出任意颜色一样。

SVPWM的实现步骤:

  1. 判断目标电压矢量所在的扇区
  2. 计算相邻两个基本矢量的作用时间
  3. 计算零矢量的作用时间
  4. 生成PWM比较值

扇区判断有个小技巧:直接用Uα和Uβ的符号就能判断。比如Uα>0且Uβ>0,就在扇区I。但要注意边界情况,我建议用查表法,更可靠。

// SVPWM扇区判断示例
if (Ubeta > 0) {
    if (Ualpha > 0) sector = 1;
    else sector = 2;
} else {
    if (Ualpha > 0) sector = 6;
    else sector = 5;
}

避坑指南:我曾经在SVPWM的过调制区吃过亏。当电压指令超过六边形边界时,必须做限幅处理,否则波形会畸变,电机噪音大。建议用最小相位误差限幅法,效果最好。

知识体系总览

下面这张图是我自己画的FOC知识体系结构图,帮你理清思路:

FOC控制算法知识体系 FOC磁场定向控制 坐标变换 电流/速度控制 SVPWM调制 Clark变换 Park变换 PI控制器 前馈补偿 扇区判断 时间计算 等幅值/等功率 角度对齐 参数整定 反电动势补偿 关键公式速查 Clark: Iα = Ia, Iβ = (Ia + 2Ib)/√3 Park: Id = Iα·cosθ + Iβ·sinθ, Iq = -Iα·sinθ + Iβ·cosθ SVPWM: T1 = Ts·Vref·sin(60°-θ)/Vdc, T2 = Ts·Vref·sin(θ)/Vdc

1.4 实际应用中的注意事项

理论讲完了,咱们聊聊实际干活时要注意的点。

模块 常见问题 我的建议
Clark变换 电流采样噪声大 加低通滤波器,截止频率设为PWM频率的1/10
Park变换 角度误差导致控制发散 编码器上电自检,校准零点偏移
SVPWM 过调制区波形畸变 用最小相位误差限幅,别用简单的截断
PI控制器 积分饱和 加抗积分饱和逻辑,输出限幅前先限积分

一个小技巧:调试FOC时,先开环跑起来,确认坐标变换和SVPWM没问题,再切闭环。我每次都是这么干的,能省不少排查时间。

好了,这一章的内容就到这里。FOC的基础知识,说白了就是坐标变换加SVPWM。你只要把这两个东西吃透了,后面的控制环路设计就水到渠成。


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