1. 虚拟同步发电机(VSG)技术概述
虚拟同步发电机(Virtual Synchronous Generator, VSG)是近年来电力电子与电力系统领域的一项突破性技术。简单来说,它让并网逆变器"伪装"成传统同步发电机,通过模拟其惯性和阻尼特性,解决高比例新能源接入带来的电网稳定性问题。
传统同步发电机通过转子的物理旋转惯性自然维持电网稳定,而光伏、风电等逆变器接口的电源缺乏这种特性,这正是VSG技术诞生的根本原因。
在分布式能源并网场景中,VSG技术展现出三大核心优势:
- 惯量支撑:通过虚拟惯性控制环节,为电网提供类似同步发电机的频率响应能力
- 自主调频:有功-频率下垂控制实现多机并联时的功率自动分配
- 电压调节:无功-电压下垂控制维持并网点电压稳定
2. VSG控制系统架构解析
2.1 整体控制框图
一个完整的VSG控制系统通常包含以下核心模块:
code复制[电网电压] → [锁相环PLL] → [有功频率控制] → [无功电压控制] → [电压电流双环控制] → [PWM调制] → [逆变器]
↑ ↑ ↑
[频率测量] [有功功率计算] [无功功率/电压测量]
2.2 关键参数设计原则
-
虚拟惯性时间常数J:
- 典型值范围:0.5-5 kW·s²/rad
- 计算公式:J = ΔP/(2π·df/dt)
- 取值过大导致动态响应慢,过小则惯性效果不足
-
阻尼系数D:
- 典型值范围:5-50 kW·s/rad
- 与系统振荡特性相关,需通过小信号稳定性分析确定
-
下垂系数mp/nq:
- 有功下垂系数mp = Δf/ΔP (Hz/kW)
- 无功下垂系数nq = ΔV/ΔQ (V/kvar)
- 根据机组容量按比例分配
3. 核心控制算法实现
3.1 有功-频率控制实现
matlab复制% VSG有功频率控制模块
function [omega_out, P_out] = VSG_Pcontrol(P_ref, P_meas, omega_g, params)
persistent integral_P;
% 初始化
if isempty(integral_P)
integral_P = 0;
end
% 功率误差计算
error_P = P_ref - P_meas;
% 虚拟摇摆方程
J = params.J; % 虚拟惯量 (kW·s²/rad)
D = params.D; % 阻尼系数 (kW·s/rad)
omega_n = 2*pi*50; % 额定角频率
% 频率动态方程
d_omega = (error_P - D*(omega_out - omega_g))/(J*omega_n);
omega_out = omega_g + integral(d_omega);
% 输出有功指令
P_out = P_ref + (omega_n - omega_out)/params.mp;
% 抗积分饱和处理
integral_P = integral_P + error_P*params.Ts;
if abs(integral_P) > params.P_lim
integral_P = sign(integral_P)*params.P_lim;
end
end
关键调试要点:虚拟惯量J主要影响系统惯性时间常数,典型调试时可先设为2-3 kW·s²/rad,再根据频率动态响应调整。
3.2 无功-电压控制实现
matlab复制% VSG无功电压控制模块
function [V_out, Q_out] = VSG_Qcontrol(Q_ref, Q_meas, V_g, params)
persistent integral_Q;
% 初始化
if isempty(integral_Q)
integral_Q = 0;
end
% 无功误差计算
error_Q = Q_ref - Q_meas;
% 电压调节方程
nq = params.nq; % 无功下垂系数
Kq = params.Kq; % 电压调节增益
% 电压指令生成
V_out = V_g + Kq*error_Q - nq*Q_meas;
% 输出无功指令
Q_out = Q_ref + (V_ref - V_out)/nq;
% 抗积分饱和
integral_Q = integral_Q + error_Q*params.Ts;
if abs(integral_Q) > params.Q_lim
integral_Q = sign(integral_Q)*params.Q_lim;
end
end
4. 电压电流双环控制设计
4.1 电压环设计要点
-
带宽选择:
- 通常取开关频率的1/10~1/5
- 对于10kHz开关频率,建议500-1000Hz
-
PI参数整定:
matlab复制% 电压环PI参数计算 Lf = 2e-3; % 滤波电感 (H) Cf = 50e-6; % 滤波电容 (F) BW_v = 800; % 电压环带宽 (Hz) Kp_V = 2*pi*BW_v*Cf; Ki_V = (2*pi*BW_v)^2*Cf;
4.2 电流环设计要点
-
带宽选择:
- 通常取电压环的5-10倍
- 对应上例可取4000-8000Hz
-
PI参数整定:
matlab复制% 电流环PI参数计算 BW_i = 5000; % 电流环带宽 (Hz) Kp_I = 2*pi*BW_i*Lf; Ki_I = Rf*Kp_I/Lf; % Rf为滤波电阻
5. MATLAB仿真实践
5.1 仿真模型搭建步骤
-
主电路构建:
- 使用Simulink中的Simscape Electrical库
- 关键组件:
- 直流电压源(模拟光伏阵列)
- 全桥IGBT逆变器
- LCL滤波器
- 电网电压源
-
控制模块实现:
matlab复制% VSG主控制函数 function [d_abc, Pout, Qout] = VSG_Controller(v_abc, i_abc, vg_abc, params) % 坐标变换 v_dq = abc2dq(v_abc, theta); i_dq = abc2dq(i_abc, theta); vg_dq = abc2dq(vg_abc, theta); % 功率计算 P = 1.5*(v_dq(1)*i_dq(1) + v_dq(2)*i_dq(2)); Q = 1.5*(v_dq(2)*i_dq(1) - v_dq(1)*i_dq(2)); % VSG核心控制 [omega, P_ref] = VSG_Pcontrol(P_set, P, omega_g, params); [V_ref, Q_ref] = VSG_Qcontrol(Q_set, Q, Vg, params); % 电压电流环 v_ref_dq = [V_ref; 0]; i_ref_dq = [P_ref/V_ref; -Q_ref/V_ref]; % 生成PWM信号 d_dq = CurrentLoop(i_ref_dq, i_dq, params); d_abc = dq2abc(d_dq, theta); end
5.2 典型波形分析
-
突加负载测试:
- 0.2s时突加50%额定负载
- 观察指标:
- 频率跌落:应<0.5Hz
- 恢复时间:应<0.5s
- 超调量:应<10%
-
电网电压跌落测试:
- 0.3s时电网电压跌落20%
- 验证:
- 无功支撑能力
- 同步保持特性
6. 工程实践中的关键问题
6.1 多机并联运行
-
功率分配不均问题:
- 解决方案:采用自适应下垂系数
matlab复制% 自适应下垂系数计算 mp_i = mp_base * (S_rated / S_i); nq_i = nq_base * (S_rated / S_i); -
环流抑制技术:
- 虚拟阻抗法
- 谐波注入法
6.2 弱电网适应
-
电网阻抗识别:
- 采用PRBS信号注入法
- 在线更新控制参数
-
稳定性增强:
- 增加相位补偿环节
- 引入有源阻尼
7. 参数整定经验分享
经过数十次仿真调试,总结出以下参数调整"黄金法则":
-
先调电流环,再调电压环:
- 电流环响应速度应比电压环快5倍以上
- 测试方法:给阶跃电流指令,观察跟踪速度
-
VSG参数整定顺序:
code复制
虚拟惯量J → 阻尼系数D → 下垂系数mp/nq -
典型参数范围参考表:
| 参数 | 符号 | 典型范围 | 影响特性 |
|---|---|---|---|
| 虚拟惯量 | J | 1-5 kW·s²/rad | 频率变化率 |
| 阻尼系数 | D | 10-30 kW·s/rad | 振荡衰减速度 |
| 有功下垂 | mp | 0.01-0.05 Hz/kW | 稳态频率偏差 |
| 无功下垂 | nq | 0.03-0.1 V/kvar | 稳态电压偏差 |
8. 实际调试中的坑与解决方案
-
问题:启动时电流冲击大
- 原因:初始相位不同步
- 解决:增加预同步控制环节
matlab复制% 预同步控制实现 if abs(θ_vsg - θ_grid) > 0.1 ω_adjust = K_sync*(θ_grid - θ_vsg); ω_vsg = ω_grid + ω_adjust; end -
问题:轻载时振荡
- 原因:阻尼不足
- 解决:引入变阻尼控制
matlab复制% 变阻尼系数计算 D_adaptive = D_base + K_damp*abs(P_meas)/P_rated; -
问题:切换模式时不稳定
- 原因:控制输出不连续
- 解决:增加过渡状态平滑处理
matlab复制% 模式切换平滑过渡 if mode_switch P_ref = P_ref + K_trans*(P_new - P_ref); end
在完成这个VSG仿真项目后,我特别建议在实际硬件测试前,一定要做全面的频域分析。使用MATLAB的sisotool工具绘制开环波特图,确保在所有工作点都有足够的相位裕度(建议>45°)。这能避免很多现场调试时遇到的振荡问题。
