一 问题从哪来
先抛一个我在调试现场常见的坑:电流环阶跃响应看起来又快又稳,示波器上几乎无过冲,于是直接把速度环和位置环往上叠。结果一带负载就出现低速爬行、换向时母线电流抖,最后查回来发现电流环根本没跑到设定的带宽,而且积分器早就被顶到限幅值上了——阶跃测试之所以"漂亮",恰恰是因为积分器输出被钳住之后,环路退化成纯比例作用,看起来没有过冲而已。
二 机理拆解
电流环的对象是电枢回路:电流对电压的增益是 1/R,极点频率是 R/L。带宽要设多高,先被三件事夹住。一是采样与计算的总延迟,包括采样时刻、ADC 转换、中断处理,这些延迟在环路里等效成相位滞后,延迟越长,同样带宽下相位裕度越小;二是 PWM 更新时刻与采样时刻是否对齐,错开半个周期,等效延迟就多出一个 PWM 周期的一半;三是反电动势扰动,低速时它小、高速时它大,高速段电流环实际上是在跟反电动势抢带宽。
积分项的价值在于消除稳态误差,但它的代价是饱和。当输出被限幅(占空比到 100% 或电压极限)而误差仍然存在时,积分器会继续累加,误差方向一旦反转,积分器要先花一段时间把多余的量吐出来,这段时间环路等效于失去积分作用,表现就是超调加大、恢复变慢,这就是典型的积分饱和延迟恢复。
三 实现路径
我一般按这个顺序做。
先定带宽上限。用开关频率除以 10 到 20 作为粗起点,再看总延迟:带宽不宜超过 1/(4 乘总延迟)。总延迟 20 微秒时,电流环带宽控制在几 kHz 量级比较稳,贪高只会换来振铃。
再做参数整定。按对象模型先算出理论 Kp、Ki(把电感电阻极点抵消掉),把理论值作为起点而不是终点,然后在环路上实测修正。
然后是实测带宽,不要只看阶跃。我推荐两种做法对照:一是给电流给定叠加小幅正弦扰动,用信号发生器或者控制器直接输出扰动,扫频记录响应与给定之比,幅值掉到 0.707 处的频率就是闭环带宽,同时记下相位裕度;二是阶跃响应加计时间,从 10% 到 90% 的上升时间和带宽之间有近似反比关系,可作为快速核对。两种结果对不上,通常是采样时序有问题。
最后处理饱和。抗积分饱和别只做一个限幅,我习惯三件套一起做:一是把积分项单独限幅而不是只限总输出;二是反算抗饱和(back-calculation),把实际输出与未限幅输出之差按比例反馈回积分器,让积分器立刻知道"命令已经执行不了";三是在饱和期间冻结积分累加。三者里反算抗饱和对恢复时间的改善最直观。
四 取值对照表
项目 | 推荐做法 | 依据 |
电流环带宽起点 | 开关频率除以 10 到 20 | 留出采样、计算与 PWM 更新的延迟余量 |
带宽硬上限 | 不超过 1/(4 乘环路总延迟) | 总延迟直接吃掉相位裕度 |
采样时序 | 采样窗口对齐 PWM 谷底或峰顶 | 半周期错位等效增加一个周期的一半延迟 |
积分限幅 | 单独限积分项,而非只限总输出 | 只限总输出时积分器仍在无意义累加 |
抗饱和方式 | 反算抗饱和加饱和期冻结积分 | 明显缩短误差反向后的恢复时间 |
带宽验证 | 正弦扫频为主,阶跃上升时间核对 | 阶跃单独用容易把饱和误判为稳定 |
五 实现要点与易踩坑
寄存器层面有两处最容易出事。第一,ADC 触发源与 PWM 计数方向没配好:谷底触发与峰顶触发的等效延迟不同,中途改了计数方向而没改补偿量,电流波形会出现随占空比变化的系统性偏差,看着像电流采样偏置没校干净。第二,PI 参数用浮点写但定中断里按定点跑,Kp 在高速段溢出,表现为高速时电流环突然变软。
另一个易踩坑是反算抗饱和的增益取太激进,反而把积分器抖出振荡,一般从总限幅量的几分之一开始试。
六 工程笔记三条
现象:阶跃无过冲但带载低速抖。原因:积分器长期贴限幅,环路退化为纯比例。处置:限幅留出计算余量,加反算抗饱和后重测。
现象:扫频带宽只有整定值的一半。原因:ADC 触发配在 PWM 周期起点,等效延迟被拉长。处置:改为谷底触发并同步改采样补偿,带宽回升。
现象:高速段电流响应明显变软。原因:Kp 在高速时超出定点表示范围被截断。处置:改浮点或重新标定标幺基值。
小结与免责
电流环的两件事是一件事:带宽是否真的达到,决定了积分器会不会被频繁顶到饱和;饱和处理是否到位,反过来决定了你测到的带宽是真是假。先看采样时序、再算带宽上限、最后配抗饱和,这个顺序比反复调 Kp、Ki 省力得多。艾思控在调试这类电机控制固件时,习惯把电流环带宽、总延迟和限幅策略写成一组参数一起评审。以上方法与取值仅作工程参考,具体以实测为准。
你们电流环实测带宽一般做到开关频率的几分之一?抗积分饱和用的是限幅还是反算?欢迎评论区交流。
我要赚赏金
