☰
APF谐波抑制新方案:Simulink中PI与重复控制复合策略仿真
2026/10/16 13:19:32 网站建设 项目流程

做电力电子仿真的同行,多多少少都跟谐波怼过几个回合。变频器、整流桥、UPS、开关电源这一类非线性负载,往电网里灌谐波电流的劲头从来不会跟人客气。治理手段无非两条路:被动滤波和主动补偿。无源LC滤波器结构简单、造价低,但只能滤固定次数谐波,搞不好还会跟电网阻抗发生谐振;有源电力滤波器(APF)走的是“检测-反向补偿”的路子,实时性强、可控性高,是当前电能质量治理的主流方向。而APF谐波抑制效果好不好,控制策略就是灵魂所在。

这篇来拆一个工程上很实用的APF谐波抑制方案:PI控制+重复控制的复合策略,以及这套策略在Simulink中从建模到仿真的完整实现过程。我会把为什么要把PI和重复控制“搭伙”、重复控制里的N、Q(z)、Kr这些参数到底怎么定、模型每个环节怎么搭起来、以及仿真里容易踩的坑都摊开讲清楚。正在做APF仿真、准备毕业论文或者搞产品预研的朋友,可以直接拿这篇文章当参考。

1. 谐波治理为什么要“主动出击”

1.1 非线性负载的谐波“账单”

先交代背景。三相不控整流桥、晶闸管整流器、变频器这类设备,输入电流不是正弦波,而是含有大量低次谐波的周期性非正弦波。以常见的三相不控整流带阻感负载为例,输入电流近似为120°导通的方波,频谱上以6k±1次谐波为主体,也就是5次、7次、11次、13次这些特征谐波。

这些谐波带来的麻烦很具体:中性线过流、变压器和电机附加损耗发热、保护装置误动作、电容器组谐振甚至烧毁,还有对通信线路的电磁干扰。把网侧电流的总谐波畸变率(THD)压到5%以下,是很多场合的硬指标。在这个前提下,无源滤波器已经显得力不从心,因为负载变了、谐波次数变了,它就不灵了。APF的价值在于它能实时跟踪谐波,主动向电网注入一个大小相等、相位相反的补偿电流,把谐波“抵消”在公共耦合点。

1.2 APF的补偿链条:检测、控制、输出

APF的整个补偿过程可以拆成三段:谐波检测、电流控制、变流器输出。

谐波检测负责从负载电流里分离出谐波分量,作为补偿电流的指令信号。电流控制拿到指令之后,结合APF实际输出电流,算出控制量,驱动变流器产生对应的电压输出。变流器再经过并网电感把补偿电流注入电网。这三段任何一个环节偷懒,补偿效果就大打折扣。

工程里最常见的谐波检测方案是同步旋转坐标系下的dq法:把三相负载电流经过Clarke变换和Park变换,转到与电网电压同步旋转的dq坐标系。在这个坐标系下,基波正序电流变成了直流分量,谐波分量则表现为交流量。用一个低通滤波器把直流分量提取出来,反变换回abc坐标系,得到的就是基波正序电流,负载电流减去基波正序电流,剩下的就是谐波+无功成分,作为APF补偿指令。

这个检测方法相当成熟,Simulink里用经典模块就能搭出来,后面第三章我会给出具体的连接方式。

2. 控制策略拆解:为什么是PI+重复控制

2.1 只靠PI,稳态精度很尴尬

先看最基础的方案:电流环用PI调节器。PI控制器的传递函数是Kp+Ki/s,它对直流信号有无穷大的增益,所以跟踪直流指令非常拿手。如果APF只补偿基波无功,在dq坐标系下把无功电流指令设成直流,PI完全够用。

但问题在于,APF要补偿的是谐波电流,它们在同步旋转坐标系里不是直流,而是5、7、11、13次等整数倍频的交流量。PI调节器对交流信号增益有限,频率越高增益越低,所以纯PI控制的APF存在明显的稳态跟踪误差,补偿后的剩余谐波含量往往不达标。如果把PI的Kp调得很大,增益是上去了,但噪声和系统不稳定风险也跟着涨,这不是治本的办法。

