☰
VSG逆变器并联无功分配难题:自适应功率分配方案与调试实践
2026/10/14 6:19:06 网站建设 项目流程

最近在整理某双逆变器并联项目的调试笔记。项目本身不复杂,一台20kVA一台10kVA的逆变器,都跑VSG算法,并到同一个模拟微网母线上带负载。但调无功分配的时候确实憋了一肚子气:按容量2:1设计的系统,实际跑出来是12.2kvar对1.8kvar,几乎变成了6:1。换成你们那边的话讲,就是大机累死、小机摸鱼。而且这不是采样错,也不是接线错,是固定下垂参数在这种不对称工况下,从原理上就扛不住。

这篇文章不打算写成学术综述,我就按调试笔记的方式,把自适应功率分配方案为什么能解决这个问题的来龙去脉,以及参数怎么整、现场怎么调、踩了哪些坑,全部摊开讲。适合正在做微电网、储能PCS并联、UPS并机,以及任何与VSG多机并联系统打交道的人参考。下面的整定值都来自我手头某模拟项目X的样机,不同平台请按实际容量和线路条件折算,别直接抄。

1. 为什么并联VSG总是“抢无功”:先把问题定位清楚

1.1 双逆变器并联的典型诉求:容量扩展、冗余、不停机检修

逆变器并联不是吃饱了撑的,工程上就图三件事:容量扩展、冗余备份、不停机维护。一台20kVA不够带全部负载,就并一台10kVA进来;机房改造想边带载边检修,就得把负载切到另一台机器上。但并联一开,矛盾立刻出现:负载在两个模块之间怎么分,谁说了算?

正常预期是各机按额定容量比例分摊。20kVA和10kVA并联,负载如果一共需要30kVA,大机出20kVA、小机出10kVA,这个比例关系要一直稳住。遗憾的是,实际系统里"按容量比例"是个很脆弱的设想。有功功率因为频率是全系统统一的物理量,分起来相对容易;无功功率完全不是这么回事,它天生就喜欢乱跑,尤其是当两台逆变器到母线的线路阻抗不一样的时候,分配结果可以离谱到让你怀疑自己接错了线。

某园区微电网项目里就出过这种事:原先一台大PCS顶着办公楼负载,后来并了一台小PCS进来,想着负载一多小机器也能搭把手。结果负载每次波动,大PCS瞬间顶上,小PCS旁边看着;等到稳态,小PCS又慢慢把无功吐回来,最后几乎全部压在大机器头上。用户很生气,觉得花了钱没效果。问题不在机器,在于固定参数的功率分配策略根本没有能力处理"线路不对称"这个现实条件。

1.2 VSG的基础控制方程:它到底在“演”什么

VSG,虚拟同步发电机,核心思路是让逆变器在控制算法层面模仿同步发电机的机械动态。逆变器本身没有旋转的转子,但我们可以用一段转子运动方程,让输出频率和功率的关系带上"惯性"和"阻尼"的味道。代码写起来大概是这样:

// 转子运动方程离散化,控制周期 dt = 1ms omega = omega + (P_ref - P_e - D * (omega - omega_n)) / (J * omega_n) * dt; theta += omega * dt; // 无功-电压下垂 E_ref = E_n + n_q * (Q_ref - Q);

这里面的J是虚拟转动惯量,决定频率变化的惯性;D是阻尼系数,决定振荡衰减快慢。这玩意儿和传统下垂控制最大的区别就是:下垂控制是静态地在P-f平面画一条斜线,VSG是在这条斜线的基础上,额外模拟了一段"转子加减速"的动态过程。所以VSG并网的动态响应更像真实的同步机,对电网更友好,尤其适合弱电网和微电网场景。

