1. 项目概述
1.1 为什么要做虚拟同步机仿真
聊虚拟同步机(VSG, Virtual Synchronous Generator)之前,得先从一个非常现实的问题说起。这两年分布式光伏、储能、风电在电网里的渗透率越来越高,电力电子变流器大量接入,但传统的逆变器控制策略(PQ控制、VF控制)基本都不具备惯性和阻尼特性。直白点说,电网频率波动的时候,普通逆变器是"事不关己"的,它只老老实实按照给定功率输出,电网频率掉了它也不会主动出力,这让电力系统的频率稳定性面临很大压力。
VSG控制就是冲着这个痛点去的。它的本质是让逆变器在控制层面模拟同步发电机的转子运动方程和外特性,让电力电子变流器具备"虚拟惯量"和"阻尼"能力,电网频率扰动时能像真实发电机一样响应。这个方向不管是做微电网、储能变流器还是新能源并网,都是绕不开的核心技术。但VSG的控制链路过长,直接在一台实物样机上调试设备成本高、风险大,所以仿真阶段必须先跑通逻辑。
这篇博文想解决的问题非常明确:如何在Matlab/Simulink里从零搭建一个完整的VSG仿真模型,让它既能并网运行,也能脱离电网独立带负载,并且实现两种模式之间的无缝切换。关键点在于,光有VSG的"外特性"还不够,你必须配上一套响应快、性能稳的电压电流双闭环控制策略,才能让输出波形质量满足要求。文章会从数学模型讲起,一直到双闭环控制器的参数设计,再到具体的Simulink建模过程,最后是调试中踩过的坑。适合有一定电力电子基础、想快速上手VSG仿真的研究生或者刚入行的电力电子工程师参考。
1.2 这套仿真系统能做什么
这个仿真平台的完整功能可以概括为三类典型场景。第一是并网场景,逆变器通过LCL滤波器和电网连接,VSG控制模块接收有功和无功指令,自动调节输出电压的幅值和相位,实现稳定的功率传输。第二是离网场景,逆变器断开与电网的连接,依靠双闭环控制维持输出电压和频率稳定,为本地负载独立供电。第三是模式切换,这也是最考验控制性能的部分,需要从并网模式平滑过渡到离网模式,或者反向切换回去,过程中电压波形不能有大幅度的跌落或者过冲。
整篇文章重点是围绕这三个场景展开,核心的技术基调就是"VSG外特性 + 电压电流双闭环内特性"的组合方案。这种架构其实是目前工业界和学术界比较主流的做法,VSG负责解决"电网怎么看我"的问题,双闭环负责解决"实际输出电压准不准"的问题,两者分工明确,逻辑清晰。
2. 虚拟同步机的数学模型与控制框架
2.1 从同步发电机到VSG控制
想真正搞懂VSG,第一步必须先理解同步发电机的特性。传统同步发电机(以隐极机为例)在描述转子运动时,核心是摇摆方程(Swing Equation):
[ J \frac{d\omega}{dt} = P_m - P_e - D(\omega - \omega_0) ]
其中,(J) 是转子的转动惯量(kg·m²),(\omega) 是机械角速度,(P_m) 是原动机输入机械功率,(P_e) 是电磁功率,(D) 是阻尼系数,(\omega_0) 是同步角速度。这个方程描述的是转子"转不转得动"的动力学关系——如果原动机输入和电磁输出之间有差额,转子转速就会变化,也就是电网频率波动时,发电机通过惯量"扛"住频率变化的能力来源。
VSG控制的思想就是把这个方程"搬"到逆变器的控制算法里。但逆变器本身没有真实的旋转部件,这里的(\omega)、(J)、(D)就变成了"虚拟"的量。具体来说,算法内部用微处理器实时计算这个方程,得到虚拟角速度(\omega),然后对(\omega)进行积分,得到虚拟电角度(\theta),再把这个角度作为逆变器输出电压相位的指令值。这样做的效果是:当负载功率突变时,逆变器输出频率会像同步发电机一样有一个"缓慢变化"的过程,而不是瞬间跳变,这就是惯量的体现。
这里有一个特别容易混淆的概念,我经常看到有朋友在群里问:VSG的"虚拟惯量"是不是真的在物理上储能?答案是否定的。它只是在控制算法层面模拟了动态响应过程,本质上是通过功率指令的"惯性调整"来改变PWM的调制波相位。能量的支撑最终需要靠直流侧的储能或者电网本身来提供,VSG控制本身不产生能量。但就是这个"算法层面的惯性",对外部电网或者其他用电设备来说,你看到的特性就和同步发电机非常像了。
2.2 有功-频率控制与无功-电压控制
除了转子运动方程,VSG还有两个重要的外特性控制环:有功-频率下垂(P-f droop)和无功-电压下垂(Q-V droop)。
有功-频率控制的基本逻辑是:当系统频率偏离额定值时,同步发电机的调速器会调整原动机输出功率。VSG通过一个下垂方程来模拟这个行为:
[ P_{ref} = P_0 + K_f (f_0 - f) ]
其中(P_0)是额定有功指令,(K_f)是下垂系数,(f_0)是额定频率。实际工程中更常用的做法是把频率偏差转化为功率偏差叠加到摇摆方程的输入上,这种写法看起来更"连续",仿真效果也更接近真实发电机。
无功-电压控制类似,模拟励磁调节器的特性:
[ Q_{ref} = Q_0 + K_v (V_0 - V) ]
(V_0)是额定电压幅值,(K_v)是电压下垂系数。通过这个方程,VSG可以根据输出电压偏差自动调节无功指令,从而调整输出电压幅值。
这两个"下垂"特性的意义在于,它让VSG在并网时能主动参与系统频率和电压的调节,而不是像PQ控制那样"死板"地输出固定功率。换句话说,VSG是有"感知"能力的,它知道电网频率变了,也知道自己该出力还是该“收力”。
2.3 电压电流双闭环控制为什么必不可少
VSG的核心输出是给定电压幅值(E)和相位(\theta),但这里有个关键问题:VSG给出的只是电压指令,它并不直接管"实际输出电压到底准不准"。如果直接把这个指令丢给PWM调制器,一旦负载突变或者直流侧电压波动,输出电压就会偏离额定值,波形质量会很差。
这时候就必须引入电压电流双闭环控制。它是一个典型的串级控制结构,外环是电压环,负责控制输出电压的幅值和波形;内环是电流环,负责快速跟踪电压环给出的电流指令。通俗点理解,电压环是"定目标"的,电流环是"干活的"。
在VSG应用里,双闭环的参考值从哪来?是从VSG算法生成的电压指令(E\angle\theta)变换到dq坐标系后得到的(V_d^)和(V_q^)。电压环输出的是电感电流的指令值(I_d^)和(I_q^),电流环再控制逆变器的输出电流快速跟随这个指令。这样一级一级往下推,环环相扣,最终实现输出电压的精准控制。
这套方案的关键优势在于拆分清晰。VSG负责定义"行为特征",双闭环负责保证"输出质量",两者之间的耦合方式就通过电压参考指令来完成,非常自然。如果只用VSG不加双闭环,输出波形会很难看;如果只有双闭环没有VSG,那就只是一个普通的电压源逆变器,不具备惯量支撑能力。两者缺一不可。
3. 并网-离网控制策略与切换逻辑
3.1 两种运行模式的控制差异
并网和离网两种模式下,控制目标有本质区别。并网模式下,系统已经由大电网提供了电压和频率的支撑,相当于一个"强度极大的电压源"挂在你的输出端。此时VSG要做的事情主要是调节输出功率,有功指令和无功指令由上层能量管理系统给定,对外表现为"受控电流源"的特性。虽然VSG的外特性是电压源式的,但在并网时,由于电网钳制了公共连接点的电压,控制重点从"控制电压"转向"控制功率"。
离网模式下情况完全不同。没有电网支撑,逆变器成了孤岛系统中的唯一电压源(或者主电源),它必须自己建立电压和频率。此时VSG的电压指令不再受电网电压钳制,而是直接决定负载端看到的电压质量。双闭环的任务也就更加关键了——只有输出电压稳定,负载才能正常工作。负载投切时,电压环必须快速响应,把电压拉回额定值,否则设备就可能异常停机。
从双闭环控制器的角度来说,两种模式下的结构是一样的,区别主要体现在参考值的来源上。离网时,电压参考值直接由VSG算法中的(E\angle\theta)生成,这就是"硬参考";并网时,VSG发出的电压参考值会和电网电压之间形成功率流动,实际输出电压由VSG输出电压和电网电压共同决定。这也是为什么在并网模式下,经常会看到输出电压波形会有些"被电网拖着走"的感觉,因为两者的相位差直接决定了有功功率的大小。
3.2 预同步控制:模式切换的关键
提到并网和离网模式的切换,就必须重点讲预同步控制。为什么需要预同步?因为并网开关合闸的瞬间,如果逆变器输出电压的幅值、频率、相位和电网存在偏差,会产生巨大的冲击电流。这个冲击电流轻则导致过流保护动作,重则直接炸掉开关器件,绝对不能在控制策略里省掉这一步。
预同步控制的原理非常直观:在并网开关合闸之前,主动检测逆变器输出电压和电网电压之间的相位差和幅值差,然后通过一个PI调节器把相位差逐步"压"到零。具体实现上,可以用一个简单的锁相环(PLL)提取电网电压的相位和幅值信息,然后和本地的VSG参考相位比较,得到相位偏差(\Delta\theta),经过PI调节后修正VSG的角频率指令(\omega)。这样VSG的输出电压相位就会缓慢向电网电压靠近,直到两者几乎完全一致时才允许合闸。
幅值预同步的原理类似,通过检测电压差(\Delta V),反馈修正VSG的电压幅值指令。不过幅值差造成的冲击电流通常比相位差小很多,实际工程中主要还是盯着相位差来做。仿真中可以看到一个非常直观的现象:合闸瞬间,如果预同步做得好,并网冲击电流很小,电流波形基本上是"平滑过渡";如果故意跳过预同步直接并网,电流冲击可能直接达到额定值的5倍以上,对比效果非常明显。
3.3 模式切换过程中的控制结构切换
除了预同步,还有控制结构层面的切换逻辑需要设计。最常见的问题出现在离网转并网的时候:离网模式下,VSG输出的相位是"自由运行"的,频率可能有轻微偏差;一旦切换到并网,电网强行把相位"锁死",这瞬间会产生极大的功率冲击。所以实际的控制逻辑必须设计成"先预同步,再切换,切换完成后无缝过渡到并网运行"。
仿真中实现切换逻辑有两种思路。第一种是用一个简单的状态机,配合定时器和开关(比如Simulink里的Multiport Switch),在预设时刻切换控制模式的标志位。第二种是检测电压差、频率差、相位差满足阈值条件后,自动触发并网允许信号。第二种更接近实际工程,但仿真里为了演示效果,第一种更直观。我个人推荐先把第一种做通,再加上第二种作为进阶优化,这样调试过程会更可控。
切换过程的时序也值得细说。以并网转离网为例:首先断开并网开关,然后必须在极短时间内把双闭环的参考源从"电网钳制"切换到"自由VSG运行"。这里有一个非常隐蔽的坑:如果双闭环的积分器在并网模式下已经积累了较大数值,突然切换参考源会让电压环的输出跳变,从而引起电流环的跳变。解决办法是在切换时刻把电压环的积分器清零,或者做"前馈补偿"平滑切换。这个细节在仿真里就能直接看到效果,不处理的话离网瞬间电压会有明显的凹陷或者突起,处理好了就是一条平滑的曲线。
4. 电压电流双闭环控制的参数设计与计算
4.1 电流内环设计:速度优先
电流内环是整个双闭环中最"敏感"的一环,因为它的带宽直接决定了系统的动态响应速度。电流环的对象是滤波电感(L),在dq坐标系下,电流环的数学模型是:
[ L \frac{di_d}{dt} = v_{id} - v_{od} - R i_d + \omega L i_q ]
[ L \frac{di_q}{dt} = v_{iq} - v_{oq} - R i_q - \omega L i_d ]
如果不做解耦控制,d轴和q轴电流之间存在交叉耦合,控制效果会很差。实际工程中普遍采用前馈解耦,把(-v_{od} + \omega L i_q)和(-v_{oq} - \omega L i_d)加到PI输出上,把d、q轴的电流控制"解耦"成两个独立的子系统。这样电流环就简化为一个一阶惯性系统,设计起来非常简单。
电流环PI参数按典型I型系统整定:取(K_{pi} = L / (3T_s)),(K_{ii} = R / (3T_s)),其中(T_s)是采样周期。这个公式是从零极点对消推导过来的,目的是让电流环带宽落在开关频率的1/10到1/5之间。举个例子:电感(L = 3,\text{mH}),电阻(R = 0.1,\Omega),开关频率(f_{sw} = 10,\text{kHz}),采样周期(T_s = 100,\mu\text{s}),算出来(K_{pi} = 0.003 / 0.0003 = 10),(K_{ii} = 0.1 / 0.0003 \approx 333)。这个参数算出来的带宽大约在1 kHz左右,响应够快,而且不会和PWM载波频率产生明显交互。
这里特别提醒一下:PI参数不是算出来就万事大吉的,仿真里还必须在每个PI控制器后面加限幅器,限制输出范围。比如电流环输出是调制波,它不能超过PWM的调制比上限(一般是0.9左右),否则就是过调制,波形会严重畸变。限幅值设置过大会导致饱和后恢复慢,过小又限制电流能力,需要根据实际的过载要求来设定。
4.2 电压外环设计:稳定性优先
电压外环的作用是稳定输出电压,它的响应速度必须比电流环慢得多,否则内外环会互相干扰,整个系统震荡。这个原则叫"带宽分离"原则,一般电压环带宽取值是电流环的1/5到1/10。
电压环的被控对象是滤波电容(C),在dq坐标系下的数学模型是:
[ C \frac{dv_{od}}{dt} = i_{od} - i_{Ld} + \omega C v_{oq} ]
[ C \frac{dv_{oq}}{dt} = i_{oq} - i_{Lq} - \omega C v_{od} ]
注意这里(i_{od})是流向负载的电流,在空载的时候它为零。电压环的PI参数设计通常采用对称最优法(Symmetrical Optimization),得到的参数公式是:
[ K_{pv} = \frac{C}{5T_s} ]
[ K_{iv} = \frac{1}{25T_s^2} ]
还是举个实际的例子:电容(C = 20,\mu\text{F}),(T_s = 100,\mu\text{s}),则电压环比例系数(K_{pv} = 20\times10^{-6} / 500\times10^{-6} = 0.04),积分系数(K_{iv} = 1 / (25 \times 10^{-8}) = 4\times10^5)。这个参数算出来之后,建议先在空载情况下测试阶跃响应,观察有没有过冲,然后逐步增加负载测试动态响应。
还有一个非常实用的技巧:电压环的输出是电流指令(i^_d)和(i^_q),它也要加限幅器,而且限幅值必须和电流环能承受的最大电流匹配。比如你的系统设计过流能力是1.5倍额定电流(额定30A,限幅45A),那电压环输出的电流指令限幅就设在±45A,防止过大的电流指令导致电流环饱和。
4.3 滤波参数与整体系统的匹配
双闭环参数设计的前提是滤波器的参数已经确定。常用的有单L滤波器和LCL滤波器两种。在VSG仿真中,我建议起步阶段先用单L滤波器,结构简单、参数计算容易,调试重心放在控制算法上。等整体跑通了,再换成LCL滤波器做进阶优化,那时候再考虑谐振抑制、有源阻尼等额外的内容。
单L滤波器的电感值选择需要折中考虑。电感太小时,电流纹波大,热损耗高;电感太大时,电压降大,电流环带宽受限。工程经验法则是电流纹波率控制在20%~30%之间。假设直流母线电压(V_{dc} = 800,\text{V}),开关频率(f_{sw} = 10,\text{kHz}),额定电流(I_n = 30,\text{A}),纹波率(\Delta I / I_n = 0.25),则电感最小值为:
[ L_{min} = \frac{V_{dc}}{6 f_{sw} \Delta I} = \frac{800}{6 \times 10000 \times 7.5} \approx 1.78,\text{mH} ]
实际取3 mH留出裕量是比较常见的选择。电容的选择主要由无功功率的占比决定,一般让滤波电容产生的基波无功功率不超过额定功率的5%。按这个原则,(C_{max} = 5% \times P_n / (3 \times 2\pi f_0 V_n^2))。即使计算出来的C很小(几十微法级别),它的取值对电压环带宽的影响也很大,所以必须和双闭环参数联合起来调试。
5. Simulink仿真建模实操:从零搭一个VSG模型
5.1 仿真平台的搭建思路
我用的仿真环境是Matlab/Simulink R2022b,Simscape Electrical工具箱。搭建顺序是:先搭主电路,再写控制算法,最后联调闭环。千万不要一开始就把所有模块都堆上去,出了问题根本不知道从哪儿排查。
主电路部分用Simscape Electrical里的Three-Phase Source代表电网,通过一个Three-Phase Breaker连接逆变器输出端。逆变器用Universal Bridge模块,选IGBT/Diodes类型。直流侧用一个理想DC Voltage Source表示,简化仿真复杂度。滤波器用Three-Phase Series RLC Branch搭LCL滤波。负载用Three-Phase Parallel RLC Load,方便测试不同负载类型——阻性负载、感性负载、非线性负载都可以。
控制算法部分,我倾向于把VSG主算法、双闭环控制、PWM调制、预同步逻辑分别封装成独立的Subsystem,这样每个模块的输入输出接口非常清晰,调试的时候可以单独看内部波形。VSG主算法用Matlab Function模块写或者用普通的Simulink运算模块搭都可以,各有优劣:Matlab Function模块代码看起来更紧凑、逻辑更清楚,但每次仿真都要编译一次;Simulink原生模块搭出来的模型仿真速度更快,但连线太多容易乱。我个人的习惯是先用Matlab Function调通逻辑,再决定是否改搭。
5.2 VSG核心算法模块的具体实现
以下是一个简化的VSG核心计算模块的代码示例,用MATLAB Function实现,方便大家参考:
function [theta, E, omega] = VSG_core(P_ref, Q_ref, P_meas, Q_meas, omega_grid, theta_grid, delta_T) % 参数定义 J = 0.5; % 虚拟惯量 D = 20; % 阻尼系数 K_q = 0.002; % 无功-电压下垂系数 omega_n = 2*pi*50; E_n = 311; % 额定相电压幅值(峰值) omega_0 = omega_n; persistent omega_vsg theta_vsg E_vsg; if isempty(omega_vsg) omega_vsg = omega_n; theta_vsg = 0; E_vsg = E_n; end % 有功-频率控制 Delta_P = P_ref - P_meas; domega = (Delta_P - D*(omega_vsg - omega_0)) / J; omega_vsg = omega_vsg + domega * delta_T; % 相位积分 theta_vsg = theta_vsg + omega_vsg * delta_T; % 无功-电压控制 E_vsg = E_n + K_q * (Q_ref - Q_meas); % 输出 omega = omega_vsg; theta = theta_vsg; E = E_vsg; end这段代码的核心逻辑就是前文提到的摇摆方程和下垂控制。输入是有功功率参考(P_{ref})、无功功率参考(Q_{ref})、实际测量的有功和无功(通过瞬时功率计算模块算出),输出是虚拟电角度(\theta)、电压幅值指令(E)、虚拟角频率(\omega)。在Simulink里,这里有几个细节需要注意:第一,powergui的仿真步长必须是固定步长,否则连续和离散混合仿真会报错;第二,功率测量的模块应该选"Three-Phase Instantaneous Active and Reactive Power"或者自己用电压电流乘积算,不要选慢速的RMS模块,否则动态响应会被严重拖慢;第三,(\theta)需要做一个角度归一化(mod 2π),防止长时间仿真中角度累积过大导致数值问题。
5.3 双闭环控制模块的搭建与连线
双闭环控制模块的搭建可以分为三层。第一层是坐标变换层,把三相输出电压(V_{abc})和电感电流(I_{abc})通过Park变换变换到dq坐标系。注意Park变换的角度是VSG生成的(\theta),不是PLL的角度,这一点非常重要——离网模式下没有电网PLL可用,所有角度信息都来自VSG本身。
第二层是电压外环层。把电压参考值(E\angle\theta)做Park变换得到(V_d^),(V_q^= 0)(假设是平衡三相系统),再和实际输出电压的(V_{od})、(V_{oq})做差,送入两个PI控制器,输出为电流指令(i^_d)和(i^q)。第三层是电流内环层,把电流指令和实际电流做差,经过PI控制器,再加上前馈解耦量(\omega L i_q)和(- \omega L i_d),得到调制波(v^*{id})和(v^*_{iq}),再反Park变换回abc坐标系,送入PWM发生器。
PWM发生器我用的是Simulink自带的"PWM Generator (Three-phase, Two-level)",载波频率设为10 kHz,调制方式选Regular Sampled PWM。在调PWM之前,务必先确认控制算法输出的三相调制波幅值在0~1之间(或者说±0.5左右),不然调制比不合适,波形质量肯定会出问题。
5.4 关键参数设置汇总
为了方便大家直接参考,我把仿真中用到的关键参数整理成一个表格:
| 参数 | 数值 | 说明 |
|---|---|---|
| 直流母线电压 (V_{dc}) | 800 V | 理想直流源 |
| 电网线电压有效值 | 380 V | 50 Hz |
| 开关频率 (f_{sw}) | 10 kHz | PWM载波 |
| 滤波电感 (L) | 3 mH | 单L滤波器 |
| 滤波电容 (C) | 20 μF | 与电压环设计匹配 |
| 虚拟惯量 (J) | 0.5 kg·m² | 决定惯性响应速度 |
| 阻尼系数 (D) | 20 | 决定频率收敛速度 |
| 无功下垂系数 (K_q) | 0.002 | 电压-无功调节斜率 |
| 电流环PI (K_p, K_i) | 10, 333 | 按带宽1 kHz设计 |
| 电压环PI (K_p, K_i) | 0.04, 4e5 | 按带宽200 Hz设计 |
这组参数是我在调试中跑过很多次的组合,整体表现属于"稳中带快",适合作为起点。你直接抄这个参数跑,大概率就能得到一个波形不错的VSG仿真模型。再强调一次:参数是死的,系统是活的,调试的时候还是得根据仿真波形微调。
6. 仿真结果分析与调试经验
6.1 并网模式下的波形特征
并网模式下,我用这个模型跑了一个典型工况:(P_{ref} = 10,\text{kW}),(Q_{ref} = 0),仿真时间1秒。初始状态下逆变器空载运行,0.3秒时刻给定有功指令,观察输出电流和并网功率的响应过程。
从波形上来看,并网模式下输出电流有一个从空载到维持10 kW输出功率的过渡过程。由于VSG的摇摆方程引入了惯性,有功功率的变化不是"瞬间到位"的,而是近似一阶惯性响应的斜坡上升,上升时间约0.15秒,这个缓慢爬升的过程正是虚拟惯量的直观体现。如果直接改成PQ控制,功率响应几乎是一个阶跃,这就是两者最核心的区别。
正常的VSG并网电流波形是正弦度非常好、谐波含量低的,这得益于双闭环的精准跟踪能力。电流环的快速响应把电流波形控制得非常接近参考正弦波,THD在2%以下,完全符合IEEE 519的并网谐波标准要求。不过要注意并网初始时刻的电流尖峰问题,即使预同步做完了,合闸瞬间还是难免有点小冲击,一般来说冲击幅值不超过额定电流的1.2倍就是可接受的。
6.2 离网模式下的负载突变响应
离网模式的测试重点是负载突变。初始状态空载运行,0.5秒时刻投入一个20 kW的纯阻性负载,观察电压跌落程度和恢复时间。
因为VSG惯性特性的存在,负载突变瞬间输出电压会有短时跌落,幅度大概在8%左右,但电压环会迅速响应,把电压拉回额定值,恢复时间约20 ms。和传统PQ带负载相比,这个波形多了一个"缓慢过渡"的过程,这正是VSG区别于传统控制的标志性特征。如果(D)的值取得太小,电压恢复的过程会出现明显的振荡,振荡频率大约十几赫兹,通过增大阻尼系数可以抑制。
这里有一个值得仔细看的细节:负载突变导致输出电压瞬间跌落,电压环PI的输出(即电流指令)会突然增大,电流环能否迅速跟上就决定了电压的恢复速度。如果电压环PI参数偏慢,会看到电压"爬"回额定值的过程非常拖沓;如果偏快,看到的是电压过冲到超过额定值再回落。需要找到那个"刚好"的参数点,让恢复过程既快又没有明显超调。
6.3 模式切换过程中的预同步与冲击电流控制
模式切换是整套仿真中做起来最繁琐的一部分,但也最能体现控制策略设计的完整度。我在仿真里设计了这样的切换场景:0~1秒运行在离网模式,带10 kW负载;1秒时刻启动预同步控制;1.5秒检测到相位差小于1度、电压差小于5V,触发并网开关合闸;2秒时刻发出并网转离网指令,断开并网开关,逆变器继续带负载运行。
从波形来看,关键点在于1.5秒合闸瞬间的电流冲击。在预同步充分的前提下,合闸时刻的冲击电流非常小——我用示波器测量过,冲击峰值只有额定电流的1.1倍左右,毛刺持续时间不到一个工频周期。但如果在仿真中故意把预同步控制器断开,直接合闸,冲击电流可以达到额定电流的5倍以上,这个对比让我每次做汇报演示的时候都会拿出来重点讲,视觉效果非常震撼。
从并网转离网的过程中,最需要注意的还是切断瞬间的电压稳定性。理想的切换过程是电压波形几乎看不出明显变化,只是一瞬间从"受电网钳制"变成"自己维持"。如果看到切换瞬间电压出现明显凹陷或者过冲,大概率是双闭环积分器初始值问题或者切换逻辑时序太晚,按照前面说的切换时刻清积分器,基本就能解决。
6.4 调试中踩过的坑与排查技巧实录
在调试这套VSG仿真的过程中,我积累了不少有代表性的问题,整理成表格方便大家速查。
| 现象 | 可能原因 | 排查思路 |
|---|---|---|
| 仿真启动就报错"Algebraic Loop" | 控制算法中电压参考和测量值存在瞬时代数环 | 在测量通道加Memory或Unit Delay,断代数环 |
| 离网空载输出电压发散 | 电压环PI参数过大 | 把(K_{pv})降低到计算值的一半,再逐步提升 |
| 电流波形出现低频振荡 | 阻尼系数(D)太小 | 增大D值,观察振荡频率和收敛速度 |
| 并网合闸冲击电流巨大 | 预同步未完成就合闸 | 检查合闸条件里的相位差阈值是否设置过宽 |
| 并网电流THD偏高 | PWM调制比过大或过小 | 检查调制波幅值是否在0.85~0.95之间 |
| 模式切换后电压跌落严重 | 切换瞬间积分器未清零 | 在切换逻辑中加入积分器清零信号 |
另一个经常被忽略的问题是Simulink的仿真步长设置。VSG控制算法的数值积分非常依赖步长,如果你用可变步长求解器,有时候步长会自适应得很大,导致摇摆方程的数值积分不准确,功率波形会出现一些莫名其妙的抖动。我的建议是直接用固定步长,步长设为1e-5(对应100 kHz仿真频率),开关管模型选"Switching Function"模式,不要选"Average Model",否则看不到真实的PWM纹波特征。
最后还想多说一句关于参数调优的"玄学"经验:VSG的虚拟惯量(J)和阻尼系数(D)这两个参数,很多新手喜欢调成很大的值,觉得惯量越大越好。但实际上(J)太大会让动态响应非常迟缓,负载突变时电压要很久才能恢复;(D)太大会让频率跌得非常厉害。好的参数组合是让频率跟功率变化形成"临界阻尼"的状态——响应够快,又不至于振荡。我自己用的方法是:先把(D)设成0,观察频率振荡周期,然后通过(D = 2 \sqrt{J K})计算出临界阻尼值,再取一半作为初始值,后续微调。这个公式算出来的是临界阻尼的上限,实际工程取临界阻尼的50%~70%通常是最舒服的状态。
7. 扩展与应用建议
7.1 从仿真到硬件实现的过渡思路
仿真跑通之后,很多朋友会问下一个问题:怎么搬到实物平台上?这里给一个比较现实的建议:先确认你的代码结构可以在Matlab/Simulink的Coder中自动生成代码,再对接DSP或者ARM平台。VSG核心算法本身就是基于数学运算,天然适合代码生成,但需要注意几个问题。
第一个是运算精度问题。仿真中默认是双精度浮点,而很多MCU的浮点运算能力有限,需要转成单精度,甚至定点运算。这会导致控制精度下降,所以在硬件调试时PI参数需要重新微调。第二个是采样延时问题。仿真中PWM和采样是"理想同步"的,硬件中ADC采样、算法计算、PWM更新之间存在固有的延时,这个延时会对控制带宽造成影响,严重时会导致系统不稳定。很多从仿真过渡到硬件的人都在这一步栽过跟头。第三个是保护逻辑问题。仿真中你可以随意修改参数,但硬件必须把过压、过流、过温保护逻辑想清楚,否则一次简单的按键误操作就可能导致炸机。
7.2 VSG控制的一些进阶方向
如果你掌握了基础VSG仿真,还想往深水区走一走,以下几个方向可以给你作为参考。第一是自同步VSG(Self-synchronized VSG),它省去了传统PLL,通过功率反馈自动实现同步,这是目前学术界比较热的方向,可以解决弱电网下PLL稳定性问题。第二是考虑通信延时的多机并联VSG协调控制,多台逆变器并联时,VSG之间会存在功率振荡问题,通过调整(J)和(D)参数实现均流和阻尼控制,是一个很值得深挖的点。第三是在VSG控制中加入谐波抑制和低电压穿越(LVRT)能力,这更偏工业应用,真正落地的时候必须考虑。
我在实际使用这套仿真架构的过程中最大的感受是:VSG不是一个靠背公式就能解决的问题,它是"控制理论"和"电力电子工程"的深度交叉学科,你既要懂同步发电机的机电特性,又要懂双闭环控制的稳定性分析,还得对仿真平台的各种细节了如指掌。把这套流程完整跑通一次,你对并网逆变器的理解会上一个台阶,再去研究构网型储能、微电网协调控制这些更复杂的系统时,就有了很扎实的地基。
做这套仿真和调试的过程中,最让我印象深刻的还是预同步那段调试经历。最初做模式切换,我偷懒省掉了预同步,直接用硬切,结果合闸瞬间电流冲击大得离谱,整个波形看起来完全没法用。后来老老实实把预同步的逻辑加上、把PI参数一点点调出来,才看到那个电流冲击从5倍多降到1.1倍的瞬间,那种成就感是很有记忆点的。做这类系统级仿真,细节决定成败,有时候一个看起来不起眼的积分器清零逻辑,就是整个方案能不能落地的关键。