做变流器控制这几年,我有一个很深的体会:算法再漂亮,拓扑跟不上或者负载太恶劣,最后都是纸上谈兵。这次想分享的是把虚拟同步发电机(VSG)控制用在一台A型有源三电平(ANPC)逆变器上,并专门在非线性负载下做验证的经历。之所以选这个组合,是因为分布式电源和微电网越来越强调电网支撑能力,传统PQ控制解决不了频率和电压的主动支撑问题;与此同时,两电平拓扑在电压等级和效率上的瓶颈越来越明显,三电平甚至更高级的ANPC拓扑开始成为储能PCS和光伏逆变器的升级方向。把VSG和ANPC放在一起,等于用一个能模仿同步发电机外特性的控制算法,去驱动一个谐波表现和效率都更好的功率级。这篇文章会从拓扑选型讲起,把VSG控制环拆开,再落到Simulink建模、非线性负载设置、参数整定和问题排查,适合正在做微电网控制、储能变流器或逆变器控制仿真的工程师参考。
1. 项目背景与整体设计思路
1.1 为什么把VSG和ANPC放在一起
在分布式光伏、储能和微电网里,逆变器如果只是“并网发电”,用传统的PQ控制就够了。但这两年越来越多项目要求逆变器具备电网支撑能力,也就是当电网频率或电压波动时,变流器能不能像同步发电机那样主动提供惯性和阻尼,而不是马上跳机。VSG就是在数字控制器里“造”出一个虚拟转子,让变流器的外特性接近同步机。而ANPC这种三电平拓扑,则是在功率级上保证电压质量与效率足够好。两者组合起来,等于把“电网友好”和“负载友好”一起做掉,这在储能PCS和光储一体机里面很有前景。
实际项目中,单独做VSG或者单独做ANPC都不算新鲜,但真正在非线性负载下把两者做好,需要跨过很多坑。非线性负载的谐波电流会进入功率计算,影响VSG的频率输出;也会加剧三电平中点电位波动。所以这个题目其实是在考验“控制算法”和“功率拓扑”的协同能力,而不是简单地把两个模块拼在一起。
1.2 拓扑选型:NPC、ANPC与INPC到底有什么区别
我最早学三电平,先用的是二极管钳位NPC,后来才转到ANPC。很多人一上来就问NPC和ANPC、INPC有什么差别,我把它们放在一个表格里看就清楚很多:
| 拓扑 | 钳位器件 | 主要特点 | 中点电位控制 | 损耗分布 |
|---|---|---|---|---|
| NPC(二极管中点钳位) | 每相2个二极管 | 器件少、控制成熟 | 可用冗余小矢量,但能力有限 | 内外管损耗不均匀,调制比高时易发热 |
| INPC(I型中点钳位) | 二极管/IGBT组合 | 与NPC同源,常作为I型三电平统称 | 同上 | 同上 |
| ANPC(有源中点钳位) | 每相2个IGBT替换二极管 | 钳位管可控,换流路径灵活 | 可主动调整钳位状态,平衡能力更强 | 损耗可更均匀分布,散热设计更友好 |
什么叫“A型有源三电平”?其实就是ANPC的常见叫法,A型强调钳位支路由有源开关组成,而不是被动的二极管。相比NPC,ANPC把两个钳位二极管换成两个带反并联二极管的IGBT,换流时可以主动选择电流走哪个开关,这样一来开关管损耗更均衡,中点电位控制也更灵活。代价是驱动电路、保护逻辑和功耗设计都更复杂,硬件成本高一些。
至于INPC,有些场合指传统I型NPC三电平,和T型三电平区分;也有资料把“INPC”和“ANPC”放在一起对比。你搜索“ANPC和INPC区别”时,最常见的结论是:INPC/NPC是被动钳位,ANPC是主动钳位,ANPC在中点电压平衡和损耗均衡上更有优势。如果项目对谐波、效率和散热都很敏感,ANPC通常是更合适的选择。
1.3 非线性负载为什么是真正考验
做逆变器控制的人都知道,线性负载下的正弦波不能说明问题。真正看一台机器好不好,要看它带整流桥、开关电源、UPS这类非线性负载时的表现。这类负载会在每个工频周期产生很窄的电流尖峰,里面包含大量5、7、11、13次谐波。谐波电流流经线路阻抗和滤波电感,会让输出电压发生畸变,THD明显上升。
对VSG控制来说,非线性负载带来三个直接麻烦:第一,瞬时有功和无功功率的采样里面带谐波脉动,如果不滤波,VSG输出的频率和电压基准会跟着抖动;第二,谐波电流会在三电平中点产生低频和中频纹波,导致两个直流电容电压不对称;第三,谐波电流会加重部分开关管的电流应力,如果ANPC的损耗均衡策略没有考虑谐波工况,可能会在PCB或散热设计上留下隐患。
所以,在仿真阶段就加入非线性负载非常有必要。许多论文只展示纯电阻负载下的波形,真正落到项目里往往不够。这也是我把“非线性负载”单独放进项目标题里的原因:它不是一个锦上添花的场景,而是验证VSG和ANPC能不能落地的试金石。
2. 核心原理拆解
2.1 VSG两个核心环路:有功调频和无功调压
VSG的实现方法很多,但骨架基本一致:外加一个同步发电机数学模型,把直流侧的能量通过逆变器释放出来,外特性表现为有功-频率下垂和无功-电压下垂。
有功环模仿转子运动方程:
J(dω/dt) = Pm - Pe - Dp(ω - ωn)
J是虚拟惯量,ω是虚拟角速度,Pm是虚拟机械功率,Pe是实测电磁功率,Dp是阻尼系数,ωn是额定角频率。看到这个方程,你就能理解VSG是怎么“增加惯性”的:负载突增时Pe突然变大,Pm不会立刻跟上,于是dω/dt变为负,频率缓慢下降,而不是瞬间跌落。之后一次调频把Pm抬高,频率稳定在新的工作点。
Pm通常写成:Pm = Pref + Kp(ωn - ω)。Pref是有功功率指令,Kp是频率下垂系数,相当于同步发电机调速器。无功环则简单一些:E = En + Kq(Qref - Qe)。E是虚拟电动势幅值,En是额定电压幅值,Qe是实际无功功率,Kq是电压下垂系数。把E和θ合成三相参考电压,再送进电压电流双闭环,就能让逆变器输出接近同步发电机的电压源特性。
实际工程里,J和D的取值非常关键。J太小,系统没有惯性,负载突变时频率跌得厉害;J太大,功率和频率振荡剧烈,会拖慢动态响应。D的作用是给虚拟转子加“刹车”,D太小阻尼不足,D太大会让调频能力变弱,甚至让VSG失去同步发电机的柔性特征。
2.2 ANPC三电平逆变器的工作机理与调制基础
ANPC每相桥臂可以输出三种电平:正母线电平+Vdc/2、零电平和负母线电平-Vdc/2。正常工作时,每相四个主开关管里只有两个同时导通,通过不同的开关组合,电流可以流经输出端到正母线、中点或负母线。三电平的好处是单管耐压只需直流母线电压的一半,同时输出电平数增加,PWM电压台阶更小,滤波后THD更低。
调制方式上,最常用的是三电平SVPWM和基于零序注入的载波调制。SVPWM的三电平小矢量不是唯一的,同一输出电压矢量可以由不同的开关状态组成,这些开关状态对中点电流的影响正好相反。所以利用小矢量冗余,就能够在不同工况下调整中点电压,让它自动回到平衡点。
ANPC和NPC的关键差别就在这里。NPC只有两个钳位二极管,中点电流路径固定,调制策略能影响的空间有限;ANPC的钳位IGBT被主动控制后,换流路径更多,中点电位的调节手段也更丰富。比如在某些ANPC换流状态下,可以用钳位管把输出电流接到中点,相当于给中点充放电荷,平衡能力更强。但这也意味着PWM生成不能只靠简单的查表,必须把钳位开关的控制逻辑一起做进去。
2.3 非线性负载下VSG控制要解决的三个矛盾
非线性负载一旦接上,VSG控制主要面临三个矛盾。第一个矛盾是功率环滤波与动态响应之间要取舍。为了消除谐波对功率反馈的影响,可以在功率计算后面加低通滤波器,但滤波时间常数太大,VSG动态响应会变慢,负载突变时频率可能拖沓。我一般把功率反馈滤波时间常数取在20ms到50ms之间,保证50Hz基频信号能通过,同时把谐波成分压下去。
第二个矛盾是输出电压质量与控制带宽之间的矛盾。VSG本身是一个电压源,内阻抗很小,谐波电压容易直接暴露在负载端。要压住谐波,最简单的方法是加大滤波电感和电容,但这样会让控制对象变化,影响VSG的稳定裕度。更好的办法是给电压环增加多个谐振控制器,专门在250Hz、350Hz等谐波频率处提供增益,让输出电压在对应频率附近更硬。
第三个矛盾是中点电位平衡与谐波电流之间的关系。非线性负载谐波电流的流动路径中,有一部分会直接进到中性点,造成直流电容电压脉动。如果在控制里把中点平衡做得太“激进”,又可能和VSG的无功电压环互相干扰。我的经验是,中点平衡控制的增益要小于VSG电压控制环,使两者在时间尺度上分离。
3. 仿真平台搭建与参数整定
3.1 Simulink模型整体架构
用Simulink搭建这套系统,核心是把主电路和控制分开。主电路我用Simscape Electrical里的三相半桥IGBT模块搭ANPC桥,每个桥臂用4个带反并联二极管的IGBT加2个钳位IGBT。如果是早期验证,直接用通用开关模型也可以,但要小心损耗分析不准的问题。控制部分放在普通Simulink域,通过电压电流测量模块获取反馈信号,控制器输出调制波,再送给PWM发波模块。整体结构大致是:
直流电源 -> ANPC逆变桥 -> LC滤波 -> 负载/电网侧 -> 电压电流测量 -> 控制器(VSG环、电压环、电流环) -> PWM生成 -> 驱动桥臂
LC滤波器的参数直接决定控制效果。一般取开关频率的1/10到1/5作为LC谐振频率。假设开关频率10kHz,谐振频率取1kHz左右:f_res = 1/(2π√(LC)) = 1000Hz,在额定相电压220V、额定功率10kW下,我常用L=2mH、C=20μF。这个组合的截止频率在796Hz左右,稍微偏保守,但配合谐振控制器是够用的。
控制子系统里面,VSG环运行在弱实时性要求不高的节拍,可以采用1ms采样;电压环和电流环需要更快,通常取50μs左右;PWM发波则直接和载波同步,在三角波顶点和底点更新占空比。把这些采样周期放在不同模块里,既能保证精度,又能减少仿真负担。
3.2 VSG控制环参数计算与整定
VSG参数的物理单位容易把人绕晕,我习惯按下面这个顺序算。以10kVA、220V(相电压有效值)、50Hz、直流母线700V为例。先定惯性时间常数H,H可以理解为虚拟转子能储存多少倍额定功率的能量,一般取0.5s到5s。取H=2s,则虚拟惯量J = 2H·Sn / ωn² = 2×2×10000 / (314²) ≈ 0.405 kg·m²。这个J对应的是“实际国际单位”,仿真里直接放进积分器没有任何问题,只是数值不大便于观察。
阻尼系数D先用阻尼比来估。VSG有功环本质是二阶系统,阻尼比一般取0.7至1.0。我按工程经验先给D=50,再看负载突变后频率波形的超调量,逐步调整。D太小,频率会来回振荡好几周;D太大,频率响应变慢,而且稳态下垂特性也会被扭偏。
频率下垂系数Kp按一次调频要求定。如果允许0.5Hz频率偏差对应100%额定有功,那Kp = Sn / (2π×0.5) = 10000 / 3.14 ≈ 3183 W·s/rad。无功下垂系数Kq按电压偏差5%对应100%额定无功来取,Kq = Sn / (0.05×311) ≈ 643 Var/V。这样算出的初值基本能跑,后面再根据THD和动态波形微调。
电压环和电流环参数我习惯用带宽法。电流环带宽取开关频率的1/10,也就是fsw=10kHz时取1kHz,ωbw=2π×1000=6283rad/s。用PI调节时,比例增益可取kpi=L×ωbw=2e-3×6283≈12.6,积分时间常数Ti通常取1/ωbw到5/ωbw之间,再通过阶跃响应微调。电压环带宽再取电流环的1/5到1/10,这样两个环路在频域上自然分离,不容易出现振荡。
3.3 ANPC调制与中点电位平衡实现
ANPC的PWM波形生成,我在Simulink里首选“载波比较+零序注入”方案。两个同相层叠三角载波,一个在0到1范围,一个在-1到0范围,调制波经过零序注入后分别和这两个载波比较,得到两路基础PWM。零序注入的作用是等效SVPWM,提高直流电压利用率。最常见的注入量是三相调制波中间值取反,简单又好用。
中点电位平衡可以通过检测Vdc1和Vdc2的差值来实现。我最早用的办法是在三相调制波上加一个零序修正量,修正量的极性和方向根据中点电压差以及输出电流方向确定。公式大概是:Voffset = k_bal × (Vdc1 - Vdc2) × sign(ia)。k_bal不能太大,否则会引入低频振荡;也不能太小,否则平衡速度跟不上负载突变。工程上先给0.05左右,再根据实际平衡速度调整。
如果你的模型里用的是ANPC,中点平衡还有更高级的做法,就是主动改变钳位IGBT的通断状态,让特定电流流入或流出中点。不过这类逻辑写在Simulink里会比较繁琐,我建议先用零序注入法把系统稳定下来,再逐渐加入有源钳位状态的优化,否则一开始就把所有维度叠在一起,很难分清是哪一块引发的振荡。
3.4 非线性负载的建模仿真
非线性负载在Simulink里的建模并不复杂,重点是要接近真实工况。最简单的模型是三相不可控整流桥加直流侧电容和电阻:整流桥模块输出直流,电容C取几百μF到几千μF,电阻R按额定功率取值。负载电流自然就会出现典型的尖峰波形和5、7次谐波。
想模拟更恶劣情况,可以在负载侧并联一个可控谐波电流源,分别注入5次、7次、11次、13次谐波。谐波幅值可以按基波电流的百分比来设置,比如5次谐波8%、7次谐波5%,用来代表一般的非线性负载。更极端的测试里,我会把谐波总畸变率推到20%以上,专门看VSG和ANPC还能不能稳定运行。
做非线性负载仿真时有一个需要特别注意的点:不可控整流桥的二极管换流过程非常容易导致仿真步长过小,仿真速度直线下降。如果只是验证控制策略,可以先用理想二极管模型,再换到详细模型看损耗和换流细节。求解器方面,我一般用离散固定步长,步长设置在5μs到10μs之间,比开关周期小一个数量级,保证PWM和二极管换流都能被捕捉到。
4. 实操过程与核心环节实现
4.1 仿真模型搭建步骤(开环到闭环)
如果你之前只搭过两电平模型,直接跳三电平很容易被中点电位、组合逻辑搞晕。我建议按下面的顺序一步步来,每步都先确认输出再进入下一步:
第一步,先搭主电路和开环PWM。直流母线700V,随便给一个固定调制比,比如0.7,PWM模块按三电平载波比较生成驱动信号,上示波器看桥臂输出。ANPC桥臂输出电压应该在+Vdc/2、0、-Vdc/2三档之间切换,如果只有两档,说明钳位IGBT逻辑或PWM比较方式有问题。
第二步,搭电流内环。在LC滤波电感上测量三相电流,控制器输出电流环PI或者PR结果,生成调制波。此时可以挂纯电阻负载,先把电流波形调正弦,THD降到5%以下再说下一步。
第三步,搭电压外环。把输出电压作为被控量,电压环输出作为电流环参考。这个阶段重点看输出电压稳定性和动态响应。负载突变时,电压跌落要及时恢复,不能出现振荡。
第四步,加入VSG功率环。VSG输出幅值E和相位θ组成的电压参考,替换掉原来的固定电压指令。这时系统开始像一个电压源,有功和无功跟随指令变化。先不要接非线性负载,用RL或者纯阻性负载验证VSG的调频调压特性。
第五步,挂上非线性负载,并加入谐波补偿和中点电位平衡。到了这一步,问题往往会集中爆发:频率抖动、THD高、中点漂移、仿真报错都是正常的,按后面第5节的方法一项项排查。
4.2 关键波形与指标判定
仿真跑起来以后,我一般固定几个窗口,每次都看同一批波形,方便对比:桥臂相电压、滤波后相电压、输出电流、两个直流电容电压差、VSG虚拟角速度、有功无功反馈值。
桥臂相电压波形是三电平的阶梯波,看到的是在+Vdc/2和0、0和-Vdc/2之间切换,而不是像两电平那样在正负母线之间大幅跳变。滤波后相电压的THD是最核心指标,线性负载下要低于2%,非线性负载下通常要低于5%,最好能压到3%以内。如果非线性负载下THD超过8%,先查电压环的谐振补偿够不够,再查中点电位是否正常。
中点电容电压差(Vdc1-Vdc2)应该在0附近波动。稳态时,波动幅度尽量控制在直流母线电压的1%以内,700V母线就是7V左右;如果波动达到几十伏,中点平衡控制基本没有生效。VSG的虚拟角速度波形用来判断惯性是否合理:负载突增时,频率先平滑下降再回升,不能出现多个来回振荡。
4.3 调参顺序与优化经验
很多朋友喜欢一把梭,把所有参数一次性调到位,结果出了问题根本不知道从哪里找。我的建议是先固定一个变量,其他全部用保守初值。完整顺序是:先在线性负载下整定VSG的J、D和下垂系数,再整定电压环、电流环,然后加入非线性负载,最后再加入谐波补偿和中点精确平衡。这个顺序能保证每一步的异常来源都比较清晰。
调J时有一个小技巧。负载突加之后,观察虚拟角速度的变化曲线:如果频率跌得太快,类似两电平直接掉电的感觉,说明J太小;如果频率来回摆了好几圈才稳住,说明J和D的比值不合适,先增大D再适度增大J。我一般把J和D联动调,保持阻尼比在0.7到1之间,这样既不缺惯性,也不会振荡。
谐波补偿的投入也要控制顺序。第一次加非线性负载时,先只加5次和7次谐振控制,看THD和波形是否改善,再逐步加11次、13次。一次加太多次,控制器增益之间可能互相影响,轻则THD没降下来,重则电压环直接不稳定。
5. 常见问题与排查技巧实录
5.1 中点电位漂移或振荡
中点电位漂移是最常见的现象,尤其在不平衡负载和非线性负载下。首先看Vdc1和Vdc2之差,如果是一直偏向一侧,大概率是PWM占空比不对称或者零序注入极性反了;如果是和负载电流同频率的周期性波动,那就是中点平衡控制力度不够。
排查步骤:断开中点平衡控制,确认自然漂移规律;再把平衡控制的输出增益从0慢慢往上加,直到漂移被压住。如果增益加得很大仍然压不住,要检查ANPC的钳位开关是否真的参与了换流。很多仿真只是借了ANPC的名字,主电路里钳位IGBT的驱动逻辑仍然是NPC的,自然不会有ANPC的平衡能力。
5.2 VSG功角振荡和非线性负载谐波放大
功角振荡的典型表现是虚拟角速度波形出现持续低频振荡,频率在几赫兹到十几赫兹之间。常见原因是J、D不匹配,或者功率反馈滤波器截止频率太高。非线性负载下,瞬时有功里带有大量谐波脉动,如果没有低通滤波,这些脉动就会通过VSG方程直接变成频率抖动。
我处理这个问题有三板斧:第一,给功率计算加低通滤波,截止频率取20Hz到50Hz;第二,增大Dp并配合适当增大J,让VSG本身对扰动不敏感;第三,加虚拟阻抗,让VSG输出阻抗呈感性,增强阻尼。特殊情况下,还会加入频率变化率限幅,防止负载切换瞬间频率变化率过猛。
另外要留意谐波放大器效应。非线性负载产生的谐波电流如果在某个频率附近与LC谐振点重合,THD会异常放大。排查方法是扫描电压波形的FFT,看主要谐波频次集中在哪个频率,再针对性地调整LC参数或者加入陷波器。千万不要盲目加谐振控制器的增益,这样容易压下一个频率又放大另一个频率。
5.3 Simulink仿真步长与不稳定
很多仿真“发散”其实不是控制算法不对,而是数值离散问题。三电平PWM加非线性整流桥,强非线性非常考验求解器。我习惯用离散固定步长求解器,步长一般取1μs到10μs。开关频率10kHz时,5μs步长基本够用;如果非线性负载电流尖峰太陡,再降到1μs。步长太大,PWM边沿和二极管换流都会被“平滑”掉,波形和实际差别很大。
建模时还有一个加快仿真速度的办法:把PWM生成和功率电路放在同一采样率,但把VSG功率环放到100μs到1ms的慢采样率中。这样既不会降低控制精度,又能明显减少仿真时间。同步问题要注意,所有采样切换到时间戳对齐,避免不同速率模块之间产生一两个周期的时延。
5.4 参数敏感性速查表
我把主要参数的敏感性整理成了一张表,方便调试时对照:
| 参数 | 增大后的表现 | 减小后的表现 | 整定建议 |
|---|---|---|---|
| 虚拟惯量J | 动态变慢,频率跌得更缓,但容易振荡 | 动态变快,惯性支撑不足 | 阻尼比0.7~1时选合适J |
| 阻尼系数Dp | 振荡衰减快,但响应变钝 | 振荡明显,容易失步 | 配合J一起整定 |
| 频率下垂系数Kp | 频率偏差小,但功率均分变敏感 | 频率偏差大,一次调频能力弱 | 按允许频差0.5Hz计算 |
| 电流环比例增益kpi | 电流响应快,但噪声敏感,易超调 | 响应慢,电流误差大 | 带宽取fsw/10左右 |
| 中点平衡系数k_bal | 中点平衡快,但会干扰电压环 | 中点漂移明显 | 从小到大缓慢增加 |
| 谐波谐振增益 | 特定次谐波压低,但易不稳定 | 谐波抑制不足 | 逐个频次调试 |
这张表不是绝对精确的,但能帮你快速定位问题方向。比如输出电流THD很高,先看电流环响应带宽;中点电压漂移,先看k_bal;频率振荡,先看J和D的组合。按照“变化一个参数、观察一个波形”的原则去做,基本能避开绝大多数调试死循环。
最后再说一点我的实际感受。ANPC和VSG单独拿出来,在教科书里都有成熟方案,难的是把它们集成到同一个系统里,还要带非线性负载稳定运行。这个项目走到最后,我最大的收获不是某个控制公式,而是排序和分解问题的方法:先把VSG功率环做稳,再把三电平中点电位控制接上,最后才去处理非线性负载的谐波电流。每一步都只引入一个新变量,出问题时你才知道该找谁。如果你也在做类似探索,建议不要把期望定在“仿真波形好看”这个层面,而是多观察FFT、中点电位和频率动态这些容易被忽略的细节。等这套系统能从非线性负载下顺利撑过来,再往硬件平台迁移时,心里会踏实很多。