光伏储能虚拟同步发电机simulink仿真模型 主电路:三相全桥逆变 直流侧电压800V 光伏模块:光伏板结合Boost电路应用MPPT 储能模块:采用双闭环控制,外环直流母线电容稳压,内环为电池电流环控制 Matlab/simulink 2021b版本 仿真结果: 1.VSG仿真输出的功率可以无静差跟踪给定参考值 2.直流母线电容电压可以实现稳压功能,稳定时可以跟踪给定参考电压值 3.光伏模块MPPT算法输出最大功率波动很小,波形完美

在能源领域不断追求可持续发展的当下,光伏储能虚拟同步发电机(VSG)技术备受关注。今天就来和大家聊聊基于Matlab/Simulink 2021b搭建的光伏储能VSG仿真模型。

主电路:三相全桥逆变

主电路采用三相全桥逆变结构,其直流侧电压设定为800V 。在Simulink中搭建三相全桥逆变模块相对直观,通过设置参数可以轻松实现。以下是一个简单的三相全桥逆变的控制代码示意(这里以Matlab脚本控制为例,并非直接在Simulink中代码,但原理相似):

% 三相全桥逆变控制示例代码
% 直流侧电压
Vdc = 800; 
% 调制波频率
f_mod = 50; 
% 载波频率
f_carrier = 5000; 
% 计算调制比
m = 0.8; 
% 生成三相调制波
t = 0:0.00001:0.02;
va = m * Vdc/2 * sin(2*pi*f_mod*t);
vb = m * Vdc/2 * sin(2*pi*f_mod*t - 2*pi/3);
vc = m * Vdc/2 * sin(2*pi*f_mod*t + 2*pi/3);
% 生成载波
carrier = sawtooth(2*pi*f_carrier*t, 0.5);
% 通过比较生成PWM信号
pwm_a = va > carrier;
pwm_b = vb > carrier;
pwm_c = vc > carrier;

这段代码通过设置调制比、调制波频率和载波频率等参数,生成三相调制波,并与载波比较产生PWM信号,用于控制三相全桥逆变。三相全桥逆变模块将直流侧800V的电压逆变为三相交流电输出。

光伏模块:光伏板结合Boost电路应用MPPT

光伏模块由光伏板与Boost电路相结合,并应用最大功率点跟踪(MPPT)算法。MPPT算法能让光伏板始终在最大功率点附近工作,提高发电效率。在Simulink中,我们可以利用自带的光伏模型库搭建光伏板模型,并添加Boost电路模块。下面是一个简单的MPPT算法代码片段(以扰动观察法为例):

% 扰动观察法MPPT示例代码
% 初始化参数
P_old = 0;
dP = 0;
V_ref = 0;
% 采样时间间隔
dt = 0.01; 
while true
    % 读取当前光伏板电压和电流
    V = read_photovoltaic_voltage();
    I = read_photovoltaic_current();
    P = V * I;
    dP = P - P_old;
    if dP > 0
        % 增加电压参考值
        V_ref = V_ref + 0.01; 
    else
        % 减小电压参考值
        V_ref = V_ref - 0.01; 
    end
    P_old = P;
    % 通过控制Boost电路调整光伏板工作电压
    control_boost_circuit(V_ref);
    pause(dt);
end

上述代码通过不断扰动光伏板的工作电压,并观察功率变化,进而调整电压参考值,使光伏板始终工作在最大功率点附近。从仿真结果来看,光伏模块MPPT算法输出最大功率波动很小,波形完美,这说明MPPT算法在这个模型中工作良好,能有效提高光伏板的发电效率。

储能模块:双闭环控制

储能模块采用双闭环控制策略,外环为直流母线电容稳压,内环为电池电流环控制。外环通过调节直流母线电容电压,使其跟踪给定参考电压值,内环则精确控制电池充放电电流。以下是一个简单的双闭环控制代码框架(基于Simulink S函数原理):

function [sys,x0,str,ts] = dual_loop_control(t,x,u,flag)
switch flag,
    case 0,
        [sys,x0,str,ts]=mdlInitializeSizes();
    case 1,
        sys=mdlDerivatives(t,x,u);
    case 2,
        sys=mdlUpdate(t,x,u);
    case 3,
        sys=mdlOutputs(t,x,u);
    case 4,
        sys=mdlGetTimeOfNextVarHit(t,x,u);
    case 9,
        sys=mdlTerminate(t,x,u);
    otherwise
        DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end
function [sys,x0,str,ts]=mdlInitializeSizes()
sizes = simsizes;
sizes.NumContStates  = 2; % 假设两个状态变量
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 3; % 输入:参考电压、实际电压、电池电流
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; 
sys = simsizes(sizes);
x0  = [0;0]; % 初始状态
str = [];
ts  = [0.001 0]; % 采样时间
function sys=mdlDerivatives(t,x,u)
% 外环PI参数
kp1 = 0.5;
ki1 = 0.1;
% 内环PI参数
kp2 = 0.2;
ki2 = 0.05;
% 计算外环误差
error1 = u(1) - u(2);
% 外环积分项
x(1) = x(1) + error1 * ts(1);
% 外环输出
output1 = kp1 * error1 + ki1 * x(1);
% 计算内环误差
error2 = output1 - u(3);
% 内环积分项
x(2) = x(2) + error2 * ts(1);
% 内环输出
sys(1) = kp2 * error2 + ki2 * x(2);
function sys=mdlUpdate(t,x,u)
sys = [];
function sys=mdlOutputs(t,x,u)
sys(1) = x(2); % 输出控制信号
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 0.001; % 采样时间
sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];

这段代码构建了一个双闭环控制的S函数框架,外环根据参考电压与实际直流母线电容电压的误差进行PI调节,内环根据外环输出与电池电流的误差进行PI调节,最终输出控制信号。从仿真结果可知,直流母线电容电压可以实现稳压功能,稳定时能够跟踪给定参考电压值,储能模块的双闭环控制策略有效。

仿真结果亮点

  1. VSG仿真输出的功率可以无静差跟踪给定参考值:这表明虚拟同步发电机的控制策略能够准确调节输出功率,满足负载需求,在电力系统的功率分配中能起到稳定且精确的作用。
  2. 直流母线电容电压可以实现稳压功能,稳定时可以跟踪给定参考电压值:储能模块的双闭环控制达成了预期目标,保证了直流母线电压的稳定,为后续逆变等环节提供了稳定的输入条件。
  3. 光伏模块MPPT算法输出最大功率波动很小,波形完美:说明MPPT算法的有效性,光伏板能够高效地将太阳能转化为电能,减少能量损失。

通过这个光伏储能虚拟同步发电机Simulink仿真模型,我们深入了解了各部分的工作原理与协同机制,为实际工程应用提供了有力的理论与仿真基础。希望这篇博文能给大家在相关领域的研究和学习带来帮助。

光伏储能虚拟同步发电机simulink仿真模型 主电路:三相全桥逆变 直流侧电压800V 光伏模块:光伏板结合Boost电路应用MPPT 储能模块:采用双闭环控制,外环直流母线电容稳压,内环为电池电流环控制 Matlab/simulink 2021b版本 仿真结果: 1.VSG仿真输出的功率可以无静差跟踪给定参考值 2.直流母线电容电压可以实现稳压功能,稳定时可以跟踪给定参考电压值 3.光伏模块MPPT算法输出最大功率波动很小,波形完美

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