写光伏储能并网仿真的人很多,但真正把VSG(虚拟同步发电机)控制吃透、能在Simulink里复现出“同步发电机那种有惯量、有余度”的并网特性的模型,其实并不多见。我前前后后搭过三轮光伏储能并网仿真模型,从最初的PQ控制,到后来的下垂控制,再到这套基于VSG虚拟同步发电机控制与储能协调的架构,才算真正解决了“光伏出力波动大、储能响应快、并网冲击小”三者之间的矛盾。这篇内容就基于这个项目,把我在Matlab Simulink平台下的建模思路、模块拆解、参数整定和踩坑记录完整梳理一遍。如果你正在做新能源并网仿真、微电网控制或者毕业设计里碰上了VSG,这篇文章应该能帮你省掉不少自己试错的时间。
1. 为什么光伏储能并网要引入VSG控制
先聊一个基础问题:光伏逆变器传统的并网控制方式并不少,PQ控制、下垂控制都用得好好的,为什么非得用VSG?这个问题想清楚了,后面建模的方向才不会跑偏。
1.1 光伏并网的“先天劣势”:零惯量与弱支撑
光伏阵列本身是一个不含旋转质量环节的静止发电单元,直流侧的光伏板没有转子、没有励磁绕组,它的输出特性完全由光照和温度决定。传统光伏逆变器采用PQ控制时,控制目标是“锁住有功、无功输出”,本质上是一个跟随电网电压、电流的电流源,系统几乎不提供任何惯量支撑。电网频率一旦发生扰动,光伏系统既不会像同步发电机那样依靠转子惯量“顶住”频率变化,也不能主动为电压跌落提供无功支撑。这就是为什么业内常说“光伏占比越高,电网越脆”的核心原因。
储能电池加入后,问题并没有自动解决。如果储能单元还是像“外挂”一样单独做一套充放电管理,光伏和储能之间缺乏协调,整个系统依然是一个没有惯量的电力电子接口。并网仿真里最常见的一个现象就是:光照突变或者负载切换瞬间,直流母线电压剧烈波动,逆变器发出一大波畸变电流,甚至触发过流保护。根子不在逆变器参数上,而在控制策略上没有给系统注入“惯性和阻尼”这两个旋转发电机固有的物理属性。
1.2 VSG的核心思路:用控制算法造出一台“虚拟电机”
VSG的思路很直接:在逆变器的控制算法中,把同步发电机的转子运动方程、调速器特性、励磁调节特性都通过数学公式“写”进控制器。逆变器输出侧的电路特性不变,但控制行为呈现出来的是一个“虚拟同步发电机”——有功变化时频率会像真实转子一样有惯性过渡,电磁功率突变时功角会像同步电机一样摆动并恢复,无功需求变化时端电压会像励磁调节一样平滑升降。也就是说,电力电子器件的外衣下,藏了一颗“电机的心”。
这个思路解决了传统PQ控制最致命的短板:系统的等效惯量几乎为零。VSG中转动惯量J和阻尼系数D成了两个显式可调的控制参数,相当于给逆变器“人为注入”了惯量。放到并网仿真模型中,这意味着在同样一个光照扰动下,VSG控制的光储系统频率变化率(ROCOF)明显更小,动态响应更接近真实同步电厂,这在高比例新能源接入的背景下尤其重要。
1.3 储能与VSG的天然互补关系
储能电池在VSG架构里不是可有可无的配角,而是VSG控制得以成立的能量基础。VSG模拟同步发电机惯量支撑时,本质上是在短时间内把有功功率“顶”出去或“收”回来,这个突发的功率差额必须有一个快速且可控的能量源来承担。光伏阵列本身受光照约束,无法在需要时立刻多出力,只有储能电池能够利用双向DC/DC变换器在毫秒级时间内吞吐功率。
所以这套模型的设计逻辑是:光伏阵列负责稳态发电,通过MPPT追踪最大功率;储能电池通过双向Buck/Boost变换器平抑直流母线波动,并在VSG指令下调节功率输出;逆变器统一采用VSG控制,向电网呈现“同步发电机”外特性。光伏、储能、逆变器三部分各司其职,形成了完整的“发电-缓冲-并网”链条。仿真中这部分设计做扎实了,后面观察动态响应曲线时逻辑会非常清晰。
2. 系统整体架构与Simulink模块拆解
明白了VSG的定位,下一步就是搭模型。整个Simulink光储并网仿真模型按功能可以划分为六个核心模块:光伏阵列模块、Boost升压与MPPT模块、储能电池与双向DC/DC模块、三相逆变器模块、VSG控制器模块、以及并网滤波与电网模块。下面逐个拆开讲。
2.1 光伏阵列建模:用Engineering Model还是用S-Function
光伏阵列本身在Simulink中有两种常见建模方式:一是Simscape Electrical库中的PV Array专用模块,二是利用光伏电池的工程数学模型(Engineering Model)搭S-Function或Matlab Function模块。两种方式我都试过,说实话各有取舍。
Simscape的PV Array模块最大的好处是省事,参数面板里标定开路电压、短路电流、最大功率点电压、最大功率点电流之后,它内部自动完成I-V曲线和P-V曲线的计算,支持光照和温度输入,而且可以和Simscape物理域直接连接。缺点是仿真速度会变慢,尤其是整个系统采用离散定步长仿真时,物理模型和解算器之间的交互容易出小毛病,初学阶段遇到莫名其妙的代数环报错,一半以上和Simscape物理域接口相关。
工程数学模型则完全用代数方程计算I-V曲线,核心公式是基于单二极管模型的简化形式。实际搭建时需要把Iph、I0、A、Rs、Rsh这些参数通过短路电流、开路电压、最大功率点反推出来。这种方式胜在透明、轻量、可控,方便后续展开做算法层面的研究,而且不会有Simscape物理域连接问题。我的做法是:如果只做控制层面,用工程数学模型;如果要研究热特性或电气细节,再切到Simscape。
工程模型的Matlab Function核心结构大致是这样的:
function Vpv = PV_Model(G, T, Ipv) % 实际光生电流 Iph = (Isc_ref + Ki*(T - T_ref)) * G / G_ref; % 反向饱和电流 I0 = (Isc_ref + Ki*(T - T_ref)) / ... (exp((Voc_ref + Kv*(T - T_ref))/(A*Vt*Nser)) - 1); % 迭代求解输出电压 Vpv = Vt*Nser*log((Iph - Ipv + I0)/I0) - Ipv*Rs; end需要注意这里有一个隐含的迭代问题:给定电流求电压时,因为Rs的存在,表达式里隐含了I*Rs项,直接写会形成隐式方程。我记得第一版代码就栽在这里,仿真一开始代数变量解不出来。后来改用经过Morgan-Bishop变换的显I-V方程,或者直接把方程改写成适合求解器迭代的形式,代数环的报错才消失。
2.2 Boost升压与MPPT实现细节
光伏阵列输出的直流电压通常只有几十伏,需要Boost电路抬升到逆变器直流母线所需电压(一般取650V-750V)。Boost的主要职责有两个:一是实现电压变换,二是配合MPPT算法让光伏阵列始终工作在最大功率点附近。我在这套模型里用的是最经典但依然好用的扰动观察法(P&O,即Perturb and Observe),每固定步长给参考电压一个微小扰动,观察功率是增大还是减小,以此决定下一步扰动的方向。
P&O的控制逻辑不复杂,但有四个参数值得认真调:扰动步长、采样周期、电压限幅、以及重启触发条件。扰动步长太小,追踪速度慢,光照突变时最大功率点跟不上;扰动步长太大,稳态时在最大功率点附近来回震荡,功率曲线会持续抖动。我的经验是扰动步长取最大功率点电压的0.5%-1%,采样周期取10ms左右,既不会太快导致反复震荡,也不会太慢导致追不上光照变化。Matlab Function里P&O的核心逻辑可以直接写成状态机:
function [D_ref, Vref] = MPPT_PO(Vpv, Ipv, Vref_old, D_old, step) P_now = Vpv * Ipv; if P_now > P_old Vref = Vref_old + step; % 功率增大,保持方向 else Vref = Vref_old - step; % 功率减小,反向 end % 限幅处理 Vref = min(max(Vref, Vmin), Vmax); end这里特别提醒一个实操问题:很多初学版本的P&O直接输出占空比而不是输出电压参考,然后通过PI调节器跟踪。用电压参考方式会稳得多,因为光伏阵列电压-功率曲线在最大功率点附近比较平缓,占空比直接控制很容易让PI饱和。
2.3 储能电池与双向DC/DC的控制协调
储能侧我做的是锂电池模型,Simulink里有电池专用模块,支持内阻模型和Thevenin模型。做VSG动态仿真时建议用Thevenin模型,因为它能反映电池的暂态特性,纯内阻模型在负荷突变的瞬间表现太理想,SOC和端电压的响应失真。电池模型需要标定的参数包括额定容量、初始SOC、内阻、极化电阻、极化电容等。需要客观承认的是,电流和SOC相关的参数表格在真实工况下会变化,仿真里用常参数已经足够。
双向DC/DC有两种控制目标:如果并网逆变器是电压源型控制(VSG本质上属于电压源型),那么直流母线电压应该由储能侧的变换器来稳定;如果逆变器是电流源型控制,母线电压则由光伏侧承担。在我这套模型中,VSG逆变器控制的是并网功率和端口电压,所以直流母线电压稳定责任落在了双向DC/DC上。
具体控制策略是:储能DC/DC外环采用电压-功率协调控制,即直流母线电压外环输出功率指令,功率内环控制双向Buck/Boost的电感电流,然后产生PWM波。充放电平滑切换的关键是把功率环PI输出的限幅与电池SOC以及充电电流限制联动。我之前吃过一次亏:电池SOC接近下限时,功率指令还按最大功率下发,仿真直接出现负SOC,物理上完全不合理。后来在功率环上游加了一个SOC自适应限幅器,效果就正常了。
2.4 三相逆变器、滤波器和并网接口
逆变器我选用的是三相两电平桥臂,IGBT模块加反并联二极管,PWM载波频率设10kHz。VSG控制输出的电压指令,通过双闭环生成SPWM或者SVPWM驱动信号。这里有一个很重要的细节:VSG控制基于电压源型逆变器外特性,控制环节必须输出电压参考,不能直接输出电流参考,这句话看起来简单,但控制框图结构上容易搞反。
滤波器选LCL还是单纯L型,主要看并网电流谐波要求和参数设计难度。LCL滤波对高频谐波抑制效果显著,但存在谐振尖峰,需要外加无源阻尼或有源阻尼。我的模型里第一版用了LCL,结果谐振峰没压住,并网电流波形上出现了明显的5-7次谐波叠加振荡。后来换大电感的L型滤波器,代价是滤波器体积增大,但控制稳定性和鲁棒性明显变好,对于仿真研究而言L型更省心。参数选择上,L型滤波电感压降一般控制在额定电压的5%-10%以内,电感取值约为0.2-0.5mH(视功率等级而定)。需要注意,LCL的阻尼设计在仿真中常被简化,但在工程实践里是躲不开的。
电网侧我用三相无穷大电源模拟理想电网,串联线路阻抗。同步锁相这里要特别注意:VSG控制虽然自称“同步发电机”,但仍然需要锁相环获取电网相位信息用于预同步,建模时不可以省掉PLL环节。
3. VSG虚拟同步发电机控制的核心实现
VSG是整个模型的心脏,这一节展开讲讲控制器内部机理和Simulink里的块图搭法。很多刚上手的读者把VSG想得很玄,其实拆开就看清楚了,它就是三个环:有功频率环、无功电压环、电流内环。
3.1 转子运动方程与有功-频率控制环
VSG的核心物理基础是同步发电机的转子运动方程,在标幺制或者实际值下表达式如下:
J·dω/dt = Tm - Te - D·(ω - ω0)
其中J是虚拟转动惯量,表征系统对抗频率变化的能力,数值越大频率变化越缓和,但暂态功率波动也大;D是虚拟阻尼系数,表征振荡能量的衰减速度,太小会让频率和功角长时间振荡;Tm是机械转矩,由调速器根据有功指令与频率偏差生成;Te是电磁转矩,由输出有功功率计算得到。
在Simulink里搭这个方程可以直接使用积分模块,也可以写成Matlab Function变量。代码示意:
function [omega, theta, Tm] = VSG_Swing(Pref, Pe, omega0, D, J, dt) persistent omega_arr theta_arr Tm_arr if isempty(omega_arr), omega_arr = omega0; end if isempty(theta_arr), theta_arr = 0; end if isempty(Tm_arr), Tm_arr = Pref/omega0; end Te = Pe / omega; % 调速器:有功指令 + 一次调频 Tm_arr = Pref/omega0 + (omega0 - omega) * Kdroop; % 转子运动方程 domega = (Tm_arr - Te - D*(omega - omega0)) / J; omega_arr = omega_arr + domega * dt; theta_arr = theta_arr + omega_arr * dt; end这里有几个参数整定的常见问题。J的单位是kg·m²,实际工程换算时很容易搞错,因为同步发电机的转动惯量、阻尼系数的取值和物理发电机有对应关系,但我们做的是“虚拟”的,J本身是设计参数而不是物理参数,所以完全可以通过动态响应需求反推。考量之一是频率变化率约束:dω/dt最大值出现在功率阶跃瞬间,若允许的频率变化率为df/dt_max,则J应满足J > ΔP / (2π·df/dt_max·ω0)。考量之二是功率振荡周期:转动惯量J过大,会使功率振荡周期变长,如果并网系统里有其他同步发电机,虚拟惯量过大反而会引发振荡模式的交互。经验做法是先用小J试出基础动态,再逐步加大观察阻尼效果,不要一上来给很大惯量。
3.2 无功-电压控制环与虚拟励磁调节
同步发电机另一个核心特性是励磁调节。VSG中无功功率与机端电压的关系用下垂特性模拟:当系统感应到无功功率需求增加时,电压参考会按照下垂系数n下降。控制方程如下:
Qref - Q + Dq·(Un - U) = 0
这里的Dq同时承担了无功-电压下垂和无功阻尼的作用。具体到Simulink中的实现:采集逆变器输出无功功率Qs,与无功指令Qref比较,经过一个PI调节器后生成电压幅值参考E0。由于无功环本身动态慢,PI的带宽不需要设得很高,太大的比例增益会让电压产生明显振荡。
虚拟励磁调节输出与有功频率环输出的相位合成,得到三相电压参考信号:
Va = E·sin(θ)、Vb = E·sin(θ - 120°)、Vc = E·sin(θ + 120°)
这里有必要提醒一个容易遗漏的细节:若系统需要具备孤岛运行能力,无功电压环还必须接入“虚拟阻抗”环节。虚拟阻抗的作用是模拟同步发电机的同步电抗,让电压型逆变器在带非线性负载时输出电压能合理地“软化”,不至于为了维持电压而输出过大电流。并网模式仿真里虚拟阻抗可以暂时不启用,但如果模型会扩展微电网孤岛切换场景,建议一开始就把虚拟阻抗环节预留好,否则后面改造控制结构时返工量不小。
3.3 电压电流双闭环与PWM生成
VSG输出的电压参考不能直接去触发开关管,它还需要经过电压外环和电流内环的矫正。电压外环调节电容电压跟踪E·sin(θ),电流内环快速跟踪电感电流,输出就是PWM调制波。双闭环PI参数整定规律:电流内环带宽要远高于电压外环,一般内环PI的积分时间常数取滤波时间常数的10倍左右,外环则按照电压环截止频率约为电流环的1/5-1/10来设计。
在Simulink中,双闭环通常采用坐标变换的方式。将abc三相静止坐标系转换到dq旋转坐标系,其中d轴定向在VSG虚拟内电势相位上,q轴超前d轴90°。整个VSG控制框图搭好后,信号流大概是:采样功率、电压、电流 → 有功频率环和无功电压环 → 生成内电势幅值和相位 → 坐标变换得到dq电压参考 → 电压外环PI → 电流内环PI → 反变换得到abc三相调制波 → PWM发生器。
坐标变换时帕克变换矩阵的相位基准一定要和VSG输出的θ对准,否则解开绕之后会发现d轴和q轴分量互相串扰,电流内环怎么调都稳不住。这个我也踩过,当时莫名其妙q轴电流持续正偏,后来逐项检查才发现Park变换里sin/cos项中混入了PLL视角和VSG虚拟相位两套角度。
3.4 预同步控制:解决并网冲击的必备环节
VSG本体控制搭完,如果直接并网,大概率会看到冲击电流。原因很简单:VSG虚拟内电势和电网电压之间存在幅值差、频率差、相位差,断路器闭合瞬间相当于一个非同步电源硬并网,冲击电流动辄是额定电流的数倍。预同步控制的思路是:在并网开关闭合之前,通过检测两侧电压差作为反馈,调节VSG虚拟内电势的幅值和相位,使两侧电压逐步逼近,直到幅值差、相位差都缩小到允许范围(比如幅值差小于5%,相位差小于5°),再闭合并网断路器。
我实现预同步有两种路径:一种是额外增加三个PI调节器分别控制幅值差、频率差和相位差;另一种是直接在VSG指令上加前馈修正。前者更稳健,推荐优先使用。并网完成后,预同步环路切换为正常VSG控制,切换瞬间注意做好PI初值继承,否则控制量突变又会引起新的暂态冲击。
4. Simulink建模实操:参数整定与关键步骤记录
理论层面梳理清楚后,真正到了Simulink环境里搭建,还是有很多具体操作问题。这一节给出我整个实操过程的关键记录和参数取向,可以当作“避坑指南”用。
4.1 系统参数与仿真环境配置
先列一组我项目中常用作示例的参数,方便直接对照:
光伏阵列:开路电压460V,短路电流38A,最大功率点电压370V,最大功率点电流35A,功率等级约13kW。
储能电池:额定电压600V,额定容量100Ah,初始SOC取60%,内阻0.1Ω。
直流母线:额定电压700V,母线电容6000uF。
逆变器:三相两电平,开关频率10kHz,额定功率20kW,输出线电压380V/50Hz。
滤波电感:L=0.5mH,寄生电阻0.01Ω;LCL方案时电容10uF,网侧电感0.3mH,阻尼电阻3Ω。
仿真求解器配置:Simulink中建议使用离散定步长求解器,步长1e-5秒(对应10kHz开关频率,每个开关周期采样100点,足够精确)。如果整个模型都用连续变步长求解器,状态量多,仿真速度慢且PWM触发信号容易产生过零检测问题。
光伏MPPT扰动步长:1V/10ms。VSG参数:J=10kg·m²,D=200,有功下垂系数1e-4,无功下垂系数1e-3。
4.2 按层搭建的步骤建议
整个搭建顺序建议“先底层后控制,先开环后闭环”:
第一步:把光伏阵列模块搭好,先给固定光照和温度,不加MPPT,让光伏直接输出某一固定电压,验证I-V曲线对不对。第二步:搭Boost和MPPT,空载验证控制环能追踪到最大功率点。第三步:搭储能电池和双向DC/DC,先让DC/DC稳住700V直流母线,观察电压波动范围在±1%以内。第四步:搭逆变器和滤波器,开环给一个固定占空比,看三相桥能否正常输出;这里先不要接VSG控制器,否则问题混杂在一起很难定位。第五步:接入VSG控制,从有功频率环开始,逐环调试。第六步:加入预同步,合闸并网。第七步:做扰动实验,在光伏侧加光照阶跃或负载侧加负荷阶跃,验证VSG动态特性。
这种按层搭建的好处是每一层都验证过再进入下一层,出问题时能快速定位是哪一层的问题。我见过很多同学一次性把整个模型全连起来,仿真报错后完全不知道从哪查,只能瞎猜参数,效率极低。
4.3 仿真参数调整的几个可参考方向
VSG参数整定是整个项目最花时间的环节。我的经验是分三个层次来调:
先是确定下垂系数。有功频率下垂系数由系统允许的频率偏差和有功调节范围决定,比如允许频率偏差0.5Hz、有功调节范围10kW,那么下垂系数约等于0.05Hz/kW,换算成角频率/功率标幺后就是一个常数。无功电压下垂同理。
再是确定转动惯量J。这一步建议做一组扫参实验:固定D、下垂系数,把J分别设为5、10、20、50,观察有功阶跃响应下频率偏差曲线的斜率。注意观察频率波动的最低点和恢复时间,J越大,初始频率下降越平缓,但恢复过程中更容易出现低频功率振荡。最终选择理论值附近同时留有一定裕量的结果。
最后确定阻尼系数D。在选定J的前提下,调节D,观察频率响应是否收敛快、超调量是否合理。D太小时频率振荡要3-5个周期才平息,D太大时系统响应僵硬,反而失去了虚拟惯量的意义。一般来说,阻尼比可以按类似二阶系统的思路估算,取0.7-1.0的阻尼比范围,再由J和下垂系数反推D的取值。
需要强调的是,这些参数不是一次调就能稳定的,需要反复配合调试。建议在仿真过程中把关键观测量(频率、有功功率、直流母线电压、并网电流THD)都送入Scope或者Data Inspector,一边改参数一边看波形,形成直觉后再批量调整。
4.4 仿真运行与波形记录
我的模型在光照从800W/m²阶跃到1000W/m²时,观测到的主要动态是:直流母线电压出现短暂抬升,约1.2倍额定电压持续不到0.2秒,储能DC/DC立即吸收额外功率,母线电压回落;VSG频率出现约0.3Hz的短暂偏移,然后以约0.5秒的时间常数恢复到额定值附近;并网电流幅值平滑变化,没有出现冲击尖峰。这套波形说明VSG的“惯量-阻尼-调频”机制确实是生效的,和同步发电机在负荷突变时的动态行为有相似性。
如果把同样的系统换成传统PQ控制做对比仿真,最明显的差异是:PQ控制下,光照突变瞬间直流母线电压波动幅度更大,并网有功功率变化几乎是阶跃式的,频率偏移也几乎没有惯性缓冲,波动直接传导到并网点。两组波形放在一起,VSG的价值一目了然。
5. 常见问题与排查技巧实录
项目经过多轮迭代,我在仿真实践中积攒了不少具体问题。这些问题不少有共性,在此整理成一份速查表,按问题现象、可能原因、检查方法和解决建议来组织。
5.1 仿真直接报错或发散
最常遇到的错误集中在代数环、初值和数值发散三类。
代数环报错通常出现在Matlab Function模块内部含有隐式方程时,比如PV模块用I-V方程直接算V、或者VSG功率计算和电流指令之间存在反馈耦合。排查方法:先把Matlab Function内部分离出纯输入纯输出,避免在同一个函数体内部完成“算功率再调输出”的相互依赖;必要的时候可以在反馈路径上加入一阶惯性环节,打破代数环。
初值问题主要出现在角度和积分器初值上。VSG的功角θ初值必须根据当前电网相位初始化,不能从0开始,否则预同步环节要花很长时间去追相位。我给θ初始化的时候,直接读取PLL输出的初始相位作为积分器初值,并网冲击立刻小了很多。
数值发散则多半是步长过大或PI增益过激。先降低步长到1e-6秒观察是否仍然发散,如果离散步长下依然剧烈振荡,那就说明控制参数本身存在不稳定,这时候要回头检查电流内环带宽是否远大于外环。
5.2 并网瞬间冲击电流过大
这个问题第一版模型里非常明显,主要原因是预同步没做好或者PI初值没有继承。排查顺序:先看并网前VSG电压幅值、相位和电网电压的偏差是否在允许范围,再看并网瞬间有没有控制环积分器复位的操作,积分器复位会造成输出跳变。
另外一个容易被忽略的原因是并网开关本身的建模。使用理想断路器直接切换,仿真中会产生数值冲激;更好的做法是用串接小电阻的受控开关模拟断路器合闸过程,电阻从高阻过渡到低阻,波形更平滑更接近实际。
5.3 直流母线电压持续波动
直流母线电压的稳定性是整个光储系统的“晴雨表”。如果母线电压在VSG并网后出现持续波动,先检查储能DC/DC的电压环带宽与VSG有功环带宽是否接近。如果两者带宽接近,两个控制环会发生交互,母线电压就会“呼吸性”波动。解决方法是把储能侧的电压环带宽设计得比VSG有功环高二到三倍以上,形成时间尺度上的分层。
另一个可能原因是母线电容取值偏小。项目初期母线电容只取1000uF,结果一有功率波动母线电压就跳得厉害,后来加大到6000uF并检查储能电流限幅,问题才消停。母线电容设计既影响母线电压动态,《还用》与成本体积有关,如果条件允许,建议通过直流母线储能变化量计算最小电容需求。
5.4 并网电流谐波超标
如果并网电流THD超过5%,优先检查调制方式和滤波参数。SPWM相对SVPWM谐波含量更大,SVPWM的直流电压利用率更高、谐波性能更好,在条件允许的情况下优先用SVPWM。LCL滤波则需要确认谐振频率是否符合经典设计经验:谐振频率位于10倍基波频率(500Hz)和1/2开关频率(5kHz)之间,并在此范围内取中值附近。
谐波也常常来自采样环节,仿真中采样保持器导致的高频混叠或死区时间设置不当,都会让电流波形出现毛刺。可以先给系统加个简单的LC低通滤波环节,观察THD是否改善,再反查具体源头。
5.5 参数扫描在Simulink里的效率技巧
VSG参数整定需要对J、D、下垂系数做多组扫描,如果每次都手动改参数,再跑仿真、再记录波形,效率很低。我用的是Simulink的Parameter Estimation模块,配合外部脚本批跑。简单做法是用一个.mat文件存放参数变量,然后通过结构体数组循环调用sim()命令,把每组参数对应的最大频率偏差指标记录下来,直接出对比表。这个做法在MATLAB的“脚本+Simulink模型一体化仿真”模式下非常顺手,相当于把参数整定自动化了。
5.6 常见问题速查表
我整理成如下速查表,方便在调试过程中快速对照:
| 现象 | 可能原因 | 排查方向 | 解决建议 |
|---|---|---|---|
| 仿真代数环报错 | 模块内隐含耦合 | 检查Matlab Function内部方程 | 拆解耦合,引入惯性环节 |
| 并网冲击电流大 | 预同步未收敛 | 检查两侧幅值、相位差 | 完善预同步PI,继承初值 |
| 母线电压波动 | 控制环带宽冲突 | 对比各环开环Bode | 拉开内中外环时间尺度 |
| 并网THD超标 | 调制/滤波参数差 | 测各次谐波含量 | 换SVPWM,调LCL谐振峰 |
| 振荡不衰减 | 阻尼系数过小 | 观察频率波形 | 增大D至合适阻尼比 |
| 跟踪MPPT慢 | 扰动步长过小 | 检查MPPT响应时长 | 增大步长或缩短采样周期 |
| 预测频偏过大 | 转动惯量过小 | 求取频率变化率 | 增大J,注意振荡交互 |
6. 从仿真走向工程时的一点体会
回看这套模型,我最大的体会是:VSG控制和传统PQ控制之间的差别,表面看是控制算法的差异,本质上是“如何看待电力电子装置在电网中的角色”的差异。传统方法把逆变器当“听话的执行器”,指令什么就输出什么,尽量不打扰电网;VSG则把逆变器当作“有主动支撑能力的电源”,在电网最需要的时候能够对抗扰动。这个视角的转变,对做新能源并网研究的人来说,远比多调一个PI参数更有意义。
另外在工程落地时有一个经常被忽视的问题:仿真里的无穷大电网、理想开关和恒定参考值,在真实系统中全部要打折。真实的并网点有短路容量限制,断路器是机械结构,采样有延时,通讯有丢包,蓄电池还有老化特性。仿真中参数整得再好,到了工程现场也至少要预留30%的鲁棒裕度。所以做仿真时的态度应该是“模型收敛只是起点,理解参数背后的物理意义才是关键”。比如J和D看起来只是两个数字,但它们决定了虚拟机组在真实电网中参与一次调频时的动态行为,这直接关系到稳定性。
最后分享一个小技巧:我在做整套模型时,始终保留了一个“日志版”的Scope组合,专门记录VSG频率、功角、电磁功率和直流母线电压四项。任何参数调整后,先看这四条曲线,基本就能判断控制状态是否健康。曲线“平”不一定代表系统好,曲线“正”才是。这个习惯帮我排掉了大量排查故障的时间,也推荐给正在搭建类似模型的朋友。后续如果继续扩展这个模型,我会把重点放在弱电网工况(短路比变化)下的VSG自适应参数调节,以及多台VSG并联运行的功率分配问题上——这两个方向在工程上比单机并网更有现实意义。