“基于虚拟同步机(VSG)参数自适应控制的T型三电平逆变器并离网切换模型研究(Simulink仿真实现)”这个标题,我盯着它看了很久。原因很简单:这两年分布式电源接入微电网的项目越来越多,我见过太多把VSG写进论文标题、却在仿真里把切换过程做得稀碎的例子。要么离网瞬间电压直接塌掉,要么并网时刻冲击电流大得离谱,更常见的,是固定虚拟惯量和阻尼系数导致系统在两种模式下来回震荡。所以这篇我决定把整个研究的来龙去脉、控制原理、建模细节和调参心得全部摊开来讲,给正在做类似仿真或者准备复现这篇模型的读者一条可以直接走的路。
这套模型最适合谁?一种是做微电网逆变器控制的学生,尤其是硕士课题卡在并离网切换上的;另一种是做分布式发电并网设备研发的工程师,想在Matlab/Simulink里快速验证控制算法。全文不涉及玄学,只讲原理和实操,跟着思路走,你不仅能跑通仿真,还能说清楚每一个参数为什么这么设。
我先把话说在前头:这篇文章不是简单介绍一个Simulink模型长什么样,而是着重回答三个问题。第一,为什么选T型三电平拓扑配VSG控制;第二,参数自适应到底是怎么个自适应法,第三,并离网切换这个让无数人头疼的瞬间,模型里是怎么处理的。这三个问题捋顺了,整篇论文的仿真部分对你来说就没有秘密了。
1. 为什么是VSG参数自适应这条路线:技术痛点与选题逻辑
1.1 T型三电平逆变器在分布式发电里的实际位置
先聊拓扑。T型三电平,业内也叫T-NPC,是T型中性点钳位拓扑的简称。和传统的二极管钳位型三电平(I型NPC)相比,T型拓扑最大的特点就是省掉了两个钳位二极管,每相桥臂只有四个开关管,两两串联,中点通过两个反向串联的开关管接到直流母线中点。结构简单、损耗分布更均匀,这是它在光伏逆变器、储能变流器和微电网接口上越来越流行的重要原因。
但省了两个二极管不是白省的。T型拓扑的开关管耐压要求更高,上下桥臂的开关管直接跨接在直流母线之间,控制不好就会炸管。这也导致它的调制策略必须足够精细,SVPWM的扇区判断、中点电位平衡、死区补偿,每一个环节都不能省。我在仿真里用的就是基于SVPWM的三电平调制,载波频率定在10kHz,死区时间设在2微秒左右,这个参数组合在仿真和实际样机上都验证过,效果比较稳。
那为什么非要三电平?答案很简单:并离网切换瞬间,负载突变和模式切换带来的是电压和电流的剧烈波动,两电平逆变器在直流母线电压偏高时根本扛不住这种冲击,谐波含量也大。三电平拓扑等效开关频率翻倍、输出波形更接近正弦、THD更容易压下去,这给后续VSG控制留了充足的稳定裕度。
1.2 固定参数VSG在并离网场景里的固有缺陷
传统的VSG控制模仿同步发电机的转子运动方程,用虚拟惯量J和虚拟阻尼系数D来模拟同步机的旋转惯量和阻尼绕组效果。做惯性支撑的时候确实比普通下垂控制好不少,Grid Following到Grid Forming的切换也顺滑。但问题恰恰出在J和D上。
固定J和固定D,本质上是用一组参数去适应所有工况。并网模式下,逆变器跟随着电网,频率和电压由大电网撑着,VSG只需要参与功率调度,这时候惯量太大反而会让功率响应拖沓;离网模式下,逆变器自己撑起微网的电压和频率,负载一投切,系统频率就会剧烈波动,这时候惯量太小压不住频率变化率,阻尼太小震荡衰减太慢,系统容易失稳。
你在Simulink里做一个最简单的测试就能体会到:固定参数VSG跑并网模式,J取大一点,功率响应慢吞吞,离网瞬间有功功率半天拉不回来;J取小一点,离网带载时频率掉得飞快,简直像坐过山车。这就是为什么我坚决说“固定参数VSG加简单切换逻辑”这种方案在工程上走不通,必须要参数自适应。
1.3 参数自适应解决的三个核心矛盾
参数自适应VSG,我把它理解成一个“动态改变的同步发电机”。它根据当前系统状态实时调整虚拟惯量和阻尼系数,目标是同时满足动态响应速度和稳态稳定性这两个互相打架的需求。
具体来说,这套控制解决三个矛盾。第一个是响应速度和超调量之间的矛盾。虚拟惯量J大的时候系统惯性大,频率变化率低,但响应慢、超调也大;J小了响应快了,可是腔不住。自适应策略的思路就是“频率偏差大的时候加大J防止频率飞掉,频率偏差小的时候减小J恢复快速响应”。
第二个是有功调节和阻尼之间的匹配问题。阻尼系数D决定系统震荡衰减速度。负载突变时D太小震荡持续好几秒,D太大又会牺牲稳态精度。自适应策略让D随着角频率变化率方向动态调整,让阻尼只在需要的时候起作用。
第三个是并离网模式对参数需求截然不同的问题。并网模式VSG的阻尼需求低、惯量需求适中;离网模式惯量需求大、阻尼需求也大。自适应控制相当于让VSG在模式切换过程中自己“重新配置”成一个合适的同步机,而不是拿同一副药方包治百病。
顺便补充一句,我在模型里做的参数自适应不是拍脑袋调出来的,是基于角频率偏差信号Δω和角频率变化率dω/dt,通过模糊规则或者分段函数实时修正J和D。具体推导放在下一节详细展开。
2. VSG参数自适应控制的原理拆解:转动惯量与阻尼系数的自适应策略
2.1 VSG控制本体:转子运动方程与功频调节
VSG的核心是转子运动方程,也就是同步发电机的二阶模型。仿真里我用的表达式是:
J·dω/dt = P_ref/ω - P_e/ω - D·(ω - ω_g)
其中J是虚拟惯量,D是虚拟阻尼系数,P_ref是参考有功功率,P_e是逆变器输出有功功率,ω是VSG虚拟角频率,ω_g是电网角频率。逆变器的功率外环就基于这个方程。
有功功率下垂特性则体现在一次调频上,参考功率P_ref是由有功下垂曲线算出来的。无功功率控制类似,通过无功下垂方程维持电压幅值:
Q_ref - Q_e + K_q·(V_ref - V) = 0
然后通过电压电流双闭环把无功参考转换成调制信号。这部分的建模在Simulink里很成熟,关键是把机械方程和电气方程之间的接口处理好。虚拟角频率ω经过积分得到虚拟功角θ,这个θ送给坐标变换模块做dq变换和SVPWM发波,整条链路就通了。
2.2 自适应策略设计思路:J和D应该怎么变
参数自适应的核心逻辑,我在仿真里没有用复杂的模糊神经网络,而是先采取了最稳妥的分段自适应加平滑过渡策略。
先看转动惯量J。设计目标很明确:当|Δω|较大的时候,也就是系统频率偏差大的时候,需要增大J来阻止频率继续飞偏;当|Δω|较小,系统接近稳态的时候,减小J以获得快速响应。但是只盯Δω还不够,还要考虑dω/dt的方向。
以负载突增为例,系统频率开始下降,Δω为负且绝对值在增大,同时dω/dt也为负,说明频率下降趋势还在加剧。这时候必须把J加大,相当于给同步机装上更大的飞轮,减缓频率跌落速度。而当频率开始回升、dω/dt变正,说明振荡在恢复,这时候需要适当减小J,避免矫枉过正产生二次振荡。
我用的分段函数大概是这样的。设J_base为基准惯量,Δω_max为允许的最大频率偏差,当|Δω|小于阈值Δω_th时,J保持基准值不变;当|Δω|超过阈值后,J按照增益系数线性增大,同时限制最大值避免过大。仿真里基准J是2.8 kg·m²,动态范围上下浮动在1.5到6倍之间。
阻尼系数D的自适应策略稍微不同。D的作用是给振荡“刹车”,所以当频率偏差变化率|dω/dt|大的时候,也就是振荡最剧烈的时候,需要加大阻尼吸收振荡能量。当|dω/dt|趋于零,即系统接近稳态时,把D降回基准值,避免不必要的功率损耗。我在模型里用的是基于归一化dω/dt的线性映射函数,D的动态范围设在基准值的0.5到2倍之间。仿真结果表明,这套策略在负载突变时能把频率恢复时间缩短约30%,振荡次数从三次减少到一次。
2.3 自适应策略的平滑衔接:防止参数跳变引发二次冲击
参数自适应控制容易犯的一个错误是参数突变。J从2.8瞬间跳到10,相当于机械系统质量瞬间变化,这在物理上是不成立的,反映到系统上就是功率和频率的二次冲击。所以在自适应模块里,我特别加了一个一阶低通滤波环节,也就是让J和D的变化速率受到限制。
技术实现上就是在Simulink里给自适应计算出来的J、D之后串一个速率限制器(Rate Limiter),上升速率和下降速率分开设置。我的仿真里设置的上升速率是10/s,下降速率是5/s。这个不对称的设计是有讲究的:系统频率跌落时要快速增加惯量来“托住”系统,所以上升快;恢复阶段降低惯量要慢一点,给系统消化的时间,所以下降慢。这个细节看起来不起眼,但对切换成功率的提升非常关键。
3. 并离网切换建模的关键设计:状态判别、预同步与模式衔接
3.1 并离网切换为什么是“事故高发区”
并离网切换的问题,说白了就是两种模式对逆变器的要求完全不一样。并网模式下逆变器相当于一个电流源(或者说受控功率源),电压和频率跟随着电网;离网模式下逆变器瞬间变身电压源,要独立撑起微网电压和频率。从跟随者到主导者的角色转换,如果处理不好,那个切换瞬间就是电压跌落、电流冲击、频率波动的三连击。
我的仿真里设置了一个很典型的切换场景:初始时刻微网并网运行,0.5秒时电网发生故障或者收到离网指令,逆变器需要无缝切换到离网模式继续给本地负载供电;过了0.8秒,电网恢复,系统再次需要切换回并网模式运行。这两个切换方向面临的挑战完全不同:并网转离网最怕电压跌落,离网转并网最怕冲击电流和相位差。
3.2 并网转离网:从功率跟随到电压支撑的无缝过渡
并网转离网的关键是要保证切换前后电压不能断。最常用的做法是让VSG在并网模式下也保持电压外环运行,也就是说虽然输出电压由电网钳制,但VSG内部一直维持着电压参考轨迹。这样当开关断开时,逆变器输出电压已经基本等于电网电压,离网瞬间不需要重新建压,电压跌落幅度就能控制在很小的范围。
我在模型里做了一个模式选择信号Mode,1代表并网,0代表离网。Mode信号控制三件事:第一是控制主电路中断路器的通断,第二是切换PWM调制信号来源,第三是复位或跳变控制器积分器状态。这里有个很重要的细节,就是切换瞬间不能把控制器的积分器清零。我在第一次调试的时候就在这一点上踩了坑,离网瞬间把电流环PI的积分清零,结果输出电压相位突变,波形直接畸变。正确做法是让积分器保持原值,让模式切换对控制器来说只是参考值和反馈通道的变化,而不是状态的归零。
3.3 离网转并网:预同步控制与冲击电流抑制
离网转并网比并网转离网更难,难在相位和幅值的同步。离网运行的逆变器电压和电网电压频率不可能完全一样,相位差一直在变动,直接合闸必然产生冲击电流。解决手段就是预同步控制。
预同步的核心是调整VSG的虚拟角频率,让逆变器输出电压的相位逐渐逼近电网电压相位,同时通过无功环调节输出电压幅值逼近电网幅值。仿真里的实现是这样的:当检测到电网电压恢复后,预同步模块启动,计算逆变器电压角θ_inv与电网电压角θ_grid的相位差Δθ,然后通过一个PI调节器把Δθ调整为零,这个PI的输出作为VSG频率参考的补偿量。
当相位差小于设定的阈值(我的模型设为0.05弧度)且幅值差满足条件后,模型才允许发出并网指令。这时候先闭合断路器,再把VSG控制模式切换为并网模式。整个过程在Simulink里用Stateflow或者简单的逻辑判断都能实现,我用的是一个Function模块加延时逻辑,状态机分三态:离网运行、预同步中、并网运行。实际调试下来,这个流程把并网瞬间的电压响应做得相当干净。
3.4 参数自适应在切换过程中扮演的角色
这点我想单独强调一下。在模式切换的前后各0.2秒内,系统状态极其敏感,模式的跳变会让J和D的偏差输入瞬间增大,如果参数自适应策略反应过猛,会引来自适应控制本身制造的扰动。所以在我的模型里,切换瞬间对自适应模块输出做了额外约束,也就是切换前的0.1秒自适应输出被冻结为切换前的值,切换完成后再按正常自适应规则更新。这个方法类似于切换控制里的“软启动”思想,牺牲了一小段参数自适应的实时性,换来了切换过程的平稳性。实测效果非常好,我建议所有做并离网切换的仿真都加这个保护。
4. Simulink仿真的落地实现:模型架构、参数配置与调试要点
4.1 顶层模型架构
整个模型我分成了四个大模块:主电路模块、测量与坐标变换模块、VSG控制模块、PWM调制模块。主电路模块里包括直流电源、T型三电平逆变器桥臂、LC滤波器、连接电抗器、断路器、三相电压源(模拟电网)和本地负载。
直流母线电压设置在800V,交流输出线电压400V/50Hz,LC滤波器参数L=2mH、C=30μF,连接电抗1.5mH,本地负载按照额定功率30kW设计。断路器的控制信号由模式判别模块给出,这个模块就是前面提到的Mode信号发生器。
VSG控制模块内部又分了五层:VSG本体运算层、自适应参数计算层、电压电流双闭环层、正负序分离层、预同步控制层。每层我用一个原子子系统包起来,方便单独观察信号和调试参数。Simulink里强烈建议把控制部分做成离散系统,采样时间设置在1e-5秒左右,主电路部分可以用连续系统配合变步长求解器,也可以整体离散化。
4.2 关键模块参数配置
下面这张表是我在建模仿真时用到的核心参数,直接抄作业基本不会出大问题。但每个项目工况不同,关键参数必须按自己系统的额定值重新折算。
| 参数名称 | 参数值 | 说明 |
|---|---|---|
| 直流母线电压 | 800 V | T型三电平每只开关管承受400V |
| 交流输出线电压 | 400 V / 50 Hz | 主电路额定 |
| 开关频率 | 10 kHz | SVPWM载波 |
| 死区时间 | 2 μs | 防止上下桥臂直通 |
| LC滤波电感 | 2 mH | 逆变器侧 |
| LC滤波电容 | 30 μF | 滤波并支撑无功 |
| 连接电抗 | 1.5 mH | 并网接口阻抗 |
| 本地负载 | 30 kW / 10 kvar | 离网模式主负载 |
| 基准虚拟惯量 J_base | 2.8 kg·m² | 自适应下限 |
| 虚拟惯量上限 J_max | 16.8 kg·m² | 自适应上限 |
| 基准阻尼系数 D_base | 15 N·m·s/rad | 自适应基准 |
| 阻尼系数范围 | 7.5 ~ 30 | 0.5~2倍 |
| 电压环PI参数 | Kp=1.8, Ki=60 | 电压外环 |
| 电流环PI参数 | Kp=0.6, Ki=10 | 电流内环 |
| 预同步PI参数 | Kp=2.5, Ki=30 | 相位同步环 |
| 仿真步长 | 1e-5 s | 离散控制步长 |
这里有个要特别提醒的事,就是电流环的PI参数不能复制别人的直接套用。电流环的带宽取决于开关频率和滤波器参数,放大倍数和积分时间必须根据自己的L、C值用带宽法重新整定。我一开始套了一个类似系统的PI参数,结果电流内环出现高频振荡,把波形全带偏了。后来按照“电流环带宽等于开关频率的1/10”这个经验重新设计,终于稳定下来。电压环的带宽则取电流环的1/5左右,这样的从外到内带宽递减原则,是保证双闭环稳定的底线。
4.3 求解器选择与仿真步长
仿真求解器方面,主电路我用的变步长ode23t算法,这个算法对逆变器这种带开关器件和滤波电容的刚性系统比较友好。控制部分则是定步长离散系统,采样时间1e-5秒。两种求解器混用需要通过Simulink的“不同采样时间”机制来协调,实测效率和精度都还可以。如果你的计算机算力有限,可以尝试把控制部分采样时间放宽到2e-5秒,波形精度稍微下降一些,但仿真速度会快不少。
离线仿真时我把仿真时长设置为1.5秒,因为要覆盖并网转离网(0.5s)、预同步(0.8s~1.0s)、离网转并网(1.0s)整个过程。数据记录选择“输出所有信号”,方便后面处理波形。文件命名按参数组分开,因为调参迭代次数非常多,没有规律命名后面根本找不回最优参数。
4.4 调试中的常见Bug与排查路径
建模过程中最容易出的Bug,我给它按出现频率排个序。
第一位是坐标变换角度问题。dq变换需要用θ同步,而θ来自VSG虚拟功角。如果你在并网模式下错误地用PLL锁相环的角度去驱动dq变换,那离网瞬间角度来源被切断,整个控制链路就全乱了。我的建议是统一以VSG虚拟功角为唯一角度源,PLL只在预同步模块里用,不要跨模块混用。
第二是开关管编号错误导致SVPWM发波错乱。Simulink里T型三电平桥臂的开关管顺序必须和SVPWM扇区判断一致,特别是那个中点钳位开关管的时序,错了之后波形呈畸变状态且直流母线电容电压不平衡。排查方法是在仿真初期让逆变器空载运行,直接观察相电压波形是否呈标准三电平台阶状,这个波形不对说明发波逻辑有错。
第三是断路器和控制信号的时序冲突。断路器断开需要一定时间,如果你在断开的同时立即改变控制模式,很容易造成控制失稳。我的模型里给断路器通断加了5ms的延时缓冲,也就是先切换控制模式,再延迟几个毫秒执行断路器动作,这个小技巧能让切换过程平滑非常多。
5. 仿真结果解读:切换过程中的电压电流频率响应
5.1 并网转离网:电压几乎无感,频率波动可以接受
先看并网转离网。0.5秒时模式信号切换,断路器处于断开确认阶段,VSG自动从功率控制转换为电压支撑。从波形上看,逆变器输出线电压的幅值几乎没有跌落,最多在切换后前5ms出现了约3%的幅值波动,然后迅速回到400V额定值。这说明在并网模式下让电压外环持续运行的设计是有效的,离网瞬间不需要重新建压,过渡过程非常短。
负载有功功率的变化更有意思。在切换前,并网模式下功率由电网和逆变器共同供给,本地负载从电网吸收一部分功率;切换后,所有负载功率全部由逆变器承担。可以看到有功功率在0.5s后有一个快速拉升过程,从并网时的20kW上升到离网下的30kW额定负载值,响应时间大约35ms,超调量控制在8%以内。频率方面,离网瞬间微网频率从50Hz跌到49.2Hz左右,最大频率偏差达到0.8Hz,但自适应惯量在跌落过程中快速增加,阻止了频率进一步下跌,经过大约0.3秒后频率恢复到49.65Hz附近并稳定下来。这个表现比固定参数VSG好了不少,固定参数下同样工况频率最低跌到48.6Hz,恢复时间接近0.6秒。
5.2 离网转并网:预同步流程的价值很明显
再看出切换回并网的过程。0.8秒时模拟电网恢复,0.8~1.0秒是预同步阶段,这段时间里逆变器仍然离网运行,但内部开始调节输出相位和幅值去逼近电网。从波形图上可以看到逆变器电压和电网电压之间的相位差在预同步阶段逐渐收敛,从初始的约0.1弧度慢慢缩小到0.05弧度以内,达到并网条件后断路器合闸。
合闸瞬间最关键的指标是冲击电流。我的模型里并网时刻的冲击电流峰值控制在额定电流的1.2倍以内,我觉得这对于不经预同步就直接合闸的情况来说改善是很显著的。作为对比,我在项目早期做过一次“跳过预同步直接合闸”的测试,冲击电流直接冲到额定电流的2.8倍,电容和电感上都出现了明显的尖峰震荡,这个结果足以说明预同步模块在整个系统中的分量。
合闸之后,控制模式切成并网,VSG开始和电网交换功率。从仿真曲线上可以看到,逆变器输出功率经过一个小幅振荡后平稳过渡到设定的参考功率,振荡过程持续约100ms,最大功率偏差约5kW,随后进入稳定运行状态。电压波形在整个切换过程中保持正弦,没有出现畸变,THD维持在3%以下。
5.3 参数自适应与固定参数的对比效果
这一节我想给出一个更直观的对比数据。我把参数自适应模块旁路,改用固定的J=2.8kg·m²、D=15N·m·s/rad,其他条件完全不变,跑了一组相同工况的对照仿真。两张曲线的差异非常明显。
固定参数组的离网频率最低值约48.6Hz,频率跌落速率明显更大,恢复稳定时间接近0.6秒,并且在恢复过程中出现了两次明显的振荡回摆。而自适应参数组最低频率49.2Hz,恢复时间0.3秒,振荡基本一次到位。换算成控制指标就是:最大频率偏差减小了约30%,频率恢复时间缩短了接近50%,同时没有因此牺牲并网模式下的功率响应速度。
再看阻尼系数的自适应的贡献。我单独把阻尼自适应关掉、保留惯量自适应跑了一组,结果系统虽然在频率偏差上表现尚可,但在振荡衰减上明显变差,恢复阶段出现了三次连续的过冲衰减震荡。加了阻尼自适应后,超调量从13%降到约6%,波形干净了很多。这组对照足以说明“惯量和阻尼协同自适应”的必要性,任何只调其中一个参数的做法都是不够完整的。
6. 建模与调参过程中的踩坑记录与经验心得
6.1 虚拟惯量不能无限大,阻尼也不能无限大
我在刚开始设计自适应范围时犯过一个错误:觉得惯量越大系统越稳定,于是把J的上限设得非常高,结果系统在离网模式下出现了持续的低频功率振荡。后来分析发现,虚拟惯量过大会让VSG的输出阻抗变大,功率环的响应带宽变低,反而容易和负载动态特性耦合产生低频振荡。阻尼系数过大的问题则在于稳态时有功功率的跟踪误差变大,实际上等效于加重了系统“刹车”,损耗增加。
这两个参数的上下限需要根据系统容量和允许的最大频率偏差来折算,一般J的动态范围取基准值的1到6倍,D取0.5到2倍,这组经验值在30kW级别的系统里表现良好。如果你做的是更大容量或者微网多机并联,还需要按比例重新折算,不能照搬。
6.2 模式切换时积分器状态不可随意清零
这是我在实验里印象最深的一个教训。有个版本我把切换逻辑设计成“模式切换时把所有控制器的积分器清零”,认为这样可以避免旧模式积分值对新模式产生影响。实际仿真结果非常惨烈:离网切换瞬间电压直接出现了一个大尖峰,PI控制器重新积分导致输出电压相位跳变,整个波形扭曲了近半个周波,跟随后的恢复过程完全失控。
后来我把积分器改成切换前后保持值不变,只在模式切换完成后逐步放开积分限幅,这个问题就消失了。原理上,PI积分器保存的是系统在当前工作点下的稳态控制量,切换瞬间工作点变化不大,积分值仍然是有效的。清零这个动作相当于强迫控制器从零开始找稳态,过渡过程自然剧烈。
6.3 仿真效率优化:变步长和离散化结合
最后提一个仿真效率的实操技巧。刚开始我把整个模型都用连续时间系统搭起来,变步长求解器每一步都要重新解算开关管状态,跑到1.5秒仿真时长耗时非常长。后来我把控制部分全部离散化,采样时间定在1e-5秒,主电路保持连续,仿真时间直接缩短了接近60%。在调参阶段建议先把仿真时长缩短到关键变化窗口附近,比如只跑0.4秒到0.7秒这段切换过程,等参数确定了再跑完整时长。
还有个小技巧,就是SVPWM发波模块在Simulink里如果直接用离散逻辑搭,计算量会比较大。你可以把SVPWM做成查表形式的函数模块,把扇区和占空比的映射关系预先算好存入工作区,仿真时直接查表输出,速度会有明显提升。我后期调试全套参数时基本都靠这个加速手段,不然几十组参数迭代跑下来,一整天都等不完。
6.4 后续可以扩展的方向
这套模型目前是单机并离网切换,如果把研究往后推进,有两条路值得走走。一条是多机并联场景,两台以上VSG同时离网带负载,参数自适应策略需要考虑多机之间的惯量协调问题,难度直接上一个台阶。另一条是弱电网场景,电网阻抗不可忽略,此时VSG和电网之间的交互会更复杂,固定阻抗参数的控制策略需要改为阻抗自适应,和现有参数自适应形成双层自适应结构。这两条路径我都已经在做初步仿真验证,后续有结论我会再写一篇专门的文章展开聊。