第一讲:FOC基础回顾
各位工程师朋友,咱们今天先聊聊FOC的基础。别觉得基础就简单,我做了这么多年电机控制,发现很多坑恰恰是基础不牢导致的。好,咱们开始。
一、FOC控制原理——说白了就是“解耦”
FOC,全称是Field-Oriented Control,磁场定向控制。名字听着高大上,其实核心思想就两个字:解耦。
你想想看,三相电机本来三个绕组互相耦合,电流一通,磁场乱转。我们想要控制转矩,结果电压一变,磁通也跟着变,牵一发动全身。这怎么搞?
FOC的思路很巧妙:把三相交流电机,假装成直流电机来控制。
直流电机多好控制啊——电枢电流控制转矩,励磁电流控制磁场,两个回路互不干扰。FOC就是通过坐标变换,把三相静止坐标系下的交流量,变成两相旋转坐标系下的直流量。这样一来,转矩和磁通就解耦了。
核心控制框图(我习惯这样画):
速度环 → 电流环(d轴、q轴) → 反Park变换 → SVPWM → 逆变器 → 电机
↑
Clark + Park变换 ← 电流采样
我在项目中遇到过一个问题:速度环带宽设得太高,结果电流环跟着震荡。后来我总结了一个经验——速度环带宽通常是电流环的1/5到1/10。这个比例你记着,调试时能省不少时间。
二、Clark变换与Park变换——数学工具,别怕
很多工程师一看到矩阵变换就头疼。其实你把它当成一个“翻译器”就好。
2.1 Clark变换:三相→两相
Clark变换把三相静止坐标系(a, b, c)变成两相静止坐标系(α, β)。说白了,就是把三个互相差120度的量,投影到两个互相垂直的轴上。
公式长这样:
[Iα] [ 1, -1/2, -1/2 ] [Ia]
[Iβ] = [ 0, √3/2, -√3/2] [Ib]
[Ic]
嗯,这里要注意:等幅值变换和等功率变换的系数不一样。我刚开始做的时候没注意这个,结果算出来的电流值总是对不上。后来查了半天才发现是系数问题。
我的习惯:做电流环控制时用等幅值变换,因为电流环的PI参数更容易整定。做功率计算时用等功率变换。别混用,否则你会怀疑人生的。
2.2 Park变换:静止→旋转
Park变换把两相静止坐标系(α, β)变成两相旋转坐标系(d, q)。旋转速度跟电机转子同步,这就是“磁场定向”的由来。
[Id] [cosθ, sinθ] [Iα]
[Iq] = [-sinθ, cosθ] [Iβ]
这里θ是转子位置角。你想想看,如果θ不准,那变换出来的Id和Iq就是错的。我见过一个案例,编码器安装偏了5度,结果电机发热严重,转矩输出也不对。折腾了两天才找到原因。
避坑指南:我曾经因为角度补偿没做好,导致Park变换后的Id、Iq有直流偏置。后来在代码里加了角度滤波和补偿,问题才解决。记住:角度精度直接影响FOC性能。
三、SVPWM调制策略——效率是关键
SVPWM,空间矢量脉宽调制。相比传统的SPWM,它的母线电压利用率更高,谐波更小。
说白了,SVPWM就是用八个基本电压矢量,合成任意方向的电压矢量。八个矢量包括六个非零矢量和两个零矢量。
3.1 扇区判断
首先要知道目标电压矢量在哪个扇区。判断方法很简单:
// 根据Uα、Uβ判断扇区
U1 = Uβ;
U2 = (√3/2)*Uα - 0.5*Uβ;
U3 = -(√3/2)*Uα - 0.5*Uβ;
if (U1 > 0) sector = 1;
if (U2 > 0) sector += 2;
if (U3 > 0) sector += 4;
这个代码我用了好多年,没出过问题。你直接拿去用就行。
3.2 作用时间计算
确定扇区后,计算两个相邻非零矢量的作用时间T1、T2,以及零矢量的作用时间T0。
| 扇区 | T1 | T2 |
|---|---|---|
| I | X | Y |
| II | -Z | X |
| III | Y | -Z |
| IV | -X | Z |
| V | Z | -Y |
| VI | -Y | -X |
其中:
X = (√3*Ts/Udc) * Uβ
Y = (√3*Ts/Udc) * ( (√3/2)*Uα + 0.5*Uβ )
Z = (√3*Ts/Udc) * ( -(√3/2)*Uα + 0.5*Uβ )
Ts是PWM周期,Udc是母线电压。注意:如果T1+T2 > Ts,需要做过调制处理。我一般直接等比例缩小:
if (T1 + T2 > Ts) {
T1 = T1 * Ts / (T1 + T2);
T2 = T2 * Ts / (T1 + T2);
}
3.3 七段式 vs 五段式
SVPWM有两种常见的实现方式:
- 七段式:每个PWM周期插入两个零矢量,谐波小,但开关损耗大
- 五段式:只插入一个零矢量,开关损耗小,但谐波大一些
我个人的建议:低速场合用七段式,高速场合用五段式。为什么?低速时电流大,谐波引起的发热更明显;高速时开关频率相对电机电频率来说已经很高了,谐波影响不大,省点开关损耗更划算。
总结一下我的经验:
- Clark变换注意等幅值/等功率的选择
- Park变换一定要保证角度精度
- SVPWM的过调制处理不能省
- 七段式和五段式根据工况灵活切换
好了,FOC基础就回顾到这里。下一讲咱们深入电流采样和滤波,那才是真正考验功力的地方。到时候我会分享一些我在实际项目中踩过的坑,保证让你少走弯路。
课后思考:如果编码器分辨率不够,Park变换的角度精度会受影响。你会怎么处理?我下一讲会给出我的方案。