你在变电站里见过同步发电机的转子吗?几十上百吨的铁疙瘩成天在那转,转速稳稳卡在额定值附近。电网里只要挂着足够多的这种“大陀螺”,频率就不容易被扰动打穿。可这两年的能源结构变化实在太快,光伏、风电大规模顶上来之后,电网里转得动的东西越来越少,并网的逆变器越来越多。一台光伏逆变器和一台同步发电机最大的区别,不在于容量,而在于前者没有转子那套天然的惯性。正是这个区别,让“让逆变器学会装同步发电机”这件事,从一句玩笑话变成了一项正经的研究方向。
ANPC-VSG控制,拆开看是两个概念的组合。ANPC是Active Neutral Point Clamped的缩写,有源中点钳位型三电平逆变器拓扑,属于硬件层的变换器架构;VSG是Virtual Synchronous Generator,虚拟同步发电机控制,属于软件层的控制策略。把两者放在一起,含义很直白:以ANPC逆变器为功率载体,用VSG算法把同步发电机的外特性搬到数字控制器里,让这台电力电子装置在电网面前“演”出一台同步发电机的行为。输出波形更好看,动态过程更稳,还能在电网频率波动时主动出力支撑系统。
这篇文章写给正在做逆变器、储能PCS、微电网或新能源并网控制的工程师和研究生,也写给刚开始接触构网型控制、想找一个完整技术链路参考的新手。我会把ANPC拓扑为什么适合做VSG、VSG控制的核心方程怎么落地、参数怎么算、仿真和样机怎么搭、以及实际调试中常见的坑都过一遍。全程按我自己的项目经验来写,能帮你少走不少弯路。
1. 新能源越高,电网越需要“有转子的逆变器”
1.1 跟网型控制的局限
传统逆变器基本都是跟网型控制。它的逻辑是:用锁相环实时捕获电网电压相位,把逆变器当作一个受控电流源去跟踪电网电压。电网什么相位,我就按什么相位输出;电网给多少参考电压,我就按参考电流追。这个策略很成熟、很可靠、成本低,所以至今绝大多数光伏逆变器、风电变流器都跑在这套逻辑上面。
但跟网型控制有个天然的“性格缺陷”——它只会适应电网,不会支撑电网。锁相环本质上是把人家的相位借过来用,一旦电网电压因为远端故障发生相位跳变,PLL要花时间重新收敛;收敛期间,逆变器输出电流和给定值就会脱节。极端情况下,比如电网电压跌落严重,PLL锁不住,逆变器会直接判故障停机。在常规电网里,这种停机也就少发一点电,问题不大;可当新能源占比很高、系统里同步机很少的时候,多台逆变器同时脱网,就可能成为压垮频率的最后一根稻草。
这里要提一个指标,叫系统等效惯量。惯量小的电网,扰动后频率变化率(RoCoF)会非常快。我见过一个区域的事故复盘:某台大型机组意外停运后,系统频率在几秒内就跌穿低频减载动作值,而当时该区域新能源出力占比已经超过了一半。事后计算的系统等效惯量只有传统水平的三分之一左右。这说明一个问题:电源结构变了,电网的运行特性也在变,控制策略必须跟上。
1.2 VSG用算法补回“虚拟转子”
VSG的思路,说白了就是“没有转子,就造一个转子”。同步发电机身上对电网最宝贵的特性,是转子运动方程带来的惯量、阻尼和功角关系。VSG把这些物理规律写进数字控制器,用采样得到的功率反馈去推演一个虚拟转子的转速和相位,再把这个相位作为逆变器输出电压的相位基准。
具体理解起来并不难:光伏、储能逆变器在VSG模式下,不再把自己当作一个由外部锁相的电流源,而是当作一个电压源,自己产生输出电压的幅值和相位。电网频率低了,它不急着立刻改变输出,而是依靠虚拟惯量以一定的速率缓慢调整,同时通过输出功率变化去支撑系统频率;电网出现扰动,它有阻尼,不会来回晃。用一句行业里经常听到的话来说:VSG让逆变器从“跟随电网”变成“支撑电网”。这正是构网型控制的核心价值。
需要强调一点:VSG不需要改变逆变器的物理结构,它是一套算法叠加。这意味着现有电力电子设备通过升级控制代码,就能获得类似同步发电机的支撑能力。这也是这套技术这几年在储能、微电网领域快速推进的原因之一。ANPC-VSG则是在此基础上,进一步选了一个硬件基础更好、更抗造的拓扑来做这个“虚拟转子”。两者结合,是一加一大于二的效果。
2. ANPC拓扑:硬件底子选得好,VSG发力才稳
2.1 两电平、NPC、ANPC三兄弟的差别
要让VSG输出高质量的三相电压,并且承担从几kW到几MW的功率跨度,硬件拓扑的选择很关键。早期逆变器流行两电平:六个开关管,输出波形靠高频开关和滤波器去把方波磨平。两电平拓扑简单,控制成熟,小功率场合完全够用。但上了380V/10kW以上级别,两电平的短板就越来越明显。开关管要直接扛整段母线电压,600V以上的母线只能选1200V以上器件,再来点浪涌还得继续留裕度;开关损耗随频率上升,导致要么开关频率很低、滤波器体积很大,要么效率不好看。
三电平拓扑让每个开关器件只需要承受一半母线电压,输出波形从两个台阶变成三个台阶,谐波显著下降,同样指标下滤波器能做得更小。目前普及最广的是NPC拓扑,也就是二极管中点钳位型三相三电平,光伏市场里应用非常普遍。它的原理输出P、O、N三种电平,靠两个钳位二极管把输出端钳到直流母线中点。但它有个明显的短板:钳位二极管损耗不均衡。因为钳位二极管没有主动控制能力,电流路径基本由工况决定,开关损耗的分配是“听天由命”的。
后来行业里推出了ANPC,核心变化是把两个钳位二极管换成可控的功率开关管。这个改变看似微小,实际影响很大:功率器件何时开、何时关、让哪条电流路径承担损耗,现在全部可以由控制器自主决定。损耗可以被动态分配到不同开关管,哪个管子温度高就可以少承担一些开关动作。这在长期满载甚至过载工况下,直接关系到器件结温上限,也就直接关系到系统能出的最大连续功率。
要快速把这三种拓扑的差异记在心里,可以看下面这张表:
| 对比项 | 两电平 | NPC三电平 | ANPC三电平 |
|---|---|---|---|
| 输出电平数 | 2 | 3 | 3 |
| 开关电压应力 | 整段母线 | 半段母线 | 半段母线 |
| 零电平输出路径 | 无 | 固定路径 | 两条可切换路径 |
| 损耗均衡 | 不可控 | 受钳位二极管限制 | 可控分配 |
| 开关频率提升空间 | 低 | 中 | 高 |
| 复杂度和成本 | 低 | 中 | 较高 |
2.2 ANPC的“零电平路径冗余”到底多了什么控制自由度
ANPC每相桥臂有6个功率器件:4个主开关管加2个有源钳位开关管。输出P状态时,上桥臂导通;输出N状态时,下桥臂导通;输出O状态时,把输出端接到直流母线中点。关键差异就在O状态:ANPC可以有两条不同的零电平通路,一条适合输出电流为正时用,一条适合输出电流为负时用,控制器会根据电流方向实时选择导通路径。
这个冗余就是中点电位平衡的基础。直流母线中点电压如果出现偏移,三相输出波形会变得不对称,谐波增大,分压电容电压也会失衡,甚至导致器件应力超标。通过调节零电平状态的作用时间比例,控制器可以把中点电压拉回零。如果做成一个独立控制环,中点电压的波动可以压得很低。
另外,ANPC在输出P到输出N的切换过程中,可以通过选择不同的O路径,让钳位开关多分担一部分高频开关动作。这样器件结温分布更均匀,逆变器允许的连续输出功率更大,散热器也能设计得更紧凑。这个特性在实际项目中价值很大。我做10kW级平台时,调整损耗分布之后,同样的散热条件下持续功率硬是多出了10%,这个收益是实打实的。
2.3 中点电位平衡与VSG的相互影响
VSG控制下,逆变器的功率指令会随着电网频率偏差快速变化。特别是在模拟同步机一次调频动作时,有功功率可能瞬间增加好几千瓦,这个突变工况对中点电位平衡的要求比传统恒定功率输出高很多。因为功率突变同时意味着电流突增,中点电容在这些瞬态中更容易失去平衡。
所以ANPC-VSG系统里,中点平衡控制环的带宽和VSG功率环的带宽必须协调。平衡环动作太慢,VSG功率一抬,中点电压就开始偏;平衡环动作太快,又可能在控制中引入噪声和振荡。我自己的习惯是,把中点平衡环的时间常数设在5~10ms量级,比电流内环慢、比VSG功率环快。这样既不干扰功率动态,也能稳稳托住中点。
3. VSG控制系统的完整工程拆解
3.1 把转子运动方程请进数字控制器
VSG的起点是同步发电机的转子运动方程。在功率尺度下,可以写成:
J · dω/dt = (P_ref - P_out) / ω0 - Dp · (ω - ω0)其中,J是虚拟转动惯量,单位是牛·米·秒平方,代表虚拟转子的“重量”;Dp是虚拟阻尼系数,等效于发电机阻尼绕组和机械阻尼的合作用;P_ref是有功功率参考,P_out是实测的输出有功;ω是虚拟角速度,ω0是额定角速度。控制器在每个采样步长里解一次这个微分方程,得到当前的虚拟角速度ω,再对ω积分得到虚拟功角δ。δ就是逆变器输出电压相对于某个参考电网矢量的相位。
对采样系统来说,这个方程通常用一阶隐式欧拉或双线性变换来离散化。写进DSP里,其实就是一行差分方程加一行累加器,实现上并不复杂。难的不是解方程,而是参数怎么配、整体闭环稳定性怎么保证。我把参数设计的完整计算过程放在第4章,这一章先集中把控制链路讲清楚。
3.2 有功-频率、无功-电压:两根下垂曲线互相配合
VSG要参与一次调频,必须有自己的下垂特性。有功-频率下垂的意思是:当虚拟角速度偏离额定值时,有功功率参考随之改变,模拟同步机调速器的行为,可以写成:
P_ref = P_set + Kp · (ω0 - ω)这里的Kp是有功下垂系数,单位是瓦·秒每弧度。同理,无功-电压下垂写成:
Q_ref = Q_set + Kq · (U0 - U)这里Kq是无功下垂系数,单位是乏每伏特,U是机端电压幅值,U0是额定电压。
这两条曲线和同步发电机的调速器、励磁调节功能一一对应。下垂系数不宜过小,太小会导致电网频率轻微波动时逆变器剧烈调整功率,容易引发功率振荡;也不宜过大,过大会削弱对频率的支撑能力。工程上一般让满载功率对应2%~5%的额定频率偏差,无功下垂按3%~5%的额定电压偏差来取。
测量环节要特别重视:P_out和Q_out是通过输出电压电流计算并滤波得到的,滤波时间常数直接影响功率反馈的延迟,进而影响整个VSG的动态。通常基波功率测量用二阶低通滤波器,截止频率取几十赫兹,既能滤掉纹波又不至于相位滞后太多。我调试时遇到过,截止频率取到100Hz以上,功率纹波直接灌进VSG频率方程,输出频率开始“抖”;取低了又会让功率环变得迟钝。这块需要结合开关频率和控制器算力来折中。
3.3 双闭环与调制层:虚拟转子最终要落到占空比
VSG模型产出的不是开关信号,而是一个三相电压参考,包括幅值和相位。这个参考和实际输出电压之间的跟踪,靠的是典型的电压-电流双闭环。电压外环让实际电容电压跟踪VSG给定,电流内环加速动态、保护器件。在dq旋转坐标系里做比较顺手,PI参数好调;在静止abc坐标系里做能省掉坐标变换,但对控制延迟更敏感。
双闭环输出是调制波,再交给三电平SVPWM模块,生成ANPC桥臂的开关序列。三电平SVPWM比两电平复杂不少,扇区多、矢量多,还需要在调制层嵌入中点电位平衡算法。好在现在DSP算力足够,一个20kHz控制周期的完整三电平SVPWM加中点平衡运算,在主流浮点DSP上都跑得动。
这里必须提醒一句:ANPC的桥臂开关序列还有一个容易忽略的点,就是死区插入时辅助开关的动作顺序。如果处理不好,换流路径会发生不连续,轻则波形毛刺,重则直接烧管子。我第一次调试时就在P→O切换瞬时看到一次电流尖峰,后来排查发现是辅助管和主管的驱动逻辑差了半拍,属于典型的硬件和算法的交界问题。
3.4 虚拟阻抗和输出限幅:保护虚拟转子不“失控”
一台真实同步发电机不需要专门的限流逻辑,因为它有巨大的同步电抗和定子阻抗,短路电流天然受限。而VSG在算法上产生的电压源如果直接接出去,故障时几乎没有物理限流,所有电流承受全靠电力电子器件的过载能力,这是不现实的。所以VSG工程实现里必须加虚拟阻抗和限幅环节。
虚拟阻抗的本质,是在VSG产生的内电势之后串联一个计算出来的阻抗,用电压方程按输出电流计算压降,再从电压参考里扣掉:
V_ref = V_VSG - (Rv + jωLv) · i_out其中Rv和Lv就是虚拟电阻和虚拟电感。这个阻抗会让逆变器的外特性看起来像同步电机的定子电抗,在电网电压骤降时提供天然限流能力。虚拟电阻可以增加阻尼、抑制谐波谐振,虚拟电感和电网阻抗一起,决定了弱电网下的失稳风险。
限幅环节同样不能省。一般做法是:对内电势幅值和相位分别限幅,对输出电流做过流限幅,甚至可以在电流极限内主动切换成恒流输出模式。这个策略直接关系到电网故障时逆变器能不能安全穿越,而不是瞬间炸管。说白了,VSG玩的是“看起来像发电机”的仿真外衣,但下面必须垫好实实在在的保命逻辑。
4. 实操:从仿真搭建到样机联调的一条完整链路
4.1 仿真平台怎么选、怎么搭才不会白费功夫
做这类系统,通常先用MATLAB/Simulink,配套PLECS工具箱做半导体级模型。PLECS的优势是开关管损耗和热模型比较准,对ANPC这种强调损耗均衡的拓扑特别重要。仿真模型分三步搭:第一步是主电路,包含直流源、母线电容、ANPC桥臂、LC滤波器、并网开关和电网模型;第二步是控制器,VSG外环、电压电流双闭环、三电平SVPWM、中点平衡;第三步是测试工况,用功率阶跃、并网预同步、电网电压扰动三个典型场景检验控制逻辑。
我的个人经验是,仿真阶段务必先做“逻辑验证”,再做“性能标定”。有不少人上来就追求仿真波形好看,各种参数一顿调,实际上连控制逻辑是否正确都没验证过。最稳妥的路径是:第一步给逆变器挂纯阻性负载,看能不能起稳、输出电压波形正不正;第二步断开电网开关,验证预同步锁定相位;第三步合闸并网,做有功、无功阶跃。
有条件的话,更进一步露半实物仿真更贴近真实。用实时仿真器配实际控制器,这一步能提前暴露很多采样延迟和数值精度的问题。比如我后来在样机上发现的200微秒总延迟,纯离线仿真根本看不出来,半实物仿真一跑,控制滞后带来的相位差马上就显现了。
4.2 关键参数的计算过程
这里以一套10kVA / 380V / 50Hz的实验平台为例,把参数计算流程从头走一遍。系统额定容量S_base = 10kVA,线电压380V,直流母线电压600V,输出LC滤波器电感2mH、电容20μF,开关频率10kHz。
第一步,算虚拟惯量J。先定惯性时间常数H,它表示虚拟转子在额定功率下从静止加速到额定转速需要的时间,一般取1~5秒。VSG模拟的“转子轻重”就靠H控制。取H=2s,那么:
J = 2H · S_base / ω0² = 2 × 2 × 10000 / (2π × 50)² ≈ 0.41 N·m·s²这个数值的物理含义是:逆变器的虚拟转子相当于一个0.41公斤·米平方的转动惯量。功率一不平衡,它的转速不会瞬间变,而是以有限斜率平滑变化。
第二步,算虚拟阻尼Dp。按有功下垂2%设计,即满载输出10kW时频率偏差1Hz。稳态时虚拟阻尼力要平衡功率差,所以:
Dp = (P_max / ω0) / Δω_max ≈ (10000 / 314.16) / (2π × 1) ≈ 5.1 N·m·s/rad第三步,算下垂系数。有功下垂2%,对应频率偏差1Hz:
Kp = P_max / Δω_max = 10000 / (2π × 1) ≈ 1592 W·s/rad无功下垂按5%电压偏差设计,满载10kvar对应19V电压偏差:
Kq = Q_max / ΔU_max = 10000 / 19 ≈ 526 Var/V把这些数据整理成一张表,参考起来很方便:
| 参数 | 取值 | 设计依据 |
|---|---|---|
| 惯性时间常数H | 2s | 中等容量系统的典型值 |
| 虚拟惯量J | 约0.41 N·m·s² | 由 H 和容量计算 |
| 虚拟阻尼Dp | 约5.1 N·m·s/rad | 满载对应1Hz频差 |
| 有功下垂Kp | 约1592 W·s/rad | 2%额定频率偏差 |
| 无功下垂Kq | 约526 Var/V | 5%额定电压偏差 |
需要强调,这套值只是理论出发点。实际系统阻尼会受到滤波器、采样延迟和数字控制延迟的影响。样机调试时通常要把Dp调大一点、Kp调小一点才能稳住,理论上算出来的参数只能作为起点。
4.3 样机联调:从母线得电到并网合闸
仿真和实物最大的差异在时序和采样。实物联调必须分层进行。
第一层,直流源给母线加电,重点检查ANPC桥臂驱动波形、死区时间和辅助开关的换流时序。这一步最容易发现驱动互锁逻辑错误,尤其P→O→N切换瞬时,如果辅助管和主管的动作顺序不对,轻则烧驱动芯片,重则直通炸模块。
第二层,开环跑调制。设定一个固定调制信号,不接VSG闭环,观察三相滤波输出电压的幅值和波形质量,确认三电平SVPWM扇区切换、中点电压平衡算法都工作正常。开环时我会用示波器盯住母线中点电位,确认它没有出现低频振荡。
第三层,接上阻感负载,依次把电压环、电流环闭环跑通。调好PI之后,再引入VSG外环。注意第一次上VSG,给定功率先设成零,不要直接给额定功率。确认虚拟功角缓慢建立,电网电流接近零,再合闸并网。
第四层,做动态测试。给有功功率指令从2kW阶跃到6kW,记录频率响应和中点电位波形;再模拟电网电压跌落3%~5%,看VSG能不能支撑电压而不是瞬间跳机。整个流程走下来,这套系统才算具备基本的并网运行资格。
5. 调试实录:踩过的坑和排查方法
5.1 虚拟惯量变大,系统反而更晃了
有段时间我误以为虚拟惯量调大,系统更重、应该更稳,于是把J从0.5一路调到1.5,结果功率阶跃响应不仅没变稳,反而出现了持续的低频功率振荡。示波器里看到虚拟频率像个荡秋千一样来回摆,幅度越来越大。
后来理清楚原因了:J变大让功率环变慢,和电流内环的耦合程度提高,系统阻尼比下降,自然变晃了。问题不在J一个参数上,而是J和Dp的比值决定了虚拟转子的振荡特性。J/Dp增大,振荡频率降低,但衰减也变慢;必须保证阻尼比在0.7左右,系统才会有合格的衰减能力。我的调整方向是:把J和Dp按比例同时增大,再用实际阶跃响应看衰减速度,边调边看波形。经验做法是先按比例配好初值,再在10%范围内来回微调,优先保证稳定,再去追求支撑强度。
5.2 并网瞬间电流过冲
实物第一次并网时,明明预同步已经把相位锁住了,但合闸瞬间还是来了一个明显的冲击电流。排查后发现关键问题出在:预同步只对齐了相角,没有对齐幅值。虚拟内电势幅值和电网电压差了将近8V,两个电压源之间的差在合闸瞬间产生了一圈无功冲击电流。
从此以后,我的做法是预同步阶段同时检查三个量:相位差、幅值差、频率差。相位差控制在1度以内,幅值差控制在额定电压的1%以内,频率差控制在0.05Hz以内,才允许合闸。另外,合闸指令最好在电压过零点附近发出,能进一步降低冲击。
5.3 中点电压漂移差点逼停机
长时间运行测试的时候,我观察到母线中点电压漂了二十多伏,两只串联分压电容严重不均压,其中一只电压已经逼近额定上限,再继续跑下去很可能直接损坏电容。问题根源找到了:中点平衡环的带宽设得太低,加上VSG有功功率偶尔阶跃,中点电容不断积累净电荷,平衡回路来不及消化。
解决办法是把中点平衡PI参数往上调,同时给冗余O状态切换算法增加了电流方向判据,按电流方向分配每个周期的充放电时间。修正之后,中点电压波动从原来的20V降到了4V以内,后续长时间运行再没出过这种问题。这件事给我一个教训:中点平衡环的带宽必须和VSG功率环的带宽匹配,不能单看稳态波形还行就草率收工。
5.4 死区与采样延迟带来的谐波问题
ANPC换流比两电平复杂,死区时间设置不当会造成导通路径的不确定性,输出波形里会出现明显的5次、7次谐波,轻载小电流时尤其严重。后来我补了死区补偿:根据电流方向对死区影响做电压修正,在电流过零附近加一个滞环判断,避免换向抖动。
另外,数字控制系统的延迟问题也不能忽略。10kHz采样频率下,一个控制周期就是100μs,再加上ADC采样保持、控制运算、PWM幅值更新的时间,总延迟往往接近200μs。对应50Hz基波,这个延迟大约是3.6度的相位滞后。仿真模型中如果没把这拍延迟建出来,实测相位响应和仿真会差一大截。所以建议大家在离线仿真里一定要加入一拍延迟模块,这样调出来的PI参数搬到实物才不用大改。
最后顺手分享一个细节
整个ANPC-VSG系统做下来,我最深的体会是:VSG的核心算法并不神秘,真正决定项目成败的,往往是别人文档里不会写的那层硬件细节和参数匹配问题。虚拟惯量和虚拟阻尼是两个互补的旋钮——惯量大,支撑好,但千万不要忘了补阻尼;阻尼大了,响应慢,又要回头调整下垂系数。任何一个环节调参,都要回头看看跟它耦合的相邻环会不会被带偏。
另外有个小技巧可以分享。仿真平台里最好把“参数初值”和“现场调试参数”分开存两套文件。仿真里按理论算出来一套很好看的数值,拿到样机上先叠加上一倍的阻尼,把系统跑稳了再逐步朝理论值靠拢。这个步骤我自己每次都用,能省下很多来回改代码的时间。希望这篇东西能帮你在ANPC和VSG这条路上少走几步弯路。