YAOTU INSIGHTS

光伏VSG并网逆变器Simulink仿真:从虚拟同步机原理到参数整定全解析

光伏VSG并网逆变器Simulink仿真:从虚拟同步机原理到参数整定全解析
做光伏并网仿真这几年我一直觉得有个问题绕不开光伏发电本身没有转动惯量电网一扰动它就“跟着跑”跑得快了就可能脱网。后来接触到VSG虚拟同步发电机的思路相当于给逆变器装了一个“虚拟的转子”让光伏电站的行为看起来像一台同步发电机。这个方向在学术界和工程界都挺热但网上很多资料只讲原理不讲怎么落地到Simulink里。这篇文章我就把自己搭光伏VSG并网逆变器仿真的完整思路、模型结构、参数整定和踩过的坑一次性讲清楚给正在做毕业设计、横向课题或者刚接触构网型逆变器的朋友一个可以直接上手的参考。1. 为什么光伏并网需要VSG——从“跟网”到“构网”的转变1.1 光伏并网的“心脏病”缺少惯量先聊一个最基本的问题传统电力系统里同步发电机有一个巨大的转子转子上储存着旋转动能。当系统有功功率不平衡时转子转速会缓慢变化这个“缓慢”就是电力系统的惯量。惯量大频率变化就慢留给继电保护和控制的时间就多。这是大电网稳定运行的基石。光伏和风电这类新能源发电装置本质上是通过电力电子变换器并网的它们没有转子没有旋转动能。并网的时候为了最大化利用能量通常跑的是PQ模式也就是只控制有功和无功输出电网频率和电压由大电网撑着。一旦新能源占比提高系统的等效惯量下降频率波动会变得更快、更深。这就是业内常说的“低惯量问题”。所以VSG的出发点特别直白在逆变器的控制算法里人为加入一个“虚拟转子”模拟同步机的摇摆方程让逆变器对外呈现类似同步机的惯量和阻尼特性。电网频率下降时VSG会像同步机一样释放虚拟动能频率上升时它又吸收能量。整套逻辑全在控制代码里完成不需要任何物理储能这正是它吸引人的地方。1.2 虚拟同步发电机到底模拟了什么同步发电机的核心数学模型是转子运动方程J * dω/dt Pm - Pe - D * (ω - ωn)这里面每一项都有明确的物理意义J虚拟转动惯量单位是kg·m²决定频率变化的“惯性”。ω虚拟角速度对应电网侧角频率。Pm机械功率在逆变器里对应的是有功功率参考值。Pe电磁功率对应逆变器实际输出的有功功率。D阻尼系数模拟同步机转子的阻尼绕组和摩擦效应。这个方程落实在控制环里就是用有功功率的偏差去调节虚拟角频率再用角频率的积分得到虚拟功角最终决定逆变器输出电压的相位。与此同时无功功率部分通常走下垂控制用无功偏差调节电压幅值。功率计算、虚拟阻抗、电压电流双闭环一层层叠起来就构成了完整的VSG控制框图。我习惯把VSG理解成“披着同步机外衣的逆变器”外特性上它有功-频率响应像同步机无功-电压响应也像同步机内核上它依然是电力电子变换器响应速度快得多。理解到这一层后面建模才不会糊。1.3 VSG与传统控制方式对比很多刚接触VSG的人会问它跟下垂控制有什么本质区别跟PQ控制、V/f控制又差在哪我用一个简表说明控制方式有功-频率关系惯量支撑适用场景主要局限PQ控制不参与无并网满功率发电弱电网下易失稳V/f控制定频无孤岛供电无法并网运行下垂控制静态下垂无微网并联频率变化快无惯性VSG控制摇摆方程有弱电网/构网参数整定复杂下垂控制本质上是一条静态有功-频率曲线频率变化立即映射成功率变化没有动态过渡过程VSG在中间插入了一个二阶惯性环节让频率变化有“惯性”和“阻尼”动态行为更像真实同步机。在弱电网、高新能源渗透率的场景里这个动态特性至关重要。2. 系统整体架构与方案选型2.1 两级式拓扑为什么不用单级我手里的这个项目用的是两级式光伏并网结构前级是Boost升压电路负责光伏阵列的MPPT控制和直流母线电压抬升后级是三相全桥逆变器负责DC/AC变换和并网控制。单级式拓扑也能做光伏阵列直接接逆变器省一个变换器效率理论上更高。但问题在于单级结构的MPPT和并网控制耦合在一起直流母线电压跟随光伏阵列输出电压波动VSG控制的直流侧电压支撑能力很弱。两级式多一个Boost环节直流母线电压可以稳定控制在较高水平比如700V后级VSG控制的电压调制比就能留够裕量控制性能明显更好。另外从工程角度讲Boost级还可以顺手做成光伏组串的优化器实现组串级MPPT遮挡情况下效率更高。虽然这次仿真里没做那么细但拓扑选型上多留一个自由度后面扩展MPPT策略、储能接口都方便。2.2 整体控制框架拆解整套系统的控制分四个模块各司其职光伏阵列 Boost MPPT负责从光伏板榨取最大功率输出稳定的直流母线电压这里我用的是电导增量法。直流母线稳压母线电压作为VSG有功功率调节的输入电压偏离设定值时通过PI调节器修正有功参考值。VSG功率环实现虚拟转子运动方程输出逆变器电压的幅值、相位参考。电压电流双闭环追踪VSG给出的电压参考值生成SPWM驱动脉冲。四个模块连接起来再捋一遍光伏阵列发出直流电Boost完成MPPT升压直流母线稳压然后VSG参考有功和无功指令生成电压参考值双闭环跟踪电压参考值最后SPWM驱动逆变器输出并网电流。每一环的带宽选择有讲究MPPT通常最慢VSG功率环居中电压环次快电流环最快层层之间至少差一个数量级才能避免环路之间打架。2.3 为什么选Simulink而不是别的方式VSG算法说复杂也复杂说简单也简单本质上就是一个微分方程加几个PI调节器。用C语言手写代码也可以但在验证阶段我坚决推荐Simulink。原因有几点第一光伏阵列、LCL滤波器、电网阻抗这些电气环节Simulink里有现成的元件库拖拽就能搭不用自己推导离散化解析模型。第二VSG控制逻辑的调试需要实时观察波形和参数变化Simulink的Scope和Dashboard控件比任何脚本调试都直观。第三后续如果要部署到DSP或者控制器里Simulink可以直接生成C代码控制模型调好了直接往工程里搬省掉手工翻译代码可能引入的bug。当然Simulink也有坑比如仿真速度慢、代数环、求解器选择不当导致数值发散这些问题我在第5节里专门讲。总之选Simulink做VSG验证是行业共识不折腾。3. Simulink模型搭建实操3.1 光伏阵列模型与MPPT设置光伏阵列建模我直接用了Simulink自带的PV Array模块参数按一块250W光伏板填了40串3并总装机约30kW。模块里需要填的参数有光照强度、温度、开路电压、短路电流、最大功率点电压和电流。模拟的时候先把光照辐射设成1000W/m²温度25°C跑完额定工况后再做光照突变的场景。MPPT用Boost变换器实现控制器是电导增量法迭代步长取0.0001控制周期设成1e-5秒。这里有个实操细节MPPT的输出不能直接作用在占空比上而是通过PI调节器生成占空比。一开始我用的是直接给定占空比的方案扰动步长不好平衡步长大则功率波动明显步长小则跟踪速度慢。后来改成电导增量法输出电流参考值再接PI调节器控制Boost电感电流动态和稳态都满意了。3.2 Boost升压与直流母线电容选型Boost参数我按工程常用经验设计开关频率10kHz电感按电流纹波系数20%算得3.5mH直流母线电容按电压纹波1%算得2mF。母线电压参考值设700V。直流母线电容的取值直接关系VSG控制效果电容太小母线电压在功率突变时剧烈跌落VSG输出功率会跟着抖动电容太大母线电压响应慢MPPT和VSG的动态配合变差。我实测下来按系统容量的1.5倍标幺值选取母线电容比较均衡也就是30kW系统取2mF左右。Boost级还有一个容易被忽略的细节启动时需要在母线电容上做预充电否则直接投入开关管会烧掉。仿真模型里虽然没有真实的元件烧毁问题但没有预充电过程启动瞬间的电流冲击会让数值求解器崩溃。我在模型里加了一个简单的预充电电阻支路母线电压充到额定值的90%再切Boost后面并网过程就顺了。3.3 VSG核心控制逻辑详解VSG控制逻辑是整个模型的心脏我用Simulink标准库模块搭的没有用S-Function方便后面让别人理解模型。核心分四个部分虚拟转子运动方程有功参考值Pref和实际功率Pe做差得到功率偏差经过虚拟惯量项1/(Jωn)积分后得到角频率偏差再经过一个积分器得到虚拟功角θ。同时把角频率偏差反馈到阻尼项D上。从Simulink模块看就是一个增益、两个积分器、一个反馈但参数J和D的整定非常讲究下一节专门讲。有功-频率下垂在Pref上叠加(droop系数)*(额定频率-实际频率)的修正量模拟同步机的调速器特性。无功-电压下垂Qref和实际无功Qe做差经过无功下垂系数kq得到电压幅值修正量叠加到额定电压上。双闭环跟踪VSG给出来的电压参考值送到电压PI调节器输出电流参考值再送到电流PI调节器最终生成SPWM调制波。电压外环和电流内环都加限幅防止过调制。这个结构我在多个项目里反复用过稳定性和调节性能都很可靠。搭模型时的关键是把功率计算模块的时间常数匹配好否则会出现功率计算滞后导致振荡。3.4 逆变器与LCL滤波、电网模块逆变器我用的Simulink自带的Universal Bridge模块IGBT模型开关频率10kHz。滤波器选了LCL而不是简单L因为LCL对高频开关谐波的衰减更干净电感总量更小成本更低。LCL参数按30kW、311V相电压峰值、10kHz开关频率设计逆变器侧电感L10.8mH网侧电感L20.5mH滤波电容Cf4.7uF这里有个LCL设计的关键问题谐振峰必须压低否则会在特定频率上放大谐波。我在电容支路上串联了一个2欧姆的阻尼电阻是有源阻尼的简化替代。虽然会有些额外损耗但仿真结果很稳定省去有源阻尼算法实现上的麻烦。工程上想做高一点可以换成电容电流反馈的有源阻尼这个后面再说。电网模块我搭的是一个理想三相电压源串联电网阻抗RL模拟公共耦合点(PCC)。额定相电压311V、频率50Hz短路比SCR设成5对应弱电网工况。3.5 仿真参数与求解器设置仿真参数这块很多人不在意直接影响仿真能不能跑通求解器ode23t适用于电力电子这种带开关的刚性系统变步长最大步长设1e-4s保证开关周期内有足够采样点仿真时长1.2~2秒足够覆盖启动和并网暂态功率计算模块不用Simulink自带的Instantaneous Active Reactive Power它计算延迟较大我改成了自己搭的瞬时功率计算用二阶低通滤波平滑设置好这套参数后模型跑起来数值稳定性明显改善不会动不动就报“Solver was unable to reduce the step size”那种经典错误。4. VSG参数整定与调参经验4.1 虚拟惯量J和阻尼D的整定方法虚拟惯量J和阻尼D是VSG控制里最核心的两个参数决定系统频率动态特性。直接看运动方程J * dω/dt Pm - Pe - D * (ω - ωn)做一个类比J相当于汽车的整车质量D相当于悬挂系统的减震器。质量越大速度变化越慢但也越“笨”减震器阻尼越大起伏衰减越快但也越“硬”。整定方法我推荐从“期望的频率响应速度”反推。假设系统额定功率30kW、额定角频率314rad/s我们希望频率变化的时间常数在0.2秒左右。振荡角频率近似为ωn sqrt( (Pref * ω0) / (J * ω0) ) sqrt(Pref / J)实际工程里一般先定J再根据阻尼比要求定D。阻尼比公式ζ (D / 2) * sqrt(1 / (J * Pref * ω0))我按阻尼比0.7、振荡频率2Hz确定参数J取0.78kg·m²D取14.3。实测频率响应曲线阻尼良好、超调小。关键是J和D不能孤立地调J增大使频率变化变缓但会延长恢复时间D增大能抑制振荡但过大反而会让频率偏离额定值后难以恢复。调试中先固定D扫J再固定J扫D。一次只动一个变量这是调试的基本纪律。4.2 有功-频率下垂系数kp的选择下垂系数kp决定了VSG参与一次调频的力度。公式是kp ΔP / Δf工程惯例是先定频率偏差范围。允许频率偏差±0.5Hz对应有功调节量是满功率100%那kp就是30kW / 0.5Hz 60kW/Hz。虽然这只是一个比例关系但要考虑电网强度并网点越弱SCR越低频率调节对电压影响越大下垂系数就必须取小一些防止调频引起电压问题。SCR5时我把kp取到50kW/Hz如果弱电网SCR降到3我会降到30kW/Hz左右。4.3 无功-电压下垂系数kq的选取无功-电压下垂系数同理kq ΔQ / ΔV还是先定电压偏差范围。允许电压偏差5%额定电压对应无功调节量50%额定无功那kq就是15kVar / 15.5V ≈ 968Var/V。电压下垂率的选取受线路阻抗影响很大。线路阻抗越大无功调压效果越差kq就得取得更激进。但kq过大会导致无功功率在并联机组之间分配不均甚至引发无功环流。我最终取kq500Var/V实际并网电压波动控制在额定值的2%以内。4.4 从空载到并网的调试顺序VSG参数调再好直接满功率启动也容易出问题。我习惯的调试顺序是先让VSG工作在空载状态不并网只带一个很小的阻性负载检查电压幅值、频率是否稳定在额定值。稳定后切换到并网模式把初始相位对准电网相位再开始送功率。先送20%额定功率观察动态波形确认无功功率基本为零。逐步加大到50%、80%、100%每一步都确认功率响应和母线电压稳定后再继续。全部额定功率稳定后再做光照突变和电网电压跌落突变测试考验MPPT和VSG的动态配合。这个顺序和真实工程里逆变器的联调流程几乎一致。仿真里多花几分钟后面做硬件遇到问题时心里就有底了。5. 常见问题与排查技巧实录5.1 LCL滤波器谐振问题症状并网电流波形在开关频率附近有明显的振荡纹波FFT分析发现谐振频率处谐波放大。原因是LCL的谐振峰没有被有效阻尼。我最初没加阻尼电阻时模型直接出现高频振荡波形看起来像锯齿。后来我在电容支路串联了2欧姆阻尼电阻谐振峰被压下去波形干净了。如果想做到更精细推荐用电容电流反馈的有源阻尼反馈系数按谐振频段的阻尼需求整定。但注意有源阻尼依赖电容电流采样的准确性仿真里比较简单实物上要考虑传感器带宽。5.2 启动瞬间并网电流冲击症状并网断路器合闸瞬间电流达到额定电流的3倍以上波形明显畸变。原因有两个一是VSG输出的预同步相位和电网相位没有完全对准二是启动时滤波器电容迅速充电导致冲击。解决办法是先让VSG工作在预同步状态把VSG输出电压的相位慢慢锁到电网相位再闭合并网开关。相位差小于1°时合闸冲击电流明显减少。我给预同步加了比例调节器调节虚拟功角让VSG电压相位跟踪电网相位达到偏差阈值才允许并网。5.3 MPPT动态和VSG调节速度不匹配症状光照突变时母线电压剧烈波动甚至超过680V到720V的范围VSG输出功率出现振荡。原因是MPPT的跟踪速度太慢光照突变后MPPT还在旧工作点导致VSG有功参考和实际光伏输出功率之间出现较大偏差母线电压自然撑不住。我的解决办法两级配合一是加快MPPT扰动频率从10Hz提高到50Hz二是在母线电压偏差超过阈值时优先限制VSG有功参考值等MPPT跟上来再逐步恢复。这种功率协调策略和大型光伏电站集中控制中的功率调度逻辑很像。5.4 数值发散与求解器设置症状仿真跑到某个时刻突然报错“Solver was unable to reduce the step size”或者波形突然跳到NaN。这个最折磨人。我踩过几次坑后发现大多数情况是模型里存在代数环或者某个PI控制器的积分项初始值不合适。代数环会破坏求解器的迭代过程导致数值不稳定。排查思路在Simulink里检查模型是否有红色高亮的代数环提示如果有就在反馈路径上增加一个很小的延迟单元或一阶惯性滤波打破代数环。另外把PI控制器的初值设成0并限制积分输出幅值也能避免启动瞬间的数值溢出。最后如果以上都确认了还发散换个求解器试试比如从ode23t换成ode15s很多情况下能绕过去。5.5 仿真速度慢到怀疑人生VSG模型的执行速度不算快如果再把光伏阵列的详细损耗模型、MOSFET开关管的详细动态都搭进去1秒仿真可能跑上十几分钟。我的办法是分清主次开关管模型用Simulink自带均值等效不用半导体详细模型。SPWM调制用Simulink标准模块但不用过高的载波比。开关频率从10kHz降到5kHz仿真的波形形状完全一致速度却快了一倍。在模型加速器模式下运行编译成C语言运行速度提升非常明显。如果只是验证VSG控制逻辑可以先把光伏阵列简化为直流源跑通后再替换成详细光伏模型。5.6 Simulink环境常见报错速查报错信息原因处理办法LAPACK加载错误安装环境中BLAS/LAPACK库路径异常重装或修复MATLAB运行时环境S-Function未初始化S-Function代码有编译错误检查C代码语法重新编译mex文件仿真时间步长不收敛代数环或过大步长添加延迟/一阶惯性破环减小最大步长模块未连接连线未正确连接使用CtrlD诊断模型检查高亮信号线封装模块密码无法修改封装设计或权限问题在封装编辑器中调整访问权限6. 仿真结果分析要点6.1 稳态波形怎么判断好坏并网逆变器的稳态波形看三样东西电压电流波形质量、功率波动幅度、THD谐波失真率。额定工况下并网电流THD应该小于5%这是国标对并网变流器的基本要求。我的模型在LCL加阻尼电阻后THD在2.1%左右波形非常干净。电压波形应该三相对称、幅值稳定母线电压纹波不超过2%。功率波形上有功功率稳定在30kW附近波动小于±2%无功功率在0附近偏差不大于±2kVar。观察功率波形还能间接判断VSG控制有没有振荡——如果功率波形出现等幅振荡说明J和D参数还不够合理。6.2 动态波形怎么看效果光照突变场景把光照从1000W/m²突然降到500W/m²观察母线电压和输出功率的过渡过程。好的表现是母线电压在300ms内恢复稳定过渡过程没有超过±5%的过冲输出功率平滑过渡到新工作点。如果母线电压掉到650V以下说明MPPT和VSG的协调不够需要调整功率限制策略。电网频率突变场景把电网频率从50Hz突然降到49.5Hz观察VSG输出功率的响应。好的表现是VSG检测到频率下降后有功功率迅速增加增量以一次调频速度衰减到稳态值频率恢复过程平稳没有振荡。这个波形就是VSG提供频率支撑的直接证据。6.3 参数灵敏度与鲁棒性测试做一次完整可靠的VSG仿真不能只看额定工况。建议做参数灵敏度扫描观察参数变化对系统稳定性的影响J从0.3到2.0 kg·m²扫描观察频率响应的变化趋势。D从5到25扫描观察阻尼效果。kq从200到1000 Var/V扫描观察电压支撑效果。SCR从3到10观察弱电网适应性。把观测结果整理成表格你就能直观看出哪些参数对系统稳定性影响大哪些是敏感的这对后续写论文和做硬件都有指导意义。我在额定参数附近做了±40%的扰动测试模型都稳定说明这套参数有足够的鲁棒性。7. 模型扩展方向与实用建议7.1 从并网模式向离网模式扩展VSG的一个天然优势是既可以并网运行也可以离网运行切换逻辑只需要调整控制模式。离网模式下VSG不需要电网电压做支撑直接采用V/f控制逻辑虚拟电压幅值和频率都由VSG自己决定。这时核心问题是负荷突变时的动态响应虚拟惯量参数要相应调整。在Simulink里做离网扩展也不复杂把电网电源替换成恒阻抗负载把预同步模块停掉再增加并离网切换逻辑就行。如果想把并离网无缝切换也做了需要增加预同步和模式切换的时序控制逻辑逻辑上更复杂但Simulink里完全可以实现。7.2 加入电池储能系统VSG逆变器虽然能通过虚拟惯量提供频率支撑但它本身不存储能量。提供频率支撑时如果光伏出力已到满功率就无法再增加有功输出了。解决这个问题的标准做法是加储能直流母线上并联一个双向DC-DC变换器接电池组。储能响应速度比光伏MPPT快一个数量级能给VSG提供瞬时功率缓冲。在Simulink里加储能相对独立双向DC-DC变换器控制逻辑简单主要是功率分配策略的设计VSG需要功率时电池提供光伏出力大于VSG指令时电池吸收。这相当于把VSG从“光伏电站”升级成“光储一体化电站”这也是行业目前的发展趋势。7.3 与其他仿真工具的联合扩展Simulink的优势是可以在Simulink中完成电气主回路和控制算法的联合仿真协同。这个项目里全部在一个平台完成。如果想看看VSG控制器和外部真实环境如RTDS、dSPACE对接的情况通常的做法是把VSG控制算法封装成嵌入式C代码在Simulink里通过代码生成工具导出再部署到实时仿真平台上。如果后续要验证物理样机的控制效果可以考虑把VSG算法做成独立S-Function模块方便C代码生成和硬件部署。这也是很多硬件开发团队的常见做法先在Simulink里验证算法再直接转向代码生成和半实物验证。从我个人的实际体会来讲VSG的Simulink仿真做到最后比拼的往往不是算法本身而是对参数之间耦合关系的理解深度。虚拟惯量、阻尼系数、下垂系数、双闭环带宽任何一个环节改动都可能牵动全局。仿真跑通了还要追问一句删掉这个参数行不行改成两倍行不行扰动到多少会失稳只有把这些问题都能回答上来这套仿真才算真正吃透了。最后再分享一个小技巧把关键场景做成可切换的配置变量比如光照突变幅值、电网频率跌落幅值、短路比大小都定义成模型工作区的变量。换一组工况测试时直接改变量值就行不用在模型里到处找常数模块改。调试效率翻倍的关键就是把这些变量的边界条件和初始值都规范化管理起来。