但记住一点:无论VSG包装得多像一台发电机,它的外特性仍然可以等效成一个理想电压源串联一个输出阻抗。这个等效电压源的幅值、相位由VSG算法实时计算,输出阻抗由滤波器和虚拟阻抗决定。那么并联系统的功率分配问题,本质上就是你有一堆电压源串联各自阻抗接到一个公共母线上,每台机器分到多少功率,取决于各自的电动势差和阻抗。VSG只是让这个过程变得有惯性,并没有消除"阻抗不匹配导致无功分不均"这个物理事实。

2. 根因拆解:电压是局部量,线路阻抗一乱,无功就乱

2.1 频率是全局量、电压是局部量:先记住这句大实话

有功功率好分,根本原因是频率是全局量。两台逆变器并联运行,稳态下系统只有一个频率,只要各机P-f下垂曲线斜率与容量成反比,有功就会自动按比例分配。就像一群人站成一排听口令,口令只有一个节拍,你不可能一个人在1Hz一个在50.5Hz还并得住。

电压就不同了。公共母线只有一个电压值,但每台逆变器出口到母线之间都有线路阻抗,电流流过会生成压降。线路粗细长短不一样,每台机器出口的电压就不一样。偏偏无功功率的传输极度依赖电压幅值差:只有你的电压比母线电压高,你才往外送无功,否则你就要从母线吸收无功。所以,想让每台机器都按容量比例送无功,你必须精确控制"各自出口电压",让它们分别压过各自的线路压降,最终在母线处碰头。

这就像一个院子里有好几个水龙头,管子长短粗细都不一样。你要求每个水龙头出水量按阀门尺寸比例分配,但出水不仅看阀门开度,还看管子压降。管径长短天差地别,水流量怎么可能按阀门比例分配?

2.2 线路阻抗不匹配如何放大分配误差

为了说清楚这个放大效应,先看无功功率传输的近似表达式。忽略功角影响、假设线路以感性为主时,每台逆变器送出的无功大概可以写成:

Q_i ≈ E_i × (E_i - V_bus) / X_eq_i

其中E_i是逆变器端口电压,V_bus是公共母线电压,X_eq_i是VSG输出阻抗加虚拟阻抗再加线路阻抗的总感抗。从公式里能直接看出两个杀手:一是每台机器的等效感抗X_eq_i不一样,二是E_i本身又会随Q_i变化(无功下垂会让电压随着无功输出而调整)。两个因素叠在一起,会形成一个相当复杂的映射关系。

我的样机里,20kVA机器接的是约5米短电缆,Z≈0.05+j0.08Ω;10kVA机器接的是约20米长电缆,Z≈0.20+j0.32Ω。光看感抗,两者差4倍。再把VSG虚拟阻抗算进去,等效感抗比值被压到1.6倍左右,但仍然无法做到2:1分配。结果就是开头那个数据:固定下垂下,12.2kvar几乎全压在大机身上,小机只出了1.8kvar。线路阻抗不匹配,相当于给两台机器装了不同流量的闸门,而固定下垂策略完全不知道这个闸门差异的存在。

还有一个隐蔽问题:线路阻抗是会变化的。电缆温度升高,电阻变大;接头氧化,接触电阻变大;负载电流不同,压降也不同。固定下垂只是在一个特定工况点上偶然正确,工况一变,偏差立刻回来。

2.3 容量比例与下垂系数的设计关系:理论上该怎么设计

既然要按容量比例分配,固定下垂参数起码要做到"与容量成反比"。原则是:容量越大的机器,下垂系数越小,电压随无功变化的斜率越平缓;容量越小的机器,下垂系数越大,电压随无功变化越敏感。以我的样机为例,额定相电压幅值311V,允许无功满载时电压偏移约5%,那么20kVA机的无功下垂系数大约取0.00055V/var,10kVA机取0.0011V/var,两者比值刚好是2:1,与容量成反比。

