VSG+MMC+NLM:受端换流站构网型控制与工程实践
2026/9/15 0:19:52 网站建设 项目流程

做受端换流站这几年,我最大的感触就是:锁相环那套跟网型控制,用到弱网和无源负荷场景,真的会一步一步被现实教做人。这一版项目我把控制策略整体换成了虚拟同步机(VSG),主电路用的是完全自己搭的模块化多电平换流器(MMC),调制策略选了最近电平逼近(NLM),目标场景就是受端换流站。标题里的缩写拆开看很直白:VSG是虚拟同步机,MMC是模块化多电平换流器,NLM是最近电平逼近调制,SM就是MMC里的子模块。这几个词凑在一起,做柔性直流和新能源并网的人应该不陌生,但真正把它们从算法到主电路完整打通、在受端场景里跑稳定,中间踩的坑远比想象中多。

这篇文章我不打算讲教科书式原理,而是把这几个月从仿真到样机的完整思路、关键参数计算和调试中遇到的实际问题梳理一遍,给后面做类似项目的人一个可以直接参考的底稿。

1. 从"跟网"到"构网":受端换流站为什么必须要换控制思路

不少人觉得受端换流站和送端换流站的区别不就是功率方向反了一下,控制上把参考值取反就行。实际真不是这样。受端换流站在直流输电系统中扮演的是逆变侧角色,把直流功率送到交流系统。如果受端交流系统很强,短路比高,那用传统跟网型控制确实没什么问题;可一旦受端是弱交流系统,短路比低到2以下,甚至只带本地负荷,锁相环首先就开始乱。

我在项目前期试过两版跟网型方案:一版是经典的双闭环加PLL,另一版是PLL前加滤波优化的改进型。仿真在短路比3的时候还像模像样,降到1.5左右就开始暴露问题——PLL检测到的电网相位在系统扰动时出现明显抖动,相位一抖,电流内环的dq轴分量跟着抖,直流功率波动直接反映到交流电压上,严重时能激发持续的功率振荡。后面分析本质原因也很清楚:跟网型控制的锁相环节假设交流系统是一个足够强的电压源,弱网下这个假设不成立,你越是努力去锁一个不稳定的相位,系统越不稳。

VSG走的是另一条路。它不依赖PLL去锁定外部电网相位,而是通过模拟同步发电机的转子运动方程,自己产生一个相位和频率。换句话说,换流器在交流侧表现出的特性更像一台真实的同步发电机,有惯性、有阻尼,电压和频率由自己建立。对于受端换流站来说,这意味着哪怕对端是弱网甚至无源网络,只要直流侧有能量输入,它就能撑起一个稳定的交流电压。

MMC在这里也不是随便选的。受端如果带无源负荷或弱负荷,对电能质量要求往往比较高。两电平VSC输出需要大型滤波器,动态响应时滤波器还可能和弱网阻抗发生谐振;MMC通过多个子模块电平叠加,输出波形逼近正弦,本身谐波就很小,配合NLM还能把开关频率压得非常低。从系统层面看,VSG负责"构网",MMC负责"高质量执行",这个组合对受端换流站来说确实是一对很好的搭档。

2. MMC主电路与NLM调制:先搞清楚子模块和最近电平是怎么回事

2.1 SM子模块到底是什么

很多人第一次接触MMC都会问SM是什么。SM是Sub-Module的缩写,也就是子模块,它是MMC最小的功率单元。最常用的是半桥子模块,结构上由一个直流电容和两个IGBT(带反并联二极管)组成。

半桥SM的工作状态说白了就是两种:上管导通下管关断时,模块端口输出电容电压Vc,这时候叫"投入";下管导通上管关断时,模块端口输出0,叫"切除"。另外还有闭锁状态,两个管子都关断,一般用于启动预充电或故障保护。全桥SM能输出负电平,但成本和损耗高,常规受端逆变场景半桥就够了。

每个桥臂由N个SM串联起来,再加上一个桥臂电抗器。三相一共六个桥臂,上下桥臂构成一个相单元。交流侧的输出电压,就是通过控制每个桥臂投入多少个子模块来合成的。

