风储VSG虚拟同步发电机Simulink仿真:从控制原理到参数整定
2026/9/10 8:33:26 网站建设 项目流程

做新能源并网仿真的朋友,大概率都遇到过类似的困惑:风机明明是绿色电力,电网公司却总觉得它“不够稳重”——功率随风速波动,频率稍有扰动就跟着发抖,带不动负荷,甚至说掉就掉。这里面的根源,在于传统风电并网用的控制方式叫“最大功率跟踪+PQ解耦控制”,本质上是把风机当成一个“电流源”塞进电网,电网需要什么它不管,自己只管把能发的电发出去。可是当风电占比越来越高,电网需要惯性和阻尼来维持频率稳定的时候,这种“我只管自己”的思维方式就不够用了。

风储VSG(虚拟同步发电机)技术,本质上是让风力发电机加储能系统“假装自己是一台同步机”——通过控制算法模拟同步发电机的转子运动方程和励磁调节特性,在电网频率波动时主动输出惯量支撑和阻尼功率。这套基于虚拟同步发电机的风储并网系统Simulink仿真工程,就是把上面这套逻辑在MATLAB/Simulink环境里完整复现出来,让你能在电脑上先验证控制效果,再决定要不要往硬件上搬。

这篇文章我会把整个仿真的设计思路、控制原理、模块搭建、参数整定和踩坑经验一次讲透,适合正在做毕业设计、准备投小论文或想转行做新能源并网控制的朋友,照着搭能省下不少弯路。

1. 为什么风机需要“假装”自己是一台同步发电机

1.1 传统风机并网的先天不足

传统双馈风机或直驱风机的并网变流器,控制层几乎清一色用的是“电网电压定向矢量控制”,外环功率、内环电流。这种策略响应快、精度高,但它有一个致命缺陷:变流器与电网之间没有物理上的“旋转质量”连接。电网频率要下跌,理论上是同步机的转子把动能释放出来支撑频率,而变流器做不到,发电机转子已经被电力电子装置“解耦”了,电网频率跌不跌、涨不涨,跟风机转子转得快慢基本没关系。

说得直白点,传统风电就像一个“脾气很直”的年轻人:你让我发多少,我就发多少,然后躲一边去。至于整个电网的稳定,那是电网调度和火电机组的事。

问题是,今天的新能源占比已经不是“补充角色”了,在很多区域,风电光伏同时出力的时段能占到全网负荷的百分之四五十,火电机组被挤到最小出力甚至停机,那时谁给电网提供惯性和阻尼?很多地区风电场被要求必须具备一次调频能力、惯量响应能力,甚至要求“跟常规机组保持一致的外特性”——说白了,就是要求风机在电网看来像一台同步发电机。

1.2 VSG控制如何“无中生有”惯量和阻尼

虚拟同步发电机(Virtual Synchronous Generator)思想,最早可以追溯到2007年前后,相关学者提出用变流器的控制算法去模拟同步电机的机电暂态特性。它不改变任何硬件结构,只是把控制策略换一换:在原有有功功率外环里,加一个“虚拟转子运动方程”;在无功功率外环里,加一个“虚拟励磁调节器”。

这样一来,当电网频率跌落时,VSG控制器会检测到角频率偏差,根据转子方程自动增加有功输出,表现为惯量支撑;当频率偏差持续存在时,VSG的下垂特性又会持续释放或吸收功率,表现为一次调频能力。最关键的是,这种支撑的“量”是可以人为设定的——你想要几秒的惯性时间常数,想要多大的调差系数,改两个参数就行。

1.3 风储联合:为什么必须要加储能这一环

有人会问:既然VSG控制这么好,直接在风机变流器上改不就行了?这里就暴露出一个核心矛盾:VSG的惯量支撑需要瞬间增加或减少有功输出,可是风电的“原动机”是风,风功率是不可控的。当电网要你多输出20%功率持续3秒,而此时的真实风速又不允许你多发出这么多功率,仅靠风机本身是撑不住这个需求的。风机要么进入变桨限功率待命模式(弃风运行),要么只能靠能量缓冲来支撑。

所以正经的风储VSG系统,一定会在直流母线上并一组储能电池。储能的作用不是“长时间供电”,而是在电网频率波动的几秒到几十秒内,提供快速功率吞吐,承担虚拟惯量所需的功率缺口,等风机调速系统慢慢响应,再把功率平滑转移给风机。储能就像一个“及时雨”和“蓄水池”,让VSG逻辑真正可以落地。

2. VSG的数学模型:从转子运动方程到控制框图

2.1 有功-频率控制环:虚拟惯量J到底在模仿什么

