
最近在研究电能质量治理的时候我把目光放到了背对背MMC模块化多电平换流器上。之前我用Simulink分别搭过SVC、SVG这类传统补偿装置模型多少都觉得有些局限——要么响应速度不够快要么波形质量差点意思要么没法同时兼顾无功补偿和谐波治理。后来尝试用背对背MMC搭建了一套电力质量调节系统仿真模型发现它对电压支撑、功率解耦控制、谐波改善的效果都相当不错。这篇文章就从系统原理、控制分层、Simulink建模到调试经验把完整思路整理出来。如果你是电力电子、电力系统方向的学生或者工程技术人员正在做相关课题但苦于网上关于MMC仿真的参考资料太零散那这篇内容应该能帮你省下不少摸索时间。我会把每个环节为什么这么做、参数怎么来、波形里看到什么算正常都尽量讲透。1. 为什么拿背对背MMC做电力质量调节它解决了什么痛点1.1 传统补偿装置的缺陷让我决定换方案在决定用MMC之前我对几种常见的电能质量治理手段都做过仿真对比。先说SVC静止无功补偿器它的核心是晶闸管控制的电抗器和电容器组能够动态补偿无功但晶闸管换相过程中会向系统注入特征次谐波而且面对快速的电压跌落响应速度偏慢。SVG静止无功发生器用的是电压源型变流器响应速度快了不少但大多数工程上用的是两电平或三电平结构开关频率高、损耗大要并网还得配较大的滤波器。还有一个容易被忽略的问题上述装置本质上都是单端补偿设备只能挂在网络的某一个节点去治理本地电能质量没有办法在系统层面实现两侧隔离功率双向转移。而背对背MMC天生就是双端结构相当于把两个MMC换流器背靠背通过直流母线连接起来既能在两端分别做无功补偿和电压支撑又能控制有功功率从一端流向另一端还能把一侧的电压扰动、谐波污染隔离开不让它传播到另一侧去。这对新能源并网、孤岛供电、敏感负荷供电这样的场景非常关键。1.2 MMC本身的波形优势不可替代再单独说MMC的结构。它的核心思想是把很多个半桥子模块每个子模块就是一个IGBT半桥加一个直流电容串联起来构成一个桥臂每个相单元上下两个桥臂再加一个桥臂电抗器。通过控制子模块电容的投入和切出桥臂电压呈现台阶状波形子模块数量越多波形越接近正弦。这个特性带来的直接好处就是输出电压谐波含量低几乎不需要传统两电平变流器那么大的交流滤波器而且每个子模块单独承受低电压器件应力小、模块化程度高、冗余性好工程上维护也方便。所以从系统角度看背对背MMC把高质量波形和双端解耦控制两个优势叠加在了一起作为电力质量调节系统来研究再合适不过。1.3 我用的拓扑结构和仿真目标我搭建的系统是三相背对背MMC-HVDC模型结构上分为四个部分送端交流系统、整流侧MMC换流站、直流母线、逆变侧MMC换流站和受端交流系统。整流侧MMC的主要任务是维持直流母线电压恒定并控制送端有功功率逆变侧MMC则负责受端的无功补偿、交流电压支撑以及有功功率的受控输出。整体目标是在Simulink仿真环境中让这套双端系统在稳态和动态工况下都能表现出理想的电能质量调节特性。2. 控制系统的分层架构从顶层功率目标到子模块电容电压2.1 三层控制结构是MMC仿真的核心主线背对背MMC的控制逻辑不能一股脑全放在一起工程上通常把它分成三个层级每一层只关注自己那一块的带宽和动态特性。系统级控制最外层处理交流电压、有功功率、无功功率、直流电压这些慢变量输出内环电流参考值。在我这个模型中整流侧的外环是定直流电压控制加定无功功率控制逆变侧的外环是定有功功率控制和定无功功率控制。换流器级控制内环在dq旋转坐标系下对三相电流做解耦控制响应速度快于外环一个数量级以上。内环PI输出的就是换流器交流侧参考电压。调制与子模块级控制最底层把内环生成的参考电压通过调制策略转换成每个子模块的投切信号并保证各子模块电容电压均衡。这里需要使用载波移相调制或者最近电平逼近配合排序算法。层的带宽设计要遵守内快外慢原则。如果你做仿真发现直流电压在动态过程里振荡甚至发散大概率就是外环PI带宽太高或者内环跟踪速度不够导致内外环发生交互。这个原则到后面我在调试部分还会再提到。2.2 dq旋转坐标系下的电流解耦控制MMC的交流侧数学模型在三相对称系统中用Park变换把abc三相变成一个旋转的dq坐标系其电压方程为$$v_d -(R Ls)i_d \omega L i_q e_d$$ $$v_q -(R Ls)i_q - \omega L i_d e_q$$这里R和L是交流侧等效电阻和电感e是电网电压v是换流器输出电压。从方程中可以看出d轴和q轴电流通过交叉项以及电网电压耦合在一起所以内环控制要引入解耦补偿项$$v_d^{*} -(k_p \frac{k_i}{s})(i_d^{*} - i_d) \omega L i_q e_d$$ $$v_q^{*} -(k_p \frac{k_i}{s})(i_q^{*} - i_q) - \omega L i_d e_q$$在Simulink里实现这个控制律很方便用比例积分控制器加前馈项就行。关键是要在内部先经过PLL锁相环锁定电网电压相位给Park变换提供角度。PLL在Simulink中直接用Three-Phase PLL模块即可但如果仿真步长比较差PLL锁定可能变慢建议在PLL输出处加一个小时间常数的一阶低通滤波。2.3 环流抑制MMC独有的一课MMC区别于两电平VSC的一个显著问题是桥臂环流。三相桥臂之间存在一个二倍频负序环流分量它会增大桥臂电流有效值、提高开关器件损耗并在电容电压中引起二倍频波动。如果不加控制仿真里你会看到桥臂电流波形明显畸变电容电压纹波也比理论值大很多。抑制环流的标准做法是在abc坐标下检测上下桥臂电流之和的一半即环流分量提取二倍频负序分量然后将其变换到一个以二倍频反向旋转的dq坐标系下用PI控制器输出一个叠加到调制波上的补偿电压。我的模型中直接加了一个独立的环流抑制模块输入三相环流输出补偿电压叠加到内环输出的参考电压上。实测启用环流抑制后桥臂电流中的二倍频分量幅值可以压到原来的20%以下。2.4 子模块电容电压均衡与预处理再往下一层是子模块级控制。载波移相PWM方案下每个子模块都有自己的三角载波调制波一样但载波相位错开。理论上只要各子模块的载波相位均匀错开且每个子模块的导通时间统计平均相同电容电压就能自然均衡。但仿真中由于开关状态不完全对称电容电压会有漂移。我用的方法是在每个载波周期内动态调整各子模块的调制波幅值让电容电压高的子模块少被投入少充电电压低的子模块多投入多充电。这个逻辑用MATLAB Function模块写很顺手排序后配合载波移相生成PWM信号整套控制闭环就完整了。3. Simulink模型搭建全过程从子模块到双端系统3.1 搭建前先确定仿真环境和库我用的是MATLAB R2021b版本电气元件全部从Simscape Electrical库早期版本叫SimPowerSystems获取。Simscape Electrical的库模块在不同版本里位置有些差异但核心模块基本都在。建议在搭建前先用powerlib打开库浏览器把需要的模块拖进模型提前确认一遍。仿真类型建议采用离散仿真Powergui模块的参数里选择离散模式样本时间设置为5微秒后面会讲到为什么如果想跑得更快可以取10微秒但精度会下降。连续仿真在MMC这种大量开关器件的模型里会非常慢而且数值振荡风险高。3.2 半桥子模块怎么搭MMC的基本单元是半桥子模块我推荐自己用Universal Bridge或者用离散IGBT模块搭建而不是直接用现成的封装。因为你需要把子模块的电容电压引出来参与均衡控制封装模块往往不便于引出内部状态。我用两个Igbt/Diode模块加一个直流电容器串联成半桥结构电容上并联一个较大的放电电阻来模拟实际子模块的静态损耗同时方便电容初始电压设置。子模块有两个输出上管触发信号和电容电压测量信号。通过Bus Creator打包引出。这样一个子模块搭建好之后封装成Subsystem里面的IGBT参数用默认即可但要注意缓冲电阻Rsnubber的设定若电容值太大仿真容易发散我习惯设成1e5欧姆以上。子模块的电容参数不能乱取一般按MMC设计经验公式计算$$C \frac{2 N S}{3 m \omega V_{dc}^2 \varepsilon}$$其中N为每桥臂子模块个数S为单端换流站容量m为调制比ω是工频角频率Vdc是直流母线电压ε是允许的电容电压纹波率通常取5%到10%。如果你的系统设计指标是每桥臂8个子模块、容量10MVA、直流电压20kV、调制比0.9纹波率取8%算出来电容大约在2到4毫法左右。实际仿真中我加大到5mF电容电压波动更小但充电过程会稍微慢一些。3.3 桥臂和三相MMC组装每相由一个上桥臂和一个下桥臂串联组成每个桥臂由N个子模块串联后与一个桥臂电抗器串联。桥臂电抗器的作用一是抑制环流二是限制故障电流上升率。经验值一般取0.1 p.u.左右按系统容量和电压折算成实际电感值。以我的模型为例单端容量10MVA、交流侧线电压10kV折算下来桥臂电感约在3到5mH之间。电感取大了控制响应慢取小了环流抑制效果差。三相MMC装好后直流侧上下母线分别相连形成双端系统的公共直流母线。从整理过的背对背结构看就是两个三相MMC换流站共用同一条直流链路母线之间可以放一个几百微法的直流支撑电容但由于MMC子模块电容本身提供了足够的储能这个支撑电容可用可不用。我保留了一个小电容来滤波高频分量。3.4 交流系统与变压器模型两端交流系统用Three-Phase Source模块即可电压幅值按你设定的系统电压设置。为了模拟实际电网的阻抗在电源和换流站之间串联一个RL支路。换流变压器我采用的连接方式是Yg_D即阀侧三角形接线。这个细节很重要三角形接线可以为零序电流提供通路防止MMC侧产生零序环流。变压器漏抗一般取0.1 p.u.这个值也影响到内环PI参数的整定。3.5 控制系统在Simulink中的落地控制系统的顶层框图和主电路分开用From/Goto或者Bus方式传信号。整流侧的控制结构如下采集三相交流电压和电流经过Three-Phase PLL得到电压相位theta。对电压电流做abc_to_dq0变换得到dq分量。外环直流电压参考Udc_ref与实测Udc比较通过PI生成d轴电流参考id_ref无功功率参考Q_ref与实测Q比较通过PI生成q轴电流参考iq_ref。内环id_ref和iq_ref分别与实测id、iq比较通过两个PI控制器并叠加解耦项和电压前馈得到vd和vq。vd、vq经过dq0_to_abc变换回三相调制波再送给调制模块。逆变侧结构基本对称只是外环改为定有功功率和定无功功率。需要特别注意的是逆变侧PLL参考的角度来自受端电网两边是独立锁定相位的因为背对背系统本来就是两个独立交流系统通过直流母线联系不需要频率同步。这让我一开始也踩过坑如果你把整流侧的相位拿给逆变侧用模型直接跑飞。离散PI控制器的参数整定我实际用下来这套内模控制的整定公式非常可靠带宽取200到300HzPI参数与桥臂电抗、等效电阻相关做灵敏度试验后发现按公式计算的值偏差10%到20%内都能稳定。3.6 调制与均衡策略实现细节我使用的是载波移相PWM每个桥臂N个子模块生成N个相位依次差360/N度的三角载波频率设为1kHz。调制波是内环输出的参考电压除以直流母线电压得到的归一化标幺值。每个子模块的PWM比较结果加上电容电压均衡修正后作为IGBT的触发脉冲。电容电压均衡我用了一个巧妙一点的实现把每个桥臂内N个子模块的电容电压按大小排序将本次需要投入的子模块数目标记为k然后按电容电压最低的优先投入原则分派触发信号在调度上每隔一个工频周期轮换一次子模块编号来保证统计均衡。这个逻辑用MATLAB Function模块写排序和选择算法即可不用S-Function代码量也不大。4. 仿真运行与结果分析如何判断模型是否正常工作4.1 稳态工况怎么看模型跑起来后第一件事就是看交流侧电压电流波形和直流母线电压。正常情况是整流侧直流电压稳定在设定值20kV附近纹波不超过1%两端交流电流三相对称正弦度良好子模块电容电压都在2.5kV±8%范围内波动。若电容电压偏差超过10%检查均衡算法或者调制策略很大概率是排序逻辑里子模块投入数算错了。桥臂电流观察也很有用。启用环流抑制后桥臂电流除了基波分量外基本看不到明显的二倍频纹波。如果环流波形还有明显的100Hz成分说明环流抑制的PI参数没调好或者桥臂电感取值过小。还有一个技巧把同一个桥臂所有子模块电容电压叠加在一起和桥臂电压波形对比可以直观验证子模块投切数是否合理。4.2 动态响应怎么考核电力质量调节系统最看重的是动态特性我在模型中分别做了两类实验一类是无功阶跃受端无功参考值从0Mvar突增到6Mvar观察受端交流电压的支撑情况。理想的响应是受端电压几乎没有跌落无功输出在100到200毫秒内跟上参考值而送端系统基本不受影响这正好体现了背对背结构的解耦优势。实测中如果受端电压跌落明显先看内环q轴电流响应够不够快再检查外环无功控制器的带宽。另一类是有功传输突变送端有功指令从2MW跳到8MW观察直流母线电压动态。直流电压会出现小幅跌落因为是功率突然加大但应该在200ms内恢复超调量不超过5%。如果直流电压跌落过大说明整流侧定直流电压外环响应太慢如果出现振荡说明外环和电容电压波动发生了交互需要降低外环带宽或增加阻尼。4.3 谐波分析验证波形质量Simulink的Powergui模块提供了FFT分析工具可以直接分析电流波形各次谐波含量。稳态工况下我测的交流侧电流THD在1.5%到3%之间主要谐波是三倍频附近的奇数次谐波和边带谐波这与载波频率设定有关。对比同容量两电平VSC动辄5%以上的THD水平MMC的波形质量优势一目了然。如果你需要更低的THD提高载波频率或者增加子模块个数二选一但仿真速度会受影响。5. 调试中踩过的坑与排查思路5.1 子模块电容电压初始冲击第一次把模型跑起来时直流母线电压一直建立不起来子模块电容电压从0开始充电时电流冲击巨大还把IGBT的仿真模型搞出了数值过压。后来我在每个子模块电容的初始电压上直接设置为Vdc/N也就是让所有子模块在启动瞬间就有额定电压同时把直流母线电容设为预充状态。启动瞬间的冲击电流得到有效抑制系统也更快进入稳态。5.2 直流电压出现振荡在做有功功率动态响应测试时直流母线电压出现了明显的等幅振荡频率大概在几十赫兹。排查过程是先用测试信号堵塞各部分观察单独测整流侧外环PI输出很正常单独测逆变侧也没问题。后来定位到是整流侧定直流电压外环和逆变侧定功率外环在带宽接近时发生了交互。解决方法是把整流侧外环带宽降到20Hz左右逆变侧功率环带宽更低一些使两端动态特性拉开时间尺度振荡立刻消失。5.3 仿真速度慢到无法忍受最开始我的模型是每桥臂20个子模块双端一共120个子模块每个子模块两个IGBT离散仿真步长1e-6秒。结果仿真一秒的工况需要跑两个小时根本没法调试。后来我做了几件事把子模块数量降到每桥臂8个不仅速度提升波形质量也足够说明问题把仿真步长放宽到5e-5秒再把IGBT的开关损耗计算关掉使用理想的开关逻辑。这样综合下来仿真速度快了二十倍以上而且由于调制策略不变控制特性基本保持一致。还有一个技巧是给仿真模型设置初始化脚本用MATLAB脚本把所有的参数子模块电容、桥臂电感、PI参数、载波频率等在仿真前统一算好并写入工作区。这样每次修改参数不用去模型里翻各个模块直接在脚本里改调试效率提升明显。5.4 代数环报错Simulink在搭建控制系统时如果信号回路里存在瞬时反馈会报代数环错误。MMC控制中容易触发代数环的地方是内环电流反馈经过PI控制器、再经过解耦项反馈回电流采样如果PI控制器没有离散化或者延迟节拍就可能形成代数环。解决方法是让PI控制器使用离散类型而非连续类型并在电流采样后加一个一拍的延迟Unit Delay模块模拟数字控制器的采样保持效应。这个改动也符合实际DSP控制器的时序逻辑仿真和硬件实现更接近。6. 选型经验与后续可以扩展的方向6.1 载波移相PWM与最近电平逼近的取舍我在模型里用的是载波移相PWM因为它实现直观、均压逻辑简单适合子模块数量不太多的场景。但如果你研究的是实际工程中大容量、甚至上百个子模块的MMC强烈建议研究最近电平逼近NLM配合排序均压法。NLM在每个控制周期计算需要投入的子模块数通过桥臂电流方向判断电容充放电状态再配合电容电压排序决定具体投切哪些子模块计算量几乎不随子模块数增长而且更容易处理桥臂故障冗余。Simulink里实现也不难核心就是取整函数和排序算法我在仿真中也测试过效果不错。6.2 如果想进一步研究电力质量调节能力这个模型还有两个方向很值得扩展。第一是增加有源滤波功能在受端MMC的控制中对负载电流做谐波提取比如用dq变换提取5、7次谐波把这些谐波作为附加电流参考叠加到内环让MMC同时承担有源滤波器角色。这个功能做出来MMC就不只是补偿无功还能主动治理非线性负载产生的谐波。第二是故障穿越场景模拟受端交流系统发生电压跌落或不对称故障观察背对背系统对故障的隔离能力以及送端系统能否保持稳定输送功率。这两个扩展对实际工程应用都有很强的参考价值。6.3 最后分享一个实用小技巧在Simulink中跑这种大型离散模型时Scope直接显示波形会拖慢仿真速度。可以尽量把关键信号用To Workspace输出仿真结束后用MATLAB绘图函数统一绘图。另外模型里大量使用Goto/From标签比直接连线更清晰尤其在双端系统这样信号很多的场景但要注意命名规范否则信号对不上排查起来非常痛苦。根据我自己的使用感受背对背MMC作为电力质量调节系统的仿真难点不在主电路而在控制分层的逻辑清晰度和参数整定上。把外环-内环-调制-电容均压-环流抑制这几个环节按上面说的顺序一层层搭好、逐级验收整套系统自然能稳定运行。