尧图精选

虚拟同步发电机VSG离网并网无缝切换仿真:预同步控制与Simulink实现

🕒 发布时间:2026/9/9 17:40:15 📁 来源:尧图网络
开头先聊一个我印象特别深的场景好几年前第一次做微网仿真搭了个逆变器带本地负载离网运行要切到并网模式。我当时图省事没有做任何预处理直接在工频参考点把开关合上。结果电流波形瞬间炸成一团峰值直接冲到负载额定电流的五六倍逆变器模型当场仿真发散。那次之后我学乖了凡是涉及离网与并网之间切换的都必须认真对待一个技术点——预同步控制而把预同步控制、惯量支撑、频率和电压调节结合得最自然的方案就是虚拟同步发电机VSGVirtual Synchronous Generator。VSG这个方向这几年在微电网、储能变流器、分布式光伏并网这些场景里非常热核心思路其实很朴素让电力电子变流器不光是跟着电网跑或者按给定功率输出而是像一台真实的同步发电机那样自带转动惯量和阻尼在频率扰动和电压扰动下表现出类似物理机组的惯性响应。配合MATLAB/Simulink做仿真验证可以非常直观地看到离网带载、并网预同步、切换瞬间的波形变化把无缝切换这个工程需求变成看得见、算得清的设计过程。这篇文章我会把一个完整的VSG离网并网无缝切换仿真模型拆开讲。内容适合正在做微电网控制、储能系统仿真或者刚接触VSG想快速把模型跑起来的同学。你会看到一套从主电路到控制回路、从同步发电机方程到Simulink模块的实现路径也会看到我在调参和调试切换逻辑时踩过的坑以及最终整定出来的参数规律。1. 微电网里缺的那块铁疙瘩为什么逆变器要学同步发电机先解释一下VSG到底在解决什么问题。传统逆变器并网控制一般用PQ控制功率外环加电流内环响应非常快毫秒级就能完成功率调节。这本来是优点但在弱电网和高渗透率可再生能源场景下变成了缺点系统里缺少旋转惯性和阻尼电网频率一旦被扰动电力电子设备不能像传统机组那样扛一下整个系统的频率变化率RoCoF会很高严重时直接触发保护动作。同步发电机为什么天然能扛因为转子是物理存在的铁疙瘩。电网频率波动时转子通过电磁转矩和机械转矩之间的不平衡自动吸收或释放动能表现为频率变化被缓了一拍。这个缓冲的强弱用惯性时间常数H或者转动惯量J来描述另外还有阻尼绕组和励磁系统提供的阻尼效应。VSG的思路就是用控制算法把这两个物理特性模拟出来让变流器在电网看来像一台接口特性接近同步机的小型电源。具体到控制框图VSG最核心的模块就是转子运动方程。它输出的是虚拟角频率和虚拟功角然后通过幅值控制给出电压指令再交给电压电流双闭环和PWM调制去执行。相比传统的下垂控制VSG多了一阶惯性环节所以动态响应更平缓切换和扰动时的冲击更小。这个多一阶惯性听起来简单但工程价值极大。做离网并网无缝切换时下垂控制也能做预同步但切换瞬间功率振荡往往比VSG明显。原因在于下垂控制本质上是静态特性没有惯性缓冲相位和频率的突变会直接反映在功率上。VSG因为有转动惯量的存在切换时的功率冲击被显著削平这是它成为无缝切换主流方案的根本原因。接下来我会沿着同步发电机方程 → 控制框图 → Simulink模型 → 预同步与切换逻辑 → 参数整定这条路径展开每一步都会给出可复现的模块设置和参数建议。2. VSG控制环搭建从同步发电机方程到Simulink控制框图2.1 转子运动方程VSG的心脏VSG算法中所有虚拟惯性和虚拟阻尼的物理含义都来自转子运动方程标准形式如下J * dω/dt Pm/ω - Pe/ω - D * (ω - ωg)其中Pm是机械功率对应VSG的有功功率给定Pe是电磁功率对应输出有功功率实测D是阻尼系数ωg是电网角频率离网时为额定频率ω是VSG输出的虚拟角频率。这个方程在Simulink里非常好实现左边是惯量项右边是功率不平衡量减去阻尼项。式子说白了就是功率不平衡 → 转速变化和同步机物理过程一模一样。你可以用积分模块搭建输入1Pm有功功率给定输入2Pe逆变器输出有功功率通过瞬时功率计算得到增益模块1/J分子反映功率差额对频率变化率的影响阻尼项D * (ω - ωg)频率偏离越大阻尼越大输出ω再积分一次得到虚拟功角θ我习惯用状态方程模块或者单纯的Integrator模块搭不用S-Function方便逐步查错。J的单位是kg·m²但仿真中直接取标幺值即可比如J0.5左右已经能提供非常明显的惯性效应。注意1/J增益放大会让响应变快但振动也变大后面参数整定部分会细说。2.2 有功-频率控制环把功率指令变成虚拟转速有功-频率控制环的目的是让VSG具备一次调频能力结构上是在转子运动方程外面加一层下垂特性。标准做法是Pm Pref Kp * (ωref - ω)其中Kp是有功-频率下垂系数单位是W/Hz或者标幺值。用户给的功率指令Pref是基准频率偏差通过Kp缩放后叠加模拟同步机的调速器效果。在Simulink中这一环就是几个数学运算模块的事。建议直接用Rate Limiter限制Pm的变化速率避免阶跃指令直接冲击转子方程。我实测发现把Pm变化率限制在额定功率的20%/s左右既不影响响应速度又能明显减小切换瞬间的功率超调。2.3 无功-电压控制环虚拟励磁系统的作用无功-电压环负责调节机端电压和无功功率模拟同步发电机的励磁调节器。类似于有功环表达式为E E0 Kq * (Qref - Q) Kv * (Vref - V)其中E是虚拟励磁电动势幅值E0是空载电动势Qref和Q分别是有功无功参考值和实测值Vref和V是电压参考值和机端电压实测值Kq是无功-电压下垂系数Kv是电压调节系数。实现时建议参考电压Vref取自二次调压的给定电压实测V取滤波器电容电压的幅值。积分环节加限幅是常见的做法可以让电压调节有类似励磁惯性的缓冲也防止启动瞬间电压指令跑飞。这部分输出最后会和VSG的相位θ结合成三相调制波参考值Va E * sin(θ)Vb E * sin(θ - 120°)Vc E * sin(θ 120°)2.4 电压电流双闭环保证波形和限流能力VSG算法输出的是电压指令不是直接给PWM的占空比。为了让输出波形质量好、限流能力强一般会在后面加电压外环和电流内环。电压外环对LC滤波器的电容电压做闭环PI调节器输出电流指令电流内环对电感电流做闭环PI调节器输出调制波电压外环带宽通常取1~2kHz电流内环带宽取5~10kHz二者相差一个数量级避免环路之间相互干扰。电压环中加入负载电流前馈可以提升带载时的动态响应电流环中限幅是必须的防止切换瞬间出现过流指令。具体到Simulink实现我建议在dq坐标系下做PI控制Park变换和反Park变换用自带的abc_to_dq0模块锁相环用于并网时定向离网时用VSG自己产生的θ做定向即可。这里有个容易踩的坑离网和并网模式下dq变换的参考角来源不同必须做好切换否则控制环会因坐标突变直接发散。我后面在切换逻辑部分会给出具体方案。3. Simulink模型整体搭建从主电路到控制子系统的布局3.1 主电路选型与参数给法Simulink里做VSG仿真主电路建议采用三相两电平VSC直流侧用理想直流源或电池模型交流侧接LC滤波器再经过隔离变压器和断路器接入电网。断路器用Three-Phase Breaker模块一只放在滤波器与本地负载之间另一只放在公共耦合点PCC与电网之间用于离网/并网模式切换。我这里用的典型参数如下参数数值说明直流电压800 V理想直流源方便先验证算法额定有功10 kW三相功率基准额定无功0 kVar初始无功给0滤波器电感3 mH含线路电感LCL设计时需另行折算滤波器电容50 μF星形连接注意谐振频率开关频率10 kHzPWM载波电网电压幅值311 V单相峰值线电压有效值380V电网频率50 Hz工频建主电路时注意Three-Phase Breaker的控制端口给的是逻辑信号不是Simulink的物理开关信号。切换逻辑的输出要用布尔信号或double信号驱动它。我给breaker控制端接的逻辑是1代表闭合并网0代表断开离网。离网时逆变器独立带本地负载并网时本地负载和电网并联供电。3.2 控制子系统划分功率计算、VSG算法、双闭环、PWM整套控制我习惯分成四个子系统这样调试时能单独看每个环节的信号功率计算子系统采集三相电压电流用瞬时功率公式计算P和Q。有功P vaiavbibvcic无功Q用Clark变换后的vqid-vd*iq或瞬时无功公式计算。注意滤波用一阶低通把功率波动滤平截止频率一般取50~100Hz太低了动态响应慢太高了谐波进入VSG算法造成抖动。VSG算法子系统包含转子运动方程、有功-频率下垂、无功-电压下垂、虚拟阻抗可选。输入是Pref、Qref、Vref、Pe、Qe、ωg。输出是θ和E。这里我习惯把θ给一个单独的变量名方便后续调试看PLL和VSG角度差。双闭环子系统接收θ和E生成三相调制波参考值经过dq坐标变换后与电容电压、电感电流反馈比较得到调制比再输出给PWM发生器。PI调节器的限幅值要设置好电压环输出限幅决定最大电流指令电流环输出限幅决定最大调制比。PWM子系统用自带的三相两电平PWM发生器载波频率设10kHz调制波输入范围0~1。如果用的是PWM Generator (Three-Phase, Two-Level)记得把模式设为Unipolar或Bipolar然后输出给Universal Bridge的gate端。控制子系统内部信号要统一用标幺值还是实际值我的建议是主电路用实际值控制算法里尽量标幺化。因为在标幺值下J、D、下垂系数这些参数不会随功率等级变化换参数时不容易出错。比如有功功率基准取10kW电压基准取311V电流基准则根据功率和电压反算。3.3 仿真求解器与步长设置VSG仿真涉及PWM高频开关和惯性环节solver设置很关键。我长期用的配置是求解器ode23tb或ode15s两者都适合刚性系统。PWM开关电路属于典型的刚性系统用固定步长反而容易收敛慢或发散。最大步长1e-5秒。如果太大会丢失PWM细节波形毛刺明显如果太小仿真速度太慢。相对误差1e-4绝对误差1e-6。如果希望仿真速度更快可以把PWM载波频率降到5kHz最大步长放宽到2e-5。但切换瞬间的电流冲击可能被低估所以做对比实验时尽量固定步长设置。还有一个细节断路器本身有内部缓冲电路切换时刻容易产生数值振荡。建议加一个小电阻Snubber阻值1e6Ω即可避免断路器断开瞬间电压突变导致仿真失败。4. 无缝切换的关键预同步控制与切换逻辑设计4.1 直接合闸的惨痛教训差多少冲击有多大先定量说明为什么不能直接合闸。假设离网运行时VSG带载频率为ω_vsg电网频率为ω_grid两者之间存在一定偏差导致相位角差θ_err随时间变化θ_err(t) θ_vsg(t) - θ_grid(t) ∫(ω_vsg - ω_grid)dt θ_err0如果θ_err不为0就合闸断路器两端电压差为ΔV ≈ V_vsg - V_grid ≈ 2 * V_m * sin(θ_err/2)当θ_err接近180度时ΔV接近两倍电压幅值冲击电流可能达到额定电流的10倍以上。即使相位差只有几度合闸瞬间的电压差也会产生高频的浪涌电流对断路器和滤波器都是考验。幅值差也不可忽视。如果VSG输出电压幅值和电网不一致合闸瞬间会产生无功冲击可能导致无功环振荡。所以预同步要做三件事频率同步、相位同步、幅值同步。4.2 三相软件锁相环离网/并网切换的眼睛实现预同步的前提是能测量电网电压的角度和幅值。Simulink里我推荐用自带的三相PLL模块PLL (3ph)或者自己搭SRF-PLL。前者方便但带宽固定后者可以灵活调PI参数。SRF-PLL的s域结构是这样的电网三相电压做Clark和Park变换到dq坐标系q轴电压跟0作比较PI调节器输出角频率修正量再积分得到锁相角。PI参数通过带宽法设计带宽取20~50Hz阻尼比取0.707。带宽太高会引入电网谐波太低跟踪速度慢。在VSG预同步中PLL输出的角度θ_pll和VSG输出角度θ_vsg直接做差得到相位误差信号这个信号就是后面预同步控制环的输入。4.3 预同步控制环频率、相位、幅值一起对准预同步的目标是让VSG机端电压和电网电压满足幅值相等、频率相等、相位相等实际工程中通过三个小闭环实现频率预同步把VSG的频率参考值修正为ω_ref ω_pll Δω。其中Δω由PI调节器调节输入是相位误差θ_err。这个环的作用是逐渐让VSG和电网同频最终让相位差不再增大。相位预同步在有功-频率环的输入中叠加一个相位修正量。可以通过修改Pm或直接修改ω指令。PI输出限幅一般取额定频率的2~3%防止修正过快导致频率波动。幅值预同步把电压幅值参考值修正为V_ref V_pll ΔV。其中ΔV由PI调节器调节输入是电压幅值差。幅值修正的响应可以稍慢因为幅值差造成的冲击通常没有相位差严重。在Simulink里预同步算法可以做成一个单独子系统用一个Enable开关控制是否启用。离网运行时不启用发出并网指令后启用相位差接近零时切除预同步逻辑同时断路器合闸。这里合闸判断建议设置一个滞回窗口比如相位差小于0.5°且电压差小于2%且频率差小于0.02Hz连续保持3个工频周期才能合闸避免噪声造成误动作。4.4 切换逻辑状态机思路别用一锤子信号把离网和并网看作两个工作模式中间加一个预同步过渡态。我习惯用Stateflow或者简单的逻辑判别做切换状态0离网运行VSG独立带载 状态1预同步过程检测到并网指令启用预同步 状态2并网运行断路器闭合VSG输出并联到电网 状态3预脱网收到离网指令断网后VSG转入独立带载状态转移条件状态0→状态1收到并网指令且PLL正常锁定状态1→状态2相位差、幅值差、频率差均在允许范围内状态2→状态3收到离网指令状态3→状态0断路器完全断开且本地电压重建完成如果不用Stateflow用逻辑运算模块也能实现。但要注意离网转并网时断路器合闸指令要滞后于预同步完成指令延时5~10ms保证VSG输出在稳定状态才合闸并网转离网时先断开断路器再切双闭环参考避免在并网状态下瞬间切参考导致功率突变。4.5 离网转并网和并网转离网的不对称性实际调试中发现两种方向的切换难度不一样。离网转并网因为要过预同步只要预同步参数合适冲击电流一般能控制在额定电流的10%以内。并网转离网看似简单——直接断开断路器就行但断开后VSG要在1~2ms内接管本地负载的全部功率。如果并网时VSG输出功率只有2kW而本地负载需要8kW断开瞬间功率缺额会让VSG频率下跌。解决思路是让并网模式下始终保留一定的本地负载功率给VSG承担比如空载或轻载这样离网瞬间功率阶跃小。或者给VSG算法加一个功率前馈补偿收到离网指令时把本地负载功率值直接叠加到Pm参考上让转子方程提前预感到功率需求。这个做法我实测有效频率跌落幅度可以减少一个数量级。5. 参数整定与仿真调试惯量、阻尼、预同步系数怎么配合5.1 转动惯量J和阻尼系数D的配合逻辑J和D不是瞎给的它们决定了VSG的振荡频率和阻尼比。把转子运动方程在额定运行点附近线性化可以得到二阶系统d²Δθ/dt² (D/J) * dΔθ/dt (Kp/J) * Δθ 0其中Δθ是功角偏差Kp是有功-频率下垂系数。对应自然振荡频率ωn sqrt(Kp/J)阻尼比ζ D / (2 * sqrt(Kp * J))从这个表达式能看出J增大 → ωn降低振荡周期变长频率响应变慢D增大 → 阻尼增大超调减小但响应变慢Kp增大 → 响应加快但阻尼比变小容易振荡经验取值范围Kp取有功功率标幺值除以频率标幺值一般在20~50之间J取0.5~2对应惯性时间常数0.5~2秒D取10~20。初调时J取1D取20Kp取50然后观察有功功率阶跃响应超调大就增大D响应太慢就减小J。5.2 预同步PI参数的整定顺序预同步PI参数整定有个关键经验先调相位环再调幅值环频率环一般跟着相位环走。以相位环PI为例把目标设为相位误差在0.05s内衰减到0.1°以内。PI参数初取Kp2Ki20观察θ_err波形。如果θ_err缓慢爬行说明Ki太小如果θ_err在0附近振荡说明Kp太大。收敛速度取决于Ki震荡抑制取决于Kp最终我整定出来的一组参数是Kp5Ki50限幅±0.05 rad。幅值环PI响应可以稍慢Kp0.5Ki5限幅±10V。相位修正和幅值修正同时作用时要注意避免两个环路互相干扰——先等相位差收敛再观察幅值差。5.3 双闭环PI初值用工程整定法不用试凑电压环和电流环的PI参数可以用零极点对消整定。电流内环被控对象近似为L/R一阶惯性取电流环带宽5000rad/s则Ki_ci / Kp_ci R/LKp_ci L * ωc / (Kpwm * Kfb)其中Kpwm是PWM增益Kfb是电流反馈系数。电压环带宽取电流环的1/5~1/10同样方法算。实际仿真中这种整定方法给出的初值基本能锁定系统微调幅度很小。我把算好的参数列个表控制器KpKi限幅电压环2.5300电流指令限幅30A电流环5.0500调制比限幅0.95频率预同步2.0归一型20频率修正±0.5rad/s相位预同步5.0归一型50相位修正±0.05rad幅值预同步0.5归一型5幅值修正±10V5.4 Simulink调试经验从波形到参数反推调试顺序建议是先做离网阶跃负载测试确保VSG频率和电压稳定再做并网模式稳态测试确保PQ跟踪正确最后做预同步和切换测试这一步必须打开示波器看关键信号。我每次调切换时必看的几个波形θ_errVSG角度与PLL角度差切换前应趋于0ΔV幅值差切换前应趋于0断路器两侧电压波形合闸瞬间应无明显跳变三相电流波形合闸后几个周期内不应出现尖峰VSG输出功率切换瞬间功率波动应控制在20%以内如果切换时电流出现尖峰优先看θ_err是不是有毛刺。很多时候是因为PLL在预同步期间跟踪不稳导致相位差信号抖动。解决方法是降低PLL带宽、加滤波或者在θ_err进入滞回窗口后才发合闸指令。6. 仿真结果判读与典型问题排查6.1 理想状况下的波形长什么样当预同步参数合适时离网转并网过程大概是这样的初始离网状态VSG带5kW本地负载稳定运行输出电压相位逐渐与电网拉开差异。t0.5s时发出并网指令预同步开始工作θ_err从初始值慢慢收敛到0。t0.8s左右达到合闸条件断路器闭合。合闸瞬间电流波形有个很小的扰动峰值不超过额定电流的10%很快恢复平稳。VSG输出有功功率在切换后进入并网模式按Pref5kW输出无功接近0。并网转离网时断开瞬间有功功率从5kW跳到8kW本地负载实际耗电VSG频率跌落大约0.1Hz经过0.3s左右恢复电压幅值波动在5%以内。这些波形说明切换过程无缝——对负载来说电压在切换瞬间没有明显中断和畸变这就是VSG方案的核心价值。6.2 常见异常现象与排查思路问题1合闸瞬间电流尖峰特别大优先查相位差信号。用示波器看θ_err在合闸前是否真的已经小于设定值。如果θ_err在0附近但仍有尖峰可能是合闸指令和预同步完成之间的延时不够。更隐蔽的原因是PLL在预同步期间跟随了逆变器PWM谐波导致θ_err读数不准。解决办法是加低通滤波器或降低PLL带宽。问题2预同步启动后相位误差振荡发散这个通常是相位环PI的Kp太大或者相位修正叠加到频率指令的时候没有加限幅。先把手动限幅压到额定频率的1%然后降低Kp把Ki适当调大相位差应该能稳步收敛。问题3离网转并网成功后VSG功率振荡切换完成后VSG进入并网模式因为电网强转子运动方程的惯性会和电网形成功率振荡。此时要检查切换后的控制参数是否需要调整。常见做法是并网模式下增大阻尼系数D减小J防止功率振荡。我实测下来并网模式下D从20加到40J从1降到0.5振荡抑制效果明显。问题4并网转离网时直流侧电压撑不住如果直流侧用理想直流源不会出现这个问题但接电池或电容时会暴露。因为断开瞬间逆变器需要瞬时吸收或释放大量功率母线电容电压会波动。解决办法是直流侧加足够大的母线电容并给VSG算法加功率前馈。仿真中电容从2000μF加到5000μF后母线电压波动从80V降到15V。6.3 参数敏感性哪些参数不能乱动这套模型中对切换质量最敏感的是转子运动方程中的J和D。J太小切换瞬间相位会突变相当于把惯性环节去掉了D太小切换后功率振荡强烈。这两个参数直接影响切换的无缝程度。预同步PI参数的敏感性稍低只要带宽在合理范围切换瞬间冲击电流差别不大。双闭环PI参数对稳态影响大对切换瞬间的影响反而不明显因为切换时刻的功率冲击主要由VSG外环决定。做参数扫描时可以配合Simulink的Parameter Sweep功能快速看J和D的影响能省不少时间。7. 基于经验的补充从仿真到工程化的注意点最后聊几句仿真之外、工程化时要留意的事。仿真里理想直流源加无穷大电网很好跑但实际系统里有直流母线波动、线路阻抗、电网背景谐波、死区时间这些都会让切换瞬间的波形难看不少。如果后续要做硬件在环HIL或者实物验证建议先在模型里把这些非理想因素加上比如直流侧用电池模型、加死区时间、加电网谐波源提前暴露问题。还有一点跟控制器实现有关仿真和实际DSP代码之间有一个常见的坑就是定点和浮点数。模型里用的是doubleDSP上用定点数实现时J和D这些积分参数要重点检查精度特别是J很大时1/J非常小定点表示会丢精度导致积分不准确。建议用标幺值并归一化到合理的Q格式。预同步和切换逻辑在工程中建议用状态机实现而不是散落的逻辑块这样调试和维护方便得多。Simulink里的Stateflow就很适合干这个把状态图跑出来看切换过程的时序关系一目了然。如果你是在做微电网能量管理或者储能变流器的课题VSG这套离并网切换的思路可以继续往两个方向延展一个是多机并联的功率分配策略通过调整虚拟惯量和下垂系数实现不同VSG之间的有功/无功自动分配另一个是VSG和传统下垂控制的切换策略在某些工况下把VSG切换成下垂控制模式以获取更快的响应。这两个方向都有很多文章可以做但如果基础模型没搭稳后面越深入越容易踩坑。我个人在实际调试中最大的体会是无缝切换的无缝不是靠断路器开合瞬间的动作完成的而是靠切换前预同步阶段一分一秒的对准工作积累出来的。仿真里预同步波形收敛得越干净实际现场切换就越安全模型里省掉的那些预处理和缓冲逻辑最后都会变成现场的问题。这也是为什么我建议每个做VSG项目的人都认认真真把预同步环节的每个信号单独拉出来看一遍而不要只看最终电流波形。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →