news 2026/10/2 19:17:01

MMC子模块电容电压均压控制:原理、策略与工程实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MMC子模块电容电压均压控制:原理、策略与工程实践

第一次在实验室调MMC样机的时候,一上电就看到示波器里四路子模块电容电压像分叉的树枝一样越拉越开,当场以为IGBT驱动坏了。查了一大圈才发现根本不是硬件问题——桥臂里那些子模块电容电压,本来就会在你不做任何控制的时候自发发散。让它们老老实实回到参考值附近波动,就是“子模块电容电压均压控制”这门手艺的核心活儿。

MMC(模块化多电平换流器)这几年在高压直流输电、中压电机驱动、电能质量治理里用得越来越多,均压控制是绕不开的一关。电网侧扰动、桥臂间环流、器件参数散差,任何一点风吹草动都会反映到电容电压上;电压一旦偏了,轻则波形变差,重则子模块直接过压炸管。这篇文章从原理拆到工程实现,讲排序法、载波移相均衡这些主流策略的取舍,再带上PSCAD仿真和FPGA实现里那些文档不会写的实操细节。刚接触MMC的研究生、正在做样机调试的工程师、埋头搭模型的仿真党,看完应该都会有些收获。

1. 先搞懂MMC的均压到底在匀什么

1.1 半桥子模块的工作逻辑

一个半桥子模块的结构并不复杂:一个直流电容、两个IGBT、两路反并联二极管,外加旁路晶闸管、电压采样回路这些周边电路。但就是这不起眼的单元,构成了MMC最小的“积木块”。

半桥SM只有两种工作状态:上管导通时,电容接入主回路,子模块输出电压等于电容电压,这叫“投入”;下管导通时,电容被切出去,输出电压为零,这叫“切除”。上下管互补导通,绝不能同时开,否则电容直接被短路,IGBT炸得渣都不剩。实际死区设置得很小,但这段死区本身就是后面均压误差的来源之一。

桥臂电流方向决定了“投入”对电容电压的影响:电流往电容充电方向流,投入的子模块电容电压上升;反向则下降。也就是说,同一个“投入”动作,在电流方向不同时效果完全相反。这就是所有均压算法都必须知道桥臂电流方向的原因——不知道电流方向,就没法判断应该把电压高的模块投入还是切除。

一相桥臂由上下两堆SM串联而成,每堆N个,输出端就能得到N+1个电平的阶梯波。子模块数量越多,阶梯越细越接近正弦,交流侧滤波器就越小。高压直流工程里一个桥臂几十上百个模块很常见,中压等级下通常十几二十个。子模块数量的差异,直接决定了你会选哪种均压策略,这点后面细说。

1.2 电容电压为什么会自己发散

很多人第一次看到电容电压曲线发散,第一反应都是硬件坏了或采样错了。但就算所有硬件完全正常,电容电压照样会悄悄分家。原因有几个层面:

器件参数散差是最基础的。同一批电容标称容值一样,实际容量总有偏差;IGBT通态压降、反向恢复特性也不完全一致。这些细微差别的效果叠加在能量交换上,就像用两只不一样的桶挑水,桶本身不漏,但一趟一趟挑下来,两只桶的水位差距只会越拉越大。

控制层面的误差更麻烦。驱动死区时间不完全一致、PWM脉冲沿抖动、采样时刻偏差,都会导致各子模块实际导通时间存在微小差异。一个周期里差零点几微秒,看起来无所谓,但MMC是持续运行的,几十个周期、上万个周期叠下来,误差就成了可观的电压偏差。

还有桥臂环流的搅局。三相桥臂之间天然存在环流通路,主要分量是二倍频负序环流。这股环流会在上、下桥臂以及相与相之间搬运能量,直接表现为电容电压整体偏高或偏低的不均衡。所以均压和环流抑制从来不是两个独立问题,只调均压不抑制环流,效果一定不彻底。

再往深处说,电容电压本身带有与运行工况相关的固有波动。交流侧电流的基频分量、桥臂电流的二倍频分量,都会在电容上叠加出波动成分。因此“均压”的目标从来不是把电容电压压成一条笔直的恒定线,而是让所有子模块电压在参考值附近的波动包络保持一致。这个认知不建立起来,后面调算法的时候很容易被示波器上的“正常波动”带偏方向。

1.3 均压的三个层级,很多人一开始就混在一起了

均压问题在MMC里分三个层级,控制目标和实现手段完全不一样。

