1. FOC基础回顾:从原理到三环架构

做电机控制这些年,我见过太多人一上来就调PID参数,结果电流乱窜、电机嗡嗡响,最后连问题出在哪都不知道。说白了,FOC(磁场定向控制)不是玄学,它有一套清晰的数学逻辑。这一章我们就把底层的坐标变换、SVPWM调制、三环架构彻底捋一遍。

我个人习惯是:先理解物理意义,再套公式。你想想看,如果连Clark变换为什么要把三相变两相都搞不清楚,后面调参就是瞎蒙。

1.1 FOC控制原理——它在干什么?

FOC的核心目标只有一个:让电机像直流电机一样好控。

直流电机你给电压就转,转矩和电流基本线性。但交流电机(永磁同步电机PMSM、异步电机)的磁场和转矩是耦合在一起的,直接控制三相电压,转矩会抖得像筛子。

FOC的做法很巧妙——它通过坐标变换,把三相交流电机的数学模型,等效成一个直流电机模型。然后你就可以像控制直流电机一样,独立控制励磁分量(d轴)和转矩分量(q轴)。

核心公式(永磁同步电机转矩):

T_e = 1.5 * p * [ψ_f * i_q + (L_d - L_q) * i_d * i_q]

其中:p是极对数,ψ_f是永磁体磁链,L_d/L_q是d/q轴电感。对于表贴式电机(L_d ≈ L_q),转矩只和i_q成正比——这就是FOC的精髓。

我在项目中遇到过有人把i_d设成0,电机也能转,但效率不是最优。对于内置式电机(L_d < L_q),你需要注入负的i_d来利用磁阻转矩,这就是MTPA(最大转矩电流比)控制的基础。

1.2 坐标变换——Clark与Park

坐标变换是FOC的数学骨架。没有它,你看到的只是一堆正弦波。

1.2.1 Clark变换(3相 → 2相静止坐标系)

把三相电流i_a、i_b、i_c,投影到α-β两相静止坐标系上。说白了,就是把三个轴简化为两个垂直轴。

// Clark变换(等幅值变换)
i_alpha = i_a
i_beta  = (i_a + 2 * i_b) / √3

// 或者用矩阵形式
[i_alpha]   [ 1,    -1/2,   -1/2 ] [i_a]
[i_beta ] = [ 0,   √3/2,  -√3/2 ] [i_b]
                                   [i_c]

避坑指南:我曾经在项目里用错了等功率变换和等幅值变换的系数,导致电流环PI参数差了一个√3倍。记住:等幅值变换是电机控制最常用的,因为电流采样值直接对应物理值。

1.2.2 Park变换(2相静止 → 2相旋转坐标系)

Park变换把α-β静止坐标系,旋转到与转子磁场同步的d-q旋转坐标系。旋转角度就是转子位置角θ。

// Park变换
i_d =  i_alpha * cos(θ) + i_beta * sin(θ)
i_q = -i_alpha * sin(θ) + i_beta * cos(θ)

做完Park变换,你得到的i_d和i_q就是直流量了。这时候用PI控制器去跟踪,稳得很。

嗯,这里要注意:Park变换需要准确的转子位置。如果角度有偏差,d轴和q轴会串扰。我调试过一个项目,电机空载正常,一带载就抖,最后发现是编码器安装偏心导致角度误差。

1.3 SVPWM调制——如何让逆变器输出正弦波?

坐标变换算出了你想要的d-q轴电压,但逆变器只能输出6个开关管的高低电平。SVPWM(空间矢量脉宽调制)就是干这个的——它用8个基本电压矢量,合成任意方向和大小的电压矢量。

为什么用SVPWM而不是SPWM?因为SVPWM的母线电压利用率更高(比SPWM高15%),谐波也更小。

调制方式 电压利用率 谐波特性 实现复杂度
SPWM 0.866 * Vdc 谐波集中在载波频率附近 低
SVPWM 1.0 * Vdc 谐波分布更优,THD更低 中
DPWM(不连续PWM) 1.0 * Vdc 开关损耗降低30% 高