同步发电机的核心运动方程,是所有VSG算法的“祖师爷”:

J·(dω/dt) = Pm - Pe - D·(ω - ωn)

其中,J是转动惯量,ω是电气角速度,Pm是机械功率输入,Pe是电磁功率输出,D是阻尼系数,ωn是额定角频率。

这个方程的物理含义很直观:如果输出的电磁功率Pe比输入的机械功率Pm大,说明发电机在“刹车减速”,动能被消耗掉;如果Pe小于Pm,发电机在加速。D(ω-ωn)这一项表示阻尼效应:当转速偏离额定值,会形成一个阻止偏离的功率分量。

在VSG控制器里,输入的Pm就是有功功率参考值Pref,输出的Pe就是实测并网有功功率Pout,把方程反过来解算,就能得到一个“虚拟角频率ω”,再由ω积分得到虚拟相位θ,作为并网逆变器输出的相位基准。这样整个变流器在电网看来,真的有了一台“会转的虚拟电机”:电网频率下降时,Pout大于Pref的那一刻,方程会迫使ω下降,同时控制回路会增加输出功率,对外呈现出惯量支撑效果。

2.2 无功-电压控制环:虚拟励磁调节

同步发电机还有一个重要功能:调节励磁电流可以控制机端电压和无功功率,VSG通过一个下垂方程模拟它:

Qref - Qout = Kq·(Un - Uout)

或者更常用的表达方式:

Uref = Un + n·(Qref - Qout)

这里Qref是无功功率参考值,Qout是实测无功功率,Uout是并网点电压幅值,n是下垂系数。当电网电压跌落时,VSG检测到电压偏差,增加无功输出,从而抬升电压;当电压升高时则反之。这个环的输出作为电压幅值指令,送入电压电流双闭环,最终生成调制波。

2.3 电压电流双闭环与PWM输出

VSG外环输出的是“虚拟电动势”的幅值E和相位θ,这两者组合成三相调制参考电压:

ea = E·sin(θ) eb = E·sin(θ - 2π/3) ec = E·sin(θ + 2π/3)

然后送入电压外环、电流内环进行跟踪控制。电压环用PI控制器让电容电压跟随参考,电流环用PI控制器让电感电流跟随指令,最后生成SPWM/SVPWM波驱动IGBT。

这套“外环模拟同步机、内环控制电压电流”的架构,既保证了并网变流器具备同步机的外特性,又充分发挥了变流器“调节速度快、精度高”的优势,这是VSG区别于传统下垂控制的关键。

3. 风储VSG整系统Simulink建模实战

3.1 系统拓扑与各子系统划分

这个系统的Simulink总体结构,大体可以划分为四个部分:风电单元、储能单元、VSG网侧变流器、电网与负载。我这里以一个10kW级实验模型为例,直流母线电压设定为750V,电网相电压有效值220V/50Hz。

在Simulink里,我习惯把每个功能块分别封装成Subsystem,而不是全部堆在一个页面里,这样既能减少模型线的交叉,又能方便逐级调试:

  • Wind_Turbine_Model:内含风速生成、风机气动模型、MPPT控制、机侧整流器
  • Battery_Storage:内含锂电池等效模型、双向DC-DC变换器、充放电控制
  • VSG_Grid_Controller:内含VSG算法、电压电流双闭环、SVPWM生成
  • Grid_Model:三相电压源、线路阻抗、负载、频率阶跃信号

3.2 风电单元建模:风速模型与最大功率跟踪

风速模型建议用组合风速模型:

Vwind = V0 + ramp + gust + noise

即基础风速加上渐变风、阵风和随机噪声的叠加,这样能在仿真中同时考验系统的稳态和动态性能。风机气动模型用标准公式:

Pm = 0.5·ρ·π·R²·Cp(λ,β)·Vwind³

其中Cp是风能利用系数,它是叶尖速比λ和桨距角β的函数,在Simulink里用MATLAB Function模块写这个函数最方便,也可以用查表法。

机侧变流器建议采用“转速外环+电流内环”的MPPT控制,让风机跟踪最大功率点。需要注意的是,如果你做的是风储VSG的课题,风机的MPPT控制可以做得略微简化——因为VSG支撑电网动态特性的主角是储能和网侧变流器,风机侧的机械响应速度远慢于电气控制,只要保证它能稳定输出额定功率,且能按最大功率跟踪随风速变化,就算完成任务了。

3.3 储能单元建模:电池SOC与DC/DC控制

储能电池用Thevenin等效电路模型即可:电压源串联内阻再加一阶RC网络,反映极化效应。电池SOC用安时积分法计算:

SOC(t) = SOC0 - (1/Capacity)·∫ibat dt

