三环控制SVPWM与速度环联动 - 第3节

电流环设计:PI控制器参数整定(带宽法)

电流环是整个三环控制中最内层、也是响应最快的环。说白了,它直接决定了电机能不能按你想要的力矩去转。我刚开始做伺服驱动时,总觉得速度环才是关键,结果电流环没调好,速度环怎么调都抖。后来才明白——电流环是根基。

带宽法的核心思想

带宽法整定PI参数,本质上就是把电流环近似成一阶低通滤波器。你想想看,电流环的闭环传递函数如果能写成:

G_cl(s) = ω_bw / (s + ω_bw)

那它的带宽就是 ω_bw(单位 rad/s)。我们只要设定好想要的带宽,反推PI参数就行。

具体推导过程我不啰嗦了,直接给结论公式。对于表贴式永磁同步电机(SPMSM),在 dq 坐标系下:

参数 公式 说明
比例增益 Kp Kp = ω_bw × L L 为电感(d/q轴相同)
积分增益 Ki Ki = ω_bw × R R 为相电阻

嗯,这里要注意——这个公式成立的前提是:电流环的截止频率远低于PWM开关频率。一般建议带宽不超过开关频率的 1/10。比如你 PWM 是 10kHz,那带宽设到 1kHz(约 6283 rad/s)就差不多了。

我的经验:带宽不是越大越好。我曾经在一个项目里把带宽设到 2kHz,结果电流波形上全是毛刺,电机嗡嗡响。后来降到 800Hz,反而跑得很稳。实际工程中,带宽要综合考虑噪声、延迟和采样率。

PI参数整定步骤

我习惯按下面几步来整定,你可以参考:

  1. 测量电机参数:用LCR表或通过堵转实验测出相电阻 R 和电感 L。
  2. 确定目标带宽:根据PWM频率和系统噪声,选一个合理的 ω_bw。
  3. 计算Kp和Ki:代入上面公式。
  4. 仿真验证:在Simulink或PLECS里跑一下阶跃响应,看超调量和调节时间。
  5. 上机调试:先给一个很小的电流指令,观察反馈电流是否跟踪得上。
避坑提醒:千万不要一上来就给大电流指令。我曾经有一次忘了检查电流采样偏置,结果一上电,电流环直接饱和,电机瞬间堵转,差点烧了驱动板。先给 0.1A 的小信号,确认反馈正常再加大。

电流采样与滤波策略

电流采样做不好,PI参数整定得再漂亮也没用。你想想看,反馈信号都是脏的,控制器拿什么去闭环?

采样方式对比

采样方式 优点 缺点 适用场景
单电阻采样 成本低,只需一个采样电阻 重构电流算法复杂,低速性能差 低成本风机、水泵
双电阻采样 两相电流直接测量,算法简单 需要两个ADC通道 通用伺服、机器人
三电阻采样 三相独立测量,冗余度高 成本高,PCB布局复杂 高端伺服、航空航天
霍尔电流传感器 隔离性好,无损耗 温漂大,带宽有限 大功率、高压场合

我个人最常用的是双电阻采样。性价比高,而且只要在PWM中心对齐时触发ADC,就能避开开关噪声。

滤波策略

电流信号上的噪声主要来自两个地方:PWM开关噪声和电机反电动势谐波。我的滤波策略是这样的:

  • 硬件滤波:在ADC输入端加一阶RC低通滤波器,截止频率设为PWM频率的 2~3 倍。比如 10kHz PWM,RC截止频率设在 20~30kHz。
  • 软件滤波:在ADC采样值进入电流环之前,做一次滑动平均或一阶低通滤波。时间常数取 1~2 个PWM周期。
  • 采样时刻对齐:一定要在PWM载波波峰或波谷处触发ADC,这时候开关管处于稳态,噪声最小。
关键点:滤波会引入相位延迟。软件滤波的时间常数越大,延迟越大,会限制电流环的带宽。所以滤波和带宽之间要权衡——我一般先不加软件滤波,等带宽调好后再一点点加滤波,直到噪声可接受为止。

电流环解耦与前馈补偿

dq 轴电流之间是有耦合的。你想想看,d 轴电压方程里有一项 -ωLq·iq,q 轴电压方程里有一项 ωLd·id。转速越高,耦合越强。如果不做解耦,id 和 iq 会互相干扰,电流环的动态响应会变差。

解耦原理

解耦的思路很简单——在控制器输出端把耦合项补偿掉。以 SPMSM(Ld = Lq = L)为例:

Vd_ref = Vd_pi - ω × L × iq
Vq_ref = Vq_pi + ω × L × id

其中 Vd_pi 和 Vq_pi 是 PI 控制器的输出,后面加减的那一项就是解耦补偿项。这样处理后,d 轴和 q 轴就变成了两个独立的系统。

前馈补偿

除了解耦,还可以加前馈来提升动态响应。前馈补偿的是反电动势:

Vd_ff = -ω × L × iq_ref
Vq_ff = ω × ψf + ω × L × id_ref

注意这里用的是电流指令值(带 ref 下标),而不是实际反馈值。这样做的好处是:在电流还没建立起来时,前馈就已经起作用了,能明显加快响应速度。

我的习惯:先只做解耦(用反馈值),等电流环跑稳了,再打开前馈(用指令值)。前馈系数可以先给 0.8,慢慢调到 1.0。调太快容易过冲,电机可能会尖叫。

完整电流环控制框图

下面这张图展示了带解耦和前馈的电流环整体结构:

电流环控制框图(带解耦与前馈) 电流指令 PI控制器 解耦补偿 前馈补偿 求和 SVPWM 电机 电流采样 反馈电流(id_fb / iq_fb) 说明 解耦补偿使用反馈电流,消除dq轴之间的交叉耦合 前馈补偿使用指令电流,提前补偿反电动势,提升动态响应

工程实现注意事项

在实际代码里实现解耦和前馈时,有几个坑要注意:

  • 转速信号要滤波:解耦项里包含转速 ω,如果转速信号有噪声,会直接污染电压指令。我一般对转速做一阶低通滤波,时间常数取 5~10ms。
  • 电感参数会饱和:大电流时电感会下降,解耦系数不准。可以在代码里做电感查表,根据电流大小修正 L 值。
  • 前馈不要加太猛:前馈项如果和PI输出方向相反,可能会抵消控制作用。我遇到过一例,前馈系数设了 1.2,结果电流响应反而变慢了。
曾经踩过的坑:有一次我在一个高速主轴项目里,转速到了 15000rpm,解耦项里的 ωL 乘积很大,结果电压指令直接饱和了。后来加了抗饱和(Anti-Windup)处理,才把问题解决。所以,解耦前馈虽好,但别忘了限幅和抗饱和。

好了,电流环的设计就聊到这儿。核心就三件事:带宽法整定PI、采样滤波保质量、解耦前馈提性能。这三件事做好了,速度环和位置环才能站得稳。