做VSG(虚拟同步发电机)并网仿真,最容易被忽略又最不能忽略的,就是低电压穿越(LVRT)这一段。光看"虚拟同步"四个字,很多人以为只要把转子运动方程和无功励磁环搭好,调频调压都漂亮就够了,但等把模型放到三相电压跌落的工况下一跑,电流直接冲上几倍额定值,开关管瞬间就"毕业"了。电网不是无底洞,电压跌落是常态事件,没有限流控制和电流平衡控制兜底,VSG的"高仿真度"只会变成"高损坏率"。
这篇文章就是完整拆解一套10kW级别的VSG低电压穿越仿真方案:包含LVRT检测、限流控制、电流平衡控制、有功调频与无功励磁双闭环的整体架构,以及我在Simulink里从搭模型到调参踩过的坑。适合正在做并网逆变器仿真、准备投光伏或储能并网方向的同学参考,尤其是那种"正常工况仿真一把过、故障工况一跑就发散"的朋友,这篇能帮你把故障态的逻辑补全。
1. 为什么VSG并网系统必须过LVRT这道关
1.1 一次"脱网被考核"的教训:LVRT不是可选项
早些年做并网变流器项目,见过不少同行把VSG当"高级调频算法"来用,只关心稳态下有功-频率下垂和无功-电压下垂做得像不像同步机,至于电网电压突然跌落会怎么样,很少有人在仿真阶段认真测。直到有一次并网验收测试,电网侧模拟单相接地故障,电压跌到0.5pu左右,整个变流器直接过流跳闸脱网。按并网导则,这属于"不具备低电压穿越能力",考核不通过。
这里要明确一个概念:LVRT是指电网电压发生跌落时,并网设备必须保持并网运行一段时间(比如0.2pu跌落时维持0.625s不脱网),同时要向电网提供无功电流支撑,帮助电网电压恢复。这不是设备自己的"附加功能",而是并网的基本门槛。谁做并网仿真,谁就得把这段工况纳入测试范围。
VSG的天然行为恰恰在故障态暴露短板:转子运动方程模拟的是同步发电机的惯性和阻尼,但这个"虚拟转子"的积分输出θ依然会持续旋转,功率环给出的电流指令在电压跌落时远超硬件承受能力。如果不加处理,仿真里看到的是电流波形瞬间削顶,实际硬件里看到的就是IGBT炸管。
1.2 VSG的转子和励磁特性在故障态下的两个"天然短板"
先说第一个短板:虚拟惯量带来的"反应滞后"。VSG的有功调频环本质是一个二阶惯性环节,电网电压突然跌落的响应速度远快于转子运动方程的响应速度。故障发生后的几十毫秒内,功率环还没来得及把有功指令降下来,电压已经跌了一半,此时为了维持同样的功率输出,电流自然翻倍。这不是控制参数调得不好,而是VSG的"模拟机械惯性"在电气暂态面前就是不够快。
第二个短板是无功励磁环在低电压下的"无功愿望"无法兑现。无功-电压下垂环会让电压指令E升高来补偿电压跌落,但E升高之后的电压矢量差会进一步推高并网电流。于是出现一个悖论:想要支撑电压就得抬升内电势,但内电势一抬,电流就过流。这两个短板叠加的结果就是:不做限流控制的VSG在LVRT工况下基本必炸。
所以完整的VSG-LVRT方案必须在原有双闭环外面再套一个"故障态保护层":检测电压跌落、快速切换控制模式、限制电流指令、抑制负序分量。下面按这条链路逐个展开。
2. LVRT检测模块:从电压突变到保护动作只给半个周波
2.1 正序电压提取与跌落深度计算
LVRT检测的第一件事不是拿三相瞬时电压跟阈值比,而是要提取正序电压幅值。因为电网故障可能是对称的也可能是不对称的,不对称故障时三相电压里同时存在正序、负序和零序分量,如果直接拿某相瞬时值判断跌落深度,结果会波动得很厉害,导致误触发。
推荐一种工程上稳定可靠的做法:用延时信号消除法(DSC)分离正负序,再计算正序电压幅值。原理不复杂:在αβ静止坐标系下,把当前采样值延迟1/4个工频周期(5ms),与当前值做特定的加减运算,就能分离出正序和负序分量。公式上可以这么理解:
v_alpha_pos = 0.5 * (v_alpha(t) - j * v_beta(t - T/4)) v_beta_pos = 0.5 * (v_beta(t) + j * v_alpha(t - T/4))仿真里实现时不需要真的用复数j,用两个通道交叉加减就行。得到正序电压的αβ分量后,幅值就是:
U_pos = sqrt(v_alpha_pos^2 + v_beta_pos^2)然后归一化,用正序电压标幺值Ud_pu和0.9pu这个阈值比较。我在实际仿真中测试过,DSC加幅值计算整体延时大概在5~10ms,配合10kHz的采样率,从故障发生到LVRT标志位翻转能做到15ms以内,半个周波左右,这个速度对于保护逻辑来说完全够用。
2.2 滞回比较与LVRT模式状态机
检测模块另一个容易翻车的地方是临界电压附近的反复触发。如果只用单一阈值比较,当电压在0.9pu附近小幅波动时,LVRT标志位会像继电器触点一样来回抖动,模式切换逻辑被反复触发,仿真波形一片乱麻。
解决办法就是滞回比较。我用的配置是:
- 进入LVRT条件:正序电压幅值低于0.9pu,持续1ms
- 退出LVRT条件:正序电压幅值恢复到0.85pu以上,持续20ms
注意这里进入和退出的判定电压故意不一样,相差0.05pu作为滞回带宽。持续时间的引入是为了躲过暂态冲击和测量噪声。1ms的进入延时保证故障初期快速响应;20ms的退出延时保证电压恢复初期不立刻切回正常模式,等电网真正稳定了再让控制权交还给VSG功率环。
LVRT状态机总共三个状态:正常运行态、故障穿越态、恢复过渡态。正常运行态下走VSG双闭环;故障穿越态切换为限流电流控制;恢复过渡态则是把电流指令按速率限制爬坡回到VSG功率环输出的目标值,避免切换瞬间电流突变。这一步很多人会漏掉,直接导致故障切除后波形出现一个宽幅冲击,后面第4章详细说。
3. 限流控制与电流平衡控制:故障态下"防炸机"组合拳
3.1 电压跌落后电流为什么会爆:功率守恒视角
先算一笔账就明白限流的重要性。假设VSG额定输出有功10kW,并网点电压额定380V,正常电流约15.2A(RMS)。当电网电压跌落到0.5pu,如果VSG功率环还试图维持10kW输出,那么电流就要变成30.4A,是额定值的两倍。如果跌到0.2pu,电流就是额定值的五倍。
实际故障严重程度下,外环功率真正常能输出去的功率上限反而会因为电流环饱和而受限。对IGBT来说,额定电流的1.5倍也就是勉强撑几十微秒到毫秒级,持续2倍以上基本就是一次性的。所以LVRT的核心思路必须反过来:不是维持功率,而是限制电流;不是把有功撑住,而是把无功顶上去帮助电网恢复,有功让位。
3.2 限流策略的三种实现方式与无功优先逻辑
限流控制在仿真里常见的有三种实现方式,按优先级从低到高分别是:
一是指令限幅。直接限制电流内环的d轴和q轴参考值。这种方式实现最简单,Simulink里加一个Saturation模块就行,但要注意限幅之后积分环节的饱和问题。
二是参考值协调分配。在LVRT模式下,根据正序电压跌落深度计算需要的无功电流指令,剩余电流裕度再分配给有功电流。这才是工程上推荐的做法,因为纯粹的幅值限幅不管优先级,可能把宝贵的电流裕度全分给有功,无功支撑又不够了。
三是PI调节器抗饱和。电流环PI在参考值被限幅后,误差会持续积累,积分项一路走高,导致恢复时超调。必须做积分钳位或者条件积分。Simulink里我用的是带外部限幅的PI模块,内部打开反计算抗饱和(anti-windup),这一项在故障态仿真里非常重要。
我的无功优先逻辑是这样写的:
Iq_ref_lvrt = 2 * (0.9 - Ud_pu) * In Id_ref_lvrt = sqrt(Imax^2 - Iq_ref_lvrt^2)其中Ud_pu为正序电压标幺值,In为额定电流,Imax为限流幅值,我取1.2倍额定电流。当跌落越深,Iq_ref_lvrt越大,Id_ref_lvrt越小,跌到0.5pu时无功电流已经是0.8倍的额定电流,有功电流只剩下约0.9倍。直观理解就是:故障越深,越要"舍有功、保无功"。
3.3 电流平衡控制本质:负序电流抑制的双dq实现
电网不对称故障时(比如单相接地或两相短路),电压里含有负序分量,而VSG的功率环是基于正序旋转坐标系设计的,对负序电压没有控制能力,结果就是负序电压在电感上强行励磁出负序电流。负序电流有什么危害?三相电流明显不平衡,最严重的那一相电流会叠加正负序幅值,峰值可能是额定值两倍以上;而限流模块只限定了总幅值,负序挤占了正序电流裕度,让无功支撑能力进一步恶化。
电流平衡控制的实质就是把负序电流压下去。工程里最清晰的做法是双旋转坐标系:正序电流在+θ旋转坐标系下用PI控制,负序电流在-θ旋转坐标系下用PI控制,两个坐标系的电流指令分开给。θ扰动来源上,直接用VSG功率环自己的虚拟相位即可,不需要额外锁相。负序d轴和q轴电流指令都设为零,让控制器主动把负序分量"灭掉"。
正负序电流分解和DSC延时电路类似,把三相电流变换到αβ静止坐标系后,分别做延迟消除运算再旋转到对应坐标系。我在仿真里这么做之后,不对称故障下的三相电流不平衡度从30%以上压到了5%以内,代价是正序电流通道的抗饱和裕度要稍微收一点,因为控制器此时还要分配一部分输出电压去抵消负序分量。
4. VSG有功调频、无功励磁双闭环与LVRT模式的衔接
4.1 双闭环控制的核心方程与正常态控制链路
正常运行时,VSG控制链路分三层:VSG功率外环、电压电流内环、调制输出。功率外环包括有功调频环和无功励磁环。
有功调频环模拟的是同步机的转子运动方程:
J * dω/dt = P_ref/ω0 - P_e/ω0 - Dp * (ω - ω0) dθ/dt = ω其中J是虚拟惯量,Dp是阻尼系数,P_ref是有功功率指令,P_e是实测输出有功。整条链路里,J决定了对频率扰动的"惯性响应"强度,Dp决定了稳态频率偏差下的有功出力变化。仿真里我给的是J=0.4、Dp=20,此参数意思是这台虚拟同步机的转动惯量和阻尼处于"中等惯性"水平,模拟相当于同容量同步发电机短时惯量响应的效果。
无功励磁环则是:
K * dE/dt = Q_ref - Q_e + Dq * (U_n - U_pos)K是励磁积分系数,Dq是电压下垂系数,E是虚拟内电势幅值。这个环和同步发电机励磁调节器AVR类似,无功不足就抬高内电势,电压偏低也抬高内电势。两个环输出θ和E之后,合成三相正弦参考电压:
u_a_ref = E * sin(θ) u_b_ref = E * sin(θ - 2π/3) u_c_ref = E * sin(θ + 2π/3)再送给电压电流双闭环跟踪。这是正常态的核心链路,故障态下这条链路要被LVRT控制短暂接管。
4.2 模式切换的工程细节:状态量衔接与指令平滑
很多仿真模型卡在模式切换这一关。直接把VSG功率环的输出断开、把限流电流指令切进去,会发现切换瞬间电流和电压波形出现严重的畸变尖峰。原因有两个:一是VSG功率环的积分器(虚拟转子角度θ和励磁积分量)在切换前还保持旧状态,重新接入时会带着旧角度"猛拉"新指令;二是电流指令从VSG输出电压模式切换到限流电流模式时,两者不是同一个物理量,突变在所难免。
我的处理办法分三步:
第一步,切换期间不让θ跳变。故障进入LVRT模式时,θ继续由转子运动方程积分,只是P_ref给定降为0,让虚拟转子"空转"但不产生有功指令。故障恢复时由于θ已经连续转过一段时间,也不用重新同步,直接自然过渡。
第二步,电流指令加速率限制器。从正常态电流指令到限流指令之间加一个斜坡过渡,速率限制设为50A/s左右(对10kW系统大约是从零到额定值的2个工频周期)。这样切换瞬间的电流变化率被限制住,不会出现电流阶跃。
第三步,恢复过渡态不立即切回VSG功率环。先用"电流模式爬坡+电压外环解锁"的中间状态,让VSG电压指令逐步接管电流指令,持续3~5个工频周期,等E和θ都已经稳定,再完全切回功率外环。这一条是实测最有用的经验,加了之后恢复波形几乎没有冲击。
5. Simulink模型搭建实战:从主电路参数到控制器模块
5.1 主电路参数设计:按10kW样机做一套可复现配置
仿真平台我用的是MATLAB/Simulink,电气模型用Simscape Electrical的Three-Phase Source、IGBT Bridge和滤波电感。以下是整套可复现的参数配置:
| 参数 | 取值 | 设计说明 |
|---|---|---|
| 额定功率 | 10kW | 典型户用/小型工商业并网逆变器容量 |
| 电网线电压 | 380V / 50Hz | 三相三线制,中性点不接地 |
| 直流母线电压 | 750V | 留足调制比裕度,SVPWM不过调制 |
| 开关频率 | 10kHz | IGBT常用开关频率,仿真步长设5e-6 |
| 滤波电感 | 3mH | 单电感L滤波,简化模型便于控制调参 |
| 电感寄生电阻 | 0.1Ω | 阻尼高频谐振,避免LCL空载谐振问题 |
| 额定电流(RMS) | 15.2A | 对应10kW/380V |
| 电流峰值限幅Imax | 26A | 约1.2倍额定峰值(21.5A),留一点裕度 |
电感选3mH而不是更小的值,是为了让电流纹波在可控范围内,同时给电流环一个合理的被控对象时间常数。对于10kW这个功率等级,L=3mH对应的电流环穿越频率大约能到1~2kHz,配合10kHz开关频率是合适的。
5.2 控制器模块拆解与关键环节设置
整个控制器拆成几个独立子系统,分开仿真调试再合起来,能省很多排错时间。我的模块划分如下:
- 电压/电流测量模块:采三相电压和三相电感电流,转换为标幺值。
- 正负序提取模块:DSC延时消除,输出正序电压幅值和正负序电流幅值。
- LVRT状态机模块:滞回比较、状态切换、输出模式标志位。
- VSG功率环模块:转子运动方程、无功励磁环,输出θ和E。
- 电流指令生成模块:正常模式用VSG电压指令反推电流参考,LVRT模式用无功优先指令。
- 电流环PI模块:正序PI加负序PI,输出调制电压dq分量。
- SVPWM模块:dq反变换后生成三相占空比。
仿真步长设5微秒,固定步长。这里有个经验:VSG功率环本质是刚性的常微分方程,变步长求解器在故障切换瞬间容易把步长调得很小导致仿真巨慢,固定步长反而更稳定,配合离散PI控制器也更接近实际DSP实现。
电流环参数的整定我用的是典型的带宽法:期望电流环穿越频率1000rad/s左右(约160Hz),电感3mH,则Kp约为L×ωc=3,再留点阻尼余量调到Kp=4,积分时间常数取5ms即Ki=Kp/0.005=800。实际仿真中这个组合在额定工况和1.2倍限流工况下都稳定。
6. 仿真结果解读:三种典型故障工况下的波形与调参方向
6.1 对称三相跌落0.5pu:有功让位、无功支撑、限流兑现
把这个模型跑起来,先做最典型的三相对称跌落测试:0.5秒时电网电压跌落到0.5pu,持续0.625秒,1.125秒恢复。观察这组波形你会看到:
故障发生瞬间,正序电压幅值从1.0pu掉到0.5pu,LVRT状态机在10~15ms内置位故障穿越。此时有功电流Id参考值从正常运行值快速下降,无功电流Iq参考值按0.9-0.5的差值×2计算得出0.8pu,输出电流被限幅在1.2pu附近,不会再往上冲。
这个阶段最值得看的是限流效果是否兑现:三相电流峰值被钳在26A附近,没有出现超过1.5倍额定值的危险过流。同时无功功率从接近0快速上升到8kvar左右,说明无功支撑确实顶出去了。有功功率下降到不足额定一半,这是预期的"舍有功保无功"的表现。
6.2 不对称两相跌落:电流平衡控制的效果与代价
再跑单相接地故障(A相跌落0.8pu,B/C相基本不变),这是不对称故障的代表。如果去掉电流平衡控制模块,你会看到三相电流严重不平衡,A相峰值明显高于其他两相,这正是负序电流在做祟。加入双dq负序抑制之后,三相电流波形恢复基本对称,负序电流幅值从6A以上的水平压到2A以内。
这里要提醒一个代价:负序抑制通道会占用一部分电流环输出电压矢量裕度,同样的逆变器硬件下,正序通道的可用电压会略微下降。如果电网电压跌落深度过大(低于0.2pu),正序电压本身已经很低,再叠加负序补偿,SVPWM很容易进入过调制区。这种情况下要让负序抑制通道略微"放水",优先保住正序无功支撑能力,牺牲一部分电流平衡度。这是个典型的"两害相权取其轻"取舍。
6.3 虚拟惯量与阻尼系数对恢复过程的实际影响
最后一个小节聊调参方向。虚拟惯量J和阻尼系数Dp是最影响LVRT恢复阶段波形质量的两个参数。
J设置过大的表现:故障恢复后VSG频率需要很久才能回到额定值,有功功率恢复呈长周期振荡,可能持续5~10个周波才稳定,这是因为虚拟转子的"惯性太大",回正速度慢。J设置过小的表现则相反:频率可以快速回正,但故障切换瞬间的功率冲击会很大,因为缺少惯性缓冲。我的经验是J=0.4这个量级在10kW系统上属于"偏轻惯性",适合需要快速穿越响应的场合;如果模拟大电网同步机特性,可以加大到1.0左右,但要接受更长的恢复时间。
Dp的作用是给虚拟转子"刹车"。正常工况下Dp决定一次调频的下垂系数,LVRT模式下它决定了有功功率跌落后的恢复斜率。Dp调大,恢复过程阻尼增强,振荡衰减更快,但稳态频率偏差增大;调小则相反。建议先把Dp从10逐步加到50,观察有功恢复曲线,找到振荡收敛速度的拐点,然后停在该值即可。
故障态调参的顺序有一个实用原则:先让LVRT检测和限流逻辑正常动作,再调电流环PI,最后才动VSG参数。因为故障态下电流环是主导,VSG功率环在切换期间的影响力有限。顺序反了会陷入"参数越调越乱、波形越来越发散"的死循环。
最后分享一个我在调参时印象很深的小经验:故障期间的负序抑制通道在Simulink仿真里很容易因为积分器累积误差而漂移,负序电流指令为零但PI输出却一直在缓慢增长。排查下来往往是坐标变换时θ的正负号问题——负序坐标系旋转方向必须和正序相反(-θ),一旦弄反,负序控制器不但不抑制负序,反而会放大它。这一步值得仔细核对坐标变换矩阵,仿真里一个符号错误的后果比你想的严重得多。