2.2 重复控制:按模板画圆式的周期零误差跟踪

重复控制的核心思想是内模原理:如果控制器内部包含了被跟踪信号的发生模型,就能对该信号实现无静差跟踪。谐波电流是周期性信号,周期就是工频周期20ms。重复控制器在内部构造一个周期延时正反馈环,相当于把“上一周期的误差记忆”不断累积和修正,从而使系统对周期性的谐波指令获得非常高的增益。

用通俗的话说,这就像熟练工按模板画圆:新手一笔画不圆,但只要每次都照着模板修正,多画几轮就越来越圆。重复控制不是一次到位,而是利用信号的周期性反复修正,理论上能对任意周期信号实现零稳态误差。

离散域重复控制器的典型表达式是:

Grep(z) = Kr * z-N * S(z) / (1 - Q(z) * z-N)

其中N是每个基波周期内的采样点数,Q(z)是为了保证稳定性而引入的低通或常数(常见取0.95~0.99),S(z)是相位幅值补偿器,用于补偿检测滤波和PWM逆变器等被控对象带来的相位滞后,Kr是重复控制增益。

2.3 复合结构:并联搭伙与参数分工

纯重复控制有个短板:它对周期信号很擅长,但对负载突变这类非周期扰动响应慢,至少要等一个基波周期才开始修正。工业生产线上负载经常波动,APF既要谐波滤得干净,又要动态响应快,怎么办?

工程上的答案是让PI和重复控制并联使用。误差信号同时送入PI支路和重复控制支路,两者输出叠加后作为调制波指令。PI管动态过渡,负载突变时它能立刻响应;重复控制管稳态精度,慢慢把周期性谐波的剩余误差压下去。两条支路各司其职,互不挤占。

这种复合结构在Simulink里实现起来也很直观:误差信号走两路,最后相加。需要注意两者之间的耦合问题,特别是相位补偿和增益分配,后面第四章我会给出一组能直接上手的参数起点。

3. Simulink模型搭建全流程

3.1 准备工作:工具箱与仿真环境配置

Simulink里做APF仿真,核心工具箱是Simscape Electrical(以前叫SimPowerSystems)。另外还需要Simulink Control Design做频域分析,以及基础的DSP System Toolbox用来搭滤波器。版本倒不用太新,R2018b以上基本都够用。

仿真建议用离散控制模型加连续主电路的混合配置。主电路里的电源、整流桥、变流器保持连续域,控制部分用离散模块,用一个离散采样时间Ts来控制,比如Ts=1e-4秒(对应10kHz采样)。这样更贴近DSP实现的实际情况,也方便后面把控制算法改写成嵌入式代码。

求解器方面,主电路带功率电子开关,属于刚性系统,首选ode23tb,相对容差设为1e-4,最大步长不要超过1e-5到1e-4秒这个量级。如果你发现仿真特别慢,优先检查是不是求解器设置不合理,而不是急着去改模型结构。

3.2 主电路参数与非线性负载设置

我用的主电路结构和参数如下,直接照着搭就行:

  • 三相电网:线电压380V,频率50Hz,内阻很小可忽略
  • 非线性负载:三相不控整流桥,直流侧接R=10Ω、L=1mH的阻感负载
  • APF主电路:三相全桥IGBT模块(Universal Bridge),直流侧母线电容C=2200μF,交流侧并网电感L=1.5mH
  • PWM调制:三角载波比较法,开关频率10kHz,调制波限幅

这里有两个容易被忽略的细节。第一,Universal Bridge里电力电子器件选“IGBT/Diodes”,桥臂选“Three-phase arm”;第二,APF直流侧电容的初始电压不能为0,最好设成650~700V左右,否则APF投入的瞬间会有一个剧烈的母线充电冲击,让控制器来不及反应。

