
1. 内容整体设计与思路拆解1.1 为什么需要VSG从“无惯性”到“虚拟同步”我刚开始接触微电网逆变器控制的时候最先看到的是下垂控制Droop Control它模拟的是同步发电机的静态外特性——有功-频率P-f下垂线、无功-电压Q-U下垂线。这种控制比较简单在孤岛模式下也能实现多台逆变器的功率均分。但真正在项目里跑起来会发现一个问题因为没有旋转质量和阻尼绕组逆变器的动态响应太快了电网频率一旦有波动它不像同步机那样有机械惯性撑着反而是瞬态“顶”上去而且对负载冲击的抑制能力很差。尤其在弱电网环境下频率波动大下垂控制的稳定性和支撑感都不理想。VSGVirtual Synchronous Generator虚拟同步机解决的就是这个问题。它的核心思路是在控制算法里“塞进”一台同步发电机的数学模型——转子运动方程、励磁调节特性、甚至虚拟阻抗。这样逆变器对外表现出来的动态特性就和一台真实同步机高度相似包括惯性时间常数、阻尼系数、一次调频调压能力。对于电网来说它看到的是一台“有转动惯量的发电机”这对于微电网的并离网切换尤其关键。你可能会问为什么不直接用真实同步机因为在分布式电源场景下光伏、储能、风电的后端都是电力电子变流器不可能配一台物理电机去提供惯性。VSG的价值就是把“物理惯性”变成“算法惯性”而且这个惯性参数还能随时调整——这正是本课题“参数自适应控制”的切入点。1.2 T型三电平拓扑选型效率和波形质量的平衡我早期做逆变器仿真时用的是两电平拓扑结构简单、控制也相对成熟。但在中高压或者大功率场景下两电平的缺点就会暴露开关器件电压应力高、交流侧滤波电感需求大、输出谐波含量偏高。这时候三电平拓扑就体现出优势而T型三电平T-Type Neutral Point Clamped是其中一种很有特点的结构。T型三电平的核心是“T字型开关支路”——每条桥臂由两对反向串联的IGBT或MOSFET构成中间抽头连接直流母线中性点。和二极管钳位型三电平I型NPC相比T型拓扑在相同的开关管耐压下少了4个钳位二极管损耗分布更均匀效率通常更高。这个特点在光伏并网逆变器、储能PCS上尤其受欢迎因为效率直接关系到发电收益。在仿真层面T型三电平的控制难点比两电平多出不少首先是调制策略三电平SVPWM空间矢量调制比两电平复杂得多共有27个基本矢量需要判断扇区、计算作用时间、处理冗余矢量其次是中点电位平衡问题如果上下电容电压不一致输出波形会畸变甚至损坏开关器件。所以做这个模型时中点电位控制必须纳入设计不能等到仿真跑偏了再补。1.3 参数自适应弥补固定参数VSG的天生缺陷经典的VSG控制里转动惯量J和阻尼系数D是常数。J取得大系统惯性大、抗扰动强但动态响应慢J取得小响应快但容易振荡。D的作用是提供阻尼D大了抑制振荡但会让频率偏移变大。固定参数只能在“快速响应”和“振荡抑制”之间取一个折中这个折中在工况剧烈变化时比如并网切孤岛往往不够用。我当时在测试固定参数VSG时遇到过很典型的情况负载突然增加时输出频率先是跌了一段然后开始来回振荡要过好几个周期才能稳定下来。这在实际项目中是不能接受的——微电网里的敏感负荷对频率稳定性要求很高。所以在做这个课题时我加入了参数自适应让J和D跟随系统的频率变化率和偏差动态调整。当频率偏差大、变化率快时增大J来阻止频率继续突变当频率朝反方向恢复时适当减小J来加快收敛而D则配合J的动态来调整阻尼力度。这种做法在文献里常被称为“变惯量VSG控制”。1.4 并离网切换为什么是这个课题的“试金石”并网运行和孤岛运行是微电网的两种基本状态并网时逆变器端电压被电网钳位VSG主要承担功率调度孤岛时逆变器自己撑起电压和频率。切换的那一刻如果控制策略不当会产生严重的冲击电流、直流母线电压波动甚至保护动作导致切换失败。我刚开始做并离网切换时犯过一个很典型的错误用同一个参考电压源直接切。并网时逆变器的输出电压和电网电压同步切换逻辑只是简单地把并网开关“断开”或“合上”结果切换瞬间的电压相位差会产生巨大的瞬时电流波形直接“炸开”。这个课题要解决的问题就是切换前如何预同步——频率、幅值、相位三者都对齐后再执行切换切换后如何平滑过渡——从跟网模式切换到构网模式时控制结构不能剧烈突变。所以整个课题的核心逻辑链是这样的VSG提供惯性支撑 → 参数自适应增强动态适应性 → T型三电平提升效率和波形质量 → 可靠的并离网切换策略保证模式切换的平滑性。四个环节缺一不可每个环节在Simulink里实现时都有对应的坑。2. 仿真模型核心模块搭建与参数设计要点2.1 顶层架构主电路、控制算法、切换逻辑三层怎么分层在Simulink里做这个仿真我建议把模型分成三层结构这样不仅调试方便出问题也容易定位。第一层是主电路层直流电源、直流母线电容、T型三电平逆变桥、LC/LCL滤波器、并网开关、电网和本地负载。第二层是控制算法层VSG核心算法、电压电流双闭环、SVPWM调制、参数自适应模块、预同步模块。第三层是模式切换与逻辑层检测并网状态、控制并网开关、在VSG控制和P/Q控制之间切换参考值。我用的是Simulink的Simscape Electrical前身SimPowerSystems工具箱搭建主电路。T型三电平桥这个模块如果版本里没有现成的可以用三个Universal Bridge或者IGBT/Diode组合搭但要注意用全开关器件模型仿真速度会比较慢尤其开关频率设到10kHz以上之后。如果你只关心切换策略和VSG特性可以先跑“平均模型”验证控制逻辑再回到开关模型做精细分析。我在项目里是两种模型都准备了平均模型用于参数整定和逻辑调试开关模型用于输出谐波、效率等结果分析。控制算法层我尽量避免连续模块直接搭而用离散模块。理由很简单实际工程中VSG算法是跑在DSP或者FPGA里的是离散化的代码如果仿真里全部用连续系统最后C代码生成时会有很多难以预料的误差。这个课题最后如果要做硬件在环HIL或者代码生成离散化这一步迟早要做晚做不如早做。2.2 VSG核心算法转子运动方程和无功环怎么建模VSG算法物理基础是同步发电机的二阶模型。电磁暂态下转子运动方程在标幺制里常用以下形式这里只列控制相关的关键表达式供建模时对照J · dω/dt P_ref/ω - P_e - D · (ω - ω_g)θ ∫ ω dt这个J就是虚拟转动惯量D是虚拟阻尼系数P_ref是有功功率参考P_e是逆变器输出有功功率实测值ω_g是电网角频率。把这个关系搭进Simulink就是两个积分器加反馈回路第一个积分器得到角频率第二个积分器得到相角。注意这里功率单位建议用标幺值pu可以避免数值量级差异带来的求解器误差。无功-电压环相对简单它模拟同步发电机的励磁调节器E E_ref n · (Q_ref - Q_e) 积分项用于消除稳态偏差这里的n是无功下垂系数。实际工程中一般还要加低通滤波器因为测量的瞬时无功功率里含有大量纹波直接喂给电压计算会让输出波形变差。滤波器时间常数通常取10ms~50ms这个在调试时很有感——取得太小波形毛刺明显取得太大动态响应拖沓。2.3 参数自适应的关键实现J和D的动态调节逻辑参数自适应模块是本课题的核心创新点。我们在实现时先检测VSG输出角频率和电网角频率计算出频率偏差Δω和频率变化率dω/dt然后按下述原则动态调整当Δω与dω/dt同向且都较大频率正在快速偏离额定值时增大J利用惯性“拖住”频率减缓变化速度。当Δω与dω/dt反向频率开始回调时减小J让系统更快回到稳态。当Δω和dω/dt都在死区范围内系统接近稳定时保持J在预设的较小值保证动态响应速度。D的调节逻辑相对简单系统的振荡程度可以看dω/dt绝对值大时增大D抑制超调系统平稳时减小D减少稳态频率偏差。这段逻辑用MATLAB Function模块或者Simulink中的用户自定义函数写起来非常顺手。我在实现时给J和D的自适应增加了上下限约束比如J_min 0.5 kg·m², J_max 8 kg·m²。为什么不直接让J无限增大因为J太大了系统对功率指令的响应会非常迟钝而且在切换瞬间相位跟踪也会变慢得不偿失。自适应律一定要搭配抗饱和处理这点在写代码时别漏。另外做一个提醒自适应参数的变化速率也要限幅。如果J瞬间从最小值跳到最大值等价于系统结构突变反而会引入新的扰动。你可以理解为虽然你给的是一个“变J”系统但这个变量的变化本身就是一种激励来源。实际调试时我发现将J的变化率限制在每秒不超过2倍初始值系统行为平滑很多。2.4 并离网切换与预同步锁相环和切换时序的配合并网模式切换到孤岛模式的瞬间并网开关断开后VSG的控制参考要从电网电压“脱开”转为自身建立电压。如果你直接切换参考电压源输出电压的幅值和相位是跳变的。为了避免这个跳变切换策略里要做的第一步是“记忆切换前最后一刻的电压幅值和相位”让VSG从这个状态继续“飞”下去。这在文献里叫“无缝切换”或“相位保持切换”。孤岛模式切换到并网模式要复杂一些因为此时逆变器侧的电压来自VSG自身输出和电网电压可能存在幅值差和相位差。如果相位没追上就合闸会产生很大的冲击电流。解决思路是预同步预同步单元频率预同步检测VSG输出与电网的频率差通过调节VSG参考频率让两者一致。相位预同步检测相位差把相位差信号转化为一个小步长的频率修正量逐步挪相位直到相位差小于允许阈值通常小于0.5°。幅值预同步调节VSG电压幅值参考让输出电压幅值逼近电网电压幅值。这三个环节在Simulink里可以用极坐标变换测量模块一致用Dq变换来实现。预同步逻辑完成后再执行并网开关合闸指令。合闸后VSG继续运行但它的输出端电压被电网钳制PI调节器会逐渐调整功率输出到目标值。这里要注意锁相环的“交接”问题并网前锁相环锁定的是电网电压合闸后要无缝转入VSG自身的相角基准这个切换顺序控制不好同样会产生相位跳变。3. 实操过程从搭建主电路到跑通并离网切换3.1 第一阶段搭建T型三电平主电路和SVPWM调制我用的直流母线电压典型值取800V模拟三相光伏逆变器或储能PCS场景电网线电压有效值380V/50Hz。直流侧用两个电容串联构成中点两电容容值各取2200μF支撑母线电压同时提供中点电位基础。滤波参数我按LC设计L0.8mHC20μF基本能让开关频率10kHz附近的高频分量衰减达标。调试三电平SVPWM是费时间的一个环节。三电平共有27个电压矢量调制过程包括扇区判断、矢量选择、时间计算、开关序列排布。我在第一次实现时直接用的MATLAB Function写SVPWM把参考电压矢量转换成三电平开关状态中点电位偏差用冗余小矢量的调节来完成。实际发现如果直接参考论文里的理想公式而不考虑直流侧中点电压偏移输出的线电压会有3次谐波分量。有一个很实用的做法在每个载波周期根据中点电位偏差方向选择“正小矢量”或“负小矢量”把中点电位控制在一个小区间内。这个算法不必写得太复杂一个简单的“偏差符号×固定补偿量”就能把中点波动控制在1%以内。3.2 第二阶段搭建VSG控制算法和电压电流双闭环VSG的输出是虚拟电动势的幅值和相角但逆变器不能直接输出这个电动势它需要经过内环电压电流双闭环转化为PWM控制信号。我在项目中的结构是VSG外环给出电压幅值E和相角θ合成三相参考电压电压环PI控制输出电压跟踪参考电流环PI控制电感电流跟踪电压环输出最后进SVPWM。这里的参数整定经验是电压环带宽比电流环低5~10倍电流环带宽比开关频率低10~20倍。我取开关频率10kHz电流环2000Hz左右电压环300~500Hz。具体PI参数需要根据LC谐振频率微调。有个技巧先用MATLAB的pidtuner工具整定线性化的模型然后再带非线性仿真微调省不少时间。VSG的额定有功功率Pn我取20kW虚拟惯性时间常数折算成J后标幺值通常在2~10之间。这个数值的物理含义可以理解为当有功功率突变20%时频率以多大速率下降。J越大频率变化越平缓但达到新稳态的时间越长。我们基准情况下取J3D30。在此基础上做自适应范围的调试。3.3 第三阶段实现并离网切换和预同步逻辑切换逻辑我采用了有限状态机Stateflow来写状态分别为“并网运行”、“并网转孤岛”、“孤岛运行”、“孤岛转并网”四个状态转移条件包括并网指令、孤岛指令、预同步完成标志。并网转孤岛的关键代码如下逻辑检测孤岛指令后锁存当前参考电压的相位和幅值同时将控制模式从“并网功率调节”切到“恒压恒频V/f控制”并网开关断开。因为锁存的相位在切换后是连续变化的从锁存的相位继续积分所以理论上可以实现无缝切换。实测时如果负载突变不大电压波形几乎是连续的电流没有明显冲击。孤岛转并网启动预同步把VSG的角频率参考向电网角频率拉近同时微调电压幅值参考。我设置的并网条件是相位差0.3°、频率差0.01Hz、幅值差1%时输出合闸信号。合闸后把预同步模块停止切换到并网功率控制模式。3.4 第四阶段参数自适应模块接入和联合调试自适应模块的接入时机很重要。我先在纯孤岛模式下验证自适应逻辑是否改善频率响应设置一个负载突变观察几个候选自适应律的频率恢复曲线。实测下来采用“基于频率变化率”的自适应律比“基于频率偏差”的自适应律效果更平滑——后者在频率偏差为零时仍然可能保留较大的J导致响应迟缓。联合调试阶段在并网模式下给一个有功功率指令阶跃观察输出功率和频率的响应曲线。开启自适应时频率超调明显减小从1.2Hz降到0.5Hz以内稳定时间也缩短。但要注意自适应会显著增加控制的计算量实测增加约20%的仿真耗时在代码生成和实时仿真时要评估算力余量。3.5 参数整定对照表参数物理含义参考值影响因素直流母线电压直流侧电压水平800V器件耐压、功率等级滤波电感L滤波器的电感量0.8mH谐波抑制、电流环带宽滤波电容C滤波器的电容量20μF高频衰减、谐振点VSG惯性时间常数虚拟转动惯量/额定转矩0.5~2s频率波动速度虚拟阻尼系数D阻尼效果20~50频率超调、稳态偏差电压环带宽电压PI动态响应300~500Hz电压波形跟踪速度电流环带宽电流PI动态响应1500~2500Hz电流过载能力并网合闸相位差预同步完成门槛0.3°冲击电流幅度4. 常见问题与排查技巧实录4.1 启动振荡VSG刚启动时频率来回摆这个现象我在首次调试时碰到过VSG带纯电阻负载启动输出频率在48~51Hz之间来回振荡老是稳不下来。排查后发现两个原因一是初始相角和初始角频率设置和实际电网不一致导致第一拍的控制量就过大二是无功环的滤波时间常数太小无功测量纹波直接进了电压参考电压环和VSG环形成了正反馈。解决方法是启动前把所有状态变量初始化到额定值频率50Hz、相位0、输出功率0然后把无功低通滤波器时间常数从1ms调大到20ms。实测振荡立刻缓解效果立竿见影。4.2 并离网切换瞬间电压凹陷或过冲正常切换时如果电压波形在切换瞬间有明显的凹陷幅度超过10%多半是切换瞬间参考电压发生了跳变。重点检查两个位置第一看锁存的相位是否在切换后正确衔接——如果锁存逻辑写的是“采样保持”而不是“跟踪保持”相位就会在原处冻结而真实电压在继续变化一开环就断开第二看模式切换时控制器的输出是否瞬间复位——如果PI控制器在模式切换时被清零或者初始化输出会跳变。解决方法是给控制器的积分状态也做“保持切换”处理。4.3 并网合闸冲击电流过大合闸时冲击电流超过额定电流的2倍这是并网预同步没做好的典型症状。我遇到的情况是频率和幅值都对齐了但相位差了约3°合闸冲击电流就飙升到2.5倍额定值。后来把合闸门槛从1°降到0.3°冲击电流降到额定值1.2倍以内。另外可以控制并网开关在相位过零点附近合闸能进一步减小冲击。4.4 离散化步长选择和数值稳定性Simulink仿真求解器类型和步长对结果影响很大。电力电子开关模型带IGBT开关动作我推荐用离散求解器步长取和载波周期同步比如10kHz开关频率步长取10μs或更小。连续求解器虽然精度高但是遇到三电平开关切换这种高频动作计算量会非常大而且容易因为事件检测失败出现“亚稳态”。在做C代码生成时要特别注意离散化带来的计算延迟。我在仿真里加入一步延迟环节unit delay来模拟实际控制器的计算延迟发现相位裕度下降明显原本能稳定运行的PI参数如果不重新整定会出现高频振荡。这个“仿真完美、实物抖动”的坑提前在仿真里做延迟环节就能规避。4.5 T型三电平中点电位漂移中点电位漂移在T型三电平里是必遇问题。仿真中如果中点电位一直往一边偏最后波形会开始畸变甚至某侧的电容电压崩溃。解决办法除了接冗余小矢量调节外如果负载是三相平衡负载中点电流在三相对称调制下平均值为零漂移主要来自动态过程。最简单有效的手段是在两个电容之间加一个“虚拟中点电压控制器”用PI把中点电压偏差拉回零。我实测加入后中点电压波动从±15V降到±3V左右800V母线效果很明显。5. 这个模型后续还能怎么扩展把整个仿真跑通以后有几个扩展方向非常值得做一个是参数自动整定脚本化。当前自适应律里J_min、J_max、D_min、D_max这些边界值还是手动调的可以把边界值作为变量用MATLAB脚本或者Simulink Design Optimization工具箱自动搜索最优组合减少人工试凑时间。另一个是硬件在环HIL验证。因为模型是离散化的控制逻辑用MATLAB Function模块或者Stateflow写的可以自动生成C代码后部署到控制器的原型机比如基于PIL的方式。把T型三电平主电路模型放到实时仿真机中比如OPAL-RT或者基于FPGA的HIL真实控制器去控制虚拟的功率电路这样可以验证控制器算法在真实计算周期下的行为而不需要搭建真实功率电路。我在实际项目中把并离网切换的整个周期放到HIL上跑了很久很多仿真阶段没暴露的问题比如计算延迟对切换过程的影响、PWM死区时间在低速模式的影响都是这个阶段才发现的。还有人会问T型三电平能往下扩展到两电平或者往上扩展到模块化多电平MMC去验证同一套控制策略吗核心的VSG算法和并离网切换逻辑是功率电路无关的拓扑变了内环和调制层要改但外环策略完全可以直接复用。如果你把这个课题做成一个平台型的仿真项目换不同拓扑来对比VSG在不同电路结构下的表现这个工作量和价值就完全不一样了。最后说一句个人体会仿真模型的可靠程度完全取决于你对控制对象物理过程的把握程度——不要急着把Simulink的模块拖出来先把同步发电机方程和逆变器在dq坐标系下的模型吃透后续的调试时间能省一半。