前阵子帮一个做新能源方向的朋友调风储并网模型,他上来就问了一句:“VSG到底比传统下垂控制好在哪儿?”我一时竟不知道怎么用一句话讲清楚。后来我直接甩给他一个结论:下垂控制撑的是“稳态”,VSG撑的是“暂态”。你要想搞定新能源并网里最头疼的频率稳定问题,绕不开虚拟同步发电机这条技术路线。今天就把我基于Simulink搭风储VSG并网模型的完整思路、建模细节和踩坑记录全部摊开讲,给正在做电力电子仿真、新能源并网课题的同学和工程师一个可以直接上手参考的版本。
这篇文章的内容不搞飘在空中的概念复述,只聊实际搭模型时怎么设计、怎么调参、怎么处理那些让人抓狂的仿真问题。全文覆盖系统架构、VSG核心算法拆解、Simulink模型分层实现、关键参数整定,以及我实测过的典型故障与排查方法,按我的习惯,最后再补几个只有亲手调过模型才会注意到的细节。
1. 风储VSG的系统架构与设计思路拆解
1.1 为什么风电并网必须配储能和VSG
先看一个最基本的物理事实:传统电力系统里,同步发电机自带巨大的旋转惯量,电网频率一旦波动,发电机的转子会天然地“顶住”这个变化,给调度留出反应时间。风电就完全不一样了。双馈风机和直驱风机的转子跟电网之间隔着电力电子变流器,说白了就是“电气解耦”,风机转子的惯量根本传不到电网侧。这时候如果风电场占比高了,电网遇到负荷突变或者机组跳闸,频率跌起来一点缓冲都没有,严重的时候直接触发低频减载。
储能在风电场里干的事情就两件:一是平抑风速波动带来的有功功率间歇性,二是配合变流器做一次调频。但储能本身不产生惯量,它得靠控制算法“做”出惯量来。这就回到了我之前跟朋友说的那句话:下垂控制只负责把功率按比例分出去,频率跌多少它不管,只有VSG这种控制策略能在算法层面模拟出一个带真实惯量和阻尼的“虚拟同步机”。所以风储并网系统要过了高比例新能源接入的稳定关,VSG基本是必选项。
1.2 VSG控制思路的选址逻辑
从工程实现的视角去看,VSG的控制思路并不神秘——它只是把同步发电机的转子运动方程搬到控制算法里算一遍而已。你用微分方程算出虚拟机械功率、虚拟转速、虚拟功角,再用这些量去生成逆变器的调制波,从电网侧看,这台储能逆变器就跟一台同步发电机表现一致。
我选择在Simulink里搭这个系统,原因有三:第一,Simulink的电力电子库(Simscape Electrical)提供了现成的风机、电池、逆变器与变压器模型,不需要自己推导每个开关管的电气方程;第二,VSG控制本质上是连续域微分方程加离散域PWM的混合系统,Simulink的求解器能很好地处理多速率问题;第三,Simulink的Scope和Data Inspector可以直接观察虚拟角速度、有功输出、频率响应等关键量,方便我快速验证控制器参数是否合理。
1.3 风储VSG整体架构怎么分层
整个系统的架构我习惯分成三层来看。物理层最底下,包括风力机(我常用永磁直驱类型,或简化为带MPPT的功率源)、储能电池组、双向DC/DC变换器、VSG逆变器和并网变压器;控制层在中间,包括风机的MPPT控制、储能DC/DC的电压/电流控制、VSG的有功频率控制环和无功电压控制环;验证层在最上面,用于模拟电网负荷突变、风速阶跃、并网/离网切换等场景,用来检验系统动态响应。
这个分层的最大好处是,每层都可以独立调试。比如我先用理想直流源代替电池,验证VSG逆变器的控制算法和并网波形,确认OK了再接入电池模型;风机侧也先固定风速跑稳态,再给阶跃风速测试动态。分层调试能把定位问题的范围缩小一个量级,这是从项目开始就必须养成的习惯。
2. 虚拟同步发电机控制核心算法深度解析
2.1 有功-频率环:直接把同步机转子方程搬进控制器
VSG控制器的灵魂就是同步发电机的转子运动方程。标准形式是:J乘以dω/dt等于机械转矩减去电磁转矩,再减去阻尼项D乘以角速度偏差。在标幺值或实际值坐标系下有多种写法,但物理含义都一样:J代表虚拟惯量,决定系统抵抗频率变化的“惯性大小”;D代表虚拟阻尼,决定频率振荡衰减得快不快。
我在Simulink中实现这个环节时,输入是有功功率参考值Pref和实际输出有功Pe,两者做差得到虚拟机械转矩增量,除以虚拟角速度ω得到转矩参考,再经过转子运动方程积分出虚拟角速度。为了贴近同步机的原生态表现,一般还要加入有功下垂环节,也就是Pref按照频率偏差进行调整:Pref = P0 + Kω×(ωn - ω)。这从控制逻辑上讲,就是给VSG加了同步发电机的一次调频特性。
仿真中建议把这个环节单独打包成子系统,输入只保留Pref、Pe和电网频率,输出虚拟角速度ω和虚拟功角θ。这样后面如果要改成惯量自适应控制或者跟虚拟阻抗组合,只需要在子系统内部修改,不需动主电路。
2.2 无功-电压环:用积分器模拟励磁调节器
同步发电机还有一个特性是励磁系统:电压跌了,励磁就加强;电压高了,励磁就减弱。无功-电压环的核心就是模拟这个行为。我用的实现方式是基于无功下垂产生电压幅值参考,再经过一个积分器把电压偏差收敛到零。具体来说,先计算当前机端电压幅值E与额定值的差,加上无功功率偏差产生的E增量,经过PI调节器得到虚拟电动势E的幅值。
很多初学VSG的人容易在这里犯一个错误:把E直接当成指令电压送给电压环了。实际上E是虚拟内电势,逆变器输出电压必须经过虚拟阻抗(通常取L_s和R_s)压降之后才是端口电压。不做虚拟阻抗的话,VSG的均流特性和短路电流特性都跟真实同步机差很远。所以无功电压环的输出别直接接调制波,中间一定要留一个虚拟阻抗计算环节。
2.3 虚拟惯量和虚拟阻尼的本质认识
我见到过太多论文把J和D写得玄之又玄,其实落到仿真层面就是两个可调的数值参数。J越大,虚拟转子的“质量”越大,频率变化率df/dt越小,但动态响应变慢,超调变大,恢复时间长;D越大,振荡衰减越快,但稳态频率偏差可能变大。
所以调J和D时,必须接受这是一个鱼和熊掌的问题。我自己常用的一组参考逻辑是:先根据系统的额定容量估算J的基准值,公式是J = 2H×S_N / ω_N²,其中H是惯量时间常数(秒)。比如100 kW系统、H取2到4秒,J大概就在4到8 kg·m²这个量级。D的话先取一个让系统不过阻尼的初值,然后根据阶跃响应曲线的振荡次数和衰减速度手动微调。后面第4部分我会给出具体的调试路径和判断标准。
3. 风储并网系统的Simulink建模实操
3.1 风机侧建模:先搞清楚你要解决什么问题
风机的建模深度取决于你的研究目标。如果关注的核心是VSG并网特性,不建议一开始就用完整的气动-机械-电气耦合模型,因为叶片扫掠、齿轮箱、变桨机构这些细节会让仿真速度慢一个数量级,但对并网结果几乎没有影响。我建议用两类简化方案:一类是恒定风速加阶跃扰动,用查表法或MPPT曲线直接给定有功功率参考;另一类是叠加一个随机风速序列,用封装好的风力机模型输出机械功率,再接永磁同步发电机和整流器。这两种方式都能得到合理的风机输出功率轨迹,又不至于拖垮仿真速度。
我自己的仿真习惯是MPPT曲线用最大功率追踪模型,输入风速,输出有功功率参考值Pref_wind,再经过一个低通滤波器模拟机械惯量带来的功率平滑,然后发给储能系统作为净功率需求的一部分。注意这里的低通滤波器时间常数别太大,我踩过坑,时间常数设5秒会让整条功率曲线滞后太多,导致VSG的储能补偿动作跟风机实际出力对不上。
3.2 储能侧建模:双向DC/DC加VSG逆变器的组合逻辑
储能单元在这个系统里扮演“调频执行器”的角色。它得既吸收风机多发的有功,又在风机出力不足时补上缺口,同时还响应VSG的频率下垂指令。我用的拓扑是电池组接双向Buck-Boost变换器,中间直流母线再接三相VSG逆变器。DC/DC的控制目标很简单——维持直流母线电压稳定,同时响应上层下发的功率指令。
Simulink里搭建双向DC/DC时,用Simscape Electrical的MOSFET或IGBT加驱动脉冲即可,控制策略用电压外环加电流内环。这里有个很关键的细节:电流内环的带宽必须远高于电压外环,否则直流母线电压在VSG功率突变时会剧烈波动,甚至触发保护。我在调试时把电流环的带宽设置在1 kHz以上,电压外环带宽压到100 Hz级别,实测下来母线电压波动能控制在2%以内。
储能电池模型我用的等效电路模型,SOC范围设定在20%到90%之间,主要防止仿真中SOC越界导致电压剧烈变化干扰VSG控制判断。如果你想把SOC的影响也纳入研究,可以加一个简单的开路电压-SOC曲线,但要注意初始SOC对仿真结果的影响很大,务必在模型初始化时设置好。
3.3 VSG主电路与控制算法的Simulink实现细节
主电路部分建议用Simscape Electrical的标准三相桥逆变器,直流侧接储能母线,交流侧经过LC滤波器、并网电抗器,再接变压器和电网。滤波器的截止频率一般取开关频率的1/10左右,比如开关频率10 kHz时,LC滤波器谐振频率取1 kHz上下,L和C的具体值按这个频率和特征阻抗算出来。我见过不少模型在滤波器设计上随手填参数,然后波形丑得没法看,还得回头改参数,不如一开始就按公式算。
VSG控制算法在Simulink里的实现顺序是:测量三相电压电流,经Clark变换得到αβ分量,计算瞬时功率P和Q;P进入有功频率环算出虚拟角速度和功角,Q进入无功电压环算出虚拟电动势幅值;接着经过虚拟阻抗计算得到电流参考,进入电压电流双闭环。电压电流环一般都在同步旋转坐标系下用PI控制器实现,输出经过Park反变换得到调制波,再进PWM发生器。整个控制链路告诉你的核心就是:VSG算法只负责生成电压幅值和频率的“参考轨迹”,真正保证跟踪精度的是里面的电压电流双闭环。
为了保证仿真速度和稳定性,我建议把PWM和电力电子主电路从控制算法中分离。PWM生成用Simulink自带的PWM发生器或S-Function实现,控制算法部分用连续的传递函数模块和积分器实现。整个仿真使用离散求解器,步长建议设为PWM周期的1/20左右,例如10 kHz开关频率对应5微秒步长,这样既不会丢开关脉冲,也不会慢得让人崩溃。
4. 关键参数整定与调试经验分享
4.1 惯量时间常数H怎么定才合理
虚拟惯量时间常数H不是越大越好。太大会让系统响应慢,在电网频率快速变化时,储能可能来不及补充功率;太小则频率变化率过快,相当于没起到虚拟惯量的作用。按照电力系统对小干扰稳定性的基本要求,H一般取2到6秒,对应的物理含义就是虚拟转子的动能等价于系统在额定功率下能维持2到6秒。
如果你的目标是复现某篇具体的论文,那论文里往往会直接给出J或H的数值,直接用就行。但如果是为了自己的系统设计,我建议这样选:先确定系统额定容量S_N和额定角频率ω_N,用J=2H×S_N/ω_N²算出基准值,然后仿真中从基准值附近开始,观察有功阶跃响应的最低频率点。如果最低频率跌到49.8 Hz以下(按50 Hz系统算),就增大H;如果响应时间超过3秒仍不能恢复到频差0.05 Hz以内,就减小H。这样调出来的H基本能满足绝大多数并网标准的要求。
4.2 阻尼系数D和下垂系数的联合整定
下垂系数和D这两个参数很多时候会被混淆,但它们控制的不是一回事。下垂系数Kω决定稳态下频率偏差和有功出力之间的比例关系,它直接确定了系统的稳态频率调整率;D只作用于频率变化过程的“刹车”,只影响动态过程。所以在整定时可以先把Kω按一次调频系数定好,比如5%调差率对应Kω = 0.05×P_N/(ω_N),然后只调D。
调试D的方法我建议用有功功率阶跃法。给VSG一个10%的有功阶跃,观察虚拟角速度响应:如果频率曲线明显多次穿越目标值,说明D太小,振荡衰减慢,需要增大D;如果频率曲线平缓但到达新稳态的时间很长,说明D太大,系统已经处于过阻尼状态,需要减小D。反复调两三次,你就会找到那个临界阻尼的感觉——频率变化快速但不过冲,几次就能找准。
4.3 预同步和并网切换里的参数陷阱
并网瞬间的冲击电流是VSG仿真里被吐槽最多的问题之一。传统锁相环控制的逆变器并网前必须跟电网电压完全同步,VSG虽然不依赖锁相环,但它得通过预同步控制把虚拟功角调到与电网一致,否则并网瞬间照样过流。
我在Simulink里实现预同步的思路是:并网前闭合预同步开关,比较电网电压相位和虚拟功角,用一个小比例积分控制器生成频率修正量叠加到VSG的角速度指令上,直到功角误差收敛到接近零,再发送并网断路器闭合信号。这里要注意,预同步过程的时间常数要跟VSG的惯性匹配,太快的预同步会导致功角超调,反而更难并上;我一般预同步时间给到0.3到0.5秒,功角误差控制在1度以内再闭合断路器。
还有一个常见的坑是并网断路器的控制信号。Simulink里断路器用Simscape模块时,如果控制信号类型设置不对,可能导致模型在并网瞬间出现“state jump”,直接发散。我的做法是设置一个小的过渡电阻串联在断路器支路上,并网后再延时切除,这样能显著降低突变严重程度。
5. 仿真常见问题与排查技巧实录
5.1 模型发散的几类典型原因
先列举我在多次调试中遇到的最典型的发散原因,方便你对号入座排查。第一类是保持器问题。Simscape Electrical和Simulink控制部分连接时,需要用到Simulink-PS Converter和PS-Simulink Converter,转换器里如果选了“Backward Euler”以外的保持器,在高开关频率下会出现数值振荡,导致电压波形高频抖动甚至发散。我统一改成Backward Euler后问题基本消除。
第二类是代数环问题。当测量信号经过整个控制链路又回到同一时刻的输入,且链路中没有动态模块打破环时,Simulink会形成代数环,报错或者收敛缓慢。我的排查方法是看诊断信息里有没有“Algebraic loop”提示,一旦发现就在反馈路径上插入单位延迟或者滤波模块。
第三类是初始条件问题。VSG控制的积分器初始值如果不和额定工作点匹配,启动瞬间会产生巨大的转矩和电流尖峰。我在离线仿真里常用的做法是先让所有积分器初始值等于额定值,然后让系统空载启动,等稳定后再施加负载阶跃,这样可以避免整个启动过程不可控。
5.2 频率响应曲线诡异波动的排查思路
我见过不少人在做VSG仿真时,频率响应曲线不仅没有衰减的趋势,反而越来越剧烈地振荡。第一反应往往是不停地调J和D,但调来调去没有效果。这时候我建议你先检查无功电压环和虚拟阻抗的参数是否匹配。如果虚拟电抗选得跟线路电抗不在一个量级,VSG的功角特性会和非线性的功率传输曲线出现交点偏移,导致低频振荡。我的经验是虚拟电抗值要跟并网电抗值在一个数量级内,通常取线路电抗的0.2到0.5倍。
另一类震荡原因是PWM生成环节带来的数字延迟。如果你发现频率振荡频率和PWM频率存在某种固定比例关系,那基本就是延迟引入的相位裕度丢失导致的。解决办法包括提高PWM频率、在控制回路中串联一个简单的前馈补偿,或者直接用平均模型代替详细开关模型来验证控制器的纯逻辑是否正确。我一般先用平均模型把控制器调通,再接回详细开关模型,这样可以把模型问题从控制器问题中隔离出来。
5.3 风速突变后直流母线电压垮掉的处置
风储系统里有一个很容易被忽视的耦合关系:风速突变→风机输出功率突变→储能DC/DC为了维持直流母线电压而调整充放电电流→VSG逆变器有功输出跟着变→电网频率跟着变。如果这个链条里任何一环的响应速度不匹配,直流母线电压就会垮掉。
我的处置经验是在储能DC/DC控制里增加一个“电压偏差限幅器”,当母线电压偏差超过设定阈值时,限制充放电电流变化率,而不是直接由PI控制器全速输出。这相当于给储能响应加了一个斜坡限制器,物理上模仿了储能电池不能瞬间改变充放电功率的特点。加上这个限幅之后,风速从10 m/s突降到6 m/s时,母线电压波动能控制在规定的范围内,频率振荡也明显减小。
5.4 常见问题速查表与关键提示
| 问题现象 | 可能原因 | 解决思路 |
|---|---|---|
| 启动瞬间过流严重 | 积分器初始值不匹配 | 从额定空载启动,再施加阶跃 |
| 并网瞬间电流冲击 | 预同步未收敛 | 延长预同步时间,功角误差<1° |
| 频率振荡持续不衰减 | 虚拟阻抗过大或阻尼不足 | 检查虚拟电抗与线路电抗比例,调整D |
| 直流母线电压发散 | DC/DC电流环带宽不足 | 提升电流环响应速度,限制电流斜率 |
| 波形存在高频毛刺 | 保持器设置不当 | 统一改为Backward Euler |
| 仿真速度极慢 | 步长过小或开关模型过细 | 调整步长为PWM周期1/20,考虑平均模型 |
5.5 我踩过的一个典型坑:锁相环要不要留
初学VSG时,很多人会习惯性地保留传统逆变器里的锁相环,一边用VSG算法生成角度,一边又让锁相环锁电网电压。这样做在并网模式下结果看着差不多,但一旦发生电网电压降或者频率偏移,两个角度源就会打架,功角产生偏差,严重时会导致并网失败。
VSG的优势恰恰是不需要锁相环——它通过虚拟转子运动方程自己“生成”一个跟电网同步的相位。如果确实需要知道电网相位,例如预同步阶段,我建议单独加一个预同步锁相环,并网成功后立刻切除。这样既利用了锁相环的同步功能,又不会干扰VSG控制,是最稳妥的组合方式。
6. 基于仿真验证的进一步优化方向
模型搭完、参数调通以后,我建议你再多做一步:把风速序列扩展为一整条随机风速曲线,让系统跑一个完整的24小时出力曲线,观察储能SOC的变化轨迹以及VSG频率控制是否在全时段内都能保持稳定。这一步看起来很费时间,但对于验证控制系统在长期运行场景下的鲁棒性非常有价值。很多短时仿真里隐藏的问题,在长周期运行时会暴露得很明显。
另一个我常做的验证是电网侧短路故障测试。在Simulink里给电网模块加一个三相对地短路,观察VSG在故障期间和故障清除后的响应。这个场景对标了电网对新能源场站故障穿越能力的要求,是工程应用绕不开的检验项目。如果短路故障导致VSG频率发散,通常需要在故障期间切换控制策略到限流模式,故障清除后再恢复VSG算法。
我想给正在做相关课题的人再补充一个容易忽略的地方:VSG的波形质量直接受电网谐波影响。如果你研究的是强电网场景,电网模型用理想电压源就可以;但如果你想测试弱电网甚至孤岛模式,那电网模型一定要用诺顿等效或戴维南等效加串联阻抗,并且加上一定的高次谐波源。这样测出来的波形畸变率、频率波动才是真实工况,你的论文或报告的结论才有说服力。
按我个人的建模习惯,一套完整的风储VSG并网系统模型,从零搭建到调试完成,大概需要一到两周时间。初期大部分时间花在控制环上的参数试错,后期则主要是针对具体边界工况做鲁棒性验证。如果你手头有时间,可以先从最简单的单机VSG并网模型练手,跑通了再往系统里加储能和风机。这样每增加一个复杂度层次,你都能保证前一层是正确的,不会出现多个不确定性因素叠加导致问题找不到源头的情况。
最后分享一个我做仿真时的“偏方”:每次修改参数后,都在工作区里保存一份带参数名称和数值的备份文件,命名方式类似model_vsg_J4.5_D2000这种。模型调参本来就是反复横跳的过程,有了带参数的备份,你能随时回到某个“表现还不错”的状态,不用靠回忆重调参数。这个习惯帮我在复杂项目里节省了至少一天的时间,强烈推荐你也试试。