☰
虚拟同步发电机离并网无缝切换仿真模型搭建与调参实战
2026/10/7 4:41:24 网站建设 项目流程

我最早开始搭虚拟同步发电机仿真模型,就是被“离并网无缝切换”这件事逼的。分布式光伏、储能这类逆变器挂在电网上,电网正常时还好,一旦电网断电或重新恢复,控制模式一换,电压和电流常常跳得像过山车。传统PQ控制切到V/f控制,相位对不上,并网瞬间冲击电流能到额定电流的好几倍,保护直接跳闸。后来我把目光转向虚拟同步发电机,把同步发电机的转子运动方程搬进逆变器控制里,让逆变器自己具备惯性和阻尼,再用MATLAB/Simulink搭了一套完整的离网并网无缝切换模型,这个问题才算真正有了可复现的解法。

这篇内容不打算讲太多理论推导,重点分享我自己搭建这套仿真模型时的整体思路、核心控制实现、切换逻辑,以及我在仿真过程中踩过的坑和调参经验。不管你是做微电网控制、储能变流器,还是刚接触VSG想找个能跑的模型做课题参考,这套建模方法和排查思路都应该能帮上忙。

1. 为什么要为离并网切换搭建 VSG 仿真模型

1.1 VSG 与常规逆变器的根本差异

常规并网逆变器通常工作在PQ控制模式,说白了就是一个受控电流源:锁相环跟踪电网相位,电流内环按给定的有功无功参考输出。这种控制简单,动态响应快,但它有一个致命弱点——没有惯性。电网频率一波动,逆变器不会像同步发电机那样依靠转子惯性自动扛一下,而是直接跟着功率指令走,所以带不动电网的频率支撑。

虚拟同步发电机则是把同步电机的机电暂态方程塞进逆变器控制里。经典二阶模型:

[ J\frac{d\omega}{dt} = T_m - T_e - D(\omega - \omega_g) ]

J是虚拟惯量,D是阻尼系数,Tm是机械转矩对应有功指令,Te是电磁转矩对应实际输出功率。逆变器因此表现出跟真实发电机类似的频率响应:频率突变时有惯性缓冲,振荡时有阻尼消耗能量。更重要的是,VSG本身天然输出电压源的特性,离网时可以给负载提供稳定的电压和频率,并网时又能参与有功无功调节,这就给了无缝切换一个基础。

我实测下来的体会是,VSG相比传统双模式切换方案,最大的优势不是某一个模式下的表现,而是两种模式用的是同一套控制框架,不存在“两套完全不同的控制器之间切换”的问题。切换的时候只需要调整参考值和预同步环节,控制环路本身不用推倒重来,冲击自然小很多。

1.2 “无缝切换”到底难在哪

不少人以为无缝切换就是把断路器一合、一断就完事,仿真正常,实际却一塌糊涂。这里面的核心难点有三个:

第一个是相位差。逆变器离网运行时,输出电压相位由自己的振荡器决定,交流器一般用锁相环跟踪电网。一旦电网失电又恢复,两侧相位不会恰好一致,如果直接合闸,相位差引起的电压差会产生巨大的冲击电流。这跟两个交流电源并联的条件完全一样,电压幅值、频率、相位必须满足条件,否则就是硬性接线。

第二个是控制参考值的突变。离网模式通常以额定电压和额定频率作为参考,并网模式则要切换到功率跟踪,有功和无功给的是目标功率。如果参考值在切换瞬间直接跳变,电压电流双闭环会立刻产生纠偏动作,相当于给系统来一记阶跃扰动。这种事前看起来很小的跳变,反映到波形上就是电压凹陷和电流尖峰。

第三个是模态切换逻辑本身的过渡问题。网侧断路器分闸之后,VSG输出端与电网脱离,这个时候锁相环锁的是本地电压,又或者是电网侧残压,切换数据源衔接不好,控制模式在几个值之间反复跳变,系统可能会在短时间内震荡甚至失控。

所以真正做好无缝切换,不是在“断”和“合”两个开关动作上做文章,而是要把预同步、参考平滑、模式切换状态机这几样东西组合起来,让控制环在几乎不变的前提下平稳过渡。这套模型的设计重点,就落在这些环节上。

2. 仿真模型的整体架构与参数选型