储能通过双向Buck-Boost变换器挂在直流母线上。控制策略是“直流母线电压外环+电感电流内环”:

电压外环的参考值是750V,当VSG因为电网频率波动需要突然输出更大功率时,直流母线电压会瞬时下降,此时电压外环立刻增加储能放电电流指令,电池补充能量;反之,当VSG吸收功率时,母线电压升高,储能转入充电状态。

这里有一个仿真参数要特别注意:双向DC/DC的开关频率设在10kHz~20kHz,电感值按电流纹波要求选取,我用的是2mH,母线电容选了4700uF,仿真时这个组合动态响应比较理想。

3.4 VSG主控制器与SVPWM生成

VSG主控制器是整个模型的核心,在Simulink里用几个Function块或一个大的Stateflow/Embedded MATLAB块完成。核心步骤包括:

  1. 三相并网电压、电流采集,通过Clarke变换到αβ坐标系,再通过Park变换到dq坐标系。
  2. 计算瞬时有功Pout和瞬时无功Qout,这里要加一阶低通滤波,滤除100Hz及更高次的纹波,滤波时间常数取0.002s左右。
  3. 把Pout代入有功-频率方程,积分得到虚拟角频率ω,再积分得到相位θ。
  4. 把Qout代入无功-电压下垂方程,得到电压幅值E。
  5. 由E和θ合成三相参考电压,反Park变换到αβ坐标系,用SVPWM生成IGBT开关信号。

我实测过,直接用离散PID库也可以,但我更推荐S函数或者Embedded MATLAB手写一遍VSG核心方程,因为这样后期调整参数、增加饱和限幅和阻尼修正逻辑时更加灵活,不用在庞大的Simulink连线中找控制器内部节点。

4. 关键参数整定方法与Simulink仿真配置

4.1 虚拟惯量J的选取思路

虚拟惯量J是VSG调参时第一个要面对的参数。它直接决定了系统对外呈现的“惯性时间常数”:

H = J·ωn² / (2·S_base)

以10kW系统为例,额定角频率ωn=314rad/s,如果希望惯性时间常数H约等于2秒(常规同步机典型值),则:

J = 2·H·S_base/ωn² = 2×2×10000/314² ≈ 0.41 kg·m²

这个数值是我常用的起点。J选的太小,VSG对外几乎没有惯量支撑,频率跌落时起不到缓冲作用;J选的太大,有功功率响应会变慢,系统动态过程拖得很长,而且系统可能因为相位滞后而与电网发生功率振荡。

补充一点实操经验:在仿真中调J时,最好同时观察“电网频率阶跃下有功功率响应曲线”,如果响应出现过大的超调且后续出现等幅振荡,第一个要怀疑的不是PI参数,而是J和D的匹配关系。

4.2 虚拟阻尼D的选取与系统稳定性关系

阻尼系数D在方程中的角色是提供“和频率偏差成正比的功率反向分量”。D取值越大,振荡衰减越快,稳态调差也越大,但动态响应会变得“僵硬”;D取值越小,系统越灵敏,却更容易持续振荡。

工程上常用“阻尼比”概念来整定,在忽略线路电阻等次要因素时,VSG系统的二阶简化模型阻尼比约为:

ξ ≈ (1/2)·(D·ωn/J) / ωn

虽然这个公式在不同文献里表达形式略有差异,但可以明显看出:D和J共同决定阻尼比。我一般先固定J值,然后让D从10逐步加大到50,每档观察有功功率响应曲线的衰减情况。应用在10kW模型上,J=0.4,D落在30~50之间时波形比较干净,超调控制在10%以内,振荡两个周波内收敛。

D值标幺化之后也很有参考意义:D_pu = D·ωn/S_base = 30×314/10000 ≈ 0.94,接近1,这个水平对10kW级别的VSG来说是比较均衡的取值。

4.3 仿真步长、求解器设置与代数环规避

Simulink仿真这类电力电子模型,最重要的一件事就是“把仿真步长压下来,或者干脆用离散仿真”。我个人的配置建议是:

  • 求解器选ode23tb或ode15s(刚性系统更稳)
  • 最大步长设置为1e-5s,甚至更小到5e-6s
  • 如果模型规模大跑不动,可以分两步验证:先跑理想开关的平均模型,验证VSG逻辑和参数,再换成实际开关模型跑动态验证

关于代数环问题,VSG模型里经常出现“输出反馈到输入”的路径——比如瞬时功率计算值和调制波参考值之间形成代数环,Simulink默认配置下会报错或选用隐式求解导致仿真极慢。解决办法有三个:一是在功率反馈路径上加Memory模块或延迟一个采样周期;二是把VSG控制写成离散方程,在触发子系统里执行;三是改用平均值模型,用受控电压源代替逆变桥,从源头避开开关器件的代数路径问题。

