有源电力滤波器APF仿真:PI+重复控制双闭环谐波抑制策略
1. 项目概述前阵子接手了一个电能质量治理方向的仿真项目任务是在Simulink里搭建一台并联型有源电力滤波器APF的完整模型重点验证一种“双闭环”控制策略——在传统PI电流环基础上叠加重复控制用来抑制非线性负载产生的谐波。这个方向在电网谐波治理里属于比较常规但十分核心的技术路线适合电力电子方向的硕博生、从事电能质量设备研发的工程师以及一切打算在Simulink里认真做APF仿真的同学参考。简单解释一下为什么这个课题值得做。开关电源、变频器、UPS这类非线性负载都会向电网注入大量谐波电流典型的就是5次、7次、11次这类6k±1次特征次谐波。谐波一多变压器发热、电缆中性线过流、保护误动作、精密设备受干扰这些工程问题就全来了。治理谐波的手段里无源滤波器PPF虽然便宜但存在谐振风险和频率偏移后效果恶化的问题有源滤波器APF通过实时检测负载谐波电流再输出一个大小相等、方向相反的补偿电流去抵消它动态性能和滤波精度都更优所以成了配电网侧的治理主力。而APF的性能天花板很大程度上取决于电流环的控制策略。传统PI控制结构简单、参数好整定但 PI 控制器对正弦参考信号的跟踪存在幅值和相位误差尤其是进入稳态后补偿效果很难做到极致重复控制基于内模原理能记住上一个周期的误差信息对周期性指令实现几乎无静差的跟踪特别适合应对电网谐波这种周期性扰动但它的缺点是动态响应慢一个周期才能修正一次。二者结合就是利用PI保证突变量出现时的快速响应利用重复控制保证稳态时的高精度补偿形成一种“快准”互补的控制架构。我这次搭建的是三相三线制并联APF系统直流侧电压750V开关频率10kHz基波50Hz非线性负载用三相不控整流桥带阻感负载模拟。整个模型做了模块化封装指令电流提取用同步旋转坐标系下的dq低通滤波法控制部分采用“PI 重复控制”并联式电流内环调制环节用正弦脉宽调制SPWM最后对补偿前后的电网电流波形对比并做了FFT谐波分析验证效果。下面我把整个项目从设计思路到建模过程再到参数整定和问题排查的完整过程梳理一遍。2. 整体设计与控制策略拆解2.1 为什么是“PI 重复控制”组合先看纯PI方案的问题。在dq同步旋转坐标系下基波正序分量会变成直流所以PI调节器可以做到对基波的无静差跟踪。但谐波在旋转坐标系下依然是交流量而且频率翻倍、三倍、五倍往上叠PI对这些分量并没有形成积分消除机理它的带宽又必须受开关频率限制不可能覆盖到很高的谐波频段。结果就是纯PI的APF能补偿一部分谐波但残余谐波比较大尤其是高次分量。重复控制的出发点完全不一样它依据的是内模原理如果某个信号会周期性重复出现那就在控制器里内置一个周期延迟环节相当于把上一周期的误差“记忆”下来然后在后续周期里叠加修正。对50Hz工频系统而言5次谐波250Hz、7次谐波350Hz都是周期性的它们的周期正好与基波周期成整数倍关系。只要误差持续存在重复控制器每个周期都会对它做一次累积校正直到误差被压到极小所以对周期性谐波的稳态抑制能力非常强。把二者并联控制输出为 u u_PI u_rep。当负载突变时PI立刻响应保证补偿电流动态跟随几个周期后重复控制器逐渐“学会”修正周期性误差系统进入高精度稳态。从控制理论的数学角度看PI提升了系统的截止频率和相位裕度重复控制则在特定频率点上提供高增益二者取长补短兼顾动态和稳态。2.2 系统级架构与信号流三相三线制APF的拓扑结构是电网经线路电感连接到公共耦合点PCC非线性负载与APF并联接入PCC。APF自身由输出电压可调的电压型PWM变流器和进线电抗器组成通过控制变流器输出一个与负载谐波电流方向相反的补偿电流实现电网侧电流正弦化。整个控制系统的信号流如下采样三相负载电流 iLa、iLb、iLc以及电网电压 eabc用于后续的指令电流计算采样APF直流侧电容电压 Vdc与参考值 Vdc* 比较后经PI调节器生成有功指令分量 id*负载电流经过dq变换提取基波有功和无功分量用低通滤波器分离出谐波分量再反变换到abc坐标系得到谐波指令 i_c*谐波指令与APF实际输出电流 i_c 做差送入“PI 重复控制”复合电流控制器控制器输出经过限幅和SPWM调制生成PWM开关信号驱动IGBT桥臂。这里有个容易被忽略的点直流电压外环的输出实际上是给电流内环提供有功电流基准因为APF要维持直流侧母线电压稳定必须持续从电网侧吸收少量基波有功功率来补偿开关损耗和电容漏电。所以指令电流不仅包含谐波分量还包含一个很小的基波有功分量。建模时如果把这一项漏掉直流侧电压会一路掉下去。2.3 控制策略对比方案为了验证“PI 重复控制”的优越性我在仿真中同时建了两个版本方案A电流内环仅用PI调节器方案B电流内环采用PI 重复控制并联。这样可以在同一负载工况和系统参数下对比补偿效果用FFT分析电网电流的THD总谐波畸变率直观地看出复合控制的稳态精度提升。后面实测结果也确实印证了这一点方案A的THD大约压到5%~8%方案B可以压到1%~3%高次谐波的抑制效果差异非常明显。3. 核心模块建模与参数整定3.1 主电路参数设定搭模型前先把主电路参数定下来。系统线电压380V/50Hz直流侧电压750V开关频率10kHz进线电抗器电感5mH等效电阻0.1Ω直流侧电容6800μF。非线性负载选三相不控整流桥直流侧接电阻负载额定功率约15kW——这是一个典型的工业整流负载谐波特征丰富适合用来验证APF性能。进线电抗器的电感参数直接影响补偿电流的纹波和动态响应取值太大则电流变化率不足补偿谐波的能力受限取值太小则开关纹波过大THD表现差。经验公式上电感值通常按交流侧额定电流和直流电压的关系来选使电流纹波控制在额定电流的10%~25%为宜。我这里选取5mH一方面考虑到开关频率10kHz下纹波电流满足要求另一方面留给电流环足够的带宽空间。3.2 指令电流提取环节设计指令电流提取在仿真中用的是dq法三相负载电流经Park变换到同步旋转坐标系以电网电压相位为参考在dq系下基波正序电流变成直流分量谐波分量则表现为交流脉动。用低通滤波器把直流分量提取出来再用总电流减去基波分量剩下的就是谐波分量做反变换回到abc坐标系就是谐波指令电流。这里的细节是滤波器的截止频率和阶数选择。截止频率太高基波分量泄漏不干净谐波检测会丢失低次分量太低则dq系下的谐波脉动被部分滤除检测出来的谐波会打折扣。工程上主流做法是用低通截止频率20~50Hz的二阶低通滤波器我用了Butterworth型截止频率30Hz。这个环节的精度直接决定APF能补偿到多少次谐波前期做谐波检测模块的仿真验证时值得多花些时间。不过也要说明dq低通法的动态延迟属于固定延迟对稳态检测精度影响不大但在负载突变瞬间指令电流计算会有一个滤波器暂态过程实际工程里经常采用瞬时无功功率理论pq法或滑窗DFT来加快检测速度。在软件仿真阶段dq低通法足够用逻辑也更直观。3.3 重复控制器的离散化实现重复控制是本次项目的核心控制环节简单说它要做两件事不断累积误差并经过相位补偿后作用于被控对象。模型里将其拆分成以下子模块周期延迟环节离散系统中采用N个采样周期的延时N 等于基波周期除以采样周期。本文采样频率与开关频率一致都是 10kHz50Hz 基波对应 N 200。误差累积将上一周期的误差信号与当前误差相加存入循环缓冲区。由于N200缓冲区长度即为200。Q滤波器修正在延迟环节反馈通道上串联一个接近1的常数或低通滤波器本模型中取低通滤波系数 0.95大幅避免重复控制在非谐波频段的增益放大提高系统稳定性。63增益调节重复控制输出乘以增益常数K_rep用于调节修正作用大小。取值过大容易造成电流超调和震荡过小则稳态修正效果不明显。相位补偿环节S(z)补偿被控对象在谐波频段的相位延迟典型实现是一阶超前lead环节离散化后的差分方程。重复控制的传递函数经典写法是G_rc(z) K_rep * z^(-N) * S(z) / (1 - Q(z) * z^(-N))其中 Q(z) 取0.95的低通滤波器N 取采样率/基波10000/50200。每隔采样周期步进缓冲区不断读取延迟输出——这就是“记忆上一周期误差并在后续修正”的本质实现。S(z)利用z域的超前校正把从控制输出到实际电流响应之间的相位滞后补回来。需要说明的是重复控制输出的本质是叠加在PI调节器输出之上的修正量PI调节器保证动态跟随重复控制慢慢累积修正两者并联直接相加最后送入PWM调制环节。Simulink中用离散传递函数模块直接搭建即可也可以用S-Function实现但用模块搭建更直观也便于后面参数化调节。3.4 PI参数整定与直流电压外环电流内环的PI参数先按典型II型系统整定再通过仿真微调。开启频率大致按开关频率的1/10~1/5选取本文取1kHz~2kHz左右Kp大约在5~15Ki大约1000~3000最终以仿真波形为准。由于电流内环的截止频率低于重复控制的频段二者避开了交互作用区域不会互相干扰。直流电压外环的带宽低于电流环典型取几十赫兹。直流电压参考值设为750VPI参数取Kp0.5Ki15。外环输出的是id*也就是APF需要从电网吸收基波有功电流的大小。如果外环响应太慢负载突变时直流电压会出现明显的暂态跌落影响补偿效果太快则会产生很大的冲击电流。工程整定就是在响应速度和过冲之间取平衡。4. 仿真建模实操与关键步骤4.1 Simulink模型整体布局搭建顺序上建议从主电路开始逐级验证最后再合并控制部分。模型的顶层结构分成几个清晰的功能块电网电源与线路阻抗非线性负载APF主电路三相桥臂、直流电容、进线电抗谐波指令电流检测模块直流电压控制模块电流控制模块PI 重复控制SPWM调制模块测量与FFT分析模块我习惯用不同底色区分主电路和控制电路便于调试时快速识别信号流。控制电路的所有信号要用Goto/From标签或总线结构连接避免线条交叉过多导致可读性差。4.2 开关与调制模块的搭建IGBT桥臂用Simulink自带的Universal Bridge模块选择“IGBT/Diodes”类型。调制方式采用双极性SPWM载波频率设为开关频率10kHz。调制波的生成方式是电流控制器输出的三相调制信号与一个高频三角载波比较生成开关脉冲送入桥臂门极。SPWM调制里有个最常见的坑载波相位和同步方式。三相系统必须保证三路载波同步否则输出线电压会出现非对称脉冲谐波增大严重时甚至造成直流侧电压周期性波动。建议用统一的“Repeating Sequence”模块同时输出三角载波信号或者用Clock和取模方式生成同步三角载波保证三相载波同相位。4.3 离散化与仿真步长选择Simulink仿真中需要注意离散控制器的采样周期与实际物理系统的离散周期一致。本模型中电流控制器的采样周期取1e-4秒等于载波周期直流电压外环的采样周期可以放宽到2e-4秒但仿真求解器建议使用固定步长离散求解器步长不超过2e-6秒否则容易因模型引入的数值振荡导致仿真结果失真。有一种情况值得警惕部分初学者直接把控制模块用一个大的定步长仿真跑控制步长和仿真步长混在一个层次结果高频PWM开关信号叠加在控制器输出上控制信号被严重污染。正确姿势是在控制器输出之后加上离散化的零阶保持器确保控制器采样间隔与开关周期对齐。4.4 参数化与封装技巧为方便参数调优我把所有关键参数用变量名定义在工作区或模型工作区中比如fs 10000 开关频率/采样频率f0 50 基波频率N fs/f0 重复控制延迟周期L_ac 5e-3 进线电抗Vdc_ref 750 直流侧参考电压Kp_i Ki_i K_rc Q_filt 等控制参数Simulink的Mask封装功能很推荐用起来。把谐波检测模块、重复控制模块、PI控制器模块分别封装成子模块外部仅暴露关键的输入输出端口和参数接口。这样不仅界面干净后续如果要换指令提取算法或复现不同控制方案只需要替换对应封装的内部结构即可不会牵连其他模块。5. 仿真结果分析与效果验证5.1 无补偿时电网电流谐波特征先看不接入APF时的电网电流。三相不控整流桥带阻感负载下线电流呈典型的两相导通波形顶部有明显的平顶畸变。对A相电流做FFT分析可以清晰看到频谱以6k±1次特征谐波为主5次谐波含量大概在20%~30%之间7次8%~12%电流THD大概在25%~30%左右。这个数据作为治理前的基准。5.2 纯PI控制下的补偿效果接入APF方案A仅PI电流环运行一段时间后电网电流波形有了明显改善波形更接近正弦但仔细看仍能看到畸变尤其在电流过零处和峰值处高次谐波残余仍然可见。FFT分析显示5次谐波从25%降到5%左右THD降到5.8%满足国标对一般场景的限值要求THD 8%但高次谐波如23次、25次压降不明显。纯PI控制的瓶颈在此体现电流环带宽受到开关频率限制高次谐波频率已经超过PI有效抑制范围即使加大Kp也只能用提高开关频率的方式换取带宽提升代价显著。5.3 PI 重复控制补偿效果对比切换至方案B即PI 重复控制并联后经过至少2~3个周期的“学习”过程电网电流波形明显更光滑。FFT分析显示5次谐波从5%进一步降到0.5%以下7次谐波降到0.5%左右23、25次高次谐波也有明显衰减THD最终降到1.47%左右。对比关键指标如下表所示控制方案5次谐波含量7次谐波含量THD动态响应无补偿24.8%11.6%28.3%——仅PI控制4.9%3.1%5.8%快PI 重复控制0.4%0.5%1.47%较快约2~3个基波周期从动态性能看负载突变后的前两个基波周期内PI和重复控制共同作用电流波动被迅速抑制当系统进入稳态后重复控制的作用逐步占到主导误差越来越小。总体来说这个策略对周期性谐波做到了“逼近零稳态误差”实际工程中若再配合PLL锁相环保证相位同步补偿精度可进一步提高。5.4 负载突变工况下的跟踪表现在模型里设置了一个阶跃负载在0.4s时突加50%负载功率。这个工况用来验证控制器动态性能。观察补偿后的电网电流波形可以看到突变瞬间电流经短暂畸变后约一个周期迅速恢复正弦直流侧电压波动幅度控制在4%以内经过约0.2s收敛回750V。相比纯PI方案PI 重复控制方案的暂态震荡幅度更小说明重复控制在动态过程中并没有恶化系统响应这是因为它在低频段的增益叠加与PI形成了良好配合没有造成过渡振荡。6. 实操中踩过的坑与排查技巧6.1 重复控制的产波振问题许多初次搭建重复控制的同学都会遇到同一类现象仿真启动时输出电流高频抖动甚至整个系统直接发散。原因往往是误差累加缓冲区在启动时有初始值漂移加上延迟环的增益大于1系统存在极点超出单位圆的风险。建议从以下几点排查检查Q(z)是否严格小于1不能等于1否则延迟环等于纯积分稳定裕度极小控制启动时做缓冲清零前几个周期先不启用重复输出让PI先把系统稳住K_rep从小往大试先设0.1观察系统是否稳定再逐步加到0.5~1S(z)补偿相位方向一定要看准被控对象在高频段有相位滞后超前补偿不能“过补”否则高频段相频特性翻转稳定性反而恶化。6.2 直流侧电压建立不起来仿真中直流电容电压建立不起来或者只有几百伏就上不去最常见的原因是指令电流里没有基波有功分量或外环PI参数不合适。可以做一个观测点把Vdc误差和id的波形拉出来看如果Vdc误差一直大于零但id小到忽略不计多半是外环限幅或Ki太小如果Vdc在某个值上下波动但平均值偏低需查一下线路电感的电阻是否过大。另外要确保仿真时间足够长直流侧电容充电时间常数可能长达0.5~1s仿真时间建议至少设置到1s以上不要一上来就看前0.1s的波形下结论。6.3 指令电流检测延迟导致的相位偏移谐波指令提取模块中的低通滤波器存在固有相位延迟谐波指令与实际的谐波电流之间会存在相位差。如果直接做差控制会在某些谐波频率上出现“补了反而不干净”的现象。解决办法有两类一类是把延迟时间常数做进重复控制的相位补偿网络S(z)中一并补偿另一类是用无延迟的滑窗DFT替代低通滤波法。在仿真阶段最直观的办法是记录负载电流和谐波指令的波形测量两者之间的时间差然后针对性地调整超前补偿节拍这个操作对结果影响很直接。6.4 仿真速度过慢的优化手段APF加PWM的仿真模型天然就慢非线性负载、开关器件、10kHz的高频载波叠加在一起一个1秒的仿真往往要跑几十分钟。我实际用过的提速手段有三招把IGBT和二极管用理想开关模型替代详细物理模型减少开关暂态计算量开关频率与控制采样率按实际需求分开设置控制部分不必跟载波同频采样但要注意等效延时的补偿尽量使用离散求解器避免连续求解器在PWM切换点上的变步长细分。如果做参数扫描建议先把单个工况跑收敛确认控制参数合理后再批量扫描。否则一次扫描可能因为某个参数组合发散浪费大量时间。6.5 重复控制误差缓冲区的初始化技巧模型里我顺手做了一个“重复控制使能”逻辑在前0.1s以内重复控制器不参与输出只让PI单独承担电流环的调节任务。0.1s之后重复控制才接入此时误差已经接近收敛范围重复控制学习的速度更快系统冲击也更小。这个细节让整体波形的暂态表现干净不少建议直接照抄。7. 一点经验之谈关于这套PI 重复控制的方案我在几个不同功率等级的项目里都试过从仿真到样机最直观的体会就是控制参数之间的耦合比预想的要敏感。很多人把PI调得很激进再去加重复控制结果系统出现奇怪的次同步震荡反过来把PI带宽压低一些重复控制的前几个周期虽然出力慢但最后稳态指标反而更好。这也是为什么我习惯把PI调节器的截止频率放在开关频率的1/10左右再逐步往上试——先给重复控制留出裕度再用PI去补动态。另外重复控制本质上是一个学习型控制器它并没有改变被控对象的物理特性只是消除周期性跟踪误差。实际样机调试时电网频率的微小波动49.8Hz、50.2Hz这种会直接破坏N值得整数倍关系导致补偿效果明显下降。所以工程上通常还要加频率自适应或者用锁相环跟踪电网频率来动态修正N值。仿真阶段固定50Hz看不出这个问题但真到了样机阶段这个问题绕不开。从仿真到工程落地中间还有很长的路但把Simulink模型里的逻辑吃透、参数整定原则搞明白后面的路会顺畅很多。如果你也在调类似的模型建议先从纯PI跑通再逐层叠重复控制每加一层都要观察波形和FFT的变化而不是一口气把整套控制全怼上去那样出了问题很难定位到底是谁在捣乱。模型搭建不难难的是想清楚每个环节为什么存在、参数应该如何取舍。希望这篇记录能帮正在做谐波仿真的你少走些弯路。