但这个设计只解决了"阀门标定"的问题,没解决"管路长度"的问题。下垂系数设计得再漂亮,线路阻抗差异依然存在。打个比方,你按水龙头的口径比例标定了阀门,但管子一长一短,最终出水量照样失调。所以固定下垂本质上只是"出厂标定策略",不是"运行修正策略"。系统一旦接入不对称线路、负载率变化、环境老化之后,它没有任何手段去感知偏差、纠正偏差。

这就是我后来把方案改成自适应功率分配的根本原因:静态标定解决不了动态和不确定性,需要一台机器能实时感知"我分多了还是少了",然后自己把电压指令调回来。

3. 自适应功率分配方案设计:从固定下垂到低带宽协调

3.1 为什么固定下垂参数只能“勉强能用”

先别急着否定固定下垂,在很多对称工况下,它确实便宜可靠、不用通信、实现简单。两台逆变器容量一样、电缆一样长、负载对称,固定下垂系数按容量反比设好,无功分配误差通常能控制在5%以内,很多工程就直接用了。但一旦碰到下面三种情况,固定下垂就露馅:

第一,线路阻抗不一致,偏差从原理上就无法消除。第二,负载率变化,固定斜率在轻载和重载下的分配精度不一样,轻载时偏差比例更难看。第三,线路参数随温度、老化变化,出厂整定值逐渐失配。更现实的场景是,很多项目是分期建设的,第一期一套大机,第二期补一台小机,两台机器的安装位置和线缆路径完全不可能对称。固定下垂在这个前提下只能"勉强能用",前提是你能接受30%甚至更高的无功分配误差。

3.2 自适应调节环的设计:让分配误差收敛到零

我的方案核心逻辑非常简单:把每台机器的无功输出按各自额定容量归一化,然后让所有机器的归一化值收敛到同一个目标值。定义:

η_i = Q_i / S_Ni

S_Ni是第i台机器的额定容量,Q_i是当前实际输出无功。理想情况下,20kVA机输出9.3kvar、10kVA机输出4.7kvar时,两台机器的η都是0.467,分配完美。而固定下垂下η1=0.61、η2=0.18,差了3倍还多,这就是我们要消灭的误差。

具体做法是在VSG的电压参考值上加一个修正项ΔE_i。原来VSG算出的电压参考是E_ref = E_n + n_q × (Q_ref - Q),现在变成E_ref = E_n + n_q × (Q_ref - Q) + ΔE_i。ΔE_i由下面的调节器生成:

// 控制周期取10ms,协调器每200ms广播一次目标值 static float integral = 0.0f; float eta_self = q_kvar / s_rated_kva; // 本机归一化无功 float eta_ref = comm_get_eta_ref(); // 协调器下发的全局目标 float err = eta_self - eta_ref; integral += ki * err * dt; if (integral > INTEG_LIMIT) integral = INTEG_LIMIT; if (integral < -INTEG_LIMIT) integral = -INTEG_LIMIT; float delta_e = kp * err + integral; // 电压修正量 if (delta_e > DELTA_E_MAX) delta_e = DELTA_E_MAX; if (delta_e < -DELTA_E_MAX) delta_e = -DELTA_E_MAX; e_ref = e_base + nq * (q_ref - q) + delta_e;

为什么用电压修正项而不是直接改下垂系数?因为改下垂系数会改变VSG在动态过程中的等效输出阻抗,调节器一动,机器对外表现的"硬度"就变了,波动工况下容易出现调节器跟着功率纹波跑的问题。电压修正项只动稳态工作点,不改变动态阻抗特性,和VSG原有的惯性、阻尼行为是解耦的。

整个调节环的时间尺度要刻意放慢。VSG的机电时间常数大约在0.5到1秒级别,自适应调节环的积分时间常数我取到5秒以上,通信周期200毫秒,这样功率波动、负载阶跃这些高频动态完全不会干扰到分配调节。你可以理解为:VSG负责"快"的动态,自适应环负责"慢"的稳态修正,两者各管一段。

3.3 通信方案与降级模式:低带宽、轻协调、保稳定

