光伏储能配虚拟同步发电机,这个方向我盯了挺久。如果你去查近两年的电网运行准则和新能源并网技术规定,大概率会反复看到“新能源场站应具备主动支撑能力”、“一次调频”、“惯量响应”这类硬性条款——而虚拟同步发电机(简称VSG)正是实现这些功能的代表性控制策略。简单说,VSG让光伏/储能逆变器在电网面前表现得像一台真实存在的同步发电机:电网频率一波动,它能靠“转子惯量”顶住;电压一跌落,它能像励磁系统一样给出无功支撑。
这篇文章就直接拆一个完整的“光伏储能VSG仿真模型”,从拓扑结构、数学模型、Simulink搭建到参数整定、常见坑点,全部过一遍。适合正在研究新能源主动支撑控制、或者准备拿VSG做毕业设计/横向课题的同学,也适合已经在做储能PCS控制、想快速验证VSG算法效果的工程师。
1. 架构设计与建模思路
1.1 光伏储能为什么要“抱团”VSG
先想清楚一个问题:单台光伏逆变器能不能直接做VSG?能做,但效果会大打折扣。光伏的出力取决于光照和温度,是一个典型的间歇性能源。当你要让逆变器对外提供与同步机类似的“摇摆能量”时,需要直流侧有真实的功率缓冲能力。如果直流母线前级只挂着一个光伏组件,当VSG命令输出功率突增时,光伏无法立刻增加出力,直流母线电压就会迅速跌落,逆变器进入保护甚至停机。
所以工程上稳妥的做法,是构建“光伏+储能”的混合直流源结构:光伏通过Boost电路接入直流母线,储能电池通过双向DC/DC接入直流母线,然后由一台两电平三相逆变器作为VSG的功率接口,实现并网。储能在VSG动态过程中承担功率差额,光伏则承担稳态功率输入。这个拓扑最大的好处是,VSG对外表现的惯量和阻尼特性不会因为光照突变而失效——这正是国内很多VSG并网示范工程采用的配置。
1.2 两层控制架构:底层P/Q外环与VSG核心
仿真模型需要明确提出控制功能的层级关系,否则很难收敛、也难调试。
我们这套模型分三层:
- 底层控制:VSG算法输出的调制波,经SPWM或SVPWM调制后驱动IGBT。逆变器开关频率设10kHz。
- 中层控制:电压电流双闭环,电流内环是PI控制,电压外环也是PI控制。VSG给出的电压幅值和相位参考值,在这里被“落地”为驱动信号。
- 上层控制:就是VSG核心算法。它接收电网侧的频率、自身有功功率、无功功率反馈,通过“转子运动方程”和“励磁调节方程”输出虚拟电压指令的幅值U和相位θ。
如果你之前做过传统的PQ控制或VF控制,你会发现差异点集中在最上层。VSG不是替代双闭环,而是给双闭环提供动态参考。
1.3 为什么不用构网型(GFM)而用VSG术语
这里有必要澄清一个概念陷阱。在学术论文和厂家标书中,构网型控制、下垂控制、VSG经常混用。严格来说,VSG属于构网型控制的子集,核心特征在于模拟了同步发电机的转子惯量和阻尼绕组效应,下垂控制只是转子运动方程在静态情况下的一种简化体现。
在Simulink中验证时应该有意识地保留完整的二阶模型,不要做降阶简化——因为如果你把惯性项去掉,整个VSG就退化为下垂控制,仿真结果看起来也能带载、也能调频,但惯量支撑特性完全没有了,反而不符合“虚拟同步”的真实需求。这一点在论文外审和工程验收时会成为关键指标考察点。
2. VSG核心数学模型
2.1 转子运动方程
VSG的数学模型来源于同步发电机的二阶机电暂态方程:
[ J\frac{d\omega}{dt} = P_{ref}/\omega_0 - P_e - D(\omega - \omega_0) ]
其中,J是虚拟转动惯量,D是虚拟阻尼系数,P_ref是有功功率参考值,P_e是瞬时有功功率,ω0是电网同步角速度(100π rad/s)。这个公式告诉我们的物理含义是:当系统检测到输出功率 P_e 比参考有功 P_ref 小的时候,转速ω会上升;而转速一旦与电网同步频率产生偏差,阻尼项D 会把这个偏差往回拉,从而模拟出同步机“惯性加阻尼”配合的响应过程。
在Simulink里可以直接用积分模块搭建,不需要s函数。这里有个细节要注意,参与积分计算的J和D的量纲。如果直接用有名值构造,转动惯量J会是一个非常大的数(比如十几万),在数值求解上会有动态范围问题,所以我更建议采用归一化的“惯性时间常数”和“阻尼比”来表达。
2.2 电气方程与励磁调节方程
VSG的虚拟“励磁调节”方程为:
[ E = E_0 + K_q(Q_{ref} - Q_e) + K_u(U_{ref} - U_g) ]
其中E是虚拟内电势幅值,Kq是无功调节系数,Ku是机端电压调节系数。实际绝大多数仿真模型中Kq和Ku一个控制的是无功稳态误差,一个控制的是电压稳态偏差。你仔细分析就会发现,如果只取Kq,无功—电压呈下垂特性;如果Kq足够大,Q_ref基本等于Q_e,无功就完全跟指令走,适合PQ恒功率并网场景,但这削弱了电压支撑能力。
因此我常用的参数分配是:
- 有功—频率环:主要靠J和D构成虚拟摇摆特性,提供惯量和阻尼。
- 无功—电压环:以电压支撑为主,无功跟随为辅。
这种配合比较贴近“电网需要什么 VSG就给什么”的思路,也便于后续验证惯量支撑、一次调频和电压调节三种功能。
2.3 预同步控制
如果你要做的模型只涉及并网无限大母线,可以在0.3秒时直接合闸并网,VSG在稳态下会自动锁相。但是要做“孤岛转并网”或者“离并网无缝切换”,那就必须加预同步环节。
预同步的目标是让VSG输出的电压幅值、频率、相位与电网保持一致。频率和相位通过调节虚拟转速ω完成,幅值通过调节E0完成。在Simulink实现时,一般用三相锁相环测电网相位θ_g,然后与VSG自身相位θ_vsg做差,经过一个PI调节器生成频率补偿量Δω,附加到转子运动方程中;同理电网电压幅值与VSG输出电压幅值之差经过另一个PI生成E0补偿量。
我之前看到不少仿真模型完全不处理并网冲击,合闸瞬间波形出现极大的尖峰电流,其实大多不是模型错误,而是没有正确做预同步。这类“功能缺失”在论文里不够会被审稿人揪出,在工程里则直接导致并网断路器跳闸。
3. Simulink模型搭建全流程
3.1 模型架构与模块选型
这里我以 Matlab R2021b 为例,Simulink版本较老也能建,但Specialized Power Systems(SPS,2021a之前叫SimPowerSystems)模块库路径有变化的话需要相应调整。
建立模型可以按下面几个子系统来组织:
- 光伏单元:光伏PV阵列模块 + Boost变换器 + MPPT控制器。MPPT可以采用扰动观察法,也可以直接封装一个P&O算法S函数。
- 储能单元:锂电池模型 + 双向DC/DC变换器 + 恒压/恒流控制器。
- 逆变器:三相两电平逆变器 + 直流母线电容。
- VSG控制算法:有功频率环 + 无功电压环 + 电压电流双闭环。
- 电网与测量:三相电网电源、变压器、断路器、电压电流测量模块、PLL。
截图级的细节很难在这里全画出来,但有几点强烈建议照做:
- 逆变器功率器件选用“Universal Bridge”默认参数,导通压降与阻值默认即可,不用先去精细标定。
- 直流母线电容按经验公式选取,这里给一个参考公式: [ C_{dc} = \frac{P_{rated}\cdot T_r}{2\cdot U_{dc}\cdot \Delta U_{dc}} ] 假设P为100kW,电压1000V,允许波动2%,控制响应时间0.01s,电容约2.5mF,实际可取3mF。
3.2 光伏+储能前级模型细节
这个部分很多人会偷懒——直接用直流电压源代替整个前级来完成VSG算法验证。如果是纯做VSG算法的并网特性验证,这种替代没有问题,效率还高;但如果你的题目中有“光伏储能系统”这几个字,评审时会被认为模型完整度不足。所以我建议仿真至少有一版是带着光储动态的。
光伏阵列参数(参考100kW系统)这样设置可以起到好的示范效果:
- 开路电压Uoc=480V,最大功率点电压Ump=400V(需串联两个260V组件串)。
- 短路电流Isc=300A,最大功率点电流Imp=280A。
- MPPT用扰动观察法,步长取0.5%的参考电压步进。
储能单元用锂电池模型,额定电压设定为600V(直流母线电压1000V时需要通过Boost升压到匹配电压)。储能的容量参数由你要仿真的时长决定:如果仿真时长超过10s,电池容量至少50Ah,否则SOC变化会过大,甚至出现直流母线电压失控。
双向DC/DC控制器设计需注意:外环控制直流母线电压,内环控制电感电流,两个PI串联。外环带宽通常是内环的1/10,防止环路交互振荡。也就是说若电流内环带宽1000rad/s,电压外环带宽在100rad/s左右即可。
3.3 VSG算法Simulink实现
这部分可以说是整个模型的灵魂。为了说明清晰,我把VSG算法拆成下面几个环节:
有功—频率环节
用Memory或Unit Delay构造状态,比较清晰。J、D的传递函数形式为:
[ \frac{\omega(s)}{P_e(s)} = -\frac{1}{J s + D} ]
模型建议采用H(s) = 1/(J*s + D)的标准二阶惯性环节,加上限幅模块。在并网模式下,Δω会改变VSG输出电压相位即θ = ∫(ω)dt,从而实现有功调频。
无功—电压环节
E_vsg = E0 + Kq(Q_ref - Q) + Ku(U_ref - Ug)组成,E是内电势,这里注意后续双闭环控制针对的电压参考值并不是E,而是逆变器出口滤波电容电压参考值。很多刚做VSG的小伙伴混淆了内电势与输出电压的关系,导致波形偏大。虚拟阻抗和内电势使能模型会带来额外的电压降落,如果你的VSG算法没有加虚拟阻抗,通常在滤波电容电压处直接生成参考电压会比E低一些。我的做法是:正常并网工况下,E0取为额定电压的1.05~1.08倍,比如线电压400V,E0可以设310V~320V(相电压峰值),这个抬升量用于补偿滤波电感上的压降。
双闭环
电压环采用PI控制,参数可这样初调:Kp = 0.5,Ki = 20,带宽约300-500Hz,高于工频50Hz十倍左右,以免影响基波跟踪。电流内环Kp = 2,Ki = 100,带宽2000Hz以上。在没有LC参数准确值的情况下,这个粗调组合在许多模型里能稳定工作。
3.4 关键参数一览
为了让你参数设置有直接可抄的起点,我把仿真中使用的关键参数整理如下表:
| 参数 | 数值 | 说明 |
|---|---|---|
| 额定功率 | 100 kW | VSG额定功率 |
| 额定电压 | 400 V | 逆变器输出线电压有效值 |
| 直流母线 | 1000 V | 光伏+储能共用 |
| 电网频率 | 50 Hz | 相电压峰值约311V |
| 转动惯量J | 1.2 kg·m² | 仿真中没有传动机构,J为虚拟值 |
| 阻尼系数D | 30 N·m·s/rad | 对应阻尼比约0.37 |
| 滤波电感L | 0.35 mH | 电感压降约3% |
| 滤波电容C | 100 μF | 对应截止频率约850Hz |
| Kq | 0.0002 | 无功100kVar时电压降约2% |
| Ku | 0.1 | 电压跟随附加系数 |
| 直流母线电容 | 6 mF | 由三组2mF并联 |
| 开关频率 | 10 kHz | 通用逆变器默认值 |
需要注意:J、D的取值必须与功率基准匹配非常紧密。假如你把J调到20以上,会发现频率“驰豫时间”特别长,输出功率爬升速度极慢,这会带来执行机构饱和风险。
4. 逆变器与网侧连接细节处理
4.1 滤波与变压器接入
VSG逆变器输出需要经过LC或LCL滤波器再接入电网。在仿真中用LCL比较能反映真实性,但LCL调谐振是个麻烦事,很多方案靠加无源阻尼电阻解决。
我建议仿真阶段用LC滤波器,电感值按下式粗算:
[ L = \frac{U_{dc}}{8 \cdot f_{sw} \cdot \Delta I_{L max}} ]
设直流母线1000V,开关频率10kHz,电流纹波限额定电流的20%,额定相电流约145A,ΔI_Lmax取29A,电感约0.43mH。取0.35mH也可以,算出来纹波稍大一点但在可控范围内。
LC的谐振频率选择一般设在开关频率的1/10到1/5之间,即1~2kHz。计算式:
[ f_{res} = \frac{1}{2\pi \sqrt{LC}} = \frac{1}{2\pi\sqrt{0.35\times 10^{-3}\times100\times10^{-6}}} \approx 851\text{ Hz} ]
这对电压电流双闭环设计比较友好,不会和控制器带宽装车,也很少出现稳定性问题。
4.2 变压器接线和连接方式
在PSCAD/Simulink里做VSG并网,请一定不要忽视变压器的接线方式。如果采用Dyn11接法,三角形侧会为3次谐波电流提供通路,会让相电压波形好看一些。中性点不接地或经消弧线圈接地时,电压测量与单相故障逻辑需要调整。
我一般在400V VSG出口加一台升压变压器,变比0.4kV/10kV,容量150kVA,短路阻抗UK=6%。变压器的漏抗加入总电感计算时,能让短路比更真实地反映电网强度。
4.3 电网短路容量对VSG动态的影响
电网强度很重要,而在Simulink中通常是通过调短路比(SCR)来模拟。用10kV理想电压源串联电感即可等效一定SCR。设定SCR=5对应的电感可这样算:
三相短路容量S_sc = 5×0.1MVA = 0.5MVA,换算到400V侧后等效电感约为:
[ L_g = \frac{U_n^2}{\omega_0 \cdot S_{sc}} = \frac{400^2}{314\times 500000} \approx 1.02\text{ mH} ]
不建议在这里用一个内阻极大、短路容量过小的电压源来模拟弱电网,因为很容易让VSG出现QR耦合振荡,反而分不清模型问题还是电网问题。
5. 运行工况设定与仿真结果分析
5.1 工况一:光照突变下的惯量支撑能力
仿真规划总时长2秒。0.5秒前系统工作在稳态:光伏出力80kW,储能不充不放,VSG并网输出80kW。0.5秒时模拟云层遮挡,光照突降至300W/m²,光伏出力锐减至30kW,系统瞬间缺额50kW。
这时候可以得到两个层次观察结论:直流母线电压在储能电流内环的调节下,先下降约20V,然后在0.1秒内恢复到1000V附近;电网侧频率仅下降0.02Hz左右,且下降速率较慢,这表明储能通过VSG释放能量提供频率支撑。我们可以进一步用阻尼系数D进行对比仿真:
- D=30时,频率最大偏差0.05Hz,恢复时间约0.3s;
- D=10时,频率最大偏差0.09Hz,振荡衰减明显变慢。
这个对比实验适合写到报告的结果讨论里,用来验证“阻尼提供功率振荡抑制,惯量提供频率变化率抑制”。
5.2 工况二:并网功率指令动态响应
很多人测试VSG模型会直接给功率指令一个阶跃。实际工程中功率管理系统(PMS)不会给阶跃,但仿真中这种激励最容易暴露控制器问题。给出以下流程参考:
在1秒时将有功参考Pref从80kW阶跃到100kW,同时保持Qref不变,观察VSG输出功率的变化。
预期结果是:功率不是瞬间达到100kW,而是以类似同步机功角振荡的形式超调后收敛。在J=1.2、D=30时,响应时间约30ms,超调量大概在10%以内,振荡次数大约1次。如果你测到的功率响应几乎无惯性直接跳到目标值,八成是你的转子运动方程没起作用,检查一下反馈通道P_e是取瞬时有功还是经过滤波后的功率。
5.3 工况三:孤岛切负荷与频率稳定
做孤岛仿真时必须把断路器模块的三相合闸控制设在正确的时间。一个可取的方法是0.5s前并网,0.5s时启动断路器断开信号,让VSG切换为孤岛运行模式,同时连接一个20kW的本地RLC负载,该负载在1秒时切除。
这种情况下,VSG的调频功能才会被完整展现。如果没有其他储能控制或卸荷电路,负荷突变后系统频率上升范围可以直接反映J和D的配合效果。我在做这组实验时的体会是:空载到阻性负载的切换会让电压下垂效应非常显著,此时Ku的电压支撑作用会更加明显。这个实验也是验证VSG从构网型转离网运行的“金标准”。
6. 常见问题与排查技巧实录
6.1 模型启动即发散,PLL锁相失败
最常见的现象:仿真一开始就报“Nonlinear iteration is not converging”,或者波形出现数值NaN。
排查方案:
- 先不接VSG闭环,只用三相电压源直接给PLL供电,确认PLL输出稳定。
- 检查VSG初始相位是否与电网相位一致。如果初始相位差为180°,合闸必然出冲击。
- 将Powergui的仿真步长从默认改为固定步长,典型值设10μs或20μs。如果使用变步长,很多功率电子开关的尖峰会被求解器误当成真实事件。
6.2 算法正确但输出有功波动很大
模型参数全对,VSG给出的波形却持续振荡,例如2Hz左右、衰减不明显的低频功率振荡。
我在实验室做半实物仿真时遇到过类似问题。最后定位到原因是:有功功率反馈计算使用了瞬时有功P=1.5(u_d i_d + u_q i_q)但没加滤波,高频纹波被送入转子运动方程,相当于给虚拟惯量一个剧烈抖动扰动。
解决办法:在有功反馈后加截止频率为20~50Hz低通滤波器(一阶),模拟真实测量环节中的抗混叠滤波特性。这里就是你搜索时看到的“simulink一阶滤波模块”实际应用场景——在VSG控制里,一阶低通滤波不仅是信号调理,还会显著影响系统阻尼特性。滤波时间常数的选择原则是:小于控制器带宽的1/5,但大于开关频率纹波对应的周期。按我经验取5ms~20ms之间的时间常数均可行。
6.3 直流母线电压振荡无法抑制
带光伏前级时,直流母线电压出现几Hz振荡,调储能控制器PI也压不下来。通常情况下不是储能控制参数问题,而是光伏MPPT步长与储能电压环路带宽耦合产生负阻效应。
解决方向:
- 将MPPT的扰动周期调慢,如每0.05秒扰动一次;而储能电压环的带宽至少大于10Hz,两者拉开距离。
- 或者在直流母线电容处增加电压前馈,提供给储能电流内环,使其“预判”电压变化。
- 检查电池模型SOC变化是否合理,如果初始SOC设在1%或99%,电池内阻变化会让电压环等效增益明显下降。
6.4 并网合闸电流尖峰过大
0.3s断路器合闸时电流瞬间超过额定值2倍以上。排除硬件电路初始条件的原因之外,最重要的是VSG的预同步没有把相位调零。加一个监视模块可以“看到”误差:
- 将电网三相电压角度和VSG输出的虚拟角速度θ差做差。
- 接入PI环,输出Δω加到角速度设定值上。
- 直到θ差绝对值小于0.01rad,再进行合闸。
如果你偷懒不起预同步模块,简单的替代做法是直接让θ的初始向量与电网一致,这在只做并网稳态仿真时是有效的,但不要把它包装成“无缝切换”的离网实验。
6.5 常见问题速查表
| 故障现象 | 核心原因 | 解决方案 |
|---|---|---|
| 启动即发散 | PLL相位不可用、初始相位错误 | 检查初始条件和PLL独立性 |
| 有功功率2Hz振荡 | 功率反馈无滤波 | 有功反馈加截止频率20-50Hz低通滤波 |
| 直流母线持续振荡 | MPPT与储能电压环带宽耦合 | MPPT扰动周期设0.05s及以上 |
| 并网冲击电流过大 | 预同步未正常工作 | 相位差小于0.01rad后再闭合断路器 |
| SOC对控制干扰严重 | 电池容量太小、内阻变化 | 选用50Ah以上电池模型 |
| 变压器波形畸变 | 接线模式、饱和模型参数不当 | 默认磁饱和放开,先近似线性变压器 |
| 仿真速度极慢 | 固定步长过小、开关频率过高 | 先调低频率验证,再提升回10k |
| 电压外环饱和 | 电压限幅设置不合理 | 电压限幅设为额定的1.1倍直流电压以上 |
7. 仿真与实验联动经验
很多论文写“仿真验证了控制策略的正确性”,但工程里最终要落的是半实物或物理样机验证。在做RT-LAB或者快速控制原型RCP测试之前,务必先在Simulink中选好“离散求解器 + 固定步长”,否则控制器C代码生成时会遇到代数环或连续状态变量过多的问题。
另一个值得留意的是“模型标定”思维。仿真里的J和D可以随意设置,但实物样机中的惯量支撑能力受储能容量和电池倍率限制。比如你只有100kW/100kWh的储能,却把虚拟惯量J设置到能支撑50kW扰动长达5秒的理想水平,实际系统中电池早已触SOC下限或功率上限。建议在搭建模型时同步建立一个简单的能量约束监测模块:积分VSG输出功率变化量,对比储能可用能量区间,超出就提示“虚拟惯量超限”。有约束的VSG仿真,才更接近可落地的系统。
8. 模型后续扩展
我最后给你留一个我常建议学员尝试的扩展路线:
第一,换掉理想电网,加入三相不平衡负载,会让VSG的输出电压包含负序分量。一般VSG不带负序补偿,效果会较差,这时正好试试在控制中加入正负序双通道控制,或者比例谐振控制替代PI电压环。
第二,把单台VSG改成两台并联,你会发现有功均分效果取决于虚拟阻抗取值,功角偏差导致低频环流是必然的。这一块会牵出VSG并联稳定性著名的功率分配与环流抑制问题,做透彻很发文章。
第三,加入故障穿越需求。当电网电压骤升或骤降时,VSG的电流限幅策略需要限制故障期间输出电流,否则功率器件过热损坏。如何在故障期间保持同步性而不失步,是目前构网型控制研究的核心热点。
从我操作层面说,打牢基础、弄清原理比刷更多仿真算例重要得多。VSG的建模过程是“一通则百通”的,把转子运动方程、阻尼功率、虚拟阻抗、预同步这几点在Simulink里跑通,以后无论做风电VSG研究还是储能构网型样机改造,核心逻辑都是同一套。用这套模型做几个典型工况后,再回头修改成自己的参数和控制目标,就能省去大量从空白模型开始的重复工作了。