2.1 主电路拓扑与关键器件参数

我搭的这套模型用的是三相两电平电压型逆变器拓扑,直流侧直接用理想直流电压源(或带电容的整流源)模拟,逆变桥用Universal Bridge搭IGBT开关模型,输出经过LC滤波器接本地负载,再通过一个三相断路器连接模拟电网。断路器就是最直接的离并网切换执行机构,同时也是故障注入的工具。

主电路参数我一开始都按常规工程经验取,后面根据仿真波形做了两轮调整,最终一组能稳定工作的参数如下:

参数数值说明
直流母线电压800 V留足调制裕度,保证交流输出不削顶
电网相电压幅值311 V380V线电压有效值
电网频率50 Hz工频
滤波电感L3 mH兼顾电流纹波和动态响应
滤波电容C50 μF与L构成谐振频率约13kHz,远离控制带宽
开关频率10 kHz常用IGBT开关频率
本地负载10 kW + 2 kVar离网时由VSG独立带载

滤波参数有个经验值:LC谐振频率一般取开关频率的1/10到1/5,这样既能有效衰减开关次谐波,又不会让谐振峰落在控制带宽内。10kHz开关频率下,L取3mH、C取50μF,谐振频率约13kHz,但实际仿真发现LC本身谐振峰容易和电流环交互,所以我又在控制里加了一个有源阻尼项,这个后面细说。

直流侧电压的选择也要多说一句。三相SPWM调制时,输出相电压幅值理论上最大是Vdc/2,但要留出调制比余量,一般取1.2倍以上,所以800V直流对应311V相电压幅值是够的。如果你用SVPWM,直流电压利用率能再提一截,800V就更宽裕。

2.2 控制系统分层设计与软件分工

整套控制系统我按经典的三层结构来搭,分层之后的好处是调试的时候哪里出了问题一目了然。

最外层是VSG功率控制层,输入是实测三相电压电流计算出的有功和无功功率,输出是虚拟电动势的幅值和频率。这一层是整个模型的灵魂,通过转子运动方程模拟同步机的惯性和阻尼,同时加入有功—频率下垂和无功—电压下垂,让系统具备一次调频调压能力。

中间层是电压外环和电流内环。电压环对VSG生成的电压参考做跟踪,输出电流参考;电流环跟着电流参考走,保证输出电流可控,同时具备限流能力。这里用dq坐标系下的PI控制,电压环带宽取400Hz左右,电流环带宽取2kHz左右,两个环差大约5倍,避免环路之间相互干扰。

最底层是PWM调制。电流环输出的dq电压参考经过反变换得到三相调制波,再和三角载波比较生成IGBT开关脉冲。仿真里用离散PWM Generator,采样时间设为1e-6,跟实际控制器尽量贴近,简单起见载波移相在单个VSI里不涉及。

软件分工上,我习惯把主电路全部扔在Simulink里,控制部分也用Simulink图形化搭建,但初始化参数统一放在一个MATLAB脚本里。这样改参数不用翻模型,直接在脚本文件里改完运行一遍就生效,方便批量跑不同工况。参数初始化脚本大致长这样:

%% 主电路参数 Vdc = 800; Vg_amplitude = 311; f_grid = 50; w_grid = 2*pi*f_grid; L_filter = 3e-3; C_filter = 50e-6; R_load = Vg_amplitude^2 / 10000; %% VSG参数 J = 0.1; D = 20; Kpf = 0.05; % 有功-频率下垂系数 Kqc = 0.001; % 无功-电压下垂系数 tau_v = 0.01; % 电压调节惯性 %% 控制器参数 kp_v = 2; ki_v = 100; kp_i = 1; ki_i = 50;

模型搭建方面有个建议:不要一开始就追求封装成Subsystem,先摊开搭,确认仿真结果对了再做Mask封装。否则信号线脚定义错了,排查半天都不知道问题出在子系统内部还是外面。

3. 无缝切换的核心控制实现

3.1 离网模式:V/f 独立支撑

离网模式下,VSG独立给负载供电,它的控制目标是维持输出电压幅值和频率在额定值附近。我这里的VSG功率控制层在离网时的参考值是这样设置的:有功功率参考Pref取实际负载功率的前馈值,无功功率参考Qref也取负载无功需求的前馈值,这样VSG基本上是一个带惯性的电压源,电压环和电流环负责精确跟踪。

