搞MMC仿真的人都知道,背对背高压直流调制多电平变流器(MMC)这块内容,入门容易、深入难。表面看就是一堆子模块串联成桥臂,配合三相交流系统实现功率传输,但一旦你想把它当作电力质量调节系统来用,要处理的东西就完全不一样了。我最近完整跑通了一个基于Simulink的背对背MMC仿真模型,专门用来研究无功补偿、谐波抑制和电压支撑这三类电力质量问题的调节能力,整个过程踩了不少坑,也积累了一些可以复用的建模和调试经验,这篇内容就把整个实现思路、模型结构和关键参数从头到尾梳理一遍。如果你正准备做MMC相关的课题或项目,或者想搞明白背对背结构到底怎么实现功率双向流动和质量调节,这篇内容应该能帮你省下一大段时间。
1. 项目整体设计与思路拆解
1.1 为什么是“背对背”结构
MMC这个名字拆开看:MMC是多电平变流器(Modular Multilevel Converter)的缩写,核心特点是用多个子模块(SM)级联来代替传统两电平、三电平里的功率器件直接串联,每个子模块都是一个小的“可插拔”单元,包含电容、IGBT和旁路开关。这种模块化设计带来的直接好处是电压等级好扩展、波形质量高、开关频率低、故障处理灵活,所以现在柔性直流输电、电机驱动、电力质量治理领域都在用它。
但单台MMC只能做交流到直流或者直流到交流的变换,要想实现两个交流系统之间的功率交换,比如把风电场发的电送到电网、或者两个区域电网之间互相支援,就得把整流和逆变两台MMC组装到一起。背对背的含义就是两台MMC共享同一个直流母线,交流侧各自连接不同的电网或负荷,直流侧不需要电缆长距离传输,所以叫“背对背”。这种结构的吸引力在于功率可以随时正反向流动,而且两个交流测的频率、电压、相角可以完全独立,互不影响。
我在模型里采用的正是这种经典拓扑:左侧MMC1作为整流器,把交流电变成直流;右侧MMC2作为逆变器,把直流再变回交流。直流母线用电容模型连接,两侧各自有独立的控制器,通过通信协调功率指令。实际工程中这种做法很常见,比如风电并网的低压穿越、异步电网互联、城市配电网柔性互联,背对背MMC都是主力方案。
1.2 把“电力质量调节”落到仿真里的核心思路
纯做功率传输的话,控制目标就是母线电压稳定、传输功率跟踪指令,这相对好办。但一旦把MMC当作电力质量调节系统,事情就复杂起来,因为需要同时兼顾多个质量指标。
电力质量问题常见就这几类:电压偏差(高了低了)、电压波动和闪变、三相不平衡、谐波污染、无功功率不足导致功率因数低。背对背MMC作为电力质量调节系统,本质上是利用PWM变流器的快速响应能力,在正常传输有功功率的同时,额外输出无功功率、注入谐波补偿电流、支撑交流母线电压。也就是说,MMC的角色从“电能搬运工”升级成了“电能质量管家”。
在仿真中要体现这个升级,我做了两件事。第一,在交流侧并联了一个含谐波源的负荷,用来模拟实际系统中的非线性负载,比如变频器、整流设备、LED驱动等。第二,控制器中除了有功/无功功率控制,还增加了谐波补偿支路,通过检测公共连接点(PCC)的谐波电流,生成反向补偿分量。这样模型里既能看见基波功率流动,也能清楚看到谐波被抑制的过程。这块是整个模型的灵魂,也是调试中最容易出问题的地方。
1.3 仿真工具选型的考虑
既然是Simulink仿真,就用Simulink Simscape Electrical专门模块库(老版本叫SimPowerSystems)。很多人纠结用理想开关模型还是详细开关模型,我的建议是:
- 研究控制算法、系统稳定性、功率质量调节策略时,用平均值模型或理想开关模型,仿真速度快,容易收敛;
- 研究子模块电容电压波动、环流抑制、开关器件损耗时,必须用详细开关模型,否则体现不出MMC的物理特性。
这次我是为了观察谐波补偿质量和电容均压效果,所以选了详细开关模型,每个桥臂的子模块数量设成4个。这个数字在真实工程里远远不够,但足以反映MMC的基本工作原理,而且仿真速度能接受。后面讲参数时再详细说。
2. 核心细节解析与实操要点
2.1 子模块与桥臂结构的建模选择
MMC的单相桥臂由N个子模块和一个桥臂电感L_arm串联而成。子模块通常采用半桥结构,两个IGBT反并联二极管,中间带一个直流电容。不同开关状态下,子模块可以投入(电容接入)或切除(电容旁路)。
在Simulink里搭建子模块的方式有几种:用Simscape元件逐个搭、用Universal Bridge简化、用封装好的MMC模块。我建议新手一步步来,先搭单个子模块,封装成Subsystem,这样后续改动电容参数或者加均压控制都顺手。下表是我给的子模块关键参数:
| 参数 | 数值 | 说明 |
|---|---|---|
| 子模块电容 C_SM | 5 mF | 按能量存储比例2倍额定值估算,具体计算见2.2 |
| 额定电压 U_c | 1 kV | 直流母线电压2 kV,单桥臂4个子模块均分 |
| IGBT导通压降 | 1.2 V | 仿真中影响不大,详细模型里会用到 |
| 桥臂电感 L_arm | 5 mH | 抑制环流和故障电流上升率,也影响均压动态 |
| 子模块数 N | 4 | 每桥臂4个,三相共24个子模块 |
每个桥臂需要加桥臂电感,这个很多人会忽略。没有桥臂电感,环流抑制不住,电容电压也会剧烈震荡。桥臂电感不是越大越好,太大会造成电压降和响应变慢,一般取0.1~0.15 p.u.左右,我这个模型折算下来就是5 mH。
2.2 参数计算的一个关键点
子模块电容值怎么定?常见经验公式是:电容储能与系统额定容量之比约为2~4倍。按能量公式
W = C U_c^2 / 2 = 2 * S_N / (2 * f * N)(针对相单元)
这里S_N是单相额定功率,f是基波频率,N是桥臂子模块数。我设计的是单相容量约40 kVA,直流侧电压2 kV,桥臂N=4,U_c=500V(注意是单电容额定电压,不是全部串联)。代入计算得到C约4.7 mF,取5 mF。这个值直接关系电容电压波动率。电容太小,波动剧烈,可能触发过压保护;电容太大,成本高、动态响应慢。仿真中可以通过电压波动率来反向微调:如果波动超过5%,增大电容;如果响应迟钝,减小电容。
2.3 调制方式的实用选择
MMC常用的调制策略有载波移相PWM(carrier phase-shifted PWM, CPS-PWM)和最近电平逼近(NLM)。对N=4这种较少的电平数,CPS-PWM效果好,既然子模块只有4个,本来输出电平数也不多,用移相载波能让等效开关频率提高N倍,波形质量明显更好。我使用的是CPS-PWM:每个子模块生成一个频率1000 Hz、相位依次偏移360°/N(即90°)的三角载波,与同一个调制波比较,产生各子模块的触发脉冲。
调制波来自电流控制器输出的电压参考,叠加了均压控制修正量。这里有个细节,所有子模块的调制波一样,但载波相位不同,所以同一时刻投入的子模块数是交替变化的,电容电压也被轮流刷新。想验证均压效果,直接观察24个子模块电容电压波形,在稳态下它们应该都围绕500V上下波动,而且波形趋势一致。一旦出现某个模块电压明显偏离,多半是脉冲分配或者载波同步出了问题。
NLM适用于子模块数量多(比如实际工程每桥臂上百个模块)的场合,每个控制周期直接算出需要投入几个子模块,用排序算法选电容电压最低/最高的模块投入。仿真里如果想模拟真实工程几十上百个模块,建议用NLM,仿真效率比CPS-PWM高很多。
3. 控制系统实现与参数整定
3.1 整体控制框架:外环内环双闭环
背对背MMC作为电力质量调节系统的控制,分三层看:
第一层是系统级功率指令,也就是我们要让系统传输多少有功、无功,或者维持电压多少。 第二层是换流器级控制,把功率指令转换成交流电流的dq轴参考值。 第三层是阀级控制,包括均压、环流抑制和PWM脉冲生成。
在Simulink里,我采用标准的双闭环矢量控制策略。整流侧MMC1:外环是直流电压控制和无功功率控制,内环是交流电流dq解耦控制;逆变侧MMC2:外环是有功功率控制和无功功率控制(或交流电压控制),内环同样是电流控制。
为什么要分两侧?因为背对背MMC要维持直流母线电压稳定。整流侧把直流电压控住,逆变侧才能安心地把功率送出去。如果两边都去控功率,直流电压没人管,就跑飞了。实际工程中哪一侧控制直流电压都可以,但正常情况下由接受功率的一方控制,或者专门指定一端负责电压。我这里是让整流侧控制直流电压,逆变侧控制功率。
3.2 电流内环的参数整定
电流内环在dq坐标系下是有耦合的,控制器输出要加上交叉解耦项和电网电压前馈项。电流内环PI参数整定我用的是典型I型系统法。
先测出交流侧等效电感L_total和电阻R_total。L_total由变压器漏感、桥臂电感折算和网侧滤波电感的交流等效值组成。按带宽频率f_bw设为500 Hz,PI参数近似计算:
Kp = L_total * 2π * f_bw Ki = Kp * R_total / L_total
这个算法简单管用,之后再微调。注意带宽频率不是越高越好,太高了开关频率跟不上,太低了动态响应慢。仿真中我取L_total约3 mH,R_total约0.3 Ω,算出来Kp约9.4,Ki约940。实际放到模型里,Kp稍作下调避免电流超调。
3.3 谐波补偿通道的实现思路
电力质量调节的核心是谐波补偿。这里没有用复杂的重复控制或者多重谐振控制器,而是用一个相对工程化的处理:将负载电流提取谐波分量,取反后叠加到电流内环参考值。
具体实现过程是这样的:三相负载电流经过abc/dq变换,得到dq轴分量。基波分量在dq下是直流量,用低通滤波器分离;剩余的交流波动量就是谐波和负序分量。电流内环参考值中加入负的谐波分量,MMC就会额外输出与谐波相位相反的补偿电流,在PCC点抵消谐波源的影响。
仿真时我在负荷侧并联了一个不可控整流桥带阻感负载,再用一个电阻作为线性负载。稳定运行时,PCC处电流波形约4kHz下依然有毛刺,总谐波畸变率(THD)明显下降。需要重点观察:MMC输出电流中出现了与谐波源相反的纹波分量,而不是单纯的正弦波。这一条是判断谐波补偿有没有生效的关键指标。
3.4 无功与电压支撑的配合
无功功率控制在逆变侧MMC2上,控制目标可以选功率因数为1,也可以选交流母线电压恒定。我这次用了电压—无功协调模式:当检测到交流母线电压跌落到0.95 p.u.以下时,无功控制自动提升无功输出以支撑电压;电压恢复正常后,无功输出回落到设定值。
Simulink中实现这种协调只需比较电压测量值和死区上下限,输出给无功功率参考。很多新手会在控制里忘记限幅,导致无功指令超限、电流过流。我加入的无功功率上限是按MMC视在功率和当前有功功率计算的:
Q_max = sqrt(S_N^2 - P^2)
控制器里必须加入这个限幅环节,不然可能会过流。这也是电力质量调节系统区别于普通变流器的地方——调节质量时不能牺牲设备安全边界。
4. 实操过程与核心环节实现
4.1 模型搭建的分步路线
第一次搭这套模型,不要想着一口气把所有功能都怼上去。我自己实践下来最顺的路径是五步走:
- 先搭单台MMC整流器,交流源通过一个RL阻抗接MMC,直流侧接纯电阻负载,开环调试脉冲和均压。
- 加入直流电压外环和电流内环闭环,让单台MMC稳定运行在直流2kV。
- 复制一套MMC作为逆变器,两个直流侧用一个大电容并联,构建背对背结构,逆变侧接独立交流源和负荷。
- 调通功率双向流动:整流侧控直流电压,逆变侧控有功功率,把功率参考从正到负切换,观察直流电压和电流波形。
- 挂上电力质量模块:非线性负荷并联接入PCC,加入谐波补偿通道和无功/电压协调控制,调整参数到指标达标。
每步之间都要用Simulink诊断工具确认没有代数环和仿真过零错误,再进入下一步。我见过不少人一上来就把完整系统搭完,结果一旦报错不知道问题出在哪,最后只能推倒重来。分步调试虽然慢,但每一步都有明确验证标准,出问题了也好定位。
4.2 仿真步长与求解器选择
很多MMC仿真卡死或者结果不对,问题往往出在求解器设置上。背对背MMC加电力质量调节,系统时间尺度跨度大:PWM开关频率1 kHz,谐波补偿关注到20次谐波(1000 Hz),整体动态过程又是秒级的。
我的建议是使用离散求解器固定步长,步长根据PWM载波频率来确定。载波1 kHz,PWM脉冲最小宽度对应的时间远小于1 ms,步长要小于1×10^-4 s才能分辨。我实际用的是步长2e-5 s,也就是50微秒,既能保证IGBT开关动作不被漏掉,又不至于太慢。如果模型里加了详细开关管,步长还要更小一些,有时需要5e-6 s。不过那样仿真速度会很慢,所以我在详细开关模型里会把载波频率降到600 Hz,以保证调参时有合理的仿真时长。
Simulink里求解器选“discrete”,不要用“auto”。自动模式在遇到不连续开关模型时容易反复尝试缩小步长,出现“连续过零”警告,严重时几个小时的仿真白跑。固定步长离散求解器搭配Powergui设为离散模式,是最稳的组合。
4.3 直流母线电压建立过程
上电启动阶段是整个仿真最容易出状况的地方。我刚开始做的时候,一上来就加满调制波和功率指令,结果直流电容直接过压击穿。这是因为MMC电容充电过程没有控制好。
正确做法是在启动时先封锁脉冲,让交流侧通过反并联二极管给电容自然充电,等待直流母线电压达到接近额定值。在Simulink里可以用一个阶跃信号控制开关的使能端:前0.2 s封锁脉冲,0.2 s后解除封锁,开始正常调制。这样电容电压在每个子模块上自动均衡到约500V,然后闭环控制再介入,不会出现巨大的冲击电流。
我在模型里加了一个软启动斜坡,直流电压参考值在前0.5 s内线性上升到2kV,电流限幅默认1.2倍额定,整个过程电压平稳爬升,电流也没有尖峰。这个细节对仿真收敛影响非常大。
4.4 均压控制的具体实现
CPS-PWM下,均压控制要在每个子模块触发脉冲生成前加电压补偿。我用的方法最简单但也很经典:测每个子模块电容电压与所有模块平均电压之差,差值为正则调制波略微上抬,差值为负则略微下压。补偿幅度通常只有调制波幅值的2%~5%,但足以维持平衡。
均压控制器的比例增益K_bal需要调试,增益太小平衡慢,增益太大调制波畸变,电流THD升高。我这里的经验值是K_bal=0.05,效果明显且不影响电流质量。调试中要看任意一个子模块电容电压是否始终跟随均值曲线,如果出现偏离拉升,优先检查模块编号对应的测量点是否接对,其次是载波相位是否按顺序移相。
5. 常见问题与排查技巧实录
5.1 问题速查表
以下是这次仿真过程中最常遇到的现象、原因和解决方案,基本覆盖了90%的坑:
| 问题现象 | 可能原因 | 排查与处理 |
|---|---|---|
| 仿真不收敛,出现Singularity或代数环报错 | 导纳矩阵奇异,常见于电压源直接并联大电容;使用了连续求解器遇到硬开关 | 在交流源后串接小电阻(比如1Ω);改用离散固定步长求解器;在Powergui中勾选“Preload initialization” |
| 直流电压波动剧烈,超出设定值10% | 子模块电容偏小;直流电压外环PI参数不当;启动冲击 | 检查电容电压波动率;按2.2公式重新计算电容;把直流电压外环带宽调低,Kp降低 |
| 某个子模块电容电压异常偏高或偏低 | 脉冲分配错误、载波同步错位;均压控制器增益过小 | 检查载波相位偏移是360°/N还是360°/N但方向反了;检查均压控制器的极性 |
| 环流过大(桥臂电流直流分量明显) | 桥臂电感太小;缺少环流抑制控制器 | 增大桥臂电感;加入二倍频负序环流抑制PI控制器 |
| 谐波补偿效果不明显,THD下降很少 | 谐波提取所用低通滤波器截止频率不合适;补偿电流方向反了;PCC检测点位置不对 | 用Scope观察谐波提取分量和实际负载谐波是否同幅反相;调整低通截止频率;确认检测点在负荷侧公共点 |
| 功率反向时会暂时过流或直流电压跌落 | 功率指令变化速率过快;直流电压控制器响应不够快 | 在P_ref前加斜坡限幅,比如变化速率不超过额定功率每秒值;提高直流电压内环的PI动态响应 |
5.2 排查谐波补偿是否生效的实操方法
很多时候谐波补偿接上了,但波形和预想不一样,这时候不要只盯着THD数字,先把关键中间量拉出来对比。我是这样做的:在同一Scope里同时显示MMC输出电流、PCC点电流、负荷电流。如果MMC电流里出现了与负荷谐波电流形状相似但相位相反的纹波,PCC电流变干净,那说明补偿方向正确;如果MMC电流纹波跟负荷同相,说明符号反了,把补偿通道增益改成负号即可。
还有一种隐蔽的情况是低通滤波器设计不当导致谐波提取延迟太大。我用的是截止频率50 Hz的一阶低通,提取基波d轴分量,剩余的交流波动作为谐波。延迟会造成相位偏移,影响补偿效果。后来改为截止频率30 Hz的巴特沃斯二阶低通,相位更陡但延迟仍在可接受范围。更高级的做法是陷波器法或者滑动平均滤波,但仿真里一阶低通加适当相位校正已经够用。
5.3 仿真速度慢的优化经验
详细开关模型加4个子模块,全系统24个模块、48个IGBT,Simulink确实跑得比乌龟还慢。我的配置是8核CPU,仿真一个5秒过程实际花了几十分钟。如果想提速,有三个方向:
一是尽量使用离散求解器和固定步长,减少微分方程积分次数;二是把不关心的波形测量环节去掉,特别是不要给所有24个IGBT都串电流表;三是把载波频率降低到600 Hz而不是1 kHz,子模块本来就不多,等效开关频率能到2.4 kHz,波形依然能看。如果要大规模验证控制策略,建议暂时用平均值模型代替详细开关模型,把详细模型留到最终验证阶段再跑。
6. 从功率传输到电力质量调节的扩展思考
6.1 这套模型还能往哪些方向延伸
背对背MMC作为电力质量调节系统的潜力不止谐波和无功。我这次跑完之后,就在想还能不能加以下功能:
- 三相不平衡补偿:在负序电流控制环中加入负序参考,让MMC输出负序电流来抵消负荷不平衡产生的负序分量,电网侧三相电流恢复平衡。实现上需要正负序分离,通常用陷波器或者延迟信号消除法。
- 电压骤降穿越(低电压穿越):在交流母线电压跌落时,MMC快速切换控制模式,限制电流不过流,无功优先输出支撑电压。这个需要增加状态机逻辑,控制复杂度明显上升。
- 储能接口扩展:背对背MMC的直流母线本来就是开放接口,可以加一个储能单元,形成光储柔直系统。储能控制会放在直流侧,与MMC控制协调,实现削峰填谷。
这些延伸方向都是目前很实际的需求,而且都可以在现有模型基础上改,不需要推倒重来。模型的模块化设计价值就在这里。
6.2 我的一些实际体会
玩MMC仿真这段时间,最大的体会是:模型简单但系统复杂,复杂不在公式推导,而在各种物理约束的叠加。子模块电容要平衡、桥臂环流要抑制、交流电流要低谐波、直流电压要稳定,这么多目标同时控制,实质上就是一个多时间尺度协调问题。Simulink的好处是能够把这些问题可视化、分段调试,但前提是你必须清楚每一个控制环节背后的物理意义,否则参数再怎么调都是碰运气。
另外一点,谐波补偿这种电力质量功能,仿真结果好并不意味着工程上就能直接使用。实际系统里还有采样延迟、通信延时、传感器噪声、开关损耗不一致等因素,这些都会影响补偿效果。所以仿真阶段把裕量留大一点,PI参数不要调得太激进,硬件实现时才有回旋余地。如果你想深入了解MMC的数学建模和环流分析,推荐去找一些柔性直流输电方向的论文和教材,把数学模型和Simulink模型对照着看,收获会大很多。
6.3 最后一招:快速验证控制方向的小技巧
最后分享一个我自己经常用的小技巧。遇到控制方向不确定的情况,比如谐波补偿输出极性、均压补偿极性,不要急着跑完整仿真,而是先在稳态运行中的某一点给控制输出加一个极小的阶跃扰动,比如把谐波补偿增益从0增大到0.001,看目标变量的变化趋势。如果目标量朝着预期反向变化,说明符号反了;如果同向,再增加到正常值。这个方法省时省力,能帮你快速定位方向性问题,而且不容易把系统弄发散。
背对背MMC电力质量调节这个方向,既踩了功率变换的典型约束,又延伸到了电能质量治理的实际痛点,做起来挑战多、收获也多。按照上面这套思路把模型一步步搭起来,再把控制参数调一遍,你会对整个系统的动态特性认识得非常透彻。