3、电流环控制原理:PI控制器的基本原理、电流环在FOC中的位置
好,咱们进入正题。前两章我们把无感启动的宏观流程和硬件基础聊完了,这一章得扎进最核心的「电流环」里。说实话,电流环调得好不好,直接决定了你电机转起来是「丝般顺滑」还是「拖拉机抖动」。我见过太多工程师在速度环上折腾半天,结果问题其实出在电流环——嗯,这坑我踩过。
3.1 PI控制器:电流环的“大脑”
电流环的核心,说白了就是一个PI控制器。你想想看,我们要让电机绕组里的电流精准地跟随目标值,靠什么?靠反馈和调节。PI控制器就是干这个的。
它的数学形式很简单:
u(t) = Kp * e(t) + Ki * ∫e(t)dt
其中:
- e(t) = 目标电流 - 实际电流(误差)
- Kp = 比例增益
- Ki = 积分增益
- u(t) = 输出给PWM的电压指令
比例项负责「快速响应」——误差一出现,立马给一个力拉回来。积分项负责「消除静差」——如果比例拉不回来,积分慢慢累积,直到误差归零。
核心理解:比例是「现在」的力,积分是「过去」的账。两者配合,才能让电流既快又准。
但在数字控制器里,我们用的是离散形式。代码里常见的是位置式PI和增量式PI。我个人习惯用增量式,因为积分限幅好处理,不会出现积分饱和导致的超调。给你看一段我常用的框架:
// 增量式PI控制器
float pi_controller(float target, float actual, float *integral, float Kp, float Ki, float limit) {
float error = target - actual;
*integral += Ki * error;
// 积分限幅
if (*integral > limit) *integral = limit;
if (*integral < -limit) *integral = -limit;
float output = Kp * error + *integral;
// 输出限幅
if (output > limit) output = limit;
if (output < -limit) output = -limit;
return output;
}
注意那个积分限幅。我曾经在一个风机项目里忘了加这行,结果积分项一直累加,电机启动时直接冲过流保护——嗯,从那以后我再也不敢省略积分限幅了。
3.2 电流环在FOC中的位置
FOC(磁场定向控制)的整个框架,你可以想象成三个闭环嵌套:最外层是速度环,中间是电流环,最内层是PWM调制。电流环是承上启下的关键。
看下面这张图,你就明白了:
从图上你能看到,电流环处于中间位置。速度环算出一个目标电流(Iq_ref),交给电流环;电流环算出电压指令,交给SVPWM;SVPWM生成六路PWM波,驱动逆变器,最终让电机转起来。
电流环的反馈来自哪里?来自ADC采样的相电流。采样后经过Clark变换(三相→两相静止坐标系)和Park变换(两相静止→两相旋转坐标系),得到实际的Iq和Id。然后分别与目标值做差,送入各自的PI控制器。
实战技巧:电流环的PI输出是Vd和Vq电压,不是直接给PWM占空比。中间还有一步反Park变换和SVPWM。很多新手在这里搞混,以为电流环输出就是占空比——其实不是。
3.3 电流环的dq轴解耦
在FOC里,电流环其实是两个独立的PI控制器:一个控制Id(直轴电流),一个控制Iq(交轴电流)。为什么能独立?因为Park变换把三相交流量变成了两个直流量,而且通过转子位置角实现了磁链和转矩的解耦。
Id控制磁链,Iq控制转矩。对于表贴式永磁同步电机(SPMSM),我们通常让Id_ref=0,这样所有电流都用来产生转矩,效率最高。对于内置式永磁同步电机(IPMSM),有时候需要负的Id来利用磁阻转矩——这个后面章节再细聊。
| 轴 | 物理含义 | 控制目标 | 典型PI参数范围 |
|---|---|---|---|
| d轴 | 直轴(磁链方向) | Id_ref = 0(SPMSM) | Kp: 0.5~5, Ki: 0.01~0.1 |
| q轴 | 交轴(转矩方向) | 跟随速度环输出 | Kp: 1~10, Ki: 0.02~0.2 |
这里有个坑:d轴和q轴的PI参数通常不一样。因为d轴和q轴的阻抗特性不同,尤其是高速时,反电动势的影响会让q轴更难控制。我习惯先调d轴,再调q轴——d轴响应快,容易观察振荡。
3.4 电流环的带宽与采样频率
电流环的带宽决定了它能多快地响应变化。一般来说,电流环的带宽设置为PWM频率的1/10到1/20。比如PWM频率是10kHz,电流环带宽大概在500Hz~1kHz。
采样频率呢?通常和PWM频率同步,在每个PWM周期中间点采样一次。这样采样到的电流是平均值,噪声最小。
注意:采样时刻很关键。如果在PWM开关动作瞬间采样,会采到巨大的开关噪声。一定要在PWM载波的波峰或波谷处采样——这是硬件和时序设计的基本功。
我曾经在一个项目中,采样时刻没对准,电流波形全是毛刺,PI怎么调都调不稳。后来用示波器一看,采样点正好落在开关噪声上——嗯,改了个定时器触发就解决了。
3.5 电流环调参的直觉
调电流环,说白了就是调Kp和Ki。但怎么调?我给你一个我常用的方法:
- 先调Kp:Ki设为0,逐渐增大Kp,直到电流响应出现轻微振荡。然后退回一点,取振荡临界值的60%~80%。
- 再加Ki:保持Kp不变,逐渐增大Ki,直到稳态误差消除。注意观察是否有超调。
- 联合微调:如果超调大,适当降低Kp;如果响应慢,适当增加Ki。
这个方法虽然土,但很有效。我见过有人用Ziegler-Nichols法,但实际工程中,手调往往更快——因为你面对的是真实的电机,不是理想模型。
调参口诀:Kp管响应快慢,Ki管误差消除。先比例后积分,振荡临界往回退。