2.2 NLM的取整逻辑

NLM最近电平逼近的原理非常朴素:既然每个SM只输出Vc或者0,那某个桥臂需要的电压参考值除以单个模块电压,再取最近的整数,就是当前应该投入的SM数量。

以上桥臂为例,设直流母线电压为Vdc,交流相电压参考值(对直流虚拟中点)为v_ref,那么上桥臂电压参考就是:

v_p_ref = Vdc/2 - v_ref

需要投入的SM数量:

n_on = round(v_p_ref / Vc)

其中Vc是子模块电容电压的平均值。得到n_on之后,在均压排序算法里选出对应数量的SM投入即可。下桥臂同理,v_n_ref = Vdc/2 + v_ref。

N从几到几十不等,电平数就是N+1,线电压电平数可以达到2N+1。电平数越多,逼近正弦波的台阶越细,谐波越小。

2.3 电容电压均衡排序:NLM的灵魂

NLM本身只是一个"选几个模块投入"的逻辑,真正麻烦的是选哪几个。因为每个SM的电容量和损耗不可能完全一致,如果一直投入固定几个模块,有的电容电压会越充越高,有的越来越低,最终损坏器件。

均压排序的标准做法是:每个控制周期采样所有SM的电容电压,按大小排序,再根据当前桥臂电流方向决定投入优先级。桥臂电流给模块电容充电时,优先投入电压较低的模块;桥臂电流给电容放电时,优先投入电压较高的模块。这个逻辑一句话就能讲完,但工程上有几个细节值得注意。

第一,排序周期不能太长也不能太短。太短模块开关频率过高,开关损耗变大,还会让IGBT的温升压力很大;太长电容电压均衡效果变差。我在这套系统里把排序控制周期设在100微秒,也就是10kHz,N=12的样机上模块平均等效开关频率只有几百赫兹到1kHz左右,比两电平PWM动辄几kHz到十几kHz的开关频率低很多。

第二,纯排序会造成不必要的额外开关动作。一个模块上一周期投入这周期切除,下周期又投入,开关次数被白白浪费。工程上可以在排序结果上叠加一个保持因子,优先保留上一周期已经投入的模块,除非电压偏差真的到了必须轮换的程度。这个优化对降低开关频率、减少发热非常有效。

2.4 桥臂电抗与环流的关系

MMC桥臂电抗不是随便选的,它承担着抑制桥臂间环流和限制故障电流上升率的任务。三相上下桥臂之间由于瞬时功率不平衡,会产生以二倍频为主的环流,流过桥臂但不出现在交流侧,增加损耗,还会让电容电压波动变大。桥臂电抗越大,环流抑制能力越强,但电抗大了动态响应变慢、成本体积也上去。工程上一般取0.1pu左右,后面参数计算部分我会给具体数字。

对比项NLM载波移相PWM
载波需求不需要需要N组相位错开的三角载波
计算量排序为主,随N复杂度约O(NlogN)调制波比较为主,实现简单
均压策略天然通过排序实现需额外配合均压控制
等效开关频率低,适合N较大场景高,适合N较小场景
输出谐波电平数多时很低,电平切换处有明显台阶谐波集中在载波倍数附近,频谱规律

我这套系统里N取12,线电压已经25个电平,NLM的优势非常明显。如果N只有2到4,那用载波移相PWM反而更省事,这是选型时要先想清楚的事。

3. VSG核心算法:转子方程、下垂特性与受端运行模式

3.1 有功-频率通道的虚拟转子方程

VSG的核心是转子运动方程。真实同步发电机的转子有转动惯量,机械功率和电磁功率的不平衡会导致转速变化,而转速就是电网频率。VSG在算法里把这个过程用方程复现出来:

J * dω/dt = P_ref/ω0 - P_e/ω0 - D*(ω - ω0) dθ/dt = ω

