搞储能变换器的人这两年一定绕不开MMC。不过先说明白如果你是在Windows的“运行”窗口里敲MMC却打不开管理单元或者正在研究NOR Flash和MMC存储卡的区别那咱们说的不是同一个MMC。在储能行业里MMC指的是模块化多电平变换器英文全称是Modular Multilevel Converter做储能的人更愿意叫它多电平储能变换器。这篇文章我想认真聊聊两级式MMC储能方案为什么用MMC两级式是什么意思SOC均衡到底怎么实现环流怎么抑制以及我在仿真和低压样机上实测总结出来的参数和调试经验。你可以直接把后面的仿真参数当成模板去复现也可以把它当排查手册来用。1. 项目整体设计与思路拆解1.1 多电平储能变换器的核心优势MMC不是新概念但在储能场景里最近两年特别火原因是它太适合大功率电池系统了。传统工业变频器里的两电平变流器单个IGBT要承受很高的直流母线电压大功率时要么器件等级往上买要么做器件串联又麻烦又贵。三电平还能凑合再想往上走就吃力了。MMC的思路很直接不跟器件较劲改用一堆低压子模块串起来共同扛电压。每个子模块里就是一个电容加两个开关电压等级做到一两百伏器件选择容易、成本低、驱动也简单。这套结构在柔性直流输电里已经跑了很多年搬到储能上天然具备模块化、可扩展、可冗余的优点。对于储能系统MMC还有一个普通变流器比不了的好处电池可以分散到每个子模块的直流侧而不是全部堆在一个大电池堆里。这样每一组电池的充放电电流可以独立管理SOC不一致的问题不用再靠庞大的BMS去硬扛而是让变换器在控制层面主动调节。说白了MMC把电芯均衡从电池侧搬到了功率变换层面这是传统两级式PCS很难做到的。再加上输出波形接近正弦不需要太重的大型滤波器整体体积和成本在大容量场景下都有优势。1.2 两级式MMC的拓扑选型逻辑常见的MMC储能拓扑分单级式和两级式。单级式最简单把电池直接并联在子模块电容上结构省、成本低、效率高。但它有个硬伤电池电压波动会影响电容电压而且电容上的二倍频功率脉动直接灌进电池对电池寿命很不友好。实验室里做着玩没问题工程上大家还是更偏向两级式。两级式MMC是在电池和子模块电容之间多加了一级双向DC/DC。第一级DC/DC负责把宽范围的电池电压变换成稳定的子模块电容电压同时精确控制电池电流第二级MMC负责交流和直流侧的能量变换。这样电池侧看到的是一个相对干净的电流脉动量大部分被中间DC/DC和电容吸收了。隔离型的还会在电池和电容之间加高频变压器比如双有源全桥DAB那样安全性更好。虽然多了器件、多了损耗但在储能这种对电池寿命和系统安全要求都很高的场景这个代价大部分人愿意付。这里多说一句两级式也可以理解为整个储能系统先经过一个公共的DC/DC再进MMC也可以理解为每个子模块内部嵌一个DC/DC。从控制视角看后者更好因为每个电池包都独立可控SOC不均衡时才能真正做到“精准投喂”。我在样机上用的就是子模块级两级式结构也就是每个子模块由“双向Buck/Boost或者DAB 半桥MMC子模块”组成。如果只需要做原理验证双向Buck/Boost就够了便宜、直观、好调如果要往高压大功率走DAB是躲不开的。2. 关键参数设计与核心器件选型2.1 子模块拓扑与工作机理先看子模块内部。最常见的MMC子模块是半桥结构一个直流电容、两个IGBT、两个续流二极管电容挂在直流侧。正常工作时根据两个IGBT的通断组合子模块要么被“投入”电容接入电路要么被“切除”电流走旁路要么处于闭锁状态用于启动或故障。投入和切除的切换就是在一个桥臂上叠加或者去掉一个电容电压。无数个子模块的电容电压叠加起来就能得到很高电位的交流输出这就是“多电平”三个字的由来。在储能两级式结构里半桥子模块的电容前头再接一个双向DC/DC。选非隔离型时常用双向Buck/Boost优点是简单便宜电池电压和电容电压满足升降压关系就行。选隔离型时DAB是主流高频变压器能让系统低压侧和高压侧完全隔离还能通过移相角控制传输功率的大小和方向。缺点也很明显控制复杂、器件多、效率要仔细扣。低压样机阶段我推荐先用非隔离Buck/Boost先把SOC均衡和环流问题做通再上隔离方案不然问题叠在一起根本没法排查。2.2 桥臂电抗和子模块电容怎么定参数设计是MMC最容易翻车的地方。很多新手一上来就把桥臂电感取特别大觉得电感大谐波小结果环流没抑制住动态响应还慢。实际上桥臂电感的取值有个经验范围按桥臂基波阻抗标幺值来算一般在0.1到0.15之间。以我搭的10kW三相样机为例线电压380V直流母线选500V每相上下桥臂子模块数N取4那么每个子模块电容电压额定就是125V。MMC交流侧每相电压按220V算Zbase等于相电压平方除以单相功率大约4.84Ω。桥臂电感按0.12 p.u.折算算下来在1.85mH左右我实际取了2mH。这个电感一方面要压住桥臂内的二倍频环流另一方面不能太大否则电流动态响应会变得很肉。子模块电容的取值主要看电容电压波动。工程上一般用能量法初选系统里所有电容储存的总能量和额定容量之间保持一个合理的比值我通常保证10kW样机的电容总储能在150到250J左右再根据仿真里的电压纹波微调最终取了3mF。这个容值能让子模块电容电压纹波控制在额定值的8%以内同时也不会让电容体积和成本失控。参数设计这件事没有唯一答案一定要结合你自己系统的电压等级、功率等级和允许的纹波来迭代。2.3 调制方式选择CPS-PWM还是NLM调制策略决定了波形质量和每个子模块的开关行为。子模块数比较少的时候比如我这个N等于4的样机首选载波移相PWM也就是CPS-PWM。每个子模块用一个三角载波相位互相错开输出端叠加出的电平数是2N1等9个电平等效开关频率高、谐波小而且每个子模块的开关频率直接可控对SOC均衡算法也很友好。NLM最近电平逼近更适合子模块数特别多的高压大容量场景因为N大了以后一个个载波排不过来了干脆根据参考电压实时计算需要投入几个子模块配合电容电压排序来选择具体投入哪几个。这种方案在柔性直流里非常成熟但用在储能时要注意排序带来的开关频率波动。我的建议是低压样机阶段先用CPS-PWM把SOC均衡、环流抑制这些控制逻辑跑通再研究NLM不迟。不要一上来就被调制方式绕晕。3. 控制实现SOC均衡与环流抑制3.1 SOC均衡的三个层级SOC差异从哪来三相输出功率不平衡、上下桥臂参数不对称、子模块之间损耗不一致都会让电池SOC慢慢拉开。所以SOC均衡不能只做一层而是要分层处理我习惯把它拆成三个层级。第一层是相间SOC均衡目标是让A、B、C三相的平均SOC一致。实现手段通常是注入零序电压或者负序电流改变各相实际吸收或释放的功率让比较高的相少充一点或者多放一点。需要注意的是三相三线系统里零序电压不会产生零序电流但它仍然能改变各相功率分配。第二层是桥臂间SOC均衡也就是同一相里上下两个桥臂的SOC不一致。这里要用到桥臂环流尤其是环流里的直流分量。通过控制环流的方向和大小可以让一个桥臂多吸收功率另一个多释放功率最终把上下桥臂SOC拉平。第三层是子模块间SOC均衡也是颗粒度最细的一层。每一相桥臂里N个子模块的SOC不可能完全一样需要通过排序或者载波微调让SOC低的电池多被投入充电SOC高的电池多被投入放电。三层SOC均衡的时间尺度也不一样子模块间最快秒级就能看到变化桥臂间和中速相间最慢可能要几分钟。控制优先级永远是从最内层到最外层外层的指令不能压过内层。3.2 环流抑制与SOC均衡的协调环流是同一相上下桥臂之间流动的电流主要成分是二倍频负序分量。如果不加控制环流会带来额外损耗还会让桥臂电流峰值上升所以一般要用PR控制器或者谐振控制器专门去抑制。但储能MMC里环流不只是要抑制的对象它同时也是桥臂间SOC均衡的工具。我的做法是把SOC均衡器算出的“桥臂均衡环流指令”叠加到环流抑制的目标值里。也就是说目标环流不是0而是一个受SOC差异调制的小电流。如果简单粗暴地把环流压成0上下桥臂SOC的差异永远掰不回来。在具体实现上环流信号可以从桥臂电流里提取共模分量得到。典型做法是把上下桥臂电流相加再除以2然后滤掉基波和直流剩下的就是需要控制的环流分量。控制器我用的是PR结构在基频50Hz和二倍频100Hz处都有增益。调参时先只做环流抑制比例增益从小到大往上加看到波形稳了再加谐振项。稳定之后再把SOC均衡的输出叠加进来这时候如果SOC差值的调节力度太大二倍频环流会再次抬头所以两个控制器要放在一起反复调。3.3 两级式前后级的控制划分两级式MMC的控制可以理解为前后级协同。前级DC/DC通常采用电池电流双闭环外环是电池功率或者充电策略比如恒流恒压内环是电感电流。它的核心任务是保证每个子模块的电池充放电功率跟随指令同时不让电池电流出现大的脉动。后级MMC负责并网常见的是直流电压外环加并网电流内环或者直接用PQ功率控制。如果系统工作在离网模式MMC就要改成V/f电压频率控制自己撑起交流侧的电压。前级和后级之间要特别关注级联稳定性。我当时踩过的坑是前级电流环带宽调得太高导致中间母线电压纹波被放大。后来把DC/DC电流环带宽压在500Hz左右后级MMC的电压环带宽再低一点整个系统就稳定了。这里的核心原则是贯穿两级之间的中间变量必须留出足够的相位裕量。4. 实操过程与核心环节实现4.1 从Matlab/Simulink到半实物平台如果是从零开始做MMC储能不建议一上来就焊板子。我推荐先走仿真的路子把拓扑和控制逻辑跑顺。常用工具是Matlab/Simulink里的Simscape Electrical也可以用PLECS后者做器件级仿真更快。建立模型时我习惯把所有开关管都按理想模型处理先搞控制逻辑等逻辑通了再往里加器件损耗和死区否则仿真速度会慢到让人崩溃。仿真模型的离散步长也很有讲究。我用的是离散求解器控制步长取10微秒开关频率2kHz。这样MMC的每个开关周期里至少有50个控制点PWM波形的粒度足够SOC均衡更新又能及时响应。模型跑通之后如果想往下做工程验证再搬到RT-Lab或者Typhoon HIL这类半实物平台上去做功率级测试。很多公司在样机之前都会卡在半实物这一关因为纯仿真省不掉通信延迟和采样噪声半实物才真正接近现场情况。4.2 一个4子模块三相MMC仿真参数实例这里给出一组我实际用过的仿真参数直接放到模型里能跑通适合用来理解MMC储能系统的基本行为。参数数值说明额定功率10kW低压样机级别交流线电压380V / 50Hz三相三线制直流母线电压500V公共直流侧参考电压每桥臂子模块数N4三相共24个子模块子模块电容电压125V由500V除以4得到桥臂电感2mH约0.12 p.u.子模块电容3mF电压纹波控制在8%以内载波频率2kHzCPS-PWM控制频率10kHz离散控制步长100微秒初始SOCA相90%、B相85%、C相80%故意拉开差异测试均衡我特别把三相SOC初始值设成不一样就是为了看相间均衡到底能不能收敛。仿真跑起来以后先观察环流波形确认二倍频分量可控再观察SOC曲线正常情况下几分钟内三相SOC会逐渐收缩到一个很小的差值。如果测得的SOC曲线一直在振荡八成是相间均衡的增益太大或者零序电压的符号反了。4.3 控制代码关键逻辑与调参经验以CPS-PWM为例子模块间的SOC均衡最常用的是排序法。每个控制周期评估子模块的SOC和电容电压再结合电池充放电方向决定投入和切除的优先级。简化版逻辑可以写成下面这样% 充电模式下SOC高的子模块少充电SOC低的子模块多充电 if power_mode charge [~, idx] sort(SOC, descend); % 高SOC排前面 % 本桥臂需要投入 n 个子模块 enabled_idx idx(n1:end); % 高SOC的被切除 else % 放电模式 [~, idx] sort(SOC, ascend); % 低SOC排前面 % 本桥臂需要投入 n 个子模块 enabled_idx idx(1:n); % 低SOC的被投入 end这只是一个说明思路的片段实际工程里排序并不是每毫秒都全部重排否则开关频率会飙高。我一般会给SOC排序加滞环和最低投入时间保护让子模块状态不要频繁切换。调参经验方面我总结三条第一环流PR控制器先只加比例加到临界振荡再往回退30%然后再加谐振项第二SOC排序的权重从0.05开始试不要一上来就给特别大否则子模块电容电压会被顶出很大的纹波第三相间SOC均衡的调节强度要小它的目标是分钟级收敛硬想让它快速拉平交流电流会先畸变得不像样。5. 常见问题与排查技巧实录5.1 环流抑制发散或效果差我遇到最多的问题就是环流压不下来。现象是桥臂电流波形里能看到特别大的二倍频波动桥臂电感有明显啸叫损耗也很高。排查第一步先看子模块电容电压有没有平衡电容电压都不平的话环流控制再强也没用。第二步看环流提取是不是滤干净了如果基波和直流分量没有滤除PR控制器的输出会被污染发散非常快。第三步才轮到调PR参数很多新手一上来就猛拉谐振增益结果系统直接振荡。最好是从比例项开始慢慢加谐振增益控制在能满足稳态抑制就行不要追求极限。5.2 SOC均衡失效或越调越乱SOC均衡失效通常不是算法原理错了而是细节没做到位。最常见的原因是SOC排序周期太长子模块状态切换跟不上电池SOC变化或者SOC权重太低排序结果几乎还是只看电容电压SOC自然拉不平。另一个容易忽略的坑是初始方向反了充电模式下让高SOC的子模块多充电那差异只会越来越大。调试技巧是打开SOC差值曲线一边跑一边观察方向。如果SOC差值的符号在朝正确方向减小但曲线在抖说明增益过大往下调如果方向反了优先检查充放电模式和排序逻辑不要急着调参数。5.3 通信和同步问题MMC子模块数量多每个子模块的控制器都要接收主控发出的PWM指令同时把电容电压、温度、SOC信息回传。这个通信链路一旦出问题控制立刻全乱。实际平台里我优先用光纤通信加硬件同步信号确保每个子模块的PWM载波相位是严格对齐的。软件上一定要加超时保护通信中断超过几个毫秒就让桥臂进入安全状态不要带着错误数据硬撑。另外提醒一句有些朋友在电脑上操作半实物软件时遇到“MMC无法创建管理单元”之类的弹窗那是Windows控制台的问题和电力电子MMC没关系去修系统组件就行别去动控制器代码。5.4 问题速查表现象可能原因处理办法桥臂电流二倍频波动明显环流提取未滤净PR参数不当电容电压不平衡先查电容电压再查滤波器最后由小到大调PR增益SOC曲线长时间不收敛排序周期过长SOC权重太低充放电方向判断反了缩短排序周期到5ms以内提高SOC权重打印SOC差值和功率方向直流母线电压振荡两级带宽耦合前级电流环带宽过高把前级电流环带宽降到约500Hz后级电压环带宽留出裕量子模块通信偶发乱码光纤接头污染同步信号丢失时序错位检查光路和连接器启用硬件同步增加通信超时保护开关管过热但输出功率正常子模块开关频率过高SOC排序频繁切换加滞环和最小投入时间适当降低排序频率最后说一点实际体会。我第一次把两级式MMC样机带上功率一合闸就听到桥臂电感啸叫抓波形一看全是二倍频环流。当时想着“把这个环流压掉”加上PR控制器后SOC又开始一边倒。后来才想明白不能把SOC均衡和环流抑制当成两件事它们本来就在抢同一个电流。后面我习惯在调试界面同时显示SOC差值和环流指令值先把环流抑制稳定在安全区再一点点放开SOC均衡的调节强度。这个顺序比任何花哨的控制理论都管用。