非线性负载电流的谐波构成是以5、7、11次为主的,这几路谐波恰好是重复控制最拿手的周期性信号,选择这个负载对于验证策略非常典型。

3.3 谐波电流检测:从abc到dq再到谐波指令

谐波检测模块推荐搭成子系统,内部结构分四步:

第一步:采集三相负载电流ila、ilb、ilc,做Clarke变换得到αβ轴分量。第二步:用PLL得到电网电压相位θ,做Park变换,得到dq轴电流。第三步:各接一个一阶低通滤波器,截止频率取10~20Hz,滤掉交流谐波,只留直流基波正序分量。第四步:把滤波后的dq分量反Park变换回abc坐标,得到基波正序电流;用负载电流减去它,就是谐波补偿指令。

这里我建议直接在MATLAB Function模块里用代码写变换,比搭一堆S函数模块清爽很多。参考代码如下:

function [i_alpha, i_beta] = clarke(ia, ib, ic) % 等幅值Clarke变换 i_alpha = (2/3)*(ia - 0.5*(ib + ic)); i_beta = (2/3)*(sqrt(3)/2*(ib - ic)); end
function [id, iq] = park(i_alpha, i_beta, theta) % Park变换,theta为PLL输出的电网电压相位 id = i_alpha*cos(theta) + i_beta*sin(theta); iq = -i_alpha*sin(theta) + i_beta*cos(theta); end

反变换公式同理,只是符号反过来。低通滤波器可以直接用Simulink的First-Order Low Pass模块,也可以自己写一个一阶IIR滤波器。低通截止频率的选择有个权衡:设太低,基波提取得干净但动态慢,负载突变后补偿要延迟几个周期;设太高,基波里会掺入5次、7次分量,导致补偿指令不纯。我从10Hz起步试过,效果还行,动态要求更高的场合可以提高到30Hz,但要注意检测环节相位延迟会给重复控制带来压力。

3.4 控制器与PWM调制的连接

控制器的误差信号是谐波指令减去APF实际输出电流,这个误差同时进入两条支路。

PI支路直接用Simulink的PID Controller模块,P和I参数先不追求最优,从Kp=10、Ki=500起步。

重复控制支路是重头戏。它包含一个周期延时缓冲区和一个正反馈结构。最简单的实现方式是在MATLAB Function模块里维护一个长度为N的数组,N等于采样频率除以基波频率,10kHz采样50Hz基波,N=200。每个采样周期做三件事:读数组中最早存的那个输出值,计算新的重复控制输出,然后把数组整体往前推一格、把最新输出存进去。

对应代码如下:

function y = rep_ctrl(e, Kr, Qk) % 重复控制器实现:y(k) = Kr*e(k) + Qk*y(k-N) persistent buf if isempty(buf) buf = zeros(200,1); % N=200 end % 取上一周期的控制输出 y_old = buf(1); % 计算当前输出 y = Kr * e + Qk * y_old; % 滚动缓冲区 buf(1:end-1) = buf(2:end); buf(end) = y; end

这就是重复控制的主体。Qk取0.95,Kr取0.5。如果你在仿真中发现高频段不稳,可以再接一个低通滤波器作为Q(z),让高频增益降下来。相位补偿S(z)可以先用超前拍数来近似,比如让重复控制的输出再提前几个采样周期叠加,m取3~5,能有效抵消检测滤波和PWM的固有延迟。这个补偿做不好,重复控制很容易变成振荡源,后面我会单独说。

两路输出相加后,送到PWM发生器。如果控制器是在dq坐标系下运行的,调制波是d、q轴分量,需要先反Park变换到αβ轴,再经过反Clarke变换得到三相调制波,最后和10kHz三角载波比较生成IGBT的门极信号。这一步很多人会漏掉反变换,结果波形就是乱的,务必检查。

4. 关键参数的设计与整定

4.1 直流母线电压和网侧电感怎么算