要做自适应,就必须知道目标值η_ref和每台机器当前的η_i。代价是要引入通信。但别慌,这个通信需求极低:每台机器只需要周期广播一个标幺数值,也就是归一化后的无功值,几百字节的报文就够,用低速RS-485总线或者CAN总线就能跑,完全不影响系统实时性。

我用的结构是一个小协调器周期计算全局目标值:η_ref = ΣQ_i / ΣS_Ni,也就是总无功除以总容量。协调器把这个数广播给所有机器,各机本地用PI调节器把本机η_i拉到η_ref。这个方案的好处是目标值物理意义清晰,严格按总容量加权平均定义,容量大小不同的机器天然权重不同,大机分得多、小机分得少。

如果完全不想依赖通信,也有降级方案:用线路阻抗在线辨识配合虚拟阻抗补偿,把两台机器的等效阻抗差值压到工程可接受范围。这个方案不需要通信,但只能做到"静态匹配",负载变化或线路阻抗漂移时精度会变差。我的判断是,为了一个秒级稳态精度指标,牺牲一点通信建设成本是值得的。所以最终方案做了两级:正常运行走协调器广播,通信故障时自动切到本地固定下垂加虚拟阻抗匹配,保证系统稳定不掉链子。

4. 实操过程与参数整定:某模拟项目X的完整复现记录

4.1 硬件平台与实验条件

先交代一下我的样机条件,方便大家对号入座。两台三相逆变器,容量20kVA和10kVA,共用同一条700V直流母线。控制板用的某DSP系列,载波频率8kHz,电压电流采样率5kHz。输出侧各接LC滤波器,并机后通过两条长度不同的电缆接到公共交流母线,母线再接可投切的阻感性负载。基本参数如下:

参数20kVA机器10kVA机器
额定容量20kVA10kVA
额定相电压幅值311V311V
额定频率50Hz50Hz
直流母线电压700V700V
滤波电感1.5mH2.5mH
滤波电容15μF10μF
线路模拟短电缆约5米,Z≈0.05+j0.08Ω长电缆约20米,Z≈0.20+j0.32Ω

负载配置是阻性18kW加感性12kvar,可以通过接触器投切,用来观察不同工况下的分配效果。为了排除直流侧干扰,两台机器共用直流源,母线电压稳定在700V附近。这个条件比实际工程干净很多,但恰恰能暴露控制算法的真实问题。

4.2 VSG主控制参数整定

VSG主参数先给一组可参考的初值。虚拟惯量J和阻尼系数D我按二阶系统阻尼比0.7左右来定,再在样机上用小信号扰动验证。20kVA机的J取0.6kg·m²,D取15;10kVA机的J取0.3kg·m²,D取8。你可以理解为,容量减半的机器惯量和阻尼也减半,折算到标幺值才一致,动态行为才能匹配。

无功下垂系数按5%电压偏移整定:20kVA机取0.00055V/var,10kVA机取0.0011V/var。这个值比理论需要的稍小一点,目的是给自适应调节环留出电压修正余量,防止两者抢电压权限。

虚拟感抗我取1mH,对应工频50Hz下约0.314Ω。选择这个值有个权衡:如果虚拟感抗很大,比如取10mH,可以把线路阻抗差异从4倍压到1.07倍,分配误差基本被"强制均流"了,但代价是负载突变时端电压动态跌落显著,电压调整率会很差。取1mH时,线路差异仍然存在,但不会大到让固定下垂策略彻底摆烂,自适应环有能力把剩余误差拉回来。这也是我反复尝试后觉得最省力的起点。

4.3 自适应调节环的参数整定与效果对比

自适应环的整定,我建议按这个顺序走:先把Ki设为0,只投Kp,观察稳态偏差的方向和大小;然后逐步加大Ki,每加一档跑一次满载投切实验,看动态过程是否出现振荡;最后调死区、限幅和斜率限制。