但仿真里不可能知道负载功率,所以我模拟真实工程的做法:离网启动时给一个初始频率和电压参考,然后靠下垂特性自动平衡负载。比如负载加重、输出有功增大,由于转子运动方程里的不平衡转矩,转速会略有下降,频率跟着小幅度降低,通过有功—频率下垂修正参考功率,系统稳定运行。这个特性跟真实同步发电机完全一致,也是VSG离网带载最突出的优势——能天然形成稳定的运行点。

离网模式有一个细节非常关键:瞬时功率计算需要滤波。直接拿瞬时电压电流乘积算出来的功率含有很多开关纹波和谐波分量,如果直接送进转自方程,频率会抖得厉害。我用的是一阶低通滤波,截止频率设在50Hz左右,既保住工频范围内的功率变化,又滤掉高频分量。滤波器时间常数别太大,否则切换过程中功率响应太慢,会拖累模式切换的动态性能。

3.2 并网模式:功率跟踪与频率支撑

并网模式下,电网是大电网,电压幅值和频率基本由电网决定,VSG从电压源变成一台“跟着电网走的发电机”。这时候VSG的参考值与离网模式有本质区别:有功参考Pref不再是负载前馈,而是我们要向电网输送的目标功率;无功参考Qref也变成目标无功指令;电压幅值和频率则交给锁相环从电网获取。

但VSG算法本身不用改,还是那套转子运动方程。并网时电网频率通过锁相环实时输入,转差率和功率差额共同决定转矩,虚拟调速器通过下垂特性把有功功率稳稳压在Pref附近。频率只要偏移1Hz以内,这种控制的并网功率响应已经很接近真实发电机了。

并网和离网两个模式之间的切换逻辑,我用的一个简单状态机:靠断路器的分合状态来切换模式标签,分闸时走离网参考,合闸时走并网参考。Simulink里可以直接用两个Gain和一个Switch搭,也可以用Stateflow做状态机,我更推荐后者,因为后续要加预同步状态、限流状态时,Stateflow维护起来更直观。

但有一点要特别注意,模式切换不能只是参考值变了就完事,还要给输出电压幅值和频率参考配一个缓慢的过渡斜坡。比如离网时频率参考是50Hz,电网重新合上后频率参考变成电网锁相值,这个差值如果直接阶跃,就会让转子方程输入转速参考跳变,电流必然冲一下。我在这里给频率参考和电压参考各加了一个速率限制器,上升速率设置在额定值的10%每秒左右,仿真波形就平滑很多。

3.3 预同步与并网时刻选择

并网断路器具不具备合闸条件,主要看三个量:电压幅值差、频率差、相位差。差得越小,合闸冲击越小。理想情况下应该在电压过零时刻合闸,但工程上很少用瞬时过零合闸,低压断路器本身也有机械动作时间,所以控制上通常依赖预同步调节,把电压差和相位差压到很小后再合。

我在模型里的预同步逻辑是这样实现的。系统通过锁相环得到电网电压的相位θg;VSG输出电压相位θv直接用调制波相位角。两者的相位差Δθ = θg - θv,把这个差值送进一个PI调节器,输出作为频率参考的修正量,加到VSG的角频率参考上,让VSG的输出相位缓慢向电网靠近。电压幅值差与预同步算法类似,用PI调节器修正VSG电压参考幅值。

具体逻辑用一个简单的比较器:相位差绝对值小于0.01rad、电压差小于5V时,输出一个“允许合闸”信号。这个信号和人工合闸指令共同作为断路器的控制输入。这样做的好处是,操作员只需要给定一个合闸意图,真正执行合闸动作要满足预同步条件,避免人为误操作或后续扩展自动并网时可以加判断条件。

并网瞬间还有一个细节:合闸时刻如果VSG和电网的瞬时电压正好同相,冲击电流是最小的。但在仿真中加入过零检测会增加模型复杂度,所以我实际采用的是“条件合闸”:只要幅值差和相位差达标,就立即合闸。仿真结果表明,只要相位差限制在0.01rad以内,冲击电流不超过额定电流的10%,完全可以接受。

