风储VSG虚拟同步发电机Simulink仿真建模与参数整定指南

发布时间:2026/9/10 14:53:49
风储VSG虚拟同步发电机Simulink仿真建模与参数整定指南 前阵子一个做风储场站仿真的朋友跟我吐槽大扰动刚来的时候风电机组死死地跟着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·IbatSoC的积分方程为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里通过CtrlG可以将选中的模块组合成子系统这样线缆不会交叉混乱。标记信号名要统一比如“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也一样太大会让频率偏差过大太小则起不到阻尼作用。我做整定时的流程是这样的先确定基准值。假设系统额定容量Sn100kVA额定频率fn50Hz额定角频率ωn2π·50≈314.16 rad/s。虚拟惯量J单位kg·m²跟惯性常数H的关系为J 2·H·Sn / ωn²代入H2sJ ≈ 2×2×100000 / 314.16² ≈ 4.05 kg·m²。H范围先取1.5~3s作为第一轮扫描。阻尼系数D的折算同理。可以先按临界阻尼或者工程经验取D20~50标幺值单位。然后在同一个负荷突变工况下做扫参固定D30让H从1s逐步升到5s观察频率跌落最低点nadir和恢复速度选一个恢复速度可接受、且动态过程不出现明显振荡的值。固定H2s让D从10升到60观察频率超调量和振荡衰减速度选稳态误差和阻尼都合适的点。这种两参数逐一扫描的方式虽然朴素但比拍脑袋有效得多。仿真跑一趟也就几十秒多跑几轮就能积累出“这台系统的性格”。4.3 内外环PI参数整定实操内环PI参数如果用手动试错非常折磨人因为多个环嵌套在一起互相干扰。我推荐两步走第一步用“模块整定法”先单独给电流环整定。断开电压外环只保留电流反馈和PI控制器给一个阶跃电流指令观察电流阶跃响应按经典PI整定口诀调整Kp和Ki。电流环响应目标大概在1~2ms以内达到稳态。第二步再闭合电压环。此时电流环已经被调得很快可以近似为1:1的增益块。电压环PI的系数可以先设一个偏保守的初值比如Kp0.5Ki20然后加上阶跃参考电压做在线调整。VSG外环通常不套PI它就是摇摆方程本身所以调节H、D即可。千万别想着在VSG外环再加一个PI来压频率误差——那样会破坏虚拟惯量的动态特性相当于又把同步机改回了跟网型控制。关于标幺值换算我这里补充一个特别常见的坑Simscape Electrical里功率测量模块输出通常是W或var而控制系统里VSG方程用标幺值如果你忘了把Pe除以基准功率Sn那摇摆方程会得到完全错误的角频率。很多仿真发散问题最后查下来就出在这种单位不统一上。4.4 仿真步长与求解器配置VSG控制含有一堆连续积分环节同时又存在PWM开关和IGBT仿真配置上要分清模型类型。如果用的是开关级模型Universal Bridge 实际PWM建议用离散求解器Discrete固定步长Ts1e-5到2e-6s。太大会出现PWM分辨率不足、波形严重畸变太小则仿真速度太慢。PWM载波频率一般设10kHzTs1e-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界面里一个个点效率提高很多。如果你现在正在跟模型较劲先别急着怀疑算法有问题把单位折算和代数环排查一遍大概率能解决一半的疑难杂症。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询