风储VSG虚拟同步发电机Simulink仿真建模与参数整定指南
2026/9/10 14:53:43 网站建设 项目流程

前阵子一个做风储场站仿真的朋友跟我吐槽:大扰动刚来的时候,风电机组死死地跟着PLL锁相,电网频率往下掉,它却一点主动支撑的意思都没有。这句话基本概括了做这个仿真的意义——在新能源占比越来越高的电网里,传统同步发电机提供的惯量和阻尼正在被大量电力电子接口逐步挤掉,而“风储+虚拟同步发电机(VSG)”这套方案,就是想用控制算法把丢失的“旋转备用”从逻辑上找回来。

这篇内容适合正在做新能源并网仿真、写毕业论文或者搞课题预研的电气方向同学。我会按一个完整科研/工程验证项目的思路,把系统拓扑、风机和电池建模、VSG核心控制、Simulink实现方法以及调参踩坑过程全部串起来。无论你手里有没有现成的风储模型,读完应该都能搭起一套能跑的VSG风储并网仿真框架。

1. 先把问题看透:为什么风储系统需要一台“假同步机”

在做任何仿真之前,先得明白VSG到底在补什么窟窿。否则模型能跑之后,你根本不知道怎么改参数去验证“虚拟惯量”到底起没起作用。

1.1 传统同步发电机的“存在感”是什么

传统火电、水电机组里有一台实打实的旋转发电机,转子本身质量很大。当系统出现负荷突增或者发电机跳闸,电网频率会往下掉,这时候同步电机会立刻释放一部分转子动能到电网里,让频率下降速度变慢。这个物理过程不需要任何控制器参与,靠的是转子本身的转动惯量,来得非常快,几乎和扰动同步发生。

同时,转子绕组和阻尼绕组在转速变化时会产生阻尼转矩,像一个弹簧加阻尼器一样,把频率振荡逐渐平息下来。工程上把这种能力叫做“同步电机的摇摆方程”。从数学上看,它就是个很简单的二阶环节:

2H·dΔω/dt = Pref − Pe − Dd·Δω

其中H是惯性常数,单位秒;Dd是阻尼系数。电网能稳定运行,很大程度上靠的是成百上千台同步机的“体质”在扛着。

1.2 跟网型风电的主要局限

现在主流的双馈风机和直驱风机,本质上都是通过背靠背变流器并网的。机械转子和电网之间隔着电力电子变换器,PLL会强制变频器的输出电压跟踪电网相位。好处是控制解耦、响应快,坏处是——它没有了“物理转子对电网的天然支撑”。

当电网频率意外跌落时,跟网型风机的PLL第一反应是锁住相位、维持输出功率等于参考功率,它不会像同步机那样因为转速变化而自动释放动能。如果你想让风机去做一次调频,就必须通过额外的频率检测环节去改变功率指令,这中间有通信延迟、测量滤波延迟,通常需要几百毫秒才能响应。在频率跌得特别快的大扰动工况下,这几百毫秒可能就很要命。

更明显的问题是没有“阻尼”。大量电力电子接口接入后,系统阻尼变弱,频率和功率很容易出现振荡。传统机组能通过励磁系统和阻尼绕组把振荡压下去,而电力电子设备如果仍然只按恒定功率输出,往往会在扰动后出现明显的功率波动。

1.3 为什么把电池也拉进来:储能在VSG里的角色

风机虽然有动能,但是风速变化大,机械功率本身就不稳定。单靠风机去做VSG,虚拟惯量支撑所需的暂时性功率从哪儿来是个难题——风机可能正工作在最大功率点,没有余量,强行增加输出就违背了MPPT。所以储能在这里起着“能量缓冲”的作用。

电池储能系统通过双向DC-DC变换器挂在直流母线上,短期内既能吸收风机多发出的功率,也能在电网需要瞬时支撑时把功率“垫”出去。VSG给出来的功率指令如果是一升一降的惯量支撑曲线,光伏或风电本身很难跟住,但是电池完全可以。

用一句话总结风储VSG的本质:风机负责把波动的新能源转成电能,电池负责削峰填谷,而整个并网逆变器在逻辑上伪装成一台同步电机,让外部电网“感觉”自己接了一台带惯量的发电机组。

