背对背MMC电能质量调节的Simulink仿真建模与调试全解析

发布时间:2026/9/9 17:38:03
背对背MMC电能质量调节的Simulink仿真建模与调试全解析 做背对背MMC这个仿真很多人一开始心里想的是“把模型搭起来跑通就行”但真打开Simulink以后才发现跑起来容易跑得稳、结果可信、指标能落地才是真正考验功夫的地方。这篇博文我想完整复盘一下我是怎么把一个背对背高压直流调制多电平变流器MMC当成电力质量调节系统来建模仿真的包括拓扑选型、参数计算、控制策略、工况设计以及我自己踩过的几个大坑。如果你想用Simulink做MMC相关的电能质量研究这篇文章应该能帮你少走很多弯路。先说结论背对背MMC当作电能质量调节系统用核心优势在于两个换流站共享一条直流母线有功功率可以在两侧双向流动同时两侧还能独立控制无功功率。也就是说一端可以稳定直流电压另一端可以灵活响应电网的有功无功需求配合合理的调制和均压控制就能同时处理功率因数校正、电压支撑、谐波治理这些电能质量问题。选Simulink做这件事主要是因为电气与控制系统可以在同一个环境里联合仿真建模层次清楚调试时能一层层定位问题比纯手写公式和程序要直观得多。1. 背对背MMC凭什么能当电力质量调节器先把原理吃透再建模1.1 背对背MMC的结构与电能质量调节的本质背对背MMC的结构说白了就是两个MMC换流站通过直流侧直接相连中间不设长距离直流线路。每个换流站都是一个三相模块化多电平变流器每相分为上下两个桥臂每个桥臂由若干个互相串联的子模块SM和一只桥臂电抗器组成。整流侧和逆变侧共用直流母线电压能量流动方向可以快速反转所以特别适合用于两个交流系统之间的柔性互联、区域电网支撑以及作为电能质量调节装置使用。从电能质量的角度看一个电力系统出现的问题无非就是几类功率因数偏低、无功不足引起电压跌落、负载突变导致电压波动、非线性负载带来的谐波电流等等。背对背MMC能同时解决这几种问题的原因在于MMC本身是电压源型变流器输出电压的幅值和相位都是可控的背对背结构又让两侧的交流系统通过直流母线实现了电气解耦一侧的扰动不会直接传导到另一侧。这样整流站可以稳定直流电压、提供无功支撑逆变站则按需传输有功、补偿负载无功需求进而让电网侧看到的是一个接近纯阻性的“好负载”这就是它作为电力质量调节系统的本质逻辑。1.2 为什么选MMC而不选传统两电平VSC很多人在做电能质量调节仿真时第一个想到的是两电平或三电平VSC。两电平VSC结构简单、控制成熟但对大功率场景有几个硬伤开关频率高导致开关损耗大输出谐波含量高必须靠大容量滤波器才能把电能质量做到好看。而MMC把对大功率开关器件的压力分摊到几十甚至上百个子模块上每个子模块只承担一个较低等级的电压可以使用相同规格的IGBT模块实现高电压等级输出通过多电平逼近正弦波输出电压谐波大大降低滤波器压力小很多。另外MMC的桥臂电感和子模块电容天然构成了储能环节本身就具备一定的电压波动平抑能力。在Simulink里做仿真时这种多电平结构虽然模型复杂度高、仿真速度慢一些但它带来的谐波特性和故障行为更接近真实工程。如果你后续要在论文或项目里验证“电能质量调节”这个命题审稿人和工程师更认可MMC这种工程化方案而不是两电平的简化思路。提示如果你的研究重点纯粹是控制策略验证可以先搭一个“受控电压源等效桥臂”的平均值模型跑通逻辑但如果核心是电能质量指标谐波、电压纹波、电容电压波动就必须用详细子模块模型千万别省这一步。2. 主电路参数与模型选型子模块电容、桥臂电抗和Simulink建模2.1 关键参数的计算思路以20MW/±20kV系统为例我这次仿真选择的是一个中等容量的背对背系统额定直流电压±20kV即直流母线总电压 (U_{dc}40kV)额定功率 (P20MW)每桥臂子模块数 (N20)子模块额定电压 (U_{SM}2kV)。这个等级在Simulink里仿真速度还算能接受又足以观察到多电平输出的全部特征。先说子模块电容的估算。子模块电容主要决定电容电压波动幅度工程上一般要求波动不超过额定电压的±10%常见经验公式是[ C_{SM} \approx \frac{S_N}{3 \cdot N \cdot 2\pi f \cdot \Delta U_{SM} \cdot U_{SM}} ]式中 (\Delta U_{SM}) 是允许的电压纹波我这里取0.1。代入上面的参数得到的电容大约在几毫法级别。实际计算更工程化一点的做法是用储能比系统单位容量对应的子模块总储能 (W_{total} 6 \times \frac{1}{2}C_{SM}U_{SM}^2)一般取 30~40 kJ/MVA。以20MVA算总储能约600~800kJ单个子模块储能约50~67kJ反推 (C_{SM}) 在25~33mF左右。我最终取了 (C_{SM}30mF)仿真里电容电压波动能控制在设定范围内。桥臂电抗器的作用是抑制桥臂间的环流同时限制交流侧短路电流上升速率取值通常按桥臂电抗相对压降来计算经验路径是选择0.1~0.15 p.u.。以我的系统为例交流侧相电压峰值约18kV考虑调制比0.95相电流峰值约428A桥臂电抗压降按0.12 p.u.算的话桥臂电感大致落在10~15mH区间。我取 (L_{arm}12mH) 做基准后面调试时发现环流抑制效果不够又在控制里加了谐振控制器环流分量才压下去。2.2 详细模型和平均值模型怎么选Simulink里搭建MMC有几种做法全IGBT级详细模型、子模块等效模型、桥臂平均值模型。全IGBT级模型直接拖电力电子开关管最真实但仿真极其慢20个子模块一相就是40个桥臂管三相240个开关管仿真步长必须很小跑一个暂态能在电脑前等上半天。桥臂平均值模型把整个桥臂等效为一个受控电压源串联一个受控电流源速度快很多用来调试控制系统非常方便但看不到子模块电容均压的动态过程。我的做法是分两个阶段控制策略验证阶段用平均值模型把功率传输、直流电压稳定、无功补偿这些逻辑先调通验证无误后再切换成“子模块等效模型每个子模块用一个戴维南等效电路表示”用来观察均压算法和环流特性。Simulink中推荐使用Simscape Electrical里的MMC模块库它自带子模块级建模可以快速配置子模块数、电容值和桥臂电感而且支持离散化仿真这对后续调整步长很有帮助。2.3 Simulink模型布局的实用建议搭建复杂模型时布局决定了你后面排查问题的效率。我习惯按信号流向分块左侧交流电源与阻抗中间是整流站MMC1直流母线逆变站MMC2右侧交流负载与电网上方单独放控制系统。用Subsystem把主电路、控制器、PWM发生器和测量模块隔离控制器内部再按“外环-内环-调制-均压-环流抑制”分层。这个分层看起来只是美观问题实际调试时能让你快速定位问题到底出在调制、均压还是功率控制避免整个模型一团乱麻。3. 调制、均压、环流抑制MMC能稳定运行的三个支柱3.1 NLM最近电平逼近与载波移相PWM的选择模块化多电平变流器的调制方式本质上是在输出电压波形上“叠台阶”。子模块数多了台阶就密谐波就小。两个最主流的方案是载波移相PWMCPS-PWM和最近电平逼近调制NLM。CPS-PWM的思路是每相每个桥臂的N个子模块各自用一个三角载波载波相位依次错开 (2\pi/N)再与同一个调制波比较生成对应的开关信号。这样等效开关频率是单个IGBT开关频率的N倍谐波被推到很高的频段滤波器特别好做。Simulink里实现CPS-PWM可以用自带的PWM Generator也可以用基本的Relational Operator和三角波发生器组合起来搭后者更容易控制载波相位偏移量。NLM的思路更简单粗暴根据当前调制波的电平值实时计算需要投入多少个子模块公式是 (N_{on} round(N \cdot \frac{u_{ref}}{U_{dc}/2}))然后按排序结果决定投入哪些子模块。NLM比较适合子模块数很多比如几十上百的场景因为电平数越多最近电平逼近的阶梯波就越接近正弦波。我的模型里N20用CPS-PWM更合适因为20个台阶用NLM也能跑但谐波性能明显不如CPS-PWM而且CPS-PWM的载波频率控制和均压策略配合更常规所以最终我采用CPS-PWM作为主调制方式。3.2 电容电压均衡排序策略子模块电容电压均衡是整个MMC控制里最容易出问题、最容易在仿真里“翻车”的一环。每个子模块电容电压是波动的如果不加控制有的电容会越充越高有的会越放越低最终导致桥臂电压失衡波形畸变甚至保护误动。CPS-PWM配均压的常见做法是在每个控制周期内检测桥臂所有子模块电容电压然后根据桥臂电流的充放电方向对子模块进行排序。桥臂电流往电容充电方向走时优先投入电压最低的子模块桥臂电流放电方向走时优先投入电压最高的子模块。这样每个周期只调整少数子模块的投入状态就能把电容电压拉回到均衡区间。Simulink里做排序最简单的方式是用MATLAB Function模块写一个排序逻辑输入桥臂电流方向、各子模块电容电压、当前需要投入的子模块数输出一个投入组合。排序算法本身不复杂但要注意控制周期和调制周期的配合排序太频繁会导致子模块振荡切换开关频率过高排序间隔太大则均压效果变差电容电压分散度越来越大。我调下来取排序周期等于载波周期也就是在一个载波周期内更新一次排序结果效果最均衡。注意子模块电容电压的波动幅值最终会反映在交流侧输出电压谐波上。如果你的波形里出现明显的“锯齿状”电压纹波优先检查均压排序周期和电容参数而不是急着调PI控制器参数。3.3 二倍频环流抑制为什么加了PI还是压不下去MMC桥臂电流不只是有功电流的1/3和相电流的1/2的叠加还会存在一个二倍频的负序环流这个环流在三相桥臂间流动不经过交流侧所以外特性上看不到但会导致桥臂电流峰值升高、损耗增加严重时会让桥臂电流畸变。传统PI控制器在旋转坐标系下跟踪直流量很有效但二倍频环流是交流量用PI控制器增益做不高往往怎么调都压不掉纹波。解决办法是加谐振控制器。在αβ静止坐标系下用谐振频率为2倍基频我这里电网50Hz所以谐振频率是100Hz的PR控制器或者在dq坐标系下用正负序双旋转坐标系分别控制。工程上最省事的是准PR控制器传递函数写成[ G_{PR}(s) K_p \frac{2K_r \omega_c s}{s^2 2\omega_c s \omega_0^2} ]其中 (\omega_02\pi \times 100 rad/s)(\omega_c) 是谐振带宽系数取5~10 rad/s即可。在Simulink里用Second-Order Integrator模块或者直接用Transfer Fcn搭建这个准PR替换掉原来的PI环流控制器环流抑制效果立竿见影。4. 控制系统设计从功率外环到内环电流的整定思路4.1 功率解耦与d-q轴坐标变换背对背MMC两侧的控制结构是典型的双闭环外环计算电流参考值定功率或定电压内环跟踪电流参考值输出调制电压。控制算法在dq旋转坐标系下实现因为三相正弦交流量在同步旋转坐标系下会变成直流量PI控制器就能直接处理。端点变换用的是等幅值Park变换。以MMC1整流侧为例检测交流侧三相电压和三相电流经过Clark变换和Park变换得到 (u_{sd}, u_{sq}) 和 (i_{sd}, i_{sq})。在电网电压定向下(u_{sq}0)有功电流 (i_{sd}) 和无功电流 (i_{sq}) 就自然解耦了。有功功率 (P\frac{3}{2}u_{sd}i_{sd})无功功率 (Q-\frac{3}{2}u_{sd}i_{sq})。这样一来控制 (i_{sd}) 就是控制有功功率控制 (i_{sq}) 就是控制无功功率互不干扰。有了这个解耦基础背对背系统的控制任务就划分得很清楚。MMC1负责什么呢我这里设计为定直流电压控制加无功功率控制直流电压PI输出作为有功电流参考值保证直流母线稳定在40kV无功电流参考值给定为0让整流侧从电网吸收的单位功率因数。MMC2负责定有功功率和无功功率控制有功功率参考值直接除以电压前馈换算成有功电流参考值无功电流参考值按需给定用来补偿负载无功或调节电压。这样设计的好处是两侧功能明确整流侧稳态了“源”的电压逆变侧重在“负荷”侧的能量管理。4.2 PI参数整定从带宽到实际调试内环电流PI的带宽设计直接影响系统动态响应和稳定性。常用方法是按电流环带宽 (f_{bw}) 来整定取 (f_{bw}) 为电网频率的1/10到1/5即5~10Hz左右不要太高太高会和PWM延迟、滤波环节产生交互振荡。对应的PI参数可以先按系统等效一阶惯性环节来估算(K_p L_{eq} \cdot \omega_{bw})(K_i R_{eq} \cdot \omega_{bw})其中 (L_{eq}) 是桥臂电感加等效交流电感(R_{eq}) 是等效电阻。用这个初值放进去仿真观察dq轴电流追踪效果再微调 (K_p) 增大响应速度调 (K_i) 消除稳态误差。外环PI比内环要慢一个数量级以上。直流电压环的带宽选0.5~1Hz功率环的带宽再低一点。外环PI调不好会出现系统启动时直流电压过冲或者功率阶跃时直流电压长时间振荡。经验数值参考内环 (K_p0.85)(K_i12)直流电压环 (K_p0.35)(K_i2.5)功率环 (K_p0.15)(K_i1.2)。当然这个数值跟着具体系统参数变一定要先在Simulink里用Scope观察响应曲线再对半测试调整不要指望一个固定参数到处套。4.3 功率倒送与直流电压稳定切换逻辑电能质量调节场景里能量方向不会总是一成不变比如光伏或储能接入后功率可能需要从电网吸收变成向电网回送。背对背MMC的一个优点就是功率双向流动时不需要切换主电路只需要改变电流参考值的方向。但这里有个容易忽略的细节功率反向后原来定直流电压的那一端如果仍然采用整流侧控制会因电流方向变化导致直流电压控制方向错误。简单来说定直流电压站要始终作为“平衡节点”存在无论功率向哪个方向流动它都应该有能力把直流电压拉回设定值。功率倒送时电流参考值会变负但直流电压PI输出的极性判断不能跟着锁反。我在调试时发生过一次功率反转后直流电压直接拉垮的问题后来把外环输出的有功电流参考值做了限幅比如-1.05 p.u.到1.05 p.u.同时把直流电压PI的积分模块加了抗饱和anti-windup才彻底解决。5. 仿真工况设计与波形解读稳态、暂态和电能质量指标怎么验证5.1 稳态工况定功率传输下的正常运行模型搭好以后我最先跑的是一个稳态工况MMC1定直流电压40kVMMC2给定有功功率10MW、无功功率2MVar。仿真时长设3s从0.5s开始解锁换流器避免启动瞬间的预充电冲击影响结果观察。稳态波形里应该看到的是直流电压稳定在40kV附近纹波不超过±1%子模块电容电压在2kV±10%范围内波动交流侧电流接近正弦没有明显畸变桥臂电流里环流分量很小。判断稳态是否正常可以看几个定量指标。MMC1交流侧功率因数应接近1如果明显偏低说明无功电流解耦没做好检查dq变换角度和电流符号。MMC2交流侧输出功率应等于给定参考值偏差一般不超过1%。直流电流应从MMC1流向MMC2数值约等于MMC2传输功率除以直流电压10MW/40kV250A。5.2 暂态工况功率阶跃、电压跌落与负载突变电力质量调节系统一定要看动态响应。我设计了三个典型的暂态工况功率阶跃2s时MMC2有功给定从10MW阶跃到16MW观察直流电压的动态波动和恢复时间。正常情况下直流电压会有个小凸起然后1~2个周波内恢复到40kV内环电流响应时间一般在几十毫秒内。电压跌落MMC1交流侧电压在2s时跌落到0.85 p.u.持续0.5s后恢复。这个工况考验整流侧无功支撑能力如果整流侧按单位功率因数控制电压跌落期间直流电压会明显下降因为输入有功减少如果有无功电流指令可以从系统吸收或发出无功支撑电压。负载突变在MMC2交流侧突然切入一个较大的非线性和感性负载有功和无功需求同时增加。此时MMC2的功率跟踪和MMC1的直流电压稳定必须协调一致否则直流母线电压会出现明显振荡。5.3 波形怎么读THD、电容电压波动、环流分量仿真结果不能只看Scope里的波形“长得像正弦波”要用数据说话。Simulink里可以用Powergui的FFT Analysis工具看交流电压电流的THD。理想情况下在CPS-PWM下MMC输出电流THD应该能控制在3%以内如果子模块数少或者载波频率低THD会偏高。电容电压波动可以给每个子模块电容电压加一个观测看最大值和最小值的包络以±10%为工程常用限值超过这个范围就说明电容取值偏小或者均压策略不够积极。桥臂电流的二倍频分量可以通过FFT观察100Hz处的幅值经过环流抑制后这个分量与基波幅值的比值应该被压到5%以下。这些指标最好做成一个结果汇总表。我自己的验收标准大致如下指标项验收标准实测结果直流电压纹波≤±1%±0.8%子模块电容电压波动≤±10%±8.5%交流侧电流THD≤3%1.9%二倍频环流占比≤5%3.2%功率阶跃恢复时间≤0.1s0.06s6. 调试中被反复劝退的几个场景与完整排查链路6.1 仿真发散步长、初值、离散化三个罪魁祸首Simulink里MMC仿真最常见的麻烦就是一跑就发散报“singularity”或者数值积分不收敛。我排查时有一套固定的链路。先看仿真步长MMC采用PWM调制时载波频率一般是几百到几千赫兹仿真步长至少要小于载波周期的1/100。比如载波频率500Hz、周期2ms那么步长至少要小于20μs我常用5~10μs。如果步长过大开关瞬间的电压突变就容易被数值积分器错误处理导致系统发散。再看初值电容电压初始值必须设置为额定电压附近。如果子模块电容初始电压设成了0解锁瞬间就会出现巨大的电流冲击直接触发保护或者发散。最后检查离散化频率如果用的是离散控制采样频率和控制频率必须明确控制频率过低会造成PWM调制波失真。6.2 均压排序导致的电容电压崩溃有一次我把均压排序逻辑写好了仿真时前几个周期波形正常但很快子模块电容电压开始出现“岔开”一部分电容越充越高另一部分越放越低最后系统崩溃。排查了半天发现排序逻辑中有一个符号错误——桥臂电流方向定义反了把“充电时投入低压模块”写成了“充电时投入高压模块”等于做了一个负反馈的镜像。这种错误在连续仿真里很难立刻发现因为前期电容电压差异小要等几个周波才慢慢放大。这个教训说明排序逻辑里桥臂电流方向的程序注释一定要标清楚极性并且在模型里把电流方向打印出来跟电容电压一起看比逐行查公式快得多。6.3 环流振荡PI限幅与准PR谐振频率的配合环流抑制控制器加进去以后反而出现了新的问题桥臂电流上叠加了一个高频振荡频率不太干净。我检查后发现准PR控制器里谐振频率算错了把50Hz定成谐振频率结果环流控制器在基频处产生了高增益把正常的基波电流也“放大”了。后来我把谐振频率改成100Hz并给控制器输出加了限幅幅值上限设在桥臂直流电流的0.3倍左右振荡立刻消失。这类问题在Simulink里很常见控制器输出不加限幅大扰动下会出现积分饱和所以谐振类控制器的输出饱和处理绝对不能省。6.4 Simulink仿真速度优化怎么让3秒工况别跑到天荒地老很多人没意识到MMC详细模型的仿真速度会成为研究效率的瓶颈。N20时三相六个桥臂共120个子模块每个子模块里有开关管、电容、二极管加上测量和排序逻辑仿真一个3秒工况可能耗时几十分钟甚至更久。我优化下来最有效的几个办法一是把电力电子部分尽量用Simscape里的简化开关模型替代理想开关减少高频数值振荡带来的小步长需求二是把控制周期固定为载波周期的整数倍避免控制器和主电路步长不一致导致的额外计算量三是把不必要的Scope显示去掉Scope刷新本身很耗资源改成把关键变量记录到工作区等仿真完再统一画图四是如果用的还是变步长建议先试固定步长离散求解器往往比变步长快而且对PWM这种周期性开关事件更稳定。7. 最后分享一点我做这个仿真实操中的体会如果让我给刚接触背对背MMC仿真的朋友一个建议那就是不要一上来就追求“把模型搭得完整”而是先用一个最简单的平均值模型把功率流和直流电压的逻辑打通确认“理解了系统能量怎么流动”再逐步加入调制、均压、环流抑制这些细节。每加一层就做一个稳态验证这样一旦模型发生奇怪的问题你能非常快地定位是哪一层引入的。另一个体会是参数整定不要迷信论文里的“最优值”。每个人的桥臂电抗、子模块电容、载波频率、控制周期都不一样照搬一套PI参数大概率跑不出一致的波形。一定要在Simulink里用Step信号观察内环电流的阶跃响应再逐层往外调这样虽然慢一点但心里有数知道自己调的是带宽不是碰运气。最后模型做好之后别忘了做“工况矩阵”验证。把功率阶跃、无功补偿、电压跌落、负载突变这些工况都跑一遍用结果表格记录指标这不仅方便你写论文时引用也能帮你自己确认这套系统的鲁棒性到底够不够。背对背MMC的Simulink仿真确实是个费工夫的活但把各个环节都摸清楚之后它对你理解柔直输电和电能质量调节的帮助远远超过那几行波形图。