1. 从两电平到模块化多电平:整流侧为什么盯上MMC
第一次把三相MMC整流器的控制思路从两电平那套体系里“掰”出来,我花了差不多一整周。拓扑本身倒不难理解——每相上下桥臂各一串子模块而已,真正麻烦的是控制策略:电压外环、电流内环、环流抑制、电容均压、调制策略全部耦合在一起,任何一层参数没对齐,仿真波形就是一团乱麻。这篇文章把我在三相MMC整流器上做控制策略设计和工程实践时的完整思路、参数估算方法、以及调试中踩过的坑一起整理出来,给正在做相关课题的朋友一条可以直接参照的路线。
先回答一个最基础的问题:传统的两电平VSC整流器在中低压领域已经很成熟,为什么到了中高压场合,大家会不约而同把目光转向MMC?
两电平方案在中高压下的尴尬非常直接。交流侧电压等级一上去,单个IGBT或IGCT承受不住母线电压,就必须做器件串联。器件串联最大的问题是动态均压:不同器件的关断延时、栅极电阻参数只要有细微差别,关断瞬间的电压分配就可能严重不均,轻则缩短寿命,重则直接炸管。就算做了RCD吸收和栅极驱动延时匹配,也只是把可靠性从一个坑挪到另一个坑。而且两电平整流器的输出电平只有正负两个电平,要压住谐波必须靠大体积的交流滤波器,在高电压等级下这个滤波器重量和成本都相当可观。
MMC把这些问题换了一种解法:不再追求让单个器件扛高压,而是让几十上百个子模块串联起来分摊直流电压,每个开关器件实际承受的只有自己子模块电容上的电压,彻底绕开了器件直接串联的均压难题。电平数一多,交流侧波形接近正弦,滤波器体积大幅减小;每个桥臂又是完全相同的子模块构成,天然支持模块化生产、维护和冗余。又因为MMC本身就是四象限换流器,整流、逆变都能做,所以三相MMC整流器可以用于中高压直流电源、新能源直流汇集、中压电机变频回馈、配网柔性互联等场景。本文讨论的就是它工作在整流状态时,直流侧输出稳定电压、交流侧输入高质量电流的完整控制与工程实现路径。
2. 拓扑与机理:先弄懂子模块到底在干什么
2.1 一个相单元怎么看
三相MMC整流器每一相由两个桥臂组成,上桥臂和下桥臂。每个桥臂是N个子模块串联之后再串一个桥臂电感,上桥臂电感中点引出交流相线,上桥臂顶端和下桥臂底端分别接直流母线的正负极。三相共六个桥臂,直流侧并联。
如果你在仿真软件里搭模型,最初级的方法是直接把六个桥臂都用受控电压源替代,先验证控制逻辑,再逐步换成带IGBT和电容的详细子模块模型。我建议第一次接触的人一定先这么干,因为详细模型跑一次仿真很慢,而大部分发散问题出在控制上,不在开关细节上。
每个桥臂的N个子模块是串联的,所以桥臂能输出的电压是一系列离散电平的叠加。桥臂电感的作用非常关键:它既要承受上下桥臂之间的电压差,又要抑制桥臂内部流过的环流,还要在直流故障时限制电流上升率。后面专门用一章讲它的取值逻辑。
2.2 半桥子模块的两种状态与电压约束
MMC里最常用的是半桥子模块:两个IGBT串联后和一个直流电容并联,上管叫T1,下管叫T2,电容电压就是子模块输出电压的台阶。
子模块只有两个有效开关状态:
- T1导通、T2关断时,电容被接入桥臂,子模块输出电压等于电容电压Uc,这叫投入状态;
- T1关断、T2导通时,电容被旁路,子模块输出电压是0,这叫旁路状态。
必须禁止T1和T2同时导通,否则电容直接短路,所以驱动逻辑里要加死区。电容充放电方向取决于桥臂电流的方向:电流流进子模块正端时电容充电,流出时电容放电。也就是说,同一个投入状态下,电容可能被充电也可能被放电,这完全由外部桥臂电流决定。均压控制正是利用这一点,通过选择“投入哪些子模块”来把每个电容电压拉回额定值附近。
2.3 交流侧电压怎么合成:和值恒定、差值正弦
理解MMC的关键口诀是八个字:和值恒定,差值正弦。
设上桥臂输出电压为v_u,下桥臂输出电压为v_l,直流母线电压为Vdc,交流相电压参考为v_ref:
- 上下桥臂电压之和要维持直流母线电压:v_u + v_l = Vdc;
- 上下桥臂电压之差要输出交流电压:v_u - v_l = 2·v_ref。
所以上下桥臂的电压参考就是:
v_u = Vdc/2 - v_ref v_l = Vdc/2 + v_refv_ref是正弦波,因此v_u和v_l都是在Vdc/2这个直流偏置上叠加一个反相的正弦分量。每个桥臂需要投入的子模块数M,就等于桥臂电压参考除以子模块电容电压额定值后四舍五入。比如Vdc=800V,Uc=200V,Vdc/2对应2个子模块,再根据v_ref的正弦变化动态调整投入数,交流侧就能合成出阶梯状正弦电压。
这个结构决定了MMC的一个特点:桥臂电流里同时存在直流分量和交流分量。直流分量用于传递有功,约等于Idc/3;交流分量约等于交流相电流的一半。理解这一点,对后面看环流和均压很有帮助。
2.4 电容电压波动的物理根源
很多初学者以为子模块电容电压是稳定的,实际并非如此。电容电压必然存在二倍频波动,这是单相瞬时功率脉动决定的,不是你控制不好。
看一个桥臂:桥臂电压是“直流偏置+正弦”,桥臂电流是“直流分量+正弦”,两者相乘得到桥臂瞬时功率,里面有直流项、基波项和二倍频项。最要命的是二倍频项无法互相抵消,能量在电容和电网之间来回交换,于是每个子模块电容电压都带上了约100Hz的波动。
这个波动幅度可以用工程公式估算:
ΔUc ≈ S / (3 · N · ω · C · Uc)S是三相额定容量,N是每桥臂子模块数,ω是电网角频率,C是单个子模块电容。如果算出来波动率超过10%,就要加大电容或者增加子模块数。这个波动只能抑制到一定范围,不可能消除,因为它对应着电容必须储存和释放的能量。
3. 控制链路拆解:从锁相环到环流抑制
3.1 五层控制架构的总体关系
三相MMC整流器的控制至少包含五层:锁相环、电压外环、电流内环、环流抑制、电容均压。它们的时间尺度差别很大,调试时务必按顺序推进。
| 控制层 | 控制对象 | 典型带宽/周期 | 作用 |
|---|---|---|---|
| 锁相环 | 电网电压相位 | 带宽约50Hz | 提供dq坐标变换角度 |
| 电压外环 | 直流母线电压 | 带宽10~30Hz | 输出有功电流参考 |
| 电流内环 | 交流电流dq分量 | 带宽100~500Hz | 输出交流电压参考 |
| 环流抑制 | 桥臂二倍频环流 | 带宽100~500Hz | 消除相间环流 |
| 电容均压 | 子模块电容电压 | 开关周期级,10~50μs | 维持电容电压平衡 |
我做过的最有性价比的调试顺序是:先把锁相环和电流内环在简化的受控电压源模型上跑通,再加环流抑制,最后才接上实际子模块模型做均压验证。一上来就全开,波形发散了你根本不知道是哪一层的问题。
3.2 锁相环与dq模型
要使用经典的双闭环PI控制,必须先做Park变换,把三相交流量变成dq旋转坐标系下的直流量。锁相环就是干这个的:把三相电网电压变换到dq坐标系后,让q轴电压参考为0,通过PI调节器自动修正角度,使d轴与电网电压矢量对齐。
dq坐标系下,三相MMC整流器交流侧的电压方程可以写成:
v_sd = R·i_d + L·di_d/dt - ω·L·i_q + v_od v_sq = R·i_q + L·di_q/dt + ω·L·i_d + v_oq其中L是交流侧等效电感,它等于外网电感加桥臂电感的一半;R是等效电阻;v_od、v_oq是MMC交流侧输出电压的dq分量;v_sd、v_sq是电网电压的dq分量。这个方程是电流内环设计的模型基础。
有一点必须注意:如果桥臂电感两个都用L_arm,从交流侧看进去每一相的等效电感是L_arm/2,不是L_arm。很多刚接触MMC的人在这里算错,导致电流内环的PI增益偏差接近一倍,动态响应和预期差很多。
3.3 电压外环与电流内环:参数整定思路
电流内环用PI调节器,采用前馈解耦的形式:
v_od* = v_sd - ω·L·i_q + PI(i_d* - i_d) v_oq* = v_sq + ω·L·i_d + PI(i_q* - i_q)PI参数不推荐盲目试凑。如果忽略数字控制延时和采样滤波延时,电流内环可以按零极点对消整定:
Kp = L / τ Ki = R / τ τ = 1 / ωcωc是电流内环期望带宽,一般取开关角频率的1/10到1/5。开关频率2kHz时,电流带宽取200~400Hz比较合适。带宽太高会放大采样噪声,太低则动态响应变差。
电压外环负责把直流母线电压维持在额定值。它输出的就是有功电流参考i_d*,经限幅后送给电流内环。电压外环的带宽要明显低于电流内环,通常取电流带宽的1/5到1/10。如果两个环路的带宽太接近,系统会出现谐振峰,负载突变时直流电压来回振荡,非常难调。
无功电流参考i_q正常设为0,功率因数为1。如果系统需要向电网提供无功支撑,再单独设置i_q。
3.4 二倍频环流的产生与CCSC抑制
MMC有一个特有的问题:相间环流。定义桥臂环流为上下桥臂电流的平均值:
i_cir = (i_u + i_l) / 2理想情况下,环流应该只有直流分量Idc/3。但由于上下桥臂电压之和并不严格等于Vdc,而是含有一个二倍频的扰动分量,这个扰动会在上下桥臂之间激励出二倍频负序环流。二倍频环流会让桥臂电流峰值明显增大,增加开关管和电容的电流应力,同时抬高损耗。
抑制环流有两个主流做法。
一是用PR谐振控制器,在静止坐标系下对二倍频分量做无静差控制。PR控制器在100Hz处的增益很高,实现简单,不用额外坐标变换,我仿真时用得最多。
二是把环流变换到二倍频同步旋转坐标系,用双PI控制。这种方法动态响应更好,但需要额外一套坐标变换,工程代码量稍大。
无论哪种方法,环流抑制器的输出需要以相反的符号叠加到上下桥臂电压参考上:上桥臂减去Δu,下桥臂加上Δu。极性搞反了,环流不会被抑制,反而会被激励,桥臂电流会明显畸变。我调试时曾经在这个极性上翻过车,波形上桥臂电流的100Hz纹波一路飙升,检查了很久才发现符号问题。
3.5 子模块电容电压排序均压的工程实现
子模块电容均压最经典的是排序法。每个排序周期内,假设当前桥臂需要投入M个子模块:
- 采集桥臂所有子模块的电容电压;
- 判断桥臂电流方向:如果电流为正,投入的子模块会充电,那就投入电压最低的M个;如果电流为负,投入的子模块会放电,那就投入电压最高的M个;
- 生成对应的开关信号,投入的子模块旁路的子模块分别驱动。
每次开关周期都重新排序,电容电压就能在额定值附近小范围波动。
直接排序有一个明显的问题:排序结果频繁变化,单个子模块可能在一个周期内反复投切,开关频率过高,损耗变大。工程上通常加一个“保持因子”:只有当前电容电压偏差超过设定阈值时,才允许改变投入集合;否则沿用上一周期的投入状态。这样既保证了均压效果,又把开关频率压了下来。
排序频率不能太低。我实测过,如果排序频率和PWM载波不同步,电容电压波形会出现明显的拍频纹波,看着像不稳定,其实是采样和数据更新不同步导致的。排序最好在PWM载波的周期起始处触发,每个PWM周期只更新一次开关状态。
4. 调制策略怎么选:CPS-PWM与NLM的取舍
4.1 载波移相PWM:低电平数下的首选
载波移相正弦脉宽调制,简称CPS-PWM,原理非常直观:每个子模块对应一个三角载波,N个子模块的三角载波相位依次错开π/N,所有子模块共用同一个正弦调制波,各自的比较逻辑独立。
这样做的好处是等效开关频率被抬高了N倍。比如每个子模块开关频率2kHz,N=4时交流侧等效开关频率是8kHz,谐波集中在高频段,滤波器很容易滤掉。输出电压是N+1电平的阶梯状PWM波,波形质量相当好。
CPS-PWM的均压处理和NLM略有不同。它通常配合独立的均压算法,可以在每个子模块的载波周期内根据电容电压排序结果微调开关状态。低压实验样机一般首选CPS-PWM,因为实现直观、故障定位容易、子模块数量少时效果很好。
4.2 最近电平逼近:高电平数下的主流
最近电平逼近调制,简称NLM,思路更简单:直接用桥臂电压参考除以子模块电容电压额定值,四舍五入得到需要投入的子模块个数M,然后让桥臂投入M个子模块即可。
NLM的输出是阶梯波,台阶数等于N+1。N越大,阶梯越密,波形越接近正弦。柔性直流工程里每桥臂动辄上百个子模块,阶梯波本身的谐波已经很小,不再需要高频PWM,开关器件的工作频率基本等于工频,损耗非常低,这是NLM成为高压MMC主流调制的根本原因。
但NLM不适合低电平数场合。N=4时只有5电平,阶梯波的低次谐波很大,电流畸变严重。因此低压小规模样机如果用NLM,一般要叠加谐波补偿或者干脆不用。
4.3 从电平数和器件频率出发的选型建议
| 指标 | CPS-PWM | NLM |
|---|---|---|
| 输出电平数 | N+1 | N+1 |
| 等效开关频率 | N×开关频率 | 约等于基波频率 |
| 谐波特性 | 高频谐波集中,好滤波 | 阶梯波低次谐波,N小时明显 |
| 开关损耗 | 偏高 | 低 |
| 实现复杂度 | 简单直观 | 需要高速排序和实时参考计算 |
| 典型适用 | 低压样机、中压变频、教学验证 | 高压柔性直流、超多电平场合 |
我的个人建议很直接:N小于10,用CPS-PWM;N到几十甚至几百,用NLM;中间地带,先看你的控制器平台——如果MCU为主、FPGA只是辅助,CPS-PWM的代码量更可控;如果主控就是FPGA,NLM顺手得多。对于三相MMC整流器这种需要四象限运行和快速动态响应的场景,低压验证阶段用CPS-PWM能更快暴露控制问题。
5. 桥臂电感与子模块电容:影响性能的两个核心参数
5.1 桥臂电感:环流抑制与故障电流的平衡
桥臂电感有三个作用:抑制相间二倍频环流、限制直流侧故障时的电流上升率、配合交流侧电感和滤波电容形成滤波结构。
桥臂电感取大,环流抑制效果好,故障电流上升慢,但体积成本和动态响应会恶化;取小,体积小响应快,但环流大、损耗高。工程上一般取标幺值0.1~0.15。基准电感按交流侧等效功率和电压定义:
L_base = U_phase_rms² / (ω · S_phase)L_arm取0.1~0.15倍的L_base。举个例子:交流线电压380V、三相总功率10kW时,相电压有效值220V,每相功率约3.33kW,工频角频率314rad/s,L_base约为0.0462H,0.12倍约5.5mH,所以我的样机选了5mH附近的值,属于合理区间。
电感选型时还要留个心眼:桥臂电感和子模块电容的组合存在谐振频率,要确认这个谐振频率远离二倍频,也远离电流内环带宽,否则某些工况下会激发出谐振电流。
5.2 子模块电容:能量波动与电压纹波的工程估算
子模块电容要承担桥臂功率脉动。允许的电容电压纹波率通常取5%~10%,估算公式:
C ≈ S / (3 · N · ω · Uc² · ε)假设三相总容量S=10kW,每桥臂N=4,ω=314rad/s,Uc=200V,允许纹波率ε=0.05,计算出来:
C ≈ 10000 / (3 × 4 × 314 × 200² × 0.05) ≈ 1.33mF所以样机选2mF比较稳妥。如果电容取太大,电压外环的调节速度会被拖慢,负载切换时直流电压恢复时间变长;取太小,电容电压纹波大,可能触发过压保护,均压算法的调节压力也会成倍增加。
我建议在做仿真时把C和L_arm做一组小范围扫描,主要看三个指标:桥臂电流里二倍频环流的有效值、子模块电容电压纹波峰峰值、交流侧电流THD。这组扫描能节省大量调试时间,比凭感觉定参数靠谱得多。
5.3 参数组合的相互作用
两个参数不是独立存在的。桥臂电感偏小时,二倍频环流变大,子模块电容的充放电电流脉动变大,电容电压纹波也会跟着变大;反过来,电容偏小时,电容电压波动大,桥臂电压参考的波动又会对环流产生激励。所以调参数必须整套看,不能单独调L或单独调C。
仿真时的一个参考做法:先按电感的0.12pu和电容的10%纹波率定初始值,然后固定L扫C,找到THD和电压纹波都满意的点;再固定C扫L,观察环流峰值和故障电流上升率。两个方向各扫一遍,基本就能定位到合适的参数域。
6. 从预充电到闭环运行:启动流程与调试实录
6.1 两阶段预充电:先不可控,再可控
MMC整流器不能像两电平变流器那样直接解锁启动,因为子模块电容初始电压为零,直接解锁会让电容充电电流失控。标准做法是两阶段预充电。
第一阶段是不控整流预充电。交流侧通过限流电阻和接触器接入电网,子模块内部反并联二极管构成不控整流桥,电容被充电到交流线电压峰值的某个比例。限流电阻的阻值按预充电流不超过额定电流的10%估算,容量要按I²t校核,否则合闸瞬间电阻直接烧掉。
第二阶段是可控充电。当电容电压普遍达到额定值的80%左右,解除子模块闭锁,进入可控Boost充电状态。这一阶段要有一个额外的“电压建立”PI控制器,逐步把直流母线电压抬到额定值。不能直接给定额定电压参考然后闭环给定,否则电流内环会饱和,直流电压过冲。
启动逻辑判据我建议这样设置:
- 预充电完成判据:所有子模块平均电压≥0.85Uc;
- 可控充电目标:电压外环参考从当前值斜坡上升到额定值;
- 闭环运行判据:直流母线电压稳定在额定值±1%持续几秒以上。
6.2 仿真中常见的发散问题与处理
仿真发散是一个必经过程,我罗列几个最常见的坑。
第一个坑:模型直接跳过预充电阶段,初始电容电压设为零就解锁闭环。结果电流内环一开始就饱和,输出参考电压顶到极限,电容电压一路乱跳。解决方法是老老实实在模型里加入预充电阶段,或者把初始条件设为电容电压等于额定值,再从稳态附近切入闭环。
第二个坑:均压排序与PWM载波不同步。前面已经提到,排序每个PWM周期更新一次时波形最干净。如果排序在异步中断里执行,电容电压纹波会出现明显的低频拍频。
第三个坑:环流抑制器输出极性错误。桥臂电流中的二倍频分量不但不衰减,反而被正反馈放大。调试时建议在桥臂电流波形里加一条二倍频分量的提取通道,一目了然。
第四个坑:仿真步长设置过大。详细子模块模型里如果步长超过等效开关周期的1/10,PWM谐波会严重混叠,THD测出来假性偏高。低压样机等效开关频率8kHz时,仿真步长建议小于1μs,至少也要到0.5μs量级。
6.3 实验调试中的几个实际坑与解决记录
实验调试和仿真完全是两种难度。我记录几个印象深刻的点。
第一个是传感器相位对齐。电流内环的解耦项里有ωL项,如果电流采样滤波引入的相位延迟和电压采样不一致,解耦就不彻底,dq轴之间会出现耦合,动态时电流会出现奇怪的振荡。解决办法很简单:在调试前对每一路采样做相位标定,或者统一使用同一型号的滤波器和同一采样时刻。
第二个是IGBT死区。死区时间在低压大电流场合会让交流电流在过零点附近出现明显的畸变,引入低次谐波。死区补偿能做,但参数标定麻烦;如果死区时间小于开关周期的1%,不补偿影响也可以接受。我的样机上死区2μs,开关周期500μs,占比0.4%,实测谐波增加了0.5%,我觉得可以接受。
第三个是预充电电阻的容量问题。第一次实验我把限流电阻阻值算对了,但容量选小了,合闸瞬间电阻冒烟。预充电电流的持续时间虽然短,但冲击能量不小,电阻选型必须同时校核峰值功率和I²t,不是只看稳态功耗。
第四个是数字控制的一拍延时。采样、计算、更新PWM占空比,整个过程至少有一拍延时,这会让电流内环的相位裕度下降。解决思路是加一拍延时补偿:把上一拍计算的输出延迟一拍执行,并在电流模型中引入对应的延迟因子。不补偿的话,电流带宽稍微调高就容易高频振荡。
7. 样机实测数据与后续可以扩展的方向
7.1 稳态与动态波形怎么看
这里以一套低压三相MMC整流器实验样机为例说明如何判断结果,参数为交流线电压380V/50Hz,直流母线800V,每桥臂4个子模块,额定功率10kW,调制方式CPS-PWM。
稳态时主要看四个波形:
- 交流侧电流:THD实测在2%~3%左右,波形接近正弦,说明电流内环和锁相环工作正常;
- 直流母线电压:稳定在799~801V之间,纹波以2倍频为主,幅度几伏,说明电压外环稳定;
- 桥臂电流:形状奇特是正常的,因为它等于直流分量Idc/3加交流分量的一半,叠加二倍频环流残余,所以既不是正弦也不是直线;
- 子模块电容电压:四个子模块电压都围绕200V波动,幅度2%~5%,排序均压有效。
动态测试建议做两个场景。第一个是直流侧负载突增,观察直流电压跌落幅度和恢复时间。正常情况下跌落不超过3%,恢复时间在100ms量级。第二个是有功电流参考阶跃,观察dq轴电流跟踪速度和超调,电流内环带宽设置合理时,上升时间在几毫秒到十几毫秒。
7.2 运行边界与后续扩展
三相MMC整流器做稳态运行只是第一步,真正到工程现场还差得很远。我个人建议按这个顺序继续深入。
第一,不平衡电网电压下的控制。电网电压出现不平衡时,交流电流会出现负序分量,直流电压产生二倍频波动。需要在控制中加入正负序分离,负序电流可以按抑制目标处理,这属于进阶内容。
第二,故障穿越。交流侧电压跌落和直流侧短路是两种完全不同的故障模式。交流跌落要考低电压穿越,直流短路对半桥MMC来说很棘手,可以考虑故障保护策略或改用全桥子模块。
第三,新能源直流汇集和中压变频回馈。MMC整流器经常作为直流母线的电压源,给后级逆变器供电,这时候系统的稳定性不只看整流器自身,还要看后级恒功率负载的恒功率阻抗特性,容易引发振荡,值得深入测试。
第四,黑启动和无源网络供电。整流器给无源负载供电时没有电网提供锁相参考,需要切换到虚拟同步或恒频恒压控制,这是完全另一套控制架构了。
我自己做完这套样机后最大的体会是:MMC整流器不难在某个单点,难在所有环节都必须协同工作。锁相环、外环、内环、环流抑制、均压排序,每一环都关系到最终波形质量,调试时必须一层层验证,先用受控源模型确认控制,再上详细模型确认开关行为,最后才上实验台。最后分享一个调试小技巧:在控制器里把桥臂电流的二倍频分量实时提取出来显示,环流抑制是否生效一目了然,比看总THD直观得多。这个参数在仿真里很容易加,在实验平台里也就是几个乘法器和滤波器的事,值得做。