2. 系统整体框架与风储功率耦合方式

很多人上来就想搭VSG算法,但忽略了系统层面的功率平衡。这里先把整体框架说清楚,再往里填模块,才不会出现直流母线电压飞掉、仿真跑不住的情况。

2.1 直流母线耦合拓扑

风储VSG通用拓扑是直流母线耦合,连接关系可以拆成四块:

  • 风电机组侧:永磁直驱风机(PMSG)经过机侧整流器连接到直流母线。整流器采用最大功率跟踪策略,把风机捕获的有功功率尽量多的送到直流母线。
  • 储能侧:电池组通过双向DC-DC变换器接在直流母线上,用来稳压和补偿功率差额。
  • VSG并网侧:直流母线经过三相逆变器和LC滤波器,再通过升压变压器接入电网。这台逆变器就是VSG控制的主体。
  • 交流负荷/电网侧:用理想电压源加RLC负载模拟外电网,留一个负荷突增的断路器节点,方便做扰动实验。

直流母线电压是被储能侧维持的,这一点一定要先记牢。如果把母线电压控制任务交给网侧逆变器,那VSG在做惯量支撑、功率波动时电压就会大幅跳变,控制环会乱套。所以典型设计是:风机整流器管直流电流注入,储能DC-DC管直流电压,网侧VSG只管按照控制方程输出交流电压和功率。

这里的拓扑筛选逻辑很简单:如果采用交流母线耦合,风机、储能各有各的变流器,需要多套VSG并联运行,控制和通信都复杂得多;直流母线耦合则相当于所有能量先汇集到一条母线,VSG只需要面对一个电压模型,最适合做单机验证。

2.2 风机侧模型怎么建才够用

风机建模的核心不是把叶片的气动细节全做出来,而是抓住两个输出量:机械功率Pwind和当前运行转速ωr。

空气动力学中,风能提取功率为:

Pwind = 0.5·ρ·A·Cp(λ, β)·v³

其中Cp是风能利用系数,λ是叶尖速比,β是桨距角。仿真里直接用查表法或函数表达式拟合即可。我习惯通过λ来写计算式:λ = ωr·R/v,然后查标准风机的Cp-λ曲线。Simulink里可以用MATLAB Function实现这个查表,也可以用Lookup Table直接做二维查表(自变量是λ和β)。

在VSG研究里,风机侧通常不需要特别精细,一个基于MPPT的简化模型就够了:

  • MPPT控制模块:通过给定风机的转速-功率曲线,找到最优功率点Pref_MPPT。
  • 机侧整流器:用最简单的PI双闭环,其中外环控制直流母线侧注入电流,内环控制PMSG输出电流d/q轴。
  • 如果有功率波动平滑需求,在Pref后面加一个低通滤波或者滑动平均,再把波动量差额交给储能处理。

需要特别注意:风机模型里的Pref单位要跟后续功率分配模块统一,通常用标幺值还是瓦特要提前定好,否则在储能分配时会差出9到10倍甚至更多。

2.3 储能侧怎么建

电池等效模型存在多种选择:理想电压源、内阻+电压源模型、一阶RC等效电路模型。对于VSG短期动态研究,用“受控电压源+串联内阻+SoC计算”就够了,不用引复杂度很高的热拌电池模型。

推荐用这种带SOC更新的电池模型:

Vbat = Voc(SoC) − Rbat·Ibat

SoC的积分方程为:SoC = SoC0 − 1/(3600·C_Ah)·∫Ibat dt

如果电池容量设置太小,VSG做惯量支撑时SoC会瞬间跌落,导致电池电压塌掉,影响整个母线稳定性。我做仿真时一般简单预估:VSG惯量支撑释放的能量约等于虚拟储能量0.5·J·ω²,再考虑20%~30%的裕量去选电池容量,仿真过程中才不会轻易出现SoC上下限问题。

双向DC-DC变换器控制策略是储能侧的灵魂。外环取直流母线参考电压Udc_ref与实际Udc的误差,经PI调节得到电池电流参考值Ibat_ref;内环控制电池充放电电流跟踪Ibat_ref。控制周期可以设置得稍慢,比如采样时间取50微秒,比开关频率慢一点,主要是避免跟网侧VSG的控制环相互干扰。