J是虚拟转动惯量,D是虚拟阻尼系数,P_ref是有功功率参考值,P_e是实测电磁功率,ω0是额定角频率,θ是VSG输出电压的相位。

这个方程的意义在于:当外部负荷突然增加时,P_e瞬间大于P_ref,dω/dt变成负值,输出频率下降,但因为有惯量J,频率不会像跟网型控制那样瞬间跳变,而是平滑过渡。D则提供阻尼,抑制频率振荡。θ通过积分得到,替代了PLL的功能,这就是VSG不需要强锁相环节的根本原因。

功率计算上我直接取瞬时功率再低通滤波。三相采样电压和电流算瞬时功率P_e、Q_e,注意滤波时间常数要和虚拟惯量配合,滤波太深会让惯量效果失真,太浅功率纹波会影响转速波形。

3.2 无功-电压通道

无功-电压通道比有功部分简单。VSG参考电压幅值E通过无功下垂得到:

E = E0 + k_q*(Q_ref - Q_e)

E0是额定电压幅值,k_q是下垂系数。Q_e是无功功率实测值,当系统需要更多无功时,电压幅值会适当下调,模拟同步发电机的励磁调节特性。在并网模式下这个通道用于支撑电压和分配无功;在孤岛带无源负荷模式下,我更倾向于固定E0,因为无源负荷没有频率调节能力,电压幅值需要保持稳定,但可以加一个很弱的无功下垂来避免无功过冲。

3.3 受端换流站为什么需要运行模式切换

这一节是受端场景最容易踩坑的地方,我单独拿出来说。VSG本身的转子方程并不区分并网还是孤岛,但受端换流站实际运行时,有功参考P_ref的来源必须根据场景切换。

如果系统是双端直流输电,送端整流站负责定直流电压,那受端VSG的P_ref可以直接来自功率调度,甚至固定为一个设定值。但如果受端需要自己维持直流电压,比如对端是定功率控制,那么受端VSG的P_ref就不能固定,需要由直流电压外环的PI控制器输出。直流电压偏高说明输入功率大于输出,就要增加P_ref或者调整频率让负荷吸收更多功率。

孤岛模式下又是另一套逻辑。受端带无源网络时没有大电网给它提供频率参考,频率必须由VSG自己顶住,所以P-f下垂特性在这个模式下反而是有害的——频率该稳在50Hz就必须稳在50Hz。我的做法是:并网运行时用P-f下垂,孤岛运行时把下垂环节旁路掉,改为固定频率,保留虚拟惯量和阻尼,让直流输入功率通过转子方程自动平衡到负荷功率上。

这个模式切换在算法里其实就是一个开关量加逻辑判断,但很多人会忽视。如果直接在孤岛模式下沿用P-f下垂,负荷稍一波动频率就飘,严重时VSG会失去同步,整个受端系统垮掉。

4. 从VSG到MMC的完整控制链路:调制波是怎么一步步生成的

4.1 控制层级和信号走向

VSG算法生成的输出是三相参考电压e_a、e_b、e_c,波形为正弦,频率幅值都由转子方程和无功下垂决定。这个电压参考不能直接拿去触发MMC,中间还需要经过电压电流双闭环和桥臂分配。我在这套系统里的信号走向是:

直流电压/功率管理层 → VSG转子方程+无功下垂(生成E和θ) → 三相参考电压e_abc → dq坐标系下的电压外环PI → dq坐标系下的电流内环PI → 三相调制波v_ref → 桥臂电压分配(上桥臂Vdc/2 - v_ref,下桥臂Vdc/2 + v_ref) → NLM取整得到每个桥臂投入SM数量 → 均压排序选出具体SM → 触发脉冲

链路很长,但每一级的功能边界很清晰。VSG管电压源特性,电压电流双闭环管动态响应和限流,NLM管电平合成和均压。

4.2 电压电流双闭环为什么要保留

