这一章在干嘛?
FOC(Field Oriented Control,磁场定向控制)把三相交流电机的电流变换到随转子磁场旋转的坐标系中,让交流电机获得类似直流电机的“磁链电流 + 转矩电流”独立控制能力。
1. FOC 要解决什么问题
三相绕组中的电流随时间和转子位置变化,直接控制相电流很难同时获得平滑转矩、快速响应和较低噪声。FOC 的核心思路是:
- 采样两相或三相电流;
- 通过 Clarke 变换得到静止 αβ 坐标系电流;
- 通过 Park 变换得到同步旋转 dq 坐标系电流;
- 用两个 PI 控制器分别调节
i_d与i_q; - 将电压指令反变换,并通过 SVPWM 生成三相桥臂 PWM。
对于表贴式永磁同步电机(SPMSM),通常令 i_d ≈ 0,用 i_q 主要产生电磁转矩;对于内嵌式永磁同步电机(IPMSM),还可以利用负 i_d 实现弱磁和磁阻转矩控制。
2. 坐标变换
2.1 Clarke 变换
在三相平衡且 i_a + i_b + i_c = 0 时,只需采样两相电流即可重建第三相:
常用的幅值不变 Clarke 变换为:
2.2 Park 变换
设电角度为 θ_e,则:
角度误差会直接造成 d/q 轴串扰,因此编码器、霍尔或观测器提供的电角度必须经过极对数换算与零位校准:
其中 p 为极对数,θ_m 为机械角,θ_offset 为电气零位偏移。
3. 电流环与解耦
在同步旋转坐标系中,PI 电流环分别计算 u_d 和 u_q。基础控制律可写成:
其中:
永磁同步电机模型中存在速度耦合项。工程实现常加入前馈解耦:
实际项目还必须加入电压限幅、PI 积分抗饱和、采样偏置校准和死区补偿,否则高速或大负载时容易出现电流畸变。
4. SVPWM 基本流程
SVPWM 将 u_α、u_β 电压矢量映射到逆变器六个扇区。每个 PWM 周期内,用相邻两个有效矢量和零矢量合成参考矢量:
计算后得到三相比较值,并写入定时器 CCR。实现时应注意:
- 采样点尽量安排在 PWM 中点,避开开关瞬态;
- 比较值必须限制在安全调制范围内;
- 更新 CCR 时使用预装载,避免半周期内突变;
- 过调制和母线电压下降时需要重新计算限幅策略;
- 关断、刹车和故障状态必须由硬件保护链路优先处理。
5. 启动与闭环切换
无位置传感器 FOC 通常按以下阶段启动:
- 转子预定位:施加固定 d 轴或定向电流,使转子落到已知电角度;
- 开环加速:逐步增加电角速度和
i_q,让反电动势达到可观测水平; - 观测器接管:检查估算角度与开环角度的误差,满足阈值后平滑切换;
- 闭环运行:进入速度环和电流环正常调节。
切换不能简单地瞬间替换角度,应采用角度连续、速度连续和 PI 状态连续的方式,否则会产生明显电流冲击。
6. STM32 实现检查表
- ADC 触发与 PWM 同步,DMA 缓冲区有明确的采样时刻;
- 电流零点在上电静止时多次采样平均,避免单次采样误差;
- ADC 原始值经过比例系数转换为安培,确认符号方向一致;
- 电角度范围归一化到
[0, 2π),查表或硬件sin/cos的单位一致; - 电流 PI 的积分项使用限幅和反算抗饱和;
u_d/u_q合成电压不能超过母线允许的矢量幅值;- 过流、欠压、过温和驱动器故障进入硬件关断或安全态;
- 串口调试输出不要放在高频控制中断中,避免抖动采样周期。
7. 小结
FOC 并不是某一段固定代码,而是一条完整控制链:采样 → 坐标变换 → 电流调节 → 解耦限幅 → 反变换 → SVPWM → 功率级反馈。调试时应先固定电机参数和电流方向,逐环验证,再逐步提高转速与负载;任何“角度、极性、单位、采样时序”错误,都可能表现为电流发散或电机抖动。