1. 光伏VSG并网系统架构解析
光伏虚拟同步发电机(VSG)并网系统本质上是一个能量平衡的艺术品。这个系统由三个关键部分组成:光伏阵列、直流母线电容和VSG逆变器。光伏阵列通过Boost变换器实现最大功率点跟踪(MPPT),产生的电能首先存储在直流母线电容中,然后通过VSG控制的逆变器馈入电网。
1.1 能量流动的跷跷板原理
直流母线电容在这个系统中扮演着能量缓冲器的角色。当光伏发电功率(Ppv)大于VSG输出功率(Pvsg)时,多余的能量会使电容电压上升;反之则会导致电压下降。这个动态平衡过程可以用一个简单的微分方程描述:
C·dVdc/dt = Ppv - Pvsg
其中C是直流母线电容值,Vdc是电容电压。在实际系统中,我们需要通过控制算法维持这个平衡,保持Vdc在安全范围内(通常为600-800V)。
1.2 系统控制层级结构
控制架构采用分层设计:
- 底层:Boost变换器的MPPT控制
- 中间层:直流母线电压控制
- 高层:VSG算法实现电网同步
这种分层结构确保了系统的模块化和可维护性。每层控制器只需要关注自己的目标,通过定义良好的接口与其他层交互。
2. 光伏MPPT的扰动观察法实现
2.1 算法核心逻辑
扰动观察法(Perturb and Observe)是光伏系统中应用最广泛的MPPT算法。其核心思想是通过周期性地扰动Boost变换器的占空比,观察功率变化方向,从而确定下一步的扰动方向。
算法实现的关键参数包括:
- 扰动步长(step):通常设为0.01-0.05
- 采样周期:一般为0.1-1秒
- 占空比限制:通常限制在0.1-0.9之间
2.2 代码实现细节
在MATLAB/Simulink环境中,我们可以将MPPT算法封装成函数。以下是改进后的代码实现:
matlab复制function [D] = P_O(V, I, step, prev_P, prev_D)
% 参数边界检查
if step <= 0 || step >= 1
error('扰动步长必须在0到1之间');
end
% 初始化处理
if isempty(prev_P)
prev_D = 0.5; % 初始占空比设为中间值
prev_P = V * I;
D = prev_D;
return;
end
% 功率变化判断
current_P = V * I;
if current_P > prev_P
delta_D = step; % 功率增加,保持同方向扰动
else
delta_D = -step; % 功率减小,反方向扰动
end
% 更新占空比
new_D = prev_D + delta_D;
% 占空比限幅
D = max(0.1, min(0.9, new_D));
% 防止在最大功率点附近振荡
if abs(current_P - prev_P) < 0.01 * prev_P
D = prev_D; % 功率变化很小时保持占空比不变
end
end
2.3 实际应用中的调参技巧
- 步长选择:光照稳定时用小步长(0.01-0.02),变化剧烈时用大步长(0.03-0.05)
- 采样周期:太短会导致系统振荡,太长会错过功率变化,推荐0.2-0.5秒
- 抗干扰处理:增加功率变化阈值判断,避免在最大功率点附近振荡
注意:在实际系统中,还需考虑输入电压和电流的测量噪声,通常需要添加低通滤波。
3. VSG控制算法深度解析
3.1 虚拟同步机基本原理
VSG算法的核心是模拟同步发电机的机械特性,主要包括:
- 转子运动方程:J·dω/dt = Pm - Pe - D(ω-ω0)
- 电压调节方程:E = E0 + Kq(Qref - Q)
其中:
- J:虚拟惯量(kg·m²)
- D:阻尼系数(N·m·s/rad)
- ω:虚拟角速度(rad/s)
- Pm:机械功率(W)
- Pe:电磁功率(W)
3.2 直流电压环与VSG的耦合
直流电压环通过PI控制器产生功率补偿量ΔP,该补偿量叠加到VSG的有功功率指令上:
Pvsg = Pref + ΔP
ΔP = Kp(Vdc_ref - Vdc) + Ki∫(Vdc_ref - Vdc)dt
这种耦合方式实现了两个控制目标的协调:
- 维持直流母线电压稳定
- 提供电网所需的同步支撑
3.3 Python实现示例
以下是改进后的VSG控制器Python实现:
python复制class VSG_Controller:
def __init__(self, J=0.2, D=0.8, Kp=0.5, Ki=0.1):
self.J = J # 虚拟惯量 [kg·m²]
self.D = D # 阻尼系数 [N·m·s/rad]
self.Kp = Kp # 比例系数
self.Ki = Ki # 积分系数
self.integral = 0 # 积分项
self.omega = 314.16 # 初始角速度 [rad/s] (50Hz)
def update(self, Vdc, Vdc_ref, P_set, dt):
# 电压环PI控制
error = Vdc_ref - Vdc
self.integral += error * dt
# 抗积分饱和处理
if self.integral > 100: self.integral = 100
if self.integral < -100: self.integral = -100
P_adj = self.Kp * error + self.Ki * self.integral
# VSG机械方程
P_total = P_set + P_adj
delta_omega = (P_total - self.D * self.omega) / self.J * dt
self.omega += delta_omega
# 频率限制保护
self.omega = max(310, min(318, self.omega)) # 对应49-51Hz
return self.omega
4. 系统参数整定与优化
4.1 关键参数影响分析
-
虚拟惯量J:
- 增大J:系统惯性增强,频率变化变慢
- 减小J:系统响应变快,但容易振荡
- 典型值:0.1-0.5 kg·m²
-
阻尼系数D:
- 增大D:振荡衰减加快,但稳态误差可能增大
- 减小D:系统更灵敏,但可能持续振荡
- 典型值:0.5-1.5 N·m·s/rad
-
PI控制器参数:
- Kp:影响动态响应速度
- Ki:影响稳态精度
- 推荐先用Ziegler-Nichols方法初步整定,再微调
4.2 参数协调原则
- 惯量与阻尼的比值(J/D)决定系统动态特性,推荐保持在0.25-0.5范围内
- 电压环带宽应低于MPPT控制带宽,但高于VSG控制带宽
- 采样周期需要与控制系统响应速度匹配
4.3 实测调参步骤
- 先关闭VSG,只调电压环PI参数
- 加入VSG后,先设D=0调J,观察频率响应
- 固定J,调节D直到振荡衰减满意
- 最后微调PI参数优化动态性能
5. 典型问题分析与解决方案
5.1 直流电压振荡问题
现象:直流母线电压周期性波动,幅度超过50V
可能原因:
- MPPT步长过大
- 电压环PI参数不合适
- 直流电容值太小
解决方案:
- 减小MPPT扰动步长
- 降低电压环比例系数Kp
- 增加电容值或并联电容
5.2 VSG频率失稳问题
现象:系统频率持续波动,无法稳定
可能原因:
- 虚拟惯量J设置不当
- 阻尼系数D太小
- 功率测量噪声过大
解决方案:
- 适当增大J值
- 增加D值或添加虚拟阻抗
- 对功率测量值进行滤波处理
5.3 并网冲击电流问题
现象:并网瞬间电流冲击过大
可能原因:
- 相位同步不准确
- 电压幅值匹配不好
- 预同步时间不足
解决方案:
- 改进锁相环(PLL)算法
- 添加软启动电路
- 延长预同步检测时间
6. 进阶优化方向
6.1 自适应参数调整
传统VSG使用固定参数,但在实际运行中,电网条件可能变化。可以考虑:
- 根据电网强度自适应调整惯量J
- 根据频率偏差动态调节阻尼D
- 基于人工智能的在线参数优化
6.2 多VSG并联运行
当多个VSG并联时,需解决:
- 功率分配问题
- 环流抑制
- 协调控制策略
可采用下垂控制改进算法,实现无通信协调。
6.3 故障穿越能力增强
为满足电网规范要求,需要:
- 低压穿越(LVRT)控制策略
- 过压保护机制
- 故障检测与隔离方案
我在实际调试中发现,VSG的虚拟惯量参数在不同电网强度下需要差异化设置。弱电网下需要更大的惯量来增强稳定性,而强电网下可以减小惯量以提高响应速度。这个经验在多个现场项目中得到了验证,能够显著改善系统的动态性能。