第一个层级是桥臂内部子模块之间的电压均衡。这是大家最常讨论的“均压控制”,目标是让同一个桥臂里N个子模块的电容量保持在参考值附近,彼此差距控制在合理范围。排序法、载波移相修正法都作用在这一层。

第二个层级是上、下桥臂之间的能量均衡。如果某个桥臂整体能量偏高,这个桥臂所有子模块的平均电容电压都会往上漂。这时候桥臂内部的排序做得再好也救不回来,必须通过调整上、下桥臂调制波的共模分量,或者依靠相间环流控制来搬走多余的能量。

第三个层级是三相之间的能量均衡。三相参数不对称、交流侧故障,都会造成三相电容电压平均值的差异,同样要靠环流控制来抹平。

不少初学者把这三个层级混成一锅粥,指望一个均压控制器把所有问题全部解决,结果怎么调都调不好。实际工程里,桥臂内均压是基础,桥臂间和相间均衡通常交给专门的环流抑制和能量平衡控制器。这篇文章的重点在第一个层级,但你要知道它和环流控制、能量控制之间的边界在哪里。

2. 主流的均压策略怎么选:排序法与载波移相

2.1 排序法加NLM:高压大容量场景的默认答案

排序法的思路直白到可以用一句话概括:每个控制周期,采样桥臂内所有子模块的电容电压,排个序,再根据桥臂电流方向决定投入电压偏低的那几个还是电压偏高的那几个。

具体到实现,排序法是配合最近电平逼近调制一起工作的。每个周期先由调制器算出一个桥臂需要投入的子模块数目N_on,然后均压算法回答另一个问题:到底投入哪几个模块。

伪代码大概是这样的:

def sort_and_select(v_sm, i_arm, n_on): idx = argsort(v_sm) # 电容电压升序排列 if i_arm > 0: # 桥臂电流处于充电方向 fire = idx[:n_on] # 优先投入电压低的模块 else: # 放电方向 fire = idx[-n_on:] # 优先投入电压高的模块 return fire

这个逻辑的本质是负反馈:充电方向让低压模块多充电,高压模块先歇着;放电方向反过来,高压模块多放电,低压模块少放电。方向反了的话,均压控制就变成均压破坏器,收敛发散就在一念之间。实际采样的是桥臂电流方向,这个方向的定义要和你调试时示波器探头的方向保持一致,否则又会踩坑。

排序法的好处是简单、直接、鲁棒性好。电容容值实测值差异、温度漂移、器件老化这些因素,在排序法面前统统不敏感。坏处也明显:排序决定了谁投入谁切除,所以同一模块可能在两拍之间被快速来回切,开关频率不固定,损耗和温升不好控制。

针对这个缺点,工程上有几类标准改法。最常用的是加“保持因子”,上一控制周期投入的模块在本周期尽量保持投入状态,除非电容电压偏差超过设定阈值才重新洗牌。效果是主开关频率被明显压低,代价是均压动态略微变慢。另外还有分组排序法,先按电压档位粗略分组,组内排序,减少排序深度和计算量;更高级的做法是在开关次数约束下做最优选择,偏向研究向的内容,工程上应用还不多。

2.2 载波移相CPS-PWM加电压均衡修正:中低压场合的灵活方案

载波移相PWM的思路和排序法完全不同。排序法是“挑模块”,CPS-PWM是“同时驱动所有模块,靠错相提高等效开关频率”。

具体做法是给每个子模块分配一个独立的三角载波,这些载波相位依次错开,N个模块的载波均匀分布在360度上。各模块依次投入和切除的结果是,桥臂输出的等效开关频率比单个模块的开关频率高了N倍,交流侧谐波状况明显改善。这一点在中压电机驱动这种对谐波敏感的场合非常吃香。

但CPS-PWM有一个绕不过去的麻烦:所有模块用同一个调制波时,电容电压差异会通过电流积分效果逐渐放大。必须给每个模块额外加一个电压均衡修正环,根据各模块电容电压与参考值的偏差,对本模块的调制波进行微调。

修正的方向不能搞反:电容电压偏低的模块,在充电期间要适当增大投入占空比,放电期间则减小占空比;电压偏高的模块相反。说白了就是把排序法“由电流方向决定优先投谁”的逻辑,转换成了“由电流方向决定修正系数的符号”。实现上可以用简单的比例调节器,也可以加积分环节提高收敛速度。

选择CPS-PWM加均衡修正的场合,通常是子模块数量不多的情况,十几到几十个封顶。模块数量一上到上百个,每个模块一套载波和修正环,控制资源占用和调试复杂度会很难看,还不如老老实实回排序法。

2.3 策略选型对比:到底是不是越复杂越好