APF要能补偿谐波,直流母线电压必须足够高,不然变流器输出电压够不着谐波补偿的需求。对380V系统,直流母线电压至少满足Udc ≥ 2.45×220≈540V,实际工程和仿真中我习惯取700~800V。选800V,留出足够的电压裕量,PWM的调制比不至于顶到饱和。

网侧电感L的选取直接影响电流纹波和补偿带宽。经验公式大致是:

L ≈ (Udc - √2·Uac) / (6·fsw·ΔImax)

代入Udc=800V,Uac=220V(单相相电压有效值),fsw=10kHz,设允许的电流纹波峰峰值ΔImax=5A,得到L≈(800-311)/(6×10000×5)≈1.63mH,取1.5mH。电感太小,纹波大,开关噪声容易串进控制环路;电感太大,补偿电流变化率受限,动态跟不上谐波变化,所以这个值要综合平衡,不能照抄公式盲目取整数。

4.2 电流环PI参数的经验整定

电流内环被控对象约等于一个纯电感L,开环传递函数近似为PI×1/(sL)。按典型的Ⅰ型系统整定思路,希望电流环截止频率fc在开关频率的1/10左右,也就是1kHz。此时PI参数大致落在:Kp ≈ L×2π×fc ≈ 1.5mH×2π×1000 ≈ 9.4,Ki按Kp×100~200取,约500~1000都能稳。

我给出一个从Kp=10、Ki=500起步的调试方法:先单独跑PI支路,把重复控制禁用(Kr设为0),看APF补偿后的波形。如果波形还有明显的周期纹波,把Kp往上加一半;如果开始震荡,说明Kp过头了,退回上一次的值。Ki主要负责消除低频静差,过大容易和电网阻抗谐振,一般只要不拖慢动态就尽量取小。

这里要提醒一句:参数永远跟你自己的模型绑定,不同电感值、母线电压、采样频率对应的最优PI参数都不完全一样。我给的数值是参考起步点,不是万能答案。

4.3 重复控制的三块基石:N、Q(z)、Kr

N是采样点数,直接由采样率除以基波周期决定:N=fs/f0。10kHz采样、50Hz工频,N=200。N必须算准,差一个点,重复控制的“记忆”就对不准谐波周期,补偿效果会肉眼可见地变差。代码里数组长度就是N,初始化一定要设对。

Q(z)的作用是抑制重复控制高频段的增益尖峰,保证稳定性。工程简化时直接取固定常数Qk=0.95,效果就不错。突然想验证稳定性边界的时候,可以把Qk从0.9慢慢往1.0推,你会发现越接近1,稳态精度越好,但系统越容易抖。Qk=1.0对应纯积分型的重复控制,对参数偏差极其敏感,仿真里几乎稳不住。所以Qk不要贪心,0.95到0.99之间比较合理。

Kr是重复控制支路的增益,太小修正力度不够,稳态谐波残留大;太大容易激发高频振荡。我的经验是从0.3起步,每轮仿真增加0.2,观察高频抖动的征兆,停在振荡之前那一档。一般0.5~0.8都能取得不错的稳态效果。

5. 典型仿真结果与波形解读

5.1 补偿前后网侧电流波形对比

仿真时间设为0.3s,APF在0.1s时投入。前0.1s网侧电流波形是典型的不控整流特征电流,波形顶部平直、边缘陡峭,畸变严重。0.1s后APF开始输出补偿电流,经过大约2~3个基波周期,网侧电流逐渐接近正弦。

正常调好的模型里,你会在Scope中看到APF投入后,网侧电流曲线明显变圆滑,不再有整流桥特征电流那种“块状”感。这个视觉变化非常直观,可以作为调参是否成功的第一个判据。

5.2 THD指标与谐波频谱分析

用Simulink自带的Powergui里的FFT分析工具,或者把波形导出到MATLAB工作区再用fft函数分析,可以得到补偿前后的THD对比。典型结果如下:

