第一章:FOC概述与PMSM基础
大家好,我是你们的老朋友。今天咱们正式开干,聊聊FOC和PMSM。说实话,我入行那会儿,FOC还是个挺神秘的东西,资料少,全靠啃论文和反复试错。现在好了,我把这些年踩过的坑、总结的经验,一次性倒给你们。
1.1 FOC(磁场定向控制)的基本原理
FOC,全称Field Oriented Control,中文叫磁场定向控制。说白了,就是让电机像直流电机一样好控制。
你想想看,直流电机多简单——调电压就能调转速,调电流就能调转矩。但交流电机不行,它的磁场和电流是耦合在一起的,牵一发而动全身。FOC干的事,就是通过数学变换,把交流电机解耦成直流电机来控。
核心思想就一句话:把定子电流分解成两个互相垂直的分量——一个负责产生转矩(q轴电流),一个负责产生磁场(d轴电流)。这两个分量独立控制,互不干扰。
我个人习惯把FOC比作“庖丁解牛”:
- 先通过Clark变换,把三相静止坐标系(abc)变成两相静止坐标系(αβ)
- 再通过Park变换,把两相静止坐标系变成两相旋转坐标系(dq)
- 在dq坐标系下,电流就变成了直流量,用PI控制器就能轻松搞定
我在项目中遇到过最典型的场景:客户要求电机在低速时输出大转矩,同时还要平稳。没有FOC的话,这几乎不可能。但用了FOC,d轴电流给零,q轴电流给满,转矩直接拉满,而且纹波极小。
避坑指南:我曾经在调试时发现电机转起来嗡嗡响,查了半天,结果是电流采样时序出了问题。FOC对电流采样的同步性要求极高,采样点稍微偏一点,出来的角度就不准,整个控制就乱套了。所以,采样触发一定要和PWM同步,这个坑我替你们踩过了。
1.2 PMSM(永磁同步电机)的数学模型
要玩转FOC,必须先搞懂PMSM的数学模型。别怕,咱们不搞纯理论推导,我带你从物理意义上去理解。
PMSM的数学模型,核心就是电压方程和磁链方程。在dq坐标系下,它们长这样:
电压方程:
ud = Rs * id + Ld * (did/dt) - ωe * Lq * iq
uq = Rs * iq + Lq * (diq/dt) + ωe * (Ld * id + ψf)
磁链方程:
ψd = Ld * id + ψf
ψq = Lq * iq
转矩方程:
Te = 1.5 * p * (ψd * iq - ψq * id)
= 1.5 * p * [ψf * iq + (Ld - Lq) * id * iq]
看着公式多,其实就几个关键点:
- Rs:定子电阻,决定了铜损
- Ld、Lq:d轴和q轴电感,对于表贴式PMSM(SPMSM),Ld ≈ Lq;对于内置式PMSM(IPMSM),Ld < Lq
- ψf:永磁体磁链,这是电机的“底子”,决定了反电动势大小
- ωe:电角速度,等于机械角速度乘以极对数
重点来了:从转矩方程可以看出,转矩由两部分组成:
- 永磁转矩:1.5 * p * ψf * iq,这部分和q轴电流成正比,是主要转矩来源
- 磁阻转矩:1.5 * p * (Ld - Lq) * id * iq,这部分只有在Ld ≠ Lq时才存在,IPMSM可以利用这个来提升效率
我记得有一次做IPMSM的MTPA(最大转矩电流比)控制,一开始没搞懂磁阻转矩的贡献,id给得不对,结果效率一直上不去。后来把id往负方向调了一点,磁阻转矩出来了,同样的电流下转矩大了不少。嗯,这就是理论指导实践的好例子。
1.3 Clark变换与Park变换的推导
这两个变换是FOC的数学基础。说白了,就是坐标系的旋转和投影。
1.3.1 Clark变换(3相 → 2相静止)
Clark变换把三相电流ia、ib、ic,变换到两相静止坐标系下的iα、iβ。公式很简单:
[iα] [1, -1/2, -1/2 ] [ia]
[iβ] = [0, √3/2, -√3/2] [ib]
[ic]
实际应用中,我们通常用等幅值变换(系数2/3)或等功率变换(系数√(2/3))。我个人习惯用等幅值变换,因为这样变换后的电流幅值和实际电流幅值一致,调试时更直观。
小技巧:如果你用的是等幅值变换,记得在反变换时也要用对应的系数。我见过有人正变换用等幅值,反变换用等功率,结果电流环怎么调都调不好。这种低级错误,千万别犯。
1.3.2 Park变换(2相静止 → 2相旋转)
Park变换把iα、iβ,变换到随转子旋转的dq坐标系下。公式:
[id] [cosθ, sinθ] [iα]
[iq] = [-sinθ, cosθ] [iβ]
这里的θ是转子电角度,由编码器或霍尔传感器提供。没有准确的θ,FOC就是空中楼阁。
警告:角度θ的精度直接影响FOC的性能。我曾在项目中使用低精度霍尔传感器,角度误差有±5度,结果电流环带宽怎么也上不去,电机噪音还大。后来换了高精度编码器,问题迎刃而解。所以,角度传感器的选型,千万别省。
1.3.3 完整的变换流程
把Clark和Park串起来,就是FOC的电流采样处理流程:
// 伪代码示例
void current_measure_and_transform(void) {
// 1. 采样三相电流
ia = ADC_GetValue(CH_A);
ib = ADC_GetValue(CH_B);
ic = -ia - ib; // 三相平衡,ic可由ia+ib推算
// 2. Clark变换
i_alpha = ia;
i_beta = (ia + 2*ib) / sqrt(3);
// 3. 获取转子角度
theta = encoder_get_angle();
// 4. Park变换
id = i_alpha * cos(theta) + i_beta * sin(theta);
iq = -i_alpha * sin(theta) + i_beta * cos(theta);
// 5. 送入电流PI控制器
// ...
}
你可能会问:为什么ic可以用-ia-ib来算?因为三相电流之和为零,这是电机绕组的星形接法决定的。但要注意,如果采样电路有偏置,这个方法会引入误差。我建议还是老老实实采两相,第三相用公式推算,同时定期做偏置校准。
本章小结
好了,第一章的内容就到这里。咱们把FOC的骨架搭起来了:
- FOC的本质是解耦控制,把交流电机当直流电机控
- PMSM的数学模型是控制的基础,转矩方程要烂熟于心
- Clark和Park变换是FOC的数学工具,角度精度决定控制品质
下一章,咱们会深入电流环的PI控制器设计,包括参数整定、抗饱和、以及我在实际项目中用过的几种调参技巧。到时候见。
课后思考:如果电机在零速时,Park变换的角度θ怎么获取?这时候编码器读不到角度,该怎么办?这个问题,我在下一章会给出答案。
公众号:蓝海资料掘金营,微信deep3321