ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于虚拟同步发电机(VSG)的风储并网Simulink仿真建模与参数整定全解析

基于虚拟同步发电机(VSG)的风储并网Simulink仿真建模与参数整定全解析 手上有风电、储能方向仿真任务的朋友估计大半都被同一个问题卡过风机这一侧是电力电子接口几乎不提供惯量电网频率一波动整个系统就像没有配重的电梯——轻飘飘的撑不住。我前阵子正好做了一套基于虚拟同步发电机VSG控制的风储并网系统Simulink仿真把风电、储能和VSG控制揉在一个模型里解决了“风储怎么配合”“虚拟惯量怎么给”“并网冲击怎么压”这几个核心问题。这篇文章就把这套从零搭起来的模型掰开揉碎讲明白适合正在做新能源并网仿真、写毕业论文或者搞微电网课题的同学参考里面所有的参数整定方法和调试坑都是我实际跑模型跑出来的。1. 为什么风储系统需要VSG——生态环境与底层逻辑1.1 风电并网的核心痛点弱惯量还是弱支撑传统的同步发电机有一个天然优势转子本身是旋转质量块电网频率变化时转子动能会自发地参与缓冲这就是惯量支撑。风电呢主流双馈风机或者永磁直驱风机要么通过变流器跟电网解耦要么转子转速跟电网频率没有刚性耦合结果就是风机对频率变化“无感”——电网频率往下掉风机不会主动释放动能来顶一下。单独一个风电占比低的时候还看不出问题一旦风电渗透率上去了系统总惯量下降频率跌落速度会快得吓人这时候就需要额外的手段把“虚拟惯量”补回来。储能这时候就派上用场了。电池储能响应速度快功率吞吐能力强理论上能模拟同步机的惯量响应和一次调频行为。但是储能本身是一个电力电子接口它怎么知道“什么时候该出力、出多少力”这就是VSG控制要解决的问题。说得直白一点VSG是一套数学方程它让一个由电力电子变流器构成的并网装置在对外特性上表现得像一台同步发电机——电网频率跌落时自动增加有功输出机端电压波动时自动调整无功输出。1.2 VSG到底在模拟什么从同步机的“一次方程”说起我用生活化的方式来解释VSG。同步发电机的转子运动方程本质上是牛顿第二定律在旋转体上的应用转动惯量乘以角加速度等于转矩差。VSG控制就在变流器的控制算法里人为构造出这个方程J * dω/dt Pm - Pe - D * (ω - ω0)这里面J是虚拟转动惯量取值大了系统惯性大但对频率变化反应慢取值小了响应快但容易振荡。D是阻尼系数负责让功率振荡衰减下去。Pm是虚拟机械功率来自有功指令和调速器Pe是实际输出电磁功率。这个方程每走一个仿真步长就会算出一个虚拟角频率ω再对时间积分得到虚拟功角θ这个θ就用来生成PWM调制波的相位。有了这一层“数学上的转子”变流器就不再是一个纯粹的电流源而是具备了“对外呈现电压源特性”的能力。外部电网频率变了这个方程会自动让输出功率跟着变而且是按同步机的运动规律变不是简单粗暴的PI调节。这就是虚拟同步发电机这个名称的由来——虚拟机干同步机的活。1.3 风储一体化的“合”与“分”设计思路为什么要风储放在一个模型里因为风电单独加VSG控制逻辑上行不通——风机本身的转速跟电网频率无关你不可能靠控制风机的变流器去模拟转子运动。储能可以因为储能本质上就是一个“任意功率吞吐”的电源它的直流侧能量是可控的。所以实际架构是这样的风电负责发电风机通过机侧和网侧变流器把风能转换成稳定的直流电送入直流母线储能负责“表演同步机”储能变流器采用VSG控制根据电网频率和母线电压实时调整输出功率直流母线是媒婆把风机的出力缺口和VSG的需求衔接在一起母线电压的稳定与否直接决定了整个系统能不能站住。这个架构的好处在于功能解耦。风机不需要关心电网频率它只做最大功率跟踪MPPT储能承担频率支撑的任务。调试的时候也可以分开做——先把VSG单独带负载调稳再接入风电最后合闸并网方便定位问题。2. Simulink模型整体架构与模块拆解2.1 系统拓扑与电气主回路这套模型我用的Simulink版本是R2021bSimscape Electrical库老版本叫Specialized Power Systems里的元件基本够用不需要额外的第三方工具包。模型的整体拓扑是一个经典的三级结构风电单元储能单元共同挂接在一条直流母线上然后通过一台三相VSG变流器经过LC滤波器和升压变压器接入10kV的无穷大电网。直流母线电压我设为800V这是因为后续VSG变流器需要输出380V交流800V直流端是一个比较合适的电压等级调制度不会过高也不会过低。风电侧我用的永磁直驱风机模型额定功率25kW风速给定为恒定值机侧AC-DC用最大功率跟踪实现母线电压外环控制储能侧是一个50Ah/600V的锂电池组通过双向DC-DC变换器Buck/Boost双向拓扑接到直流母线DC-DC的控制目标是“母线电压自适应”网侧VSG需要功率时母线电压下降储能自动释放功率。电气主回路要特别注意几个元件的使用习惯。三相VSG变流器直接用Universal Bridge模块开关器件我选的IGBT开关频率设在10kHz这个频率下谐波性能和开关损耗都比较均衡。LC滤波器电感取2mH、电容取50μF这个数值我在后面参数整定部分会讲怎么推算。变压器选择Three-Phase TransformerTwo Windings变比380V/10kV容量100kVA连接组别Dyn11中性点不接地或者经高阻接地主要是为了配合电网侧的故障研究需求。2.2 VSG主控内部逻辑从功率计算到调制波VSG控制是整个模型的大脑Simulink里面我把它拆成了四个功能块方便逐级调试。第一块是瞬时功率计算采集并网点的三相电压和三相电流通过abc-dq变换用瞬时有功无功公式算出P和Q再用一个一阶低通滤波器滤掉开关频率附近的高频分量。需要说明的是瞬时功率计算里的dq变换坐标系要与后面VSG内部生成的功角θ保持对齐不然算出来的有功无功会偏得离谱这是我一开始踩过的大坑。第二块是VSG有功-频率控制环。外部给定有功指令Pref加上一次调频器有功-频率下垂的输出得到虚拟机械功率Pm。Pm减去实测Pe再与阻尼项作差经过虚拟惯量方程算出力矩积分得到虚拟角速度ω再积分得到虚拟功角θ。这一块是整个VSG的精髓建议单独封装成子系统方便对比不同J、D参数下的响应波形。有功这个环路的输出θ就是后面所有坐标变换的角度基准。第三块是无功-电压控制环。它模拟同步发电机的励磁调节特性给定无功功率指令Qref跟实测Q比较经过PI调节后生成电压幅值参考E再叠加上无功-电压下垂环节额外补偿因为线路压降导致的电压偏差最后得到虚拟机端电压幅值。这个E和前面算出的θ一起构成了VSG内部虚拟电动势的三相参考Ea、Eb、Ec。第四块是电压电流双闭环加SVPWM调制。虚拟电动势作为电压外环的参考值电压环的输出作为电流内环的给定电流环的输出经过反变换和标幺化送入SVPWM模块产生IGBT的驱动脉冲。我实测下来电压外环PI取Kp0.5、Ki50电流内环PI取Kp8、Ki200在10kHz开关频率下表现稳定这些参数的价值在于不是拍脑袋给的后面我会给推导思路。2.3 储能侧DC-DC与直流母线稳压设计储能侧的DC-DC变换器控制目标我做了两层。平时母线电压稳定的情况下储能处于“待命”状态DC-DC用电压环把母线电压稳压在800V。一旦电网频率跌落或者风电功率波动导致母线电压偏离设定值储能自动切换成功率环响应模式母线电压降了说明网侧需求大于供给储能立刻增大放电功率把母线电压顶回去母线电压高了说明风发多了储能转入充电吸收多余能量。Simulink里面实现这个切换我用的是一个带滞环的切换逻辑滞环宽度取±10V防止在切换点附近出现频繁抖动。DC-DC的内环用平均电流模式控制外环是PI电压环电感取5mH开关频率也是10kHz。储能电池模型直接用Simscape Electrical自带的Battery模块我选的是Lithium-Ion类型SOC初始值设80%放电截止设20%仿真时间只要不跑太久一般不会触发SOC边界问题。还有一个容易忽略的点直流母线电容。我的模型中母线电容用两个3300μF串联等效1650μF放在整个直流母线上。这个电容的作用是快速补充瞬态功率差。VSG响应电网频率变化大概有几十毫秒的延迟而风电波动是瞬时的母线电容必须在这段时间里提供“过渡能量”容量不够的话母线电压波动会非常大甚至导致保护误动作。2.4 风机侧MPPT与网侧变流器的配合风机侧我是用一个简化的永磁直驱模型风速恒定12m/s风轮机叶尖速比TSR最优控制通过跟踪最大功率曲线得到转矩给定机侧变流器控制发电机电磁转矩网侧变流器控制直流母线电压。因为本文重点是风储VSG风机内部的控制细节我没有做太深但这个简化有个要求——网侧变流器必须保证无论在什么风速和负载条件下直流母线端都呈现“功率源”特性。也就是说风机侧可以看成一个“恒功率输入端口”。为什么可以这样简化因为VSG的虚拟惯量支撑能力取决于储能侧的功率吞吐能力和能量储备风机在快动态过程中基本不参与它只负责在稳态时提供基波功率。所以你在仿真观察时要注意看VSG的惯量响应效果应该看储能输出功率的波动情况和并网点频率的变化率不要盯着风机侧的风速波动两者时间尺度差很远。3. 关键参数计算与整定方法3.1 虚拟惯量J和阻尼系数D怎么定这是VSG仿真中大家问得最多的一个问题。J和D不能凭空给要有物理依据。参考同步发电机的转子时间常数一般同步机的惯性时间常数在2~10秒之间。所谓惯性时间常数τ物理意义就是转子上施加额定转矩后从静止加速到额定转速所需的时间。对于VSG我们有J τ * Sn / ωn^2其中Sn是VSG的额定容量我这里取50kVAωn是额定电气角速度50Hz对应的机械角速度在虚拟方程里直接用电角速度100π rad/s。如果我想让虚拟惯量时间常数τ取2秒那J算出来就是J 2 * 50000 / (100π)^2 ≈ 2 * 50000 / 98700 ≈ 1.01 kg·m^2实际我取了J 1.0这是有物理意义的。如果你把J取到10系统会像一台巨大的水轮机组一样频率变化非常缓慢但是一旦振荡起来衰减也慢得让人抓狂仿真耗时也高。对于50kW等级的VSG我建议τ在1~3秒之间试换算成J大概在0.5~1.5这个数量级。D系数在同步机里D是机械阻尼和电气阻尼的综合效果。从控制角度看它同时影响动态响应速度和稳态功率偏差。你可以这么理解D越大系统被“粘住”得越厉害——功率振荡衰减快但同样频率偏差下提供的调频功率也大。有个经验公式D约等于100倍的额定功率除以额定频率偏差。比如50kW系统允许0.5Hz频率偏差下出满功率D 50000 / (2π*0.5) ≈ 15900不过实际模型中标幺化后D值通常在50~200之间我的模型里取100对应的物理系统有足够的阻尼来抑制振荡。3.2 下垂系数和低通滤波器时间常数有功-频率下垂系数Kp物理含义是频率偏差1Hz时功率改变多少。传统电力系统一次调频的调差率一般在3%~5%标幺值也就是说频率偏差从50Hz到49.5Hz偏差1%时机组出力增加20%~33%。我按3%的调差率取在标幺制下Kp 1/0.03 ≈ 33这个参数配合VSG的功率环使用不至于在小的频率扰动下就导致功率大幅波动。无功-电压下垂系数Kq取法类似电压偏差5%时无功功率从零到满载那么Kq 1/0.05 20标幺值。实际调试中往往还需要根据并网点的电压降落做修正如果线路阻抗较大Kq适当调大一点把电压支撑得更“硬”一些。瞬时功率计算中的低通滤波器时间常数也不能随意给。低通滤波的作用是滤除功率计算中的开关谐波但时间常数太大会给功率环引入额外延迟导致虚拟功角响应变慢。Simulink里用一阶滤波模块Transfer Fcn分母取1/(0.002s1)也就是时间常数2ms。这个值在10kHz开关频率下能压掉大部分开关纹波又不会显著影响VSG几十毫秒级别的响应。顺便说一句很多人在Simulink里纠结滤波模块的设置其实直接用Transfer Fcn分子设1分母设[0.002 1]就是最简单可靠的一阶低通。3.3 双闭环PI参数整定三条经验电压电流双闭环的PI参数我一开始用试凑法浪费时间不说还经常出现莫名其妙发散的情况。后来用工程整定的思路快多了。内环是两个一阶惯性环节串联PWM的逆变器增益母线电压分一半除以载波幅值加上LC滤波器的传递函数。电流内环的目标是让电流跟踪时间常数尽量小工程上一般取开关频率的1/10到1/5也就是1~2ms的响应对应PI参数Kp L / (3*Ts)、Ki Kp * (R/L)。以2mH电感、0.1Ω电阻、Ts1ms算Kp ≈ 0.67Ki ≈ 33但我实际取大了一些Kp8、Ki200这是因为离散系统里面有延迟需要更大的比例增益去补偿但注意不能大过头否则会激发出LC谐振峰。电压外环的带宽要低于内环一般取内环的1/5到1/10。物理上就是“外环比内环慢内环稳定了外环才有意义”。LC滤波器的谐振频率是fn 1/(2π√(LC)) 1/(2π√(2mH*50μF)) ≈ 503Hz。电压环的带宽如果接近这个值会放大谐振分量所以我把电压环带宽压在100Hz左右对应的PI参数就是前面说的Kp0.5、Ki50。调试的时候先给电压环一个阶跃看它是不是在几个毫秒内稳定跟随再去联调电流环。4. Simulink建模仿真中的常见问题与排查记录4.1 虚拟功角和功率振荡发散我在模型刚跑通的时候遇到一个典型现象并网瞬间有功功率大幅振荡甚至直接发散。最开始怀疑是J和D参数不对把D调大、J调小振荡频率变了但依旧不收敛。后来排查发现问题出在电压电流双闭环的带宽设置上——内环电流环用的PI比例增益太大了导致电流环在LC谐振频率附近出现正反馈把VSG功率环的输出放大成持续振荡。解决办法是把电流环Kp从15降到8同时给电流内环增加一个一阶低通滤波时间常数0.5ms。再跑一遍功率振荡就明显收敛了。这也验证了一条规律VSG控制是“多层嵌套”最内层环路的稳定性是整个系统的基石内环都不稳虚拟机方程再漂亮也没用。另一个要注意的坑是Simulink的离散求解器配置。VSG这种电力电子模型我强烈建议用离散仿真模式采样时间设2μs对应开关频率10kHz的50倍Powergui也用离散形式。可能有人图省事用连续变步长求解器模型规模一大就容易出现“数值刚性”仿真速度慢且结果完全没法看。功率环、惯量方程的步长可以放宽到10μs但PWM和电流内环一定要小步长这就是典型的“多速率仿真”思想Simulink里用Rate Transition模块做不同步长之间的数据交接就行。4.2 并网瞬间电流冲击过大第一次成功并网的时候我看着三相电流波形心脏都要停了——冲击电流峰值接近额定电流的5倍断路器要是真实的早就跳了。排查方向有两个一是VSG内部虚拟电动势的幅值和相位在并网前没有与电网对齐二是没有用预同步控制。解决方法是加上虚拟同步机的预同步模块检测电网侧三相电压的频率、幅值、相位然后去调整VSG虚拟电动势的频率指令和幅值指令让虚拟电动势和电网电压的差矢量逐渐收敛到零。具体实现上我额外加了一个PLL锁相环测电网角度另一个PLL测虚拟电动势角度两者相减得到相位偏差经过PI调节后叠加到VSG的频率通道上实现频率和相位的自动同步。幅值同步就简单了直接让虚拟电动势幅值跟随电网电压幅值即可误差在1V以内就能合闸。改完预同步之后我又刻意测试了各种合闸相位角最大冲击电流从5倍降到了1.2倍以内这个结果说明预同步模块是真的起作用了而不是靠运气碰上的。4.3 直流母线电压跌落到失控还有一个让我晚上睡不着的问题模拟电网频率从50Hz突变到49.8Hz的时候VSG立刻输出大功率支撑频率理论上储能应该放电补能量但是我观察到直流母线电压在事件发生后0.1秒内掉了快150V眼看就要跌破DC-DC的正常工作范围了。后来我把问题定位在储能DC-DC外环PI的响应速度上。VSG的功率响应是几十毫秒级别的但储能DC-DC电压环的带宽只有20Hz左右响应时间50毫秒中间这段空白期全靠母线电容扛电容再大也扛不住这么大的功率缺口。解决办法是给母线电压控制加一个“前馈补偿”直接把VSG的功率指令引入DC-DC外环作为前馈量检测到VSG有功指令变化储能立刻按比例输出电量不需要等母线电压偏差反馈回来再动作。一句话总结就是不要让母线电压过了很久才“发现”自己掉压了要在功率需求出现的那一刻就介入。这个前馈补偿加上之后母线电压的最大跌落从150V减小到了30V整体系统对频率阶跃的响应速度也明显提升。我在Simulink里实现比较简单从VSG的有功指令处接一个一阶惯性环节时间常数1ms再乘一个比例系数叠加到DC-DC电流环的给定上面就行。4.4 Simulink建模实操中的几个隐蔽坑经验分享一个容易坑人的点在Simulink里把模块名称隐藏掉。有人为了图整洁把显示标签全关了后期Debug的时候想从Scope找到对应的信号线找不到源头在哪特别费劲。我现在的习惯是保留模块名称但不显示端口标签然后在信号线上用Goto/From标签命名好关键信号比如Freq_Grid、P_VSG、Vdc_ref这样后期查波形翻逻辑都一目了然。另外联调多人项目的时候常遇到版本不兼容的问题。模型如果是R2020a建的放到R2023b打开有时候会提示“Block was not found”或者“Simscape component needs upgrade”。我的做法是团队统一版本如果实在没法统一就把关键子系统导出成Simulink Library对方通过Library Link引用模型内部被封装了跨版本兼容性好很多。还有Simulink里C代码生成的问题。有人问这套风储VSG模型能不能直接生成C代码烧到控制器里。可以但要注意Simscape Electrical的物理模型元件不支持生成嵌入式C代码只能生成仿真用的C Mex文件你需要把电气主回路部分替换成基于传递函数或状态空间的等效模型然后把VSG控制算法、PLL、SVPWM这些纯逻辑部分留下来生成C代码。我们项目后来做硬件在环测试的时候就是按这么拆分的控制核心一摸一样的代码跑到DSP里结果跟Simulink纯仿真大体一致那叫一个放心。5. 仿真结果分析与波形观察要点5.1 频率阶跃扰动下的惯量响应判读模型完全调通之后我做了几组典型的扰动实验这里把波形判读的方法分享给大家因为很多人跑完仿真不知道看什么。第一组实验是电网频率阶跃在2秒时刻把电网频率从50Hz阶跃到49.8Hz。观察并网点频率、VSG有功功率和储能输出功率三个波形。你可以明显看到VSG有功功率在扰动后迅速上升上升过程并不是阶跃式的而是带着平滑斜率的斜坡状爬升随后缓慢回落到稳态出力的新平衡点。这个“斜坡状爬升”正是惯量响应的特征——功率变化率受限不像传统下垂控制那样瞬间就把功率顶出去。第二组是风速阶跃风速从10m/s突增到12m/s。这时候风机输出功率增加但VSG的有功输出不会立刻跟着变它首先表现为直流母线电压升高然后储能自动切入充电模式吸收多余功率并网点功率变化是经过滤波后的平滑转移。这组实验的观察重点不是VSG本身而是储能如何扮演“缓冲池”的角色。判断一套VSG参数好坏我有两个硬指标一是功率振荡衰减比——第一次振荡峰值跟第三次振荡峰值的比值大于5就算合格二是频率变化率RoCoF峰值在0.2Hz/s以内就能满足大部分并网要求。我调好的模型在这两项上的表现都优于无VSG的普通下垂控制对比模型说明VSG确实在“惯性”这个维度上做出了实质性的贡献。5.2 三相短路故障与低电压穿越观察我还顺手做了并网点三相短路的故障实验持续0.15秒。这个实验最能检验VSG在严重故障下的行为——普通下垂控制方案在故障切除后会出现明显的功率超调和电压振荡而VSG方案因为有虚拟惯量的存在故障切除后的恢复过程更加平滑虚拟电动势的幅值和相位不会出现突变性的“甩尾”。故障期间VSG电流会迅速增到限流值所以模型里我在电流环输出端加了一个限幅模块限幅值设为额定电流的1.5倍。这里提醒一句如果你做故障仿真发现电流冲上天先别急着怀疑控制参数检查一下限幅模块的位置和上下限再说。这个限幅在Simulink里用Saturation模块实现位置一定要放在电流环PI输出之后、Park反变换之前顺序反了会引发很奇怪的畸变波形。故障清除后的功率恢复时间我的模型实测约80ms考虑到通常要求是1秒内恢复稳定这个指标有充足的裕量。6. 整套方案可以往哪个方向延伸这套模型本身可以做很多扩展如果你需要进一步研究我建议往这么几个方向试第一把单机VSG扩展成多机并联。我的模型是一个VSG单元多机系统需要考虑虚拟阻抗的差异化设计、循环功率抑制和一次调频功率分配策略这些在现有模型基础上加一台VSG、把电网侧改成两台变流器并联挂同一个母线就能开始做。第二加入实际的风速模型。当前模型用恒定风速如果你研究的风速序列有强烈的阵风特征可以把风速数据导入Simulink用Signal Editor或者From Workspace模块加载实测风速序列这时候风功率波动的频谱特性会对VSG的功率支撑指令提出更高要求——你可以顺便观察惯量参数是否需要根据风速波动强度做自适应调节。第三做硬件在环HIL验证。前面提到控制代码生成是可行的如果你手头有DSP controller开发板可以把VSG控制核心烧进去配合实时仿真器跑电气主回路做真正意义上的控制器闭环测试。这个方向对找工作的同学来说写在简历上是挺亮眼的一笔。我自己做完这套仿真最大的感受是VSG并不神秘它就是一台被“数字化”了的同步发电机。你调它的参数时完全可以拿同步机那套物理概念去类比——J大了像水轮机D大了像带了强力阻尼绕组Kp大了像调差率更平缓的机组。用物理直觉去指导仿真调试比对着波形盲调参数效率高得多。希望这篇记录能帮你少走点我走过的弯路模型搭起来之后多观察、多思考每个波形背后的物理含义比多跑十次仿真都有用。
返回列表