1. PI控制基础:FOC控制架构概述、PI控制器原理、PI参数对系统性能的影响

1.1 FOC控制架构——先搭个框架

聊PI参数自整定之前,咱们得先把FOC的整体架构理清楚。说白了,FOC(磁场定向控制)就是把三相电机的电流分解成两个独立的直流分量——d轴和q轴,然后分别控制。这样做的好处很明显:转矩和磁通可以解耦控制,电机响应又快又稳。

我刚开始接触FOC时,总觉得这个架构很绕。后来自己画了几遍框图,才真正理解。嗯,这里我简单说一下:

  • 电流环:最内层,控制d/q轴电流,响应最快
  • 速度环:中间层,输出q轴电流给定,控制转速
  • 位置环:最外层,输出速度给定,控制角度

每个环都需要PI控制器。你想想看,三个环串在一起,任何一个环的参数没调好,整个系统都会抖。我在项目中遇到过一台伺服驱动器,速度环PI参数没整好,电机在低速时嗡嗡响,换了三组参数才搞定。

核心要点:FOC的PI参数整定,通常从内环(电流环)开始,逐层向外。内环调稳了,外环才有意义。

1.2 PI控制器原理——别被公式吓到

PI控制器,说白了就是两个部分:比例(P)和积分(I)。

比例部分:误差有多大,输出就多大。你想想看,如果只有P,系统会有静差——比如你让电机转1000rpm,它可能只跑到980rpm就停了,因为误差小了,P的输出也小了,推不动了。

积分部分:把过去的误差累加起来。只要有静差,积分项就会一直增长,直到把误差消除。我习惯把积分项想象成一个「记账本」,它记着系统欠了多少账,慢慢还。

// 位置式PI控制器(离散化)
float PI_Controller(PI_Struct *pi, float target, float actual)
{
    float error = target - actual;
    
    // 比例项
    float p_out = pi->Kp * error;
    
    // 积分项(带限幅)
    pi->integral += pi->Ki * error * pi->Ts;
    if(pi->integral > pi->i_limit)  pi->integral = pi->i_limit;
    if(pi->integral < -pi->i_limit) pi->integral = -pi->i_limit;
    
    // 总输出
    float output = p_out + pi->integral;
    
    // 输出限幅
    if(output > pi->o_limit)  output = pi->o_limit;
    if(output < -pi->o_limit) output = -pi->o_limit;
    
    return output;
}

这段代码我用了很多年。注意积分限幅和输出限幅,这两个限幅缺一不可。我曾经在调试一个风机项目时,忘了加积分限幅,结果积分项一直累加,电机直接过流保护了。嗯,从那以后我再也不敢省这个限幅了。

我的习惯:积分限幅一般设为输出限幅的80%左右。这样积分项不会独占全部输出,给比例项留点余量。

1.3 PI参数对系统性能的影响——调参就像调音

PI参数怎么影响系统?我习惯用三个维度来看:响应速度、稳定性、静差。

参数变化 响应速度 稳定性 静差
Kp ↑ 变快 变差(易振荡) 减小
Kp ↓ 变慢 变好 增大
Ki ↑ 变快(消除静差快) 变差(易超调) 消除更快
Ki ↓ 变慢 变好 消除更慢

为什么会这样?我举个例子你就明白了。

Kp太大,就像你开车时方向盘打得太猛——车会左右晃。Kp太小,就像方向盘打得太轻——车半天拐不过弯。Ki太大,就像你一直踩着油门不放——车会冲过头再拉回来,反复振荡。

我在调试一个AGV小车的驱动轮时,遇到过这种情况:Kp设了50,Ki设了0.1,电机启动时直接冲过了目标转速,然后来回振荡了五六次才稳定。后来我把Kp降到20,Ki降到0.02,振荡就消失了,虽然响应慢了一点,但系统稳了。

避坑指南:我曾经在电流环调试时,把Ki设得太大,结果电流波形出现了低频振荡。检查了半天才发现是积分项饱和了。记住:积分项不是越大越好,它需要和采样周期匹配。

1.4 电流环PI参数的特殊性

电流环和速度环不一样。电流环的响应时间通常在毫秒级,而速度环在几十毫秒级。所以电流环的PI参数一般比速度环大一个数量级。

我个人习惯这样估算初始值:

  • 电流环Kp:先取电机相电阻的1~2倍,再根据实际响应微调
  • 电流环Ki:取Kp的1/10 ~ 1/20,保证积分时间常数合理
  • 速度环Kp:取电流环Kp的1/10左右
  • 速度环Ki:取速度环Kp的1/5 ~ 1/10

当然,这只是个起点。实际项目中,电机参数、负载惯量、母线电压都会影响最终参数。我建议你拿到一个新电机时,先用这些经验值跑起来,再根据波形微调。

记住:PI参数没有「万能值」。同一个电机,空载和带载的参数可能差一倍。所以自整定方法才这么重要——它能根据实际工况自动算出合适的参数。

好了,这一章我们搭好了FOC的框架,理解了PI的原理,也知道了参数怎么影响系统。下一章,我会带你看看几种主流的PI参数自整定方法——包括我踩过的坑和总结的经验。