
还记得我第一次在Simulink里搭背对背MMC时的心态一方面是觉得这玩意太酷了——两组多电平变流器背靠背挂在直流母线两侧像两个高手隔江对峙既不像传统SVG只能补无功也不像两电平VSC扛不住高压而是把有功潮流、无功补偿、电压支撑这些电能质量治理功能一把抓另一方面是真头疼子模块均压、二倍频环流、PLL锁相、dq解耦一堆控制器缠绕在一起模型一跑就发散波形一出来就歪。这篇文章就是把我在Simulink里从零搭建背对背MMC作为电力质量调节系统的完整思路、参数设计、控制结构、调试经验全部梳理出来给正在做MMC仿真、柔性直流方向研究、电能质量治理课题的同学一个可以直接“抄作业”的参考。这套系统的核心价值在于它不是单纯的输电模型而是把背对背MMC当成电能质量调节器来研究。整流侧管住直流电压和无功逆变侧管住有功潮流和负荷侧电压两部分通过直流母线天然隔离两侧交流系统的电压扰动、频率扰动、谐波互不传导。你可以在整流侧和逆变侧分别布置电网和负荷模拟暂降、无功突变、有功波动观察MMC怎么把这些“脏电”治理干净。文章计划按六块内容展开先讲为什么背对背MMC适合做电能质量调节再讲搭建仿真前必须吃透的MMC子模块和桥臂模型然后给出Simulink主电路、调制策略、控制器的完整搭建方法接着是调试经验合集之后是电能质量调节功能验证的仿真方案最后聊几句进阶方向。内容会偏工程实操原理也会讲但尽量用大实话把话说透。1. 为什么电能质量调节会选背对背MMC1.1 “背对背”到底意味着什么普通的高压直流输电HVDC是送端整流站通过长距离直流线路把功率送到受端逆变站中间有一根上几百上千公里的直流电缆或者架空线。背对背HVDC不一样两个换流站之间几乎没有直流线路交流系统A经过整流器、直流母线、逆变器直接接到交流系统B整流器和逆变器在物理上就是“背靠着背”放在同一个站里。这个拓扑用在电能质量调节上有几个天然优势。第一两侧交流系统之间是直流电磁隔离的左侧电网的电压暂降、谐波、频率波动不会直接传导到右侧负荷端相当于在中间砌了一堵“电的防火墙”。第二有功功率可以实现双向流动既可以把左边多余的电搬到右边也可以反着搬调节范围比单向的STATCOM宽得多。第三整流侧和逆变侧的无功功率是各自独立控制的左边可以做无功补偿右边同时也在做电压支撑互不干扰。1.2 MMC相比传统两电平VSC的工程优势做电能质量调节传统的两电平VSC也能做但MMC在中高压场景下碾压性的优势才让它成了研究热点。我整理了一个简洁的对比表看完你就明白为什么非要用MMC对比维度两电平VSC模块化多电平变流器MMC输出电压电平数2电平波形谐波大N1电平波形接近正弦开关管耐压要求器件串联均压难需直接承受全直流电压每个子模块开关管只承受子模块电容电压开关频率相对较高损耗大基频附近即可输出高质量波形开关损耗低故障处理能力直流侧故障短路电流大子模块可闭锁直流故障电流发展受控模块化扩展难度大通过串联子模块直接扩展电压等级储能分布集中在直流电容分散在各子模块电容天然适合级联简单说MMC就像一个用无数块标准积木搭起来的系统每块积木子模块承受的电压只有整个系统的一小部分所以器件应力低、波形又好这正是中高压电能质量调节装置最想要的两个东西。1.3 本文仿真模型的定位理论很丰满直接搭一个“320kV、每桥臂200多个子模块”的工业级模型在Simulink里跑仿真时间可能以天计算根本不现实。所以仿真里的做法是缩比。我的经验是先用一个低压小容量样机参数验证控制算法比如交流线电压380V、直流母线电压800V、每桥臂4~6个子模块先把控制逻辑和电能质量调节功能跑通、波形调好再通过等效建模或硬件在环往高压多电平方向扩展。这也是工业界做控制保护样机验证的通行思路。2. 搭建仿真前必须吃透的三层MMC积木结构2.1 子模块MMC最小积木MMC里面最核心的积木是半桥子模块Half-Bridge SM由一个直流电容和两个IGBT带反并联二极管构成。两个IGBT的开关状态决定电容是被投入还是被旁路具体关系如下T1状态T2状态电容状态桥臂电流去向导通关断投入充电或放电电容参与输出电压关断导通旁路电流走T2或D2关断关断闭锁电流通过二极管启动/故障时使用子模块电容充放电方向由桥臂电流方向决定这是后面电容电压均衡控制的物理基础。如果某个子模块电容电压偏高了你就想办法让它多旁路一会儿少充电电压偏低的就多投入多充电所有子模块电容电压才能稳定在额定值附近。仿真里要时刻关注这个“投入/旁路电流方向”的组合逻辑均压算法的本质就是对每个子模块根据电容电压排序并配合桥臂电流方向分配触发脉冲。2.2 桥臂上上下下的电流路径MMC每一相拥有两个桥臂上桥臂和下桥臂。每个桥臂的组成是“N个子模块串联一个桥臂电感”。桥臂电感的作用至关重要它承担了抑制桥臂环流、限制子模块投切瞬间的电流突变、同时参与滤波的功能。桥臂电流里除了负载电流和环流还有一个显著的问题——二倍频环流。由于三相桥臂的电容电压存在二倍频波动会在桥臂之间形成二倍频负序循环电流。如果不加抑制环流会加大器件电流应力、提高损耗严重时波形上能看到明显的畸变。所以控制策略里必须给环流抑制环节留一个位置不能只把心思放在dq解耦上。2.3 六桥臂组成三相MMC将三个相单元并联在正负直流母线之间每个相单元由上、下桥臂组成就得到了标准三相MMC拓扑。总共6个桥臂、6N个子模块。每个桥臂“N个子模块投入数量上下桥臂配合”决定了该相交流侧输出电压。关键规律是同一相中上桥臂投入的子模块数加上下桥臂投入的子模块数在正常调制下应该尽量保持恒定。如果任意时刻投入总数恒定为N直流电压就基本稳定如果上下桥臂投入数按正弦规律变化交流侧就会输出多电平正弦波。理解了这一点后面无论用载波移相PWM还是最近电平逼近你都能一眼看出调制策略的本质——其实就是在决定“每一时刻每桥臂到底几个子模块投入、哪几个子模块投入”。3. Simulink建模的工程取舍主电路、调制与控制器的分层搭建3.1 主电路建模从子模块封装到两套MMC互联在Simulink里主电路可以选择两种路线一种是用Simscape Electrical元件库里的IGBT、Diode、Capacitor搭出半桥子模块再封装成一个Subsystem另一种是直接用平均值模型或戴维南等效模型代替整个桥臂。做控制策略研究、要看电容电压均衡和环流细节建议走第一条详细开关模型路线但子模块数量要克制。一旦每桥臂子模块数超过10个详细模型仿真速度会直线下降这时候就要考虑用等效模型了。我的推荐参数交流侧线电压380V、直流母线800V、每桥臂4个或6个子模块、额定功率10kW、基频50Hz。你把这个参数往项目里一套控制算法照常验证后期换成高压大容量参数只是数值缩放。详细参数我会在3.2节给一个可以直接用的表。子模块封装时记得把测量端口引出来电容电压、子模块投入状态、IGBT触发脉冲。这几个信号后面无论是做电容电压均衡控制还是观察均压效果都离不开。还有一个很容易忽略的点IGBT和二极管的缓冲电路Snubber参数会影响仿真数值稳定性。如果模型一跑就高频震荡先检查是不是把缓冲电路设成了无穷大又碰到了过小的仿真步长。3.2 关键参数设计电容和电感不能拍脑袋子模块电容值的选取直接影响电容电压纹波和系统稳定性。工程上常用经验公式C (2·P) / (3·m·ω·U_c·ε·N)其中P是额定功率m是调制比ω是基波角频率U_c是子模块电容额定电压ε是允许的电容电压纹波系数N是每桥臂子模块数。我举个实际算例P10kWm0.9ω314rad/sU_c200Vε8%N4。代入公式C (2×10000) / (3×0.9×314×200×0.08×4) ≈ 3.68mF工程上宁可取得大一点帮助降低纹波我这里取4mF。桥臂电感方面用经验值取0.1~0.15pu针对10kW、800V直流侧来说桥臂电感取3mH左右就能把二倍频环流抑制在可接受范围。桥臂电感太大电流响应变慢太小环流和冲击电流都压不住。我给一个可以直接开工的参数表这个表也是我自己调过的参数数值说明交流线电压380V两侧交流系统一致可用两个独立电压源直流母线电压800V正负对称±400V或者单极性800V都行每桥臂子模块数N4输出5电平适合验证算法子模块电容4mF纹波约8%桥臂电感3mH同时兼做环流抑制载波频率1000Hz详细开关模型仿真速度能接受仿真步长1e-6 s离散固定步长保证开关动作分辨直流母线等效电容可选1~2mF不是必须的MMC储能主要在子模块电容两个MMC互联时直流侧正母线、负母线直接相连中间不需要直流电缆模型。别小看这一步很多人会习惯性在直流侧加一个大电容其实对于MMC来说子模块电容已经承担了储能功能再加大直流电容反而会让动态响应变钝背靠背系统的直流电压控制也会被干扰。3.3 调制策略与电容电压均衡CPS-PWM和NLM两条路线子模块怎么触发一般有两类主流方案我在仿真里都试过各有取舍。载波移相正弦PWMCPS-PWM适合子模块数量不多的仿真。原理是每个子模块共用一个正弦调制波但三角载波的相位依次错开360°/N。N4时四个子模块的载波相位分别错开90°叠加出来的桥臂电压就是5电平的阶梯波。CPS-PWM的天然优点是各子模块的开关频率、导通时间比较平均电容电压均衡压力小通常在调制波上叠一个很小的均压修正量就够了。缺点是仿真里三角载波和开关管的开关事件多仿真速度慢。最近电平逼近NLM则是更贴近工程实际的方案特别是子模块数量达到几十上百个时CPS-PWM的载波数量会让人头皮发麻NLM直接对桥臂输出电压参考值除以子模块电容电压额定值取整得到“应投入的子模块个数K”然后通过电容电压排序算法决定具体是哪K个子模块投入。排序算法是关键桥臂电流给电容充电时投入电容电压最低的那K个子模块桥臂电流给电容放电时投入电容电压最高的那K个子模块。这样在每一个控制周期都让电压低的优先充电、电压高的优先放电整体电容电压就能自动收敛到额定值附近。在Simulink里实现NLM排序我常用MATLAB Function模块写一个简化的排序和脉冲分配算法输入是N个电容电压、桥臂电流方向、子模块投入个数K输出是N个触发脉冲。排序用冒泡法就行毕竟N通常不会太大如果每桥臂子模块到了一百多个建议改用分组排序或者快速排序。还有一个工程优化点优先队列只对电压偏差超出阈值的子模块重新排序不用每步都全排能省不少仿真时间。另外不管用哪种调制方式触发脉冲都需要做与门处理子模块需要在非闭锁状态下才能正常触发启动瞬间或者直流故障时记得把脉冲封锁。3.4 控制器分层结构整流侧管电压逆变侧管潮流背对背MMC的控制器本质上是两套相互独立的矢量控制器通过直流电压把两者耦合起来。我的整体控制架构是这样的整流侧MMC外环定直流电压控制把直流母线电压稳定在800V。外加一个无功功率控制或者交流电压控制。内环dq电流解耦控制输出调制波。逆变侧MMC外环定有功功率控制或者控制直流电压看你怎么分配外加定无功功率控制。内环同样是dq电流解耦。核心思路是有功功率必须由一端“给定”、另一端“吸收”。如果两端都定有功直流电压就没人管了如果两端都定直流电压那功率又对不上。最常用的是整流侧定直流电压、逆变侧定有功功率这样逆变侧送多少有功出去整流侧自动从电网补多少进来直流电压保持恒定。dq解耦控制的具体搭建网上很多教程说得很玄乎其实本质就是三步用PLL锁住交流母线电压相位得到同步旋转坐标系角度θ把三相电流做abc→dq变换得到id和iq用两个PI控制器分别控制id和iqPI输出加上交叉解耦项ωL·iq和ωL·id再加上电网电压前馈就是最终的dq轴调制电压。关于热搜词里很多人问的“simulink里ab转dq怎么搭”我的建议是别用自己手写的Park变换模块容易搞错符号直接用Simscape Electrical里的Park Transform模块注意它的输出了d轴和q轴顺序、角度输入是电角度还是角度。如果是自己搭记得dq变换矩阵里角度以A相电压峰值过零为参考接PLL输出时要对齐好零度点否则id、iq会互相耦合还带着正弦波动。环流抑制器在控制结构里单独放一个支路。我在仿真里用静止坐标系下的PR控制器谐振频率设在100Hz把桥臂环流采样回来PI或PR输出叠加到调制波上。不夸张地说环流抑制器加上去以后桥臂电流波形从歪歪扭扭变得圆润光滑效果立竿见影。很多初学者只做外环内环忽略了环流结果波形看起来总是不对劲源头就在这。4. 把模型从“一跑就炸”调到“稳定运行”的实战排查方法4.1 仿真解算器和步长的选择误区MMC这种电力电子模型在Simulink里强烈建议使用离散仿真模式。在powergui里设成“Discrete”把仿真步长固定下来一般取1e-6秒。如果步长取太大比如1e-4秒载波和PWM产生的高频分量会混淆波形严重失真取太小比如1e-7秒仿真时间又让人崩溃。我个人的节奏是先用1e-6起步调通逻辑整机稳定后再考虑要不要通过降阶模型加快速度。另外注意powergui里的“离散求解器”要选适合电力电子模型的Simscape Electrical自带的分段线性求解器对IGBT开关事件的处理比普通连续求解器更稳。不要用变步长ode45去跑开关模型变量在开关时刻剧烈跳变ode45会疯狂缩小步长有时候一小时都跑不完0.01秒。4.2 初始化与预充电控制算法再完美也怕启动冲击刚上电那一刻子模块电容电压是零直流母线电压也是零如果你直接给PI控制器和PLL上电控制器会发现误差巨大、输出饱和接着就是巨大的冲击电流然后仿真发散或者“Udc上不去”。解决方法是分阶段启动第一阶段先做不控整流预充电。子模块全闭锁通过交流侧和二极管整流桥给电容充电让电容电压爬升到额定值附近。在仿真里可以简化直接把所有子模块电容初始电压设成Udc/N。这一步非常简单但要记得在电容模块参数里设置初始电压否则仿真启动还是从零开始冲击一样存在。第二阶段解锁脉冲同时让调制波从零开始慢慢爬升或者用斜坡给定直流电压参考值。PLL也要给初始角度否则刚启动时刻PLL输出波形会不稳定。第三阶段控制器全部投入等到直流电压稳定后再加载荷、投阶跃。我习惯在仿真模型外面加一个“启动序列”逻辑用Step或者Signal Builder控制解锁信号、功率参考值、无功参考值的变化时刻一步到位。4.3 常见问题排查速查表现象可能原因处理办法仿真一开始就发散初始电压没设、IGBT脉冲乱序、步长太大检查电容初始电压检查脉冲序列是否按子模块编号分配缩小步长到1e-6直流电压起不来整流侧没解锁、PI限幅太低、电容充电路径不对看整流侧桥臂电流是否正常流动解锁条件是否满足电容电压不均衡个别子模块电压漂上天均压算法失效、电流方向判断错误、调制波修正量没加上先检查桥臂电流方向符号再检查排序后脉冲与子模块编号映射交流电流THD特别差载波频率太低、SM数量太少、调制策略选用不当看波形是否是阶梯波尝试提高载波频率1~2倍桥臂电流有很明显的100Hz畸变环流没有抑制加PR谐振控制器或者二倍频dq坐标下的PI控制器逆变侧功率送了但直流电压一直降整流侧和逆变侧控制功能分配反了检查两侧外环确保只有一侧定直流电压控制器输出发散PI输出饱和到限幅值PI参数过激进、前馈没加降低P参数检查前馈电压符号4.4 调试顺序先把两端拆开再合起来最容易出问题的不是某个单独控制器而是两个MMC背靠背一合上就跑飞。我的调试顺序是先把整流侧MMC接一个纯电阻负载跑起来验证直流电压建立和电感电流控制再把整流侧改成带小功率逆变负载验证单端逆变最后才把整流侧和逆变侧通过直流母线相连进行整机联调。这样出现问题的时候你至少知道故障在哪一侧。整机联调还有一个小技巧逆变侧初始功率参考值设为0先让整流侧把直流电压稳定住然后把有功功率参考值设成斜坡上升观察直流电压波动幅度。如果直流电压波动超过5%多半是整流侧PI带宽不够或者两侧控制器响应时间没拉开。记住一个原则整流侧直流电压环要快逆变侧有功功率环要慢半拍两侧别抢功劳系统才能稳。5. 电能质量调节功能在仿真里怎么验证5.1 无功补偿与功率因数改善电能质量调节最直观的功能就是无功补偿。在逆变侧MMC的d轴和q轴控制里有功是d轴分量无功是q轴分量。你只需要把q轴外环参考值从0改成某个感性或容性值MMC就会向所连接的交流母线注入容性无功或感性无功。仿真里建议这样测在逆变侧交流母线上接一个带功率因数的负荷先让负荷直接运行记录此时母线的电压和电流相位差然后投入MMC的无功补偿功能把功率因数补偿到0.95以上。你会看到交流电流的相位发生明显移动同时母线电压因为无功支撑而抬升。这个场景最能直观体现MMC类似“超级SVG”的作用。5.2 电压暂降与不平衡扰动隔离背对背MMC号称能隔离两侧扰动那就在整流侧交流源上做个电压暂降验证在0.2秒时刻给整流侧电压源叠一个30%的电压跌落持续0.1秒观察逆变侧交流母线电压。如果没有背对背MMC这个暂降会沿着电网直接传到负荷侧有了MMC之后只要整流侧直流电压控制器能在暂降期间保持直流母线电压基本稳定允许轻微跌落但系统不脱网逆变侧母线电压就几乎感受不到暂降负荷继续吃好喝好。这个功能的核心决定因素是整流侧直流电压环的快速性和能量平衡能力。母线电压波动大怎么办适度降低直流电压环PI的带宽或者增加子模块电容值能有效提高抗暂降能力。5.3 有功功率双向流动和紧急功率支援用背对背MMC还可以模拟“一侧缺电、另一侧支援”的供电保障场景。设置逆变侧负荷在0.5秒时突然增加20kW整流侧自动从电网多吸收20kW直流电压保持稳定反过来如果整流侧电网故障缺电逆变侧也可以反向把功率送回去。在仿真里体现为直流电压始终稳定两侧有功功率大小相等方向相反只在过渡过程有短时直流电压波动和电容电压波动。这里要补一句背对背MMC双向潮流能力的价值不仅在电能质量还在分布式电源并网、微网互联、不同频率系统互联等场景。做研究的时候可以把“电能质量调节”和“功率双向交换”放在同一个框架里这样论文和课题的立意会更高。5.4 波形质量与THD分析电能质量离不开谐波指标。MMC的多电平特性决定了它的输出电压谐波天然低。仿真结束后用powergui里的FFT Analysis工具分析交流侧电流THD。N4、输出5电平THD一般能控制在5%以内把载波频率从1kHz提高到2kHz或者子模块数量增加以后THD还能进一步降到2%以下。如果你看到THD超过10%那就不是调制策略的问题而是控制器有谐振或者环流没压住按排错表去查。FFT分析的窗口要选稳态段别把暂态启动过程带进去不然THD算出来虚高还以为是算法有问题。6. 仿真模型的进阶扩展方向6.1 从背对背MMC到虚拟同步机控制如果想让这套系统更“聪明”可以把逆变侧的控制从传统的定功率控制改成虚拟同步发电机VSG控制让MMC具备惯性和阻尼特性参与电网频率调节。热搜词里VSG simulink也被频繁提到在背对背MMC里加VSG层其实是在有功环路里加入虚拟惯量J、阻尼D以及有功-频率下垂本质上就是把原先的定有功PI外环替换成功率同步环。这个方向很适合做弱电网接入、微电网稳定、新能源并网支撑的研究。6.2 等效建模与硬件在环详细开关模型在子模块数超过几十个后仿真速度会非常感人。想往高电平数扩展有两种思路一是用戴维南等效模型把一个桥臂所有子模块等效成一个可变电压源和可变电阻控制精度影响有限但速度提升巨大二是RT-LAB、dSPACE这类实时仿真器上跑硬件在环较大规模MMC也能实时运行。Simulink里先把详细模型调通再迁移到等效模型会是研究生阶段比较省时间的路径。6.3 智能算法和高级控制策略我还试过在桥臂电压均衡里加入模型预测控制MPC直接把“电容电压误差最小环流抑制输出电流跟踪”写成一个优化目标函数在每一个控制周期滚动求解。效果确实好但计算量也大仿真步长可能要到50微秒甚至更高才能满足实时性。这类高级算法适合做创新点但如果主电路和基础控制还没跑熟建议先把常规PI和PR方案吃透再来碰。个人经验与最后提示仿真做到最后你会发现背对背MMC的难点从来不在“MMC本身会转”而在“两套MMC能不能配合默契”。我在实际搭建过程中最耗时间的不是子模块建模也不是写dq解耦而是启动序列的设计和PI参数的适配。这里分享几个我自己踩出来的经验第一参数表里的数值别一个个去试先用理论初算再用手动整定法缩小范围最后再微调。比如直流电压环先按带宽100Hz左右计算PI初值调起来会顺手得多。第二所有PI控制器都要加输出限幅和积分限幅不然启动阶段积分饱和能把整流侧一直顶在最大调制比直流电压超调之后还压不下去现象非常典型。第三跑仿真时把不需要的数据记录关掉。Simulink默认每个Scope都记录全部数据四个桥臂的电容电压波形×六个桥臂数据量会把你电脑内存吃干净。改用一个To Workspace模块有选择地记录关键信号速度能提升好几倍。第四不管多急着看结果请一定从低压小规模参数开始。一开始就想要50电平、201电平的效果大部分人的电脑根本顶不住而且就算跑出来一个满满的阶梯波你也看不出控制好坏。先把4个子模块跑得像工程样机一样稳再放大也不迟。这套系统的研究价值还远没挖完。背对背MMC在电能质量治理和柔性互联这两个话题上都有很深的延伸空间我的建议是先用本文的框架把基础模型啃下来后面再根据课题需要往你们最关注的那个功能点上深挖。祝你们的MMC收敛稳定、波形漂亮。