3. FOC控制原理

磁场定向控制(Field-Oriented Control, FOC)之所以能成为高性能BLDC/PMSM电机驱动的行业标准,其核心在于通过坐标变换,将定子三相交流电流解耦为相互正交的励磁分量与转矩分量,从而将交流电机等效为直流电机进行控制。本章将沿着“数学建模→坐标变换→闭环调节→电压调制”的技术链路,深入拆解FOC的完整控制原理,并结合TI InstaSPIN-FOC的实际工程实现,帮助读者建立从理论到代码的映射关系。

FOC控制链路与坐标变换关系图 三相逆变器 Q1-Q6 MOSFET Vdc=24V/48V PWM 20kHz BLDC PMSM 3相Y接 电流采样 I_A / I_B (I_C = -I_A-I_B) 三相电压 相电流反馈 Clark变换 ABC → αβ Iα = I_A Iβ = (I_A+2I_B)/√3 Park变换 αβ → dq Id = Iα·cosθ + Iβ·sinθ Iq = -Iα·sinθ + Iβ·cosθ PI调节器 Id_ref vs Id Iq_ref vs Iq 输出 Vd*, Vq* 反Park变换 dq → αβ Vα = Vd·cosθ - Vq·sinθ Vβ = Vd·sinθ + Vq·cosθ SVPWM调制 扇区判断 矢量作用时间 输出6路PWM 角度估算 InstaSPIN-FOC FAST观测器 θ, ω, 磁链 PWM 占空比 θ θ I_A, I_B 坐标变换坐标轴关系 A相轴 B相轴 C相轴 α轴 β轴 d轴(θ) q轴 θ 电流/电压矢量 角度/速度

3.1 FOC的数学基础:从三相动态模型到dq轴解耦

永磁同步电机(PMSM)在自然坐标系下的电压方程为一组非线性、强耦合的时变微分方程。定子三相绕组互感的耦合以及转子位置角θ的时变性,使得直接在三相静止坐标系下设计控制器极为困难。FOC的核心思想是通过两次坐标变换,将时变系数转化为常系数,实现磁链与转矩的解耦控制。

在转子磁场定向的dq坐标系下,PMSM的电压方程可简化为:

Vd = Rs·Id + Ld·(dId/dt) - ωe·Lq·Iq
Vq = Rs·Iq + Lq·(dIq/dt) + ωe·(Ld·Id + ψf)

其中,Vd、Vq为定子电压的d/q轴分量,Id、Iq为定子电流的d/q轴分量,Ld、Lq为d/q轴电感,Rs为定子电阻,ωe为电角速度,ψf为永磁体磁链。电磁转矩方程为:

Te = 1.5·p·[ψf·Iq + (Ld - Lq)·Id·Iq]

对于表贴式PMSM(Ld≈Lq),转矩仅与Iq成正比,实现了完全解耦。对于内置式PMSM,可利用磁阻转矩(Ld-Lq)项进行最大转矩电流比(MTPA)控制。

坐标系变量性质控制复杂度适用场景
ABC三相静止时变交流量高(强耦合)数学建模、仿真验证
αβ两相静止交流量(正交)中(便于SVPWM)中间过渡、矢量调制
dq两相旋转直流量(解耦)低(PI可调)闭环控制、工程实现
工程要点:在TI InstaSPIN-FOC中,FAST(Flux, Angle, Speed, Torque)观测器直接输出转子磁链角θ,无需额外安装编码器。该角度用于Park变换和反Park变换,其精度直接影响解耦效果。若θ存在5°以上的误差,会导致Id/Iq交叉耦合,表现为转矩波动和效率下降。

3.2 Clark变换与Park变换:从三相到旋转坐标系的数学映射

Clark变换(等幅值变换)将三相电流映射到两相静止αβ坐标系。采用等幅值变换时,变换矩阵为:

[Iα]   [ 1    -1/2   -1/2 ] [IA]
[Iβ] = [ 0    √3/2  -√3/2 ] [IB]
                             [IC]

由于三相星形连接无中线,IA+IB+IC=0,实际只需采样两相电流即可重构第三相。TI的InstaSPIN-FOC在电流采样上支持两相或三相采样,当使用两相采样时,IC由软件计算得出。

Park变换将αβ坐标系旋转θ角,得到dq旋转坐标系:

Id = Iα·cosθ + Iβ·sinθ
Iq = -Iα·sinθ + Iβ·cosθ

反Park变换用于将PI调节器输出的Vd*、Vq*转换回αβ坐标系,供SVPWM使用。在数字实现中,θ通常由光电编码器或观测器以电角度形式提供,需注意角度对齐(即d轴与转子磁极N极对齐)。

实现技巧:在定点DSP(如C2000系列)中,三角函数计算通常采用查表法或CORDIC算法。TI的IQmath库提供了高精度定点三角函数,可在不牺牲性能的前提下完成坐标变换。建议将θ归一化到0~1范围(对应0~2π),避免角度溢出问题。

3.3 PI调节器设计:电流环与速度环的参数整定

FOC控制通常采用串级结构:外环为速度环(或位置环),内环为电流环。电流环要求响应快、超调小,速度环要求稳态精度高、抗负载扰动能力强。PI调节器的传递函数为:

