级联型电力电子变压器高压侧为何都用MMC?控制系统与调制策略全解析
2026/9/9 19:12:08 网站建设 项目流程

级联型电力电子变压器的高压侧,最后为什么都绕不开MMC?早期做项目的时候我也试图用两电平拓扑硬扛,结果IGBT直接串联的均压问题、输出谐波问题和开关损耗问题一个接一个,折腾了快一个月样机还在冒烟。后来转向模块化多电平方案,把控制器做成一套支持3到12级联的通用平台,移相载波、最近电平逼近和两种混合调制全部跑通,才算是把这个方向真正吃透了。这篇就把这套高压直流MMC控制系统从架构设计到三种调制策略的实现细节完整梳理一遍,适合正在做电力电子变压器、储能变流器或者中压直驱的同行参考。

1. 高压侧输入级为什么非MMC不可

1.1 级联型PET的结构和MMC的角色

级联型电力电子变压器的整体结构,一般先用高压侧变换器把10kV甚至35kV的交流电整流成中压直流,再经过高频隔离DC-DC环节降到低压直流或直接逆变成交流。高压侧的AC/DC环节,就是MMC最典型的主战场。

为什么高压侧不用普通两电平?最直接的原因是IGBT串联。10kV交流系统整流之后直流母线接近15kV,单个3300V或4500V的IGBT根本扛不住,需要多个器件直接串联均压。串联器件的动态均压、栅极同步是个大工程,而且两电平输出dv/dt非常大,对电机绝缘、变压器绕组和对地寄生电容都是实打实的伤害。MMC用低压子模块串联,每只IGBT承受的电压只取决于子模块电容电压,一般设计在1.5kV到2.2kV的量级,器件选型门槛低很多,模块又能做成标准品。

级联型PET里,MMC的角色很明确:它不是一个孤立的换流器,而是整个能量链路的高压输入级。前面接高压交流电网,后面接中压直流母线,再通过隔离型DC-DC变换器和低压侧相连。MMC除了完成整流,还要保证输入电流正弦、功率因数可调、中压直流母线稳定。控制器的性能直接决定了这台电力电子变压器能不能并网、能不能承受负载突变、能不能在电网电压跌落时撑住。

1.2 控制系统要解决的三个难题

MMC的拓扑优势也不是白来的,控制上要给三件事兜底。第一是子模块电容电压平衡。每个子模块的电容器在投入时被充电或放电,切除时基本保持不变,如果不加控制,电容电压就会发散,轻则波形畸变,重则IGBT过压击穿。第二是环流抑制。三相桥臂之间存在二倍频负序环流,它不经过负载,只在桥臂之间来回流动,会明显增大桥臂电流有效值和电容电压波动。我们系统的桥臂电抗器是20mH,在6级联、2kHz载波参数下,不加环流抑制时桥臂电流会高出正常值15%左右。第三是调制策略。桥臂输出电压的质量、开关损耗、电容电压波动的平衡,几乎完全取决于调制方案。

这三件事不是独立的。调制决定了子模块的投入序列,投入序列和桥臂电流共同决定了电容电压是否平衡。所以我在设计控制系统时,实际上是把调制和均压放在同一个任务里做的,而不是分开处理。这也是这套控制系统为什么在FPGA里同时实现PWM比较、载波管理、排序均压和环流抑制的重要原因。上层控制环路的输出,最终都要落到“哪个子模块在什么时候导通”这一个基本动作上,而这个动作就是由调制策略和均压策略共同决定的。

2. “级联数可选”不是简单改个数,而是整套控制器的架构升级

2.1 为什么要求级联数可选

做样机研究的都懂,一个平台如果能覆盖多个拓扑参数,调试效率是完全不一样的。我们最初按6级联设计,后来为了验证8级联和12级联下的谐波特性,改一次软件就要动一次FPGA逻辑,非常痛苦。后来干脆把控制器的最大级联数放开到12,实际运行级联数由上位机参数配置,不烧录程序就能切换。