2.4 功率分配逻辑和母线电压控制思路

整套系统的功率平衡可以写成一个简单的流平衡方程:

Pwind + Pbat = Pvsg + P_loss

其中Pvsg是并网逆变器注入电网的功率。风机采用MPPT时,Pwind是随风速变化的,电池通过DC-DC变换器自动填补Pwind和Pvsg之间的差额,同时维持Udc恒定。

从这个角度看,电池其实承担了两个任务:一是维持母线电压,二是提供VSG惯量支撑所需的功率变化量。前一个任务靠DC-DC的电压闭环自动完成,后一个任务靠电压闭环的快速动态响应来保证。因为惯量支撑的功率出力曲线通常是一个短时脉冲形状,电压环的带宽一定要高于VSG惯量响应的频带,否则追不上。

除此之外,可以考虑增加一个能量管理上层逻辑,比如设一个SoC工作区间(例如20%~90%),当SoC过低时限制风机向储能的充电功率,或者调低VSG功率参考。这个不是必须的,但加上之后会让你仿真负载突变这种工况时不至于让电池越界。

3. VSG控制:从同步电机方程到Simulink框图

接下来是整篇文章的核心。光知道VSG概念还不够,你得能把摇摆方程拆成可以落地的Simulink控制框图。

3.1 摇摆方程与控制结构

VSG的数学核心就是模拟同步电机二阶摇摆方程。为了跟传统电力系统分析一致,仿真里常用标幺制形式:

2H·dΔω/dt = Pref − Pe − (Dd·Δω) − 扰动项

其中Δω = ω − ωn,ωn是额定角频率(单位rad/s)。Pref是有功功率参考值,Pe是实测的并网有功功率,Dd是虚拟阻尼系数。

这个方程可以拆成三块来看:

  • Pref来自外部的功率调度或MPPT/储能分配结果。在风储VSG里,Pref来源是“风机MPPT功率+储能平抑功率”经过综合后的值。
  • Pe是逆变器实时输出功率,用瞬时功率法从三相电压电流算出。
  • 等号左边2H·dΔω/dt代表虚拟转子的“惯性功率”,Dd·Δω代表“阻尼功率”。

摇摆方程的输出是虚拟角速度ω,对它做一次积分可以得到虚拟相位θ。这个θ非常重要,它替代PLL锁相角,用来做后续Park变换和生成PWM脉冲。这也是“同步”二字的来源——逆变器的相位由自身惯性方程决定,而不是被电网硬生生“锁死”。

3.2 有功-频率环实现

在Simulink里,有功-频率环的搭建步骤可以分成四步。

第一步:功率测量。用3-phase Instantaneous Power模块(或者自己写一个电压电流dq乘法再求和),算出发电机端有功功率Pe。注意这里要用经过滤波器后的瞬态功率,可以直接用巴特沃斯低通滤波把开关纹波滤掉。

第二步:构建摇摆方程。我用一个S-Function或者MATLAB Function来写这个方程,比纯搭积分器结构更清晰、也更容易改惯量常数。参考代码:

function [omega, theta] = vsg_swing(Pref, Pe, omega_n, H, D, dt, theta_init) persistent w; if isempty(w) w = omega_n; end % 标幺值摇摆方程:2H*dw_pu/dt = Pref_pu - Pe_pu - Dd*dw_pu w_pu = w / omega_n; dw_pu = (Pref - Pe - Dd * (w_pu - 1)) / (2 * H); w_pu = w_pu + dw_pu * dt; w = w_pu * omega_n; theta = theta_init + w * dt; % 后续在外部做积分处理 end

注意这里的Pref和Pe需要统一成标幺值;H的物理意义是额定功率下的惯性时间常数,Dd通常取几十左右,后续调参可以慢慢微调。

第三步:生成虚拟角频率和相位。把摇摆方程得到的ω送去积分,得到θ。这个θ就是后续Park变换用得角度,不要再单独用PLL。

第四步:把功率环节串起来。很多VSG方案还会在Pref前面加一个一次调频下垂系数Kf,采集电网频率与额定频率之差,叠加到Pref上:

Pref_total = Pref + (fn − fgrid)·Kf

