3. FOC控制原理

磁场定向控制(Field Oriented Control,FOC)是现代高性能电机控制的核心算法,其本质是通过数学变换将交流电机在三相静止坐标系下的强耦合、非线性交流量,等效为两相旋转坐标系下的直流分量,从而实现对电机磁链与转矩的解耦控制。在STM32电机控制库MCSDK中,FOC算法被封装为高效的数学库函数,开发者无需从零编写坐标变换与SVPWM底层代码,但理解其数学原理与工程实现边界,是进行参数整定、性能调优和故障排查的前提。本章将围绕Clarke/Park变换、PI调节器设计以及SVPWM调制策略三个核心模块展开,并结合MCSDK的代码实现进行实战映射。

FOC控制链路与坐标变换关系图 三相逆变器 SVPWM输出 PMSM/BLDC电机 三相电流 Ia/Ib/Ic 电流采样 ADC + 运放 Clarke变换 3相→2相静止 Park变换 静止→旋转dq PI调节器 Id/Iq闭环 反Park变换 dq→αβ SVPWM调制 扇区判断+矢量合成 转子角度/速度 编码器/霍尔 Uα,Uβ Iα,Iβ Id,Iq Vd*,Vq* Vα*,Vβ* Ta,Tb,Tc θ电角度 功率/执行 坐标变换 控制核心 被控对象 反馈采样

上图展示了FOC控制的完整信号链路:三相电流经Clarke变换得到两相静止坐标系电流,再经Park变换得到旋转坐标系下的Id/Iq;PI调节器对Id/Iq进行闭环控制,输出Vd*/Vq*;反Park变换将电压指令还原到静止坐标系,最终由SVPWM生成逆变器开关信号。整个链路中,坐标变换的精度、PI参数的鲁棒性以及SVPWM的调制比,直接决定了电机的噪声、效率与动态响应。

3.1 坐标变换:从三相到两相旋转坐标系

3.1.1 核心原理:Clarke与Park变换的数学本质

Clarke变换(又称3s/2s变换)将三相静止坐标系(ia, ib, ic)映射到两相静止坐标系(iα, iβ)。其变换矩阵为:

[iα]   [ 1    -1/2   -1/2 ] [ia]
[iβ] = [ 0    √3/2  -√3/2 ] [ib]
                             [ic]

在实际工程中,由于电机中性点不引出,通常只采样两相电流(如ia和ib),第三相通过基尔霍夫定律计算:ic = -(ia + ib)。MCSDK中的Clarke()函数即采用此简化方式,减少了一次ADC采样通道。

Park变换(又称2s/2r变换)将静止坐标系旋转θ电角度,得到旋转坐标系下的d轴(励磁)和q轴(转矩)分量:

[id]   [ cosθ   sinθ ] [iα]
[iq] = [ -sinθ   cosθ ] [iβ]

θ为转子电角度,由编码器或霍尔传感器获取。变换后,id与iq均为直流量,便于PI调节器实现无静差跟踪。对于表贴式PMSM,通常控制id=0,使所有电流用于产生转矩;对于内置式PMSM,则需根据MTPA(最大转矩电流比)策略分配id/iq。

MCSDK实现要点: MCSDK的ST_MC_Clarke()和ST_MC_Park()函数采用Q15或Q24定点格式,输入输出均为标幺值。开发者需注意电流采样增益与ADC满量程的匹配,确保标幺化后电流值在±1.0范围内,否则会触发过流保护。

3.1.2 判断方法:坐标变换正确性的验证

在调试FOC时,坐标变换错误是最隐蔽的故障源。建议按以下步骤验证:

  1. 静态测试: 给电机注入直流电流(如ia=1A, ib=-0.5A, ic=-0.5A),用示波器观察iα/iβ波形,应呈现正弦/余弦关系。
  2. 旋转测试: 手动缓慢旋转电机轴,观察id/iq波形。若id/iq为恒定值(不随角度变化),说明Park变换角度正确;若存在2倍频波动,则可能是角度偏移或编码器零位未校准。
  3. 角度对齐: 在MCSDK中执行ST_MC_Align()函数,该函数会向d轴注入直流电压,使电机转子锁定到零位,从而校准编码器偏移。

