搞并网控制的人应该都有同感,虚拟同步机(VSG)这个方向,论文里看着挺热闹,真到自己搭模型的时候,各种坑一个接一个。尤其是把电网电压设置成不平衡工况后,原来平衡电网下跑得好好的控制策略,立刻原形毕露:电流波形开始扭曲、有功功率出现二倍频波动、直流侧电压跟着抖,甚至直接触发保护导致仿真发散。这套“不平衡电网电压下虚拟同步VSG控制并网PR控制研究”的Simulink仿真,核心就是解决这个问题。
简单说一下这套模型是干什么的:它以一台三相电压型并网逆变器为对象,外环采用VSG模拟同步发电机的转动惯量和阻尼特性,内环电流控制没有用常规的dq同步旋转坐标系PI,而是采用了能直接跟踪正弦交流信号的PR控制器,同时针对不平衡电网下出现的负序分量做了专门处理。它能完整复现不平衡电压跌落、单相短路等工况,并比较不同控制目标下的波形差异。适合正在做并网逆变器控制、VSG相关课题的在校学生,以及刚入门新能源发电控制算法、想在Simulink里把VSG控制完整跑通的工程师参考。
1. 方案整体思路拆解:为什么是VSG加PR,而不是更常规的组合
1.1 并网逆变器控制的基本矛盾
常规并网逆变器多是“PQ解耦控制”,在电网电压理想的条件下,通过锁相环(PLL)锁定电网相位,然后把三相电流变换到dq旋转坐标系,用两个PI控制器分别控制有功电流和无功电流。这套方案成熟可靠,在平衡电网下性能很好。但它有一个根本前提:电网三相电压必须平衡,PLL锁出来的相位才准确。一旦电网不平衡,电压负序分量叠加进来,dq坐标系下的电流解耦就不彻底,PI控制器的带宽又有限,结果就是并网电流畸变,功率瞬时值出现剧烈波动。
VSG控制则从另一个角度切入:它把逆变器模拟成一台同步发电机,外特性上具备同步机的惯性和阻尼。对电网来说,VSG像是一个“友好”的发电单元,可以参与系统频率和电压支撑。但对内环来说,VSG只给出了电压幅值和相角指令,真正决定并网电流质量的是电流内环。这部分如果沿用PI,在不平衡工况下依旧会遇到同样的问题。
1.2 PR控制器选型的逻辑
在静止abc坐标系或αβ坐标系下,并网电流是50Hz的正弦量。经典控制理论告诉我们:PI控制器对阶跃信号可以达到零稳态误差,但对正弦信号做不到——因为PI在交流频率处的增益是有限的。要想对交流信号实现无静差跟踪,最直接的办法是把控制器增益在目标频率处拉到无穷大,这就是谐振控制器的基本思想。
PR控制器的传递函数可以在谐振频率处提供一个很高的增益,同时不影响其他频率段的响应。这意味着,电流环给定值直接给正弦指令,PR就能以很小的稳态误差跟踪它,不再需要先把三相电流变换到dq再做PI。在Simulink里,这省去了一组Park变换,也让控制结构更加直观。
在不平衡电网工况下,PR的另一个优势体现出来了:正序和负序分量在αβ坐标系下都表现为50Hz正弦量,只是旋转方向相反。也就是说,PR控制器天然可以同时处理正序和负序电流,不需要像dq坐标系下那样拆分正负序两个旋转坐标,再用两组PI分别控制。这让模型结构简化了不少,调试周期也短得多。
1.3 VSG外环与PR内环的配合方式
整套系统采用“VSG功率外环 + 电压合成 + 电流PR内环”的分层结构。VSG根据实时有功功率和无功功率,模拟同步机的转子运动方程和励磁调节方程,计算出虚拟内电势的幅值、相位和频率,然后合成三相参考电压。这个参考电压经过电压电流计算,转化成电流内环的参考值,由PR控制器跟踪输出。
这里有一个容易忽略的细节:不平衡电网下,瞬时功率本身含有二倍频分量,如果直接把这种含波动的功率反馈给VSG的转子方程,虚拟频率和相位会被污染,导致参考电压质量变差。所以功率反馈通路必须做滤波或陷波处理,把负序分量造成的100Hz波动滤掉,让VSG只看正序功率。这个点我会在后面实操章节细讲。
2. 不平衡电网下VSG控制的底层原理与建模细节
2.1 不平衡电压的对称分量拆解
三相对称系统里,电压只包含正序分量,但在不平衡状态下,电压可以拆成正序、负序和零序三组对称分量。三相三线制并网逆变器没有零序通路,所以重点只关心正序和负序。
在αβ静止坐标系下,正序电压矢量逆时针旋转,负序电压矢量顺时针旋转,合成后的电压轨迹就是一个椭圆,而不是标准圆。这个椭圆的长短轴比例直接反映了不平衡度。建模时,通常用一个“单相电压跌落”或者“两相电压跌落”来模拟不平衡,比如让A相电压跌落20%,其余两相保持不变。
用数学表达式表示:
- 正序分量在αβ下:v_alpha_pos + j*v_beta_pos 以角速度ω逆时针旋转;
- 负序分量在αβ下:v_alpha_neg + j*v_beta_neg 以角速度ω顺时针旋转。
合成电压可以写成 V = V_pos * e^{jωt} + V_neg * e^{-jωt}。
这个表达式很关键。它解释了为什么负序分量的存在会导致功率中出现二倍频波动:瞬时功率本质上是电压和电流共轭的乘积,正序电压乘负序电流,产生的项包含e^{j2ωt},换算成频率就是100Hz。这个道理贯穿整个不平衡控制策略,明白它,后面调试时的排查思路就清晰得多。
2.2 控制目标的取舍:电流平衡优先还是功率恒定优先
不平衡工况下,有些事情天生顾此失彼。你不可能同时做到并网电流三相对称、有功功率无波动、无功功率无波动。控制目标只能三选二,甚至只能选一个。
常见的控制目标有三类:
- 目标一:抑制负序电流,保证并网电流三相对称。此时有功功率和无功功率都存在二倍频波动。
- 目标二:抑制有功功率波动,让输出有功保持恒定。此时电流必然不对称,无功功率也会波动。
- 目标三:抑制无功功率波动,让无功恒定。此时电流不对称,有功功率波动。
在VSG框架里,默认目标一般选择目标一,也就是电流平衡。原因很简单:VSG本身的价值是向电网提供惯量和支撑,如果并网电流都不对称,那对电网来说反而成了新的扰动源。而且抑制负序电流后,直流侧电压的波动也相对较小,对逆变器安全运行更有利。
具体实施时,负序电流抑制可以通过在电流环参考值中不加入负序分量来实现。也就是说,正序部分正常跟踪,负序部分给零参考,PR控制器就会把实际的负序电流压下去。这也是PR结构相对PI的一个自然优势——参考值直接在αβ坐标下给正弦指令,正负序无需繁琐分离。
2.3 功率计算与100Hz陷波器设计
VSG需要实时计算有功功率P和无功功率Q。标准方法是瞬时功率理论:
- P = 1.5 * (v_alpha * i_alpha + v_beta * i_beta)
- Q = 1.5 * (v_beta * i_alpha - v_alpha * i_beta)
在不平衡电网下,这个瞬时功率包含直流分量和100Hz交流分量。直接把这个P送进转子运动方程,虚拟频率会抖得很厉害。所以需要在功率计算之后接一个100Hz陷波器,或者用截止频率明显低于100Hz的低通滤波器。
陷波器比低通滤波器好在一点:它对50Hz附近的相位影响更小,不会把VSG的惯量响应特性拖慢太多。设计陷波频率f_n = 100Hz,陷波深度通常在15dB以上就够用。在Simulink里,可以用二阶带阻滤波器模块,也可以直接写传递函数: G_notch = (s^2 + ω_n^2) / (s^2 + 2ζω_n s + ω_n^2) 其中ω_n = 2π*100 rad/s,ζ取0.5~0.7。
如果嫌陷波器调起来麻烦,一阶低通滤波器截止频率设20Hz也能凑合,代价是VSG的虚拟惯量响应会慢一些,仿真波形启动时长得更“肉”。
2.4 负序分量提取的工程实现
虽然PR控制器可以同时处理正负序,但如果你想实现“电流平衡”之外的目标,比如有功恒定,就必须知道负序电流的实时值,才能设计相应的补偿项。负序提取方法很多,工程上最常用的是延迟信号消除法。
它的原理是利用正负序在αβ坐标下的旋转方向差异:正序在αβ下超前90°,负序滞后90°。把当前采样信号延迟四分之一周期,再和原始信号做加减运算,就能分离出正序和负序。具体公式不展开,但Simulink里实现就一个Transport Delay模块配合加法减法,非常轻量。
另一种做法是在正序旋转dq坐标下观察负序分量:负序在正序dq坐标里表现为100Hz的交流量,用陷波器或者低通滤波器滤掉这个100Hz,剩下的就是正序的dq直流分量。反过来,在负序旋转dq坐标下观察正序,同样是100Hz交流,滤波后得到负序dq分量。这种方法多一两次Park变换,代码量大一点,但理解起来更直白。
调试负序提取的时候要特别注意,延迟时间必须严格等于电网周期的四分之一,也就是0.005s。电网频率一旦偏移,提取精度就会下降。这也是为什么把PR配合VSG一起用会更稳,PR对频率偏移本身不太敏感,可以有效掩盖提取延迟造成的误差。
3. PR控制器参数设计与离散化要点
3.1 理想PR与准PR的区别
理想PR控制器的传递函数为: G(s) = Kp + 2Kis / (s^2 + ω0^2)
它在谐振频率ω0处的增益理论上无穷大,零稳态误差。但理想PR有两个工程上的麻烦:一是谐振点无穷高的增益让系统对频率偏移极为敏感,电网频率从50Hz漂到49.8Hz,增益就掉一大截;二是在连续域设计时,谐振极点落在虚轴上,离散化后很容易出现数值振荡。
所以实际工程几乎都用准PR: G(s) = Kp + 2Kiωcs / (s^2 + 2ωc*s + ω0^2)
ωc是谐振项的带宽,通常在5~20 rad/s之间。ωc越大,带宽越宽,对频率偏移的容忍度越高,但谐振点的峰值增益也会降下来。设计时折中,一般取2π*(1~3)rad/s,既能兜住49.8~50.2Hz的偏移,又有足够高的峰值增益。
3.2 Kp和Ki怎么定
PR参数设计可以先按经典“Kp定带宽,Ki定增益”的经验来。
Kp决定控制器的中高频增益,影响动态响应速度和稳定裕度。在Simulink模型里,可以从Kp = 10开始试,观察电流阶跃响应的超调量,再微调到15~20。如果Kp太大,电流跟踪会振荡,尤其是滤波电感比较小的时候。
Ki决定谐振频率处的增益大小。准PR的峰值增益大约是Kp + Ki/ωc。理论上Ki越大,稳态误差越小,但Ki过大会导致谐振峰过尖,系统抗频率扰动能力变差。以一台10kW逆变器为例,L=2.5mH,开关频率10kHz,常用参数范围:Kp=12~18,Ki=800~2000,ωc=2π*1.5。当然这是参考值,具体值还要根据直流母线电压和电感量换算折算。
3.3 离散化方法选择
在Simulink中做离散仿真,PR控制器的离散化方法直接决定模型能不能跑起来。ZOH离散准PR在谐振频率处容易产生偏移,尤其是采样频率不够高的时候。推荐用双线性变换(Tustin),并且在变换前对谐振频率做预畸变补偿。
预畸变的思想是:双线性变换会压缩频率轴,导致离散后的谐振频率明显低于设计值。解决方法是把设计频率故意抬高一点,补偿压缩效应。手工计算麻烦,但Simulink的离散传递函数模块自带这种方法。实战中也可以用更高采样频率来摊薄这个误差——开关频率10kHz时,Ts=1e-4,Tustin方法引起的谐振偏移通常只有0.1Hz以内,实际影响很小。
如果你用的是变步长仿真,建议把PR控制器的采样时间单独指定为固定步长,比如1e-4s,避免仿真步长跳动导致谐振项数值不稳。这个经验很关键,我见过不少模型明明参数没问题,就是一直振荡发散,最后发现是控制器和主电路用了一套变步长,谐振极点附近误差一团糟。
3.4 多重PR还是单PR
不平衡电网下的核心频率是50Hz,PR控制器的主要任务就是跟踪基波。但如果电流畸变明显,想要进一步降低谐波,可以在PR控制器里并联多个谐振项,形成多重PR结构,例如在50Hz之外并联150Hz、250Hz的反向谐振。
多重PR的Simulink实现就是把几个传递函数直接相加,Kp共用一个。这种结构能有效抑制特定次谐波,但每次加一个谐振项,系统相位裕度都会掉一点,不能无限制叠加。以我经验,并网电流控制一般补到5次谐波(250Hz)就够用了,再往上收益很小,调试成本却翻倍地涨。
4. 基于Simulink的VSG并网模型搭建全过程
4.1 主电路模型参数选择
以某10kW三相并网逆变器模型为例,给出可直接参考的初始参数:
| 参数 | 数值 |
|---|---|
| 直流母线电压 | 700V |
| 电网线电压有效值 | 380V |
| 电网频率 | 50Hz |
| 开关频率 | 10kHz |
| 滤波电感L | 2.5mH |
| 寄生电阻R | 0.1Ω |
| 额定有功 | 10kW |
| 额定无功 | 0kVar |
主电路用三相全桥逆变器加L滤波,电网侧用三相可编程电压源模拟不平衡工况。三相可编程电压源可以在仿真运行中设置电压跌落时间,方便观察系统动态响应。
这里给新人一个忠告:滤波电感不能只看感值,寄生电阻太小的话,空载启动时电流环容易振。模拟里故意留0.1Ω的寄生电阻,一是贴近实际,二是让PR控制器有个天然阻尼,波形更好看。
4.2 VSG本体模块内部结构
VSG模块在Simulink里可以做成一个子系统,内部按功能再分三层:
第一层是功率计算。输入是并网点三相电压和三相电流,经过3/2变换得到αβ分量,然后计算瞬时功率。功率输出接一个100Hz陷波器,滤掉二倍频波动。
第二层是转子运动方程。核心公式是: J * dω/dt = P_ref - P_meas - D*(ω - ω_n) 其中J是虚拟惯量,D是阻尼系数,ω_n是额定角速度。这一层输出虚拟角速度,积分后得到相位θ。Simulink里面用积分器模块搭建,初始值设置为电网初始相位。有一点要注意:启动瞬间P_meas为0而P_ref给定10kW,如果不加限幅,虚拟频率会直接冲上去,仿真第一毫秒就爆了。所以有功功率指令P_ref必须加斜坡启动,或者加一个速率限制器,让功率指令从0慢慢爬升。
第三层是励磁调节。公式是: E = E0 + Kq*(Q_ref - Q_meas) E0是空载内电势幅值,Kq是无功下垂系数。输出的E乘以sin(θ)就可以合成三相参考电压。
4.3 电流内环与调制部分
三相参考电压经过除以直流母线电压,换算成调制度,再经过SVPWM调制得到开关管驱动信号。但这里必须把参考电压再转换成电流参考值。常见做法是,在参考电压后加一个虚拟电阻或电感模型,用PR控制器跟踪参考电流。
实际模型中我建议走“电压外环/电流内环”双环写法:
- 电压环不是传统的DC电压环,而是VSG内电势电压环,把VSG合成出来的参考电压和实际并网点电压做差,经比例或准PI环节后生成电流参考;
- 电流环再用PR跟踪这个参考电流。
这样做的好处是,电流参考值里包含了电压幅值、相位的信息,PR不需要输出占空比,只需要输出电流误差的谐振放大结果,模型更稳定。SVPWM部分可以直接用Simulink自带的“三个比较器加三角载波”方式代替,效果差不多,但搭建简单,方便调试。
4.4 仿真求解器与步长设置
这套模型建议用离散仿真,离散求解器选固定步长,步长定1e-5s。虽然开关频率只有10kHz,但PR控制器的谐振项和SVPWM的三角载波对步长比较敏感,1e-5s能保证电流波形足够平滑。如果用的是变步长ode23tb,也可以跑,但PR模块必须用固定采样时间,我前面提过这个坑。
一个完整10kW模型,固定步长1e-5s,跑0.5s仿真时间,普通笔记本大概需要十几分钟到半小时。如果嫌慢,可以把步长放宽到2e-5s,波形精度略微下降但速度提升明显。建议先跑通功能再用更小步长出图。
5. 仿真结果分析与不平衡工况验证
5.1 平衡电网下的基准波形
先让电网电压完全平衡,跑一遍模型作为基准。稳定后,三相电流应该是幅值相同、互差120°的标准正弦波,THD在1%以内。有功功率稳定在10kW附近,无功功率接近0。这个工况主要验证VSG和PR控制器的参数是否合理,如果这步都过不了,后面的不平衡测试没有意义。
启动阶段能明显看到虚拟频率的超调和恢复过程:有功指令斜坡上升,转子运动方程产生一个频率偏差,经过阻尼系数衰减后回到50Hz。这正是VSG惯量特性的直观体现——如果用普通PQ控制,这个过渡过程几乎是瞬时的,不会有这么明显的“机械”惯性感。
5.2 单相跌落工况下的控制效果
设置A相电压在0.2s时刻跌落20%,保持B、C相不变,运行模型。
电流波形方面,采用负序电流抑制后,三相电流依旧基本对称,只是幅值整体抬升。原因是输出电压不变而电压跌落,功率依然维持在10kW,电流自然增大。如果不做任何处理,A相电流会明显畸变,三相互差不再是120°,波形图上一眼就能看出来。
功率波形方面,负序电流抑制方案下,有功功率的100Hz波动还在,但波动幅值远小于未抑制时的水平。未抑制时,有功功率可能从3kW到17kW剧烈震荡;抑制后,震荡范围能压缩到7~13kW左右。这个对比结果在Simulink的Scope里非常直观。
如果切换控制目标到“有功恒定优先”,电流会变得明显不对称,但有功功率波动几乎消失。这个时候看功率波形,100Hz波动非常小,代价是电流开始出现负序分量。两种方案各取所需,实际项目中要根据电网调度要求来选。
5.3 电压恢复过程的动态响应
0.4s时刻恢复A相电压到正常值,观察系统恢复动态。正常情况下,电流幅值回落,功率波动收敛,整个过程不超过3个工频周期。如果恢复过程中出现振荡,多半是VSG的阻尼系数D偏小,或者陷波器的截止频率太高,把不该滤掉的动态信息滤掉了。把D从15加到30,恢复过程的振荡幅度会有明显改善。
我个人观察发现,PR控制器的恢复速度比PI快不少,因为PR在50Hz处增益高,电网电压突变后,电流误差能在几个毫秒内被谐振项的大增益压下去。但如果Kp调得过高,恢复过程中会出现电流尖峰,判断标准就是尖峰电流是否超过额定电流的1.5倍,如果超了,减小Kp或者加大Ki/ωc的比值。
6. 常见问题与调试技巧实录
6.1 PR控制器离散化后谐振频率偏移
这个现象很典型:连续域仿真时波形很好,换到离散仿真后电流总有稳态误差,或者特定频率附近有明显的振荡分量。原因是双线性变换没有预畸变,离散后的谐振频率从50Hz偏移到了49.5Hz,PR就算在49.5Hz有无穷大增益,50Hz的基波电流也吃不到这个增益。
处理办法有两种:一是改用带预畸变的Tustin变换,二是不改离散公式,直接把谐振频率设成50.2Hz左右做补偿。我一般用后者,因为Simulink里改动更直接,效果也能接受。
6.2 100Hz功率波动滤不干净
陷波器陷波深度不够时,反馈到转子运动方程里的功率仍有残存的100Hz波动,导致虚拟频率和输出电压波形有“包络抖动”。表现为电流波形带有明显的低频调制包络,Scope里看像是一个慢变的幅度调制信号。
排查方法是先断开陷波器,看瞬时功率的FFT分析。正常的陷波效果是100Hz处分量降低至少20dB。如果达不到,把陷波品质因数增大一点,或者改成两级陷波器串联。注意陷波器也会带来相位滞后,两级串联后VSG的动态响应会变慢,启动时频率超调变大,需要同步加大D值来补偿。
6.3 变步长仿真时模型运行很慢甚至卡死
原因基本出在PR控制器或功率计算模块上。解决办法是这些模块必须给固定采样时间,不要走“inherit”自动继承。建议所有控制部分统一用一个固定步长子系统,主电路走变步长,两套解算器之间用“采样保持”模块隔离。这个方法可以显著提升仿真稳定性。
6.4 启动瞬间电流冲击过大
VSG启动时,虚拟内电势相位和电网相位如果对不上,瞬间会有巨大的冲击电流。Simulink模型里最常用的是预同步措施:在并网前先把VSG输出的相位锁到电网相位,启动时就不会有冲击。实现上可以在转子运动方程的输出相位后面接一个PI同步环,在并网开关闭合前强制相位跟随电网。
如果不做预同步,单纯靠减小P_ref的斜坡速率,也能把冲击电流压到可接受范围,但动态响应会变慢,不如预同步来得干脆。
6.5 常见问题速查表
| 现象 | 可能原因 | 排查顺序 |
|---|---|---|
| 电流发散 | PR控制器未离散或采样时间不匹配 | 先查离散化方式,再查采样时间 |
| 电流低频振荡 | Kp过大或VSG阻尼系数过小 | 减小Kp,增大D |
| 启动冲击大 | 未做预同步 | 加相位同步环 |
| 功率波动大 | 陷波器深度不足 | 检查100Hz处衰减量 |
| 仿真速度极慢 | 变步长下PR自动继承采样时间 | 控制模块固定采样时间 |
| 电压恢复时超调大 | Kp太大或死区设置不当 | 减小Kp,检查死区时间 |
| 负序电流压不下去 | 参考值里混入了负序分量 | 检查电流参考生成逻辑 |
7. 建模之外的一点体会
这套模型我前后调了很多轮,最大的感受是:不平衡电网下做并网控制,真正难的不是PR参数,也不是VSG方程本身,而是正负序功率耦合的理解。只要想清楚了瞬时功率为什么会波动,为什么控制目标不可能全部满足,模型里的每个模块就都有了明确的存在理由。
Simulink的Scope波形只能告诉你结果,不会告诉你原因。所以每次调试前,我都会先在纸上写出当前工况下电压电流的序分量关系,再对照波形看差异。这个习惯帮我把不少“玄学发散”变成了可以定位的数学问题。
后续想扩展的话,可以在这个模型基础上叠加弱电网特性,比如加入电网阻抗模拟强弱电网切换,或者做低电压穿越的改进版VSG策略。甚至可以换成达芬奇平台做硬件在环测试,验证PR控制在实际DSP上的计算延迟和离散化效果。这个方向工况丰富,实验做起来也很有说服力。