1. FOC基础回顾:FOC原理、Clark变换、Park变换、SVPWM核心思想
各位同学好,我是你们的老朋友。今天咱们正式开始《FOC速度环与位置环调优实战》的第一讲。
说实话,FOC(磁场定向控制)这东西,刚接触时确实有点绕。我当年第一次看FOC的框图,满脑子都是问号——这α、β、d、q到底在干嘛?别急,今天我就用最接地气的方式,把这几个核心概念给你讲透。
1.1 FOC到底在干什么?
FOC,说白了就是让电机转得又稳又省电。它的核心思想很简单:把三相交流电机的控制,变成像直流电机一样简单。
你想想看,直流电机多好控制啊——给电压就转,电压越高转得越快。但三相交流电机呢?三根线,电流还一直在变,怎么控?
FOC的思路就是:先通过坐标变换,把三相静止的坐标系,变成两相旋转的坐标系。这样一来,原本随时间变化的交流量,就变成了直流量。控制直流量的PID,咱们可太熟了。
核心思想总结:
- 三相交流 → 两相静止(Clark变换)
- 两相静止 → 两相旋转(Park变换)
- 在旋转坐标系下,用PID控制直流量
- 再通过逆变换,还原成三相电压(SVPWM)
嗯,这里要注意:FOC不是万能的。我在项目中遇到过低速大扭矩的场合,FOC确实比六步换相强太多。但如果你只是做个风扇,六步换相就够用了,别杀鸡用牛刀。
1.2 Clark变换:从三相到两相
Clark变换,就是把三相静止坐标系(A、B、C)变成两相静止坐标系(α、β)。
为什么要这么干?因为三相之间差了120度,计算起来太麻烦。变成两相后,α轴和β轴垂直,数学上好处理得多。
公式其实很简单:
Iα = Ia
Iβ = (Ia + 2*Ib) / √3
等等,你是不是觉得少了点什么?没错,这里假设了三相平衡(Ia + Ib + Ic = 0)。如果三相不平衡,那就得用完整的变换矩阵了。
我的经验:实际项目中,电流采样往往有偏差。我建议你在做Clark变换前,先做一次电流校准。否则变换后的α、β分量会带直流偏置,后面Park变换出来的d、q轴电流也会抖。
1.3 Park变换:从静止到旋转
Clark变换完了,我们有了Iα和Iβ。但这两个量还是随时间变化的(电机在转嘛)。
Park变换就是来解决这个问题的。它把α、β坐标系旋转起来,旋转速度和电机同步。这样,原本旋转的矢量,在新的坐标系下就静止了。
公式:
Id = Iα * cos(θ) + Iβ * sin(θ)
Iq = -Iα * sin(θ) + Iβ * cos(θ)
这里的θ,就是转子位置角。所以你看,FOC必须要有位置传感器(或者无传感器算法),否则Park变换没法做。
我个人习惯把Id叫做「励磁电流」,Iq叫做「转矩电流」。为什么?因为Id产生磁场,Iq产生力矩。控制电机,说白了就是控制Iq。
避坑指南:我曾经在调试时发现Iq给上去,电机就是不动。查了半天,原来是Park变换的角度搞反了。记住:Park变换的角度,是转子磁极的位置,不是编码器的原始值。两者之间可能有偏移,需要做角度校准。
1.4 SVPWM核心思想
SVPWM,全称是空间矢量脉宽调制。它的目标很简单:用开关管的通断,合成出我们想要的电压矢量。
传统的SPWM(正弦脉宽调制)是分别调制三相,但SVPWM更聪明——它把三相看作一个整体,直接合成旋转的电压矢量。
SVPWM的核心步骤:
- 判断目标电压矢量在哪个扇区
- 计算相邻两个基本矢量的作用时间
- 计算零矢量的作用时间
- 生成PWM波形
这里我画了一张图,帮你理解SVPWM的扇区划分和矢量合成逻辑:
你看这张图,六边形被分成了6个扇区。每个扇区由两个基本矢量围成。我们要合成的目标矢量Vref,就由这两个基本矢量按时间比例合成。
比如Vref在扇区I,那就用V1和V2来合成。T1是V1的作用时间,T2是V2的作用时间,剩下的时间用零矢量(V0或V7)填充。
SVPWM相比SPWM的优势:
- 直流母线电压利用率更高(可提升约15%)
- 谐波含量更低
- 更适合数字化实现
1.5 三者之间的关系
Clark变换、Park变换、SVPWM,这三者构成了FOC的完整链路:
| 步骤 | 输入 | 输出 | 作用 |
|---|---|---|---|
| Clark变换 | Ia, Ib, Ic | Iα, Iβ | 三相→两相静止 |
| Park变换 | Iα, Iβ, θ | Id, Iq | 两相静止→两相旋转 |
| PID控制 | Id_ref, Iq_ref | Vd, Vq | 在旋转坐标系下控制 |
| 逆Park变换 | Vd, Vq, θ | Vα, Vβ | 两相旋转→两相静止 |
| SVPWM | Vα, Vβ | PWM占空比 | 合成电压矢量 |
说白了,整个FOC就是:采样电流 → 变换到旋转坐标系 → PID控制 → 变换回静止坐标系 → 生成PWM。每一步都有它的物理意义,缺一不可。
我的建议:刚开始学FOC时,别急着调参数。先把Clark、Park、SVPWM这三个变换的代码写对,然后用仿真验证。我当年就是直接在板子上调,结果电流波形乱七八糟,后来才发现是Park变换的角度符号搞反了。先在仿真里跑一遍,能省很多时间。
好了,FOC的基础就回顾到这里。这些内容虽然基础,但非常重要。后面的速度环和位置环调优,全都建立在这些变换之上。如果你对Clark、Park、SVPWM还有疑问,建议多看几遍,或者动手写写代码。实践出真知嘛。