离网切换(并网转离网)相对简单。电网断电后,断路器分闸,VSG立刻从并网参考切换回离网参考。此时最需要注意的是功率突变,并网时输出功率由Pref决定,离网后输出功率由负载决定,如果负载轻而Pref大,频率会快速上升。我做了一个限幅:切换瞬间频率参考以斜坡方式从50Hz过渡到离网参考值,同时让VSG阻尼系数D在切换瞬间暂时增大,相当于给频率波动多些阻尼,帮助系统快速镇定下来。

4. 仿真结果分析与典型问题

4.1 切换过程的关键波形解读

仿真工况我是这样设计的:VSG离网带10kW负载稳定运行,t=1s时电网侧断电,保持离网运行,t=1.5s时模拟电网恢复,预同步完成之后在t=1.8s左右合闸并网。整个过程的波形重点看输出电压、输出电流、有功功率和系统频率。

离网转并网的过程里,最有意思的是系统频率的响应。合闸前VSG频率在预同步作用下缓慢向电网频率靠拢,合闸瞬间几乎没有看到频率跳变,说明预同步的PI调节器工作得不错。有功功率从离网的负载功率平滑上升到并网的目标功率,没有出现大范围的功率冲击。

再看并网转离网的过程,断路器分闸前VSG输出功率有10kW输给电网,本地负载只有几个kW。分闸瞬间,由于电网不再吸收功率,全部输出功率涌向本地负载,频率有一个短暂上冲,但依靠VSG的虚拟惯量,这个频率波动大概在0.5Hz以内,而且振荡在几个周期内就衰减掉了。这就是VSG虚拟惯量最直观的体现,换成PQ控制的逆变器,这种突然甩荷的工况频率波动早就超出限值了。

波形分析上我习惯抓两个点:一是看切换瞬间有没有电流尖峰,尖峰超过1.5倍额定电流就说明切换逻辑有问题;二是看公共连接点电压有没有在切换瞬间跌落,如果电压跌落超过5%,多半是控制器切换瞬间参考值跳变,或者瞬时功率滤波器响应跟不上。

4.2 常见故障与排查技巧

这套模型跑起来之后,我陆陆续续遇到不少问题,很多都是仿真特有的坑,逐个说下。

最典型的故障是切换瞬间电流直接爆表。第一次出现时我以为预同步没起作用,后来把断路器合闸时间点拉出来跟相位差波形对比,发现锁相环在电网恢复后有一个捕捉过程,大约需要2-3个工频周期才能稳定跟踪。如果合闸指令在这几个周期之内就发出来,相位差计算值其实不准,合闸自然会产生冲击。解决办法是电网恢复后先等锁相环稳定,再做预同步判断。

第二个常见问题是代数环。用Switch切换不同控制参考时,如果后面的计算在同一个仿真步内又要用到这个切换结果,Simulink会提示存在代数环,严重时模型会卡死。我原来的模型在模式状态切换那里就遇到了这个。解法很简单,在切换逻辑和VSG方程之间插入一个Memory模块或单位延迟,把直接馈通断开,仿真立刻正常。

第三个问题是离网模式下本地负载比较轻的时候,VSG输出电压波形会出现明显的振荡纹波。排查后发现是瞬时功率滤波时间常数太大,功率计算延迟导致电压调节环发生了低频振荡。把滤波时间常数从0.1s改小到0.05s,问题解决。如果还振荡,可以适当增大阻尼系数D,减小虚拟惯量J。

第四个问题不容易发现,就是仿真求解器的步长设置。如果默认用ode45变步长,VSG这种机电耦合系统在切换瞬间容易发生步长收缩,导致波形毛毛糙糙,甚至数值发散。后来我把求解器改成固定步长的ode3或ode4,步长设为1e-5秒,整个切换过程就算稳定了。固定步长还有一个好处,就是和离散PWM控制器的采样频率对齐,结果更符合实际。

我把容易碰到的问题整理成一个速查表,方便你对号入座:

现象可能原因排查方向
合闸瞬间电流爆表预同步未完成或锁相环未稳定检查合闸指令时刻的相位差
模型卡死或仿真超慢代数环断开直通信号,加Memory/Delay
离网电压波形振荡功率滤波时间常数过大减小滤波时间常数,增大阻尼
切换后频率持续漂移下垂系数和惯量匹配不当重新计算J和D的比值
锁相环在离网时乱跳本地电压谐波或者幅值突变断开锁相环前置输入或加陷波器
合闸后功率来回摆动预同步PI参数过强降低预同步PI的比例增益

