
搞微网、储能变流器、新能源并网控制的人应该对虚拟同步机VSG参数自适应控制这个话题不陌生。它跟T型三电平逆变器组合起来做并离网切换模型在Simulink里仿真验证是我这半年一直在折腾的方向。这套模型的直接应用场景很明确微电网中储能PCS的并离网协调控制、分布式电源黑启动以及多机并联时的频率支撑策略验证。我最初做这个项目是因为某微网项目里反复出现一个尴尬现象储能逆变器在并网状态跑得好好的一断网切到离网模式电压和频率就开始震荡严重的时候直接把直流母线过压保护顶起来了。后来把控制策略换成VSG并网和离网的统一性好了很多但固定惯量参数又带来另一个问题——大扰动下不是超调大就是响应慢。于是才把参数自适应加进去用T型三电平拓扑进一步压低谐波和开关应力整套方案仿真下来才算把切换瞬态稳住。这篇内容就把我从主电路搭建、控制环设计、参数自适应规则、并离网切换时序到仿真调试踩坑的完整过程整理一遍。不管你是刚接触VSG的研究生还是做并网逆变器控制的老手里面关于切换时序、自适应调节规则和Simulink建模细节的部分应该都有点参考价值。1. 为什么是VSG T型三电平这套组合解决什么问题1.1 先把痛点摊开并离网切换到底难在哪并网模式下逆变器本质上是一个受控电流源电网的电压和频率把系统撑住逆变器只需要按给定功率输出电流。离网模式下情况完全不同逆变器必须自己撑起电压和频率变成一台电压源带负载的能力、抗负载突变的能力都要自己负责。这两套控制逻辑的差异导致切换瞬间非常容易出现冲击并网转离网时电网突然被切除逆变器如果还按并网电流源模式输出负载电压瞬间失去支撑母线能量没有出路直流侧电压会猛抬。离网转并网时逆变器自身产生的电压相位和电网相位往往存在偏差直接合闸等于两个电压源硬碰会产生很大的环流和冲击电流严重时直接触发过流保护。更麻烦的是两种模式的控制目标还不一样。并网关注有功无功精确跟踪离网关注电压频率稳定。如果切换过程不做平滑过渡功率给定、电压参考、控制模式状态这些变量瞬间跳变系统很容易在切换后进入振荡。行业内常规做法是加预同步、模式切换状态机、给定值斜坡过渡但底层控制策略如果还是传统PQ控制和V/f控制两套逻辑硬切切换瞬间的暂态依然不好看。虚拟同步机方案之所以值得做就是因为它把并网和离网统一到同一套控制结构里不管在哪种模式下逆变器都按照同步发电机的运动方程输出电压和频率只是并网时电压被电网钳住有功无功按下垂关系自己分配离网时自己承担全部负载。这样就大大减少了切换时的控制结构突变。1.2 VSG的本体逻辑让逆变器“假装是一台同步机”VSG的核心是转子运动方程J * dω/dt Tm - Te - D * (ω - ω0)其中Tm是机械等效输入转矩主要由有功给定映射而来Te是电磁转矩由逆变器输出功率决定J是转动惯量D是阻尼系数ω是角频率θ ∫ωdt 得到用于坐标变换和PWM调制的相位。理解这个方程的关键在于J和D的物理意义。我习惯用一个类比J相当于发电机的“吨位”吨位越大转速越不容易突变——负载突然增加频率不会一下跌到底而是缓慢下滑但随之而来的问题是频率拉回额定值需要更长时间。D则相当于机械刹车阻尼大的时候功率振荡和频率摆动会快速衰减但D过大会造成冗余制动系统响应变慢功率动态偏差变大。在控制实现上VSG输出的是一组三相对称电压参考幅值由无功下垂控制决定相位由转子运动方程积分得到。这组参考电压再送给电压电流双环去跟踪最终生成PWM脉冲。因为整个输出特性跟同步发电机高度相似所以在并离网切换时逆变器对外呈现的“源特性”是一致的切换只是在参考电压的作用对象上做了变化。1.3 T型三电平的优势与代价选择T型三电平拓扑的原因可以从两个层面说。第一层是相对于两电平。两电平逆变器在直流电压800V左右时开关管要承受全部电压应力而且输出的相电压只有Udc/2和-Udc/2两个电平dv/dt大滤波电感上的电流纹波和电机端过电压都比较明显。三电平把每一相输出扩展到Udc/2、0、-Udc/2三个电平等效开关频率翻倍谐波含量显著降低每个开关管实际承受的阻断电压差不多是直流侧的一半。对储能和微网这种动辄几百千瓦的变流器来说器件的电压应力和滤波器的体积都能明显降下来。第二层是相对于I型中点钳位NPC三电平。I型NPC每一相需要4个主开关管加2个钳位二极管结构对称但钳位二极管反向恢复损耗大在大功率场合要考虑器件选型。T型三电平每一相是4个开关管加2个反向串联的钳位开关管拓扑更紧凑损耗分布更优尤其在开关频率10kHz以上的场合T型比I型有更高的效率。代价是控制上需要处理中点电位平衡问题T型对中点波动的容忍度要差一些必须在调制策略里加入平衡措施。拓扑每相功率器件主开关电压应力损耗特点控制复杂度两电平2管全直流电压开关损耗高低I型NPC三电平4管2钳位二极管半直流电压钳位二极管损耗大中高T型三电平4管2钳位开关管半直流电压开关管损耗更均衡高需处理中点平衡T型三电平配合VSG控制后输出波形质量更好切换瞬间的电流冲击对滤波器的压力也更小。代价就是Simulink建模的时候每相4个开关管的驱动逻辑要处理好不能只按两电平的思路给互补脉冲。2. 参数自适应控制固定J和D为什么不够用2.1 固定参数的两个尴尬场景VSG参数整定一般参考同步发电机J对应惯性时间常数H通常在2~10s之间D对应调差系数一般让有功功率变化导致的频率偏差在额定频率的0.5%~2%范围内。这个范围看似好选但一旦面对并离网切换这种大扰动固定参数的问题就暴露了。第一个场景是并网模式下的电网频率小扰动或者有功给定阶跃。J取小了系统响应快但功率会出现明显超调和持续振荡J取大了稳定是稳了响应却拖沓对电网频率支持的快速性不足。这个矛盾在固定参数下只能取中间值妥协。第二个场景是离网模式下的大负载突变。负载突然增加50%VSG的转速方程会让频率先下落然后靠阻尼慢慢拉回。如果J固定得比较小频率变化率dω/dt很大瞬间频率偏差可能超过储能变流器的低频保护阈值如果J固定得比较大频率变化率是压住了但频率偏差的持续时间拉长负载功率长期得不到满足系统会一直工作在“带病”状态。更细的问题在于响应初期和恢复期对参数的需求是相反的初期需要小惯量、快动作让功率快速跟上负载变化恢复期需要大惯量、强阻尼把频率过冲压下去。固定参数只能取一个中庸值两头都不满意。2.2 自适应的核心思路从“暂态能量”出发的调节规则我采用的参数自适应思路核心是从功角的暂态能量出发判断系统当前是“正在偏离目标”还是“正在恢复稳定”再动态调整J和D。定义角频率偏差为Δω ω - ω0其中ω0是额定角频率。再看Δω和dω/dt的乘积符号这个符号能直接指示系统运动状态当 Δω × dω/dt 0 时系统处于“加速偏离”状态。频率偏差在扩大比如负载突增后频率快速下跌的初期阶段dω/dt为负、Δω也为负系统正在远离额定频率。此时需要的策略是小惯量、大阻尼让频率迅速制动并拉回而不是跟着惯性继续滑落。当 Δω × dω/dt 0 时系统处于“回摆恢复”状态。频率偏差开始收敛比如频率已经跌到最低点准备回升此时需要大惯量、小阻尼让频率恢复过程平稳抑制回摆过冲。按照这个规则可以设计下面的调节算法Δω × dω/dt系统状态J调节方向D调节方向 0偏差扩大正加速远离目标减小轻装快跑增大强力制动 0偏差缩小正向目标恢复增大增加惯性减小恢复轻阻尼≈ 0稳态或极值点附近保持或按偏差幅值微调保持实际在Simulink里实现时我把自适应模块写成一个MATLAB Function输入Δω和dω/dt输出J和D代码如下function [J, D] adaptive_vsg_params(dw, ddw_dt, J0, D0, K1, K2) % dw: 角频率偏差单位 rad/s % ddw_dt: 角频率变化率单位 rad/s^2 % J0, D0: 基准惯量与基准阻尼 % K1, K2: 惯量调节系数和阻尼调节系数 if sign(dw * ddw_dt) 0 J J0 - K1 * abs(ddw_dt); D D0 K2 * abs(ddw_dt); elseif sign(dw * ddw_dt) 0 J J0 K1 * abs(ddw_dt); D D0 - K2 * abs(ddw_dt); else J J0; D D0; end % 限幅保护 J_min 0.3 * J0; J_max 4.0 * J0; D_min 0.5 * D0; D_max 2.5 * D0; J max(J_min, min(J, J_max)); D max(D_min, min(D, D_max)); end这个规则之所以用Δω × dω/dt的符号而不是单独看偏差或变化率是因为单独看任何一个都不够全面。偏差大但变化率为零说明系统已经到极值点马上要恢复这时候反而应该增大惯量防止过冲变化率大但偏差很小说明系统正在快速穿越额定点不需要大动作。只有两者结合才能准确区分“远离”和“回归”两种瞬态。2.3 参数边界与平滑过渡的细节设计自适应参数不是越大越好也不是变化越快越好。J如果无界增大系统惯性太大动态响应退化J如果频繁突变本身就是一个激励源可能激起新的振荡。所以我在实现时做了三层保护。第一层是限幅。J的上下限按J0的0.3倍和4.0倍设定D的上下限按D0的0.5倍和2.5倍设定。这个范围是通过几组试算得到的下限太低会让频率变化率失去控制上限太高则恢复时间过长。第二层是变化率限制。J和D的变化速率需要在仿真里人为限速简单做法是加一阶低通滤波时间常数取0.005~0.02s。低通滤波器的实际作用是给参数变化“刹车”防止不同步的J、D突变造成功率冲击。第三层是参数切换时的平滑过渡。具体做法是把转子运动方程里的J和D从固定常量改成时变信号后还要注意J和D不能完全解耦地各自变化。J增大意味着系统储能增加如果同时D减小等效阻尼不足系统可能会从“惯性大”演变成“欠阻尼振荡”。所以我在自适应规则里让J和D始终朝相反方向变化避免两者同向导致控制效果被抵消。3. Simulink建模实操从主电路到控制环完整搭建3.1 主电路T型三电平桥与交流滤波器的搭建要点主电路的结构我按储能变流器的典型配置搭直流侧两个串联电容中间引出N点三相T型三电平桥交流侧LC滤波器PCC点接负载和电网。直流电压设800V交流输出380V/50Hz额定容量50kVA开关频率10kHz。T型三电平桥的搭建有两种路线。一种是用Simulink Simscape里的三电平桥模块设置成T型省事适合快速验证控制算法另一种是每一相用4个IGBT独立搭建更接近实际拓扑做器件损耗和故障分析时更有用。我建议第一版先用手动搭一相、复制三次的方式因为你很快就会发现三电平的驱动脉冲逻辑和两电平完全不同手动搭建能逼你把每一相四个开关管的导通逻辑吃透。一相桥臂的导通逻辑如下输出 Udc/2上管和上钳位管导通其余关断输出 0两只钳位管导通T型结构中一个接P、一个接N交替导通处理中点电流输出 -Udc/2下管和下钳位管导通驱动脉冲还需要设置死区我一般设2μs防止同桥臂管子直通烧模块。交流滤波器LC参数我按工程经验初选L取2mHC取15μF对应LC谐振频率在900Hz左右大约是开关频率的1/11既能滤掉高频分量又不会在基波附近引入谐振峰。参数初选之后再看仿真波形微调。PCC处用三相断路器和理想电网模型断路器的通断信号由切换状态机产生。3.2 VSG控制环与自适应参数模块的部署方式VSG控制环的核心是转子运动方程它不在主电路里而在控制框图的顶层。搭建时我用两个积分器串联第一个积分器计算角频率偏差输出角频率ω第二个积分器对角频率积分输出相位θ。这个θ是整个控制系统的Park变换角度一定要注意不能换成电网锁相角否则VSG就失去了独立电压源的特性。有功通道上功率给定Pref和实际有功P的偏差通过下垂系数映射成转矩再进入运动方程。无功通道上无功给定Qref和实际无功Q的偏差通过下垂系数映射成电压幅值参考的偏移。两个通道最终合成一个三相参考电压送给电压电流双环跟踪。自适应参数模块放在转子运动方程旁边输入是当前的ω和dω/dt输出是变动的J和D。dω/dt可以从ω信号直接接一个微分器得到但直接微分会把数值噪声放大我习惯用一阶滤波微分 ddw (ω_current - ω_previous) / Ts再进行低通滤波。 在离散仿真里这个计算很简单用单位延迟模块做一次差分足够。还有一个容易踩的细节VSG的J在物理上和同步发电机的转动惯量同量纲仿真时要注意单位和数值量级。如果直接用J0 2kg·m²这种量级配合50kVA的额定功率频率动态会偏慢或偏快。更通用的做法是把J和D都用标幺或者按惯性时间常数H折算。J 2H × Sn / ωn²H取2s时J约2.03kg·m²。D可以按功率-频率下垂系数近似D ΔP / (ωn × Δω)5%调差时D大约在几百N·m·s/rad量级需要结合具体功率等级换算。3.3 电压电流双环离网模式的“稳压稳频”基础VSG给出的参考电压还需要经过电压电流双环跟踪才能最终生成PWM波。电压外环控制滤波电容电压让输出电压紧紧跟随VSG的参考电压电流内环控制电感电流起到快速限流和改善动态响应的作用。双环都工作在dq坐标系下Park变换角度来自VSG自身相位θ。调试顺序很重要先把内环调稳再调外环。内环电流环的PI参数按典型I型系统设计带宽取开关频率的1/10比例增益按L/Ts估算再在仿真里微调。外环电压环带宽取内环的1/5左右保证内外环动态解耦。双环输出叠加前馈项电压环输出作为电流参考电流环输出叠加电网电压前馈或电容电压前馈增强抗扰动能力。前馈的相位要和VSG输出一致否则稳态时dq分量会出现耦合。3.4 并离网切换逻辑与预同步流程并离网切换的核心不是断路器本身而是切换前后的时序控制。我的并离网切换状态机包含明确的状态和转移条件并网转离网系统收到离网指令后先确认当前功率运行点然后断开PCC断路器同时把控制模式标志位切换为离网模式。VSG的参考电压不需要重新初始化因为整个控制结构本来就是电压源模式只是并网时输出被电网钳住。断路器断开瞬间输出功率从并网值跳变为零直流母线电容会吸收多余能量所以在切换前最好把有功给定按斜坡降到较低水平减轻冲击。离网转并网这套流程复杂得多。第一步用锁相环实时检测电网电压幅值和相位第二步启动预同步调节调整VSG的ω使VSG相位θvsg逐渐逼近电网相位θgrid同时调整无功给定使电压幅值匹配。判断合闸条件是相位差小于0.01rad且电压幅值差小于5V满足后合闸合闸成功后再把功率给定平滑切换到并网目标值。不预同步直接合闸的后果可以用一个简单公式说明合闸瞬间冲击电流近似Is ≈ |ΔU| / |Zs|ΔU是VSG输出电压与电网电压的矢量差。相位差5°时380V系统电压差大约17V线路阻抗0.1Ω下冲击电流会到170A这还没算电压幅值差。所以预同步环节的价值本质上是在合闸前把两个电压源的“位差”最小化。Simulink里断路器控制可以直接用Three-Phase Breaker模块外部信号1和0控制闭合和断开。但要注意断路器状态突变会带来仿真数值刚性问题所以我给断路器加了一个并联的缓冲支路很小的电阻串联电感避免仿真在切换瞬间发散。4. 仿真结果怎么看切换前后的关键对比4.1 切换瞬间的冲击响应对比模型搭完以后我跑了两组对比一组用固定J、D参数一组用自适应J、D参数。重点看三个场景离网空载带额定负载阶跃、并网转离网、离网转并网合闸。先看离网负载突增50%的场景。固定参数时频率最大偏差约1.5Hz恢复时间大概0.6s功率波形上有三次明显来回摆自适应参数下频率最大偏差压到1.0Hz以下恢复时间缩短到0.25s功率曲线基本一个来回就稳住了。这个效果在预期内负载突增瞬间自适应规则识别到Δω×dω/dt0主动减小J让频率快速“跟住”负载变化同时增大D把频率下探的深度压住到了频率恢复段规则切换为增大J抑制回升过冲。再看来离并网转离网。固定参数切换瞬间的d轴电流冲击接近2.3倍额定电流自适应参数下降到1.4倍。原因仍然是对切换后功率快速变化的“快速制动平滑恢复”组合起了作用。4.2 频率与功率响应曲线怎么读很多初学者拿到仿真波形不知道该看什么。我的判断顺序是先看频率响应曲线里有没有“对折”和“多次往返”再看功率响应曲线的超调量和振荡次数然后对比两种参数策略下拐点出现的早晚。频率曲线的拐点很重要。固定J参数下负载突变后的频率曲线是一条先深跌、再缓升、可能带一两次阻尼振荡的弧线自适应参数下跌落的初段斜率更陡——这是小惯量阶段在起作用但最低点反而更高——因为阻尼也在同步增大有效抑制了下冲深度。到了恢复段频率回摆的斜率更平缓说明大惯量阶段让回靠过程更“温柔”。这些特征都可以直接对应到2.2节的自适应规则里验证逻辑是否真正起了作用。有功功率曲线主要看超调量和振荡周期。如果功率波形在切换后出现等幅振荡多半是阻尼参数D偏小或者VSG相位环带宽过高如果功率响应慢吞吞、迟迟追不上给定多半是J偏大。自适应参数下功率振荡衰减明显加快原因是D在偏差扩大阶段主动增大等效给系统加了一个“动态刹车”。4.3 自适应参数的动态变化曲线验证自适应规则到底有没有按预期工作不能只看J和D的最终波形还得验证J、D的变化时机和频率偏差的对应关系。我把J和D一起导出到工作区和频率偏差波形放在同一张图里看。正确的现象应该是频率偏差刚开始扩大时J降低、D升高频率偏差到达极值点开始回摆时J升高、D降低稳态后J、D返回基准值。如果看到J和D同步变化说明我的自适应规则里“反向调节”的逻辑没有生效如果看到参数曲线出现高频锯齿说明限速或低通滤波没加参数抖动已经反馈到控制回路里反而可能激发出新的振荡。注意一点自适应参数的调节效果不能只看单次波形要在不同负载阶跃幅值、不同切换时序下多跑几组。因为自适应规则本质上是非线性控制在小扰动和大扰动下的表现可能差异很大。我实测下来负载阶跃幅度超过30%时自适应优势非常明显但5%以内的小扰动反而固定参数更平顺因为自适应参数此时会有些多余动作。这个结论对工程应用很有参考价值——不是所有工况都非要用自适应可以设置一个判定阈值小扰动走固定参数大扰动再切换自适应。5. 常见问题与排查技巧实录5.1 一个现象对照表仿真过程中我遇到过的跟并离网切换相关的典型问题整理成一张速查表现象可能原因解决建议离网带载后输出电压跌落严重电压外环PI增益不足或VSG无功下垂系数太小抬高电压环比例检查无功-电压下垂曲线并网点切入时电流冲击极大预同步未完成相位差或幅值差超限检查合闸条件波形比对VSG角度与电网角度切换瞬间直流侧母线电压尖峰功率突变后能量回流母线电容或限流策略不足增加母线电容容量切换前斜坡降功率给定三电平桥输出波形不对称驱动脉冲逻辑错误或死区设置不当逐相检查四管导通组合均匀设置死区并网转离网后频率低频振荡VSG阻尼不足或电压电流双环带宽耦合增大D或自适应D下限降低外环带宽空载正常、带载后某相电流明显偏大中点电位漂移导致本相电压畸变加入中点电位平衡环或零序电压注入5.2 高频振荡与仿真步长设置我刚开始跑三电平等效开关频率模型的时候用了一个比较粗的步长结果PWM输出和主电路之间总有一种“对不齐”的感觉电流波形上叠加了密密麻麻的高频毛刺根本分不清是控制问题还是仿真离散化问题。排查下来主要是步长太长PWM脉冲和采样时刻错位造成的混叠。T型三电平在10kHz开关频率下PWM脉冲宽度最小可以到微秒量级离散仿真步长必须能覆盖这个时间分辨率。我的做法是Powergui选用离散仿真步长设为2μsPWM发生器和电流采样都用这个步长电压电流双环的PI控制器在2μs下离散化。这样跑一次几十个周期的仿真时间成本可接受高频毛刺基本消除。另外要留意微分环节。用微分器算dω/dt或者电感电流变化率时2μs步长下的噪声放大非常明显建议用滤波微分或者滑动窗口平均否则自适应模块会非常敏感参数会跟着噪声跳动。5.3 中点电位漂移的处理T型三电平和I型NPC一样都有中点电位漂移问题。我一开始没有加中点平衡控制结果离网运行几个周期后两个直流母线电容电压出现明显不平衡——上电容电压慢慢抬高下电容电压慢慢降低输出电流波形里出现明显的直流偏置和低次谐波。原因在于T型拓扑输出0电平时电流要流过中点如果上下两半周内流过中点的电荷不平衡中点电位就会持续偏移。最实用的解决方法是在VSG调制波里叠加一个零序分量通过调整每相作用时间来动态平衡中点电位。Simulink实现上也不麻烦检测上下电容电压差通过PI调节器生成零序电压补偿量叠加到三相参考电压上。加了这个环之后电容电压差基本能限制在10V以内输出波形失真明显改善。5.4 切换状态机乱跳与时序问题并离网切换状态机如果只用简单的电平信号判断切换条件很容易在阈值边界附近反复跳变。比如离网转并网时相位差在0.01rad阈值附近抖动状态机一会儿切到预同步、一会儿又切回离网断路器控制信号乱跳主电路相当于在反复“试合闸”电流冲击比不切换还严重。解决方法是把切换条件改成带滞环和延时确认的逻辑。相位差小于0.008rad并持续10ms才允许合闸合闸后模式标志必须等断路器状态确认后再翻转。Simulink里用延时模块加逻辑门就能实现更复杂的可以迁到Stateflow里一眼就能看清状态转移关系。断路器动作瞬时还要注意数值刚性问题。断路器通断瞬间如果是理想开关直接断流仿真求解器会因为电流不连续而报错推荐在断路器两端并联一个小RC缓冲支路。这个小改动不会影响结果准确性但能让仿真稳定很多。最后分享一个我在整个建模过程中感受最深的一点参数自适应不是万能的它解决的是“固定参数在宽范围扰动下顾此失彼”的问题前提是固定参数已经把系统调到合理工作点。如果你先把固定J、D参数下的离网带载波形调稳了再叠加自适应效果是锦上添花如果固定参数本来就乱自适应反而会让系统更加兴奋。我自己是先花了一周把固定参数的切换波形调到能接受再花一周做自适应这样每一步出问题都容易定位。做这个模型最大的收获不是最终仿真结果多漂亮而是把“为什么需要自适应”和“自适应为什么有效”这两件事彻底想明白了。