“级联数可选”在工程上的意义不止是省编译时间。它还直接对应工业场景中的模块冗余:某个子模块故障被旁路后,系统可以在剩余模块下降额运行,而不是整机停机。比如6级联系统旁路一个模块后变成5级联,如果控制器的调制逻辑、均压逻辑写死为6,系统就只能停机。所以级联数可选的本质,是把硬件拓扑的灵活性交给控制软件。这套平台后来在一台10kV/1MVA的电力电子变压器样机上跑过,也在一台3级联的实验室小功率验证平台上跑过,同一版控制器固件,差别只有参数配置。

2.2 FPGA+DSP分工与载波通道设计

我们用的是“DSP TMS320F28379D + FPGA Artix-7”的双核架构。DSP负责上层控制:电压外环、功率外环、环流抑制计算,得到每相上下桥臂的参考电压;FPGA负责一切和“快”相关的内容:三角载波生成、PWM比较、NLM的计算、排序均压、故障封波和硬件保护。

为什么不用DSP直接出PWM?因为MMC的PWM输出路数太多了。12级联时,三相上下桥臂共6个桥臂,每个桥臂12个子模块,一共72个子模块,每个半桥有两路PWM互补输出,就是144路PWM。DSP的ePWM外设再强也带不了这么多路。FPGA的IO资源就灵活得多,而且PWM比较和相位管理在硬件逻辑里可以做到纳秒级同步。

载波通道设计上,FPGA内部为每个子模块分配一个独立的载波计数器,计数频率是全局统一时钟,计数上下限由载波频率参数决定。级联数为N时,只需要让N个计数器参与比较,多余的计数器保持静止并输出低电平。通过参数寄存器,把N值、相位偏移量、排序队列长度全部变成运行时变量。这里最核心的设计原则是:所有逻辑都不写死固定的N,凡是和级联数相关的运算,都从参数寄存器读取。

2.3 动态生成排序队列和调制波表的细节

级联数变化时,排序算法处理的数组长度也在变。我们在FPGA里给排序器预留了最大12个元素的存储空间,通过参数寄存器传入实际长度。排序结果不再直接驱动IGBT,而是输出一个“投入模块编号表”,PWM比较逻辑根据这个表和当前工作模式决定最终脉冲。

调制波表也一样。DSP每周期把桥臂参考电压标幺值下发到FPGA,FPGA根据当前调制模式把它换算成各子模块的调制波。换模式时,只需要把换算逻辑切换一下,而不需要修改外围电路。这样一套控制器就能服务多种样机,也是后面能同时支持移相载波、NLM和混合调制的根本原因。

3. 移相载波(PSC-PWM)调制的工程细节和实测参数

3.1 载波相位角的计算:以6级联为例

PSC-PWM的原理不复杂:桥臂内N个子模块共用同一个正弦调制波信号,每个子模块使用独立的三角载波,相邻载波之间的相位差固定为360°/N。仍以6级联为例,子模块1的载波相位定为0°,子模块2就是60°,子模块3是120°,依此类推。N个模块叠加的结果,桥臂电压等效开关频率是单个模块开关频率的N倍,而每只IGBT的开关频率还是单个载波频率,这是它最大的价值:用多模块并行换取了高频输出波形。

相位偏移在FPGA里不是算角度,而是算计数器的预装载值。假设载波计数器范围是0到1249(对应2kHz载波,时钟100MHz),那么相位步进就是1249/6约208个计数单位。第i个子模块载波计数器上电时就先装载(i-1)×208,之后每个载波周期都自由振荡。这样从宏观上看,6个载波信号均匀错开60°,非常直观。

子模块编号载波相位偏移FPGA计数器初值
10
260°208
3120°416
4180°624
5240°832
6300°1040

3.2 载波同步对时的三个坑

这里必须多说两句,因为PSC-PWM最经典的坑就在载波同步上。

第一个坑是计数器初值只在系统启动时装载一次,运行中如果发生复位或干扰,载波相位就会错位。比如某个子模块的计数器由于电磁干扰被清零后,它和其余模块的相位差不再是规则角度,桥臂电压立刻出现不均,严重时会产生很大的模块间环流。我们的做法是每个控制周期在同步脉冲时,对所有计数器的相位偏差做一次校正,如果偏差超过±1个计数单位,就重新装载相位初值。