这个附加频率下垂环节可以模拟同步机的一次调频。做频率扰动仿真时,这个环节往往是体现“支撑效果”的关键。

3.3 无功-电压环实现

同步发电机除了有功-频率关系,还有无功-电压关系。VSG也要模拟这一层,否则它跟电网之间没有电压支撑,并网时的电压波动会很难看。

无功-电压环常用如下方程:

E = E0 + (Qref − Qe)·Kq + (Un − Ugrid)·Ku

其中E是虚拟电动势幅值,Qe是实测无功功率,Kq是无功下垂系数,Ku是电压偏差放大系数。这个方程实际是复刻了同步发电机的励磁调节效果——当输出无功多了,电动势往下压一点;当电网电压低了,电动势往上顶一点。

在Simulink中,无功环实现起来比有功环简单,就一个PI或比例调节器。关键点在于:E值要与有功环计算出的θ配合,生成三相内部电压参考:

Va_ref = E·sin(θ)、Vb_ref = E·sin(θ − 2π/3)、Vc_ref = E·sin(θ + 2π/3)

然后内环电压电流双闭环去跟踪这个虚拟电压,就完成了一个完整的VSG。

3.4 底层电压电流双闭环不能缺

VSG的外环输出的是电压参考值,不是直接能进PWM的调制波信号。工程上一般还会加一个电压内环和一个电流内环,用LC滤波器端电压和电感电流做反馈。

  • 电压内环作用:快速跟踪上面的E·sin(θ)参考电压,让逆变器出口电压更接近虚拟电动势。
  • 电流内环作用:对滤波电感电流限幅,防止过流损坏开关管,也为电压环提供阻尼。

这两个内环都用经典PI调节器就行。电压环响应速度要比外环VSG快大概5~10倍,电流环又要比电压环快3~5倍。这样才能保证VSG外环的动态特性不会被内环拖累。

实践里很多人喜欢直接省略双闭环,用一个理想受控电压源来等效逆变器。这种简化在纯电网稳定性研究里问题不大,但是如果你要做并网电流波形、谐波含量或者做半实物仿真,必须把开关器件和双闭环放进去。清楚自己要什么,再决定建模深度。

4. Simulink仿真搭建与关键参数整定

框架讲完,说点实操层面的东西。我怎么搭出这套仿真、参数怎么选、为什么这么选。

4.1 仿真模型的分层结构

Simulink模型一定不要全部揉在一张图里,否则调起线来会疯掉。我的习惯是采用4层结构:

  • 顶层:整体系统Schematic,包含风机子系统、储能子系统、VSG子系统、电网子系统、测量/示波模块。
  • 第二层:控制算法层,把VSG控制拆成有功环、无功环、电压电流环三个独立框。
  • 第三层:PWM生成和IGBT驱动层,用SVPWM或者三角波比较法,注意加入死区时间。
  • 第四层:数据后处理层,放置FFT分析、功率计算、频率测量等模块。

在Simulink里通过Ctrl+G可以将选中的模块组合成子系统,这样线缆不会交叉混乱。标记信号名要统一,比如“P_ref标幺”“q_meas”“theta_vsg”,方便排查问题。

电源和负载模块建议使用Simscape Electrical专门库里的Three-Phase Source、Series RLC Load和Breaker。电网侧一般设一个可编程电压源,设置好短路容量和X/R比;负荷侧放一个三相RLC并联负载,并通过断路器按时依次投入,制造负荷突增工况。

4.2 虚拟惯量H和阻尼系数D怎么定

参数整定是VSG仿真里最让人头疼的一步。H选太大会低频振荡,选太小则惯量支撑效果不明显;D也一样,太大会让频率偏差过大,太小则起不到阻尼作用。

我做整定时的流程是这样的:

先确定基准值。假设系统额定容量Sn=100kVA,额定频率fn=50Hz,额定角频率ωn=2π·50≈314.16 rad/s。

虚拟惯量J(单位kg·m²)跟惯性常数H的关系为:

J = 2·H·Sn / ωn²

代入H=2s:J ≈ 2×2×100000 / 314.16² ≈ 4.05 kg·m²。H范围先取1.5~3s,作为第一轮扫描。