4.3 参数调优的实践经验

参数调优是这套模型能不能达到“无缝”效果的关键,我踩了很多次坑才总结出一点规律。

虚拟惯量J直接影响切换过程中的频率动态。J越大,频率变化越平缓,但动态响应变慢,而且功率振荡容易发散。我调试的经验是:先保持D不变,从小往大调J,观察离网突加负载时的频率下降程度和恢复时间,找到一个频率最低点不超过额定值5%、恢复时间在0.5s以内的值。第一次试的时候J取到0.5,频率倒是很平,但并网功率振荡了七八个周期才衰减,果断减到0.1,波形就干净了。

阻尼系数D要单独配合调整。D代表虚拟阻尼,频率偏差引起的阻尼转矩越大,振荡衰减越快。但有得就有失,D太大会让VSG在并网时表现出“太硬”的特性,有功功率对频率变化的响应不够自然。我最终取J=0.1、D=20,配合仿真波形看,突加负载频率下坠约0.3Hz,振荡2-3个周期恢复,这个动态特性已经很接近同等级柴油发电机了。

下垂系数的选择要参考微电网对一次调频调压的指标要求。有功频率下垂Kpf设0.05表示每多承担10kW功率,频率下降0.1Hz。无功电压下垂Kqc设0.001意味着每增加1kVar无功,电压幅值下降约1V。最初我按资料取了Kpf=0.02,结果离网负载加重时频率下降了0.6Hz,超出了国标里离网频率允许偏差的常见要求,所以调成0.05以后才达标。这个参数跟机组容量是强相关的,如果换台50kW的变流器,下垂系数要按同样的比例关系重新算。

预同步PI参数不少人会忽视,其实它对并网瞬间的平顺度影响很大。比例系数太大会导致相位调节过冲,VSG频率围绕电网频率来回摆,迟迟满足不了相位差小于阈值的条件;太小又让预同步过程拖得很长,电网恢复后迟迟合不上闸。我的调法是一个经验值:先给一个较小的比例系数如0.5,观察相位差收敛速度,再逐步增大,直到既能快速收敛又不会过冲为止。最终用kp_ps=1、ki_ps=10,实测0.3s内相位差从20度收敛到0.5度以内。

电压外环和电流内环的参数看起来没有功率环那么敏感,但不要再忽视它在切换时的作用。电压环如果带宽太低,切换瞬间电压参考小幅跳变就会产生很长的调节过程;电流环的限幅对切换瞬间电流保护很关键。我把电压环PI的限幅设成电流参考的上限,电流环输出限幅设成调制波上限的1.1倍,起到了软限流作用,即使预同步极端条件下出了点问题,电流冲击也压得下来。

另外强烈建议在仿真模型里加一个录制模块,负责把每一轮仿真的电压、电流、功率数据自动保存成MAT文件。调参的时候不用每次都盯着Scope看波形,跑完一组参数直接对比数据,效率会高很多。我用一个简单的初始化脚本批量循环跑几十组参数组合,让MATLAB自动记录切换瞬间电流峰值和频率最大偏差,再从中挑一组最小的组合。这个批量扫参的方法,比手工来回试参数靠谱得多。

最后的实践经验总结

这套VSG离并网无缝切换模型,从最初连波形都跑不稳,到后来能在几百组参数里稳定复现无缝切换,我花的最多时间不在代码和模型搭建上,而是在调试“切换瞬间”那几百毫秒的动态过程。现在回头看,最值得重视的几件事是:预同步和锁相环一定要分开调试、切换逻辑和功率计算之间一定要加延迟断环、固定步长求解器虽然慢一点但波形可靠。如果你打算在自己的课题或者项目里复现这套模型,我的建议是先照着这个框架把离网带载跑稳,再测试并网功率跟踪,最后再去调离并网切换的细节。

最后再分享一个小技巧:仿真模型里设一个“预同步完成”信号作为断路器合闸的条件,调试的时候把这个信号引到Scope上,和合闸指令放在一起看时序,几乎所有并网冲击问题都能一眼定位。别问我为什么知道,都是被波形冲出来的经验。

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

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

立即咨询