第二个坑是同步脉冲和PWM比较逻辑的时序竞争。同步脉冲一般由主控制器的定时器产生,但PWM比较也要在载波顶点或底点翻转。如果同步动作发生在比较器翻转的同一拍,两个逻辑会对同一个计数器写入不同的预期值,造成抖动。解决办法是把同步脉冲延迟几个时钟周期,确保比较器先完成翻转,再做相位校正。

第三个坑是高频干扰下光纤接收的PWM指令毛刺。这个问题不只在PSC,但PSC对相位精度最敏感。我们在输出PWM去光纤之前加了一级双沿锁存:比较器结果先进入一个跨时钟域触发器,确认稳定后再发送到光纤发送器,代价是增加两个时钟周期延迟,换来的是相位抖动从几十纳秒降到几纳秒。

3.3 PSC下的电容电压均衡修正

PSC-PWM方案里,所有子模块的调制波如果完全相同,电容电压平衡靠的是自然平衡,但这种平衡能力在调制比较深、负载波动大的时候是有限的。工程上常用的做法是给每个子模块加一个电压均衡修正量。

修正量的逻辑是:如果第i个子模块电容电压低于参考值,并且当前桥臂电流方向是在给电容充电,就稍微增大这个模块的占空比,让它多投入一会儿。如果电流方向是放电,就减小占空比。FPGA内部用了一个一阶PI环,对每个子模块生成独立的修正量Δv_i,叠加到公共调制波上。这个修正量的限幅必须做小,否则会引入低次谐波,我们一般把修正量限制在基波调制波幅值的5%以内。

实际调试时还有一个细节:PSC的自然平衡能力在高调制比时变弱,所以修正量环路的PI参数需要跟着调制比做增益调度。最初我们用固定参数,结果在调制比0.8附近电容电压纹波偏大,改成增益调度后好多了。这套东西在6级联、2kHz载波参数下实测,电容电压波动能控制在额定值的8%以内,线电压THD大约1.8%,作为整流器输入级是够用的。

4. NLM最近电平逼近:低开关损耗的取舍和排序优化

4.1 NLM的计算逻辑与量化误差

NLM的思路比PSC简单粗暴一点:每个控制周期里,根据桥臂参考电压和子模块电容电压平均值,算出当前应该投入的子模块数,n* = round(v_ref / U_c_avg)。用这个整数直接决定桥臂的输出电平数,不需要高频PWM载体。

量化误差就是这个round带来的。最大量化误差是±0.5U_c,当N=6、U_c=1.7kV时,最大误差0.85kV,相对于10kV直流母线大约8.5%。这在低压级联数少的场合是不可接受的,因为低次谐波会很大。但当地平数足够多,比如柔性直流输电工程中一个桥臂有200个模块,量化误差摊薄到0.5%以下,NLM的波形质量完全可以满足并网要求。

NLM的优势在于开关频率低:IGBT不需要高频开关,只在需要增减一个电平的时候动作一次,所以开关损耗远低于PSC。PSC的损耗是每只IGBT都在2kHz高频开关;NLM下平均每只IGBT的开关频率往往只有几百赫兹甚至更低。在我们样机上做过对比,全PSC方案12kV直流母线下的总损耗中,开关损耗占比明显比全NLM高,NLM的损耗优势在大容量场景下尤其突出。

4.2 电容电压排序在工程里的优化

NLM和均压是绑定在一起的。基本逻辑是:如果桥臂电流正在给电容充电,就优先投入电容电压最低的那些模块;如果电流在放电,就优先投入电压最高的模块。这样一轮投切下来,电压低的充得多、电压高的放得多,整体维持平衡。

工程优化的重点在排序算法。冒泡排序在12个模块以内几乎没有成本,FPGA里几百个时钟周期就完成了,但一旦级联数到了几十上百,每周期全量排序就会变成瓶颈。我们在这套平台上做过的优化有三个方向:一是不重排所有模块,而是每次只找出需要调整的少数模块,基于上一周期的投入状态做增量调整;二是用插入排序替代冒泡排序,因为电容电压变化是缓慢连续的,上一周期已经有序的序列,这一周期插入调整几个元素就恢复了;三是排序周期和投切周期分离,排序可能每几个控制周期执行一次,投切决策每个控制周期检查,避免排序抖动导致频繁投切。