3.1.3 实战场景:编码器零位偏移导致转矩波动

背景:某伺服驱动器项目使用2500线增量编码器,MCSDK默认配置下,电机在低速运行时(<100rpm)出现明显的转矩脉动,电流波形存在6次谐波。

分析: 6次谐波是典型的Park变换角度误差特征。经检查,编码器安装时零位与电机A相轴线存在约15°电角度偏差。该偏差导致Park变换后的id/iq并非真正的励磁/转矩分量,而是混叠了交叉耦合项。

解决: 在MCSDK的ST_MC_StartMotor()前调用ST_MC_Align(),该函数通过开环注入Vd电压使转子锁定到d轴,并自动记录编码器偏移量。重新运行后,6次谐波从±0.3A降至±0.05A,转矩波动明显改善。

注意: 对于带负载启动的场合,Align过程可能因负载转矩过大而失败。此时需采用高频注入法或观测器法进行初始位置辨识,MCSDK的ST_MC_Sensorless库提供了相应方案。

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

3.2.1 核心原理:PI调节器在FOC中的角色

FOC控制中通常包含两个级联的PI调节器:内环为电流环(Id/Iq),外环为速度环。电流环带宽通常为1-2kHz,速度环带宽为50-200Hz。PI调节器的传递函数为:

G(s) = Kp + Ki/s

在数字实现中,采用位置式或增量式算法。MCSDK使用抗积分饱和(Anti-Windup)机制,当输出达到限幅值时,冻结积分项,防止积分饱和导致的超调。

电流环PI参数整定通常基于电机电气时间常数τ = L/R。工程经验法:

  • Kp: 设置为L × 带宽(rad/s),例如L=1mH,带宽2000Hz,则Kp = 0.001 × 2π×2000 ≈ 12.56。
  • Ki: 设置为R × 带宽,例如R=0.5Ω,则Ki = 0.5 × 12560 ≈ 6280。

速度环PI参数则需根据负载惯量调整,MCSDK的ST_MC_CalcPI()工具可根据电机参数自动计算初始值。

3.2.2 操作流程:MCSDK中的PI参数整定步骤

  1. 在mc_parameters.c中配置电机额定电流、相电阻、相电感、极对数。
  2. 使用MCSDK的Motor Profiler工具自动测量电机参数。
  3. 根据测量结果,在ST_MC_Init()中调用ST_MC_SetCurrentPID()设置初始PI值。
  4. 空载运行,逐步增大Kp直至电流环出现轻微振荡,然后回调至70%作为安全值。
  5. 增大Ki以消除稳态误差,观察阶跃响应,确保超调量<10%,调节时间<2ms。

3.2.3 案例拆解:电流环振荡的排障过程

现象可能原因排查方法解决措施
电流高频啸叫Kp过大,采样噪声放大示波器观察PWM中心对齐处的电流纹波降低Kp 30%,增加低通滤波
电流缓慢波动Ki过小,稳态误差未消除检查阶跃响应是否收敛增大Ki 50%
启动时过流报警积分饱和检查PI输出是否长时间处于限幅值启用抗饱和,限制积分分离阈值

实战案例:某无人机电机在高速旋转时(>10000rpm)出现电流振荡,经排查发现是PWM频率(20kHz)与电流环采样频率(10kHz)不匹配,导致采样混叠。将电流环采样改为与PWM同步(20kHz)后,振荡消失。

经验: 在MCSDK中,电流环采样通常与PWM载波同步,确保在每个PWM周期中心点采样,此时电流纹波最小。若使用非对称PWM,需配置ST_MC_SetCurrentSensorOffset()进行偏移补偿。

3.3 SVPWM调制策略:从电压矢量到开关序列

3.3.1 核心原理:空间矢量脉宽调制

SVPWM(Space Vector PWM)基于逆变器8种开关状态(6个有效矢量+2个零矢量),通过在一个PWM周期内合成参考电压矢量。其优势在于:

  • 直流母线电压利用率比SPWM高15.47%
  • 电流谐波畸变率更低
  • 适合数字化实现