有些人会觉得VSG已经是电压源了,直接把参考电压送到NLM就行,不用再接电压电流内环。这种想法在理想模型里可能没问题,但实际系统里不行。原因有三个:一是桥臂电抗和线路阻抗会带来压降,没有闭环修正的话负荷端的电压精度没法保证;二是电流内环可以限制故障和过载电流,没有它VSG在短路瞬间会直接把IGBT打穿;三是电压电流环可以把VSG和MMC主电路之间的动态特性解耦,让惯量参数和电气参数各管各的,调试时更省心。

电压外环带宽我取在100到300Hz左右,电流内环带宽取1到2kHz。PI参数用传统的频域整定法,先根据桥臂电感和等效电阻算电流环,再根据交流侧滤波电容和等效阻抗算电压环,实测效果够用。

4.3 二倍频环流抑制的实现

MMC运行起来必然产生二倍频环流,这点在上面提过。如果不管它,桥臂电流会明显畸变,电容电压波动加剧,损耗增加。环流抑制的常规做法是在静止坐标下用二倍频PR控制器,或者在负序二倍频旋转坐标下用PI控制器。

我这版用的是负序二倍频旋转坐标系方案。采样每相桥臂电流,算出环流分量i_cir = (i_upper + i_lower)/2,变换到二倍频负序dq坐标系,用PI控制器把d轴和q轴分量压到0,输出补偿电压叠加到该相的上下桥臂参考波上。要注意补偿电压必须限幅,一般限制在额定电压的5%以内,否则会干扰NLM的正常电平分配。

4.4 关键参数计算示例

下面给一组我这版验证平台的实际参数,以及参数怎么来的。平台是低压小功率样机,额定容量10kVA,三相线电压380V,直流侧700V,每桥臂12个SM。

子模块电容电压额定值就是700/12,约58.3V。子模块电容容量按允许电压波动5%来设计,经验公式:

C_sm = S_N / (3 * N * ω * Vc * ΔVc) C_sm = 10000 / (3 * 12 * 314 * 58.3 * 2.9) ≈ 5.2mF

其中ΔVc是允许的电容电压波动绝对值,58.3V的5%约2.9V。工程上我取5mF,留一点裕量也不至于电容体积太大。

桥臂电感按0.1pu取。容量基准值10kVA,线电压380V,阻抗基准值就是380^2/10000=14.44Ω,电感基准值在50Hz下等于14.44/(2π×50)≈46mH,0.1pu就是4.6mH,实际选5mH。

虚拟惯量J按惯性时间常数3秒来取:

H = J*ω0^2/(2*S_N) J = 2*S_N*H/ω0^2 = 2*10000*3/314^2 ≈ 0.61kg·m²

阻尼系数D我最后是通过扫参定的。J确定后,D太小系统欠阻尼,有功阶跃后频率要振荡好几个周期;D太大系统响应迟钝,负荷突变时频率恢复很慢。对这台10kVA的样机,D在50到300之间都能稳定,但动态品质差别很大,我最终取120,对应的有功阶跃响应超调比较小,恢复时间也短。

参数数值说明
额定容量10kVA低压验证样机
交流线电压380V / 50Hz三相
直流母线700V对应调制比约0.95
桥臂SM数N12线电压25电平
SM电容电压58.3V允许波动±5%
SM电容5mF按波动公式计算
桥臂电感5mH0.1pu
虚拟惯量J0.61kg·m²H≈3s
虚拟阻尼D120扫参确定
排序控制周期100μs10kHz

5. 仿真和样机联调中踩过的几个关键坑

5.1 NLM临界点抖动问题

NLM用round取整,在电平切换的临界点会出现一种很讨厌的现象:调制波在某个电平附近轻微波动时,取整结果会在两个相邻整数之间来回跳,导致某个SM反复投切。表现到波形上是桥臂电流出现高频毛刺,IGBT开关频率变高,发热严重。

这个问题的本质是取整函数没有滞回特性。我加了一个小的滞回窗口来解决,原理类似比较器的滞回比较:只有当参考电压越过当前电平阈值的上下边界时,才允许n_on变化到相邻值,否则保持当前值。滞回窗口不能太大,一般取0.3到0.5倍Vc,太大会引入额外的波形台阶误差。加上之后,临界抖动基本消失,电流毛刺也干净了。