排序法和CPS-PWM哪种更好,玩MMC的经常争,但脱离场景谈优劣都是耍流氓。拿我自己做过和见过的系统来说,策略选择基本可以按一套标准来定。

排序法加NLM在高压大容量场景几乎是一统天下。原因很简单:高压直流的子模块数量多到可以论百,排序法不管模块数量多少,逻辑复杂度只跟着N的对数走,采样的容错性也好。模块之间参数散差、运行老化的影响,排序法天然免疫。

CPS-PWM则更适合模块数量少、对谐波要求苛刻、单模块开关频率要均等的中低压场合,比如中压传动里的MMC常配合错相策略。模块数量在二三十以下时,这套方案的控制负载不算大,谐波效果也好。

有意思的是,现在不少研究在把两种思路往一起揉,比如载波移相加排序修正、或者排序法里嵌载波分配。整体趋势是兼顾功率器件应力、谐波质量和均压动态。但如果你是刚开始探索,我的建议特别直接:先用排序法把系统跑起来。排序法能让你快速把控制框架、采样链路、调制逻辑调通,理解了均压的本质,再往复杂方案上走会轻松很多。

3. 均压控制落地时绕不开的参数与实现细节

3.1 排序周期、阈值和保持因子,这三个量决定系统的“手感”

很多人以为均压算法跑起来就完事了,其实排序周期、电压阈值、保持因子这三个参数没调好,看起来均压成功了,开关损耗却高得离谱,或者电压波动毛糙得不敢看。

排序周期的选择需要兼顾均压效果和开关损耗。排序执行太快,比如每0.1毫秒重排一次,电容电压当然均衡得漂亮,但每个模块几乎每个周期都在切换,开关频率蹭蹭往上跑,IGBT开关损耗直接拉满。排序周期放太慢,比如5毫秒以上,均压响应跟不上电流波动,电容电压会明显发散。工程上1毫秒左右是比较常见的起点,然后根据你的桥臂电感和子模块电容尺寸做细调。我在一块实验板上试过从0.1毫秒拉到2毫秒的变化,均压动态肉眼可见地变松,开关损耗倒是降了将近一半。

电压阈值和保持因子是配套的。每次排序后,如果某个模块的电压与期望值的偏差没有超过阈值,保持因子会强制维持它的原投入状态,避免无谓的投切。阈值一般取参考电容电压的百分之几,比如额定2.5kV的模块,阈值放在±50V到±120V都是合理区间。阈值设太小,保持因子形同虚设;设太大,均压精度变差,充电态模块的电压可能冲到过压保护附近。

这一类参数的整定思路有个共同点:不要试图一步到位。先把阈值设大、保持因子设强,确认系统能稳定运行;再一步步收紧阈值,观察电容电压波形和开关脉冲,找到那个“电压波形还能接受、开关频率又可控”的平衡点。

3.2 均压环和环流抑制PI参数怎么调才不玄学

均压控制在工程上往往伴随一个环流抑制器,这里面的PI参数整定是大家问得最多的。关键词里“mmc环流抑制器的pi参数”反复出现,说明这事确实玄学过。

先说环流抑制。MMC桥臂环流的主要分量是二倍频,50赫兹系统里就是100赫兹,而且三相间是负序性质。对付它有两种常见做法:一种是在静止坐标系下用准比例谐振控制器,谐振频率对准100赫兹;另一种是坐标变换到二倍频负序旋转坐标系下,用PI控制器处理。工程上准PR法更直观,不用额外构造坐标系,参数意义也清楚。

给一套我自己习惯的整定流程:先把环流抑制器摘掉,让系统带着环流运行,记录桥臂电流里的二倍频分量幅值。然后把准PR控制器投入,Kp从很小的值开始往上加,比如从0.05(标幺)起步,每加一档观察二倍频分量有没有压下去。如果到某个值后波形不再变好了,甚至开始出现高频振荡,说明Kp到了边界。谐振带宽一般在几赫兹到十几赫兹之间,太小了怕网侧频率漂移时压不住,太大了会把无关频率的噪声放大。

均压环的PI参数则是另一套思路,本质上是“慢环”。均压修正量不需要过快的动态响应,带宽一般远低于电流环,太激进了反而会和环流控制器、电流环搅在一起。有一种常见的调法误区是把均压环的PI当作普通电流环来调,比例给得很大,结果桥臂电流毛糙得没法看。正确的顺序是先给较小的比例系数稳住趋势,再逐步加积分消稳态偏差。只要电容电压平均值最终落在参考值附近,各模块之间差距又可控,就算合格。