G(s) = Kp + Ki/s

工程上常用零极点对消法整定电流环参数。忽略反电动势耦合项后,电流环被控对象近似为一阶惯性环节:

G(s) = 1/(Ls + Rs)

令PI零点抵消对象极点,即Ki/Kp = Rs/L,则闭环带宽由Kp/L决定。典型电流环带宽设置为1~2kHz,速度环带宽为电流环的1/10~1/5。

参数整定方法典型范围调试经验
Kp(电流环)Kp = L·BW0.1~2.0过大导致电流噪声
Ki(电流环)Ki = Kp·Rs/L50~500过小导致稳态误差
Kp(速度环)试凑法+带宽约束0.01~0.5观察转速阶跃响应
Ki(速度环)积分分离/抗饱和1~50防止积分饱和
常见误区:许多工程师在调试时直接增大Kp以追求快速响应,却忽略了电流采样噪声的放大效应。当Kp过大时,PWM占空比会出现高频抖动,导致电机啸叫和效率下降。建议在电流环调试时,先断开速度环,用开环阶跃测试观察电流波形,逐步增大Kp直至临界振荡,再回退30%作为安全裕量。

3.4 SVPWM调制:电压空间矢量与扇区判断

空间矢量脉宽调制(SVPWM)基于逆变器8种开关状态(6个有效矢量+2个零矢量),通过相邻有效矢量的时间组合,合成任意方向、任意幅值的电压矢量。与SPWM相比,SVPWM的直流电压利用率提高15%,且谐波含量更低。

SVPWM的实现步骤为:

  1. 扇区判断:根据Vα、Vβ的符号和比例关系,确定参考电压矢量所在扇区(I~VI)。
  2. 作用时间计算:计算相邻两个有效矢量的作用时间T1、T2,以及零矢量时间T0。
  3. 占空比分配:采用七段式或五段式对称PWM,生成三相桥臂的占空比。
// 扇区判断伪代码(C语言风格)
if (Vβ > 0) sector = (Vα > 0) ? 1 : 2;
else        sector = (Vα > 0) ? 6 : 5;
// 细化判断,结合Vα与Vβ的比值关系
TI InstaSPIN-FOC中的SVPWM实现:在MotorWare/SDK中,SVPWM模块直接接受Vα、Vβ作为输入,内部完成扇区判断、时间计算和PWM比较值更新。用户只需配置PWM频率(典型20kHz)和死区时间(典型0.5~2μs),无需手动干预调制细节。但理解SVPWM原理对于调试PWM异常(如占空比饱和、死区效应)至关重要。

3.5 案例拆解:基于InstaSPIN-FOC的24V BLDC电机调试全流程

背景与约束:某工业风机项目,采用24V/3A额定BLDC电机(极对数p=4,Ld=Lq=0.4mH,Rs=0.2Ω),要求转速范围500~3000RPM,稳态精度±1%,启动转矩0.1N·m。控制器采用TI TMS320F28069M + InstaSPIN-FOC方案,PWM频率20kHz,电流采样为两相低边电阻。

初始现象:首次上电后,电机无法启动,电流波形异常,FAST观测器输出的转速波动超过±200RPM。

分析判断过程:

  1. 检查电流采样:发现I_A、I_B波形存在明显偏置,经万用表测量,运放输出偏置电压为1.65V(正常应为1.5V),导致Clark变换后的Iα、Iβ含有直流偏置。
  2. 检查角度对齐:通过开环强制转子定位(注入d轴电流),确认FAST观测器输出的θ与电机实际电角度偏差约15°。
  3. 检查PI参数:电流环Kp=0.5,Ki=100,在24V母线电压下,启动瞬间电流冲击达6A(过流保护阈值5A)。

实际操作步骤:

1. 修正电流采样偏置:在软件中增加ADC偏移校准,上电时自动采集零电流偏置并补偿。
2. 重新执行FAST辨识:通过InstaSPIN-FOC的电机参数辨识功能(IDLE RUN),获取准确的Rs、Ld、Lq、ψf。
3. 调整电流环参数:Kp=0.15,Ki=80,限制最大电流指令为3A。
4. 增加软启动斜坡:速度指令从0线性爬升至目标值,爬升时间500ms。

结果对比:调整后,电机平稳启动,稳态转速误差±5RPM(0.17%),启动电流峰值2.8A,FAST观测器角度误差小于2°。系统效率从82%提升至89%。

风险与代价:电流采样偏置校准增加了约10ms的上电时间;FAST辨识需要电机空载运行约5秒,在部分带载场景下需额外设计脱开机构。

复盘经验:FOC调试应遵循“先采样、后观测、再闭环”的顺序。采样偏置和增益误差是导致FOC异常的常见根源,建议在硬件设计时预留校准通道,并在软件中实现自动校准。

总结复盘:FOC控制的核心在于坐标变换的准确性和PI参数的合理性。InstaSPIN-FOC通过FAST观测器免去了编码器,但代价是需要精确的电机参数辨识。建议在量产前对每台电机进行参数辨识,并将辨识结果存储在EEPROM中,避免因批次差异导致控制性能下降。