我的最终参数是:Kp=0.3V/pu,Ki=0.02,积分限幅±6V,输出限幅±6V,死区±0.02,电压修正项变化率限制0.5V/s。死区这个值很关键,设太大分配精度会下降,设太小自适应环容易被采样噪声和无功脉动牵着鼻子走,导致积分器缓慢漂移。0.02的标幺死区对应实测大约0.4kvar的偏差,对工程系统来说已经足够精细。

效果对比如下:

工况固定下垂Q1/Q2固定下垂η1/η2自适应Q1/Q2自适应η1/η2
满载(总无功14kvar)12.2 / 1.8 kvar0.61 / 0.189.3 / 4.7 kvar0.467 / 0.467
半载(总无功7kvar)6.2 / 0.8 kvar0.31 / 0.084.7 / 2.3 kvar0.233 / 0.233
阻性负载为主(总无功2kvar)1.7 / 0.3 kvar0.085 / 0.031.3 / 0.7 kvar0.067 / 0.067

动态过程方面,负载阶跃瞬间,瞬时功率冲击由VSG自身的惯量和阻尼消化,两台机器会在几百毫秒内先"抢"一波无功,这是物理上避免不了的;随后自适应环在3到5秒内把η偏差收敛到死区以内。这个收敛速度对绝大多数微电网应用完全够用,毕竟正常并网系统不会要求无功分配在亚秒级就达到完美稳态。

5. 我在调试中踩过的坑:常见问题与排查实录

5.1 问题一:无功采样滤波造成的“假不均分”

第一次上电测试,两台机器的Q分配差得离谱,我第一反应是算法写错了。查了半天硬件和接线没问题,最后发现玄机在无功计算环节。

逆变器输出的三相瞬时无功功率在稳态时含有2倍工频的脉动分量,尤其是负载不平衡或电压谐波偏大时,这个脉动幅度相当可观。我一开始用一阶低通滤波,时间常数取了50ms,结果两台机器由于启动时刻不一致,无功滤波窗口没有对齐,滤波后的数值就产生了偏差。这个偏差在自适应环眼里就是真误差,它会乐呵呵地拼命去修正一个根本不存在的偏差,越调越乱。

解决方法是改成整周期积分窗:用锁相环过零信号触发计数器,滤波窗口严格取20ms的整数倍。两台机器虽然启动时刻不同,但过零信号对齐后,统一在工频周期的整数倍时刻更新滤波值。这个改动后,静止状态下的采样偏差直接降到了1%以内。

5.2 问题二:自适应环带宽太高,诱发低频振荡

自适应环启用后,一开始调得很激进,Ki取得偏大,结果两台机器的无功出现了大约0.5Hz的往复摆动,十几秒都消不掉。波形图上能看到η1和η2像拉锯一样你高我低,周期又长,像两台机器在互相追着跑。

排查思路是这样的:先把自适应环关闭,只用固定下垂,振荡立刻消失,说明问题在调节环;然后把Ki减半,振荡周期变长但还在,说明单纯降增益不够;最后把积分时间常数拉到5秒以上,同时把通信周期从100ms放宽到200ms,振荡才彻底压住。

原因不复杂:VSG本身有摆动模式,频率大概在几赫兹量级,如果自适应环的带宽和它靠得太近,再加上通信和滤波的相位延迟,反馈回路就会形成正反馈。经验法则:调节环带宽至少要比VSG摆动模式低一个数量级,最好低于0.2Hz。死区设2%到3%也是防这个的。

5.3 问题三:通信延迟与掉线误动作

协调器广播η_ref用的是低速总线,理论上几十毫秒的延迟无伤大雅。但有一次我用网络损伤仪故意模拟恶劣通道,报文延迟抖动加大到300毫秒以上,两台机器的无功出现了几十秒的缓慢爬坡,分配误差越飘越大。