3.3 FPGA和Vivado仿真里,拉取子模块信号的关键细节

均压算法要跑在实时控制器里,FPGA是主流平台。调试过程中最痛苦的一步是看内部信号——电容电压、排序结果、当前投入状态这些都在FPGA内部,又不方便拉一堆线出来,这时候就得靠Vivado的调试工具链。

“vivado仿真拉取子模块信号”这个热词背后,是两种场景。一种是纯仿真验证里,想直接观察FPGA内部的中间变量,最省事的做法是用仿真testbench里的层次化引用,访问到DUT内部各子模块的寄存器,然后写入一个CSV文件,仿真结束后用Python画电容电压曲线。另一种是板级调试时,通过Vivado的ILA核抓取内部信号。把需要观察的电容电压、桥臂电流方向、排序索引、投入状态信号连到ILA探针上,设置触发条件,比如电容电压偏差超过阈值时触发一次,然后看波形。

这里有几个坑。一是采样时刻必须避开IGBT开关动作瞬间,否则抓回来的电容电压全是毛刺,均压算法依据这种毛刺会做出错误判断。工程里一般把采样点对准PWM载波的谷底或峰值,也就是开关状态最稳定的窗口。二是电容电压是模拟量,经过ADC采样后送入FPGA,FPGA内部对多个模块的电压采样必须时间对齐,差几十微秒在高压大电流场合都会造成排序判断失误。三是Vivado里看FPGA内部信号,时钟域同步很重要,跨时钟域的信号直接抓回来可能看到的就是亚稳态数据。

这些细节看着琐碎,但均压效果好不好,往往就卡在这种地方。算法仿真里明明一切正常,上到实验台就发散,十有七八是采样时序和信号同步出了问题。

4. 仿真验证与现场排查的实操实录

4.1 PSCAD的MMC模型怎么搭又快又准

PSACD是MMC仿真的常用工具,但直接上来就拖IGBT器件搭详细模型,仿真速度和收敛性是双重折磨。几十个模块的桥臂,每个模块里两个IGBT加电容,全部用详细器件模型的话,跑一个稳态可能需要几十秒,扫一次参数想都别想。

正确做法是用PSCAD自带的MMC模型库,内部采用子模块戴维南等效电路。这种模型把每个子模块看成一个可控电压源和电阻的组合,在不影响外部特性的前提下省掉器件级开关细节,仿真速度能快一到两个数量级。模型中需要设置的参数包括子模块电容值、桥臂电抗、桥臂子模块数量,这些都在软件面板里直接填。

控制平台的搭法要注意步长匹配。电气仿真步长一般取几十微秒量级,控制器的执行周期要和排序周期一致,比如1毫秒排序一次,那就不能在10微秒的斜波里频繁翻转排序结果。仿真时把控制步长和排序周期显式地建模出来,结果才贴近实物。很多刚入门的同学在PSCAD里把排序周期设成和仿真步长一样小,仿真出来的电容电压曲线光滑得像一条线,但一旦换成实际控制器里的1毫秒周期,立刻原形毕露。

模型验证顺序也有讲究。先做空载或纯电阻负载,确认交流侧电压台阶正常;再加功率,观察电容电压波动和均压是否收敛;最后才做故障这类动态工况。

4.2 现场常见问题排查清单

把做MMC仿真和样机调试过程中见过的典型故障整理成了表格,方便你对照排查。

常见问题现象 | 可能原因 | 排查思路与解法 电容电压整体发散、无明显规律 | 排序方向接反了 | 确认桥臂电流方向定义,对比仿真波形符号,反了就把比较器的符号翻转 上、下桥臂电压整体偏离参考值 | 桥臂间能量不平衡,环流抑制未投入 | 检查环流控制环是否打开,桥臂电抗参数是否正确 同一桥臂里个别模块电压偏高或偏低 | 采样通道错位、ADC标定不准 | 用固定电压校准每个采样通道,检查多通道采样时序 排序导致开关频率异常高 | 排序周期太短或阈值太小 | 调大排序周期到毫秒级,加大电压阈值配合保持因子 桥臂电流里100赫兹分量压不下去 | 环流抑制PI参数没整定好 | 按上一节准PR整定流程逐步调试Kp和谐振带宽 上电瞬间电压就崩 | 预充电没做完就切入了均压控制 | 先确认母线电压充到额定附近,再切换可控充电和均压

每次都强调采样和时序,是因为八成问题都出在这两块。不少“算法不收敛”最后查出来是ADC数据位序接错了,或者差分信号极性反了。排查这类问题时,先怀疑硬件链路,再怀疑控制逻辑,顺序一定不能反。

