十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MMC柔性直流输电Simulink仿真:从模型搭建到调试全攻略

MMC柔性直流输电Simulink仿真:从模型搭建到调试全攻略 MMC仿真我前前后后折腾了快两个学期从最开始连子模块的电容怎么预充电都搞不明白到后来能稳定跑通两端双端系统的功率反转这中间的坑基本都踩了个遍。如果你正在做或者正准备做MMC柔性直流输电的Simulink仿真这篇内容应该能帮你少走不少弯路。不仅包含模型搭建的具体操作思路还涉及参数的整定原则、仿真发散的处理办法、以及毕业设计报告和文献整理的经验力求把完整流程说清楚。1. MMC柔性直流输电系统的核心结构与建模思路1.1 MMC到底在干什么MMC全称是Modular Multilevel Converter模块化多电平换流器。它在柔性直流输电系统里的角色简单讲就是一侧把交流电整成直流电送出去另一侧把直流电逆变成交流电受进来功率可以双向流动而且能独立控制有功和无功这是传统电网换相换流器很难做到的。之所以叫“模块化”是因为它不像传统两电平或三电平换流器那样靠功率器件直接串联来承受高电压而是通过几十上百个完全相同的子模块SM堆叠成桥臂来实现的。每个SM本质上就是个半桥结构由一个电容和两个IGBT及反并联二极管构成。控制系统决定电容是被切入电路还是被旁路从而叠加出阶梯波来逼近正弦波。子模块数越多电平数越多谐波含量就越低波形质量越好。在实际工程里一个桥臂可能有200多个子模块仿真里为了速度和复杂性平衡一般取4到20个不等。这个选择直接决定了仿真时间、波形质量以及你是否能复现出“电容均压”和“环流抑制”这些经典问题。这里有一个关键认知MMC的电容电压平衡非常依赖排序算法这是它的“灵魂”之一。每个SM电容电压各不相同在投入和切出的瞬间必须根据方向选择合适的子模块来投切否则电容电压会飘得没法看波形也一定发散。这部分在Simulink里实现时要特别注意很多人上来就栽在这儿。1.2 两端柔性直流系统的整体架构所谓“两端”就是整流端和逆变端各接一台MMC换流器中间通过直流线路通常是电缆或架空线仿真里用集中参数或分布参数线路模型把它们连起来。整流端控制直流电压和吸收交流有功逆变端控制有功传输或直流电流两端都支持向交流系统提供无功支撑。从结构上来讲两端系统比单端系统麻烦的地方在于启动逻辑和功率协调。单端只要站内自己就能启动双端必须有先后的配合一般策略是整流站先以定直流电压控制启动给直流母线建立电压然后逆变站再以定有功功率控制启动开始传输功率。顺序乱了系统就会被过电流或过电压打崩。交流侧还需要连接变压器和等效交流电源。变压器通常需要采用Yd接法来隔离零序分量容量和短路阻抗的取值直接影响系统启动时的冲击电流和稳态波形质量。这块在仿真里容易忽略很多初学的人直接用理想电源接MMC导致交流侧电流波形奇怪还找不到原因。1.3 仿真选型为什么要用Simulink做电力电子和电力系统仿真可选的工具不少PSCAD、MATLAB/Simulink、PLECS、甚至RTDS这种实时仿真平台。PSCAD在传统高压直流仿真里是行业标准但对于毕业设计和想深入理解控制算法的同学来说Simulink有它不可替代的优势。Simulink的图形化建模方式对状态机、控制环路和调制策略的表达非常直接。你可以把功率电路、控制电路、调制模块、均压算法分开搭建每一个环节都可以单独调试可视化程度很高。更重要的是Simulink的MATLAB脚本接口让你可以批量跑参数扫描这对毕业设计里“某某参数对系统性能影响”这种课题非常方便。另外Simulink里既有基于Simscape Electrical的物理模型也有基于数学等式的平均模型。如果你只是为了验证控制算法平均模型能快几个数量级。如果你要看到真实的IGBT开关过程、电容充放电细节、谐波分布那就得用详细开关模型。这两者的选择直接决定你仿真能不能在可接受时间内跑完这个权衡会在后面的实操部分详细展开。2. 核心模块模型搭建从SM电容到桥臂控制2.1 SM子模块模型最简单的“开关电容”在Simulink里搭MMC最底层的就是子模块模型。子模块的详细模型可以基于Simscape Electrical里的IGBT和二极管来搭也可以使用理想的受控电压源和开关逻辑来简化前者更真实后者更快速。对于刚起步的人我的建议是先搭理想开关模型把整体逻辑跑通再考虑要不要换更精细的器件模型。子模块的两种状态分别是“投入”和“切除”。投入时电容被连接到桥臂电流通路中切除时电容被旁路。如果你没有用自带IGBT模型而是用受控电压源表示电容和理想开关表示IGBT那就需要在每个仿真步长内判断开关状态并计算电容电压的变化。这里简单实现可以用一个积分器对桥臂电流经过电容的部分做积分再加上初始电压。关键在于这个状态切换必须在正确的电流方向和电容电压条件下进行否则就会出现不收敛或电压跳变。一个桥臂的子模块数量N每个子模块的电容值C以及桥臂电抗L这三个参数可以说是MMC仿真的“基本面”。电容值太大会导致电压波动小但动态响应慢太小则电压波动超标严重时会影响开关管应力。桥臂电抗的作用是抑制环流和限制故障电流上升率取太小抑制不住环流取太大则系统失去快速性还可能引发控制震荡。2.2 载波移相与最近电平逼近MMC的调制策略很多最常用的是载波移相SPWMCPS-SPWM和最近电平逼近NLM。CPS-SPWM适合子模块数不多的情况每个子模块的载波相位错开一个固定角度输出等效开关频率高波形质量好。NLM则适合子模块数很多的情况直接根据参考电压计算出应该投入几个子模块计算量小但电平数量少的时候谐波会比较明显。对于毕业设计我强烈建议从CPS-SPWM入手。因为它需要你理解载波移相角度的概念360°/N还方便你观察每个子模块电容电压的波动情况。同时CPS-SPWM生成的触发脉冲比较规律方便后面接入均压控制。NLM实现起来相对更简单一些大概是N_on round(v_ref / V_c_nom)然后根据桥臂电流方向决定给电容电压最低还是最高的子模块充电或者放电。但这需要先进的排序算法做支撑反而不如CPS-SPWM直观。我在自己做的时候用了CPS-SPWM排序均压的组合效果很好子模块电容电压波动控制在5%以内。2.3 环流抑制必须要做的一个环节MMC相间环流这个问题属于“不做不知道一跑就跳脚”的那种。因为三个相单元并联在直流母线上而各相桥臂电压不可能完全一致这就会在三个相单元内部产生二倍频环流。这个环流不经过交流侧会在桥臂和子模块里循环流动导致桥臂电流畸变、损耗增加、电容电压波动加剧。环流抑制最常见的做法是加入一个二倍频负序旋转坐标系下的PI控制器也即所谓的“二倍频环流抑制器CCSC”。这个控制器的输入是三相桥臂电流经过坐标变换提取出二倍频分量然后用PI调节器输出一个修正电压叠加到调制波上。在Simulink里实现这个并不复杂关键是坐标变换的频率必须严格锁定在2倍基频。实际调试时你会发现比例和积分参数如果选得不好非但压不住环流反而可能引发振荡。所以一般建议先把比例系数从小到大慢慢调观察桥臂电流的谐波含量等环流明显减小后再微调积分系数。2.4 控制策略功率外环电流内环两端MMC系统的核心控制策略基本都采用双闭环结构外环控制功率或直流电压加内环电流控制。整流侧外环给定直流电压参考值和无功功率参考值逆变侧外环给定有功功率参考值和无功功率参考值。内环则都采用电流解耦控制输出电压参考值送调制环节。电流内环的PI参数整定需要结合桥臂电感和等效电阻来算。从工程经验上讲电流内环带宽一般取基频的5到10倍比例系数Ki可以粗略按Ki L * ω_bandwidth积分系数Kp Ki * R/L来试算然后再微调。实际在Simulink里你可以直接采用试凑法但得知道试凑的起点怎么来不然就是在碰运气。此外还要注意坐标变换的theta角来自锁相环PLL。PLL的设计也很关键PLL调的太快容易在启动阶段出现震荡太慢则会导致相位跟踪滞后影响功率控制精度。我用的PLL参数是根据交流系统的强/弱程度做了折中强系统下可以适当加快跟踪速度弱系统下就得特别谨慎。3. 完整仿真系统的搭建流程与调试要点3.1 从方案到模型搭建前的准备工作任何仿真项目动手打开Simulink之前最好先把整体框架画一遍。我个人的习惯是先用Visio或直接手画一个结构框图把以下内容明确出来交流电源和变压器的参数如线电压有效值、频率、短路阻抗百分比换流器的桥臂参数包括子模块数、电容值、桥臂电抗直流线路是采用集中参数模型还是分布参数线路模型线路电阻、电感、电容值控制器参数、PLL参数、调制方式、载波频率仿真时长、求解器类型、步长设定。这个准备工作做得好能省下大量的调试时间。很多同学上来就乱搭模型里到处都是警告和代数环错误根本分不清是哪里的问题。在Simulink里搭建时建议采用分模块建模的方式。把功率电路模块、调制模块、均压模块、控制器模块分开放置。每一级模块都有明确的输入输出接口便于独立调试。我习惯用Bus对象来统一管理信号这样模型层次清晰调试的时候用Scope查看信号也不容易搞混。3.2 仿真模型参数计算以一个两端MMC-HVDC系统的典型参数为例。假设交流系统线电压有效值U_s110kV频率f50Hz直流母线电压U_dc±100kV即200kV极间电压额定功率P200MW。每个桥臂子模块数取N10那么每个子模块的额定电容电压约为U_dc/N20kV子模块电容取C2mF左右。桥臂电抗L一般取0.1pu到0.15pu折合到欧姆值需要根据系统基准值计算。具体例子基准功率S_base200MVA基准电压U_base200kV直流侧那么基准阻抗Z_baseU_base²/S_base200k²/200M200Ω。桥臂电抗为0.1pu就是20Ω再折算50Hz下的电感值L20/(2π×50)0.0637H大约63.7mH。这些数值是仿真的基础但不是说算完就完事。实际调试中我还对这个参数做了多次调整。尤其是在子模块电容的取值上如果电容取得太小电容电压波动会变得非常大可能超过10%这会直接导致波形畸变。如果取得太大动态响应又变慢。最后我取2mF既满足了电压波动约束又没有让仿真时间明显拉长。3.3 从空载到负载如何一步一步启动这张图是很多初学者根本没想到的问题MMC不是一上来就能带满载的。你直接把功率参考值设置为200MW然后按运行大概率看到“Simulation stopped due to an error”或者波形直接发散。我的启停顺序是这样的先把两端换流器的调制模块旁路掉所有子模块处于闭锁状态也就是上下管都关断给交流系统上电交流电压通过二极管不控整流的方式给所有SM电容充电。你会看到每个SM电容电压慢慢上升到接近额定值。这个阶段叫“不控预充电”等电容电压稳定后解除闭锁开始触发脉冲。此时先从开环控制开始给一个较小的调制比让输出建立起来等直流电压建立并稳定后再把控制器的外环切换为闭环控制逐步把功率参考值升到目标值。如果跳过了第2、3步直接闭锁解除就上闭环系统基本必崩。因为控制器视角里电容电压和电流状态都是异常的PI控制器会产生一个极大的初始控制量瞬间把调制波推入饱和区然后系统振荡发散。检查系统稳定性的方法在常数模块中给有功功率参考值设置一个阶跃变化比如从0到0.5pu去观察直流电压和功率响应的动态过程。正常情况应该是有超调但能回到稳态的。如果发散优先检查PI参数和PLL的相位。3.4 批量参数扫描与结果记录毕业设计通常需要分析“参数对系统性能的影响”比如考虑子模块电容值、桥臂电抗、控制参数对波形质量和稳定性的影响。这时候手动一组一组仿真再一个个记录数据效率低到让人崩溃。建议写一个MATLAB脚本利用Simulink的sim命令实现批量仿真% 参数扫描示例 C_candidates [1.5e-3, 2e-3, 2.5e-3]; results struct(); for i 1:length(C_candidates) C_val C_candidates(i); % 设置模型参数 set_param(MMC_TwoTerminal/SM_Capacitance, Value, num2str(C_val)); % 运行仿真 simOut sim(MMC_TwoTerminal, StopTime, 2); % 提取关心变量 results(i).C C_val; results(i).Vdc simOut.vdc(end); results(i).THD simOut.thd; end % 绘制对比图 figure; plot([results.C], [results.THD], -o); xlabel(Capacitance (F)); ylabel(THD (%));这样跑一轮下来所有结果都能自动保存并绘图。注意如果模型参数比较多仿真数据量很大建议在Simulink里开启快速重启功能sim配合set_param批量运行时能节约大量重复初始化时间。3.5 结果波形的观察与导出仿真结果需要用Scope观察但Scope里的波形要放到报告里肯定不能直接截图最好是要么把数据存到Workspace要么用To Workspace模块。我的习惯是全部用To Workspace保存格式选Timeseries这样可以在MATLAB脚本里统一处理。例如要绘制直流电压和三相电流波形% 假设已经定义好变量 t, vdc, ia figure; subplot(2,1,1); plot(t, vdc/1e3, LineWidth, 1.5); ylabel(Vdc (kV)); grid on; subplot(2,1,2); plot(t, ia, LineWidth, 1.2); ylabel(ia (kA)); xlabel(Time (s)); grid on;导出图的时候建议把字体大小、线条粗细、图例都设置好直接保存为矢量图如PDF或SVG格式。4. 仿真发散、波形畸变等常见问题的排查方案4.1 仿真发散先查求解器再查控制参数仿真发散是MMC仿真里最让人崩溃的问题之一。发散原因多种多样但排查顺序是有章法的。第一步先检查求解器设置。Simulink默认的Solver是变步长ode45这种求解器对电力电子这种有高频开关动作的系统往往不太友好。开关瞬间的变化率极大变步长求解器会反复缩小步长最后可能报出“Failed to solve...步长降到最小值”之类的错误。处理办法是改用定步长求解器如ode3或ode4步长设为开关频率对应的1/100甚至更小。举个例子如果载波频率是2kHz步长至少取1e-6秒不然开关脉冲根本就不能被精确采样。第二步检查是否有代数环。如果模型中出现未经延时的直接反馈回路Simulink会强制使用代数环求解器很容易发散。处理方法是在反馈路径上加入一个Memory模块或者把控制器中的直通路径用Rate Limiter做一下约束。第三步检查控制参数。如果求解器没问题是闭环控制导致的发散那大概率是PI参数取得过大导致的振荡发散。先确认调制波是否进入饱和区方法是在调制模块之前加一个Scope监视调制比。如果调制比一直顶在1以上控制器输出已经饱和肯定是参数有问题或者外环给定值不可达。4.2 波形畸变电容电压波动超标与谐波超标如果是波形畸变而不是完全发散优先检查电容电压波动。给每个SM电容电压加Scope观察电压波动范围是否超过额定值的±5%。如果超过10%基本认定电容取值偏小或者均压算法没有生效。均压算法失效最常见的表现是电容电压出现“分叉”一部分电容电压偏高另一部分偏低且不收敛。这种情况几乎可以断定是排序方向搞反了。判断充电还是放电核心看桥臂电流的方向。电流流入电容为正电容充电此时应该优先投入电压低的电容电压高的优先切除。反之电流流出电容电容放电电压高的优先投入。这个规则在排序代码里写反就是灾难。谐波超标的问题先看载波频率和调制方式。如果用的是CPS-SPWM载波频率太低会导致输出电流谐波大。如果用的是NLM但子模块数太少输出波形台阶太大谐波肯定压不下来。解决办法要么增加子模块数要么提高载波频率二选一。注意子模块数增加会急剧增加仿真时长这里要用上一节提到的平均模型或者Simulink里的离散化等效方法做提速。4.3 仿真特别慢你可能需要平均模型详细开关模型的MMC仿真速度慢是出了名的。以10个子模块每桥臂、6桥臂共60个SM为例每个SM里又有电容、IGBT、二极管整个系统在Simulink里的状态变量可能有几百个。使用变步长求解器1秒的仿真时间可能要在高性能电脑上跑几个小时。解决方案往往是采用平均模型。平均模型的基本思路是忽略IGBT的开关过程只考虑占空比对电容电压和桥臂电压的影响。以受控电压源和受控电流源替代每个桥臂的SM组这样状态变量大幅减少仿真速度能提高一个数量级以上。代价是你看不到开关级别的细节同时对调制死区、器件损耗无法建模。如果你想在毕业设计里既保证速度又能展示波形效果一个折中方案是主电路用详细模型但把每个SM里的IGBT换成理想开关二极管全部短路电容参数保留。这样既能看到电容充放电的节奏又能躲开Simscape物理模型里IGBT的繁琐计算。4.4 常见问题速查表现象可能原因排查方法仿真直接报错停止求解器设置不当改定步长降低步长电容电压分叉均压排序方向错检查桥臂电流方向与投入逻辑直流电压建立不起来启动顺序不对先不控预充电再闭锁解锁直流电流振荡控制器PI参数不当减小比例系数微调积分系数环流特别大未加环流抑制器加入二倍频环流抑制器系统能跑但速度极慢SM数量多且用物理模型改用理想开关或平均模型Scope里波形毛刺极高采样步长太大减小步长或提高Scope采样率功率阶跃响应发散外环带宽超过内环降低外环PI参数4.5 其他调试技巧还有几个小技巧是跑了无数遍之后总结出来的。其中一个是把仿真数据记录下来做离线分析。好多问题在Scope上肉眼很难看出来但要是在离线数据里做FFT分析问题就一目了然。再就是给模型添加“软启动”。软启动的思想很简单就是在控制器接入之前把调制比从零开始一点点增大而不是直接跳到目标值。这能有效避免启动瞬间的过流。最后就是做好模块封装。把控制部分的PI参数、PLL参数、调制参数、桥臂参数都做成mask变量这样批量扫描参数的时候方便很多。尤其是做毕业设计导师会反复让你试不同参数封装成mask之后改参数就是双击一个框的事再也不用满模型找常量块。5. 毕业设计报告写作与文献整理的实战经验5.1 报告结构怎么搭很多同学模型做出来到了写设计报告阶段就蔫了。实际上毕业设计/技术报告是有套路的关键是逻辑链条要清晰要让老师看到你的工作量和技术深度。我推荐的报告结构是项目背景与意义为什么要做MMC-HVDC仿真应用场景在哪里MMC基础原理介绍把SM结构、桥臂结构、调制原理讲清楚配图不能少控制策略设计外环、内环、PLL、环流抑制、均压算法系统参数设计与建模完整参数表格、模型模块说明仿真结果与分析启动过程、稳态波形、动态响应、参数影响分析总结与展望。这些章节里的配图除了直接用Simulink截图还可以自己用MATLAB画一些说明图比如控制框图、开关状态图。注意报告文字必须与仿真结果紧密结合不能模型一个图、报告文字完全重写一套那样看起来非常不专业。5.2 文献资料怎么找这一步适合在模型搭建之前就做但很多人是模型做完了才补导致报告里的参考文献写得非常空洞。MMC这个领域的关键文献其实论文和知名期刊上已经积累了很多比如德国学者R. Marquardt团队的基础文章在国内的高电压技术、电力系统自动化这些期刊上也经常出现。如果你英文还行搜索时用“Modular Multilevel Converter HVDC simulation”或“MMC-HVDC control strategy”这类关键词能捕捉到不少好材料。如果英文一般直接在知网搜“MMC-HVDC”、“模块化多电平换流器 仿真”也是可以的硕士论文里经常有非常详尽的理论推导和仿真。我个人的建议是文献不必贪多精读5到10篇是核心泛读20到30篇足够了。核心文献一定要细读其控制策略和参数设计部分能复用的直接参考。写综述的时候把文献按“拓扑结构怎么发展、控制策略怎么演进、环流抑制怎么提出”分类来写比单纯按时间顺序罗列要好得多。5.3 仿真结果转化为报告图表最后一步也是实操中最重要的一步。表达的时候一定要分稳态和动态两部分。稳态部分重点展示直流电压、直流电流、交流侧三相电流波形以及对应的谐波分析可以加FFT分析图。动态部分用功率阶跃来展示系统响应给出响应时间和超调量。图表质量决定印象分。我的做法是波形图背景白色加网格但不加太密纵轴物理量标注清楚单位不要少不同曲线用不同颜色关键点用箭头或圆圈标注每个图下配简短说明指导读者该看什么参数扫描的结果用对比表格来呈现而不是贴好几页数据。例如电容取不同值时的THD对比可以做成表格这样老师在答辩时一眼就能看到你的工作量和思考深度。写在最后做MMC仿真这件事最大的体会就是“不能求快”。你越想快点把模型跑出来越容易在参数整定和启动顺序上栽跟头。不如按部就班把不控预充电跑通再把闭环控制一点一点加上去每一步都验证了再往前走。整个流程走完你对MMC的理解会比只看教材要深得多而且“从零搭一个复杂系统再不断调试”的这个过程本身比最后的波形更有收获。如果后面有时间还可以在这个模型上继续做直流故障分析、环流抑制策略的改进甚至换成三相三线或四端网格结构越玩越有意思。
返回列表