FOC 原理与矢量控制详解

FOC 原理与矢量控制详解 关注星标公众号不错过精彩内容来源 | 极客工作室FOCField Oriented Control磁场定向控制是现代电机控制的圣杯是理解后续所有高级算法的基础。为什么 FOC 如此重要想象一下你有一辆电动汽车使用方波控制效率 75%噪音大低速抖动使用 FOC 控制效率 95%安静平顺低速丝滑这就是 FOC 的魔力本文你将学到矢量控制的基本思想核心旋转磁场与电流矢量的关系为什么 Id0 控制最优FOC 系统完整框图FOC vs 方波控制的对比前置知识电机基础初阶篇①数学模型初阶篇②三角函数基础矢量概念准备好了吗让我们一起揭开 FOC 的神秘面纱一、控制的核心问题如何产生最大转矩1.1 一个直观的例子让我们从一个简单的例子开始场景你要推一个旋转门 情况 A你沿着门的切线方向推 → 推力全部用于旋转门 → 效率 100% 情况 B你斜着推与切线成 45° → 只有一部分推力用于旋转 → 效率 70.7% 情况 C你正对着门轴推 → 推力全部浪费 → 效率 0%结论推力的方向比大小更重要1.2 电机的推力是什么对于电机来说这个推力就是定子电流产生的磁场。┌─────────────────────────────────────────────────────────┐ │ 电机转矩产生的物理过程 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 定子电流 → 定子磁场 → 与转子磁场作用 → 产生转矩 │ │ ↓ ↓ ↓ ↓ │ │ I → Bs → 相互作用 → Te │ │ │ └─────────────────────────────────────────────────────────┘关键问题定子磁场应该指向什么方向才能产生最大转矩1.3 直觉的答案回顾一下电磁学基础转矩公式T K × |Bs| × |Br| × sin(θ) 其中 Bs - 定子磁场幅值 Br - 转子磁场幅值永磁体产生固定 θ - 定子磁场与转子磁场的夹角显然当 θ 90°时sin(θ) 1转矩最大当 θ 0°时sin(θ) 0转矩为零这就是 FOC 的核心思想让定子磁场始终与转子磁场保持 90°夹角定子磁场 Bs ↑ │ │ 90° │ 转子磁场 Br ←┼→ 转子永磁体 (N-S) │ │ │但问题是转子在旋转如何保持这个 90°夹角答案使用坐标变换和闭环控制——这就是 FOC二、矢量控制的基本思想2.1 什么是矢量在电机控制中矢量指的是有大小和方向的物理量。常见的矢量电流矢量电压矢量磁场矢量磁链矢量标量 vs 矢量标量矢量只有大小有大小和方向如温度、电阻如力、速度、磁场用一个数表示用多个分量表示2.2 三相电流如何表示为矢量这是理解 FOC 的关键一步三相电流ia Im × cos(ωt) ib Im × cos(ωt - 120°) ic Im × cos(ωt - 240°)这三个时变的正弦量可以合成为一个旋转矢量空间矢量图 ↑ / \ / \ / \ / · \ ← 合成矢量 Is / / \ / / \ // \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ ───────────────────────────────────────────────────合成电流矢量的定义Is 2/3 × (ia ib × e^(j×120°) ic × e^(j×240°)) 其中 Is - 合成电流矢量复数表示 e^(j×θ) cos(θ) j×sin(θ)欧拉公式这个公式的物理意义将三相静止绕组中的电流映射到一个旋转矢量矢量的幅值代表电流大小矢量的角度代表电流的空间方向2.3 为什么需要矢量表示问题三相交流控制很复杂三个变量相互耦合都是时变的正弦波难以直观理解解决用矢量表示后多个变量合成一个矢量可以用几何方法分析物理意义清晰类比三相控制同时抛接 3 个球 ‍♂️‍♂️‍♂️ 矢量控制只关注 1 个合成轨迹 2.4 旋转磁场的产生当我们在三相绕组中通入对称三相电流时会产生旋转磁场时刻 t1: 时刻 t2: 时刻 t3: ↑ Bs ↗ Bs → Bs │ / │ │ / │ ←──┼──→ ←──┼──→ ←──┼──→ │ / │ │ │ / │ │ ↓ ↙ ↓ ia 正峰 ib 正峰 ic 正峰旋转磁场的特性幅值恒定|Bs| 常数匀速旋转角速度 电流频率方向由相序决定这就是交流电机的魔法三相静止绕组 → 一个旋转磁场三、FOC 的核心坐标变换3.1 为什么需要坐标变换问题回顾在 abc 三相坐标系中变量都是交流量时变三相相互耦合控制器设计困难理想情况变量是直流量恒定变量之间解耦像控制直流电机一样简单解决方案坐标变换abc 坐标系 → Clark 变换 → αβ坐标系 → Park 变换 → dq 坐标系 (三相交流) (3→2) (两相静止) (旋转→静止) (两相直流)3.2 Clark 变换3/2 变换目的将三相变量转换为两相静止变量┌ ┐ ┌ ┐ ┌ ┐ │iα │ 2 │1 -1/2 -1/2 │ │ia │ │ │ ─ × │ │×│ │ │iβ │ 3 │0 √3/2 -√3/2 │ │ib │ └ ┘ └ ┘ └ ┘ 逆变换 ┌ ┐ ┌ ┐ ┌ ┐ │ia │ │1 0 │ │iα │ │ │ │ │×│ │ │ib │ │-1/2 √3/2 │ │iβ │ │ │ │ │ │ │ │ic │ │-1/2 -√3/2 │ └ ┘ └ ┘ └ ┘ 注ic -ia - ib所以只有两个独立变量物理意义将三相静止绕组 → 两相静止绕组变量从 3 个减少到 2 个仍然是交流量β轴 ↑ │ │ │ │ │ │ │ │ │ │ ─────────┼─────────→ α轴 │ │ │ │ │ │ │ │ │ │3.3 Park 变换旋转变换目的将静止坐标系转换为旋转坐标系┌ ┐ ┌ ┐ ┌ ┐ │id │ │cosθ sinθ │ │iα │ │ │ │ │×│ │ │iq │ │-sinθ cosθ │ │iβ │ └ ┘ └ ┘ └ ┘ 逆变换 ┌ ┐ ┌ ┐ ┌ ┐ │iα │ │cosθ -sinθ │ │id │ │ │ │ │×│ │ │iβ │ │sinθ cosθ │ │iq │ └ ┘ └ ┘ └ ┘ 其中θ 转子电角度物理意义将静止坐标系 → 与转子同步旋转的坐标系交流量 → 直流量d 轴与转子磁场对齐励磁方向q 轴与转子磁场垂直转矩方向旋转的 dq 坐标系 q 轴 ↑ │ │ │ │ d 轴 ←─────┼─────→ 转子磁场方向 (Br) │ │ │ │ │3.4 变换后的简化模型经过 Clark Park 变换后PMSM 的模型大大简化电压方程ud Rs × id Ld × did/dt - ωe × Lq × iq uq Rs × iq Lq × diq/dt ωe × (Ld × id ψf)转矩方程Te 3/2 × p × [ψf × iq (Ld - Lq) × id × iq]对于 SPMSM表贴式Ld LqTe 3/2 × p × ψf × iq关键结论转矩只与 iq 成正比id 对转矩没有贡献可以设为 0id 和 iq 完全解耦这就是 FOC 的数学基础四、Id0 控制最优策略4.1 为什么 Id0回顾转矩公式SPMSMTe 3/2 × p × ψf × iq观察转矩只与 iq 相关id 对转矩没有贡献那么 id 的作用是什么对于 SPMSMid 会产生去磁效应但不增加转矩id 0: 增强磁场 → 铁损增加 → 效率降低 id 0: 削弱磁场 → 可用于弱磁升速 id 0: 最优效率点Id0 控制的好处优点说明效率最高无谓的励磁电流最小控制简单只需控制 iq转矩线性Te ∝ iq便于控制发热最小铜损最小4.2 电流矢量的几何解释让我们用矢量图来理解q 轴 ↑ │ │ Is │ ↗ │ /│ │ / │ │ / │ │ / │id │ / θ │ │ ─────┼───┼────→ d 轴 (转子磁场方向) │ │ │ │ │ │ │ │ ↓ │ iq │电流矢量分解Is √(id² iq²) θ arctan(iq / id)Id0 时id 0 iq Is θ 90° 即电流矢量与转子磁场垂直这正是我们之前说的最优推力方向4.3 最大转矩电流比MTPA对于 IPMSM内嵌式Ld ≠ Lq转矩公式Te 3/2 × p × [ψf × iq (Ld - Lq) × id × iq] └─────────────┘ └──────────────────┘ 永磁转矩 磁阻转矩此时 Id0 不是最优需要优化 id 和 iq 的比例使得在给定电流幅值下转矩最大约束Is² id² iq² 常数 目标最大化 Te 解得 MTPA 曲线 id (ψf - √(ψf² 8×(Lq-Ld)²×iq²)) / (4×(Lq-Ld))MTPA 控制将在进阶篇详细讲解。五、FOC 系统完整框图5.1 系统架构┌─────────────────────────────────────────────────────────────────┐ │ FOC 控制系统框图 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 目标转速 ω* │ │ ↓ │ │ ┌─────────┐ │ │ │速度 PID │ → 目标转矩 Te* → 目标 iq* │ │ └─────────┘ ↓ │ │ ┌─────────┐ │ │ 目标 id* 0 ────────────────────→│电流 PID │ → uq* │ │ └─────────┘ │ │ ↓ │ │ ┌─────────┐ │ │ │Park 逆 │ → uα*, uβ* │ │ │变换 │ │ │ └─────────┘ │ │ ↓ │ │ ┌─────────┐ │ │ │SVPWM │ → PWM 信号 │ │ │调制 │ │ │ └─────────┘ │ │ ↓ │ │ ┌─────────┐ │ │ │三相逆变 │ → 电机 │ │ │桥 │ │ │ └─────────┘ │ │ ↓ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │Clark │ ←─── │Park │ ←─── │位置/速度│ ←─── 编码器 │ │ │变换 │ ia,ib│变换 │ θe │检测 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ ↑ │ │ │ │ │ 电流采样 │ │ │ └─────────────────────────────────────────────────────────────────┘5.2 控制回路详解FOC 包含三个闭环1. 电流环最内环目标快速跟踪 id* 和 iq* 带宽最高通常 1-5kHz 控制器PI 调节器 输出ud* 和 uq*为什么电流环最重要直接控制转矩响应最快决定系统稳定性2. 速度环中间环目标跟踪目标转速 ω* 带宽中等通常 100-500Hz 控制器PI 调节器 输出目标转矩 Te* → iq*3. 位置环最外环可选目标跟踪目标位置 θ* 带宽最低通常 10-100Hz 控制器P 或 PI 调节器 输出目标转速 ω*三环关系位置环 → 速度环 → 电流环 → 电机 (最慢) (中等) (最快)设计原则内环带宽 外环带宽通常 5-10 倍5.3 关键模块说明电流采样方法 1. 三相采样3 个 ADC- 最准确 2. 两相采样2 个 ADC- 常用 3. 单电阻采样1 个 ADC- 成本最低 同步需要在 PWM 特定时刻采样避免开关噪声Clark/Park 变换计算量 - Clark: 4 次乘法 2 次加法 - Park: 4 次乘法 2 次加法 优化使用查表法或 CORDIC 算法SVPWM 调制目的将 ud*, uq* 转换为三相 PWM 占空比 优势 - 母线电压利用率高比 SPWM 高 15.5% - 谐波含量低 - 易于数字化实现 将在初阶篇⑥详细讲解位置/速度检测有传感器 - 编码器ABZ、绝对式 - 旋转变压器 - 霍尔传感器 无传感器 - 滑模观测器 - 龙伯格观测器 - 高频注入 将在进阶篇详细讲解六、FOC vs 方波控制性能对比6.1 控制原理对比特性方波控制FOC 控制电流波形方波正弦波换相方式6 步换相连续控制磁场方向离散 6 个位置连续跟踪控制变量三相开关状态id, iq6.2 性能对比指标方波控制FOC 控制提升效率75-85%90-97%15%转矩脉动大换相时极小-80%噪音大小-10dB低速性能差抖动优秀显著高速性能一般优秀可弱磁显著控制带宽低高5-10 倍MCU 要求低M0 即可高需要 F4/G4-成本低中等-6.3 波形对比方波控制电流 Ia: ┌─┐ ┌─┐ ┌─┐ │ │ │ │ │ │ │ │ │ │ │ │ └─┘ └─┘ └─┘ └───┘ └───┘ 转矩: ╱╲ ╱╲ ╱╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╱ ╱ ╱ 明显的 6 脉动FOC 控制电流 Ia: ╱╲ ╱╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ 转矩: ───────────────── 几乎恒定6.4 应用场景方波控制适用成本敏感的应用性能要求不高电动工具、风扇、低成本无人机FOC 控制适用高性能应用需要精确控制伺服系统、电动汽车、高端无人机、机器人七、实战FOC 参数整定7.1 电流环 PI 参数被控对象模型G(s) 1 / (Rs Ls × s) 近似为一阶惯性环节 G(s) K / (T × s 1) 其中 K 1/Rs T Ls/RsPI 控制器C(s) Kp Ki/s 整定方法极点配置 Kp Ls × ωc Ki Rs × ωc 其中 ωc 是期望的电流环带宽rad/s示例电机参数Rs 0.5Ω, Ls 2mH 期望带宽fc 1kHz → ωc 2π × 1000 6283 rad/s 计算 Kp 0.002 × 6283 12.6 Ki 0.5 × 6283 31427.2 速度环 PI 参数被控对象模型简化G(s) Kt / (J × s B) 近似为积分环节 G(s) ≈ Kt / (J × s)PI 控制器整定Kp J × ωc / Kt Ki B × ωc / Kt 其中 ωc 是期望的速度环带宽示例电机参数J 0.0001 kg·m², Kt 0.05 N·m/A, B 0.0001 期望带宽fc 100Hz → ωc 628 rad/s 计算 Kp 0.0001 × 628 / 0.05 1.26 Ki 0.0001 × 628 / 0.05 1.267.3 整定步骤实际调试流程1. 锁定转子整定电流环 - 给 iq* 阶跃信号 - 观察 iq 响应 - 调整 Kp、Ki直到响应快且无超调 2. 释放转子整定速度环 - 给ω* 阶跃信号 - 观察转速响应 - 调整 Kp、Ki直到响应平稳 3. 联调优化 - 测试各种工况 - 微调参数 - 验证稳定性经验法则电流环带宽1-5kHz速度环带宽100-500Hz速度环带宽 ≈ 电流环带宽 / 10八、FOC 的实现代码框架8.1 主控制循环// FOC 主控制循环定时中断如 10kHz voidFOC_Control_ISR(void) { // 1. 电流采样 ia ADC_Read_Channel_A(); ib ADC_Read_Channel_B(); ic -ia - ib; // 基尔霍夫定律 // 2. Clark 变换 i_alpha ia; i_beta (ia 2*ib) / sqrt(3); // 3. Park 变换 cos_theta cos(theta_e); sin_theta sin(theta_e); i_d i_alpha * cos_theta i_beta * sin_theta; i_q -i_alpha * sin_theta i_beta * cos_theta; // 4. 电流环 PI 控制 // d 轴id* 0Id0 控制 error_d 0 - i_d; u_d PI_Controller(pi_d, error_d); // q 轴iq* 来自速度环 error_q iq_ref - i_q; u_q PI_Controller(pi_q, error_q); // 5. Park 逆变换 u_alpha u_d * cos_theta - u_q * sin_theta; u_beta u_d * sin_theta u_q * cos_theta; // 6. SVPWM 生成 SVPWM_Generate(u_alpha, u_beta); // 7. 位置更新如果有编码器 theta_e Encoder_GetAngle(); omega_e (theta_e - theta_e_prev) / dt; theta_e_prev theta_e; }8.2 速度环较低频率如 1kHz// 速度环控制较低频率 void Speed_Control(void) { // 速度 PI 控制 error_speed speed_ref - omega_m; torque_ref PI_Controller(pi_speed, error_speed); // 转矩限幅 if (torque_ref TORQUE_MAX) torque_ref TORQUE_MAX; if (torque_ref -TORQUE_MAX) torque_ref -TORQUE_MAX; // 转矩 → iq 映射 iq_ref torque_ref / (1.5 * p * psi_f); }8.3 关键注意事项1. 定点 vs 浮点浮点F4/G4 - 精度高 - 编程简单 - 成本稍高 定点M0/M3 - 成本低 - 需要 Q 格式 - 编程复杂2. 计算延迟延迟来源 - ADC 采样延迟 - 计算延迟 - PWM 更新延迟 影响降低相位裕度可能不稳定 解决 - 提高控制频率 - 优化代码查表、汇编优化 - 预测补偿3. 抗积分饱和// PI 控制器需要抗饱和 typedefstruct { float Kp, Ki; float integral; float output_max; float output_min; } PI_Controller; floatPI_Controller_Update(PI_Controller *pi, float error) { // 比例项 float p pi-Kp * error; // 积分项带限幅 pi-integral error * pi-Ki; if (pi-integral pi-output_max) pi-integral pi-output_max; if (pi-integral pi-output_min) pi-integral pi-output_min; // 输出 float output p pi-integral; if (output pi-output_max) output pi-output_max; if (output pi-output_min) output pi-output_min; return output; }总结本文我们深入讲解了 FOC 的核心原理核心要点FOC 的本质是让定子磁场始终与转子磁场保持 90°坐标变换将交流量转换为直流量简化控制Id0 控制对于 SPMSM 是最优策略FOC 包含电流环、速度环、位置环三个闭环FOC 性能远超方波控制效率、噪音、平稳性技术难点坐标变换的物理意义理解电流矢量与磁场的关系三环带宽的设计原则学习建议理解矢量图的几何意义动手推导坐标变换公式运行仿真代码观察波形------------END------------STM32CubeMX2对应的HAL2和之前HAL完全不兼容跳表在嵌入式里可玩性很高单片机项目为什么需要看门狗