阻尼系数D的折算同理。可以先按临界阻尼或者工程经验取D=20~50(标幺值单位)。然后在同一个负荷突变工况下做扫参:

  1. 固定D=30,让H从1s逐步升到5s,观察频率跌落最低点(nadir)和恢复速度,选一个恢复速度可接受、且动态过程不出现明显振荡的值。
  2. 固定H=2s,让D从10升到60,观察频率超调量和振荡衰减速度,选稳态误差和阻尼都合适的点。

这种两参数逐一扫描的方式虽然朴素,但比拍脑袋有效得多。仿真跑一趟也就几十秒,多跑几轮就能积累出“这台系统的性格”。

4.3 内外环PI参数整定实操

内环PI参数如果用手动试错非常折磨人,因为多个环嵌套在一起,互相干扰。我推荐两步走:

第一步,用“模块整定法”先单独给电流环整定。断开电压外环,只保留电流反馈和PI控制器,给一个阶跃电流指令,观察电流阶跃响应,按经典PI整定口诀调整Kp和Ki。电流环响应目标大概在1~2ms以内达到稳态。

第二步,再闭合电压环。此时电流环已经被调得很快,可以近似为1:1的增益块。电压环PI的系数可以先设一个偏保守的初值(比如Kp=0.5,Ki=20),然后加上阶跃参考电压做在线调整。

VSG外环通常不套PI,它就是摇摆方程本身,所以调节H、D即可。千万别想着在VSG外环再加一个PI来压频率误差——那样会破坏虚拟惯量的动态特性,相当于又把同步机改回了跟网型控制。

关于标幺值换算,我这里补充一个特别常见的坑:Simscape Electrical里功率测量模块输出通常是W或var,而控制系统里VSG方程用标幺值,如果你忘了把Pe除以基准功率Sn,那摇摆方程会得到完全错误的角频率。很多仿真发散问题,最后查下来就出在这种单位不统一上。

4.4 仿真步长与求解器配置

VSG控制含有一堆连续积分环节,同时又存在PWM开关和IGBT,仿真配置上要分清模型类型。

如果用的是开关级模型(Universal Bridge + 实际PWM),建议用离散求解器Discrete,固定步长Ts=1e-5到2e-6s。太大会出现PWM分辨率不足、波形严重畸变;太小则仿真速度太慢。PWM载波频率一般设10kHz,Ts=1e-6时每个载波周期只采10个点,勉强够用,如果对波形精度要求高,用5e-7s。

如果用的是平均模型(Average-Model VSC),则TS可以放宽到1e-4~1e-5s,跑整体动态响应非常快。我一般先用平均模型验证控制逻辑和VSG参数,确认无错后再切开关模型看质量,这样开发效率高很多。

另外建议把“零负荷启动”做成一个启动序列:先让电池通过DC-DC给母线充电,母线电压接近额定后再启动VSG,等相位锁定再合闸并网。直接在零时刻让电网和逆变器一堆断路器同时闭合,十有八九要出现巨大的冲击电流。

5. 调试实录与常见坑

我把这段时间做风储VSG仿真踩过的坑按照频率排个序,很多都是看着波形一脸茫然,最后发现是小细节造成的。

5.1 VSG角度抖动、功率跟不上的主要原因

VSG最典型的失败现场是:θ一直抖动、功率指令明明给的是阶跃,Pe却在那里来回摆,甚至出现负功率。

这种情况下先查相位角参考来源。如果你还在用PLL输出做Park变换,那VSG就是名存实亡——PLL的滤波延迟和VSG摇摆方程产生的相位扰动叠加在一起,相当于两个对象在抢一个角度,必乱。VSG内部所有坐标变换应该统一用自身摇摆方程积分出来的θ,PLL最多只能用来看电网频率读数。

第二个要查的是功率瞬时值是否经过了平滑。输出功率Pe直接用瞬时有功功率计算,会混入很大的2倍频脉动和开关纹波,送到摇摆方程里,虚拟频率自然跟着抖。建议用巴特沃斯低通滤波器,截止频率设置为PWM载波频率的1/10到1/20。

第三个常见原因是采样率不一致。比如电流内环用了1e-5的采样时间,VSG外环的MATLAB Function也用了1e-5采样,两者看起来一致,但实际运行顺序有先后导致延迟增加。这时候把VSG方程区域设置成连续模型,或者直接在MATLAB Function里标注继承采样时间,通常能解决。