实现步骤:

  1. 判断参考电压矢量所在扇区(I-VI)
  2. 计算相邻有效矢量的作用时间T1、T2
  3. 计算零矢量时间T0 = Ts - T1 - T2
  4. 生成七段式或五段式PWM序列

MCSDK的ST_MC_SVPWM()函数采用七段式对称序列,有效降低开关损耗和谐波。其内部使用查表法计算扇区,避免三角函数运算,提高实时性。

3.3.2 判断方法:SVPWM输出正确性验证

使用示波器测量电机三相端电压(对直流母线负端),正常波形应为马鞍形(叠加了三次谐波的正弦波)。若波形为纯正弦,说明SVPWM未生效或调制比过低。进一步检查:

  • PWM占空比是否在0-100%范围内连续变化
  • 死区时间是否设置合理(通常为0.5-2μs)
  • 母线电压采样是否准确,影响过调制判断

3.3.3 实战场景:过调制与弱磁控制的权衡

当电机转速超过基速时,反电动势接近母线电压,需要进入过调制区或弱磁控制。MCSDK提供两种策略:

策略原理优点缺点
过调制允许输出电压矢量超出六边形内切圆实现简单,电压利用率高电流谐波增大,转矩脉动
弱磁控制减小id(负值),削弱永磁磁链调速范围宽,电流波形好需要精确的电机参数,易失稳

案例:某电动压缩机项目,额定转速3000rpm,要求最高6000rpm。采用MCSDK的弱磁控制模块,通过ST_MC_SetFluxWeakening()配置弱磁系数。调试中发现,在5000rpm以上时,id负向增大导致电机退磁风险。最终通过限制最小id值(-2A)并增加温度保护,在保证安全的前提下实现了5500rpm的最高转速。

风险提示: 过调制和弱磁都会增加电机损耗和温升。在MCSDK中,务必配置ST_MC_SetOverModulation()的阈值(通常为1.0-1.05),并监控母线电压波动。若母线电压跌落,应立即退出过调制区,防止电流失控。

3.4 常见误区与总结复盘

3.4.1 坐标变换中的常见误区

  • 角度单位混淆: Park变换中的θ必须为电角度,而非机械角度。MCSDK中ST_MC_GetElectricalAngle()已自动乘以极对数,开发者勿重复换算。
  • 电流方向定义: 确保电流采样方向与电机相序一致。若出现id/iq符号异常,可交换两相电流采样通道或调整编码器方向。
  • 标幺化基准错误: MCSDK默认电流基准为ADC满量程对应的电流值。若电机额定电流远小于该值,会导致PI输出分辨率不足。

3.4.2 PI调节器整定的常见误区

  • 盲目增大Kp: 过大的Kp会放大采样噪声,导致PWM占空比抖动,甚至引发机械共振。
  • 忽略积分限幅: 积分输出应限制在额定电压的80%以内,防止启动时积分饱和。
  • 速度环与电流环带宽比: 速度环带宽应小于电流环带宽的1/5,否则系统不稳定。

3.4.3 SVPWM的常见误区

  • 死区补偿缺失: 死区时间会导致电流波形畸变,尤其在低速轻载时。MCSDK提供ST_MC_SetDeadTimeCompensation(),需根据母线电压和开关频率配置。
  • 母线电压采样滞后: SVPWM输出与母线电压成正比,若采样滞后,会导致电压指令偏差。建议使用硬件同步采样。
  • 扇区判断边界: 当参考电压矢量恰好落在扇区边界时,应使用滞环比较,避免频繁切换扇区导致PWM抖动。
总结复盘: FOC控制的核心在于“变换-控制-逆变换”的闭环链路。坐标变换是基础,PI调节器是核心,SVPWM是执行。在MCSDK开发中,建议遵循“先开环验证、再闭环调试”的流程:先注入固定电压矢量确认电机旋转方向,再逐步闭合电流环和速度环。参数整定应基于电机实测参数,而非理论计算值。遇到问题时,优先检查坐标变换角度和电流采样通道,这两处是80%故障的根源。