4.3 一些文档里不会写的工程细节

预充电阶段是个容易被忽略的点。所有子模块从零电压开始,直接套排序均压是没法工作的。通常要先经过不控整流阶段,让交流侧通过二极管桥给电容充到接近额定值,之后才切换到可控充电并启用均压控制。这个切换逻辑没做好,上电瞬间的冲击电流就可能触发保护。

故障穿越工况下的均压策略也要提前想好。交流侧电压跌落时,桥臂电流里会出现较大的非周期分量,此时排序结果可能剧烈变化,模块开关次数瞬间暴涨。先不说器件应力,单是均压算法在这种时刻可能产生的异常投切,就足够让系统重新过一遍调试。工程中比较稳妥的做法是在故障期间保持排序周期不变,但适当加大电压阈值,减少无谓的投切动作。

最后提一条硬件在环验证的建议:均压算法从纯仿真搬进控制器,中间隔着一整个I/O链路。有条件的话,先做控制器硬件在环测试,将PSCAD模型编译到实时仿真机里,把FPGA控制器接上去跑一遍。这一遍能查出绝大多数“仿真能跑实物不行”的隐患,尤其是采样延迟、脉冲输出时序、逻辑资源占用这类问题,在硬件在环上一目了然。

我个人在实际操作中的体会是,均压控制是MMC整个控制系统里最能把“工程感”体现出来的环节。算法原理书上写得很清楚,但真正落地时考验的是你对采样时序、能量流动方向和硬件特性的感知力。排序法看起来朴素,我用这么多年,再回头看那些号称更优的复杂方案,很多时候只是在某个特定约束下的小众优化。把基础策略做到极致,理解每一个参数身后的物理过程,面对再多新问题时心里也都有底。这个方向后续还能延伸出去,比如结合故障检测的自适应均压、基于机器学习的开关策略预测,但地基永远是今天聊的这套东西。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 19:16:01

基于经济与可靠性双目标的混合配电系统规划及Python实现

这篇内容我琢磨了很久。做配电系统规划的人都知道,传统做法要么只算经济账,要么单看可靠性指标,两者掰开时都还算清楚,一旦要同时放进一个优化模型里,问题就变得很棘手。而这个项目标题“基于经济与可靠性双目标的混合…

作者头像 李华
网站建设 2026/10/2 19:15:42

拆解ABS“玄学”:Simulink单轮模型从零搭建与门限控制仿真

1. 先给ABS的“玄学”祛个魅:它到底在控制什么很多人第一次接触ABS模型,都会觉得这玩意儿透着点说不清道不明的气质。明明是一套缸内压力切换的逻辑,怎么放到不同路面上结果就完全不一样,调参跟猜谜似的。这个感觉其实不奇怪&…

作者头像 李华
网站建设 2026/10/2 19:15:28

泊松分布、指数分布、伽马分布:从泊松过程到随机建模全解析

这三兄弟——泊松分布、指数分布、伽马分布,是概率论里最容易被混在一起的名词。很多人被各种教材拆开了看:泊松分布用来数“一段时间里来了多少个电话”,指数分布用来算“下一个电话要等多久”,而伽马分布更多时候是某个例题里的…

作者头像 李华
网站建设 2026/10/2 19:15:26

QField工具版实战:从QGIS工程配置到野外采集全流程

搞GIS的都知道,外业采集是最容易翻车的一环。我从在办公室做数据整理开始,到背着电脑跑野外调查,再到后来带队做采集项目,前前后后试过ArcGIS系、自研App、甚至纸笔记录配手机拍照的方式,都没有一个让我觉得省心的。直…

作者头像 李华
网站建设 2026/10/2 19:14:21

联合分布与边缘分布:多维随机变量的核心概念与实战解析

1. 联合分布到底在研究什么:先摆脱"一维思维"我见过太多人学概率论学到"联合分布"这一章时突然卡壳。前面一维随机变量的分布函数、密度函数、期望方差都还好好的,一进入二维,看到 (F(x,y)P{X\le x, Y\le y}) 这个定义就…

作者头像 李华
网站建设 2026/10/2 19:13:42

基于MySQL的学生成绩管理:视图、触发器与事务设计详解

简介:针对期末成绩统计手工处理耗时易错的问题,这份MySQL学生成绩管理系统设计实验报告提供了完整的系统设计方案,涵盖项目背景、可行性分析、功能与性能需求、登录权限设计、班级与成绩管理模块以及数据库需求分析等核心环节,可作…

作者头像 李华