2. FOC基础原理

磁场定向控制(Field Oriented Control,FOC)是现代永磁同步电机(PMSM)高性能驱动的主流方案。其核心思想是通过坐标变换,将定子三相交流电流解耦为相互正交的励磁分量和转矩分量,从而实现对电机磁链与转矩的独立控制,获得类似直流电机的控制体验。本章将深入剖析FOC的数学基础、两大核心坐标变换(Clark与Park)以及空间矢量调制(SVPWM)的底层原理,为后续基于STM32的工程实现打下坚实的理论根基。

FOC 核心坐标变换与调制链路 三相静止 U/V/W ia, ib, ic Clark 两相静止 α/β iα, iβ Park 两相旋转 d/q id, iq PI PI控制器 Ud, Uq 反Park Uα, Uβ SVPWM输入 SVPWM 调制 扇区判断 → 矢量合成 三相逆变器 PWM 1-6 电流采样反馈 (ia, ib, ic) θ (编码器)

上图展示了FOC控制的核心链路:三相电流经Clark变换得到αβ轴分量,再经Park变换得到旋转坐标系下的d/q轴分量;经过PI控制器调节后,通过反Park变换得到αβ轴电压指令,最终由SVPWM模块生成逆变器的开关信号。整个链路中,坐标变换的精度和SVPWM的调制质量直接决定了电机的运行性能。

2.1 FOC的数学基础:从三相到旋转坐标系的解耦逻辑

FOC的本质是数学上的坐标变换。三相交流电机中,定子绕组在空间上互差120°电角度,通入三相正弦电流后产生旋转磁场。然而,三相耦合的微分方程非常复杂,难以直接设计高性能控制器。FOC的思路是:通过数学变换,将三相静止坐标系下的交流量,转换为两相旋转坐标系下的直流量,从而将交流电机的控制问题简化为类似直流电机的控制问题。

在变换过程中,需要遵循两个基本原则:幅值不变原则和功率不变原则。幅值不变原则指变换前后电流矢量的幅值相等,便于直观分析;功率不变原则指变换前后电机的总功率相等,常用于推导电压和磁链的变换矩阵。STM32 FOC SDK默认采用幅值不变原则,这一点在编写变换代码时需要特别注意系数差异。

核心要点:FOC的数学基础是线性代数中的基变换。三相静止坐标系(abc)到两相静止坐标系(αβ)的变换矩阵为:

| iα |   | 1   -1/2   -1/2 |   | ia |
| iβ | = | 0   √3/2  -√3/2 | × | ib |
                  | ic |

该矩阵将三相电流投影到正交的αβ轴上,其中α轴与a相轴线重合,β轴超前α轴90°电角度。

2.2 Clark变换:三相静止到两相静止

Clark变换(又称3S/2S变换)将三相电流从abc坐标系转换到αβ坐标系。其物理意义是将三个互差120°的交流分量,等效为两个正交的交流分量。由于三相电流满足基尔霍夫电流定律(ia + ib + ic = 0),实际只需采样两相电流即可重构第三相电流,这为硬件设计节省了成本。

在STM32 FOC SDK中,Clark变换的典型实现代码如下:

// 输入:三相电流采样值(单位:A)
// 输出:αβ轴电流分量
void Clark_Transform(float ia, float ib, float ic, float *i_alpha, float *i_beta) {
    *i_alpha = ia;  // 幅值不变原则下,α轴与a轴重合
    *i_beta  = (ia + 2.0f * ib) / 1.7320508f;  // 1/√3 系数
}

这里采用幅值不变原则,因此α轴分量直接等于a相电流,β轴分量需要乘以1/√3。如果采用功率不变原则,则两个分量都需要乘以√(2/3)的系数。工程中常见的错误是混淆两种原则,导致电流环PI参数计算出现偏差。

对比维度幅值不变原则功率不变原则
变换矩阵系数2/3√(2/3)
电流幅值变换前后幅值相等幅值变为原来的√(3/2)倍
功率计算需额外乘以3/2变换前后功率直接相等
工程应用STM32 SDK、TI SDK部分学术文献、某些专用IC

2.3 Park变换:两相静止到两相旋转

Park变换(又称2S/2R变换)将αβ坐标系下的交流量,转换到随转子磁场同步旋转的d/q坐标系下。变换的关键是转子位置角θ(电角度),该角度通常由编码器或霍尔传感器提供。经过Park变换后,d轴分量代表励磁电流,q轴分量代表转矩电流,两者均为直流量,便于PI控制器实现无静差调节。

Park变换的数学表达式为:

| id |   | cosθ   sinθ |   | iα |
| iq | = | -sinθ  cosθ | × | iβ |

