风储VSG并网Simulink仿真:虚拟同步发电机建模与参数整定详解
整套风储并网系统搭下来之前我一直以为“并网仿真难在电力电子器件选型和拓扑上”直到把虚拟同步发电机控制加进去才发现真正的核心其实是“怎么让那台没有转子的逆变器表现得像一台有转子的同步发电机”。最近终于完成了这套基于风储VSG的Simulink仿真模型——风机加储能通过直流母线汇流再由一台采用VSG控制的逆变器并网风功率波动的时候储能负责补功率差额而VSG让整个系统给电网提供惯量和阻尼。前前后后调参数调了大半个月踩了不少坑。这篇文章把我自己的建模思路、关键模块参数、VSG核心算法实现和调参过程完整写出来希望能给做风电/储能并网仿真、VSG控制研究或者毕业设计需要搭这类模型的朋友一份能直接上手的参考。这套模型不挑基础只要你有基本的Simulink使用经验知道PI控制器怎么调了解dq坐标系下逆变器控制的大致流程就能跟着思路走。我会把风机侧MPPT、储能侧双向DC-DC、VSG的两大核心环路以及整个系统的联调方法拆开讲每个环节都会交代我为什么这么建、参数怎么来并把我实际调仿真时碰到的问题和排查经验一并写出来。1. 风储VSG为什么是刚需虚拟同步发电机解决的问题1.1 风电并网的核心矛盾看不见的转子稳不住的频率传统电网里的主力电源是同步发电机转子上有实实在在的旋转质量和转动惯量。电网里只要有负荷变化同步机转子的动能就会自然地参与调节——频率暂时下降转子释放动能支撑频率偏高转子吸收多余能量。这个过程是自动发生的反应速度在毫秒级到秒级之间不依赖任何通信和上层调度这就是所谓的“惯量响应”。电网稳定运行的底气很大一部分就来自这些会“转”的机器。风电并网后情况变了。风机本身有叶片、有发电机转子但通过背靠背变流器并网后机械转子和电网之间并不存在直接的电磁耦合关系。电网感受到的是一个由电力电子装置构成的接口它的输出特性完全由控制算法决定没有天然的惯性。更麻烦的是近年来直驱永磁同步电机风力发电机组占比越来越高这类风机变流器前后级完全隔离转子转速与电网频率没有任何同步关系电网状态变化时它大概率“无动于衷”。在低风电渗透率时期电网里同步机多缺的那点惯量不明显。但风电占比上去之后系统整体惯量下降同样大小的扰动会导致更大的频率变化率频率波动幅度也会变大。极端情况下还存在振荡失稳的风险。这就是行业里常说的“电力电子化电网带来的稳定性问题”。所以现在做并网研究几乎绕不开这个问题如何让逆变器主动补偿惯量和阻尼。1.2 虚拟同步发电机的基本原理给逆变器装上“软件转子”虚拟同步发电机Virtual Synchronous Generator, VSG的思路非常直接既然逆变器缺的是“机械转子”带来的运动响应那就在控制算法里人为构造一个转子运动方程。方程的形式完全模仿同步机的机电暂态特性用软件“算”出一个虚拟转子然后用这个虚拟转子驱动输出电压的相位和幅值从而决定逆变器的有功、无功输出。同步发电机最核心的数学描述是摇摆方程转子运动方程J·dω/dt T_m - T_e - D·(ω - ω_n)其中J是虚拟转动惯量ω是虚拟角速度T_m是机械转矩参考T_e是电磁转矩D是阻尼系数ω_n是额定角频率。控制周期内把电网计算的输出功率转换成转矩代入这个方程积分得到虚拟角速度ω再积分得到相位θ。无功-电压环节则通过下垂关系生成电压幅值E最终合成三相正弦电压参考信号。这样做的效果是逆变器输出有功功率和电网频率之间具备了同步机拍式的耦合关系。电网频率升高虚拟转子“加速”逆变器自动减小出力电网频率降低虚拟转子“减速”逆变器自动增加出力。整个过程中J决定了惯量大小D决定了阻尼强弱。既然这些参数是软件里的数字就可以比真实同步机做得更灵活——想要惯量多大就多大甚至可以做成随工况自适应的。1.3 为什么必须“风储”一起上单靠风机调不动风机单独用VSG并网理论上也不是不行但实际工程和仿真里有个现实问题可变风速下风机的最大功率跟踪MPPT输出本身就飘忽不定为了维持VSG的功率参考可能要牺牲一部分风能利用效率而且在风速低的时候根本没有足够的功率余量去提供惯量支撑。更关键的是风机机械传动部分有承受应力极限频繁大幅调节功率容易冲击齿轮箱和叶片结构可靠性不好。所以把储能加进去是更合理的选择。储能系统响应速度快、调节方向灵活既能吸收多余功率也能补充功率缺口。风储VSG的目标是风力机负责按MPPT最大化输出能量储能负责平抑风功率波动并配合VSG提供瞬时功率支撑。通过VSG控制并网逆变器整个风储系统对外呈现一个带惯量、带阻尼的受控电压源而不是刚性功率源。这也是为什么题目里“风储”二字不能拆开——储能解决了VSG的功率来源与快速调节问题VSG解决的是风储系统并网稳定性的问题。2. 风储VSG系统架构与模块设计2.1 整体拓扑一条直流母线一个VSG接口我搭建的仿真系统采用这样的拓扑结构风电机组——永磁同步发电机PMSG——机侧PWM整流器——直流母线储能电池——双向DC-DC变换器——同一段直流母线直流母线——VSG控制的并网逆变器——滤波电感/电容——交流电网。这种“直流母线聚合”结构有很明显的优势。风机和储能先用各自的变换器汇入直流母线两部分功率在直流侧自然解耦风机只管MPPT储能只管维持直流母线电压和平衡功率VSG逆变器则只需关注交流侧的电压、频率和功率控制。三个控制目标通过直流母线电压和VSG功率参考关联起来。系统级别的协调逻辑是风电功率按MPPT输出并网功率参考由VSG给出直流母线电压偏差反映功率不平衡储能根据这个偏差自动补偿。拓扑上值得注意的一个设计细节是交流侧滤波方案。我采用的是LCL滤波器逆变器侧电感、滤波电容、网侧电感三元件串联构成。LCL在开关频率处的衰减特性比单L滤波器好很多但会引入谐振峰需要在控制器里加有源阻尼。如果仿真图省事用L滤波器也行不过并网电流谐波表现会差一些想研究谐波或者弱电网稳定性时误差偏大。2.2 风机侧风力机、PMSG与MPPT风机侧是整个模型里最“物理紧”的部分。风力机的气动模型描述输入风速到机械转矩的转换P_w 0.5·ρ·A·v³·C_p(λ, β)其中ρ是空气密度A是风轮扫风面积v是风速C_p是风能利用系数β是桨距角λ是叶尖速比(ωR/v)。C_p的计算我用了仿真中常用的近似解析式λ_i 1 / (1/(λ 0.08β) - 0.035/(β³ 1))C_p 0.5176·(116/λ_i - 0.4β - 5)·exp(-21/λ_i) 0.0068λ这个公式的好处是C_p曲线形状对峰值区域明显做MPPT和额定风速以上变桨控制的仿真都够用。在Simulink中我用了一个MATLAB Function模块实现该公式输入风速、转速和桨距角输出气动转矩T_w P_w/ω。PMSG部分我直接用Simscape Electrical里的永磁同步电机模型设置了磁链、直轴电感、交轴电感、定子电阻等参数。更精细的做法是直接建dq数学模型但既然Simscape库有现成可靠的电机模型没必要重复造轮子重点是控制环节。机侧整流器采用转速外环电流内环的双闭环矢量控制通过调节q轴电流控制电磁转矩进而跟踪MPPT给出的最优转速d轴电流整定为零。MPPT控制我用的是最佳功率曲线法根据当前转速计算最大功率参考P_ref K_opt·ω³然后把它转换为转速环的参考。K_opt根据风机参数由C_p最大值对应的最佳叶尖速比离线算出我在仿真里取了一个在额定风速内基本贴合C_p_max的值直接用公式模块查算不需要实时搜索响应和稳定性都比扰动观察法好。2.3 储能侧电池模型与双向DC-DC稳压储能电池我用了一个带SOC计算的内阻模型。开路电压作为SOC的函数串联内阻简单实用。需要做精细化特性研究的可以换用二阶RC等效电路模型但我这套仿真里重点在VSG动态内阻模型足够了。双向DC-DC变换器是整个储能环节里最关键的物理部件。它把电池电压例如400V升降压到直流母线电压例如1100V。拓扑上选择Buck-Boost结构工作状态由母线电压和电池电压的相对关系决定当需要电池放电时工作在Boost模式能量从低压侧流向高压侧充电时工作在Buck模式能量从母线流向电池。储能侧的核心控制目标是维持直流母线电压稳定。因为风机的MPPT已经把功率尽数送到了直流母线而VSG逆变器又从直流母线吸收功率送到电网两者如果不平衡母线电压就会垮或者飙升。储能控制器实时采集直流母线电压与参考值比较经PI调节输出功率指令再通过电流内环驱动变换器。母线电压在波动后能够在大约100-200ms内回到参考值附近具体时间常数取决于母线电容大小和PI参数。我在仿真里还加了一层简单的功率协调逻辑允许人工设置一个储能功率限幅值比如额定功率的80%防止把电池SOC在几个仿真周期内跑穿。实际工程里储能的SOC管理、充放电切换死区、保护逻辑要复杂得多但仿真阶段把功率平衡和母线电压稳定做对后续加高级策略才有基础。2.4 VSG核心控制两大环路与电压电流双闭环VSG控制是整个模型的控制核心。我在Simulink里把VSG拆成四个子模块功率计算模块、转子运动方程模块、无功电压模块、电压电流双闭环模块。功率计算模块通过采集VSG输出电压和并网电流用瞬时功率法计算有功功率P_e和无功功率Q_e再经过一阶低通滤波器滤除纹波。滤波器截止频率不能设太低否则功率反馈相位滞后过大会引发振荡我用的是100Hz左右。转子运动方程模块是有功-频率环。方程如下J·dω/dt P_ref/ω_n - P_e/ω_n - D_p·(ω - ω_n)给定有功参考P_ref测量电网侧输出功率P_e通过虚拟转动惯量和阻尼系数得到角速度偏差积分后得到电压相位θ。这里我把机械转矩表示成功率除以额定角速度避免仿真中除以实时角速度可能出现的数值问题。ω_n取314.159 rad/s对应50Hz。该模块输出还包括虚拟有功频率f ω/(2π)。无功电压模块负责生成电压幅值。采用下垂控制E E_n k_q·(Q_ref - Q_e)k_q是电压下垂系数E_n为空载电压幅值参考。这样电网电压偏高时无功自动减小偏低时无功自动增大。生成的三相电压参考分别是E·sinθ、E·sin(θ-2π/3)、E·sin(θ2π/3)作为电压外环的输入。电压电流双闭环在dq坐标系里实现。电压外环将参考电压与滤波电容电压比较经PI调节输出电流参考电流内环再与逆变器侧电感电流比较经PI调节生成调制电压。调制波经SVPWM发波载波频率我设10kHz。双闭环的带宽分配原则是电压环带宽低于电流环带宽三倍以上。仿真里电流环PI我整定在2000 rad/s左右电压环整定在700 rad/s左右实测电压跟踪稳定谐波也满足简单并网波形要求。3. Simulink仿真搭建全流程3.1 平台选择与建模规划经验我建议用MATLAB R2022a以后的版本Simscape Electrical的元件库比早期版本完整不少PMSG、电池、IGBT、LCL滤波器都有而且部分模块支持热模型虽然仿真时我会关闭热特性来加快速度。开关器件我全用平均模型不建详细开关波形这样能兼顾VSG算法的真实性和仿真速度。规划模型的时候先搭控制部分再搭功率部分或者反过来都行但有一个原则我强烈建议遵守先做最小系统闭环再往里叠加模块。第一次做这个仿真时我一次性把整个系统所有模块都丢进模型里结果一出问题根本不知道是风机的MPPT没收敛还是VSG参数发散排查极其痛苦。正确顺序是先搭VSG逆变器纯电阻负载离网运行验证电压生成和双闭环。并入理想电网验证VSG功率跟踪和并网波形。加风机模型和MPPT验证直流母线在一端功率波动下的表现。加储能模型让储能兜底母线电压。最后加风速扰动、负荷阶跃等测试工况。3.2 风机气动与MPPT子模块实现风力机部分在Simulink里用一个MATLAB Function模块写空气动力学方程输入风速、转子转速、桨距角输出气动功率和气动转矩。为了便于调试我把风速设成一个阶跃信号分别在0.5s和1.5s切换观察系统动态。PMSG侧我用了Simscape Electrical里的永磁同步电机。这里有一个关键的连接问题电机电气端口接整流器机械端口接风力机转矩输出但风力机模块输出的转矩和PMSG的机械端口接受的是转矩还是转速参考需要确认清楚。我的做法是风力机把气动转矩直接输出给PMSG的机械扭矩输入端口然后测量电机的转速反馈给MPPT形成闭环。MPPT模块我用最佳功率曲线法。先算出对应风速下的最优转速与实测转速比较经过PI调节输出q轴电流参考。整流器的电流环跟踪这个参考。仿真中发现MPPT搜索步长和PI带宽匹配很重要。转速环带宽太高风速突变时电流冲击很大带宽太低跟踪速度太慢风能捕获效率下降。实际整定转速环带宽在几十rad/s时表现稳定。3.3 储能电池与DC-DC建模细节电池模块我选了Simscape Electrical的Battery (Table-Based)单元配置为锂离子电池额定电压400V容量100Ah初始SOC设为80%。它的默认模型内部包含开路电压随SOC变化特性并允许设置欧姆内阻。双击模块查看SOC-OCV曲线确保工作点在合理区间。双向DC-DC变换器的实现分两步功率主电路用两个IGBT理想开关反向串联构成半桥结构加上电池侧电感L_bat和母线侧支撑电容C_bus控制电路用状态逻辑选择Buck还是Boost。更简单的仿真方案是用受控电压源和受控电流源等效替代变换器即把电池当成一个可调功率源通过储能功率指令直接注入直流母线。这个简化方案在VSG算法验证阶段非常实用能省掉开关管的大量仿真开销。但为了让模型更贴近工程实际我这里保留了电力电子开关结构。直流母线稳压控制我采用电压外环加电流内环。电压外环的输出作为电池电流参考电流内环PI输出占空比经PWM生成模块作用于开关管。整个环路带宽设定在几百rad/s既要滤除母线电压纹波又要保证功率变化时母线电压回收速度。3.4 VSG控制器实现参数怎么定VSG几个关键参数的整定我给出一个可以直接参考的初始清单基于2MW系统。额定视在功率S_N2MVA额定电压380V线电压有效值额定频率50Hz直流母线电压1100V电网电压380V/50Hz。参数及取值为虚拟惯量J80 kg·m²阻尼系数D2000 N·m·s/rad无功下垂系数k_q1/100标幺化换算到电气幅值单位约0.001 V/Var低通滤波器截止频率100Hz电压环PI带宽700 rad/s电流环PI带宽2000 rad/s。J的初选逻辑如果设惯性时间常数H2s则J 2H·S_N / ω_n² 2×2×2e6 / 314² ≈ 81 kg·m²取整80。D的初选逻辑允许频率偏移1%即3.14 rad/s时输出满转矩则DS_N/(ω_n·Δω)2e6/(314×3.14)≈2028取2000。这套参数仿真通常不会发散但会有轻微超调需要在下一步微调。在Simulink里转子运动方程的积分环节我用Integrator模块配合Saturation限幅防止仿真初始化时频率飞逸。相位θ经过一个取模函数限定在0~2π内但其实即使不取模也没问题SVPWM模块会自动归一化。关键点是初始化——必须先让VSG空载运行到稳态再合闸并网否则合闸瞬间会有很大的电流冲击。3.5 整体联调步骤与仿真工况设置联调时我按照之前说的顺序把子系统逐一接入。整体联调时的关键操作是设置初始状态和断路器动作时间。步骤1风机侧启动。给风速10m/s的恒定值机侧整流器启动MPPT观察直流母线电容预充电到一定电压。这个阶段储能不工作母线电压由小功率回路稳定。步骤2投入储能。双向DC-DC启动母线电压被精确控制在1100V参考值上观察风电功率波动时储能功率是否反向跟随。步骤3VSG逆变器离网运行。VSG接入本地负载查看输出电压幅值和频率是否与参考一致。确认无误后再通过三相断路器并入电网。步骤4并网测试。断路器在1s合闸。合闸前VSG通过预同步控制把电压幅值、相位与电网对齐我在这里加了一个简单的相位校准环节。仿真工况设置方面我做了三组测试。第一组恒定风速10m/s系统稳态运行观察各点波形。第二组风速在2s时从9m/s阶跃到12m/s观察风功率上升、储能调节和VSG输出频率的动态过程。第三组电网频率在4s时向下偏移0.2Hz模拟弱电网下频率波动观察VSG有功输出如何跟随频率变化验证惯量支撑。3.6 仿真器设置与运行加速技巧把这个模型跑起来仿真步长是很多人的拦路虎。我推荐使用变步长求解器选ode23tb相对误差设为1e-3。如果模型里有PWM载波10kHz最大步长限制为1e-5秒模型运行时会比较慢。为了加速我做了几个调整开关器件用平均模型或理想开关模型去掉不必要的元器件热阻网络控制环节全部用离散采样采样时间设定为1e-5s与PWM周期同步把Simscape Electrical的开关损耗设为零关闭模型观察器的数据记录功能只保留必要波形。模型速度优化之后15秒仿真时间大约需要几十秒到一两分钟完全在可接受范围。如果卡顿明显检查是否有高阻值元件导致Simscape内部产生极小步长或者把滤波器的初始状态直接设置为稳态值减小启动过渡时间。4. 波形分析与问题排查实录4.1 动态响应结果怎么看先把最关心的并网功率波形拉出来。稳态时VSG的有功输出应该等于风机MPPT功率加上或减去储能调节功率。表现上是风速阶跃到12m/s后风机功率上升储能功率向负方向增大充电VSG并网功率平滑上升没有突变。再看频率波形。并入电网且电网频率恒定时VSG虚拟频率稳定在50Hz附近波动幅度不超过0.01Hz。这说明有功功率平衡了。风功率突然增大时虚拟转子频率有个短时超调然后快速回到50Hz这个超调幅度由J和D共同决定。如果超调量大、振荡时间长需要增大阻尼D如果频率变化率太快说明惯量J太小。母线电压波形同样能反映问题。风机功率突增的瞬间母线电压可能先微升储能反应后回到参考值。母线电压波动幅值在正负20V以内属于正常超过50V就需要检查储能电压环PI参数。母线电压波形如果呈现周期性的起伏多半是储能电流内环和电压外环之间带宽没有拉开建议把电压环带宽降低一些。4.2 关键参数对VSG响应的影响我实际把J和D分别增加到两倍、四倍对比波形后发现规律很明显。J增大以后频率变化率降低同等扰动下频率曲线变“钝”但达到新稳态的时间反而变长超调量也变大。D增大以后振荡衰减速度明显加快频率跌落后的恢复时间缩短但D过大会增加稳态频率偏差有功下垂过度。合理的做法是先按额定系统参数用公式计算初值然后微调反复将J减小到出现频率振荡再往回加一点反复将D增大到有功响应过慢再往回调一点。无功电压环的下垂系数k_q也有讲究。k_q越大电网电压偏差对无功输出的调节越“狠”但可能导致无功功率在稳态时偏离设定值太多。仿真中我一般先按电压变化10%对应无功额定输出设置k_q再根据实际波形微调。如果想要独立的电压调节能力可以在无功电压模块后加一级PI电压控制此时下垂环起外环作用。4.3 高频踩坑合闸冲击、数值发散与仿真慢合闸瞬间的冲击电流是最常见的问题根源是预同步没有做彻底。VSG空载时输出的电压相位和电网相位可能差一截直接合闸就会产生巨大的暂态电流。解决思路很简单在并网断路器前用锁相环实时检测电网电压幅值和相位把VSG输出电压参考调节到与电网一致后再闭合并网。在Simulink中最简单的方法是把VSG的初始相位设置成电网初始相位并在0.5s内通过相位修正环节强制校准。这里需要提个醒即使幅值和相位都一致合闸瞬间也可能因为滤波电容初始电荷不匹配产生瞬时电流建议合闸前让滤波器预充电完成。数值发散基本上是求解器步长或模型初始化问题。表现是波形直接变成高频振荡或者数值溢出。排查时先切ode15s或者ode23tb把最大步长进一步调小到1e-6观察是否改善。如果改善不明显优先怀疑功率计算环路存在代数环瞬时功率模块的输入来自电压和电流这两个量同时又依赖于功率反馈本身必然形成代数环。解决办法是在功率反馈路径上加大一阶低通滤波器并在滤波器的离散化设置中选择“单位延迟”选项主动切断代数环。这个坑我在初版模型里碰到时一度以为是参数问题查了好久最后发现就是反馈延迟没处理好。仿真速度慢的排查技巧我之前提过再补充一点如果Simscape模块较多可以尝试把求解器切换为“自动”在Advanced选项卡中勾选“Allow multiple tasks”。另外把风速等输入信号源尽量设成阶跃而不是斜坡启动时刻的计算负担会轻很多。真要仿真大电网或者长时间工况建议把模型离散化只保留控制环节的采样逻辑。我再列一个常见问题速查表方便对照排查现象可能原因排查与解决并网瞬间电流冲击大预同步没完成相位不一致校准VSG相位后再合闸检查断路器动作时刻频率波形高频振荡功率反馈代数环/采样延迟过大反馈加低通滤波设置单位延迟有功响应缓慢惯性不足J设置过大或阻尼过小减小J增大D观察变化率直流母线电压跌落储能功率限幅太小母线电容不足增大储能限幅检查稳压PI限幅值风功率跟踪迟缓MPPT带宽太低提高转速环带宽检查K_opt系数全程跑不动仿真开关模型太细、步长太小用平均模型、加大最大步长至1e-5SVG电压波形顶部削平SVPWM过调制降低直流母线利用率要求或提高母线电压仿真做到最后我最深刻的体会有两点。第一虚拟同步发电机的“虚拟”两个字意味着所有惯性都是软件给的参数整定虽然灵活但一旦脱离物理约束比如J选得比真实机组还高好几个数量级仿真里看着波形达标工程上根本不可行。J、D这类参数不要只看曲线平滑要回到等效惯性时间常数H和频率偏差允许值去反推、去验证。第二风储VSG这个系统里风机和储能之间天然存在一个“功率谁说了算”的问题。我把储能设置为直流母线稳压单元后VSG的有功指令就成了整个系统的出力参考储能只是在背后平差额。如果你要做参与电网调频的VSG就得把电网频率信号也引入储能协调逻辑里让虚拟转子的功率扰动由储能快速响应这个方向可以做更深的工况扩展。目前这套模型是我做新能源并网稳定性分析的基础框架后续我还在往一次调频、低电压穿越这些方向扩展等调通后再把新测试和参数记录补上。