5.2 直流母线电压飞掉

直流母线电压控制是风储系统最容易崩的地方。最常见症状是:仿真启动一秒后,Udc持续上升不回落,最终过压保护动作或者模块报错。

大部分原因是风机MPPT给的功率大于VSG输出的功率,多余的能量全都充进了母线电容,导致电压失控。解决办法是检查并网逆变器的功率外环是否正常工作。VSG的Pref如果一直按MPPT最大值给,而电网侧负荷又太小,那功率肯定送不出去。可以把Pref改成“MPPT功率→经过一次低通滤波→根据母线电压偏差动态调整”,简单说就是让光伏/风机的功率跟随VSG的实际送出能力,而不是无脑最大功率注入。

另一个导致Udc飞掉的原因是电池容量设置太小或者初始SoC设成了满电状态。电池满电时吸收不了多余能量,直流母线就得靠电容硬扛,自然扛不住。我习惯初始SoC设为50%,并把电池容量设成至少能支撑5秒额定功率的水平。

5.3 仿真模型跑飞与不收敛

Simulink在VSG仿真里最常见报错就是“Nonlinear iterations exceeded”、“Singularity”或者仿真时间步长不断缩小。

遇到这类问题,按下面顺序排查:

  • 先把求解器从默认的变步长改成固定步长,基本能解决50%的收敛问题。
  • 检查有没有“代数环”。功率测量模块的输出经过一系列运算后,又去计算同一个功率的参考值,就容易形成代数环。可以在反馈通路里加一个Memory/Unit Delay模块断开瞬时代数依赖。
  • 检查电流内环的输出限幅。PI调节器输出如果不加限幅,启动瞬间输出可能达到几万伏的PWM调制波,逆变器直接失控。限幅一般取0~1(对应调制比最大为1),同时配合小范围的抗积分饱和。
  • 检查母线预充电。前面已经说过,电网和逆变器直接同时合闸会导致冲击电流接近短路级别,传统数值求解器很容易崩。

5.4 结果验证清单

仿真能跑通之后,不是“出图就完事了”,得验证模型是否真的复现了同步电机行为。我给自己固定了一套验证流程:

第一,做一次负荷突增实验。比如在2秒时刻切掉一台发电机或投一个大负载,观察电网频率跌落曲线。如果VSG有效,频率最低点会明显偏高,且恢复速度更快;如果没有VSG效应,频率会快速掉落并出现严重超调。

第二,做一次虚拟惯量扫描验证。把H从1s改为4s,同样的扰动工况下重新仿真,对比频率跌落速度。最优频率斜率变小、跌落深度变浅,说明惯量确实发挥作用了,否则说明VSG外环没真正参与控制。

第三,看电池的充放电行为。负荷突增时,电池应该短暂放电,等频率恢复后再通过上层分配转为充电状态。如果SoC曲线始终不变,那说明储能根本没参与动态支撑。

第四,用FFT模块查看并网电流谐波分布。VSG算法用SVPWM调制并配置LC滤波器后,电流THD通常能控制在5%以内。如果谐波特别大,优先查死区补偿和滤波器参数。

一点调参的心得

做了好几轮风储VSG仿真之后,我最大的体会是:VSG不是一个“拼模块”的堆砌,它是一个天然的多时间尺度系统——最外层的电网振荡是秒级,VSG虚拟摇摆方程是百毫秒级,电压电流内环是毫秒级,PWM开关是微秒级。任何一个环节的时间尺度错配,都会让整个系统出现莫名其妙的问题。所以在开始阶段就花费精力把单位制、采样时间、信号类型这些看似琐碎的基础标准化,后面会省下很大的排查工作量。

我还习惯在模型里专门留一个“参数扫描”面板,把H、D、滤波器截止频率都做成变量,并用MATLAB脚本batch跑仿真。这样每次改参数只需要改几行代码,不用在Simulink界面里一个个点,效率提高很多。如果你现在正在跟模型较劲,先别急着怀疑算法有问题,把单位折算和代数环排查一遍,大概率能解决一半的疑难杂症。

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

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

立即咨询