
最近把MMC整流器的仿真从两电平换成了模块化多电平折腾了差不多两周把双闭环载波移相调制这一套完整跑通了。说实话MMC整流器在SIMULINK里搭模型不难难的是把控制参数、调制策略、均衡机制放在一起还能稳定运行。这篇就把整个搭建过程、设计取舍和踩过的坑都记录下来给正在做MMC仿真的朋友一条能直接复现的路线。我默认看这篇内容的人已经对两电平整流器有所了解但如果只接触过SVPWM、滞环控制这类常规方案也没关系后面会把每个模块的设计逻辑拆开讲。MMC整流器最大的特点是模块化——每相桥臂由多个子模块串联通过叠加子模块输出电压来合成高压波形。这也意味着它天然适合中高压场合比两电平的电压等级受限问题有本质区别。1. 项目背景与整体思路拆解1.1 为什么选MMC整流器当初考虑这个方向主要有两个现实问题。第一个是电压等级两电平PWM整流器在10kV以上的场合非常尴尬开关器件串联均压、du/dt抑制、变压器绝缘设计都相当麻烦。第二个是电能质量模块化多电平的等效开关频率远高于单个器件的开关频率波形谐波含量更小滤波器可以做得更小。MMC整流器由三相六桥臂组成每个桥臂由N个子模块Sub-Module简称SM和桥臂电抗器L串联构成。子模块内部一般是半桥结构由一个直流电容和两个IGBT反并联续流二极管组成。通过控制IGBT的开关状态每个子模块可以输出电容电压投入或零电压切除。多个子模块叠加后桥臂端口就能输出多电平阶梯波谐波性能天然优于两电平。在控制层面MMC整流器需要完成两件事一是稳定直流母线电压二是控制网侧电流。这两件事我用经典的双闭环结构解决——电压外环负责维持直流母线电压电流内环负责跟踪交流电流并实现单位功率因数。1.2 调制与均衡方案的选型调制方案的选择是这次项目里最值得琢磨的部分。MMC的调制方式主要有最近电平逼近NLM、载波移相调制CPS-PWM、空间矢量调制SVM等。考虑到仿真精度和参数调整的直观性我最终选了载波移相调制。载波移相的核心思想并不复杂每个子模块对应一路频率相同、相位均匀错开的三角载波所有子模块共用同一个正弦调制波通过比较器产生门极脉冲。对于桥臂内有N个子模块的MMC载波相位依次错开2π/N。这种方式的好处是各子模块开关频率一致、导通损耗均衡且在低开关频率下依然能获得较高的等效开关频率。但载波移相本身不会保证电容电压均衡需要额外叠加均衡控制。我用的是常见的排序法——每个控制周期内对桥臂子模块电容电压排序根据电流方向决定投入哪些电容。这个策略实现简单、计算量可控在SIMULINK中很好落地。2. MMC整流器的数学基础与主电路建模2.1 子模块工作原理与电容电压要理解MMC的控制逻辑先得把子模块的能量交换看清楚。半桥子模块有3种工作状态投入SM输出电压为电容电压Vc、切除SM输出电压为0、闭锁两个IGBT都不导通。整流器正常运行时一般只用投入和切除两种闭锁只在启动预充电或故障时采用。每个子模块电容要承受桥臂电流的充放电。当桥臂电流方向为正且子模块投入时电容被充电电流方向为负且子模块投入时电容放电电流与子模块状态不匹配时电容电压自然维持。这就要求控制算法必须在改变子模块投入状态时考虑当前桥臂电流的方向否则会不断给某个电容充电或放电导致电压发散。电容容值的选择直接关系到直流电压纹波大小。工程上常用能量法估算C (2N × S) / (3 × m × Uc² × k × ω)其中S为额定容量m为调制度Uc为子模块额定电容电压k为电压纹波系数ω为基波角频率。这个公式算出来的是保证额定运行下电压波动在允许范围内的最小容值。我做仿真时取了安全裕量容值比计算结果大约放大20%。2.2 桥臂电流的分解桥臂电流由交流侧电流、直流侧电流和二倍频环流三部分叠加。如果只看基波分量上桥臂电流和下桥臂电流的关系是i_p ic / 2 i_ac / 2 i_n ic / 2 - i_ac / 2其中ic是直流侧电流i_ac是交流侧电流。由于整流器需要从交流侧吸收能量后送到直流侧上下桥臂电流方向相反但叠加的直流分量方向一致。桥臂电流中的二倍频环流是MMC特有的问题。它只在三相桥臂之间流动不会出现在交流侧也不会出现在直流侧但会增加桥臂损耗和器件应力。我在电流内环里做了环流抑制方法是在调制波上叠加二倍频负序补偿分量。如果只做功能验证这个环节可以先简化但想贴近工程就值得认真处理。2.3 主电路参数计算参考主电路参数我以10kV/2MW的中压MMC整流器为仿真对象具体数值如下表参数数值说明交流侧线电压10kV50Hz桥臂子模块数N4每桥臂4个子模块子模块电容电压额定值2.5kV直流母线20kV子模块电容10mF按能量法估算并放大桥臂电抗器5mH兼作环流抑制直流母线电压20kV电压外环给定额定直流功率2MW负载侧电阻200欧N取4是精度和速度的平衡点。N太小波形阶梯只有5电平谐波效果不明显N太大仿真模型里元件数量成倍增加运行速度下降明显。建议前期先把N设为4验证控制逻辑稳定后再逐步增加。3. 双闭环控制策略与PI参数整定3.1 电压外环稳定直流母线电压外环的任务是维持直流母线电压等于给定值。它接收直流电压误差输出d轴电流参考值。为什么整流器的有功功率能用d轴电流控制这要从dq变换说起。把三相交流电压定向到d轴后d轴电流代表有功分量q轴电流代表无功分量。在单位功率因数控制下q轴电流参考值给定为0。直流母线电压的变化源于功率不平衡交流侧输入的功率高于负载消耗时多余的功率给电容充电直流电压上升反之电压下降。所以直流电压误差经过PI调节后恰好就是d轴电流需要的变化量。电压外环PI设计时要注意响应速度。它的带宽应远低于电流内环因为电压是电流的积分若外环调得太快容易引起直流电压和电流之间的振荡。实际调试中外环带宽取了内环的1/10左右。电压外环的PI参数初值可以用以下思路估算把直流电容等效为积分环节加入内环闭环等效的一阶惯性环节通过带宽法反推PI增益。我先按带宽50Hz计算再在仿真中微调。3.2 电流内环dq解耦与前馈电流内环工作在高频动态性能要求高。三相静止坐标系下的电流是交流量直接控制不利于做到无静差。把三相电流变换到dq旋转坐标系后d轴和q轴电流变成直流量PI控制就能实现零稳态误差。电机和整流器的区别在于整流器没有反电动势但PCC电压本身就是扰动源。dq坐标系下的电压方程为V_d L × di_d/dt R × i_d - ωL × i_q e_d V_q L × di_q/dt R × i_q ωL × i_d e_q其中e_d、e_q是PCC电压的dq分量。这里有个明显问题方程里存在-ωL×i_q和ωL×i_d的耦合项。如果PI控制器直接输出电压耦合项会导致d轴和q轴电流相互影响。解决办法是前馈解耦。把PI输出加上耦合补偿和电压前馈后d轴和q轴就变成了两个独立的一阶系统PI参数可以完全独立设计。实现上电流环PI输出的是调制电压参考的d、q分量再经过反Park变换得到三相调制波。这一步的输出质量直接决定载波移相调制的波形所以电流环计算周期要用较小步长我设置为仿真步长一致。3.3 PI参数整定的工程思路电流内环参数整定我习惯用带宽法。把电流环解耦后简化为一阶惯性系统开环传函近似为G(s) (Kp × s Ki) / (L × s²)零极点对消后令Kp/Ki L/R此时闭环系统变成典型一阶惯性环节带宽由Kp决定。设计带宽2000rad/s时Kp L × 2000 5mH × 2000 10Ki Kp × R/L。R取0.1欧时Ki 10 × 0.1 / 0.005 200。电压外环的带宽我取电流环的1/10即200rad/s左右。外环的Kp、Ki按同样的开环设计法得到初值后还要考虑直流电容的大小。电容越大电压惯性越大比例增益可以适当加大电容越小比例增益必须收住否则电压容易出现低频振荡。我实际调试时发现按公式算出的参数在仿真里往往偏激进了10%~20%原因在于仿真里的开关效应和数字延迟把相位裕度吃掉了。所以每次改参数后先看阶跃响应再逐步微调不要指望一步到位。4. 载波移相调制CPS-PWM原理与SIMULINK实现4.1 载波移相的基本原理载波移相调制Carrier Phase-Shifted PWM本质上是一种多电平PWM扩展策略。每个子模块拥有一路独立的三角载波所有子模块共用同一个正弦调制波。当调制波大于该载波时对应子模块输出电容电压反之输出零电压。桥臂内N个子模块的载波相位依次错开2π/N。为什么要这样移相用一个N4的例子说明4路三角载波相位分别在0°、90°、180°、270°那么任意时刻4个比较器的输出不会同时翻转桥臂总输出波形的等效频率提高到单个载波频率的4倍。这意味着每个IGBT可以工作在较低的开关频率比如500Hz~1kHz降低开关损耗而波形质量却等价于2kHz~4kHz开关频率的两电平变换器。对高压大功率整流器来说这是非常关键的优势。载波频率的选择也会影响谐波。载波频率越高谐波中心越远离基波滤波器体积越小但开关损耗同步上升。CPS-PWM的优点是等效开关频率是实际开关频率的整数倍谐波分布更集中配合LCL滤波器更容易滤除。4.2 电容电压均衡的控制逻辑载波移相本身不保证电容电压均衡。因为各个子模块的载波相位虽然不同但调制波比较产生的脉冲宽度并不完全等效尤其在不同开关周期内各子模块的投入时间存在差异会导致电容充放电不平衡。我采用的均衡策略是排序法加循环轮换。具体逻辑是在Modulation周期内采样桥臂内所有子模块电容电压根据当前桥臂电流方向判断电容应该充电还是放电若充电投入电压最低的N个按每时刻需要投入的子模块数量而定若放电投入电压最高的N个当同一桥臂内需要投入的子模块数恒定时排序结果直接在下一时刻决定哪些子模块保持投入或切除。排序法的核心代码不复杂在SIMULINK里用MATLAB Function或S-Function实现比较灵活。我用MATLAB Function写了一个轮询排序函数每步计算量在微秒级仿真中不会造成明显卡顿。均衡周期要与载波周期匹配。排序太频繁会增加开关动作次数排序太慢则电容电压纹波大。我的经验是每个载波周期排序一次也就是一个开关周期执行一次重排。这样既保证了均衡效果又避免了额外开关损耗。4.3 调制模块的SIMULINK搭建CPS-PWM模块在SIMULINK里建立不需要额外工具箱基础模块就能实现。每桥臂N4时我用以下结构搭建正弦调制波信号来自电流内环输出的三相调制电压四个三角载波生成器频率1kHz相位依次差90°。三角载波可以用Repeating Sequence模块生成周期为1/1000s峰值范围设为[-1, 1]每个子模块通道内用Compare To Constant或Relational Operator模块比较调制波与载波比较结果送入均衡逻辑均衡逻辑输出最终的门极脉冲。三角载波的生成有一点要注意Repeating Sequence的采样设置要变长为离散模式步长足够小才能还原三角波的线性度。我用固定步长1e-6时载波波形不光滑于是把步长改成了5e-7。载波频率越高对步长的要求越严格否则比较结果会出现毛刺。调制深度也要留好裕量。整流器输出调制波的幅值如果超过三角载波幅值就会发生过调制导致输出电压波形畸变、谐波突增。我通常在三角载波幅值归一化到1V限制调制波幅值不超过0.95防止误触发过调制。5. SIMULINK整体建模实操记录5.1 模型整体架构整个SIMULINK模型我拆成四个部分主电路、控制电路、调制与均衡、测量与保护。主电路部分用Simscape Electrical的元件库搭建交流电源、PCC电抗、六个桥臂、直流电容和负载电阻都在这一层。每个桥臂的子模块用Universal Bridge或直接用IGBT模块并联电容搭我选择了直接搭IGBT桥臂的方式便于自定义子模块电容参数。控制电路部分包含坐标变换、Park变换、电压电流采样、PI控制器等。测量信号从主电路引出后先经过滤波环节再进入控制回路避免开关纹波干扰PI运算。PCC电压锁相环用三相PLL模块锁相环带宽设置为50Hz基频的10倍左右动态响应够用且有抗扰能力。调制与均衡部分按第四节的结构搭建接收调制波后输出各子模块的脉冲。保护逻辑部分包括过压、过流和欠压保护这也建议保留调试时能快速定位异常。5.2 关键模块配置与参数下面列出几个重点模块的配置细节PLL锁相环输入PCC三相电压输出θ作为Park变换的角度基准。PLL模块的PI带宽需要适中过快会导致角度抖动过慢会有相位滞后。Vdc采样用Mean Value块对直流电压取平均值而不是用瞬时值。整流器直流侧含有开关纹波瞬时值直接做电压外环输入会造成控制量波动我实测未滤波时直流电压振荡达到±2%。电流采样在PCC电抗后方测量三相电流滤波时间常数设为载波周期的1/10。PI控制器在离散域实现采样时间设置为仿真步长输出限幅值设为调制波极限值。整流器主电路参数我沿用上表仿真中先将子模块电容电压初始化到额定值附近。这样避免了启动预充电过程对控制调参的干扰保证第一秒就能进入稳态完成校验。5.3 仿真步长与求解器选择MMC整流器仿真最大的性能瓶颈在模型刚性上。桥臂电感和子模块电容的时间常数差异大加上IGBT开关动作SIMULINK默认的变步长求解器会在开关时刻自动减小步长整体运行速度会变得非常慢。我用的是固定步长离散求解器步长设为5e-7秒。这个步长能保证1kHz载波的每个周期内有2000个采样点足够准确还原PWM波形同时也不至于让仿真时间过长。完整2秒仿真在普通台式机上跑了大约15分钟属于可接受范围。如果觉得速度慢可以考虑用MMC专有的简化模型比如把子模块开关替换为受控电压源加开关函数。这种建模方法在控制层面的结果和详细模型几乎一致但仿真速度能提升一个数量级。我用简化模型验证了控制策略再用详细模型做最终波形确认两种模型配合使用效率相对理想。6. 常见问题与排查技巧实录6.1 电容电压发散最常遇到的问题就是电容电压发散发散。现象是仿真开始后某几个子模块电容电压持续升高另一些持续降低最后触发过压保护停机。原因通常是两种一是排序算法没有结合电流方向导致某些电容被反复充电二是排序频率太低电容在两次排序之间积累了过多电荷偏差。检查时我把最终控制量里是否存在dq轴电流方向错误的问题也纳入了排查最后发现是PLL角度方向没有对齐导致有功电流的真实方向判断错误。把Park变换的角度方向修正后电压发散问题就消失了。6.2 启动冲击电流整流器启动瞬间直流侧电容近似短路若直接加电压冲击电流会远高于额定值。我的处理方式是先做预充电闭合交流接触器前接入限流电阻等直流电压充到额定值90%后再短接限流电阻随后投入双闭环控制。在SIMULINK里实现预充电有两种方案一个是给直流电容初始电压赋值绕过预充电过程另一个是把启动时分段开关搭进去模拟真实启动流程。做参数验证时建议用第一种做启动特性验证时再用第二种。6.3 PI参数无法稳定早期调试时电压外环和电流内环一起投系统根本稳不住直流电压持续振荡。根因是电压外环带宽太高和内环产生了频率耦合。把电压外环带宽降到电流内环的1/10以下后振荡一下就消失了。另一个容易忽略的是输出限幅。PI输出若不限幅启动瞬间的误差积分会越积越大控制器输出达到限幅后退出饱和很慢导致超调极大。我在每个PI控制器后面都加了Saturation限幅模块同时设置了防积分饱和的复位逻辑效果立竿见影。6.4 仿真实测运行过慢运行速度慢一般是载波频率和仿真步长设置不匹配导致的。载波频率1kHz步长设1e-6时理论上一个开关周期有1000个点但部分桥臂比较频繁动作导致仿真器在每个PWM边沿消耗计算资源。最有效的办法是降低载波频率到500Hz同时略微增加桥臂子模块数或改用等效开关模型。实测载波频率500Hz、N4的方案谐波性能与1kHz、N2的方案接近但仿真速度快了近三倍。最后分享一点点个人经验MMC整流器的控制调试不适合直接上全系统。我先在开环状态下调PLL和坐标变换确认角度准确、dq轴电流不串扰后再投电流内环电流内环能稳定跟踪后才投电压外环。每一步都单独验证即使出了问题也知道该查哪块。这个方法虽然多花了时间但整体推进效率反而更高。后续如果想继续深入可以在这个模型上扩展环流抑制、模块故障冗余和电网不平衡控制模型基础已经打好了。