排序方案最坏复杂度12级联时典型耗时适用场景
冒泡排序O(N²)约1.2微秒级联数少、逻辑简单
插入排序O(N²)最坏,近似O(N)约0.3微秒电压变化缓慢的稳态
增量调整法O(k),k为调整模块数约0.1微秒大级联数、动态要求高

这里的时间是基于100MHz FPGA时钟的估算。对于12级联,三种算法都能跑得动;但对上百个模块的系统,增量调整法几乎是必须的。

4.3 适合NLM的边界条件

NLM不是万能的。在我这套系统里,当级联数小于8的时候,NLM的谐波性能劣化明显,尤其是滤波电感和EMC的要求高的时候,就不太适合。反过来,当级联数大于12的时候,PSC的开关损耗会高到散热系统难以接受,NLM就成了更优解。

还有一个边界是暂态过程。NLM的量化输出在暂态时可能会出现电平跳变,比如调制波快速变化时,投入数一次跳变两个甚至三个电平,电容电压波动会瞬间加大。所以我们在暂态模式下会限制投入数的变化步长,每个控制周期最多增减一个模块,代价是动态响应变慢一点,但保护了电容和IGBT。这也是后面混合调制里分组分工能够各取其长的原因。

5. 混合调制的实现:分组分工和模式切换不产生电压冲击

5.1 分组混合:A组PSC精细调,B组NLM扛基波

这套控制系统里,真正让我满意的是混合调制。它的思路是把一个桥臂内的子模块分成两组:A组用PSC-PWM高频调制,B组用NLM低频动作。以6级联为例,子模块1和2作为A组,载波相位差180°,子模块3到6作为B组,按最近电平逼近工作。

总桥臂参考电压v_ref在0到6之间变化。B组根据最近电平原则输出整数电平n_B,范围0到4,钳位到0到4;A组处理残差,调制波就是v_ref减去n_B,范围保持在0到2之间。这样B组以阶梯波形式承担大部分电压,A组在残差部分做高频PWM精细填充。实现中要注意分配逻辑要钳位,保证A组的调制波不会超出0到2的区间,否则A组会进入过调制。

实测下来,这个方案在波形质量上接近6个模块全PSC,开关损耗接近全NLM。B组模块的平均开关频率只有几百赫兹,A组的两个模块按2kHz工作,总损耗比全PSC下降明显。我也把A组和B组的比例做成参数,3+3、2+4、1+5、4+2都试过,最优配置和滤波电感、环流抑制参数有关,不能一概而论,需要仿真扫描加实验验证。

5.2 参数化切换与滞环阈值设计

另一种“混合”是按工况做模式切换。我们的上位机里有一个调制策略参数,可以选PSC、NLM或AUTO。AUTO模式下,FPGA内部判断当前等效级联数:如果N小于8,用PSC;N大于12,用NLM;8到12之间根据调制比m做滞环切换。

滞环是必须的,不然边界处会出现模式振荡。比如调制比在0.55附近抖动,若切换阈值是精确的0.55,系统会在PSC和NLM之间来回切,每次切换都会带来一次扰动。我们设置了0.05的滞环宽度:从PSC切到NLM需要m>0.575,从NLM切回PSC需要m<0.525。切换动作由一个状态机管理,只有在上位机下发允许切换命令、且当前桥臂电流过零附近时才真正执行。

5.3 切换时如何避免模块投入数跳变

模式切换最怕的是投入数跳变。比如切换瞬间,PSC逻辑还认为某四个模块是投入状态,而NLM逻辑重新排序后选了另外四个模块,那么在切换时间内桥臂就可能出现过压或欠压。

我们用的方法是先保持后切换。状态机一共有四个状态:PSC_RUN、HOLD_A、NLM_RUN、HOLD_B。在HOLD_A状态,所有PWM输出冻结在切换前的占空比,同时NLM逻辑开始按当前电容电压和桥臂电流生成投入模块表,但不输出;确认投入模块表稳定后,再解除PWM冻结,切到NLM_RUN。整个过程耗时约一个控制周期,即100微秒,电压冲击可以控制在额定值的2%以内。这个顺序反过来也一样适用,总而言之切换期间绝不能出现“两边同时写PWM状态”的情况。

