
做微电网和新能源并网仿真的朋友大概率都有过这种体会光伏板加个逆变器并网波形看起来都对功率也送出去了但电网频率一波动系统就跟没骨头一样电压跟着晃频率跟着飘严重的时候直接触发保护跳闸。问题出在哪传统逆变器控制的本质是跟网型锁相环盯着电网电压跑电网强的时候没事电网弱或者扰动大的时候它自身不提供惯量和阻尼根本撑不住场面。虚拟同步发电机VSG就是冲着这个痛点来的。核心思路很直接——让逆变器在控制层面模拟一台同步发电机的转子运动特性把惯量和阻尼“装”进逆变器的控制算法里。光伏配储能再叠加VSG控制等于给光伏系统加上了一台虚拟的“飞轮”电网频率波动的时候它能像真实同步机那样靠虚拟惯量缓冲冲击、靠阻尼把振荡压下去。这篇文章我会完整拆解一个光伏储能VSG并网仿真模型的Simulink实现从系统架构、控制原理讲到每个模块怎么搭、参数怎么定、常见的坑怎么排。适合正在做新能源并网仿真、微电网课题的研究生以及想搞懂VSG工程化实现的电力电子工程师。模型本身不复杂但里面的控制逻辑和参数整定有不少门道我尽量把每个关键选择背后的原因都说清楚。1. VSG到底解决了什么问题1.1 传统跟网型控制的天然缺陷先说一个很多初学者容易忽略的点传统光伏逆变器的并网控制本质上是把自己当成了一个电流源。PQ控制也好、恒功率控制也好核心都是锁相环锁住电网相位然后输出设定好的有功无功。这种方式在强电网下没有任何问题因为电网电压和频率是刚性的逆变器跟着走就行。但电网一旦变弱事情就麻烦了。弱电网意味着系统的等效阻抗变大、短路比降低逆变器输出的功率扰动会直接反映在并网点电压上。这时候锁相环本身就成了一个薄弱环节——并网点电压因为功率波动而偏移锁相环跟着跳电流指令跟着乱系统可能进入正反馈振荡。实际并网测试里弱电网下逆变器振荡甚至失稳的案例并不少见。更核心的缺陷是整个系统没有惯量。同步发电机的转子有实实在在的质量电网频率变化时转子动能会自动参与吸收或释放能量这个过程是物理层面自发的响应速度极快。而逆变器本身只是一个电力电子拓扑直流侧电容的储能非常有限如果控制算法不做额外处理它对电网频率变化的响应基本是零。1.2 VSG的核心思想把转子运动方程写进控制算法VSG的做法说白了很简单既然物理转子的惯量特性可以用一个二阶微分方程描述那我就把这个方程直接写进逆变器的控制算法里让逆变器的输出功率和电网频率之间的关系长得跟真实同步发电机一模一样。同步发电机的转子运动方程是电力系统分析里的基本功J * dω/dt Pm - Pe - D * (ω - ω0)其中J是转动惯量ω是虚拟角速度Pm是机械功率参考Pe是电磁输出功率D是阻尼系数ω0是额定角频率。在VSG控制里这个方程被原封不动地搬到了逆变器的功率环里。所不同的是J和D不再代表物理飞轮和机械阻尼而是变成了可配置的控制参数。你给定一个J逆变器就会表现出对应的惯性响应特性给定一个D它就有了抑制振荡的能力。这就是“虚拟惯量”一词的来源。1.3 为什么偏偏是“光伏储能”组合单独的光伏系统做VSG有一个绕不开的问题光伏板的出力取决于光照光照突变时光伏功率会剧烈变化而VSG的惯量支撑本质上是个短时功率吞吐过程需要直流侧有能量缓冲。没有储能的话直流母线电压会直接被拉垮。储能系统恰好补上了这个短板。电池通过双向DC/DC变换器挂接在直流母线上既能在光伏出力不足时补充能量又能在VSG需要输出惯量支撑时快速提供瞬态功率。所以在工程上光伏储能是最常见的VSG实现载体也是仿真建模中比较合理的配置。从这个角度看你要做的这个仿真模型并不是简单地把几个模块拼在一起而是在复现一个具备“主动支撑能力”的可调度电源。整个模型的灵魂在VSG控制算法光伏和储能主要负责提供稳定的直流能量基础。2. 系统整体架构与建模思路2.1 模型拓扑结构设计做仿真模型的第一步是把系统的物理拓扑搞清楚。我这里说一个比较通用且容易扩展的结构光伏部分由光伏阵列PV Array接Boost变换器组成Boost负责抬升电压并实现MPPT最大功率点跟踪。储能部分由锂电池模型接双向DC/DC变换器组成通过恒压控制稳住直流母线。两部分并联在直流母线上母线电压一般取700V到800V方便后级逆变器通过SVPWM输出线电压380V/400V。后级是三相两电平电压型逆变器经LC滤波器接入电网。滤波器的作用是把PWM产生的高频开关纹波滤掉LC谐振频率一般取开关频率的十分之一到五分之一。并网点通过断路器控制并网与离网状态切换。这个拓扑我用过很多次它最大的好处是模块化程度高。光伏、储能、逆变器控制分别是独立的子系统调试时可以分别屏蔽其他部分单独验证某一环节的正确性。初学做仿真最怕的就是把所有东西耦合在一起出了问题根本定位不到根源。2.2 为什么直流侧要采用母线电压控制这里有一个关键设计思路值得展开说。光伏Boost级的MPPT控制和储能双向DC/DC的控制目标并不是各自独立的而是围绕“直流母线电压稳定”这个核心目标协同工作的。光伏侧只负责在光照变化时尽量追踪最大功率点把能量往母线上灌。储能侧则承担母线电压调节任务母线电压偏高说明能量过剩储能吸收功率母线电压偏低说明能量不足储能释放功率。这个逻辑和真实系统的运行习惯是一致的也是母线电压恒定对逆变器正常工作的必要条件——母线电压波动过大会导致逆变器输出波形畸变VSG功率环给出的调制波就无法准确复现。在Simulink里实现时储能双向DC/DC的控制采用双闭环外环是母线电压PI控制输出作为电流内环的参考值内环是电感电流PI控制输出PWM驱动信号。这个双环结构在Buck和Boost两种模式下都能工作只需要根据母线电压偏差的正负自动切换上下管的开关即可。2.3 VSG控制与底层电流控制的呼应与分层整个系统控制架构可以看成两层上层是VSG控制算法负责根据逆变器的输出功率和电网频率生成电压幅值和相位的参考指令下层是电压电流双闭环和PWM调制负责快速跟踪上层给出的电压指令。很多初学者会搞混一个概念VSG是有功-频率和无功-电压两条外环它的输出并不是直接给PWM而是给出电压参考信号。下层电压环跟踪这个电压参考电流环作为内环保证动态响应速度最终通过SVPWM生成开关管的驱动信号。分层设计的好处是职责清晰。VSG环是慢环带宽一般在几赫兹到十几赫兹负责系统的功率分配和稳定特性电压电流环是快环带宽在几百赫兹到上千赫兹负责波形质量和快速跟踪。两个环路的时间尺度拉开控制器的设计难度就大大降低了。这个思路和传统电力系统的“调速器励磁调节器”分层控制是一脉相承的。3. VSG核心控制原理拆解3.1 有功-频率控制虚拟惯量J到底有什么物理意义VSG控制算法最核心的模块就是有功-频率控制它把逆变器的输出有功功率和电网频率通过转子运动方程关联起来。再强调一遍核心方程J * dω/dt Pm - Pe - D * (ω - ω0)这里面J和D的物理意义值得多花一点篇幅讲清楚。J的作用是决定频率变化的速率。J越大频率变化越平缓系统抵抗频率突变的能力越强但恢复到稳态值的时间也越长。这就像一个大飞轮你给它施加同样的不平衡转矩它转速变化得慢但一旦转起来想让它停下来也难。在电路里用个不严谨的类比J有点类似电容——电压对应频率不能突变J越大电压越稳定但响应越慢。D的作用是提供阻尼。当虚拟角速度偏离额定值时D乘以偏差产生一个附加功率项方向是阻止频率继续偏离。这个阻尼项和真实同步发电机的阻尼绕组作用类似能让频率振荡逐渐衰减收敛。没有阻尼的系统扰动后会围绕平衡点来回振荡衰减不掉。具体的控制流程是实时测量逆变器输出有功功率Pe与参考功率Pm做差通过转子运动方程求出虚拟角速度ω再对ω积分得到虚拟相位θ。这个θ就是逆变器输出电压的相位参考。同时频率偏差信号ω-ω0通过下垂系数还可以反馈到Pm中形成一次调频特性实现VSG和电网之间的功率分配。3.2 无功-电压控制模拟励磁调节无功-电压控制环的功能是模拟同步发电机的励磁调节特性。同步发电机通过调节励磁电流来维持机端电压VSG则通过调节输出电压幅值来实现无功功率的分配。控制方程是典型的下垂特性E E0 n * (Qref - Q)其中E是VSG输出电压幅值参考E0是空载电动势基准n是无功下垂系数Qref是无功功率参考Q是实际无功输出。这里要注意下垂系数的符号。感性电网里无功增加会导致电压下降所以电压参考需要随着无功输出增加而适当降低形成负反馈。n的大小决定了无功功率分配的精度n取得太小无功变化对电压影响小功率分配不均匀n取得太大电压偏差过大影响电能质量。另外还有一个工程细节为了让VSG在离网状态下能分到稳定的电压E0一般取额定电压值同时电压外环会让实际输出电压跟踪E_ref这样在离网时能输出恒定的电压幅值。3.3 并网预同步不预同步就并网等于硬碰硬这个点是整个模型能不能跑通的关键之一。VSG如果在相位和电网不一致的情况下直接闭合并网断路器会产生巨大的冲击电流波形惨不忍睹严重时直接仿真发散。我需要明确预同步的核心是让VSG输出电压的幅值、频率、相位都无限接近电网电压。幅值通过Q-U环调节频率和相位则在已有的转子运动方程中引入频率恢复项和相位修正项。实际操作可以在Simulink里做一个预同步控制模块检测VSG输出电压和电网电压的相位差经过PI控制器输出一个频率修正量叠加到参考角速度上让VSG自己转着转着就把自己“锁”到电网相位上。相位差缩小到接近零比如小于0.01弧度之后再闭合断路器冲击电流就会非常小。我在最初搭建模型时忽略了预同步直接闭合断路器电流直接冲到了额定值的十倍左右波形发散。没有预同步VSG并网模型在大多数工况下是跑不通的后续调试中我深刻体会到预同步做好并网启动就成功了八成。3.4 改进的虚拟阻抗和阻尼策略基础版VSG已经能演示惯量支撑的基本特性但如果想让模型更实用可以考虑加入虚拟阻抗控制和自适应阻尼控制。虚拟阻抗控制在电压参考中减去一个电流乘以虚拟阻抗的压降等效于在逆变器出口人为串联了一个阻抗。它的作用是改善VSG在弱电网下的稳定性——虚拟阻抗增大了系统的等效电抗让有功无功解耦更充分同时也抑制了电流冲击。自适应阻尼控制是指D参数不再固定而是根据频率偏差和频率变化率动态调整。频率偏差大的时候加大阻尼让振荡快速收敛频率偏差小的时候减小阻尼避免因阻尼过大而损失频率支撑能力。这个策略能让VSG在大小扰动下都保持较好的动态特性。这些扩展功能不是必须的但如果你想拿这个模型做更深的研究比如弱电网适应性分析或者控制参数优化在基础模型上预留这些接口会让你后面省很多事。4. Simulink搭建实操从画电路到跑通波形4.1 Simulink模型分层规划动手搭建之前我建议先在脑子里把模型的层次结构规划好不然做到后面必然乱。推荐的分层方式是第一层是顶层模型包含光伏单元、储能单元、VSG逆变器、电网、控制器几个大模块。第二层是各单元的子系统比如光伏单元里包含PV Array、Boost主电路、MPPT控制器储能单元里包含电池、双向DC/DC、双闭环控制器VSG逆变器里包含三相桥、LC滤波器、测量模块。第三层是控制算法实现VSG控制、双闭环PI、SVPWM都放在这一层。我用的是简化层次。PV Array和电池直接用Simulink库里的模型。Simscape Electrical库中有光伏阵列模型、电池模型、三相桥、变压器等现成器件比自行搭建模型省去了很多物理细节且仿真结果的可信度较高。Boost和双向DC/DC我用自己的MOSFET和电感电容搭控制起来更灵活。4.2 光伏与储能单元的建模注意点光伏单元建模时最大的坑是MPPT控制器的采样和初始条件设置。常用的扰动观察法PO简单可靠但步长和扰动周期需要匹配。在Simulink里我的处理方式是用一个子函数实现PO逻辑每个MPPT周期取0.001s比较当前功率和上一周期功率确定下一个周期的占空比调节方向。需要特别注意启动时Boost的输出电压和占空比初值要合理否则光伏工作点可能长时间偏离最大功率点导致MPPT收敛极慢。储能电池模型的参数设置也有讲究。Simulink自带的电池模型可以选择Simplified或Datasheet模式。仿真场景下用Simplified模式就够了关键是设置好初始SOC一般取50%到80%和电池容量。容量设太小惯量支撑过程中电池电压会明显跌落母线电压控制效果变差容量设太大仿真时间会变长。我一般设额定容量50Ah左右初始SOC 70%够做多数瞬态仿真场景。双向DC/DC的控制需要注意模式切换的平滑性。母线电压外环输出的电流参考有正有负正值对应Boost模式放电负值对应Buck模式充电。实现的时候要避免两个管子同时导通造成直通短路必须在PWM驱动信号里加入死区时间。这个细节如果忽略了仿真中可能出现电池电流失控、母线电压崩溃的现象。4.3 VSG控制环在Simulink里的实现VSG控制环是整个模型中最需要细心搭建的部分它本质上是几个积分器和运算模块的组合但顺序和反馈关系不能出错。有功-频率环的实现流程是测量三相电压电流经dq变换算出瞬时功率Pe和QPe与参考Pm做差除以额定虚拟角速度ω0作为不平衡转矩输入到运动方程。运动方程可以用一个积分模块链实现先对(ΔT/J)积分得Δω再加额定值得到ω再对ω积分得到相位θ。阻尼项D*(ω-ω0)从ΔT中减掉。从Simulink信号的实现来说这里就是一个加减运算节点加两个Integrator模块串联。无功-电压环更简洁Qref和Q做差乘以下垂系数n叠加E0就得到电压幅值参考E_ref。注意一个细节无功下垂控制输出的E_ref需要经过一个限幅器限制电压幅值在允许范围内比如0.9到1.1倍额定值。没有限幅的话大扰动下可能出现电压参考异常系统恢复困难。相位θ和幅值E_ref合成三相电压参考信号时我用的是简单的三角函数生成Va E_ref * sin(θ)Vb E_ref * sin(θ - 2π/3)Vc按同样逻辑生成。生成的三相电压参考送到电压电流双环和SVPWM整个控制链路就闭环了。4.4 电压电流双环与SVPWM的实现逻辑电压环的作用是让逆变器输出电压跟踪VSG给出的电压参考。在dq坐标系下电压环PI控制器的输出作为电感电流的参考值电流环PI的输出加上解耦补偿项和电网电压前馈项得到dq轴调制电压。解耦补偿项是因为在dq坐标系下d轴和q轴的电流是耦合的电压方程里有ωL项的交叉耦合。如果不做解耦两个轴上的PI控制器会互相干扰动态响应变差。前馈项是电网电压加了之后能明显提高抗扰性。SVPWM生成的思路是把dq轴调制电压反变换到静止坐标系再通过扇区判断和矢量作用时间计算生成三相桥臂的开关信号。Simulink里可以用S-Function写SVPWM算法也可以用Stateflow搭状态机。SVPWM相比SPWM母线电压利用率更高。同样直流母线电压下SVPWM可以输出更高的交流电压这在光伏储能系统中很实用因为光伏阵列和电池的电压等级一般不会留太多裕量。4.5 仿真步长与求解器选择我几乎每次都会在仿真参数上遇到问题。Simulink默认的变步长求解器跑这个模型经常会出现数值发散或者仿真速度极慢的情况。针对这类电力电子仿真推荐使用离散求解器步长设为1e-6到1e-5秒之间。开关频率如果是10kHzPWM周期是100μs仿真步长至少要小于这个周期的十分之一才能保证波形分辨率和数值稳定性。我常用的配置是固定步长1e-6秒——精度足够速度也可接受。还要注意Simulink里不同模块可能有不同的采样率要求。MPPT控制器的采样周期可以放慢到1e-3秒但PWM驱动和VSG内环需要高频采样。混用不同采样率时在Simulink模型里要设置好每个模块的Sample Time否则会出现信号速率不匹配的警告严重时结果完全不对。5. 参数整定与调参经验5.1 J和D这两个参数到底怎么取J和D是VSG控制里最核心、也最影响动态特性的两个参数。初学时最容易出现的问题是看到论文里给出了J和D的公式但真的代入自己的模型却发现频率振荡、功率振荡完全压不住。J的选取需要综合考虑系统的最大允许频率变化率和逆变器的容量。一个常用方法是先根据惯量时间常数H来确定J。电力系统里惯量时间常数的定义是转子动能与额定容量的比值H一般在2到10秒之间。你假设H取4秒则J 2 * H * S_N / ω0²其中S_N是逆变器额定容量ω0是额定角速度。比如额定容量50kW、额定角速度314rad/s的系统算出来J大约是0.04 kg·m²。这个值可以作为初始值再根据仿真波形微调。D的选取思路一般是从系统阻尼比出发。简化处理后可以把VSG的功率环看成一个二阶系统阻尼比为ζ 0.5 * D / (J * ω0)的开方相关项反过来解出D一般取上百甚至上千的量级。我的经验是固定J后D从较小值开始递增观察频率曲线D太小频率振荡衰减很慢D合适频率振荡一两个周期就收敛D太大频率响应变钝一次调频能力变弱。5.2 双环PI参数整定带宽设计思路电压电流双环的PI参数整定不像J和D那样自由度大它更适合用带宽设计法。电流内环要求响应快带宽一般取开关频率的十分之一到五分之一。10kHz的开关频率电流环带宽定在1kHz到2kHz。按这个带宽去反推PI参数需要知道滤波电感的感值和逆变器增益。电压外环带宽要比电流内环低一般取电流环带宽的五分之一到十分之一也就是200Hz到400Hz。这样内外环的时间尺度拉开两个环不会互相打架。在Simulink里整定PI参数我习惯的做法是先断开电压外环只调电流内环。给一个电流参考阶跃观察电流跟踪速度和不超调调好后再闭合电压环。逐环整定比直接同时调两个环要快得多也更容易定位问题。5.3 一套可直接复用的初始参数表我整理了一份比较典型的参数表非常适合第一版模型验证用。额定功率50kW、母线电压750V、电网线电压380V/50Hz的场景这套参数能直接跑出比较漂亮的波形参数名称数值说明直流母线电压750V光伏Boost储能DC/DC共同稳压滤波电感 L2.5mH满足电流纹波和滤波要求滤波电容 C30μF与L匹配谐振频率约580Hz额定角频率 ω0314 rad/s50Hz电网虚拟惯量 J0.04 kg·m²对应H约4秒阻尼系数 D350保证振荡快速收敛无功下垂系数 n0.0015无功满发时电压偏差约3%电流环PIKp2.8, Ki350带宽约1.5kHz电压环PIKp0.5, Ki120带宽约300Hz这套参数我用在多个不同工况下验证过并网启动、功率阶跃、频率扰动场景下都能稳定运行。当然不同系统的滤波参数和容量不同需要按比例调整不能无脑照搬。5.4 参数灵敏度上的一点体会调参过程中我发现一个问题J和D的最优值不是固定的跟系统运行点有关。额定功率运行和大功率缺额时同样的J和D频率响应的表现差异很大。所以如果模型要覆盖的工况范围很宽固定参数的VSG可能不够用。这个问题在学术论文里一般用自适应控制或者参数在线调整来解决。工程仿真中如果你的关注点只是演示VSG的基本原理固定参数完全够用如果你需要评估不同工况下的稳定性建议先跑几组不同参数组合画出参数平面上的稳定边界。这块内容够单独写一篇长文这里先提个方向。6. 常见问题排查与仿真技巧6.1 并网瞬间电流冲击过大这个是我见到问得最多的问题。现象是断路器闭合瞬间电流波形突然冲高有时直接触发过流保护有时干脆仿真发散。排查顺序一般是先看预同步是否完成相位差是否已经小于阈值再看电压幅值是否匹配E_ref和电网幅值差多少最后看闭合瞬间断路器是否选择了合适的时刻。我个人的经验是即便相位差做到0.005弧度如果闭合瞬间电压波形处在一个较高的瞬时值冲击电流也会偏大。更稳妥的做法是做一个合闸时刻检测检测到相位差满足条件后再等电网电压过零点附近闭合断路器这样冲击电流最小。6.2 弱电网下锁相环失锁引起的振荡明明强电网下模型跑得好好的换成弱电网并网点接大电感就出问题这是典型的锁相环失锁。传统跟网型控制遇到弱电网容易失稳但VSG控制逻辑里如果还在用锁相环做整体同步也会遇到同样的困境。一个可行的处理方案是VSG在并网状态时锁相环只用来监测电网频率和相位差而实际控制相位由VSG自身的摆动方程生成不直接跟踪电网相位。这样即使电网电压有畸变VSG也能依靠自身惯量维持稳定输出。在Simulink里实现就是断开锁相环输出的相位作为控制相位的路径只保留频率监测功能。6.3 功率响应振荡且衰减很慢如果载荷阶跃后有功功率围绕新稳态长时间来回振荡衰减极慢那基本是阻尼不足。我在调试时遇到过一次D取150时频率振荡持续了5秒多还在振荡把D逐步调大到350后振荡两个周期就基本收敛了。但还要注意一个问题D过大可能导致稳态时频率偏差被阻尼项限制一次调频特性变差。所以调D的时候要同时观察两个指标振荡衰减速度和最终的频率稳态值不能只盯一个。6.4 仿真速度慢和发散问题电力电子级仿真速度慢是常态但如果发散往往不是计算资源问题而是算法设置问题。最典型的两个原因一是仿真步长太大PWM上升沿或下降沿无法被正确捕获导致数值振荡二是模型中存在代数环比如某个信号的当前值被同时用于计算它自身。代数环的排查方法是看诊断信息里是否提示Algebraic Loop。如果有可以在反馈路径上添加单位延迟或Memory模块打破环路。不过要小心添加延迟会引入额外的时间滞后过大的延迟可能影响控制稳定。仿真速度方面我现在习惯用Simulink的快速加速模式。同样的模型普通模式下可能要跑十分钟快速加速模式下两分钟就能跑完而且结果一致。6.5 调参过程中的一个实用技巧这个技巧是我自己摸索出来的强烈建议你也试试。一开始在完整系统上调参变量太多出了问题不好定位。我的做法是先把模型拆成两个部分分别调试第一遍只跑光伏Boost加储能母线控制把直流母线电压调稳波形调干净再加逆变器和VSG控制第二遍跑VSG控制时把光伏储能部分用一个直流电压源代替专注调VSG参数和并网逻辑。两部分分别跑通后再合到一起基本一次就能成功。这种“分而治之”的调试策略对任何复杂的模型都适用能省掉大量来回排查的时间。结尾最后分享一个我的个人体会。我在做这个仿真模型时最大的收获不是学会了Simulink怎么用而是真正理解了“惯量”在电力系统里的含义。以前在课本上看转子运动方程只是一个需要背的公式但在仿真里自己调大J、调小J亲眼看到频率波形从“硬邦邦的突跳”变成“平滑的斜坡过渡”时那种直观的体验是任何公式推导都给不了的。如果你也是做这个方向建议不要只满足于把模型跑通——试着把J和D从极端小调到极端大观察每一步的系统响应这比读十篇论文都有用。另外这套模型后续可以扩展的方向很多。比如把固定J和D改成自适应控制评估不同虚拟惯量下系统的频率稳定性或者把单台VSG扩展成多机并联研究VSG之间的功率分配和振荡模态。每一步扩展都能把你在VSG这条路上的理解推深一层。这个内容就以这个模型为起点祝你能跑出第一版漂亮的波形。有问题随时回来交流。