双端MMC-HVDC仿真建模实战:参数计算、环流抑制与控制器整定 📅 发布时间:2026/9/8 4:47:19 👁 浏览次数: 做柔性直流输电仿真的人多半都绕不开MMC-HVDC这套东西。模块化多电平换流器MMC这几年几乎成了柔性直流的代名词从风电并网、海上平台供电到城市电网背靠背互联实际工程里到处能看到它的身影。而想把它跑起来最方便的工具就是MATLAB/Simulink。这篇文章我就用双端MMC-HVDC系统作为例子把我搭建这套模型时踩过的坑、调过的参数、琢磨过的控制器逻辑一次讲清楚。不管是正在写毕业论文的研究生还是刚接手柔直项目的工程师只要你想在Simulink里落地一套能跑、能看波形、能分析故障的MMC-HVDC模型这篇文章应该能帮你少走不少弯路。1. 内容整体设计与思路拆解1.1 为什么MMC会成为柔性直流的标配柔性直流输电的核心是换流器第一代实际工程用的大多是两电平或三电平VSC虽然控制灵活但开关频率高、损耗大电压等级和容量上去之后器件串联均压就成了老大难问题。MMC改变了思路每个桥臂由几十到几百个子模块串联而成每个子模块就是一个带电容的半桥或全桥结构。好处是显而易见的——电压等级靠模块数量堆不用纠结单个器件串并联每个模块开关频率低损耗小输出波形非常接近正弦滤波需求大幅降低。这也是为什么现在海上风电柔直送出工程几乎清一色用MMC。在Simulink里搭MMC-HVDC模型本质上就是把这套拓扑“翻译”成可仿真的框图模型。但很多人容易忽略的是模型不仅仅是“画得对”还要“跑得稳”“跑得快”。这就要在建模思路上下功夫。1.2 双端MMC-HVDC的系统控制任务双端系统重点在于两座换流站的分工。通常整流侧控制直流电压和无功功率或者交流电压逆变侧控制有功功率和无功功率。这样设计的好处是直流网络有了电压支撑功率传输可以按指令调节。当需要功率反送的时候两端控制角色要对调这在实际工程里叫作电压站和功率站的协调。搭建模型之前一定要先把这座“指挥架构”想明白因为后续所有控制器的参考值、PI参数、限幅逻辑都跟它有关。我见过不少同学把两端都做成定直流电压结果一启动就发散就是因为没有明确功率是怎么流过去的——没有一个站稳住直流电压整个系统就没有稳定的工作点。1.3 仿真方案选型离散化与模型粒度M1”等。我对比过很多次全开关模型精度确实最高但如果你的目标是研究“控制策略”而不是“器件应力”建议优先用等效模型把关注点放在系统响应和控制器配合上等核心逻辑跑通了再返回来细化。另外一个关键选择是离散仿真还是连续仿真。MMC本身开关器件多连续仿真往往慢得无法接受。我的做法是使用Simulink的powergui把模型设置为离散化步长取50微秒到100微秒配合载波同步既能看清调制细节又能兼顾仿真速度。后面的控制器环还可以再降低更新频率比如电流内环1e-4秒电压外环1e-3秒这个多速率思路能省很多算力而且波形质量不会明显变差。2. 核心细节解析与实操要点2.1 主电路参数计算从物理背景出发这一块是很多人最头疼的地方因为仿真参数不是抄来的而是根据系统容量、电压等级、控制目标算出来的。以一套100MW、直流电压±100kV、桥臂模块数N100的双端MMC-HVDC为例我按下面这套方法算参数。首先是子模块电容主要影响电容电压波动和系统储能。工程经验上子模块电容时间常数τ一般取40ms左右计算公式是[ C \frac{4 \cdot S \cdot \tau}{N \cdot V_c^2} ]其中S是换流器额定功率N是每个桥臂的子模块数Vc是子模块电容稳态平均电压。代入数据S100MWN100Vc2kVτ0.04s得到[ C \frac{4 \times 100 \times 10^6 \times 0.04}{100 \times (2000)^2} 40mF ]这个容量在传统两电平变流器里很难想象但在MMC里很常见因为每个电容只需要承担子模块的放电能量。电容选小了电压波动大选大了成本高、充电慢。然后是桥臂电抗器。它主要用来抑制环流和限制故障电流上升率。工程上通常取0.1~0.15标幺值。标幺值是以系统阻抗基值为基准的基值阻抗为 ( Z_{base} \frac{V_{dc}^2}{S} \frac{200000^2}{100 \times 10^6} 400Ω )。取0.1pu电抗为40Ω对应工频下的电感量为[ L \frac{40}{2 \times \pi \times 50} \approx 0.127H ]也就是说每个桥臂电感取120mH左右很合理。这个电感不能太小太小了二倍频环流压不住电容电压波动会变得很难看也不能太大太大了电压降落明显会影响功率传输能力。2.2 主电路拓扑的建模细节子模块封装与桥臂搭建在Simulink里搭MMC我习惯先从单个子模块开始封装而不是直接复制几十个裸电路。半桥子模块包含两个IGBT、两个反并联二极管和一个电容这没多少技术含量但封装成Subsystem之后参数对话框可以露出“电容初始电压”“开关器件编号”等接口后续批量初始化就很方便。子模块封装好之后每个桥臂就是N个子模块串联再串一个桥臂电感。三相一共6个桥臂。这里有一个特别容易被坑的点子模块的正负方向必须统一电容电压参考方向、电流流入方向如果搞反均压算法会表现得很诡异有时候甚至越均压越发散。我的做法是在封装的输出端口就直接把电容电压引出去方便后面写均压逻辑时统一读取。2.3 调制与均压策略直接决定波形质量MMC高压大容量的应用场景里载波移相PWMCPS-SPWM和最近电平逼近NLM是两种主流调制方式。做仿真选哪种取决于模块数。模块数小于等于20CPS-SPWM实现简单每个子模块都有一颗相位错开的三角载波谐波对消效果很好模块数大于50NLM的优势就出来了因为它只在电平跳变发生时才动作开关频率天然低而且不需要高频载波。我建议刚上手的人先试CPS-SPWM因为Simulink里自带的PWM生成器就能实现不容易出错等项目逻辑全部通了再改成NLM来验证“低开关频率下也能跑”。NLM的难点在于那一套电容电压排序算法——要实时采集所有子模块电容电压根据桥臂电流方向决定投入电压最低的M个模块还是电压最高的M个模块并且要尽量避免不必要的开关动作来压低开关频率。这块逻辑我通常用MATLAB Function写在迭代循环里注意别把排序放在连续积分环节里不然每步都做全排序仿真会慢得让人崩溃。2.4 环流抑制二倍频分量必须处理MMC还有一个绕不开的问题就是桥臂间环流。三相桥臂之间因为没有变压器隔离会产生二倍频负序性质的环流这个环流只在三个相单元之间流动不去负载但会增加器件电流应力和损耗。最简单的处理思路是在控制里加一个“环流抑制器”把三相桥臂电流之和除以3得到环流然后变换到二倍频负序旋转坐标系下用PI控制器把d、q轴的二倍频分量都压到0输出的补偿量叠加到调制波上。这一个环节看起来简单但参数很敏感。我第一次调这个环流抑制器时比例系数给得太大波形直接高频振荡。后来按带宽法整定内环带宽选300Hz左右比例系数Kp取桥臂电感的感抗再乘上带宽对应的增益积分时间常数按桥臂等效电阻和电感比值来估算然后微调才稳定下来。仿真波形里如果桥臂电流存在明显的正弦二倍频包络大概率就是环流抑制没调好优先检查坐标变换的相序和角度对不对。3. 实操过程与核心环节实现3.1 从单站到双端搭建的顺序问题搭建双端MMC-HVDC模型我强烈建议分阶段推进不要一口气把两端全画完再调试那样出了问题根本不知道怪谁。我的顺序是三步走第一步先搭单端MMC带一个RL负载。这个阶段重点验证子模块均压、调制波形和电容电压波动是否正常。负载电阻选得和额定功率匹配输出功率和直流电压一起升起来看每个电容电压是不是稳定在2kV附近波动波动幅度不超过±5%就算合格。第二步把单端改成整流站接理想直流电压源验证功率外送能力。这个时候直流侧不再用电阻负载而是接一个可控直流源让换流器自己建立直流母线看交流电流波形、无功控制是否正常。第三步把两座换流站通过直流电缆模型连起来。这个时候整流侧投定直流电压控制逆变侧投定有功控制。一开始把逆变侧功率指令设得小一点比如10MW等两边都稳定了再慢慢加到额定值。这个“斜坡升功率”的思路能避免启动冲击把直流电压打飞。3.2 控制器参数整定外环慢、内环快MMC的控制系统通常分三层系统级控制定功率、定直流电压、换流器级控制电流内环、电压外环、阀级控制调制与均压。在Simulink里要做的是把这三层写清楚尤其是PI参数的配合。电流内环是整个控制回路“最快”的一环。对于100MW、±100kV的算例桥臂电感0.127H等效电阻很小内环PI我经常按希望带宽300Hz来设计比例系数Kp取电感乘以角频率大约是 ( 0.127 \times 2\pi \times 300 \approx 239 )积分系数则让内环的零点和电机电气时间常数对消。这样整出来内环动态响应能跟得上指令变化不至于在系统级扰动下沦为瓶颈。电压外环则要设计得“慢”很多一般带宽取内环的1/5到1/10。原因是外环的作用是稳住直流电压不需要、也不应该响应得跟电流一样快否则系统容易发生振荡两个换流站互相较劲。直流电压外环的PI参数我通常先给一个较小的积分系数观察直流电压在功率阶跃后的恢复时间再逐步加大积分作用直到恢复时间达到预期一般0.1秒左右。这里注意不要一上来就追求“快”MMC控制本质上是一个多时间尺度协同的问题慢变量和快变量之间必须有足够的时间尺度分离。3.3 启动预充电与解锁逻辑很多人第一次运行MMC-HVDC模型解锁瞬间就看到电流尖峰、电压跳变然后仿真直接发散。原因很简单电容没有初始电压你一解锁交流电源要瞬间给一大串电容充电电流当然会爆。我的做法是在模型里加一个“预充电”阶段解锁之前让换流器闭锁子模块全部旁路让交流电源通过二极管不控整流给电容充电等所有电容电压充到接近额定值再给控制系统发解锁信号并且启用斜坡软启动。这样子模块解锁时不至于出现abrupt冲击。Simulink里实现控制状态切换可以用一个仿真时钟作为判断条件或者用Stateflow写一个简单状态机包含“预充电-解锁-功率爬坡-正常运行”几个阶段。这个状态机不复杂但能避免90%的启动发散问题。3.4 关键波形怎么判断对不对仿真跑完之后最重要的不是截图而是判断波形是否“物理正确”。我通常固定看四组波形第一交流侧三相电流。稳态下应该是对称三相正弦波谐波小电流幅值跟功率指令一致。如果电流里有明显低频振荡或者不对称毛刺优先怀疑均压算法或者载波相位问题。第二直流电压。双端模型正常运行时整流侧控制的直流电压应该平稳波动不超过2%逆变侧直流电压跟随整流侧两条曲线基本重合。如果直流电压有持续的二倍频纹波大概率是环流抑制没有完全压住。第三子模块电容电压。取任意一个桥臂的N个电容电压叠加到同一个图里稳态时应该都围绕2kV附近波动彼此间的分散度控制在5%以内。如果出现明显的“分叉”现象那就是均压算法有问题。第四桥臂电流。桥臂电流由交流分量加上直流分量加上二倍频环流组成。如果二倍频分量小于基波分量的10%说明环流抑制效果到位如果二倍频分量大得离谱比如达到基波的20%以上需要检查环流控制环节的坐标变换是否正确。4. 常见问题与排查技巧实录4.1 仿真速度慢到无法接受怎么办MMC模型仿真慢根本原因就是“开关器件太多”。我调试阶段常用的优化方法有四个按性价比排序一是改用离散化模型这一步通常能提速3到5倍。二是把满载模型缩放容量比如先用10MW模型做验证参数换算成标幺值控制算法跑通后再还原成100MW。三是在模型浏览器里关掉所有示波器的“记录数据到工作区”选项只记录必要的变量不然内存会被波形数据占满。四是使用多速率更新均压逻辑和调制环节的采样周期可以独立设置让阀级控制保持高速系统级控制降低频率。如果你的模型模块数超过两百个还坚持全开关器件仿真那再怎么优化也快不到哪里去。这时候就应该考虑用数学等效模型把整个桥臂等效成一个可控电压源加一条能量平衡方程仿真速度能提升一个数量级。4.2 启动发散从哪一步开始排查遇到模型发散第一反应不要改PI参数而是先“拆环节”。我的排查顺序是先让整个换流器运行在开环状态用固定的正弦调制波驱动看电容电压能不能建立起来开环都跑不稳问题在主电路或均压算法矛盾在控制器上。第二步才是把闭环控制器逐环投入先投电流内环稳定后再投电压外环。很多人一上来就全投发散以后完全不知道是哪个环节的问题浪费时间。另外Simulink里模型初值也很关键。如果电容初始电压设置和额定工作点差得太远即使有预充电阶段解锁瞬间依然会产生很大的暂态冲击。我习惯在子模块封装里直接把电容初始电压写成仿真开始时的额定值比如算例里的2kV而不是让状态空间求解器自己从0猜上去。这个操作对被控对象模型的收敛性有奇效。4.3 常见问题速查表现象可能原因处理思路解锁瞬间电流尖峰大电容未预充电或初始电压设置错误增加预充电阶段设置额定初始电压直流电压持续二倍频纹波环流抑制器未投入或参数不当检查二倍频坐标变换角度重调PI电容电压分散度大均压排序算法周期过长或方向错误缩短均压周期检查电流方向定义交流电流低频振荡电压外环带宽过高或与内环耦合降低外环响应速度增加时间尺度分离仿真速率极低连续仿真或全开关模型粒度过细切换离散仿真、使用等效模型、降低采样速率功率反送时直流电压崩溃两端控制角色没有切换设计控制模式切换逻辑重新分配定电压站和定功率站功能这个表格基本覆盖了我从搭模型到现在遇到的高频问题。多数问题不是“知识不会”而是建模时的细节没对齐尤其是电流方向、坐标变换角度、模块封装方向这几类一旦出错波形怎么看怎么别扭但常常不是控制器的锅。最后分享一点经验搭这套MMC-HVDC模型我花时间最长的地方不是主电路而是控制器的“时间尺度分离”和环流抑制参数整定。很多人做完一遍就觉得万事大吉其实模型调优的空间很大——你可以试着把整流侧改成定交流电压控制模拟无源网络供电场景也可以设置直流线路单极接地故障观察两端换流站的故障响应和限流能力还可以把NLM均压算法中的排序策略从冒泡排序换成快速排序对比不同算法对开关频率和电容电压分散度的影响。我个人实际跑下来的体会是MMC-HVDC仿真最大的门槛不是“会搭”而是“会调”。参数从哪来、控制器如何配合、波形怎样算正常这三件事想明白了这套模型才算真正掌握。你接下来做任何跟柔直相关的课题不管是风电并网、多端直流输电还是故障穿越策略研究都能从这套基础模型上快速扩展出去。