5.2 启动阶段预充电和相位对齐

MMC不能一上电就直接解锁触发脉冲。子模块电容初始电压是0,直接解锁会产生巨大的冲击电流。标准流程是先通过交流侧断路器给电容预充电,电流经过IGBT的反并联二极管给电容整流充电,充到额定电压的60%到70%左右再解锁,然后通过均压控制把电容电压拉到额定值。

预充电之后还有一个容易忽略的点:VSG启动时的初始相位必须和交流侧电压相位对齐。如果VSG生成的θ和外部电网相位差很大就投入,等于把一个很大的电压差直接加到桥臂电感上,冲击电流能直接把过流保护打起来。我的做法是启动时先让VSG处于相位跟踪模式,用PLL或简单的过零检测把θ初始值锁到外部电压相位,然后切换到VSG自由运行,同时电压幅值用斜坡在0.2秒内从当前值爬升到额定值。

5.3 排序频率和环流抑制输出限幅的配合

这部分是我调了很久才发现的问题。环流抑制的输出叠加到桥臂参考电压后,会改变n_on的计算结果,而排序算法又是基于当前桥臂电流方向来选模块的。环流抑制输出幅度过大时,模块投入数量的变化会和均压排序打架,电容电压在动态过程中出现明显的分散,严重时某一相模块电压偏差超过10%。

排查之后定位到两点:一是环流抑制PI的输出必须限幅,我限制在±5%额定模块电压以内;二是排序控制周期不能太快,否则模块切换太频繁,散热跟不上。实测下来10kHz的排序频率,搭配5%限幅的环流抑制输出,电容电压波动可以控制在5%以内,桥臂电流THD也明显下降。

5.4 虚拟惯量引发的功率振荡排查

有一版参数我把J调得比较大,想追求更强的惯量支撑,结果在并网模式下有功阶跃后出现了频率和功率的慢速振荡,振荡周期大概1.5秒,幅度还越振越大。一开始以为是环流抑制的问题,检查了半天发现根源是J和D的匹配关系。

J增大之后,转子方程的响应变慢,如果阻尼D没有同步增大,系统阻尼比就会降低,频率和功率之间形成持续的振荡。后来我把J稳定在0.61,D从80逐步扫到200,最终定在120,振荡问题消失。这个排查过程让我认识到,VSG的J和D不是独立参数,设计时必须放在一起看,最好先根据惯性时间常数定J,再用开环Bode图或者阶跃响应扫D,不要两个参数同时乱调。

6. 实测表现和后续想继续做的事

最后说一下这版VSG-MMC实际跑出来的效果。稳态情况下,10kW带阻感负荷,交流母线电压THD在2.5%左右,子模块电容电压平均值稳定在58V上下,波动幅度不超过5.5%。这还是在没有额外交流滤波器的条件下,NLM多电平的优势体现得很明显。负荷从5kW阶跃到10kW时,频率瞬时跌落了大概0.3Hz,转子方程的惯量特性让这个跌落过程是平滑的,大约0.3秒内恢复,整个过程没有出现功率振荡。

这套系统目前还在持续迭代。下一步我打算做两件事:一是把受端带无源负荷的黑启动流程完善,目前启动逻辑还依赖PLL做初始相位对齐,黑启动时对端没有电压,这个流程需要改成完全自主建立电压;二是尝试在桥臂SM数量更多、电压等级更高的仿真模型上验证NLM的扩展性,排序算法在N超过30之后对控制器计算资源的压力会明显加大,到时候可能需要用分组的快速排序替代全排序。

如果在看这篇文章的你也在做MMC或者VSG方向,我的建议很直接:先花时间把NLM的均压排序逻辑吃透,这是MMC的地基;再上VSG算法的时候,优先调好J和D的匹配,别急着追求大惯量;遇到奇怪波形问题先怀疑临界抖动、启动相位、环流限幅这几个高频坑,基本能省下大半个月的排查时间。

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

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

立即咨询