双机并联虚拟同步发电机Simulink仿真:环流抑制与自适应惯量控制

双机并联虚拟同步发电机Simulink仿真:环流抑制与自适应惯量控制 做分布式电源并联控制的人十有八九都在环流问题上翻过车。单机调试一路顺风顺水一旦把两台逆变器并到一起功率分配不均、低频振荡、输出电流波形毛刺全冒出来了。我搭这套双机并联虚拟同步发电机仿真模型起因是一个实际项目需要让两台容量相同的VSG机组并列运行、按比例分担负载同时保证频率和电压的稳定。前后折腾了一个多月从环流抑制到负载均分从固定参数到自适应控制踩了不少坑也沉淀出一套能直接在Simulink里复现的完整方案。这篇文章把整个思路、建模细节、参数整定顺序和调试踩坑记录完整写出来给正在做VSG并联仿真、或者准备从单机模式转向并联控制的朋友做参考。1. 双机并联VSG的难点拆解从单机稳定到双机共舞1.1 为什么逆变器要装成同步发电机逆变器本质上是一个开关电源本身没有转动惯量电网频率波动时它不会像同步机那样顶住。电力电子装置的响应速度极快快到可以把负载突变直接放大成电压和频率的振荡。VSG的思路很朴素在控制算法里人为地嫁接一台同步发电机的转子运动方程让逆变器的外特性呈现出机电暂态特征。这样逆变器就有了两个珍贵的东西虚拟惯量和阻尼。虚拟惯量决定它对频率变化的抵抗程度阻尼决定振荡衰减的快慢。用一句话总结VSG不是控制精度更高的逆变器而是从物理特性层面更接近同步电源的逆变器。它保留了电力电子装置快速调节的优点又补上了传统逆变器最缺的惯性支撑。对微电网和孤岛运行场景来说这个特性尤其关键——系统里面没有大电网兜底负荷突变时频率极易失控而VSG能像真实同步机一样扛住第一波冲击。1.2 双机并联的三个核心技术挑战环流、均分与暂态同步单机VSG只需要对自己的电压电流波形负责但一旦并联问题就复杂了。我认为可以归结为三个层次环流问题。两台逆变器的输出电压幅值和相位只要存在任何差异就会在机间产生一个不经过负载的循环电流。环流不是负载电流对输出有功没有任何贡献却会白白占用逆变器容量严重时直接触发过流保护。这是并联系统最直观、也最容易被发现的故障。动态功率分配问题。即使环流被控制住两台机子之间如何分担负载也是一个难题。线路阻抗不一致、控制参数不一致、采样误差不一致都会导致一台机出力多、一台机出力少。如果差异太大其中一台机可能持续过载另一台却在轻载运行整个系统容量无法充分利用。暂态同步问题。负载投切瞬间两台VSG的暂态响应如果不同步会出现功率在机间来回摆动的现象也就是低频振荡。这种振荡在仿真波形上非常明显——有功功率曲线像拉锯一样来回晃几秒都停不下来。真实同步机并联时依靠转子惯性和阻尼自然同步而VSG必须人为地把这个同步机制设计好。1.3 本文仿真模型解决到什么程度这套仿真模型针对的是同容量双机并联、负荷突变、线路阻抗不对称这一典型工况。它能够直接复现并解决以下问题两台5kVA VSG并联到公共交流母线比例分担负载0到100%负荷投切条件下有功均分误差控制在5%以内虚拟惯量自适应控制有效抑制频率超调缩短调节时间环流被抑制到额定电流的5%以下这个程度已经接近工程样机前期的算法验证需求。至于谐波抑制、不平衡负载、黑启动等扩展问题不属于本文的核心范围我会在最后简单提一下可以怎么延伸。这套模型的意义在于它把并联VSG最容易踩坑的几个环节全部暴露出来并且给出了可复现的解决方案。2. VSG核心算法建模转子方程、功率环与虚拟转子角2.1 转子运动方程在逆变器里的翻译VSG的核心就是同步发电机的转子运动方程落到逆变器控制里一般写成J·dω/dt Pm - Pe - D·(ω - ω_ref)其中J是虚拟转动惯量单位kg·m²表征系统抵抗频率变化的惯性大小ω是虚拟角速度也就是VSG输出的频率基准Pm是虚拟机械功率来自有功功率参考值Pe是电磁功率由输出电压和电流实时计算得到D是阻尼系数N·m·s/rad表征振荡衰减能力θ ∫ωdt虚拟转子角用于坐标变换和PWM调制跟真实同步发电机相比最大的区别在于真实电机的J是物理属性出厂就定死了逆变器里的J是一个控制参数想怎么改就怎么改。这就为自适应控制留下了空间。我可以用一个很形象的类比真实同步机你没法换个更大的飞轮但VSG可以在一毫秒内把飞轮从体操运动员换成卡车轮胎。2.2 有功-频率环与无功-电压环的参数设计逻辑VSG本体通常包含两条控制回路。有功-频率环采用转子运动方程实现惯量和阻尼特性无功-电压环则相对简单采用一阶下垂关系E E_ref n·(Q_ref - Q)其中n是无功电压下垂系数Q是实时无功功率。这个环不需要引入虚拟惯量因为无功功率和电压幅值之间本来就是静态关系不像频率那样需要惯量支撑。在设计有功环时J和D的匹配有明确的物理关系。系统的等效同步转矩系数K_ω近似等于有功下垂系数与额定角速度的乘积自然振荡角频率近似为ω_n sqrt(K_ω/J)阻尼比近似为ζ D / (2·sqrt(K_ω·J))。举例来说取K_ω 50J 0.4D 20则ζ 20 / (2·sqrt(50·0.4)) ≈ 2.23属于过阻尼系统稳定但响应偏慢如果D降到10ζ ≈ 1.12接近临界阻尼动态响应快得多。这就是为什么我经常看到有人单独调J、单独调D结果怎么调都不对——两者必须按阻尼比公式联动整定。2.3 为什么VSG不能依赖锁相环而要用虚拟转子角这是并联VSG建模里最容易被忽视的一个点。单机并网逆变器通常用锁相环PLL锁定电网相位然后以电网相位作为Park变换的基准。但两台VSG并联时如果各自都用PLL锁母线电压就会形成一个相互牵制的环路A机看着B机的相位调自己的输出B机看着A机的相位调自己的输出系统变成一个相互跟踪的闭环结构很容易引入负阻性质的振荡。VSG的出路在于用虚拟转子角θ作为自己的相位基准而这个θ是由转子运动方程积分产生的。虚拟转子角的物理含义是这台逆变器认为自己在电网中应该处于什么相位它天然具备相对同步能力——跟真实同步发电机通过功角实现同步是同一个原理。两台VSG各自以虚拟功角做Park变换、生成调制波通过公共母线和线路阻抗自然耦合谁都不用锁谁系统就能自己找到同步工作点。3. 负载均分设计下垂、虚拟阻抗与环流的三角关系3.1 环流的本质两台逆变器的电压在打架理解环流最简单的办法是把两台VSG看成两个带内阻的电压源并联。假设A机输出电压是U_a∠δ_aB机是U_b∠δ_b两机之间通过线路阻抗Z_a和Z_b接到公共母线。只要U_a与U_b的幅值或相位不一致就会产生一个环流近似等于I_c ≈ (U_a - U_b) / (Z_a Z_b)这个公式揭示了几个关键结论电压差越大环流越大线路阻抗越小环流反而越大。这跟直觉相反很多人以为线路阻抗大是坏事实际上在并联均流里线路阻抗小反而会让微小的电压差也产生巨大的环流。所以在仿真和实际系统中不能指望线路阻抗来天然限制环流必须靠控制手段主动治理。环流还有一个特征它不一定表现为纯粹的工频正弦可能是直流分量、工频分量或者低频振荡分量的叠加。直流分量一般来自两台机的电压幅值偏差工频分量来自相位偏差低频分量则往往是暂态同步没有做好。观测环流时建议把电流波形展开成这几个频段分别看定位问题根因会快很多。3.2 下垂控制让功率分配自动记账VSG的有功-频率下垂和无功-电压下垂天然提供了一种功率自动分配机制。以有功为例ω_1 ω_ref - m·P_1 ω_2 ω_ref - m·P_2由于两台机并联在同一个母线上稳态时它们的角速度必须相等所以P_1和P_2就自动相等。这就是下垂控制自动记账的原理——只要下垂系数设计一致频率这个公共变量就会强迫两台机均分有功功率。但是这里有一个前提线路阻抗差异不可忽略。按照有功传输公式P ≈ (U_1·U_bus/(ω·L))·sin(δ)如果两台机的等效线路电感L不一致即使机端电压和功角完全一样传输到母线的功率也会不同。这就是为什么纯粹靠下垂控制在两条不同长度电缆的并联场景下均分误差可能高达10%以上。解决思路是让下垂控制的话语权远远大于线路阻抗的影响下垂系数越大分配越均匀但频率跌落也会越大。这是一个需要权衡的点。3.3 虚拟阻抗压制线路差异的工程化手段虚拟阻抗的核心思想是在电压指令中人为叠加一个由输出电流比例反馈产生的压降等效于在逆变器输出端串入一个可控的虚拟电抗。实现方式是u_ref u_VSG - R_v·i - L_v·(di/dt)其中R_v和L_v就是虚拟电阻和虚拟电感。加入虚拟阻抗之后系统等效线路阻抗变成Z_line Z_v只要Z_v远大于Z_line的差异范围线路不一致的影响就会被淹没。比如我的模型里线路1是0.1Ω 1.0mH线路2是0.2Ω 1.5mH相差接近一倍。如果在机端各串一个0.8Ω 3mH的虚拟阻抗等效线路变成0.9Ω 4.0mH和1.0Ω 4.5mH相对差从接近100%缩小到10%左右均分效果自然大幅改善。需要注意虚拟阻抗过大会带来电压跌落尤其是阻性成分会造成输出电压幅值偏低。所以工程上一般会加一个轻度的幅值补偿即根据输出电流幅值在E_ref上叠加一个修正量。这个细节很多人容易漏漏掉的结果就是环流确实小了但母线电压跌到标准值以下。4. 自适应控制实现把虚拟惯量从死参数变成活参数4.1 固定惯量的两难困境快还是稳虚拟惯量J的参数选择本质上是在快速性和稳定性之间做取舍。从转子运动方程看J越大系统抵抗频率变化的惯性越强负荷突变时频率下跌的斜率越缓不容易出现剧烈的频率振荡但J越大系统响应就越迟钝频率恢复到额定值的时间也越长。反过来J小的时候响应快但负载投切瞬间频率容易跳水甚至引发功率振荡。微电网里的负荷是随机投切的今天可能只切一个1kW的小负载明天可能突然并一个大电机。固定J只能取一个折中值两头都不讨好。这个困境困扰了我很久——直到我把目光从电机设计挪到控制策略上既然虚拟惯量是软件里的一个参数那为什么不让它跟着系统状态实时变化4.2 自适应转动惯量的设计逻辑与实现公式自适应惯量的核心判据是频率变化率dω/dt。物理逻辑很清楚当|dω/dt|很大时说明系统正在经历剧烈扰动频率正在快速滑落此时应当赋予系统更大的惯量减缓频率下跌的速度当|dω/dt|逐渐减小说明频率已经接近新的稳定点此时应当恢复较小的J让系统能快速收敛不拖泥带水。我采用的线性自适应律是J(t) J_0 k·|dω/dt|其中J_0是基准惯量取0.4k是自适应增益取0.8|dω/dt|经过一阶低通滤波时间常数取20ms。为了保险还要对J做上下限约束我的范围是0.2到1.2。另外我强烈建议在仿真里加一个阈值判断只有|dω/dt|超过某阈值比如0.1 rad/s²才触发自适应否则维持J_0。否则稳态时频率的微小纹波会持续扰动J参数一直在跳反而影响系统稳定。在此基础上阻尼系数D也可以做类似的自适应但我的经验是D不宜变化太快否则容易引起新的振荡。模型里我只让D在15到35之间缓慢变化变化率由频率误差驱动。实测下来效果比固定D好一截尤其是负荷投切后的第一个振荡周期衰减速度明显加快。4.3 自适应与下垂的联动策略需要特别说明的是自适应J只改变系统的动态特性不改变静态调差。负荷增大后有功下垂本身就会让频率下降这个静态偏差由下垂系数m决定和J没关系。所以自适应惯量不会牺牲频率精度。有些人会把下垂系数也做成自适应的比如检测到频率偏差过大时临时加大m让负荷分配更灵敏。但这样做会带来一个麻烦m变化会改变稳态工作点系统可能来回调节甚至出现类似抢负荷的现象。我的模型里选择让下垂系数保持固定自适应只作用于J和D这样设计的好处是静态特性与动态特性完全解耦参数整定的逻辑非常清晰系统行为也好预测。等你把基础版本跑通了再考虑更复杂的模糊自适应、滑模自适应都不迟。5. Simulink仿真模型搭建实录主电路、控制器与参数表5.1 顶层架构主电路、测量与控制器模块划分仿真模型在Simulink里分为三层结构。最底层是主电路用直流电压源模拟光伏或储能母线经Universal Bridge逆变桥、LC滤波器、线路阻抗连接到公共母线和负载。两台机的主电路完全一样只是线路阻抗参数故意设置成不对称。中间层是测量与坐标变换。每台机独立采样三相电压和电流在各自虚拟转子角坐标系下做Park变换。这里要特别注意两台机的dq坐标系基准各不相同不要试图把它们统一到一个坐标系里。每台机在自己的dq系下算功率、算电压电流环互不干涉只有物理连接——即公共母线和线路阻抗——把它们耦合在一起。最上层是控制器。功率计算模块输出P和Q经过一阶低通滤波后送入VSG本体VSG本体输出频率ω和电压幅值E合成三相电压参考值然后进入电压电流双环最终生成SVPWM调制波。整个控制链路从采样到PWM输出是一个典型的级联结构。5.2 关键参数配置表可直接抄作业下面这组参数是我反复调试之后确定下来的两台5kVA VSG并联、直流母线800V、线电压380V、额定频率50Hz适合大多数中小功率微网仿真场景。参数数值说明额定功率5kVA x 2单机容量直流母线电压800V模拟光伏/储能侧额定线电压380V / 50Hz三相三线制LC滤波电感1.5mH含0.2Ω寄生电阻谐振频率约2371HzLC滤波电容30μF星形连接开关频率10kHzSVPWM载波线路1阻抗0.1Ω 1.0mH模拟短电缆线路2阻抗0.2Ω 1.5mH模拟长电缆有功下垂系数1e-3 rad/(s·W)满功率跌落约0.48Hz无功下垂系数0.0015 V/Var满功率跌落约3V基准转动惯量0.4 kg·m²自适应下限0.2自适应惯量增益0.8基准阻尼系数20 N·m·s/rad自适应范围15~35虚拟电阻0.8Ω虚拟电感3mH电压环PIKp2, Ki100电流环PIKp1, Ki50功率滤波时间常数15ms一阶低通这套参数的逻辑值得多说一句LC谐振频率约2371Hz电压环带宽取500Hz左右、电流环带宽取1kHz左右确保内外环有足够的相位裕度不会在谐振点附近产生振荡。功率滤波时间常数15ms和J0.4对应的机电时间常数匹配既不会让功率反馈太滞后也不会让PWM纹波污染功率信号。5.3 三段式仿真测试场景设计仿真测试场景我设计成一个逐步加压的过程目的是让问题暴露得更清晰。整个仿真时长1.0秒分为三个阶段0到0.3秒是空载预并网阶段。第一台机从0.1秒开始启动建立额定电压和频率0.2秒时第二台机启动经历短暂的预同步过程后0.25秒闭合并联断路器。这一步在仿真里看似简单但很关键——直接闭合断路器相当于把两台相位可能有偏差的电压源硬怼到一起瞬时冲击电流会非常大后面调环流时根本看不清是稳态问题还是并网冲击问题。我建议在断路器闭合前加一个简单的相位差判断逻辑或者把闭合时机设到两台机电压相位差小于5度的时刻。0.3秒投入5kW阻性负载。这个负载量相当于单机额定容量对两台并联系统来说是50%负荷足够观察到均分误差和频率跌落。0.5秒再投入3kW 2kvar的混合负载此时系统满载考验无功均分能力和虚拟阻抗对感性负载的适应能力。0.7秒切除2kvar感性负载只剩下8kW阻性负载。这个反向扰动用来观察系统在减载时的动态响应也就是自适应惯量在频率上升方向上的控制效果。仿真结束时间设为1.0秒留出足够的观察窗口。6. 结果分析均分精度、动态响应与自适应效果对比6.1 均分精度虚拟阻抗和自适应各自贡献了多少为了说明每个控制环节的作用我跑了三组对比A组固定参数、不加虚拟阻抗B组固定参数、加虚拟阻抗C组自适应参数、加虚拟阻抗。三组都采用不对称线路阻抗。5kW负载投入后稳态结果如下配置机1有功机2有功均分误差环流有效值A固定参数无虚拟阻抗2.91kW2.09kW16.4%0.85AB固定参数有虚拟阻抗2.62kW2.38kW4.8%0.32AC自适应有虚拟阻抗2.53kW2.47kW1.2%0.18AA组的数据说明了线路阻抗不对称的威力——线路阻抗小的那台机多干了800W的活。B组加上虚拟阻抗后均分误差从16.4%降到4.8%说明虚拟阻抗确实掩盖了线路差异。C组在虚拟阻抗基础上叠加自适应控制均分误差进一步降到1.2%这意味着动态过程中的参数变化也会影响稳态功率分配——自适应J在负荷投入后改变了系统的动态轨迹最终落到的稳态点更接近理想均分。6.2 动态响应频率下跌速度与恢复时间的对比动态波形上三组的差异更加直观。负荷投入瞬间A组频率最低跌到49.2Hz调节时间约0.6秒B组最低49.5Hz调节时间约0.4秒C组最低49.6Hz调节时间约0.25秒。自适应惯量的优势在扰动发生后的前100毫秒内就能看到频率变化率大的瞬间J被快速放大限制了频率下跌的斜率等到频率逐渐回升J又恢复到较小值让系统快速收敛。这里有一个值得玩味的细节C组的频率最低点其实并没有比B组低太多优势主要体现在恢复时间上。这是自适应惯量的典型特征——它不是一个把频率稳住的策略而是一个让频率快速回来的策略。如果你需要的是频差更小应该去调下垂系数m而不是指望自适应J。6.3 环流波形的判读方法环流波形是最直观的系统健康度指标。我习惯定义环流为ic (i1 - i2)/2两台机电流方向以各自流向母线为正。理想状态下环流为零实际运行中稳态环流应该是一个很小的工频正弦或接近零。判读环流波形时有几个典型特征要记住如果环流中存在明显的直流偏置说明两台机的电压幅值有偏差优先检查无功下垂系数和E_ref是否一致如果环流是纯粹的高频纹波可能是PWM调制差异或采样噪声不用太担心如果环流是低频振荡形态峰值在负荷投切后持续几个周期都不衰减那就是J和D的阻尼比设计有问题应该先调D而不是去调环流抑制模块。我在调试过程中发现很多时候环流波形异常只是果真正的原因在频率动态上——这个判断经验非常有用。7. 踩坑记录与工程化建议从仿真到实际装置7.1 仿真里最容易翻车的五个细节第一个坑是Derivative模块的噪声放大。自适应控制需要dω/dt但频率信号经过功率计算后难免有纹波直接微分会造成J剧烈抖动。我的解决方案是先对ω做一阶低通滤波时间常数20ms再微分而且微分输出也要套一个限幅器。第二个坑是功率计算低通滤波时间常数与J的匹配。滤波太慢VSG看到的Pe严重滞后等效于给系统注入了一个大延迟容易引发振荡滤波太快PWM纹波和开关噪声漏进功率信号频率波形毛刺多。15ms是我试出来的经验值和J0.4、D20的组合配合良好。第三个坑是断路器闭合时刻的相位差。我一开始在0.2秒直接闭合并联断路器结果仿真报错因为两台机相位差太大瞬时电流把数值计算都冲爆了。后来改成判断相位差小于5度再闭合问题迎刃而解。第四个坑是求解器步长。Simulink里PWM模块对步长敏感变步长求解器如果不限制最大步长仿真结果会非常离谱。我用的配置是od23tb求解器最大步长设为5e-5秒也就是开关周期的二分之一。第五个坑是dq坐标系的基准混乱。有一点再强调一遍两台VSG必须各自用自己的虚拟功角做Park变换。有人图省事想用锁相环锁出母线相位然后共用结果并联振荡怎么都压不住。VSG的相位基准只能是自己的虚拟转子角这是整个控制架构的根基。7.2 参数整定的顺序与经验法则并联VSG的参数多、耦合强乱调一定会乱。我的整定顺序是六步走第一步调电流内环。不给电压外环反馈直接给电流阶跃指令观察跟踪效果。要求无超调、稳态无静差带宽大约1kHz。第二步调电压外环。电流内环稳定之后接入LC滤波器和电压反馈给电压阶跃指令观察输出电压跟踪质量和抗负载扰动能力。要求电压波形THD小于2%。第三步调下垂系数。空载并联两机逐步加负载观察有功和无功分配情况。下垂系数按满功率时的频率跌落量来定——我按0.5Hz左右设计这个值兼顾了均分精度和频率质量。第四步调J和D。在固定下垂系数下做负载阶跃试验按照阻尼比公式先估算一组值再微调。判断标准是负荷投切后功率振荡不超过两个周期频率恢复时间在0.3~0.5秒。第五步加虚拟阻抗。固定J和D加不对称线路阻抗逐步增大虚拟阻抗值观察环流和均分误差的变化。虚拟阻抗从零开始慢慢加直到均分误差小于5%为止。注意同时观察电压跌落必要时加幅值补偿。第六步加自适应控制。在以上参数都稳定的基础上把固定J换成自适应J设定好上下限、滤波时间常数和阈值。这一步只优化动态指标不应该破坏已经调好的稳态性能。这套顺序的核心思想是先建立稳定可靠的底层再逐步增加高层策略。每加一层都要保证前面几层的性能不被破坏。7.3 从仿真到半实物验证的衔接思路仿真通过不等于装置能跑这里面隔着好几道工程鸿沟。首先是采样延时和PWM死区仿真里默认忽略但硬件上它们真实存在会引入额外的相位滞后。我建议在仿真后期主动加一个采样延时环节比如一个开关周期看看系统还有多少裕量。其次是控制代码的生成与部署。Simulink模型可以自动生成C代码但底层驱动程序、ADC初始化、PWM寄存器配置都需要自己写。我踩过的教训是代码生成之前先跑软件在环测试SIL确认算法逻辑没有改变再接功率级硬件在环HIL验证控制器与外设接口的时序匹配。最后是预并网逻辑。硬件上绝不能像仿真那样直接在相位差5度时闭合并联断路器就完事了还需要同时检查电压幅值差和频率差三者都满足才能发合闸指令。否则即使是5度的相位差在实际装置上也可能造成可观的冲击电流轻则跳闸重则损坏功率模块。最后说点实在的。我和很多做VSG的朋友聊发现大家普遍在自适应控制上追求复杂算法——模糊控制、滑模观测、粒子群优化其实对于双机并联这种中小型微网一个加了下限幅、滤波器和阈值判定的变惯量规则就已经能解决八成问题。算法越复杂参数越多鲁棒性越难保证。仿真模型最大的价值在于它让你在一个完全可控的环境里把物理机理吃透等你再去碰硬件的时候心里已经知道大概哪个环节容易出乱子。这套模型我后来扩展到了三机并联和带不平衡负载的工况核心结构几乎没动只是加了相应的模块。项目里很多问题在仿真阶段就提前暴露了比到了现场返工划算得多。希望这篇文章能让你少走一些我走过的弯路。