把“光伏混合储能VSG并网仿真”这套系统完整跑通,我前后花了差不多两周时间。中间光VSG的虚拟惯量和阻尼参数就调崩了无数次,MPPT和储能功率分配打架的问题也查了很久。现在把整套做法的关键细节整理一遍,包括系统架构怎么选、VSG虚拟惯量和阻尼怎么定、Simulink模型怎么搭、波形怎么判断,给正在做新能源并网仿真的朋友一个能直接上手的参考。
这套项目本身不算复杂,但很有代表性。光伏出力天生波动,电网需要稳住频率和电压;电池能存电但响应慢,超级电容响应快但存不住多少能量;VSG则让并网逆变器在控制层面上模拟出同步发电机的转子和阻尼特性。把这三个环节拼在一起并调稳,本质上就是在复现未来高比例新能源电网里“虚拟同步发电单元”的最基本形态。下面按照我从方案选型到仿真调试的顺序,把每一步的实际做法和踩过的坑都写出来。
1. 项目核心思路与方案选型分析
1.1 为什么是“光伏+混合储能+VSG”这套组合
先聊最根本的问题:传统光伏并网逆变器通常采用跟网型控制(PQ控制或电网电压定向控制),它本质上是把逆变器当成一个受控电流源,必须依赖电网提供稳定的电压和频率参考。光伏电站渗透率低的时候问题不大,但渗透率一高,电网里的同步发电机被不断替换掉,系统整体的转动惯量就明显下降。惯量低带来的直接后果是:一旦负荷突变或新能源出力骤降,电网频率变化率会变得很快,传统频率保护还没来得及动作,频率可能已经跌破安全底线。
VSG(虚拟同步发电机,Virtual Synchronous Generator)就是针对这个痛点提出来的。它把同步发电机的转子运动方程写进逆变器控制算法里,让逆变器对外表现出类似同步机的惯量响应和阻尼特性。说得通俗一点,同步发电机靠的是几十吨重的物理转子来抵抗频率突变,光伏逆变器没有这个转子,VSG就用控制程序“捏”了一个虚拟转子出来,频率变化时它会自动释放或吸收有功功率来支撑电网。
那混合储能又是干什么的?光伏出力波动的时间尺度很宽,云层遮挡造成秒级到分钟级的功率突变,昼夜和天气变化则是小时级的长周期波动。如果只用电池去平抑所有波动,高频分量会反复冲击电池,严重影响循环寿命;如果只用超级电容,它对短时功率冲击确实很猛,但能量密度太低,撑不过长时间的能量缺额。所以项目里采用电池加超级电容的混合储能方案:电池负责低频、大能量的支撑,超级电容负责高频、瞬时功率的补偿。这个分工逻辑在控制上就体现为一个低通滤波器,道理后面展开。
1.2 系统拓扑选择:两级式共直流母线方案
我最终采用的拓扑是“光伏Boost+混合储能并联共直流母线”的两级式结构,整体链路如下:
- 光伏阵列经过Boost变换器升压到直流母线,Boost同时承担MPPT功能。
- 电池和超级电容各通过一套双向DC/DC变换器并联到直流母线上,分别控制充放电功率。
- 直流母线经过三相逆变器、LCL滤波器、隔离变压器后并入电网。
- VSG控制器运行在逆变器侧,负责网侧有功、无功以及电压频率支撑。
在选择拓扑时,我其实也考虑过单级式:光伏板直接串联到足够高的电压然后接逆变器,储能再单独接入。这种方案元件更少、损耗更低,但光伏的MPPT控制和直流母线电压控制会强耦合,储能系统介入也不够灵活,调试时容易互相影响。对于做仿真验证和课题研究来说,两级式共直流母线的好处是控制层级清晰:光伏侧只管最大功率追踪,储能侧只管母线功率平衡,逆变器侧只管并网电能质量与VSG特性,三个子系统可以独立调通后再联调。
还有一点经验值得说:储能侧也尽量不要把电池和超级电容直接并联到母线上,中间必须各加一台双向DC/DC。如果不加,母线电压会被电池电压“钳住”,超级电容的高频响应优势根本发挥不出来,而且电池和超容之间会产生不受控的环流。加了双向变换器之后,两个储能单元就变成了两个可控的功率端口,想给多少功率就给多少功率,控制自由度完全不同。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 关键建模与参数整定细节
2.1 光伏阵列与MPPT建模要点
光伏阵列的建模在Simulink里可以直接用Simscape Electrical(老版本叫SimPowerSystems)的PV Array模块。模块内部已经把光伏电池的I-V特性、温度系数都封装好了,需要设置的关键参数有:串联电池数、并联电池串数、开路电压、短路电流,以及光照和温度输入。对于100kW级别的光伏系统,我习惯先把单块组件的参数定好,再按照系统功率等级反推串并联数。
MPPT算法我优先推荐扰动观察法(P&O),原因是逻辑简单、容易调试,而且在Simulink里用状态方程写起来也不复杂。核心逻辑就是:每隔一个采样周期给Boost的参考电压加一个小的扰动步长,如果扰动后光伏输出功率变大,就继续朝同一方向扰动;如果功率变小,就反向扰动。这里有两个参数很关键:一个是扰动步长,一个是采样周期。步长太大,直流母线电压纹波会很厉害;步长太小,光照变化时跟踪速度跟不上。我实测下来,100kW系统里电压扰动步长取5V到10V,采样周期取0.01s到0.02s,整体效果比较均衡。
还有一点容易被忽略:在仿真刚开始的时候,boost的占空比输出会有一个初始阶段,如果MPPT启动过快,光伏工作点可能冲到最大功率点右侧的电压区,导致母线电压过冲。我的做法是给MPPT的输出加一个限幅器,把参考电压限制在光伏阵列最大功率点电压的±20%范围内,等系统稳定后再放开限幅,这样可以显著减少启动阶段的振荡。
2.2 混合储能的配置与功率分配策略
混合储能系统的核心不是电池或超级电容本身的模型,而是功率分配策略。我的做法采用经典的低通滤波分配法:电网侧需要储能提供的总功率参考值先算出来,然后经过一个低通滤波器,滤波后的低频分量作为电池的功率指令,总功率减去电池指令后的高频剩余部分作为超级电容的功率指令。
低通滤波器的截止频率决定了电池和超容的分工边界。截止频率取高了,电池会承担更多的高频波动;取低了,超级电容可能需要较大的容量来支撑持续波动。实际工程中,这个分频点通常在0.05Hz到0.5Hz之间。我仿真中取的是0.1Hz,对应的时间常数约1.6s,也就是周期在10秒以上的功率波动由电池扛,10秒以内的高频突变由超级电容扛。这个配置跑下来,电池电流曲线非常平滑,超级电容电流则明显表现出脉冲式的高频特征,分工效果一目了然。
在储能容量配置上,我采用的简化计算方法是:电池容量按系统额定功率下支撑0.5到1小时来配置。比如额定功率100kW,支撑0.5小时就是50kWh,考虑到DOD(放电深度)约80%,电池实际容量按60kWh左右选型。超级电容容量则按高频波动最大功率的持续时间来算,假设高频波动平均为20kW,需要支撑10秒,能量就是200kJ,再考虑DC/DC效率,最终配置约为0.1kWh级别的超容容量,在仿真里折算成具体的电容值和串联数。
控制结构上,储能双向DC/DC采用电压外环、电流内环的双闭环控制。电池侧和超容侧的电流指令分别由低通滤波分配器给出,电池电流指令的变化速率再额外加一个斜坡限速,防止大电流阶跃冲击电池。
2.3 VSG参数整定:从转动惯量到阻尼系数
VSG控制是整个项目里最难调、也最有意思的部分。它的数学模型核心是同步发电机的转子运动方程:
J·dω/dt = P_m − P_e − D·(ω − ω_g)
其中J是虚拟转动惯量,ω是VSG虚拟角速度,P_m是机械功率参考(由有功指令和频率下垂共同决定),P_e是逆变器实际输出的电磁功率,D是虚拟阻尼系数,ω_g是电网角频率。虚拟转子角度θ由dθ/dt = ω积分得到,这个θ直接作为逆变器电压指令的相位。
虚拟转动惯量J的计算并不神秘,可以类比同步发电机的惯量时间常数来换算。惯量时间常数H的物理含义是:发电机在额定转速下存储的旋转动能,能够以额定功率释放多长时间。仿真中通常取H等于2到4秒。J和H的换算公式是:
J = 2·H·S_n / ω_n²
以100kW系统为例,额定频率50Hz,ω_n = 2π×50 ≈ 314.16 rad/s,取H = 2s,则J = 2×2×100000 / 314.16² ≈ 4.06 kg·m²。这个数看起来不大,但在数字控制器里,它就是几十行代码的事。
阻尼系数D的整定相对费劲一些。在标幺化模型里,D通常会落在0.5到100这个区间,具体数值要看系统的临界阻尼条件。我的调参经验是:先固定J = 4(标幺约2H),D从10起步,观察有功功率阶跃响应。如果功率曲线出现明显的持续低频振荡,说明阻尼不够,逐步加大D;如果响应变得非常迟缓、功率爬升很慢,说明D偏大。最终我调到D约30时,有功阶跃响应有轻微超调但能在0.5秒内收敛,整体动态比较理想。
这里提醒一句:J和D不是独立起作用的。J决定系统的惯性大小,惯性大抗扰动能力强,但响应慢、容易和电网产生功率振荡;D决定振荡衰减速度,阻尼太小就表现为功率来回摆好几拍才稳住。调试时遵循“先定J再调D”的顺序,不要同时改两个参数,否则出了问题根本定位不了是谁引起的。
VSG的无功-电压控制相对简单,我采用的是:
E = E_0 + K_q·(Q_ref − Q)
也就是根据无功功率偏差调整电压幅值指令。K_q按无功-电压下垂系数整定,一般取额定无功变化对应的电压偏差为2%到5%,比如100kVar无功变化对应电压幅值修正20V(母线电压400V时),算出来K_q就是0.2V/kVar左右。这个环路不像有功环那样敏感,参数宽容度较高,只要不大到引起电压振荡就行。
3. Simulink仿真搭建实战
3.1 搭建顺序:从简到繁的增量式集成
一开始我犯过一个错误:直接搭了完整模型,仿真一跑直接发散到天上,完全不知道问题出在哪。后来老老实实按增量式思路重搭,效率反而高得多。我的搭建顺序是:
第一步,只搭直流源加三相逆变器加VSG控制,电网用理想电压源代替,验证VSG的并网特性和参数正确性。这一步有问题最先暴露,因为系统最简单。
第二步,把理想直流源换成光伏加Boost加MPPT,观察光伏出力波动对VSG并网功率的影响,这个阶段重点看的是母线电压是否稳定。
第三步,加入电池和双向DC/DC,让储能补偿光伏波动中的低频分量,观察并网功率波动是否被明显平抑。
第四步,再并入超级电容,看高频波动是否被进一步吸收,电池电流是否变得平滑。
第五步,最后加预同步、断路器、故障注入、保护逻辑等完整功能,做全套系统验证。
这种增量式搭建最大的好处是:每一步只引入一个新变量,仿真发散或者波形异常时,你基本能锁定问题在哪一层。如果一开始就全搭好,MPPT、VSG、储能三个控制器互相耦合,出了问题你根本不知道是该调MPPT步长还是调VSG阻尼。
3.2 关键模块配置与参数参考
下面给出我在仿真中实际使用的一组关键参数,供参考。不同的电压等级和功率等级需要适当调整,但控制结构是通用的。
| 模块 | 关键参数 | 我采用的取值 |
|---|---|---|
| Powergui | 仿真类型 | Discrete,采样时间5e-5s |
| 光伏阵列 | 额定功率 | 100kW,最大功率点电压约540V |
| Boost变换器 | 开关频率/电感 | 10kHz / 5mH |
| MPPT | 算法/扰动步长 | P&O / 10V,采样周期0.01s |
| 电池 | 额定电压/容量 | 360V / 60Ah,初始SOC 80% |
| 超级电容 | 电容值/额定电压 | 5F / 400V(用等效RC模型) |
| 双向DC/DC | 开关频率/电感 | 10kHz / 2mH |
| 三相逆变器 | 开关频率/直流母线 | 10kHz / 600V |
| LCL滤波器 | L1/L2/Cf/阻尼电阻 | 0.6mH / 0.6mH / 20uF / 2Ω |
| 隔离变压器 | 变比/联结组别 | 400V/400V,Dyn11 |
| 预同步 | 幅值差阈值/相位差阈值 | 2% / 1° |
几个细节要特别提醒。第一,Powergui的仿真类型一定要选Discrete,采样时间不要大于1e-4s。我用5e-5s是为了兼顾开关纹波的观察精度和仿真速度,如果你的模型规模很大、跑不动,可以放宽到1e-4s,但波形细节会损失一些。第二,LCL滤波器不加阻尼电阻的话,高频谐波很容易在并网电流里激起振荡,我实际加的是2Ω串联阻尼电阻,谐振尖峰被明显压住。第三,变压器联结组别如果是Dyn11,逆变器侧和电网侧会有30度的相位差,预同步比较电压相位时一定要把变压器造成的相移考虑进去,否则相位差永远归不了零。
3.3 波形验证的几项标准
模型搭好以后,怎么判断系统是否真的工作正常?不要只看“波形在动”就认为没问题。我习惯按下面几个标准逐项验证:
并网前空载运行,观察VSG输出电压幅值是否稳定在额定值附近,频率是否为50Hz,三相是否对称。如果电压幅值持续波动或频率有偏移,先检查无功电压环和有功频率环的参数,再考虑并网。
预同步完成后闭合断路器,观察并网冲击电流。正常情况下的冲击电流应该被限制在额定电流的20%以下。如果并网瞬间电流飙升到额定值的几倍甚至触发保护,基本可以断定幅值差或者相位差没调到位。
稳态运行时,观察直流母线电压纹波,600V母线纹波应该在±5V以内。如果纹波明显偏大,检查Boost和储能DC/DC的电流环PI参数,以及母线电容容量是否够。
光照阶跃扰动下,记录光伏输出功率突变后系统各环节的响应。理想的波形应该是:光伏功率瞬间变化时,超级电容电流立即做出对冲动作,然后电池电流缓慢跟上填补持续的能量缺额,并网功率的波动幅度被明显削减,母线电压保持稳定。如果看到电池电流也跟着瞬间跳变,说明低通滤波截止频率偏高,分频没做好。
4. 常见问题与排查技巧实录
4.1 仿真发散与不收敛的排查顺序
仿真发散是所有人都会遇到的头号问题,表现形式多种多样:Simulink直接报错,或者波形数值一路飞到10的几十次方。我的排查顺序是三层递进:
先检查求解器设置。如果是连续求解器,开关器件很多时很容易因数值刚度问题发散,第一步先把Powergui切到Discrete,采样时间降到5e-5s甚至2e-5s。多数单纯由数值刚性导致的发散,这一步就能解决。
再检查代数环。VSG控制架构里,逆变器输出功率反馈会直接参与到虚拟转子方程的计算,如果反馈路径没有加单位延迟或者Memory模块,Simulink会形成代数环,轻则报错,重则导致计算不稳定。我的做法是在所有测量值进入控制器之前加一个Memory模块打破代数环。
最后检查单位制和初始值。Simulink里信号的单位不会自动统一,有一次我把光伏侧的电压用了kV,储能侧电压用了V,两者直接相加后整个模型输出完全不对。排查时把每个关键测量点的数值量级过一遍,很容易发现这种低级但致命的问题。
4.2 VSG功率振荡与并网冲击电流
VSG出现低频功率振荡,最常见的原因有两个:虚拟惯量J太大,或者阻尼D太小。J太大相当于虚拟转子太重,系统对外部扰动响应慢,且容易和电网的功角特性相互作用形成持续振荡;D太小则意味着振荡缺少衰减,功率波形会来回摆好几个周期才能收敛。处理办法也很直接:把D逐步增大,每次增加50%左右,观察有功功率响应曲线的衰减速度,直到振荡在0.5秒内平息。
并网瞬间的冲击电流问题,基本都出在预同步没有做对。预同步的核心任务是在断路器闭合之前,把VSG输出电压的幅值和相位调整到和电网侧一致。幅值调节通过无功电压环的参考值修正来实现,相位调节通过有功频率环的参考频率修正来实现。我的做法是:断开状态下测量两边的电压幅值差和相位差,分别用两个PI调节器输出修正量,叠加到VSG的无功参考和有功参考上,当两个差值都小于阈值时再发合闸指令。
这里有个经验很重要:预同步的PI调节器参数不能取得太大,否则在达到同步目标附近会产生过冲,相位差反而来回波动,迟迟达不到合闸条件。我取幅值环PI比例系数为0.01,积分系数为0.5,相位环比例系数为0.02,积分系数为1.0,调节时间大约2到3秒,效果稳定。
4.3 PLL锁相与变压器相位偏移的坑
VSG系统中锁相环(PLL)一般用来测量电网频率和相位,为预同步以及并网后的阻尼项提供参考。仿真中PLL最典型的故障是相位锁不住或者锁定到错误的同步点。排查时首先检查三相的相序:A、B、C三相如果接反了,PLL输出的角度会以错误方向旋转,整个控制系统的dq轴解耦就全乱了。其次是PLL内部PI参数的整定,带宽太窄锁相速度慢,带宽太宽又容易引入噪声和振荡,我一般取自然频率约50Hz,阻尼比0.707。
还有一个非常容易踩的坑是变压器相位偏移。当逆变器和电网之间带有隔离变压器时,如果联结组别是Dyn11,副边电压会比原边超前30度。如果你预同步比较的是逆变器侧电压和电网侧电压,而没有考虑这30度的偏移,你会发现相位差怎么调都到不了零。解决办法有两种:一种是相位比较时人为加上变压器的移相角,另一种是把测量点统一到变压器的同一侧,再用变比折算到同一电压等级。我在仿真里实测过,忽略这个相位偏移直接合闸,冲击电流是正常情况的3倍以上。
4.4 电池SOC异常与仿真性能问题
电池SOC相关的坑比较隐蔽。第一是初始SOC忘记设置,默认值是0,仿真一开始电池就无法放电,系统会表现出奇怪的能量缺额。第二是SOC的单位和显示问题,有些版本里SOC输出是百分比0到100,有些是标幺值0到1,如果不统一,SOC保护逻辑会误动作。
仿真速度慢也是实际调试中很头疼的问题。一个包含光伏Boost、两路储能DC/DC、三相逆变器的详细开关模型,配合5e-5s的离散步长,仿真1秒大约需要几十秒甚至几分钟。如果只是验证控制策略和能量管理逻辑,我建议把开关器件换成平均值模型,尤其是储能双向DC/DC和Boost,这样仿真速度能提升数倍,得到的波形虽然看不到开关纹波,但低频动态特性和开关模型几乎一致。
另外,超级电容在旧版Simscape库中不一定有现成模块。如果不方便用官方模块,我习惯用一个大电容串联一个小电阻的等效RC电路来近似。在做功率分配策略验证时,这个近似模型的精度完全够用,还能避免模块版本兼容性问题。
最后再分享一点自己的体会:这套系统涉及的控制环很多——光伏MPPT、储能双向变换器电流环、VSG有功环、无功环,联调时一次只改一个参数是铁律。改完参数后先跑短时仿真看趋势,确认没有变差再继续调下一个。我在初期调试时经常同时调好几个参数,结果系统出问题时完全不知道是哪个环节引起的,浪费了大量时间。后来严格按“一次一变量”的原则,整个联调只用了不到两天就把系统稳定在了理想状态。做仿真这行,慢就是快。
