最近有个朋友拿着一张电能质量测试报告来找我,说厂里几台直流充电设备一开,进线电流总谐波畸变率直接飙到27%,不仅电容器柜里嗡嗡响,还偶尔触发保护误动。我一看波形,典型的“不控整流+大电感直流侧”经典电流方波。我给他的建议是:不要在电柜里瞎拆瞎换电容,先用Matlab/Simulink搭一个有源电力滤波器(APF)模型,把治理效果仿真清楚再动手。这个思路执行下来效果不错,所以我把这个专用于不控整流及类似非线性负载的APF仿真模型的完整搭建过程、参数估算和避坑经验都整理在下面。适合三类人看:正在做电能质量课程设计或毕业设计的学生,准备用仿真预研APF装置容量的工程师,以及想验证自己控制器算法的硬件人员。文章不涉及具体商业软件授权和硬件物料,纯从技术角度把模型讲清楚。
1. 不控整流带来的谐波问题,到底有多难治
1.1 谐波从哪里来:三相不控整流桥的“特征谐波”生成机制
不控整流桥说白了就是六个二极管,按电网频率自然换相,没有任何人为控制。如果直流侧是纯电阻,交流电流波形理论上应该接近正弦;但工程里不控整流后面往往带的是大电感(比如直流电机、电池充电回路的平波电抗)或大电容(比如变频器前级),这时交流侧电流就不再是正弦了。最常见的是直流侧大电感工况:每个二极管导通约120度,交流侧电流变成一段一段的方波。
把这样的120度方波做傅里叶分解,就会得到频率为基波6n±1倍的特征谐波,也就是5次、7次、11次、13次、17次、19次……它们的幅值按1/h递减:5次约为基波的20%,7次约为14.3%,11次约9.1%,13次约7.7%。只看THD的话,理想120度方波已经超过30%,再加上电网阻抗、换相重叠角,实际测量落在25%~30%之间是很正常的事。我朋友那台设备测出来27%,就跟这个范围对得上。
理解这个机制特别重要,因为后面搭建APF模型时,目标谐波就是这些固定次数。有些同学一开始想搭一个“万能滤波器”,连谐波次数都不分析就直接上控制,后面往往南辕北辙。
1.2 谐波的实际危害:为什么不能只看看THD数字
谐波并不是一个抽象的电能质量数据,它比你想象的更容易变成现场事故。5次和7次谐波是负序分量,会在电机气隙里产生反向旋转磁场,让电机发热上升;在三相四线制系统里,3次、9次零序谐波在中性线上不是相互抵消,而是直接叠加,电线可能过载起火;变压器带谐波负载时,铁损和铜损同时增加,容量必须降额使用。这些都比较常见,真正让人头疼的是并联谐振:变压器漏抗和电容器组在某个频率附近形成低阻抗回路,把谐波电流放大,轻则电容器鼓包,重则直接炸裂。
所以在工程里,判断一个谐波治理方案好不好,不能只看THD降到了多少,还要关心治理后的频谱里有没有出现异常的局部放大。这也是为什么“质量过硬”的APF模型,必须能展示治理前后的谐波频谱,而不是只给你一条漂亮的时域正弦波。
1.3 无源滤波的局限,以及并联型APF的定位
在很多人印象里,LC无源滤波器便宜、简单,串一个电抗和电容就能滤掉低次谐波。但实际用起来坑很多:一个单调谐支路只能针对某一个固定次数,不控整流同时产生5、7、11、13次,要么上一排支路,要么只滤主要次数;电网阻抗一变,支路原本的谐振点就会偏移,补偿效果打折扣;负载谐波增加时,滤波支路也可能过载,容易烧。最麻烦的是LC支路和系统阻抗并联之后会形成新的谐振点,在某些频段反而把谐波放大。
有源电力滤波器(APF)换了一个思路:不靠阻抗谐振,而是实时测量负载电流里的谐波分量,然后用IGBT逆变器产生一个反向补偿电流注入电网,让电网侧看到的电流重新变成正弦。它是动态的,负载谐波变大它跟着变大,负载谐波变小它跟着变小,对不控整流这种负载波动频繁的场合更合适。并联型APF是应用最广的结构,直接挂在公共连接点(PCC)上,仿真模型里也是这么接的,后面我会详细展开。
2. APF模型的核心架构与参数选型:先把“为什么”搞清楚再动手
2.1 主电路拓扑:为什么是三相VSI加电感输出
并联型APF的主电路本质上就是一台三相电压源逆变器(VSI)。直流侧是储能电容,用于支撑瞬时功率交换;交流侧通过一个电感并联到电网;六个桥臂必须是IGBT加反并联二极管,因为补偿电流需要四象限流动,既要能向电网注入电流,也要能从电网吸收电流。
这里很多初学者会犯一个认知错误:既然名字里有“电源滤波器”,是不是和LC滤波回路一样,选个电容电抗就行了?不是这样。APF本质是一个可控电流源,它的“滤波”效果完全靠控制算法让逆变器输出期望的补偿电流来实现,主电路只是执行机构。交流电感是执行机构与被控对象之间的桥梁,既限流,又滤除开关纹波。
为什么不直接上LCL?因为在仿真阶段,LCL多出来的谐振峰很可能让你花一半时间在调阻尼而不是调APF控制器。单个电感模型简单、稳定性直观,kVA数不大的仿真验证完全够用。真要设计产品级的并网滤波器,再考虑LCL的参数优化。
2.2 直流母线电压与电容怎么估算:两个必须自己算的数值
这部分是所有仿真的地基,算错了后面控制调得再漂亮也白搭。
首先是直流母线电压Vdc。三相380V系统的线电压峰值是537V,VSI要随时输出比电网电压更高的瞬时电压才能驱动电流流动,所以Vdc至少要高于537V,工程上一般留1.2~1.5倍的裕量。我做仿真时取750V,这个值留了足够的余量,也保证了IGBT的电压应力不会太夸张。
其次是交流侧滤波电感L。按电流纹波约束估算:如果额定补偿电流有效值取50A,希望电感电流纹波不超过10%(也就是约5A),对于双极性调制,纹波峰峰值近似满足ΔI = Vdc/(8×fs×L)。开关频率fs我取10kHz,代入算出来L≈750/(8×10000×5) = 1.875mH,取2mH。注意这个电感也不能太大,否则电流内环带宽上不去,补偿效果会显得“肉”。
最后是直流电容C。APF直流母线上的电容承担的是瞬时功率脉动,不能用稳压电源的思路去选。按照能量平衡估算,C≥P_rip/(ω×Vdc×δV),P_rip是最大谐波补偿容量对应的脉动功率,δV是允许的电压波动。按补偿容量20kVA、电压波动3%(约22V)来算,C≈20k/(314×750×22)≈3.86mF,取4mF。算完之后我还会用仿真波形检查,如果直流波动超过设定范围就往上调。
我把这一组初始参数做成表,后面所有仿真结果都是在这个基础上跑的:
| 参数项 | 数值 | 说明 |
|---|---|---|
| 电网线电压 | 380V/50Hz | 标准三相系统 |
| 直流母线电压 | 750V | 预留约1.4倍裕量 |
| 交流侧电感 | 2mH | 纹波约束计算 |
| 直流母线电容 | 4mF | 瞬时功率脉动计算 |
| 开关频率 | 10kHz | IGBT典型水平 |
| 控制采样周期 | 100μs | 对应10kHz开关频率 |
2.3 谐波检测与控制:dq旋转坐标法为什么在Simulink里最稳
谐波检测是整个APF控制算法的“眼睛”。我采用的是基于dq同步旋转坐标的检测方法,也叫瞬时有功无功理论的坐标变换法。
原理可以这样理解:先把三相负载电流从静止abc坐标变到随电网基波角速度同步旋转的dq坐标。因为坐标轴是跟着基波正序一起转的,基波正序电流在dq轴上表现为直流分量,而5次、7次谐波在dq轴上表现为6次交流脉动,11次、13次表现为12次脉动。下一步只需要用低通滤波器把直流分量捞出来,剩余部分就是谐波。再用dq负载电流减去基波直流分量,得到谐波dq电流,反变换回abc,就是三相谐波补偿指令。
这个方法的优点是:物理概念清楚,每个模块都能单独看波形;对不控整流这种6n±1特征谐波来说,5次、7次在dq里同频,11次、13次同频,很好理解。比直接在abc坐标下做高通滤波要稳得多。PLL在这里至关重要,我用Simulink自带的Three-Phase PLL跟踪电网基波正序相位,带宽不要调太高,15~20Hz即可,否则在电网电压畸变的情况下PLL会锁到谐波相位上,造成整个检测结果抖动。
2.4 控制参数整定:电流内环、直流外环的实用初值
电流内环对象就是交流电感上的电流微分方程:L·di/dt = u_ab - e_ab。工程上喜欢按典型I型系统整定,把电流环带宽选在200~400Hz,则Kp近似等于L×2πf_bw,Ki近似等于Kp×R/L。取L=2mH、R=0.1Ω、f_bw=300Hz,算出Kp≈3.8、Ki≈188。这个组合在Simulink里能稳定,但为了调试方便,我会先降到Kp=2、Ki=100跑通,再往上加。Ki加太大的话,补偿电流会出现明显的高频抖动,同时直流电压也跟着抖,这是很多人“越调越乱”的根源。
直流电压外环负责维持750V母线电压。谐波补偿本身平均功率为零,外环主要补偿开关损耗和有功损耗,所以外环响应必须比电流内环慢一个数量级以上,带宽取10~20Hz。初值可以给Kp=0.2、Ki=4。外环输出是基波有功电流指令幅值,叠加到谐波指令电流上,就可以自动把直流母线电压托住。不设这个外环的模型,直流母线电压会慢慢跌落,补偿效果也就无从谈起。
3. Simulink下从零搭建APF模型:模块接线与参数设置的完整记录
3.1 顶层结构规划:把电源、负载、APF主电路、控制面分开
建Simulink模型切忌一条线连到底。我个人的习惯是在模型顶层分成四个子系统:电网与测量、非线性负载、APF主电路、控制子系统。每个子系统里再分小块,调试时哪个环节波形不对就进哪个子系统加Scope,效率高得多。
电网部分用Simscape Electrical > Specialized Power Systems库里的Three-Phase Source模块,线电压380V/50Hz。为了模拟实际线路阻抗,我串联了一个三相RLC串联阻抗模块,电阻0.01Ω、电感0.1mH,这样可以观察到APF补偿电流流经线路阻抗时的微小电压畸变。测量用Three-Phase V-I Measurement模块,把电压和电流同时引给PLL、谐波检测和控制环节。
不控整流负载用Universal Bridge,内部选Diode,直流侧接一个200mH电感和20Ω电阻串联。这个配置对应的是典型的电流源型不控整流,交流侧电流接近120度方波。如果直流侧改成电容再并电阻,谐波会变成高频尖峰,那是另一种更需要补偿的场景,本章先按大电感工况讲。
APF主电路用另一个Universal Bridge,内部选IGBT/Diodes,三相交流侧各串2mH电感后并联到PCC,直流侧接4mF电容。投入用理想断路器或直接把主电路连在母线上,我用断路器是为了方便对比治理前后效果。所有模块必须在同一个电气参考地(Grounded),否则仿真会报出电位悬空之类的问题。
3.2 谐波检测子系统的实现细节
控制子系统内部再分三级。第一级是PLL,我用Three-Phase PLL模块,输入电网线电压,输出角频率wt。注意这个wt要作为后面所有坐标变换的同步角度,方向必须保证正确,否则dq轴和电网相位对不上,检测结果会全是乱的。
第二级是谐波检测。负载三相电流经过abc_to_dq0 Transformation变成id和iq,然后各自通过一个二阶低通滤波器。低通截止频率我取30Hz,既能把300Hz的6次脉动按100倍以上衰减,又不会让基波直流分量损失太多。滤波后的id_base和iq_base就是基波正序电流在dq轴的直流分量。之后用原id减去id_base、原iq减去iq_base,得到谐波dq电流id_h和iq_h。
第三级是指令电流重构。把id_h、iq_h用dq0_to_abc反变换回三相谐波指令电流,再加上直流电压外环产生的有功电流指令幅值。注意这里有个延迟问题:为了模拟真实数字控制芯片的采样计算延迟,我会用Memory模块或Discrete Delay在电流反馈路径上延迟一拍(100μs)。不加这个延迟,仿真里的补偿效果会虚高,一旦到硬件实现就发现跟踪跟不上。这个细节是我个人认为判断模型是否“过硬”的分水岭。
3.3 电流跟踪与PWM调制环节:用PI而不是滞环的原因
得到三相谐波指令电流之后,下一步让VSI实际输出这个电流。常见选择有滞环比较器和PI加载波调制两种。滞环控制的优点是算法简单、动态快,但开关频率会随着电流变化率来回变,产生很宽的频谱噪声,在同步评估谐波治理效果时反而说不清楚。PI加三角载波调制频率固定,谐波频谱整齐,工程上更好实现,所以我采用后者。
在dq坐标下做电流PI,控制方程为ud = ud_feedforward + (Kp+Ki/s)(id_ref-id),uq同理。为了提升动态性能,我在PI输出上叠加了电网电压前馈项Ed/Eq,以及交叉解耦项ωLid和-ωLiq,这样两个轴的控制不再互相耦合。最终把Ud、Uq反变换到三相abc,送入PWM Generator(2-Level)模块,载波频率设10kHz。输出Gate信号接到Universal Bridge的g端。
这里想强调一下,经常看到有人直接把PI输出放到调制波,结果发现稳态误差很大或者电流震荡,原因就是缺少前馈和解耦。在dq坐标下的电流方程里,id和iq本来就有耦合项和解耦必需的电网电压项,忽略它们等于让PI自己硬扛耦合扰动,参数当然不好调。
3.4 仿真之前必检查的设置清单:解算器、Powergui、直流预充电
这是我跑了无数次之后总结的“六项检查”,对不收收敛、波形发散、启动冲击大这类问题基本一网打尽:
- Powergui模式必须设为Discrete,采样时间建议10μs。连续模式在IGBT开关切换瞬间很容易出现数值振荡,而且仿真速度慢好几倍。
- 解算器选fixed-step,步长与Powergui一致,比如10μs。变步长加离散PWM和断路器动作会出现大量过零检测报警。
- 直流母线预充电不能省。直接把参考电压拉满,启动瞬间的补偿电流会非常大。我用一个饱和斜坡发生器,让直流电压参考在0.2s内从0线性升到750V,实测冲击电流可忽略。
- Universal Bridge模块要把“Output internal signals”勾上,否则电流反馈信号没有,电流环肯定异常。
- 所有滤波器、PI、PWM的采样时间保持一致,统一用100μs或10μs。混合采样时间在离散仿真里是很多“莫名其妙抖动”的来源。
- 检查代数环。指令电流如果直接反馈给PWM而不经过任何memory或延迟模块,Simulink会为了求解形成代数环,轻则警告,重则结果错误。我因此特意在检测链路里放了一拍延迟,规避这个问题。
这六项里,最容易忽略但是影响最大的就是第3项直流预充电,很多仿真“开始就跑飞”其实是启动冲击造成电压电流过大的连锁反应,并不是控制算法本身有问题。
4. 用这个模型实测:不控整流负载下的治理效果与质量验证
4.1 测试场景设计与治理前基准
为了验证这个APF模型是否真的有效,我把仿真时间设为1s,整流负载(二极管桥+200mH电感+20Ω电阻)始终挂网,APF在0.3s才投入(通过断路器接入)。0.3s之前就是治理前,0.3s之后就是治理后。负载在0.5s时切入了第二个10Ω电阻,模拟负载突变,检验动态响应。
在APF投入之前,先看电网侧A相电流:波形是带换相凹坑的方波轮廓,不是正弦。用Powergui里的FFT分析工具对0.2s~0.3s这一段做傅里叶分析,结果THD=27.8%,5次谐波含量21.3%,7次12.1%,11次7.4%,13次5.6%。这个基准和前面理论估算的方波谐波基本一致。
4.2 治理后波形与FFT分析
0.3s投入APF并稳定后,电网侧A相电流不再是方波,而是非常接近标准的正弦波,只是幅值略有变化,因为APF同时也在补偿一点无功和线路损耗。取0.35s~0.45s这一段做FFT分析,THD降到4.6%,5次谐波降到2.0%,7次降到1.3%,11次、13次都降到1%以下。残余THD主要来自PWM的10kHz开关纹波(在FFT里看到高频毛刺)和电流检测低通滤波带来的相位滞后。
这里要提醒一点:FFT分析窗口必须取稳定后的连续波形,不能从投入瞬间开始取一整个周期,那样波形里混入暂态分量,会高估谐波。另外基波频率要锁定在50Hz,最高频率可以取2500Hz,显示方式选择Frequency Spectrum就能看到各次谐波柱状图。如果你走的通道是To Workspace导出的数据,注意采样步长必须小于1除以两倍最高分析频率,也就是小于200μs,我直接用Powergui的导出数据就没这个问题。
4.3 动态过程验证:负载突变与直流母线电压响应
0.5s时并联接入第二个10Ω电阻,负载谐波电流几乎翻倍。观察电网侧电流波形,APF补偿电流在大约半个基波周期(10ms)内就跟随上了新的谐波指令,电网侧电流几乎没有出现明显的畸变窗口,这就是并联型APF相比无源滤波器最核心的优势——能跟着负载跑。
再看直流母线电压:负载突增瞬间,直流电压会有约40V的下坠(从750V掉到710V左右),随后在1~2个基波周期内逐渐恢复,超调不大,最后稳定在750V附近。这个下坠幅度和恢复时间,可以作为评价外环参数是否合理的判据。如果看到电压掉下去以后持续振荡,多半是外环带宽太高或内环参数过紧,这时候把外环Kp减半、Ki保持或适当下调,振荡就会消失。
我还特意做过一个压力测试:把电网电压从360V快速升到420V,再回到380V,APF模型仍然稳定,补偿后的THD在4~6%之间波动,没有出现发散。这种实验在硬件上要花不少时间,在仿真里几分钟就能跑完,也是“模型质量过硬”的有力佐证。
4.4 判断一个APF模型“质量过硬”的四个维度
仿真都能跑了,但我一般不会宣告结束,而是按四个维度检查模型。第一个是稳态精度:电网电流THD在稳定工况下是否低于5%,各特征谐波(5、7、11、13次)是否真正衰减而不是互相抵消。第二个是动态响应:负载突变时,补偿电流是否能在0.5~1个基波周期内跟上,电网电流畸变窗口是否只有几个毫秒。第三个是直流母线稳定性:启动瞬间、负载突变的直流电压波动保持在正负5%以内,且无持续振荡。第四个是鲁棒性:换一组负载参数或者电网阻抗,系统依然能跑通。
这四个维度全过了,我才敢说这个Matlab/Simulink模型是用来治理不控整流负载及类似非线性负载的可靠工具。平时拿去给学生交作业、给同事做容量估算,也都经得起问。如果只是想下载一个能出图的模型,跑一分钟就完事,那这四个维度的意义你感受不到;但真要做预研或者写报告,这就是你和其他方案拉开差距的关键。
最后说点我自己的体会。我搭这个APF模型大概用了两个星期,其中前三天都在卡检测模块的同步相角问题,后来把PLL单独拉出来看波形才算找到原因;后面只要参数选对,整个仿真跑起来反而是最快的。所以我的建议是:搭建顺序上先做主电路加固定指令电流调试电流环,再做谐波检测,最后合上整个闭环,每一步都加Scope看中间量,比一次性连完再查故障快得多。这个模型本身我只在内部使用,不贴下载链接,但相信我,照着这篇的思路一步步搭,你也能做出同等效果的APF仿真模型,而且会比直接拿模型改参数理解得深得多。