1. FOC控制基础:从电机模型到矢量控制的数学原理
各位同学,咱们开始第一讲。FOC,也就是磁场定向控制,说白了就是让电机转得又稳又准。我刚开始接触这玩意儿的时候,也觉得数学公式一堆,挺唬人的。但实际做项目多了你会发现,核心就那么几个变换,搞懂了,后面调电流环就是水到渠成的事。
这一章,咱们先把底层的电机模型和坐标变换讲透。你想想看,如果连电机怎么产生力矩都不清楚,那后面的PI参数整定、电流环优化,基本就是瞎调。
1.1 永磁同步电机的数学模型
咱们课程用的是表贴式永磁同步电机(SPMSM)。这种电机转子是永磁体,定子有三相绕组。通入三相交流电,定子产生旋转磁场,拉着转子转。
先看电压方程。在三相静止坐标系下,每一相的电压由电阻压降和电感压降组成,还有反电动势。公式长这样:
u_a = R_s * i_a + L_s * di_a/dt + e_a
u_b = R_s * i_b + L_s * di_b/dt + e_b
u_c = R_s * i_c + L_s * di_c/dt + e_c
其中 e_a、e_b、e_c 是反电动势,跟转子位置和转速有关。这里有个坑——三相之间还有互感,而且转子位置一变,电感也在变。直接在这套坐标系下算力矩,非常麻烦。
核心问题:三相静止坐标系下,电机模型是时变的、强耦合的。没法直接像控制直流电机那样,独立控制力矩和磁通。
那怎么办?换个坐标系看问题。这就是FOC的精髓——坐标变换。
1.2 Clark变换:三相变两相
Clark变换,也叫3s/2s变换。它的目标是把三相静止坐标系(a, b, c)投影到两相静止坐标系(α, β)上。α轴跟a轴重合,β轴超前α轴90度。
变换公式很简单:
i_α = i_a
i_β = (i_a + 2*i_b) / √3
如果三相电流平衡(i_a + i_b + i_c = 0),还可以简化成:
i_α = i_a
i_β = (i_a + 2*i_b) / √3
嗯,这里要注意。实际项目中,ADC采样回来的电流往往有偏置。我遇到过好几次,因为采样电阻的温漂导致Clark变换后的i_α、i_β有直流偏置,结果电机低速抖得厉害。后来加了软件高通滤波才解决。
我的经验:做Clark变换前,务必确认三相电流的零序分量已经滤除。否则变换后的αβ分量会包含直流偏置,导致后续Park变换出来的Id、Iq不准。
1.3 Park变换:静止变旋转
Clark变换只是把三相变成两相,但信号还是交流的。要让它变成直流,就得用Park变换。Park变换把αβ坐标系旋转到与转子同步的dq坐标系上。
变换公式:
i_d = i_α * cos(θ) + i_β * sin(θ)
i_q = -i_α * sin(θ) + i_β * cos(θ)
这里的θ是转子电角度,由编码器或霍尔传感器提供。变换之后,i_d是直轴电流,i_q是交轴电流。对于表贴式电机,力矩只跟i_q成正比:
T_e = 1.5 * p * ψ_f * i_q
你看,力矩控制变成了控制i_q这一个直流分量。这就是FOC为什么叫“磁场定向”——我们把磁场方向定在了d轴上,然后只控制q轴电流就能控制力矩。
避坑指南:我曾经在一个项目里,编码器安装有0.5度的机械偏差,换算成电角度偏差更大。结果Park变换后的i_d、i_q有高频纹波,电流环带宽怎么提都提不上去。后来用自整定补偿了角度偏移,问题才解决。所以,角度精度直接影响FOC性能。
1.4 坐标变换的完整流程
把Clark和Park串起来,就是FOC的电流采样链路:
- ADC采样三相电流 i_a、i_b、i_c
- Clark变换得到 i_α、i_β
- 读取转子电角度 θ
- Park变换得到 i_d、i_q
- i_d、i_q 送入PI控制器
- PI输出经过反Park变换得到 v_α、v_β
- SVPWM生成三相占空比
整个过程在中断里完成,GD32的FOC库通常把电流环频率设在10kHz-20kHz。我建议新手先从10kHz开始,等PI调稳了再往上提。
关键点:整个FOC的核心,就是通过坐标变换,把交流电机控制问题,变成了直流电机控制问题。你只需要调好d轴和q轴的两个PI环,就能独立控制磁通和力矩。
1.5 知识结构图
下面这张图,把FOC的坐标变换链路画清楚了。建议你保存下来,后面调参的时候对照着看。
1.6 变换前后的对比
为了让你更直观地理解坐标变换带来的好处,我整理了一个对比表:
| 对比项 | 三相静止坐标系 | dq旋转坐标系 |
|---|---|---|
| 电流波形 | 正弦交流 | 直流(稳态时) |
| 力矩控制 | 复杂,需同时控制三相 | 简单,只控制i_q |
| 磁通控制 | 与力矩耦合 | 独立控制i_d |
| PI调节器 | 难以设计,带宽受限 | 标准PI即可,带宽高 |
| 工程实现 | 几乎不用 | FOC标准做法 |
你看,从交流到直流,从耦合到解耦,这就是FOC的魔法所在。
1.7 工程实现要点
最后,聊几个实际部署时要注意的点:
- 电流采样时序:GD32的ADC触发要跟PWM同步,一般在PWM载波的中点或边沿采样。我习惯在PWM中心对齐模式下,在计数器归零时触发ADC,这时候相电流最稳定。
- 角度获取:用编码器的话,注意电角度 = 机械角度 * 极对数。霍尔传感器需要做角度插值,否则低速时角度跳变会导致电流抖动。
- 变换精度:Clark和Park变换涉及三角函数和开方运算。GD32有硬件浮点单元(FPU),直接用float算就行。如果资源紧张,可以查表或CORDIC算法。
- 反Park变换:PI输出的是v_d、v_q,要经过反Park变换得到v_α、v_β,再送入SVPWM模块。公式跟Park变换一样,只是把sin和cos的符号反过来。
我的建议:刚开始做FOC时,先用仿真工具(比如MATLAB/Simulink)把坐标变换搭一遍,输入三相正弦波,看输出的i_d、i_q是不是直流。这一步能帮你快速验证变换代码的正确性。
好了,这一章的内容就到这里。坐标变换是FOC的基石,后面的电流环、速度环、位置环,全是在这个基础上搭建的。把Clark和Park吃透,后面的路就好走了。