5. 波形怎么看、故障怎么查

5.1 正常运行时的关键波形

仿真搭建完成后,建议把下面这几组波形全部拉出来看,缺一不可:

  • 并网有功/无功功率曲线:检查是否跟踪参考值,动态过程是否震荡
  • 虚拟角频率ω曲线:观察VSG内部的虚拟转速是否在额定值附近振荡
  • 并网电压、电流三相波形:检查有无畸变、直流偏置
  • 直流母线电压波形:验证储能支撑是否及时,波动是否超出允许范围
  • 储能电池SOC曲线:确认充放电深度、能量是否平衡

正常运行的判断标准是:稳态时电网频率为50Hz,有功功率平稳追踪MPPT输出的参考值,无功功率稳定在设定值;在电网频率阶跃扰动的瞬间,有功功率应在1~2个周波内响应,之后在阻尼作用下快速回稳;直流母线电压波动不超过额定值的5%。

5.2 参数设计不当的典型故障现象

我调试这个模型时踩过不少坑,整理出几个最具代表性的故障现象,方便你对号入座:

如果并网有功功率出现持续的等幅振荡,多半是J值过大或D值过小,系统阻尼不足。可以把D值先加倍看振荡衰减趋势,试完再回头调整J。

如果VSG有功功率响应缓慢,几乎看不出惯量支撑效果,多半是J值设得太小,虚拟惯量几乎为零,系统退化成普通下垂控制了。同时检查有功/无功计算滤波器的截止频率是否过低,把时间常数从0.01s改成0.002s再观察。

如果仿真一开始就报“Solver failed to converge”或波形出现瞬间爆发的尖峰,先检查功率计算环节中是否有代数环,加Memory或Unit Delay;再检查SVPWM载波频率和求解器最大步长是否匹配,载波10kHz时最大步长至少为10e-6s,步长过大会产生明显的载波锯齿失真。

还有一个容易被忽略的坑:储能双向DC/DC的功率限幅设置。如果电池允许的放电功率小于VSG惯量支撑所需的功率差值,直流母线电压就会跌穿,进而引起网侧电流畸变甚至系统失稳。要给储能功率加上限幅环节并做最低SOC保护,仿真时还可以故意把SOC设到5%以下,看一看系统的故障表现是否符合预期,这会帮你提前发现逻辑漏洞。

5.3 让仿真收敛、跑得快的三个土办法

第一,能用平均值模型的时候,别一上来就上IGBT开关模型。平均值模型用受控电压源/受控电流源替代开关桥臂,跑一次10秒仿真只需要几十秒,调试逻辑和参数完全够用;当你确定了所有控制参数,再切换到开关模型做最终的PWM验证。

第二,把“电网频率扰动”单独做成一个可切换阶跃的小模块。先用1Hz的小幅阶跃测试系统线性区间的动态特性,等无误后再加大到0.3Hz甚至0.5Hz的极端工况,这样可以减少排查问题时“到底是扰动太猛还是参数不对”的干扰。

第三,仿真时间长度别一开始就拉满。先用1秒到3秒,步长固定,把算法收敛性验证通过后,再改成30秒以上观察完整性行为,否则一个数组爆炸问题就可能让你白等半小时。

6. 这个模型后续还能怎么扩展

风储VSG的Simulink仿真模型,绝对不是一个“交差就能扔”的课题。就我个人的体会,它最大的价值是一个可扩展的验证平台。你可以在基础上加故障穿越逻辑(低电压穿越),或者把电网模型从理想电压源换成IEEE标准测试系统,甚至把单台机扩展到多机并联,研究VSG之间、VSG与同步机之间的功率振荡耦合问题。

反应在控制层面,你也可以把VSG核心的线性方程改成自适应惯量——根据频率变化率df/dt动态调整J值,频率跌落快时增大惯量,恢复阶段减小惯量,这样可以兼顾快速支撑和稳态品质。这些方向的研究,从工程实践角度出发,都是在Simulink平台上先迈出的第一步。

踩过几次坑之后,我最大的体会是:VSG调参这件事,理论公式只能帮你定一个还不错的初值,真正顺手的参数一定要结合波形反复试。正交试验法是我常用的方法——把J和D分别按“小-中-大”三档排列组合跑九次仿真,把响应曲线截图对比,基本一次性能把可调参数的分布规律摸清楚,这个过程总结的经验,远远比读十篇论文来得实在。希望这篇记录能帮你少走几步弯路,把时间花在真正值得深挖的方向上。

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

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

立即咨询