后来发现接收端逻辑有缺陷:一旦通信中断,我原设计是继续用最后收到的值,结果协调器已经失联,各机还按旧目标值在积分,积分器越积越偏。解决方法是加数据保鲜机制:超过500ms没收到新报文,立即判定通信故障,冻结本机积分器,切换到本地固定下垂模式。通讯恢复后,再重新使能自适应,这时积分器从零开始,不存在历史积分的残留问题。

这类系统的设计原则是:通信故障安全优先于分配精度。分配不准顶多机器吃点亏,积分器飞了可能导致电压越限甚至系统崩溃。

5.4 问题四:容量差2倍以上时,小机容易过流

当两台机器容量差比较大的时候,比如20kVA和10kVA,初始工况下小机往往出力很小。自适应环一使能,它会试图把η拉到全局目标值,也就是让小机突然多出无功。如果初始偏差距大,积分器输出变化快,小机无功从1.8kvar猛冲到4.7kvar,中间过程很容易冲破小机的电流限幅,导致过流报警甚至跳闸。

解决思路是给电压修正项加变化率限制,我取了0.5V/s,让无功爬坡变得平缓。同时协调器在下发目标值时采用小步长跟踪,比如每次只允许目标值变化量不超过0.05,让两台机器像温水煮青蛙一样慢慢过渡。此外,小机检测到过流时优先级最高,立即冻结本机调节器,先把电流压回安全区,再重新参与分配。

6. 实测收益、扩展方向与个人心得

6.1 不同工况下的实测收益

从实验数据看,这套自适应功率分配方案的直接收益是稳定的。满载工况下,η偏差从0.43降到0.01以内;半载工况从0.23降到0.01以内;阻性负载为主的轻载工况,由于总无功很小,绝对偏差本身不大,但标幺偏差也明显改善。误差收敛时间在3到5秒,不会干扰负载阶跃的动态过程。

工程层面的收益更值得一提:两台机器的线缆热应力均衡了,不会有某根电缆长期过载发热;小机不再长期空转,功率器件结温和寿命统计更平衡;系统总容量利用率上去了,不会出现大机顶着跑、小机闲着看,总输出却达不到预期的情况。这些好处放在园区微电网、备用电源、光储系统里,都是实打实的运维价值。

6.2 从双机走向多机:可扩展性分析

双机方案验证通过后,我琢磨过向多机扩展的事。协调器广播的架构天然支持多机扩展,目标值计算改成η_ref = ΣQ_i / ΣS_Ni,对所有机器广播同一个数,各机本地跟着收敛即可。新机上线时,协调器重新计算总容量和目标值,老机器不需要改任何参数,这就是即插即用的雏形。

通信拓扑上,星型变总线型、再变环型都可以,因为报文内容只是秒级更新的标幺数值,带宽压力极小。真正难的是数据同步和故障隔离:多机场景下某台机器突然退出,协调器要能快速重算目标值,避免其他机器因为参考目标突变而跟着动态震荡。我目前的经验是给协调器加大约300毫秒的故障确认窗口,确认机器离线后再更新目标值,避免瞬时误判。

6.3 个人心得与后续想做的扩展

做完这个项目,我最大的体会是:先把"无功为什么难分"这个物理机制想通,后面的代码和参数整定根本花不了多少时间。很多人一上来自适应环调不动就猛改Kp、Ki,结果越调越振,最后怀疑算法有问题。其实问题的根源往往在采样不同步、通信延迟、时间尺度分离没做好这些基础环节。

后续我想做的扩展有几个方向:一是把自适应调节环和储能SOC均衡结合起来,让无功分配的同时兼顾电池荷电状态的一致性;二是做一套更完整的虚拟阻抗在线辨识,让无通信降级模式的精度再往上提一提;三是尝试把协调器换成对等一致性协议,彻底去掉单点故障节点。但无论怎么改,底层这套"容量归一化加慢积分修正"的骨架我是不会动的,它简单、直观、扛得住工程现场的考验。

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

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

立即咨询