在STM32中,通常使用查找表或CORDIC算法计算三角函数值。对于高速电机,θ的更新频率必须足够高,否则会导致坐标变换滞后,影响控制性能。STM32 FOC SDK中,Park变换在定时器中断中执行,确保与PWM载波同步。

经验提醒:当电机低速运行时,反电动势较小,转子位置角θ的精度对控制性能影响显著。建议在低速段使用高频注入法或观测器估算θ,在高速段切换为反电动势法,以实现全速度范围的高精度控制。

2.4 SVPWM原理:空间矢量调制

SVPWM(Space Vector Pulse Width Modulation)是一种基于磁链圆轨迹的调制策略。与传统的SPWM(正弦脉宽调制)相比,SVPWM具有直流母线电压利用率高(提高约15%)、谐波含量低、易于数字化实现等优点。其核心思想是:将逆变器的8种开关状态(6个有效矢量+2个零矢量)映射到αβ平面,通过相邻有效矢量和零矢量的时间组合,合成任意方向和大小的电压矢量。

SVPWM的实现步骤分为四步:

  1. 扇区判断:根据Uα和Uβ的符号及大小关系,确定参考电压矢量所在的扇区(共6个扇区,每个60°)。
  2. 作用时间计算:计算相邻两个有效矢量的作用时间T1、T2以及零矢量作用时间T0。
  3. 矢量切换点确定:根据扇区号,计算三相PWM比较寄存器的切换点Ta、Tb、Tc。
  4. PWM生成:将切换点值写入STM32定时器的比较寄存器,生成互补PWM信号(含死区时间)。

扇区判断的简化逻辑如下:

// 根据Uα、Uβ判断扇区
if (Uβ > 0) {
    if (Uα > 0) {
        if (Uα > Uβ/1.732) sector = 1; else sector = 2;
    } else {
        if (-Uα > Uβ/1.732) sector = 3; else sector = 2;
    }
} else {
    // 类似逻辑判断扇区4、5、6
}

实际工程中,更常用的方法是计算三个参考量Uref1 = Uβ、Uref2 = (√3/2)Uα - (1/2)Uβ、Uref3 = -(√3/2)Uα - (1/2)Uβ,根据其正负组合直接查表得到扇区号,计算效率更高。

2.5 案例拆解:一台200W永磁同步电机的FOC调试

某工业伺服项目采用STM32G474驱动一台200W、额定转速3000rpm的PMSM,母线电压48V,额定电流5A。初始调试时,电机运行在1000rpm时出现明显振动和噪声,电流波形畸变严重。

关键数据采集:通过STM32的DAC输出观测iq电流波形,发现其存在明显的6次谐波分量;同时,编码器反馈的θ角在低速时抖动约±3°电角度。

分析判断过程:首先怀疑SVPWM扇区切换存在错误,导致电压矢量方向偏差。通过逻辑分析仪抓取PWM波形,确认扇区切换逻辑正确。随后检查Park变换中的θ角,发现编码器零位偏移未校准,导致d/q轴耦合,q轴电流波动。

实际操作步骤:

  1. 执行编码器零位校准:将电机开环拖动至a相轴线与d轴重合,记录编码器值作为零位偏移量。
  2. 在代码中补偿零位偏移:theta_elec = theta_raw - zero_offset。
  3. 重新整定电流环PI参数:将带宽从500Hz提升至1kHz,相位裕度保持在45°以上。

结果对比:补偿后,q轴电流谐波从6次降为12次(主要为开关频率纹波),电机振动明显减小,噪声降低约8dB。进一步优化SVPWM的死区补偿后,电流THD从12%降至4.5%。

风险提示:在修改编码器零位偏移时,务必在电机断电状态下进行,并确保机械结构不会因转子自由转动而受损。此外,零位偏移值应存储在非易失性存储器中,避免每次上电重新校准。

2.6 常见误区与总结复盘

在FOC基础原理的学习和工程应用中,以下误区值得特别关注:

  • 误区一:混淆Clark变换的系数。幅值不变与功率不变原则的矩阵系数不同,直接套用会导致电流环增益错误。建议在代码注释中明确标注所采用的原则。
  • 误区二:忽略Park变换的角度补偿。如果θ角滞后于实际转子位置,会导致d/q轴解耦不彻底,产生转矩波动。应确保θ角的采样与电流采样同步。
  • 误区三:SVPWM死区时间设置不当。死区时间过短会导致桥臂直通,过长则增加谐波。对于48V/5A系统,建议死区时间设为1-2μs,并配合死区补偿算法。
  • 误区四:忽视直流母线电压波动。SVPWM的输出电压受母线电压影响,若母线电压波动较大,应加入前馈补偿,否则会导致电流环性能下降。