做电力系统仿真的朋友,早晚会碰上一个绕不开的课题:怎么把背对背高压直流调制多电平变流器(MMC)这套东西玩明白。我最初上手它,是因为手头有个很实际的需求——两个频率和相位都不完全同步的交流系统要柔性互联,同时还得把电压跌落、无功波动这些电能质量问题一起压住。说白了,就是把背对背MMC当作一个电力质量调节系统来用,整个课题的核心载体就是Simulink仿真。这篇文章把我从原理推导、参数估算到模型搭建、调试验证的全过程梳理一遍,适合正在做MMC-HVDC仿真、被“背对背双换流站协调控制”弄得头大的同学参考。我不打算写成教材式的说明书,所有内容都是我仿真时真实遇到的问题和最终采用的解法,可以直接拿去对照你的模型。
1. 为什么拿背对背MMC做电能质量调节:先搞清楚这个系统的定位
很多人一上来就搭模型,搭到一半才发现自己连“背对背”到底在解决什么问题都没想清楚。这个定位直接决定你的控制策略、参数选取和仿真场景设计,所以我建议先从需求反推系统。
1.1 背对背拓扑到底解决了什么场景问题
背对背MMC-HVDC,本质上就是把两个MMC换流站放在同一个换流站内,共用一条直流母线,中间没有长距离直流输电线路。两个换流站一个整流一个逆变,有功功率可以直接从一侧流向另一侧,也可以双向反转。它最典型的应用场景有两个:一是异步电网互联,两侧频率可以不同,比如50Hz和60Hz的系统通过它连接;二是弱系统支撑,当一侧电网很弱或者负载波动剧烈时,另一侧可以快速注入或吸收有功、无功,避免电压和频率越限。
回到电能质量调节这个任务上,背对背拓扑真正值钱的地方是功率解耦和频率解耦。两侧交流系统除了共享直流母线电压之外,电气上是完全隔离的,A侧的谐波不会传到B侧,A侧的电压跌落也不会直接拖垮B侧。这在Simulink里的表现就是:你可以在A侧放一个“捣乱源”(三相电压跌落、谐波注入、大功率冲击负载),然后观察B侧电压电流波形依然保持稳定。这就是“调节系统”四个字的核心含义。
1.2 MMC在电力质量调节里的“不可替代”性
有人可能会问,为什么非要用MMC,传统的两电平或三电平VSC不行吗?两电平VSC当然可以做无功补偿和有功转移,但它有一个硬伤:开关器件直接串联承受全直流母线电压,在中高压场景下对器件均压和开关频率要求极其苛刻,波形质量也差,需要笨重的交流滤波器和多重化变压器。而MMC把“高压”这件事拆解到了几十上百个子模块上,每个子模块只承受很低的电压,通过级联叠加出高电压波形。
这里尤其要强调波形质量。MMC的桥臂输出电压波形是由N个子模块阶梯叠加出来的,等效开关频率可以做到器件实际开关频率的N倍。这意味着在同样的滤波要求下,MMC的输出谐波远小于两电平VSC,甚至可以做到无变压器直接接入中高压电网。对电能质量调节这种对谐波和电压畸变敏感的场景,这个优势是决定性的。
| 对比项 | 两电平VSC | 三电平NPC | MMC |
|---|---|---|---|
| 电压扩展方式 | 器件串并联 | 器件串并联 | 子模块级联 |
| 输出谐波 | 高,需大滤波器 | 中 | 低,滤波需求小 |
| 器件开关频率 | 高 | 中 | 低(等效频率高) |
| 模块化程度 | 低 | 低 | 高,便于扩容 |
| 故障容错 | 差 | 一般 | 好,可冗余 |
在Simulink里,两电平VSC用Universal Bridge几分钟就能搭完,但研究电力质量调节时你会发现它很难模拟出“阀组级”的电压应力和子模块电容均压问题。MMC虽然搭建麻烦一些,但它能复现的工程问题更多,研究价值也完全不同。
1.3 仿真要复现的核心功能清单
在动手搭建之前,我把这个“电力质量调节系统”的功能拆成了下面这几条,后面所有仿真场景都对应其中一条:
- 有功功率双向可控传输,且A、B两侧完全解耦;
- 两侧无功功率独立调节,实现动态电压支撑;
- A侧电压跌落或波形畸变时,B侧电压保持稳定;
- 两侧交流系统频率可以不同,系统依然能稳定运行;
- 响应速度足够快,动态调节时间在百毫秒级别。
这个清单相当于整个项目的地图。你在Simulink里每搭一个模块、每调一个PI参数,都要能对应到清单上的某一项。
2. MMC换流器的物理模型与关键参数估算
模型搭得对不对,核心看你有没有真正理解MMC的子模块工作原理和桥臂电气关系。很多仿真发散、波形不对,追根溯源都是这一层出了问题。
2.1 半桥子模块的工作逻辑
MMC里最常用的是半桥子模块(HBSM),结构上包含两个IGBT(T1、T2)、两个反并联二极管(D1、D2)和一个直流储能电容C。这个子模块只有两种稳定工作状态:投入(T1导通、T2关断)时,模块输出电压等于电容电压Uc;切除(T1关断、T2导通)时,模块输出电压为0。
关键是要理解电流方向对实际通路的决定作用。T1、T2只是“允许”电流走某条路,最终走不走取决于桥臂电流的方向。正方向电流(从模块流出)在投入状态走T1,切除状态走D2;反方向电流在投入状态走D1,切除状态走T2。这就是为什么MMC的子模块不需要像两电平那样复杂的死区保护逻辑,天然具备故障电流通路。在Simulink里建模时,如果你用的是Simscape Electrical的元件库,直接搭这个拓扑即可;如果为追求速度写理想开关函数模型,也要把电流方向判断写对。
2.2 桥臂电气关系与环流是怎么产生的
MMC的每一相由上下两个桥臂组成,每个桥臂包含N个子模块串联,再串一个桥臂电感L_arm。上下桥臂的连接点引出交流相线。直流母线电压Vdc分配在上下桥臂之间,交流相电压从两个桥臂的中间点取出。
写出来就是两个基本方程:
上桥臂电压:v_p = Vdc/2 - v_ac - L_arm·di_p/dt 下桥臂电压:v_n = Vdc/2 + v_ac - L_arm·di_n/dt
其中i_p和i_n分别是上下桥臂电流。桥臂电流里除了交流分量,还有一个不产生外部效应的内部电流分量,就是所谓的环流。环流的主要成分是二倍频负序分量,它的危害是让桥臂电流峰值增大、子模块电容电压纹波加大、器件损耗上升。所以任何一套MMC控制系统里都必须有环流抑制环节,这个我在后面的控制部分再细说。
2.3 子模块数、电容和桥臂电感的工程估算
这一节直接给出我仿真时用的一套参数和估算公式,避免大家从零开始瞎试。先用设计需求定几个量:
- 交流系统线电压:10 kV / 50 Hz
- 系统容量:10 MVA
- 直流母线电压Vdc:24 kV
- 子模块额定电容电压Uc:2 kV
- 单桥臂子模块数N:Vdc / (2×Uc) = 24kV / 4kV = 6
这里要说明一下,N = Vdc/(2×Uc)是因为一个相单元上下共2N个子模块,均匀承担Vdc。选6个子模块对于工程来说太少了(实际工程动辄几十上百个),但仿真中为了保证速度和波形分辨率,N=6是个常见折中。
子模块电容按下式估算:
C ≈ (2 × S × H) / (3 × N × Uc²)
其中H是储能常数,通常取30~40 kJ/MVA,这里取0.04 s。代入:C = (2×10×10⁶×0.04) / (3×6×(2×10³)²) ≈ 0.0111 F,约11 mF。
桥臂电感按0.1~0.15 pu选取。系统的基波阻抗Zbase = Vll²/S = 100/10 = 10 Ω,取0.13 pu就是1.3 Ω,折算成电感约4.1 mH,取4 mH。
这套参数我实测下来,既能保证电容电压纹波在合理范围(约±5%),又不会因为桥臂电感太大而拖慢动态响应。实际调试时,如果发现环流压不住,优先加大桥臂电感;如果发现电容电压波动超标,优先加大电容值,而不是反过来。
3. Simulink搭建过程:从主电路到控制环的完整落地
搭建阶段是最容易劝退人的。MMC不像两电平VSC几十个模块就完事,它是“结构简单但元件量巨大”的典型。下面对应我实际的操作顺序,一步步讲清楚。
3.1 模型选型:详细开关模型还是平均模型
第一步不是急着画主电路,而是决定用哪种精度的MMC模型。Simulink里常见三种:
- 详细开关模型:每个子模块用IGBT/二极管实际拓扑建模,能反映所有开关细节,但仿真速度极慢,N较大时基本跑不动;
- 开关函数平均值模型:每个桥臂用受控电压源代替,电压按调制信号平均值产生,无法看到器件级开关纹波,但动态特性准确;
- 等效戴维南模型:把每个桥臂等值为一个可变的受控电压源串联阻抗,是详细模型和平均模型之间的折中,最推荐做电能质量研究的人使用。
我自己的策略是两阶段走:先做一套平均模型把控制策略调通,确认功率阶跃、无功补偿、电压跌落这些宏观功能都正常之后,再换成等效戴维南模型或N较小的详细模型,去观察环流和电容电压纹波。千万别一上来就搭6×6=36个详细子模块的背对背系统,你会被仿真时间逼疯的。
3.2 背对背主电路搭建步骤
在Simulink里,我习惯用Simscape Electrical的Specialized Power Systems库,搭建顺序如下:
- 建立两个MMC换流站模型。每个换流站包含A、B、C三相对应的六个桥臂(上臂+下臂,每臂N个子模块),桥臂之间通过交流输出点相连,三相共用一个直流正、负母线。
- 在直流侧把两个换流站的正负母线直接连在一起,中间可以加一个小容量直流电容来稳定直流电压(实际背对背站也有直流支撑电容,不能省略)。
- 两侧交流系统各自用Three-Phase Source模拟,中间接入变压器和等效线路阻抗。变压器接线组别建议一侧用Yg/D,另一侧用Yg/Yg或D/Y,避免零序通路问题。
- 在交流出口和直流母线处加电压、电流测量模块,测量值送入控制子系统。
- 每个换流站配置一个断路器用于启动预充电(后面避坑部分详细讲)。
这里有一个非常容易犯的错误:两个换流站的调制波初始相位、PLL初始相角必须和各自所连交流电源严格对应。我第一次就把PLL初始相角设错了,导致启动瞬间直流侧电流直接冲到了额定值的七八倍,波形完全崩掉。
3.3 分层控制与调制实现细节
MMC的控制系统采用典型的双闭环结构,外加调制和环流抑制两个辅助环节。我在Simulink里把这部分做成了一个独立的子系统,输入是测量到的电压电流,输出是六个桥臂的调制波。
外环有两种典型模式:一侧换流站采用定直流电压+定无功功率控制,负责稳定直流母线电压;另一侧采用定有功功率+定无功功率控制,负责传输设定好的有功。电能质量调节时,有功功率给定值可以根据补偿需求动态调整,这就是功率双向转移的来源。
内环是dq坐标系下的电流解耦控制。经典公式是:
v_d = Kp(i_d_ref - i_d) + Ki∫(i_d_ref - i_d)dt - ωLi_q + v_d_ff v_q = Kp(i_q_ref - i_q) + Ki∫(i_q_ref - i_q)dt + ωLi_d + v_q_ff
也就是PI输出叠加解耦项ωLi和电网电压前馈项。这里最容易出问题的是PI参数。我的经验是:先整定内环电流环,按带宽法取Kp ≈ L/τ_i,τ_i约为1~2 ms;再整定外环,外环带宽取内环的1/5~1/10。别直接用凑数法,否则模型一加扰动就发散。
调制环节我用的是载波移相PWM(CPS-PWM)。N个子模块的三角载波初始相位依次错开2π/N,每个载波与同一个正弦调制波比较,得到各子模块的开关信号。这个方法实现简单,频带利用率高,适合N不大的仿真模型。N很大的工程场景会改用最近电平逼近(NLM),仿真中没必要。
环流抑制我单独建了一个二倍频负序dq控制器。它的输入是环流计算值(从上下桥臂电流相减得到),输出是叠加到三相调制波上的修正量。这个环节对桥臂电流峰值影响很大,后文会详细讲它的调试坑。
4. 调试与波形验证:整机性能如何一步步调到及格
模型搭完不代表完事,接下来是漫长的调试验证阶段。我一般按照稳定运行、动态响应、故障穿越三个层次逐步推进,每个层次都有自己的判定标准。
4.1 稳态波形怎么才算正常
模型能在额定工况下稳定跑起来之后,第一步看五类波形:
- 三相交流电压/电流是否正弦、三相对称;
- 子模块电容电压是否均衡,纹波是否在±5%以内;
- 直流母线电压是否稳定在额定值,波动小于±2%;
- 桥臂电流里是否还有明显的二倍频环流;
- 网侧电流THD是否小于3%。
有人看到波形能跑就说“模型正常了”,这是不对的。尤其要打开子模块电容电压看,如果N=6的六个电容电压出现分叉,说明均压控制没生效。CPS-PWM天然带一定的均压能力,但工程上还会加排序均压算法,仿真时至少要确认电容电压偏差不超过5V级别。实测下来,我的模型稳态THD约1.8%,电容电压纹波约±4.2%,直流电压波动约±1.5%,属于合格水平。
4.2 功率阶跃与无功补偿的动态表现
稳态没问题后开始测动态。我给站2的有功功率给定在0.5s从0.3pu阶跃到0.8pu,观察两侧功率跟随情况和直流母线电压波动。
合格的标准是:有功功率调节时间在50~100ms内,超调量小于10%,直流电压波动不超过±5%。如果直流电压波动过大,说明定直流电压站的外环PI响应太慢,或者两侧功率指令变化速率太快。我习惯在功率给定通道加一个速率限制器,把变化率限制在0.5 pu/s左右,这样既保住了动态响应又不至于让直流电压剧烈波动。
无功补偿的测试同样重要。给站1的无功电流指令阶跃,观察交流母线电压的支撑效果。无功响应速度要比有功快得多,这是决定电能质量调节效果的关键指标。我在Simulink里观察到,无功从0到满发大约需要20~30ms,这个速度足以应对大部分电压跌落工况。
4.3 电压跌落与不平衡工况下的调节效果
电能质量调节系统的重头戏是故障工况仿真。我设计了三个场景:
场景一:站1侧交流电源在0.8s发生三相电压跌落,跌落深度至0.5pu,持续0.2s后恢复。观察站2侧电压是否仍保持稳定。背对背系统的隔离特性在这里体现得非常直观,站2侧电压波形几乎不受影响。
场景二:站1侧接入一个三相不平衡负载,制造明显的负序电流。由于MMC是三相独立控制的,负序分量会在站1内部被吸收,站2侧依然是干净的正序三相系统。
场景三:站1有功功率在0.6s突然反向(从送电变为受电),模拟潮流反转。观察站2的定功率控制和站1的定直流电压控制能否平滑切换。实测功率反转过程约80ms完成,过程中直流电压最大波动约6%,在可接受范围内。
这三个场景跑通后,你这个“背对背MMC电力质量调节系统”才算真正具备研究价值。我建议把所有仿真波形用Scope记录后导出到MATLAB工作空间,再统一用plot美化,方便写报告时直接用。
5. 仿真过程中我踩过的坑与排查思路
最后分享几个让我印象深刻的坑。这些坑单独看都不起眼,但每一个都能耗掉你一整天。
5.1 启动瞬间的预充电与冲击电流处理
最典型的问题:仿真一开始就把两个换流站满载启动,直流电压指令直接给24kV,结果子模块电容瞬间涌流,直接把桥臂电流干到十几倍额定值。原因很简单,MMC的子模块电容在初始时刻电压为0,你强行让直流母线电压建立,电容只能靠巨大的电流硬充。
解决办法是在模型中加预充电过程:交流侧通过限流电阻和断路器接入,先让子模块电容通过二极管不控整流完成自然充电,等电容电压达到额定值80%左右再闭合旁路断路器,同时启动PWM整流控制,把直流电压从80%平稳拉高到100%。直流电压指令也要加斜坡,斜率建议不超过0.3pu/s。这个步骤看起来“多余”,但仿真中的启动行为和真实工程完全一致,跳过了它你会得到一堆错误结论。
5.2 仿真速度、步长与求解器的平衡
MMC详细模型的仿真速度是出了名的慢。我最早用变步长ode23t跑详细模型,系统倒是能跑,但跑到0.5s就得花半个多小时,而且经常报“微分代数方程初始化失败”之类的错误。
最终解决方案是固定步长离散求解器,步长取2μs。这样既能捕捉到子模块的开关动作(1kHz载波对应1ms周期,2μs步长足够),又能避免变步长在开关瞬间的抖振问题。代价是模型运行时间依然不短,所以我只在最终验证阶段用详细模型,日常调参全用平均模型配合50μs的固定步长,速度能快二十倍以上。
如果你需要跑2s以上的长时间电能质量场景,建议把功率器件换成理想开关/平均模型,再把测量信号和控制器的采样时间放宽容到100μs。牺牲一点波形细节,换来可以接受的仿真时长,这笔账很划算。
5.3 环流抑制和PLL两个高发“隐形坑”
先说环流抑制。我给环流控制器做二倍频坐标变换时,旋转角度是-2ωt还是+2ωt,这个方向反了,环流不仅压不住,反而会被放大。第一次调的时候环流从正常的50A峰值飙到了200A以上,桥臂电流波形出现明显的“拍频”现象。正确做法是采用负序二倍频旋转坐标系,即旋转角度为-2ωt,且d、q轴的反向顺序要对应负序分量。
再说PLL。背对背系统两侧交流电源频率不一样,为了各站独立锁相,我分别给两个换流站建了独立的PLL。问题是PLL的初始相角必须和电源模型设置的初相角一致,否则启动瞬间会出现电流冲击。我在Many情况下会直接把PLL初始相角设成0,而电源模块默认初相角可能也是0,但变压器模型的存在会引入移相,导致实测相角和PLL跟踪值之间存在恒定偏差。排查方法是用Simulink的Powergui里的“Initial States”工具查看各节点初值,对不上就手动修正PLL的Phase Offset参数。
另外还有一个隐蔽问题:环流抑制控制器的带宽必须低于主电流内环,否则两者会互相干扰。我一般把环流PI的响应速度设为主电流环的1/3到1/2,实测下来动态性能反而更稳定。
做背对背MMC这套仿真,和学习其他复杂电力电子系统一样,真正有价值的时刻不是模型第一次跑通,而是波形第一次崩掉之后你一步步排查出来的过程。我个人的经验是:当你把预充电、功率反转、电压跌落三个场景都调稳之后,再去回看MMC的数学模型,会发现那些公式突然全都“活”了。如果你正在搭类似模型,建议先用平均模型跑通控制逻辑,再逐步增加开关细节的复杂度,这条路是最省时间的。