ARTICLE DETAIL

资讯详情

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

虚拟同步发电机无缝切换控制及MATLAB/Simulink仿真实现

虚拟同步发电机无缝切换控制及MATLAB/Simulink仿真实现 前阵子接了一个微电网方向的仿真任务甲方反复强调一个需求虚拟同步发电机VSG在离网和并网之间切换的时候能不能做到“无缝”。说白了就是不能让负载感觉到电源换了个工作方式不能大电流冲击不能电压跌落闪断不能频率振荡半天才稳下来。用MATLAB/Simulink把这套东西搭出来前前后后踩了不少坑把整个模型从原理到参数再到切换逻辑完整梳理一遍给后面做微电网控制或者写储能并网方向论文的朋友一个可以直接参照的样本。这篇内容围绕一个核心VSG控制下的三相逆变器模型在MATLAB/Simulink里如何实现离网转并网、并网转离网的平滑过渡。适合正在做新能源并网控制、微电网仿真课题的研究生也适合刚接触VSG想搞懂切换机理的工程师。我尽量把公式、参数、仿真时序都写具体让你照着搭能跑出差不多的波形。1. 项目背景与“无缝切换”到底难在哪1.1 虚拟同步发电机解决的是“惯量缺失”问题传统电力系统里同步发电机的转子本身就是个巨大的储能飞轮。负荷波动的时候转子转速不会瞬间突变而是靠着机械惯量缓慢释放或吸收能量给频率调整争取时间。但光伏、储能这些逆变器接入电网时直流侧到交流侧是通过电力电子器件快速控制的输出功率响应速度是毫秒级几乎没有任何惯性。大量逆变器替代同步机之后电网的频率特性会变差一点扰动频率波动就很大。虚拟同步发电机就是让逆变器在控制算法层面模拟同步机的转子运动方程。它把“虚拟惯量”和“阻尼”写进控制环让逆变器对外呈现出一个类似同步发电机的机电特性。这样一来离网模式下它能自己撑起电压和频率建孤岛并网模式下又能参与一次调频、提供惯量支撑这是PQ控制和V/f控制都做不到的。1.2 “无缝切换”的真正难点是控制模式突变并网和离网这两种运行方式本质上对逆变器的控制要求是矛盾的。并网时电网把电压和频率钳制住了逆变器不能硬顶着电网电压输出否则会形成巨大的环流所以需要跟网型控制输出功率可调离网时没有电网给它做参考逆变器必须自己建立电压和频率也就是构网型控制这时候它是电压源。传统方案是并网用PQ控制离网切到V/f控制。两种控制器结构完全不同切换的时候PI参数、参考值、反馈通道全变了必然导致输出电压、电流的暂态冲击。VSG天生是构网型电压源控制并网时靠着下垂特性又具备跟网能力不需要更换控制器这就从原理上降低了切换难度。但“天然适合”不代表“自动无缝”具体实现时预同步、相位连续性、积分器状态这些问题处理不好依然会炸。2. VSG控制原理把这些方程放进Simulink2.1 转子运动方程与虚拟惯量VSG的核心是转子运动方程我用标幺化的形式写Simulink里也建议这么搭2H·dω_pu/dt P_ref_pu - P_e_pu - D_pu·(ω_pu - ω_n_pu)其中H是虚拟惯量时间常数单位是秒它决定了系统频率变化的快慢D_pu是阻尼系数反映功率差额对频率偏差的静态关系P_ref_pu是有功功率参考值P_e_pu是实测输出电磁功率。这个方程左边是惯性项右边第一个括号是有功差额第二项是频率偏差产生的阻尼功率。稳态时等式左边为0输出功率会自然地停在参考值减去阻尼功率的位置。实际建模时P_e_pu是从输出端测量的三相瞬时功率低通滤波后得到的。低通滤波的截止频率需要注意一般取基波频率的1/2到1/10也就是5到25Hz太大了功率纹波会影响频率控制太小了响应迟钝。2.2 有功-频率下垂与无功-电压下垂当VSG独立带载运行时负载功率突然增加发电功率不变就会导致频率下降。转子运动方程里的阻尼项D_pu起到了有功-频率下垂的作用频率偏差越大VSG输出的有功功率偏离参考值越多这正是同步机的一次调频特性。无功-电压关系用另一条下垂方程E_pu E_ref_pu n_q_pu·(Q_ref_pu - Q_e_pu)这里E是输出电压幅值参考Q_ref是无功功率参考Q_e是实测无功功率n_q是无功-电压下垂系数。励磁电流增大时同步机端电压会变化VSG用这个方程模拟了同样的行为。如果负载无功增加输出无功Q_e变大电压E就下降下降的程度由n_q决定。这两条下垂方程加上转子运动方程就把VSG变成了一个既带惯性又带调压特性的受控电压源。电压幅值E和相位θ频率积分合成三相参考电压送进电压电流双闭环最后驱动PWM调制。2.3 跟网型与构网型在VSG里的统一并网以后问题就微妙了。VSG输出端被电网电压钳制它的频率不会完全自由地随功率差额变化而是会跟电网“同步”有点像两台发电机通过母线并联。这时候转子运动方程仍然在运算但电网的强支撑作用使得ω_pu被拉向电网频率P_e_pu则由系统潮流自然决定。换句话说VSG并不需要切换到另一套控制逻辑只需要处理好外部断路器的开闭和预同步问题。离网时VSG作为唯一电压源运行仍然使用同一套方程只是没有电网给频率兜底输出功率完全由本地负载决定。这个统一性是VSG能做无缝切换的底层原因。3. MATLAB/Simulink模型搭建全过程3.1 顶层架构与模块清单整套模型我用MATLAB R2023aSimulink配合Simscape Electrical库搭的。顶层分成主电路、测量、控制和保护逻辑四块。主电路侧需要直流电压源、三相全桥逆变器、LC滤波器、本地负载、三相电网电源、三相断路器。逆变器用Universal Bridge模块开关管选IGBT断路器用Three-Phase Breaker初始状态设成打开对应离网运行。控制侧需要ABC/dq坐标变换、瞬时功率计算、低通滤波器、VSG主体方程、电压电流双闭环、PWM发生器、SRF-PLL锁相环、预同步控制器、模式切换逻辑。我习惯把VSG主体打包成一个子系统输入是P_ref、Q_ref、实测功率、电网相位、预同步修正量输出是三相参考电圧。这样模块边界清楚调试时哪里出了问题一眼就能找到。3.2 主电路参数怎么定我用的是一套10kVA系统参数额定线电压380V频率50Hz直流母线电压750V。滤波电感取3mH滤波电容取10μFLC谐振频率算出来约919Hz。开关频率设10kHz谐振频率约为开关频率的1/11这个比例可以保证高频纹波衰减又不至于让谐振峰靠基波太近。电感的选取还要校核电压降。额定电流大概15.2A电感基波压降约14.3V占相电压220V的6.5%在常规5%到10%的推荐区间内。电容的容性无功在50Hz下约0.35kvar小于额定容量的5%符合工程习惯。逆变器直流电压和调制方式有关。用SVPWM最高可以输出大约577V的线电压留出滤波器压降余量之后750V直流侧给380V交流侧供电是合适的。如果你是自己设计MCU相关参数还要注意直流电压利用率的问题但仿真里直接用理想直流源就可以。3.3 电压电流双闭环与PWM生成VSG出来的参考电压不是直接给PWM的电压环输出作为电流环的参考电流环输出作为调制电压。这套双闭环的不要省因为逆变器出口电压会受到负载和滤波电容充放电的影响没有闭环稳压离网时电压波纹会很大。电压外环PI参数设计我按带宽法估算。电流内环带宽取开关频率的1/10大约1kHz电流环PI参数按L和R计算比例项主要克服电感惯性积分项消除稳态误差。电压外环带宽取100到200Hz按C计算。给定初始参数后要在仿真里看阶跃响应微调比例系数太大容易振荡太小恢复慢。电压电流环都在dq坐标系下做所以Park变换后d轴和q轴分别有独立的PI调节器。调制信号经过反Park变换成三相正弦波进PWM发生器。SVPWM模块Simulink里现成的不要自己去写空间矢量算法除非你想研究调制的细节。3.4 预同步模块从PLL锁相到自动同期离网转并网之前断路器两端是带电的一端是电网一端是VSG。直接合闸的后果就是两个电压源硬并联相位不一致时会有很大的冲击电流仿真里你会看到电流波形直接顶到几十倍额定值实际系统里这已经触发保护跳闸甚至烧开关了。所以必须先做预同步。预同步要满足三个条件频率一致、幅值一致、相位一致。频率一致通过锁相环获取电网频率把VSG的频率参考值往电网频率上拉幅值一致通过调节电压参考幅值跟踪电网幅值相位一致是最严格的条件因为电网相位是实时变化的断路器两端相位差必须小于一定角度才能合闸。模型里我用SRF-PLL锁电网电压相位得到θ_grid。同时从VSG内部提取虚拟电角度θ_vsg两个角度做差差值经过一个PI调节器产生频率修正量叠加到VSG的角频率上。这样VSG的相位就会逐渐向电网相位收敛。仿真里观察相位差信号调到0.005rad以内约0.3度就可以发合闸指令。幅值预同步也做了PI修正把电网电压幅值和VSG输出电压幅值做差修正量加到电压参考上。注意合闸成功后要慢慢撤掉这两个修正量避免并网后预同步和下垂控制打架。3.5 切换控制逻辑一个状态函数搞定切换逻辑我用了一个MATLAB Function模块输入有外部指令mode_cmd、预同步完成标志pre_done、当前模式mode输出断路器控制信号、预同步使能、模式更新。核心逻辑用数字状态机描述function [brk, pre, mode] switch_ctrl(mode_cmd, pre_done, mode_old) % mode: 0离网, 1并网 % brk: 0断开, 1闭合 persistent state if isempty(state) state 0; end switch state case 0 % 离网运行 brk 0; pre 0; if mode_cmd 1 pre_done 1 state 1; % 合闸并网 end case 1 % 并网运行 brk 1; pre 0; if mode_cmd 0 state 2; % 先转离网 end case 2 % 离网过渡 brk 0; pre 0; state 0; % 回到离网稳态 end mode state; end这里最关键的一点是预同步使能不只在离转并阶段开启并转离完成后如果还要并网需要重新预同步因为离网运行一段时间后VSG相位和电网相位又会跑偏。所以状态机里离网状态要允许预同步使能我的简化写法里预同步使能是放在外层逻辑配合的实际模型建议把pre信号在状态0时设为mode_cmd这一点不要照抄上面的简化代码。我自己的实现是把pre_sync_enable单独做成一个使能信号拉高后开始预同步计时一定时间内相位差满足条件就置位pre_done然后状态机才允许合闸。4. 关键参数表与仿真结果解读4.1 一套能直接用的初始参数以下是我调试最终定型的一套参数10kVA系统可以直接用其他容量可以按基准值折算。参数数值说明直流母线电压750 VIGBT逆变器直流侧额定线电压380 V三相输出额定频率50 Hz电网与VSG额定频率滤波电感3 mH逆变器出口滤波电容10 μF滤波电容星形连接开关频率10 kHzPWM载波虚拟惯量H2 s惯性时间常数阻尼系数D20 pu标幺化阻尼电流环KP/KI3.5 / 60初始值按实际微调电压环KP/KI0.8 / 25初始值按实际微调预同步PIKP50, KI300相位环收敛速度较快断路器相角阈值0.005 rad约0.3度虚拟惯量H的取值影响很大。H2s时频率变化比较柔和但恢复过程也慢H减小到0.5s频率响应快了但切换瞬间的尖峰更大。阻尼系数D主要影响振荡衰减D太大会造成静态频率偏差变大D太小功率会来回摆。二者要配合着调不是孤立的。4.2 离网运行阶段的波形特征仿真时序我设计成0到0.3秒离网带载运行0.3秒启动预同步0.5秒合闸并网1.0秒断开电网模拟离网切换之后一直运行到1.5秒。离网阶段本地负载10kW、2kvarVSG独立供电。电压波形稳定在额定值附近频率约50Hz因为阻尼项的存在实际频率比额定值略高一点点这是下垂特性的正常现象。负载突变时比如0.1秒把负载从10kW跳到15kW频率会短暂下降然后恢复幅度取决于虚拟惯量。4.3 离转并过程的预同步与合闸0.3秒预同步启动后观察断路器两端相位差信号会发现从初始的某个角度逐渐收敛大概0.15到0.2秒后进入0.005rad以内。此时幅值差也收敛到1%以内预同步完成标志置1。0.5秒合闸输出电流波形应当看不到明显的冲击尖峰。我调试到最好的一组结果里合闸瞬间电流只出现了约1.2倍额定值的轻微波动之后在一个工频周期内恢复平稳。如果你看到的电流尖峰在2倍以上先别怀疑主电路参数回到预同步环节检查相位差收敛条件是不是真的满足了。4.4 并转离过程的电压支撑1.0秒断路器断开系统转为离网运行。这里考察的是VSG能不能在失去电网后继续保持供电。仿真里本地负载还挂着VSG会立刻承担全部功率由于转子运动方程的惯性作用频率会有小幅跌落但会在阻尼作用下重新回到稳态。我调整D_pu之后得到的波形频率最多下降了0.15Hz大约300ms内恢复输出电压幅值几乎没有看见明显跌落。如果出现电压大幅下降问题一般出在电压环PI的积分状态被重置或者模式切换时把电压参考切断了切记离转并、并转离都不要重置电压环和电流环的积分器。5. 常见问题排查与避坑速查5.1 合闸瞬间冲击电流偏大冲击电流大90%的原因不是参数不好而是预同步没做完。仿真里看合闸瞬间的三相电流波形如果出现几十倍额定的尖峰基本可以断定断路器两端电压幅值差或相位差不满足要求。先检查预同步使能有没有真的拉高再检查相位差PI参数相位差PI增益太小的话收敛速度跟不上预设的合闸时刻合闸指令发出时相位差还有好几度。还有一种情况预同步信号是拉高了但VSG内部参考角度还是自己积分出来的修正量没有真正作用到频率给定回路。这种问题常见于用常数替代了VSG内部的频率输入修正量加不进去。排查时把相位差、修正量这两个信号同时拉出来看一眼就能定位。5.2 并转离之后频率振荡频率振荡或来回波动核心原因是虚拟惯量H和阻尼D配合不匹配。你可以用二阶系统类比H相当于质量D相当于阻尼比。质量大、阻尼小系统就会低频振荡质量小、阻尼大恢复快但抗扰动能力差。我调试的经验是先把D固定从1增加到50观察频率恢复曲线的超调量找到超调量在10%左右的D再固定D调H使频率变化率在可接受范围。这两个参数反复迭代一般半小时能出比较满意的结果。这里面还有个容易被忽略的点功率测量低通滤波器的截止频率也会影响等效阻尼滤波器太慢相当于在反馈回路里加了延迟会让系统变得更容易振荡。5.3 仿真速度慢、代数环和数值不收敛仿真速度慢是电力电子模型的常态10kHz开关频率下固定步长解算器步长至少要1e-6秒仿真1.5秒物理时间需要跑将近一个小时的都有。我的建议是前期调参数用平均模型把IGBT换成平均值模型开关频率的纹波看不见但VSG低频特性完全一样步长可以放宽到1e-4秒一分钟内就能跑完一次。控制方案定型后再换回开关模型出最终波形。代数环是另一个高频问题。VSG内部功率计算出来之后立刻用于计算参考电压参考电压又反过来影响功率中间没有延迟的话Simulink就会报代数环。解决方法是功率信号经过低通滤波器后已经带了一阶惯性但有些路径还是会形成代数环这时候在反馈回路加一个Memory模块或者离散延时破坏直通即可。注意延迟时间不能太大否则影响控制相位。5.4 PLL锁相不稳预同步依赖PLLPLL给出的相位不准预同步就无从谈起。电网电压谐波或者畸变较大的情况下SRF-PLL会带进波动锁相结果也不干净。仿真里电网电压是理想源一般没事但如果接的非线性负载造成电压畸变就要在PLL的Park变换输出上加低通滤波或者改用DSOGI-PLL工程里这类增强型PLL更稳。6. 实操心得与后续扩展我最初搭这套模型时走了不少弯路最大的体会是不要想着一次把切换全做好。先搭一个最简的VSG离网模型纯电阻负载能稳住了再加并网并网稳态能跑了最后才做预同步和切换逻辑。每加一块就验证一块模块之间的问题就不会纠缠在一起。另一条经验是关于“无缝”的理解。真正意义上的无缝核心不在断路器动作那一刻的时序有多精确而在于控制器的状态连续性。离转并之前做充分的预同步并转离之后不要重置任何积分器参考电压的逻辑不要突变只是改变外部断路器的状态让VSG自己依靠功率平衡去适应。这就像两个人一起走路强行换人是容易摔倒的但如果另一个人提前并排、调整步幅和节奏脏活就发生在不知不觉中。这套模型后续可以扩展的方向不少。加上孤岛检测模块用电压幅值和频率的变化率判断是否脱网自动触发并转离就能做成真正的离网并网自动切换仿真。进一步还可以把单台VSG扩展到两台VSG并联用来研究微网内多机功率分配。界层再往外走就是控制器硬件在环测试了把控制算法部署到实际控制器里仿真主电路部分留在实时仿真机里这就离工程落地不远了。如果你也打算搭这个模型我建议从最朴素的三相逆变器模型开始一步步往VSG上叠加控制别一上来就套完整的大模型后面出了问题会非常难排查。
返回列表