SVPWM的实现步骤大致如下:

  1. 判断目标电压矢量所在的扇区(共6个扇区)
  2. 计算相邻两个基本矢量的作用时间(T1、T2)
  3. 计算零矢量(V0或V7)的作用时间(T0)
  4. 生成对称的PWM比较值

警告:SVPWM的过调制区(电压矢量幅值超过六边形内切圆)会导致输出电压畸变。我曾经在高速弱磁区没处理好过调制,结果电流波形出现明显的削顶,电机振动加剧。建议在工程实现中,对电压指令做限幅处理,并加入过调制补偿算法。

1.4 三环架构——电流环、速度环、位置环

FOC控制通常采用串级控制结构:内环是电流环,中间是速度环,最外层是位置环。为什么这样设计?因为内环的响应速度必须比外环快,才能保证稳定性。

我一般这样设置带宽:

  • 电流环: 1-2 kHz(响应最快)
  • 速度环: 50-200 Hz(比电流环慢10倍左右)
  • 位置环: 10-50 Hz(最慢)

你想想看,如果速度环的带宽和电流环一样,那速度环的调节就会和电流环的调节打架,系统很容易振荡。

1.4.1 电流环

电流环是FOC的基石。它控制d轴电流i_d和q轴电流i_q。d轴电流控制励磁,q轴电流控制转矩。PI控制器的输出就是d-q轴电压指令。

电流环的PI参数整定,我推荐用极点配置法:

// 以q轴为例(忽略反电动势耦合)
Kp_q = L_q * ω_bw
Ki_q = R_s * ω_bw

其中:ω_bw = 2π * f_bw(期望的电流环带宽,单位rad/s)
L_q:q轴电感,R_s:定子电阻

个人经验:实际调试时,我会先给一个保守的带宽(比如500Hz),然后逐步增加,直到电流波形出现振荡前停下来。另外,别忘了加入解耦补偿——d轴和q轴之间存在交叉耦合,不解耦的话,高速时电流会互相影响。

1.4.2 速度环

速度环在电流环外面。它的输出是q轴电流指令i_q_ref。速度环的PI参数通常用对称最优法或工程整定法。

我习惯的做法是:先让电流环稳定工作,然后给速度环一个阶跃指令,观察响应。如果超调太大,就减小Kp;如果响应太慢,就增大Ki。

1.4.3 位置环

位置环在最外层,通常只用P控制器(不加积分项),因为位置误差的积分会导致稳态振荡。位置环的输出是速度指令。

位置环的P增益可以这样估算:

Kp_pos = ω_bw_pos(期望的位置环带宽,单位rad/s)

举个例子:如果你希望位置环的响应带宽是20Hz,那么Kp_pos ≈ 2π * 20 ≈ 125.6。

1.5 知识体系总览

下面这张图把FOC的核心流程串起来了。我建议你把它记在脑子里——以后排查故障时,每一步都可能出问题。

FOC矢量控制知识体系总览 三相电流 / 位置 Clark变换 (3相→αβ) Park变换 (αβ→dq) 三环控制 (位置环 → 速度环 → 电流环) i_d_ref / i_q_ref → PI → v_d / v_q 逆Park变换 (dq→αβ) SVPWM调制 → 逆变器 位置/速度反馈 关键:每一步都可能引入误差 排查故障时按流程逐级检查

这张图里,从三相电流采样开始,经过Clark、Park变换得到d-q电流,然后进入三环控制器,输出d-q电压,再经过逆Park变换和SVPWM,最终驱动逆变器。反馈路径把位置和速度信息送回控制器,形成闭环。

好了,FOC的基础框架就是这样。后面的章节我们会逐一拆解每个环节的故障现象和排查方法。记住:基础不牢,地动山摇——坐标变换的符号、PI参数的极性、SVPWM的扇区判断,任何一个细节出错,电机都不会好好转。