3、FOC控制原理:磁场定向控制(FOC)的坐标变换(Clarke/Park)、PI调节器、SVPWM调制策略
磁场定向控制(Field Oriented Control,FOC)是现代高性能电机控制的核心算法,其本质是通过数学变换将交流电机在三相静止坐标系下的强耦合、非线性交流量,等效为两相旋转坐标系下的直流分量,从而实现对电机磁链与转矩的解耦控制。在STM32电机控制库MCSDK中,FOC算法被封装为高效的数学库函数,开发者无需从零编写坐标变换与SVPWM底层代码,但理解其数学原理与工程实现边界,是进行参数整定、性能调优和故障排查的前提。本章将围绕Clarke/Park变换、PI调节器设计以及SVPWM调制策略三个核心模块展开,并结合MCSDK的代码实现进行实战映射。
上图展示了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。
ST_MC_Clarke()和ST_MC_Park()函数采用Q15或Q24定点格式,输入输出均为标幺值。开发者需注意电流采样增益与ADC满量程的匹配,确保标幺化后电流值在±1.0范围内,否则会触发过流保护。
3.1.2 判断方法:坐标变换正确性的验证
在调试FOC时,坐标变换错误是最隐蔽的故障源。建议按以下步骤验证:
- 静态测试: 给电机注入直流电流(如ia=1A, ib=-0.5A, ic=-0.5A),用示波器观察iα/iβ波形,应呈现正弦/余弦关系。
- 旋转测试: 手动缓慢旋转电机轴,观察id/iq波形。若id/iq为恒定值(不随角度变化),说明Park变换角度正确;若存在2倍频波动,则可能是角度偏移或编码器零位未校准。
- 角度对齐: 在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,转矩波动明显改善。
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参数整定步骤
- 在
mc_parameters.c中配置电机额定电流、相电阻、相电感、极对数。 - 使用MCSDK的
Motor Profiler工具自动测量电机参数。 - 根据测量结果,在
ST_MC_Init()中调用ST_MC_SetCurrentPID()设置初始PI值。 - 空载运行,逐步增大Kp直至电流环出现轻微振荡,然后回调至70%作为安全值。
- 增大Ki以消除稳态误差,观察阶跃响应,确保超调量<10%,调节时间<2ms。
3.2.3 案例拆解:电流环振荡的排障过程
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 电流高频啸叫 | Kp过大,采样噪声放大 | 示波器观察PWM中心对齐处的电流纹波 | 降低Kp 30%,增加低通滤波 |
| 电流缓慢波动 | Ki过小,稳态误差未消除 | 检查阶跃响应是否收敛 | 增大Ki 50% |
| 启动时过流报警 | 积分饱和 | 检查PI输出是否长时间处于限幅值 | 启用抗饱和,限制积分分离阈值 |
实战案例:某无人机电机在高速旋转时(>10000rpm)出现电流振荡,经排查发现是PWM频率(20kHz)与电流环采样频率(10kHz)不匹配,导致采样混叠。将电流环采样改为与PWM同步(20kHz)后,振荡消失。
ST_MC_SetCurrentSensorOffset()进行偏移补偿。
3.3 SVPWM调制策略:从电压矢量到开关序列
3.3.1 核心原理:空间矢量脉宽调制
SVPWM(Space Vector PWM)基于逆变器8种开关状态(6个有效矢量+2个零矢量),通过在一个PWM周期内合成参考电压矢量。其优势在于:
- 直流母线电压利用率比SPWM高15.47%
- 电流谐波畸变率更低
- 适合数字化实现
实现步骤:
- 判断参考电压矢量所在扇区(I-VI)
- 计算相邻有效矢量的作用时间T1、T2
- 计算零矢量时间T0 = Ts - T1 - T2
- 生成七段式或五段式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的最高转速。
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抖动。