实际上,模式切换的代码是整个工程里最容易出bug的部分,我们现在把它独立成一个小模块,并且加了专门的示波器观测通道,每次切换时同时记录切换命令、冻结使能、模块投入表、桥臂电压,方便定位问题。调试初期有一次切模式直接触发直流过压保护,就是靠这个观测通道抓到HOLD状态时间设短了,投切表还没稳定就解除了冻结。

6. 联调复盘:四个容易被忽视的坑

6.1 载波计数初值装载导致相位漂移

第一个坑前面提过,PSC载波同步。我要强调一下,这个坑在仿真里完全看不出来,因为仿真里计数器是理想同步的,只有上了台架,电磁干扰一进来,相位漂移才会暴露。我们的排查路径是:先观察桥臂电流出现明显的低频脉动,再对比各子模块的PWM脉冲占空比,发现子模块2的脉冲序列和其他模块的相位关系不稳定,最终定位到计数器初值受干扰。解决办法是每个控制周期同步校正,并给所有PWM输出加跨时钟域锁存。

6.2 排序结果与PWM比较不同步

NLM模式下,排序器输出的投入模块表和控制周期是同步的,但和PWM比较器的节拍不一定对齐。早期版本里,排序模块在控制周期任意时刻更新投入表,如果PWM比较器恰好在同一时刻完成一次比较,两个逻辑对同一桥臂的模块投入数会产生不一致的中间态。实际现象是输出波形出现极窄的毛刺脉冲,IGBT驱动偶尔误动作。后来我们把排序结果的更新动作统一放在控制周期的固定相位,并且在比较器输出端加了一级寄存器延迟一拍,让所有变化都只发生在时钟沿上,问题就消失了。

6.3 光纤回传的电容电压抖动影响排序

电容电压采样是通过子模块控制板采集后,用光纤回传到主控制器的。光纤通信本身有固定延迟,但每个模块的采样时刻不同,回传到主控制器的电压值就带有时间差。NLM排序时如果直接用这些带时延的电压值排序,可能出现选错模块的情况:某个模块显示电压低,实际是因为它的数据晚了一个采样周期。

我们的处理办法是在主控制器里给所有模块的电容电压做通道对齐,同时每个模块的电容电压先做一阶低通滤波,时间常数约10毫秒,再进入排序器。低通滤波会稍微降低均压的动态响应,但能明显减少排序抖动的误动作。这个滤波时间常数是一个值得仔细调的参数,不同功率等级和电容容量下最优值不同,我们后来在12级联大功率样机上把时间常数调到了15毫秒才稳定。

6.4 故障封波后剩余模块的过压

最后这个是模块化系统特有的坑。某一个子模块因故障被旁路(或者IGBT闭锁)后,如果控制逻辑还按原来6个模块的均压策略分配投入数,剩余5个模块承担的电压会被强行抬高,很容易触发过压保护,形成连锁故障。

我们的做法是:收到子模块故障信号后,先把该桥臂的“有效模块数”从6改为5,所有均压、排序、调制计算都按5个模块重新执行。同时,桥臂参考电压的限幅值也要动态调整,不能让输出参考电压超过剩余模块的物理能力。这一套逻辑加进去之后,冗余旁路试验才算真正跑通,连续旁路两个模块,系统依然能降额运行。

我在实际调试中还有一点很深的体会:上述所有的问题,仿真阶段几乎都发现不了,因为仿真里的时钟永远是同步的、采样永远是理想的、模块永远不会故障。很多问题只有把控制器接上真实功率台架才会暴露。所以如果你也在做类似的控制系统,建议尽早把单板保护、跨时钟域同步、排序节拍这些细节放进设计清单,而不是等到联调阶段再补。先把调制算法跑通不难,难的是让三种调制策略在同一套硬件上稳定切换、在故障后还能可靠降额运行。那些“最后一公里”的工作,往往才是真正决定系统能不能交付的部分。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询