指标补偿前补偿后
THD总量27%左右4%~5%
5次谐波占比20%左右2%以下
7次谐波占比10%左右1.5%左右
11次谐波占比5%左右1%左右

这里重点看5次和7次,它们是不控整流谐波的“大股东”。如果补偿后5次谐波还有明显残留,优先怀疑重复控制N有没有算错,或者相位补偿有没有接对。如果所有次数都残留但都不算严重,多半是Kr偏小或者Qk偏小,适当增大即可。

5.3 动态工况:负载突变下的响应行为

把负载电阻从10Ω在0.2s时突变到5Ω,观察网侧电流波形。PI支路的响应速度很快,电流会在几个毫秒内冲上来;重复控制支路会在一两个基波周期内进一步修正残差,整体恢复时间大约20~40ms。如果只有重复控制没有PI,恢复时间会明显拖长到60ms以上,这就是复合策略在动态性能上占优的直接证据。

6. 常见问题与排查技巧实录

6.1 仿真不收敛、跑太慢怎么处理

APF主电路带IGBT开关,非线性强,容易出现步长反复缩小、仿真进度条走不动的情况。第一步把ode23tb和相对容差1e-4用上,并把最大步长限制在1e-5左右。第二步检查主电路里有没有环流支路缺少小电阻阻尼,特别是直流侧电容与断路器之间。第三招,在IGBT桥臂输出端和并网电感之间串一个几欧姆的小阻尼电阻,仿真速度能有明显改善。

6.2 三招解决重复控制引发的系统振抖

最典型的问题:APF一投入,网侧电流波形高频抖动,甚至PWM调制波顶到限幅。原因几乎都出在重复控制的补偿环节。第一招,把Qk从0.99降回0.95,抑制高频增益尖峰。第二招,把Kr先降到0.3,确认振荡消失后再逐步往上加。第三招,检查S(z)相位补偿是不是超前拍数过大,m值过大会把高频噪声一起放大,用一个低通滤波器串联在重复控制输出端,截止频率取2kHz左右,就能有效压制。

6.3 补偿精度上不去的排查思路

补偿后THD迟迟压不到5%以下,按顺序排查四件事:第一,谐波检测的低通滤波器截止频率是否太低,导致动态补偿指令滞后;第二,重复控制的N是否精确等于fs/f0,一个点的偏差都会导致相位错位;第三,PI和重复控制的耦合是否互相打架,试着先单独开一路看效果;第四,PWM的开关频率和采样频率是否匹配,如果采样率只有5kHz而载波10kHz,离散控制会丢失信息,把Ts改小再试。

6.4 调参顺序与实用速查表

我最常用的调试顺序是先关掉重复控制,把PI调到波形基本成形没有大震荡;再单独开重复控制,Kr从0.3往上加,看稳态精度逐步提升;最后两者合并,再微调PI的Ki和重复控制的Qk。不要上来就两路一起调,出了问题分不清是哪一环节的锅。

问题征兆优先检查项调整建议
波形不收敛、步长卡死求解器设置、阻尼电阻用ode23tb,加阻尼
高频振荡重复控制Qk/Kr/超前拍数Qk降到0.95,Kr降到0.3
THD降不下去检测滤波器、N、PI增益提高LPF截止频率,校验N
动态恢复慢PI增益、复合结构调大Kp,确认PI支路导通
直流母线电压跌落电容容量、电压外环加大电容,检查电压环

最后再分享一个我实践下来的体会:重复控制的数组滚动实现,看着简单,但N一旦设错或者采样率跟载波频率不一致,调试时浪费的时间远超想象。所以我习惯在一开始就把Ts、Fsw、N这三个数值写在模型注释里,改模型之前先核对它们。做APF仿真的核心不是把模型搭通,而是把控制参数背后的物理意义想通。PI和重复控制这对组合,一个管突发、一个管反复,配合得当,谐波问题就没那么难缠。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询