开头部分我来用这段经历引入:上个月帮一位师弟调他的“光伏混合储能VSG并网仿真”模型,连着三个晚上卡在同一个问题上——并网瞬间直流母线电压塌掉、逆变器电流直接冲顶,仿真器在0.3秒就把步长缩到极限然后发散。他一开始死活不相信是VSG转动惯量参数的问题,一直怀疑是光伏MPPT写错了。等我把虚拟同步机那块的控制框图在纸上画出来,他盯着那个转子运动方程看了半分钟,说了句:“原来这东西真的是在模拟一台发电机。”
这篇文章就把我这些年在MATLAB/Simulink里搭光伏、混合储能和VSG并网仿真模型的完整过程写出来。从主电路参数怎么定、储能功率如何分配、VSG算法怎么落地,到工况测试和调参踩坑,一整套实战路线。适合正在做新能源并网控制仿真、写毕业论文或者刚接手微电网项目的电气工程师和研究生参考,哪怕你之前只做过单纯的光伏并网,也能快速上手。
1. 光伏并网的核心矛盾:出力“太任性”,电网扛不住
1.1 天气一变化,光伏出力就让人头疼
光伏发电最让人头疼的从来不是转化效率,而是出力波动。一朵云飘过来,组件接收的辐照度可能从1000W/m²瞬间掉到400W/m²,如果电站规模大,几兆瓦的功率缺口在几秒内就能出现。《超短期光伏功率预测》解决的正是这个问题,但预测做得再好,光伏本身的物理特性摆在那里——没有旋转设备,没有惯性,逆变器只负责把直流电变成交流电,完全不参与电网频率调节。
这就导致一个问题:光伏渗透率越高的电网,频率稳定性越差。传统火电机组有巨大的转子,负荷变化时靠转子动能先顶着,频率不会瞬间崩溃。光伏没有这个能力,直流侧辐照一变,交流侧有功功率跟着变,频率直接受影响。这就是为什么现在做新能源并网,大家都在研究怎么给光伏系统“装惯性”。
1.2 混合储能:把“高能量”和“高功率”配在一起
应对出力波动,最直接的办法就是配储能。而“混合”二字的含义,是把两种性格完全不同的储能介质搭伙使用。
锂电池的特点是能量密度高,能长时间提供稳定的功率输出,扛得住持续十几分钟甚至数小时的不平衡。但它的短板也很明显——频繁的大功率瞬态充放会显著缩短循环寿命,而且电池的功率响应速度通常到秒级就已经到极限。超级电容正好相反,功率密度极高,响应速度快到毫秒级,特别适合吸收那些几秒甚至几百毫秒内的功率尖峰,但能量密度低,连续充放电撑不了太久。
我实测下来最有用的配置思路是:低频分量给锂电池,高频分量给超级电容。云层遮挡造成的大趋势波动,由电池来平抑;并网瞬间的冲击、负荷跳变的暂态尖峰,全交给超级电容。这个思路在仿真里实现起来也不难,一个低通滤波器把功率指令分开就行,工程上叫“功率分流”。后面我会给出具体的滤波器参数和分流逻辑。
1.3 VSG:给电力电子接口装一颗“同步机的脑袋”
虚拟同步发电机(VSG)本质上是在告诉电网:“虽然我的物理本体是电力电子变换器,但我对外的电气特性模仿了同步发电机。”具体模仿的是两样东西——转动惯量和阻尼。
同步发电机里有一个非常重要的物理量叫转子运动方程,它决定了当系统出现功率不平衡时,转速变化不是瞬时的,而是被惯量“拖”着逐渐变化。VSG在控制算法里人为加入一个虚拟转动惯量J,让逆变器输出的频率变化速率受到限制。这样一来,光伏混合储能系统并进去之后,对电网来说就像一台带惯性的发电机,频率支撑能力立刻就不一样了。
这个思路最近几年特别火,网上一搜“vsg simulink”“用simulink搭建vsg”全是相关资源,但真正把细节讲清楚的并不多。大部分教程只给了一个顶层控制框图,转到具体实现时就含糊了。这篇文章后面的重点,就是把这些细节点挨个拆开。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 主电路架构与参数:先把这个“底盘”搭稳
2.1 两级式光伏+共直流母线拓扑
我做仿真时用的拓扑是两级式——光伏阵列先经过Boost变换器做MPPT,升压后汇入直流母线;混合储能系统(锂电池+超级电容)分别通过双向DC/DC变换器接在同一个直流母线上;母线再通过三相逆变器和LCL滤波器并入交流电网。整体结构非常经典,也方便后面扩展。
为什么选两级式而不是单级式?单级式的光伏阵列直接接逆变器,直流母线电压被MPPT钳制在一个窄范围内,储能进行功率调节时很容易碰上限。两级式多一级Boost,母线电压独立可控,留出更多的电压裕度,储能能做的事情就多得多。
光伏阵列的参数我倾向用SunPower SPR-305E-WHT的模型,305W一块,6串5并一共1.5MW左右,在Simulink里直接用光伏阵列模块就能调出来。标准测试条件(STC)下最大功率点电压约54.7V,短路电流约5.96A,组串之后的开路电压大约在380V上下,Boost输出直流母线控制在800V。这个电压等级做并网仿真比较顺手。
2.2 混合储能的双向DC/DC与控制分工
锂电池侧我用了Thevenin等效模型:理想电压源内串电阻,再加上一个RC并联环节模拟动态响应。电池容量取400Ah,额定电压720V,接入母线时通过双向半桥DC/DC。超级电容侧则用理想电容加等效串联电阻(ESR)的简化模型,容量约10F,同样配一台双向DC/DC。别嫌电容容量大,在仿真里不把它调大一点,高频功率根本“吃”不进去,母线电压稳不住。
控制上,储能的功劳全看功率分流做得好不好。我给锂电和超级电容各配一个功率环,输入是VSG计算出来的总储能功率指令,经过低通滤波器后分成两路:
- 低频分量给锂电池,低通滤波器的截止频率取0.2Hz左右,保证电池只承担缓慢变化的功率趋势。
- 高频分量给超级电容,这个分量直接用总指令减去锂电指令得到。
这个做法的好处是,电池的充放电电流始终是渐变的,不会出现大电流瞬时冲击;超级电容则承担了所有突变,充分发挥它“快”的优势。仿真里在光照突变的工况下,你能很直观地看到电池电流缓慢调整、超级电容电流瞬间响应然后逐步归零的过程。
2.3 逆变器与LCL滤波器参数设计
逆变器网侧电压等级取380V/50Hz,额定功率2MW。用平均模型还是开关模型?我的建议是:先跑平均模型把手算法调通,再用开关模型做最终验证。平均模型没有IGBT开关纹波,仿真快、调试方便;但最终论文或者报告里的波形,最好还是用开关模型出,更真实。
LCL滤波器参数我提供一组经过验证的数值:
| 参数 | 数值 | 说明 |
|---|---|---|
| 逆变器侧电感L1 | 1.5mH | 抑制高频开关纹波 |
| 网侧电感L2 | 1.0mH | 并网馈线等效与滤波 |
| 滤波电容Cf | 4.7μF | 高频旁路通道 |
| 阻尼方式 | 有源阻尼(电容电流反馈) | 无需额外电阻损耗,仿真更干净 |
| LCL谐振频率 | 约2.3kHz | 远大于基波、远小于开关频率 |
LCL最怕的就是谐振尖峰。如果不加阻尼,仿真里你会看到波形里叠加了一个频率特别高的振荡分量,电流波形变得毛躁,这绝不是数值误差,是LCL真实的谐振特性。我一开始偷懒没加阻尼,结果在调VSG参数时怎么调都发散发振,整整浪费了两天时间才意识到问题出在滤波器上。
2.4 一个可以直接抄的主电路参数表
很多人搭仿真最先崩溃的就是参数乱给。我把自己常用的一套参数完整列出来,照着填基本就能跑起来。
| 模块 | 参数 | 数值 |
|---|---|---|
| 光伏阵列 | 组件型号/串并联 | SunPower 305W,6串5并 |
| Boost | 开关频率 | 10kHz |
| Boost | 直流母线电压设定 | 800V |
| 锂电池 | 额定容量/电压 | 400Ah/720V |
| 超级电容 | 容值/ESR | 10F/10mΩ |
| 双向DC/DC | 开关频率 | 10kHz |
| VSG逆变器 | 额定功率/频率 | 2MW/50Hz |
| VSG逆变器 | 直流母线电压 | 800V |
| LCL | L1/L2/Cf | 1.5mH/1.0mH/4.7μF |
| VSG | 虚拟惯量J | 0.5kg·m²(等效惯性时间常数约0.4s) |
| VSG | 阻尼系数D | 32 |
| VSG | 无功下垂系数n | 2.5e-4 pu |
这套参数在我自己的模型里跑光照突变、负荷跳变、频率扰动三类工况,都能稳定,后面我会展示具体的波形表现。
3. VSG控制算法拆解:拿同步发电机的模型“骗”过电网
3.1 转子运动方程是VSG的灵魂
VSG控制算法真正核心的就一条二阶方程,同步发电机转子运动方程。它长这样:
J·(dω/dt) = (P_m - P_e)/ω_n - D(ω - ω_n)
其中J是虚拟转动惯量,ω是虚拟角速度,ω_n是额定角速度,P_m是虚拟机械功率(由一次调频的下垂控制给出),P_e是逆变器实际输出的电磁功率,D是阻尼系数。
方程的含义可以这样理解:当逆变器输出功率P_e和“机械功率”P_m不一致时,角速度ω不会瞬间跳到新值,而是以J为惯性慢慢变化。J越大,频率变化越慢,对电网越友好,但响应也越迟钝。D相当于一个刹车,角速度偏离额定值越远,阻尼力越大,把频率往回拉。
这里有个关键点:VSG不需要电网侧的锁相环。很多第一次搭VSG的人会习惯性地在并网控制里加上PLL去跟踪电网相位,这是个非常大的误区。VSG的相位θ是由转子运动方程积分出来的——对ω积分得到θ,这个θ就是逆变器输出电压的相位,它自己就是“电源”,不需要去跟谁。如果同时用PLL,两个相位源互相掐架,整个控制就乱了。正确的做法是,只在并网合闸之前用PLL做预同步,让VSG输出的电压相位和电网对齐,合闸之后立刻把PLL退出,相位交给VSG自己跑。
3.2 有功-频率下垂:模拟一次调频
现在做电力系统研究的人都知道“一次调频”这个词。传统同步发电机上有调速器,系统频率下降它就增加机械功率,频率升高就减少。VSG也模拟这个逻辑,用有功-频率下垂方程实现:
P_m = P_ref + K_f·(f_n - f)
也可以写成标幺值形式的P_m = P_ref + (ω_n - ω)/k_p,k_p就是调差系数。系统频率低就多出力,频率高就少出力。这个指令P_m代入转子运动方程,就构成了完整的功频调节闭环。
仿真的框图实现思路:测出实际输出有功P_e,再计算出P_m,两者做差除以ω_n得到转矩差,经过带J和D的传递函数1/(Js + D)得到Δω,Δω加上ω_n得到ω,再积分得到θ。这个θ就是VSG输出电压的指令相位。
3.3 无功-电压控制和虚拟阻抗
有功频率之外,VSG还要管无功和电压。同步发电机的励磁系统维持机端电压,无功输出则和电压差挂钩。VSG用无功-电压下垂方程模拟这个特性:
E = E_0 + n·(Q_ref - Q_e)
E_0是额定电压幅值,Q_ref是无功功率参考值,Q_e是实际输出的无功功率,n是电压下垂系数。当系统无功需求增加导致电压下降时,VSG通过这个方程提升E来补无功,把电压撑住。
只做电压下垂还不够,实际运行里电网并网点电压的波动会直接影响输出功率的稳定性,所以我会在VSG的电压参考环节后面再加一个虚拟阻抗环节。虚拟阻抗本质上就是在逆变器输出电压参考上减去电流乘以一个虚拟的电阻和电感所产生的压降,模拟同步电机定子绕组的内阻和漏抗。它有两个作用:一是抑制功率振荡,二是实现下垂控制的无功功率解耦。取值上虚拟电阻取0.04Ω,虚拟电感取1.2mH,这个值跑下来系统阻尼特性较理想。
3.4 PQ、下垂和VSG三种控制策略的对比
很多人在选控制策略时犹豫,我直接给个对照表,方便理解为什么VSG值得折腾:
| 控制方式 | 频率/电压支撑 | 惯性特性 | 并网稳定性 | 实现复杂度 |
|---|---|---|---|---|
| PQ控制 | 无 | 无 | 强依赖PLL | 低 |
| 下垂控制 | 有垂直线 | 无惯性,响应快但冲 | 中等 | 中 |
| VSG控制 | 有,且带阻尼 | 有虚拟惯量 | 高 | 高 |
PQ控制适合纯并网发电,电网强,逆变器只要输出指定功率就行。下垂控制让系统有了调节能力,但没有惯性,突变的瞬间频率变化率还是很快,在弱电网里容易出问题。VSG把惯量补上以后,“暂态冲击”被柔化了,频率曲线平滑得多,这就是它最大的价值。
3.5 Simulink里VSG算法是怎么搭出来的
具体在Simulink里搭建,我的习惯是不用别人封装好的VSG库,自己从最底层函数搭一遍,这样才能真正理解整个逻辑,后面调参时才不会像个无头苍蝇。
整个VSG模块从上到下分四层:
第一层是功率计算。采集三相输出电压和输出电流,通过dq变换计算瞬时有功P_e和无功Q_e,再通过低通滤波器得到平均功率,滤波时间常数取0.01s左右,太大会让响应变慢,太小则功率信号毛刺多影响控制。
第二层是有功-频率控制。用P_m = P_ref + K_f·(ω_n - ω)算出机械功率,代入J·(dω/dt) = (P_m - P_e)/ω_n - D·(ω - ω_n),用积分器搭出ω。我建议用Simulink里的带复位功能的积分器,这样在做并网预同步时可以直接输入初始相位,避免合闸瞬间相位跳变。
第三层是无功-电压控制。按E = E_0 + n·(Q_ref - Q_e)算出电压幅值参考,再乘上sin(θ)、sin(θ - 2π/3)、sin(θ + 2π/3)生成三相电压参考。
第四层是电压电流双闭环。电压外环用PI控制器把输出电压跟踪到VSG给定的三相参考,内环电流环用PI控制器生成调制波,最后送SVPWM。这套双闭环是在dq旋转坐标系下做的,park变换的角度就用VSG的θ,千万别用PLL的角度。
4. Simulink仿真实战:分模块搭建与关键步骤拾遗
4.1 光伏阵列与MPPT模块
光伏阵列我用Simulink自带的“PV Array”模块做,省事且可信度高。辐照度作为外部输入,我搭了一个信号发生逻辑:初始时刻1000W/m²,在t=2s时变成700W/m²,t=4s时恢复1000W/m²,模拟一个云层遮挡再恢复的过程。这个信号变化虽然简单,却非常能考验储能和VSG的动态响应能力。
MPPT控制器我用的扰动观察法(P&O),扰动步长取0.001。步长太大会导致MPPT电压在最大功率点附近来回震荡,太小则跟踪速度太慢。仿真时留意Boost的占空比波形就行了,它能直观反映MPPT是在锁点还是乱搜。
4.2 储能协调控制逻辑
储能模块是整个系统里最考验建模功力的地方。锂电池的DC/DC控制我用双环结构——外环功率环,内环电流环。功率环的输入是由VSG的功率参考计算出的储能总功率指令P_storage = P_vsg_ref - P_pv,再经过低通滤波分频后分别送到锂电和超级电容的控制环。
锂电的功率环输出作为其Boost变换器的电流参考,电流环用PI控制器输出占空比。超级电容的控制完全一致,只是阀值和限幅范围不同。细节上,锂电流限幅设为±0.5C(以400Ah电池为例就是±200A),超级电容的限幅放宽到±1000A,这是它“冲锋”的资本。
如果你在仿真里看到系统已经稳定但超级电容的SOC还在缓慢变化,说明低通滤波器的截止频率给高了,部分低频功率漏进了超级电容,调低截止频率即可。
4.3 预同步与并网合闸逻辑
并网瞬间是仿真最容易崩的地方。核心原因就一个:VSG输出电压和电网电压在合闸前并没有对齐,相位或幅值有差异,合闸瞬间产生巨大的冲击电流。
解决办法是加预同步控制环节。在并网开关闭合前,把VSG的输出电压幅值、频率和相位逐一与电网同步。幅值好办,比较两边的电压有效值经过PI调节E_0的偏置;频率和相位,把电网电压和VSG输出电压经过park变换后,用q轴分量作为误差信号过PI去微调VSG的角速度参考值,直到q轴误差为零。
我习惯并网合闸时刻设在t=1s,此时预同步已完成,合闸冲击电流控制在额定电流的5%以内。合闸之后立刻把预同步PI的输出旁路掉,防止它干扰VSG的功频调节。
4.4 求解器与仿真步长的选择
这一步虽然很简单,但80%的人在这栽过跟头。带电力电子开关的仿真必须用离散求解器,步长取1e-5到1e-6秒。开关频率10kHz对应的开关周期是1e-4秒,步长必须至少比开关周期小两个数量级,控制信号才不会被“吞掉”。
如果只做算法验证,我建议先把开关模型换成平均模型,用变步长ode23tb跑,速度快出几个量级。算法验证完善后,再换成离散定步长做最终波形输出。两种模型的结果对控制逻辑而言几乎一致,但开发效率差距很大。
4.5 仿真中的常见模型配置问题
还有一个我印象很深的坑:三相逆变器的直流电源必须用直流母线电容,并且电容初始电压要设好。有人直接用理想直流电压源接在逆变器直流侧,仿真也能跑,但一旦储能介入调节直流母线电压,理想电压源会掩盖掉真实的母线动态,导致VSG和储能的协调控制白调。母线电容取值取约50mF,初始电压设为800V,这样才能观察到母线电压在功率突变时如何被储能拉回来。
5. 典型工况测试与波形判读:数据说明一切
5.1 工况一:光照突变(云层遮挡)
仿真场景:t=2s时光照从1000W/m²骤降到700W/m²,t=4s时恢复。这两次突变对系统来说是两记重拳——光伏输出功率瞬间少了约30%,母线侧就会出现巨大的功率缺额。
VSG的响应逻辑是:系统频率微降(因为我设定的VSG承担虚拟惯量支撑),有功-频率下垂立刻觉察到频率偏差,增大虚拟机械功率指令,要求从储能侧补充能量。此时功率分流器起作用,超级电容瞬间输出大电流填补高频缺口,锂电池则毫秒级延迟后开始缓慢增加放电电流,承担持续性的功率补偿。
此工况下我看到的波形是:直流母线电压最大跌落约12V(800V基值上只有1.5%),VSG输出频率最大偏差0.08Hz,超级电容瞬时输出功率峰值约0.3MW,锂电输出功率在0.6s后稳定在0.26MW。整个暂态过程在1.5s内完全结束,系统收敛稳定。
5.2 工况二:负荷投切模拟
在并网点接一个可投切负载,t=3s时投入0.5MW,t=5s时切除,模拟本地负荷扰动。这个工况考验的不仅是一次调频,还有系统在连续两次扰动下的稳定性。
VSG的表现:投入负载瞬间,输出有功功率从1.5MW跳变到2.0MW,频率先下降再回升,最低点49.92Hz,整个过程大约持续0.8s。值得一提的是,不同虚拟惯量J值下频率恢复特性差异非常明显。J取0.2时频率最低点跌到49.85Hz且波动明显,J取0.8时最低点49.94Hz曲线平滑,但响应时间变长。最终我选择0.5,算是响应速度和频率支撑的折中方案。
5.3 波形判读方法
仿真做完不看波形等于白做。我最常看四个波形:
- 频率波形是核心,看并网后是否平滑、扰动后恢复是否稳定。
- 有功功率波形看响应速度和超调量。
- 直流母线电压波形看储能补偿是否及时。
- 储能SOC变化看功率分流策略是否合理,锂电SOC应缓慢线性变化,超级电容SOC应快速起伏但总体周期归位。
四个波形配合着看,才能在脑子里形成完整的动态画面。
5.4 并网电流质量:FFT分析
电网对并网电流的谐波有明确要求,仿真里用FFT工具看THD。我这套参数下,额定运行点的THD大约为2.8%,接近但未超过5%的限值。如果你做出来的THD太高,首先别急着调VSG参数,先把LCL的电容电流反馈阻尼系数调好,很多谐波问题都是谐振没抑住导致的。
6. 调参踩坑记录:这些学费你可以不交
6.1 并网瞬间电流爆炸的元凶
前面提到预同步能解决很大一部分问题,但还有一个容易忽略的细节:VSG内环积分器的初始值。如果转子运动方程的积分器初始角速度是0,那么VSG启动时相位从0开始跳变,第一个控制周期输出的电压相位和电网差了将近90°,电流自然直接冲顶。完整的做法是把积分器初始值设为电网的初始角速度314rad/s和初始相位,Simulink积分器模块支持“设置初始状态”,在预同步阶段直接把电网相位写入积分器即可。
6.2 参数没变模型却发散了
另一种常见困境是:前一天运行得好好的模型,第二天打开直接发散。这种情况十有八九是求解器设置被无意改动了,或者Simulink缓存出现了问题,把模型复制一份新建工程重新配置即可。另外一个真实的原因是,我某次把光伏辐照度信号发生器的采样时间从0.0001s改成0.1s,导致光照输入在仿真中呈现阶梯状突变,储能来不及响应,系统崩溃。纯信号源也要注意采样时间设置。
6.3 LCL谐振问题:参数敏感的阿喀琉斯之踵
高频谐振在电流波形上非常好辨认——波形边缘出现高频毛刺,FFT后看到高于3kHz谱线凸起。根源就是LCL谐振峰没有被有效阻尼。解决方法是采用电容电流反馈有源阻尼,反馈系数选择时以谐振频率处的阻尼比为0.3为目标。一个小技巧是:用波特图工具先把LCL的频响特性画出来,谐振峰位置一眼可见,再对应设计阻尼系数,比盲目试参数高效得多。
6.4 超级电容配置过大/过小的表现
超级电容容量如果设计得过大,SOC变化极慢,在暂态中储能的作用反而不明显;容量过小则会出现频繁电压越限。判断容量是否合适,看每轮暂态结束后超级电容SOC是否基本回落到初始值附近。如果每次都偏移不回初始,说明低频功率漏到了超级电容,需要在功率分流上调整截止频率——该低通的要低通,该高通的高通。
6.5 仿真速度和实测性之间的平衡
仿真时间太长也是让人头疼的问题。用离散定步长1e-6仿真10秒,普通电脑可能要跑几个小时。我的建议是:需要看细节的暂态段用严格的小步长,平稳运行段可以放宽步长,或者分段保存模型状态再继续。实在着急,先用平均模型把参数整定流程跑完,最后出结果是再用开关模型跑一遍最终工况,这是很划算的时间投入打法。
最后再分享一个实用心得:这套系统里最有性价比的调参顺序是,先固定LCL参数,再整定储能功率分流滤波时间常数,最后调VSG的J和D。每一步用一个指标来评判,例如分流参数看母线电压恢复时间,J和D看频率最低点和恢复时间。指标分开优化比一次性“大调”来得快得多,也不容易陷入改了这个坏那个的无底洞。希望你搭模型的时候能少走这些弯路,早些看到那条平稳的并网频率曲线。
