三相并联型APF仿真全解析:PI控制、谐波补偿与SVPWM调制

发布时间:2026/9/8 16:15:02
三相并联型APF仿真全解析:PI控制、谐波补偿与SVPWM调制 先说明一下我做这个项目的场景实验室有一台模拟非线性负载的整流设备电网侧5、7次谐波超标比较严重THD到了27%左右。我们最初的想法当然是上APF但直接买一台成品柜子去做补偿测试成本高、风险也不小。所以我先在Simulink里把三相并联型有源电力滤波器APF的仿真环境完整搭了一遍重点验证PI控制策略和几种常见的改进控制方法把电流跟踪性能谐波补偿效果直流母线电压稳定性这些东西先搞清楚。这篇文章就是那次仿真探索的全过程记录核心围绕APF、PI控制、仿真这三个词展开适合正在做电能质量仿真、电力电子控制、或者准备搞APF样机的朋友参考。1. 三相并联型APF到底在解决什么问题1.1 谐波补偿的基本逻辑在展开仿真之前先把APF在干什么事情说透。传统电网里的谐波源大多数是整流器、变频器这类非线性负载其中三相桥式整流带阻感负载是最典型的它向电网注入的是6n±1次特征谐波也就是5、7、11、13次这几个占大头。比如5次谐波电流大约是基波的20%到30%7次大约10%到15%。这种谐波电流流经系统阻抗会在网侧产生电压畸变导致别的敏感设备跟着出问题。把谐波消除掉的办法分成两种路子一种是被动式的无源滤波器就是在谐波源旁边并联LC谐振支路让谐波电流走近道。优点是便宜、结构简单缺点是只能针对固定次数的谐波电网阻抗一变补偿特性就飘还容易和系统发生谐振。另一种就是本项目的核心——有源电力滤波器APF。它本质上是一台并联在电网中的可控电流源逆变器实时检测负载电流中的谐波成分然后主动注入一个大小相等、相位相反的补偿电流把公共连接点上的电流洗回正弦波。选择三相并联结构而不是串联结构是因为并联型APF在工程上是绝对主流。它直接并联在负载两侧安装不影响原有负荷供电检修时断开即可扩容维护都比较方便。串联型APF需要串入主回路故障时反而成为停电隐患所以实际应用少得多。这个选型逻辑在仿真阶段其实不重要但如果你是照着工程需求去做仿真而不是单纯练手从一开始就要按并联结构搭。1.2 系统整体构成与仿真角色分工一个完整的三相并联型APF仿真系统至少要有这几个部分模块作用仿真中的角色三相电网提供基波能源带一定内阻抗三相电压源网侧R/L非线性负载制造谐波的对象三相不控整流桥直流阻感负载谐波/无功检测模块从负载电流中提取需要补偿的分量坐标变换低通滤波器电流控制器根据指令电流计算电压指令dq轴PI控制器前馈解耦PWM调制器把电压指令变成开关信号SVPWM生成器主电路逆变器输出实际补偿电流IGBT三相桥直流母线电容直流电压控制器维持母线电压稳定补偿有功能量损耗电压外环PI我们搭模型的时候一定要按照上面这个分工去划分模块不要让控制逻辑全挤在一个function block里。Simulink仿真没问题不代表你能顺利过渡到样机模块化建模的习惯会帮你把每个环节的信号流缕清楚后面调PI参数时也能一眼看出问题出在哪一层。2. 谐波检测模块仿真的第一步就是看得见谐波2.1 dq同步旋转坐标系下的谐波分离原理APF的控制质量很大程度上取决于谐波检测环节是不是干净可靠。本项目采用的检测方法是基于瞬时无功功率理论的dq法也叫ip-iq法。这里的关键点是在同步旋转坐标系下三相正弦量变成什么一个50Hz的三相平衡基波电流经过等幅值Park变换到与电网同步旋转的dq坐标系里会变成一个直流分量。而5次谐波是负序分量它相对于旋转坐标系的角速度是负的6倍频所以变换后变成-300Hz交流量7次谐波是正序变换后变成300Hz交流量。也就是说在dq坐标系里基波是直流各次谐波被搬移到不同频率的交流分量上分别对应6、12、18倍频。这个性质非常关键因为我们可以先把负载电流变换到dq坐标系下用低通滤波器把直流分量剔出来保留谐波交流分量再经过坐标反变换得到时域里的谐波指令电流。我试过直接在abc坐标系做各种数字滤波器去提取谐波效果都不如dq变换干净运算量也没少多少所以仿真和工程实现都推荐用dq坐标系的方案。具体到检测通路我用的是这样的流程电网电压经PLL锁相得到同步角度θ目的是让dq变换的参考轴和电网电压矢量对齐三相负载电流ia、ib、ic经过Clarke变换得到αβ轴分量再经过Park变换旋转角度θ得到id和iqid和iq分别通过低通滤波器滤除交流谐波部分剩下的就是基波对应的直流量反变换回abc坐标系得到基波分量iLa1/iLb1/iLc1原本的负载电流减去基波分量剩下的就是谐波分量作为电流环的参考指令如果还想补无功再把iq的直流分量也加进补偿指令。2.2 低通滤波器截止频率怎么选最合理低通滤波器是整个检测环节里最容易出问题的地方。截止频率选高了滤不干净交流分量基波提取不准确补偿指令里就会混入基波成分截止频率选低了动态响应慢负载突变时谐波检测跟不上补偿效果会暂时恶化。我做了几轮对比实验在这里直接说结论基本规律LPF截止频率一般取开关频率的1/10以下同时要保证能滤除最低次谐波对应的交流量对三相不控整流负载来说最低次谐波在dq轴上是6倍频也就是300Hz。把我们平时用的80Hz到150Hz这个范围拿出来做对比100Hz是比较均衡的选择既能压住300Hz交流分量又不会让系统动态响应慢到不可接受。当然工程上有更讲究的做法比如在滤波器中加入陷波器专门滤掉300Hz或者直接用平均值计算代替低通滤波数字实现里用滑动平均窗口窗口长度10ms即一个完整工频周期效果也很好。仿真阶段用二阶级联Butterworth低通滤波器就行把采样时间设成和控制系统一致Fc100Hz。实测下来THD从27%降到5%以下这个检测通路没有拖后腿。2.3 PLL锁相环在仿真里反而容易忽略很多人觉得PLL就是个小模块放着不管。但PLL的质量直接决定了dq变换的角度精度角度偏了哪怕几度id/iq里面就会产生耦合电流环怎么调都好不了。在Simulink里我用的是Simscape Electrical自带的PLL模块它的核心是一个基于dq变换的闭环锁相把q轴电压通过PI控制器调节到0实现相位锁定。需要注意PLL的PI参数要单独去整定不要和电流环PI混为一谈。实测把PLL带宽设置在100Hz到200Hz之间比较合适太低跟踪电网相位突变太慢太高又会把电网谐波耦合进来导致锁定角度抖动。这里分享一个调试时的小技巧先把PLL输出的角度θ和A相电网电压画在同一个示波器上用示波器的光标量一下过零点的对应关系。电网电压从负到正过零的时刻θ应该接近0或者2π的整数倍。如果对不上先查PLL再去调别的环节。3. 电流内环PI控制与前馈解耦核心方法的仿真落地3.1 为什么电流环必须放在dq坐标系项目标题里带有PI控制其实PI控制本身并不稀奇难点在于怎么用PI去控制正弦电流。如果直接在abc坐标系下用PI去跟踪一个50Hz正弦指令由于PI对交流正弦信号无法实现无静差跟踪补偿电流和指令之间会一直存在幅值和相位误差最终谐波补偿效果不达标。解决方案是把控制目标放到同步旋转坐标系下。在dq坐标系中我们需要跟踪的电流指令是直流量PI对直流输入具有无穷大开环增益可以做到零稳态误差。这就是本项目的电流环采用电网电压定向的dq坐标系PI控制的根本原因。旋转坐标系带来的代价是d轴和q轴之间存在交叉耦合项当电感和角频率较大时耦合不容忽视。常见的处理办法是引入前馈解耦控制把耦合项显式抵消掉。电流环控制方程写出来大概是这样的形式ud_ref (Kp Ki/s) × (id_ref - id) - ωL×iq eduq_ref (Kp Ki/s) × (iq_ref - iq) ωL×id eq等号右边最后两项中的ed和eq是电网电压在dq轴上的前馈分量作用是抵御电网扰动中间的ωL项就是解耦补偿。如果不加这两个耦合项实际调试中会看到d轴电流变化时q轴电流跟着波动两个轴互相打架控制器很难收敛。3.2 电流内环PI参数的计算与调整思路对于电流内环PI参数我推荐先按理论算一个初值再在仿真里细化调整不要完全靠瞎凑。以进线电感L3mH、线路电阻R0.05Ω为例这个对象的传递函数可以近似成一阶惯性环节时间常数T L/R 0.06s。采用零极点对消的设计思路让PI控制器的零点去抵消被控对象的极点闭环带宽可以设置到开关频率的1/10大约1kHz。按这个整定公式推导下来Kp大概落在2到6之间Ki大概在100到300之间。Simulink里搭模型时建议给PI控制器单独封装一个模块用离散化形式实现后端输出要加饱和限幅防止PWM调制波超出线性范围。饱和上限可以按照直流母线电压来设定比如母线750V输出限幅设置为±700V比较合理。限幅之外最好加一个anti-windup也就是积分抗饱和否则负载突变时积分项会冲得很高退饱和过程拖得很长补偿电流会严重过冲。这个问题我在仿真里遇到过很多次波形表现为负载切入时补偿电流有一个大的尖峰然后逐渐回落通常就是积分饱和在起作用。我先说一个参数整定实操流程非常适合仿真阶段快速找到可用参数先把Ki设得很小比如10只调Kp从0.5开始往上加观察dq电流是否跟得上指令直到电流出现小幅振荡再往回退固定Kp在刚才找到的值的60%左右开始加Ki每次翻倍往上试观察稳态误差是不是消失如果电流波形出现高频振铃大概率是Kp太大或者控制器输出限幅与SVPWM不匹配如果稳态误差一直消不掉确认是否加了前馈解耦如果没有q轴扰动会导致系统始终存在偏差。3.3 直流侧电压外环为什么也不能省APF逆变器本身是耗能元件开关损耗和线路损耗会让直流母线电压慢慢往下掉所以必须在控制策略里加入电压外环维持直流侧电容电压恒定。电压环的输出作为有功电流的调节量叠加到d轴电流指令上也就是说电压环负责补偿损耗带来的有功功率缺口。直流电压环设计时有个很容易踩的坑直流母线电压里包含明显的纹波成分尤其在补偿谐波时纹波更大。如果直接把电压采样值送给PI控制器PI会把纹波当成真实误差去调节输出电流指令里会混入低频交流成分反而给电网注入新的谐波。我的处理办法是在电压采样后面加一个低通滤波器截止频率设成20Hz左右滤掉主要的工频二倍频纹波代价是电压环动态响应会变慢但这在APF场景下完全可以接受。电压环PI参数和电流环一样需要整定但要注意一个原则电压环带宽要比电流环带宽低很多一般做到1/5到1/10。电流环是每秒能跟上指令的快家伙电压环只需要慢悠悠稳住直流电压就行。这两个环路带宽拉不开系统就会出现次同步振荡直观表现是直流母线电压波形和补偿电流波形一起低频起伏。我在仿真里用的直流侧参数是母线电压给定750V直流电容C4700μF。从仿真波形看负载切入瞬间母线电压跌落到735V左右经过大约80ms恢复这个动态性能对APF来说是可以接受的。电容如果取得太小比如1000μF电压纹波会显著增大电压环和电流环的交互就变得很难处理。4. SVPWM调制与仿真模型搭建的实操细节4.1 从PI输出到开关信号SVPWM的实现步骤把电流环PI算出的d轴和q轴电压指令变换回αβ坐标系接下来要交给PWM调制。本项目采用SVPWM空间矢量脉宽调制而不是传统的SPWM最直接的原因是SVPWM的直流电压利用率比SPWM高了大约15%同样的母线电压可以输出更大的交流电压这对APF补偿容量是有实际意义的。换个说法如果采用SPWM直流母线电压得抬到更高才能实现同样的补偿电流输出能力成本更高IGBT耐压也更吃力。SVPWM的仿真实现流程按以下步骤走用Park逆变换把ud/q变换成uα和uβ根据uα和uβ的组合判断参考电压矢量所在扇区共6个扇区计算相邻两个基本电压矢量的作用时间T1和T2把T1和T2变换到实际的A/B/C三相占空比信号按照七段式发波顺序把占空比和三角载波比较产生6路IGBT的PWM信号。在Simulink里我用的是SVPWM的离散计算模块脉冲生成用PWM Generator比较方便。有一个参数必须注意SVPWM的调制波幅值不能超过直流母线电压对应的线性调制区上限否则进入过调制区后输出电流畸变率会突然变差。如果仿真中发现电流波形在波峰附近有削顶现象先检查调制深度是不是接近甚至超过1了。4.2 Simulink模型搭建参数速查前后折腾了很多版模型最后稳定可用的仿真参数如下如果只是想先把APF跑起来可以直接采用这套作为起点参数数值说明电网相电压有效值220V线电压380V50Hz网侧等效电阻0.01Ω模拟线路阻抗网侧等效电感0.5mH模拟短路阻抗非线性负载三相整流桥直流侧R5Ω/L1mH产生5、7等特征谐波APF进线电感3mH决定电流环增益和纹波直流侧给定电压750V留足调制裕量直流侧电容4700μF支撑母线电压稳定开关频率10kHzSVPWM载波采样/控制频率20kHz离散控制步长1/20000sLPF截止频率100Hz谐波检测用仿真求解器建议选择离散求解器固定步长2e-5s不要用ode45变步长去跑电力电子模型。变步长在开关切换瞬间会密集计算速度慢是一回事更麻烦的是某些时刻步长太小导致数值收敛问题波形毛刺多。用离散定步长仿真电力电子系统是最稳的做法。4.3 调制方法与控制策略的横向选择思路做仿真探索不能只抱着一种方法不放。我在搭完基础dq-PI加SVPWM的模型之后还对比了另外几种常见的控制方法实现这部分虽然费时间但对理解APF控制很有价值。滞环电流控制是最直观的一种它不需要PWM调制器直接比较实际补偿电流和指令电流的差值当误差超出滞环宽度时切换开关状态。优点是算法简单、动态响应快缺点是开关频率不固定导致电流纹波频谱分散输出滤波器和EMI设计都麻烦。仿真里我会把滞环宽度设成电流额定值的5%效果看着还行但放到工程上就不太推荐做主方案。PR控制是另一个实用的备选方案它可以在静止坐标系下对特定频率信号实现高增益。PR控制器的传函特点是基频处增益趋近无穷大理论上不需要dq坐标变换就能无静差跟踪正弦指令还可以针对5次、7次谐波单独并联谐振环节实现选择性补偿。但PR参数比PI敏感谐振频率点偏移一点效果立马变差数字实现的时候对离散化精度要求也更高。我在做完对比后形成了这样一个判断对于谐振电网环境下的并联APF工程上采用dq坐标系结合PI控制加前馈解耦是最成熟、调试工具链最完备的方案后续如果要突破性能上限再叠加特定次谐波补偿的谐振控制器或重复控制也不迟。仿真模型的价值就在于提供一个能快速切换控制方法做验证的测试台这一点在后面的扩展研究里体现得很充分。5. 仿真过程中遇到的坑与排查实录5.1 谐波补偿后THD不降反升的排查第一次把整套模型跑通时我很兴奋地点开FFT分析看THD发现补偿后的网侧电流THD居然比补偿前还高了一点当时真是一盆冷水浇下来。后来逐段排查发现问题出在谐波检测模块的低通滤波器上滤波器的相频响应让提取出的基波分量带了相位延迟用负载电流减去这个带延迟的基波得到的谐波指令本身就包含误差补偿进去自然不可能对。解决这个问题有两条路。第一条是采用零相位延迟的数字滤波实现方式比如用滤波函数对数据做正向加反向处理这在实时控制里没法做因为存在未来数据工程上真正的解决办法是减少滤波级数、改滤波器类型或者加入相位补偿。第二条路是干脆不用模拟滤波器改成dq坐标系下平均值计算的方法提取基波直流分量用一个工频周期20ms的滑动平均窗口直接求积分平均相当于一个线性相位特性的滤波器相位延迟可以精确补偿实现也不复杂。我在第二版模型里换成了滑动平均谐波检测环节的精度明显提升补偿后THD就正常了。5.2 PI参数调了大半天发现是坐标变换系数没统一另一个让我记忆犹新的问题是dq电流环的PI参数怎么调都调不出来甚至出现d轴电流跟随良好而q轴电流反着来的怪现象。折腾到最后发现Clarke变换模块里我用的是等幅值变换系数sqrt(2/3)而Park变换模块参考别人模型时用的是等功率变换两套变换系数混用导致d/q轴的电流幅值基准不一致PI控制器感知到的反馈值和真实值之间差了一个比例系数。这个问题的坑在于单纯看波形形状是正常的只是幅值不对特别容易让人误以为是PI参数不合适于是在错误的方向上反复调参数。第二次排查时我把三相电流、变换后的id/iq曲线全部记录下来计算幅值比例关系才发现坐标系基准乱了。建议大家在搭模型时统一在文档里注明采用等幅值变换还是等功率变换整个系统从头到尾用一套不要从网上随手复制别人模块混着用。5.3 直流母线电压起飞了怎么办在调试电压外环时我遇到过直流母线电压缓慢上升甚至起飞的情况一直冲到900V以上虽然没有击穿IGBT仿真里也没法真正炸管但波形已经完全失控。问题根源在于电压环PI的极性接反了。我当时的设计意图是当母线电压低于750V时电压环输出应该增大有功电流指令让逆变器从电网吸收更多有功给电容充电。我实现时不小心把误差符号取反变成电压越低越减少有功电压越高反而吸能正反馈当然越跑越偏。这种符号级的问题一般出现在从理论到模型转换的阶段看着很小危害却很大。排查方法也简单在电压环输出端加一个示波器观察电压指令小幅阶跃变化时看它的输出方向是不是符合直觉逻辑。另外还有一次母线电压高频振荡这次不是极性错是直流侧电容和进线电感形成了谐振回路开关纹波激励起了振荡。我处理的方法是增大电容容量并适当加大电压采样滤波同时把电压环PI的带宽进一步压低问题才消掉。仿真中如果电压波形出现高频毛刺先不要急着调PI检查一下采样滤波和电容参数是否构成谐振才是根治的方向。5.4 仿真速度慢到怀疑人生怎么办最后记录一个纯粹的项目效率问题。第一次整体跑仿真时Simulink里满载运行一个1秒钟的仿真要十几分钟每调一次PI参数就折磨一次。后来做了几项优化速度提升了非常多把求解器改为离散定步长并选用ode3或ode4算法不要在电力电子模型里用ode45去掉不必要的连续模块和示波器数据记录Scope要减少到关键波形尽量不要记录全部信号到工作空间谐波检测里的低通滤波器如果连续域实现在离散系统中会产生额外的小步长求解负担全部改成离散滤波器Powergui设置为离散仿真模式并且仿真步长合理设置在20us级别不要过小。做完这几项优化后同样1秒钟仿真时间大概只需要两三分钟整个调试周期缩短了非常多。仿真这事儿能多快跑完一个case决定了你能在同样时间里验证多少设计和参数组合省下来的时间都用在刀刃上。6. 收尾前的一些扩展与个人体会到这里三相并联型APF的仿真探索主线就已经完整了。从谐波检测的dq变换和低通滤波到电流内环的PI控制与前馈解耦再到直流电压外环和SVPWM调制整个链路里每一步都有明确的物理意义和设计目标。后续如果想继续往深度走还可以尝试在这个模型基础上加LCL滤波器研究更复杂的高频稳定性问题也可以在电流环里加入重复控制器去提升对周期性谐波的补偿上限这几个方向我都已经列进了下一步计划。最后说一点个人感触。APF仿真的价值不只是把波形做出来交差更在于它逼着你去理解每一个模块背后的物理过程和因果关系。比如PI控制器的参数为什么是这个量级SVPWM的线性调制区为什么和直流母线电压存在一个根号三的关系只有把这些问题都过一遍后面做硬件实验时才不会两眼一抹黑。希望这篇仿真探索记录能帮正在做同类项目的人少走几步弯路哪怕只在某一个小问题上给了你启发那这文章就没白写了。