PMSM电流谐波抑制:基于自适应抗扰控制的解决方案 电机嗡嗡叫、电流波形失真问题多半出在谐波上做电机控制的工程师应该都有过这种经历台架上调试永磁同步电机PMSM转速环和电流环都整定好了波形看着也算正常但电机一跑起来就有明显的电磁噪声电流波形用示波器一看正弦波边缘毛刺明显FFT分析里5次、7次、11次、13次谐波分量居高不下。更头疼的是带着负载跑一会儿电机温升还特别快整个驱动器的IGBT模块也跟着发烫效率怎么测都提不上去。这就是PMSM电流谐波抑制要解决的典型问题。我在多个伺服驱动项目和新能源汽车电驱动项目中都踩过这个坑试过传统的PI调节、加陷波滤波器、用PR控制器有改善但总差那么点意思。后来换了一条思路——基于自适应抗扰控制来抑制电流谐波实测下来效果明显好于传统方案而且对参数变化和工况扰动的鲁棒性也更强。这篇文章就把我在这条技术路线上的完整思考、控制方案设计过程、仿真和台架验证结果以及过程中踩过的坑和最后的解决效果一次性讲清楚。不管你是刚从电机控制入门的研究生还是已经在做驱动器开发、想升级电流环谐波抑制方案的工程师这篇文章都应该能给你一些实际参考。1. 电流谐波从哪来为什么越抑制越闹心要想把谐波抑下去就得先弄清楚它到底怎么来的。PMSM的电流谐波来源不是单一因素工程上常见的有这么几类。逆变器非线性是主犯。目前绝大多数PMSM驱动器都是电压源型逆变器VSI通过PWM波驱动电机。但IGBT或MOSFET的导通压降、开关死区时间、管压降随电流方向变化的不一致性会引入死区效应和管压降非线性。这些非线性叠加到输出电压上相当于在基波电压上叠加了一堆低次谐波干扰。这就是为什么空载时谐波不明显负载一加大、电流增大之后死区效应的影响比例变化谐波反而变得更突出的原因。分析下来主要是5次、7次谐波比较严重体现在dq轴上是6次脉动的谐波电流。电机本体反电动势谐波是帮凶。表贴式或内置式永磁电机的转子磁场并不是理想正弦分布极弧系数、绕组分布、齿槽效应都会让反电动势波形偏离正弦含有3次、5次、7次等高次分量。这些谐波反电动势在电流环的闭环带宽内一旦没有被有效抑制就会激励出对应频率的谐波电流。载波及其边带谐波。这是PWM调制策略固有产生的通常频率较高在开关频率附近对电磁干扰影响大但对电流波形低频部分的破坏反而不如5、7次那么明显。这几种谐波混在一起工程上最直观的表现就是dq轴电流不干净存在明显的6次、12次脉动分量。转矩也会跟着脉动在低速大负载工况下会让电机抖动、噪声变大。测功机上拉效率曲线也会因为铜耗和铁耗增加导致高效区明显缩小。传统抑制思路的症结在于常规PI电流调节器本质上是跟踪给定值对谐波扰动没有针对性抑制能力。提高PI增益虽然能对低频扰动有所改善但受限于电流环稳定性和采样延迟带宽不可能无限拉高。加陷波器是常用手段但陷波器对频率极其敏感——谐波频率随转速变化陷波器固定在一个频率上就失效了根本追不上。PR调节器能对特定频率提供高增益但数字离散后对频率偏差同样敏感。重复控制虽然理论上能抑制所有与基波频率相关的谐波但动态响应慢、内存占用大工程上实现起来也麻烦。这就是我转向自适应抗扰控制的根本原因与其在每个谐波频率上单独布防不如把谐波当作系统“总扰动”的一部分交给观测器去估计再在前向通道中主动补偿掉。2. 自适应抗扰控制的核心逻辑把“扰动量”整个估出来再干掉自适应抗扰控制ADRC这个思路业界也不算新东西韩京清先生早在九十年代就提出了。但真正把它用到PMSM电流谐波抑制上并且处理好“自适应”这三个字工程上还是有不少细节的。ADRC的核心思想用一个比方说你不必搞清楚每个“捣乱分子”具体是谁只需要知道这帮家伙合起来对你的系统造成了多大的影响然后派一个侦察兵扩张状态观测器ESO去把这个合力测出来再在控制端反向抵消掉。PMSM在同步旋转坐标系下的电流方程是[ \begin{cases} \frac{di_d}{dt} \frac{1}{L_d}(u_d - R_s i_d \omega_e L_q i_q) \ \frac{di_q}{dt} \frac{1}{L_q}(u_q - R_s i_q - \omega_e L_d i_d - \omega_e \psi_f) \end{cases} ]一般来说 ( L_d \approx L_q )可以令 ( L L_d L_q )而且为了做谐波抑制更关注的是电流高频部分的动态。上述方程可以改写成统一形式[ \frac{di}{dt} b_0 u f(t) ]其中 ( f(t) ) 就是“总扰动”包含了反电动势项、电阻压降、交叉耦合项、参数变化、逆变器非线性造成的谐波干扰反正所有不希望看到的东西统统塞进去。( b_0 1/L ) 是控制增益的估计值。这样一来电流环被简化成了一个“一阶积分器总扰动”的模型传统PI要单独对付的交叉耦合项、参数偏差、谐波扰动在ADRC眼里全是一堆可以估计和补偿的扰动。这是ADRC最核心的设计哲学。这里的关键是电流谐波在旋转坐标系下往往是正弦形式的周期扰动6次、12次脉动等。常规的线性ADRC把扰动假设成缓慢变化的用ESO虽然能估计但估计精度对频率较高、变化较快的周期性扰动有限。为了更好抑制谐波就需要引入“自适应”机制——让观测器带宽或者内部模型频率能够跟随转速自动变化。我在项目中的设计方案分两层第一层是基础ADRC电流环。基于LESO线性扩张状态观测器设计观测器输出( z_1 )跟踪实际电流( z_2 )跟踪总扰动控制律为[ u \frac{u_0 - z_2}{b_0} ]其中( u_0 k_p(r - z_1) )是误差反馈控制项。这个形式相当简洁但对周期性扰动的抑制能力有限所以要在第二层做增强。第二层是频率自适应谐波补偿。在基础扰动观测基础上加入了一个谐振项来针对特定频率的谐波扰动进行精细补偿。这个谐振项的谐振频率不是固定的而是跟随电角速度( \omega_e )实时调整的——检测到基波频率就知道6次、12次谐波应该出现在( 6\omega_e )、( 12\omega_e )的位置把谐振频率挪过去。这种“转速自适应”的设计比传统固定频率陷波器要聪明很多。这里要特别注意ESO的极点配置必须比谐振项的频率高出一截否则观测器响应不过来补偿信号相位滞后不但起不到抑制作用还可能加剧谐波。我的做法是把ESO带宽整定到扰动频率的35倍以上保证观测输出的扰动估计在该频率下仍有足够的幅值和相位精度。3. 控制器离散化与参数整定工程实现里最磨人的环节纸上谈兵的控制律看着漂亮落到DSP或FPGA里就是另一码事了。ADRC在连续域分析很清晰但数字实现时采样频率、离散化方法、延迟补偿每一步都有坑。3.1 离散化方法的选择ESO的离散化我试过一阶欧拉、改进欧拉和零阶保持ZOH三种方式。一阶欧拉最简单代码量少但采样周期稍大比如100μs对应10kHz开关频率时观测器稳定性会变差尤其在ESO带宽拉得比较高的情况下容易出现离散化后的极点超出单位圆的情况。改进欧拉法也叫预报-校正法在中低带宽下精度够用代码增加量也不大是性价比最高的选择。ZOH离散化最精确但推导公式比较复杂而且需要精确知道对象模型对参数偏差敏感工程上反而不好用。我的最终方案是ESO用改进欧拉离散化反馈控制律做一阶欧拉离散化就行。10kHz采样率下这个组合稳定性和精度都表现良好。3.2 带宽配置的核心公式与权衡ADRC参数整定的核心说白了就是按照“带宽法”来配置。连续域里LESO的特征多项式可以配置成[ \lambda(s) (s \omega_o)^3 ]即把观测器极点都放在( -\omega_o )处。而控制器增益可以按[ k_p \omega_c ]来选取( \omega_c )是控制器带宽电流环期望闭环带宽( \omega_o )是观测器带宽。工程经验是( \omega_o )取( 3 \sim 5 )倍的( \omega_c )。但实际调试时这个倍数关系不能盲目拉大。观测器带宽太高噪声会通过观测器直接窜进扰动估计通道从而污染控制量( u )导致高频振颤。我的实际调试经验是开关频率控制器带宽( \omega_c )观测器带宽( \omega_o )谐波补偿频率最高做到10 kHz300-500 Hz1200-2000 Hz6次谐波10krpm时约1kHz16 kHz500-800 Hz2000-3500 Hz12次谐波10krpm时约2kHz3.3 延迟补偿数字控制里有一拍延迟从采样到PWM输出更新电流环输入滞后一个采样周期。这个延迟在高带宽ESO下会被放大导致估计的扰动相位滞后严重。我在控制律中加入了Smith预估器式的延迟补偿在观测器模型中把控制量延迟一拍后再代入让观测器“看到”的与控制器实际施加一致。这一步不加的话当谐波补偿通道闭合后会在某些转速点引起系统振荡。加了之后整个系统的稳定裕度明显提高。4. 仿真验证与实际工况下的效果对比方案设计完先在Simulink里搭了仿真模型把两种方案做了系统性对比——一组是传统PI陷波器一组是本文的自适应抗扰控制方案。电机参数参照一台2.2kW工业伺服电机。4.1 稳定工况下的谐波抑制效果在额定转速1500rpm、额定负载条件下看电流FFT结果谐波次数PI陷波器方案自适应ADRC方案5次3.2%0.8%7次2.1%0.6%11次1.4%0.5%13次1.1%0.4%THD4.6%1.3%这个结果符合预期自适应ADRC对5、7、11、13次谐波都有明显的抑制效果电流THD从接近5%降到了1.3%左右。而且电流波形几乎肉眼可见地变“干净”了dq轴电流脉动幅度也缩到了原来的四分之一左右。4.2 工况突变时的动态性能光看稳态不够还得看动态。我在仿真中做了两个测试变速测试电机从500rpm匀速升到2000rpm持续2秒。PI陷波器方案在500rpm时陷波器频率对着固定值升速过程中谐波频率一直漂移谐波抑制效果断崖式下降——500rpm以上5次谐波回升到2.5%以上。自适应ADRC方案的谐振频率实时追踪转速在整个升速区间内THD始终保持在1.5%以下。这个对比很直观地体现了“自适应”三个字的含金量。突加负载测试额定负载基础上突然叠加60%负载阶跃。PI陷波器的电流环动态响应延迟约5ms转速跌落约80rpmADRC方案电流响应不到3ms就稳定了转速跌落控制在40rpm左右恢复时间也缩短了近一半。因为ESO对负载扰动电磁转矩突变能快速估计并补偿等效于给电流环增加了一个“前馈通道”。这两组仿真结果说明自适应ADRC不仅仅是稳态谐波抑制更彻底动态性能也同步受益整体驱动系统的“韧性”更强了。5. 台架实测从仿真到实物的常见坑与处理仿真跑得漂亮不代表台架一定顺利。实际台架调试阶段我遇到了一堆仿真里不会显现的问题分享几个最典型的。5.1 电流采样噪声导致ESO带宽不敢拉高台架上用电流传感器采样叠加PWM开关噪声和传感器本身的采样噪声实测噪声幅值有几十毫安。这个噪声进入ESO后会被高带宽观测器放大导致观测的扰动信号里毛刺很大补偿量也跟着抖控制输出的PWM占空比抖动明显甚至能听到一些高频啸叫声。仿真里我用的ESO带宽是2000Hz台架上只能被迫降到1200Hz否则系统不稳定。这带来一个现象谐波抑制效果比仿真略差但也比PI陷波器方案好很多。解决方案在ESO输入端加了一个二阶低通滤波器截止频率设为ESO带宽的一半左右专门滤掉开关噪声。这样ESO带宽能重新拉上去同时控制输出也干净了。加滤波器的代价是相位延迟但在10kHz采样率下二阶滤波在1200Hz处约20度相位滞后ESO还能接受。5.2 死区补偿与ADRC的配合问题逆变器死区效应是谐波的重要来源但它有一个特性死区造成的电压误差与电流方向有关是高度非线性的。ADRC把死区效应当作扰动的一部分确实能补偿一部分但死区效应的畸变电压在电流过零附近跳变剧烈ESO对这种“突变型”扰动的估计存在滞后和超调。我的做法是保留传统死区补偿逻辑在前向通路中先用查表法把死区造成的主要电压误差补掉剩下的残余非线性交给ADRC的ESO去“兜底”。实验证明这种“粗补细补”结合的方式效果最好单独靠ADRC硬扛死区效果会打折扣。这也是一个重要的工程经验ADRC不是让你把其他补偿措施全部废掉而是要和已有策略协同工作。5.3 低速工况下的自适应效果验证低速工况如100rpm以下是比较容易出问题的场景。这时基波频率低6次谐波频率也低比如30HzESO带宽远高于扰动频率观测没有压力。但转速低意味着反电动势小同样的逆变器非线性造成的谐波占比更大所以谐波问题在低速重载时反而更严重。实测在50rpm、满载工况下PI陷波器方案下电流波形明显畸变THD高达8%左右自适应ADRC把THD压到了2.1%。一个细节由于低速时载波比高每个基波周期内开关次数很多ADRC有足够的控制周期在一个基波周期内完成多步补偿效果自然更好。实测下来的综合结论是自适应ADRC在低速重载、宽调速范围、负载突变三类工况下的综合表现明显优于传统PI陷波器和PR方案。特别是在转速变化范围较大的伺服应用里频率自适应带来的收益是决定性的。6. 参数自适应的更深层探索与实用扩展把基础的频率自适应做通之后我又沿着这个思路做了几个扩展这里一并写出来供大家参考。6.1 基于工况的控制器带宽自适应电流环在额定条件下整定好的参数在弱磁区、大电流区或者转子温度升高导致磁链变化时模型参数 ( b_0 ) 跟实际值会有偏差。ESO对( b_0 )偏差有一定容忍度但偏差太大时超过30%观测精度明显恶化。我在方案里增加了一个简单的“模型参数在线辨识”利用每次ESO得到的扰动估计值 ( z_2 )与理论计算的电压方程数值做差值用递推最小二乘法RLS在线修正 ( b_0 )。实现后发现在电机温度从25℃升到90℃的过程中磁链下降约8%、定子电阻上升30%电流环动态性能波动明显变小。这算是让“自适应”更名副其实了一步。6.2 与速度环的协同配合电流谐波抑制不只影响电流环转矩脉动的降低让速度环的负载波动也变小了。实测中速度环PI参数在原有基础上增益可以适当调高约15%转速的动态响应有所提升但并未出现之前容易激发的机械谐振。做好电流谐波抑制其实能在系统层面释放一部分控制潜力。6.3 扩展到其他谐波源本文主要针对5、7、11、13次这类电流谐波做抑制但同一套自适应抗扰框架还可以扩展到其他场景——比如磁悬浮轴承中转子不平衡振动引起的谐波电流或者开绕组电机中的零序电流抑制。核心思想是一致的把周期性扰动建模进观测器让扰动估计通道的频率特性随工况自动调整。不过有一点要明确ADRC对谐波抑制的效果上限受采样频率和控制器带宽制约如果你想抑制开关频率附近的载波边带谐波就得靠硬件滤波或者更高采样率的控制架构ADRC也救不了。用在这场该用的地方别指望一个方案包打天下。7. 总结与工程建议从最终落地效果看自适应抗扰控制方案在PMSM电流谐波抑制上无论是综合谐波抑制率还是动态工况适应性都显著优于传统PI陷波器组合。它的核心价值不在于“新”而在于把扰动观测、频率自适应和周期性扰动补偿三种技术路径有机融合真正回应了工程上“频率会变、工况会变、模型会变”这三个躲不开的现实问题。给打算在项目里尝试ADRC方案的同行几条工程建议第一先评估自己的硬件条件。开关频率低于5kHz的系统ADRC的ESO带宽很难拉高谐波抑制的上限会被限制住。开关频率在10kHz以上才值得认真考虑这条路线。第二从基础线性ADRC起步。不要一上来就上“自适应谐波补偿”的完整版。先把LESO调节好让它能稳定驱动电流环再逐步加谐振项、频率自适应每一步用波形验证效果别跳步。第三重视离散化和延迟补尝。连续域仿真里看不见的问题都是在离散化这一步冒出来的。延迟补偿不是可选项是必选项。第四别丢掉传统手段。死区补偿、SVPWM过调制处理这些基础工程措施该用还得用ADRC是最后一道兜底的“抗扰大网”不是让你把所有基础工作都扔掉的理由。我在这个项目里最大的体会是好的控制算法不是玄学它需要你从物理本质上理解问题然后在数字实现层面把每一步都抠到位。这套自适应抗扰方案也算是我在多个项目里折腾出来的一个可复用的技术积累后续有新的进展我会再继续更新和分享。