光储微电网离并网MATLAB模型
仿真模型由光伏PV及其DC/DC变换器、储能及其双向DC/DC变换器、直流负载、逆变器、交流负载、断路器以及交流主网组成的光储(三相)交直流微电网。
光伏采用电导增量法实现最大功率输出。
逆变器并网状态采用恒PQ控制,离网孤岛运行采用恒V/f控制,由并网转为孤岛运行。
为了实现一个光储交直流微电网的仿真模型,包括光伏PV及其DC/DC变换器、储能系统及双向DC/DC变换器、直流负载、逆变器、交流负载、断路器以及与交流主网的连接,我们需要构建一个复杂的Simulink模型。以下是一个简化版的设计思路和代码示例,用于展示如何在MATLAB/Simulink中搭建这样的系统。
运行条件及工作模式:
运行条件:直流母线额定电压为750V,负载为10欧,额定功率为56kW,交流负载为15kW。光伏始终运动于最大功率输出状态,光照强度为1000W/m2,输出功率为70kW,储能根据母线电压进行输出,交流主网电压为380V。
①0.5s之前断路器合上,处于并网运行状态,恒功率为17kW。
② 0.5s之后断路器断开,处于孤岛运行状态,需要交流侧电压、频率满足条件。
文章目录
1. 构建Simulink模型
首先,在Simulink中创建一个新的模型,并添加所需的模块来代表每个组件:
- 光伏阵列:可以使用
PV Array
模块或自定义模块来模拟。 - DC/DC变换器:用于调整光伏输出电压。
- 电导增量法MPPT控制:通过编写S-Function或MATLAB Function块实现最大功率点跟踪。
- 储能系统及双向DC/DC变换器:用于能量存储和释放。
- 逆变器:将直流转换为交流以供交流负载使用。
- 交流负载和直流负载:根据实际需求配置。
- 断路器:用于模拟电网连接状态的变化。
- 交流主网:作为系统的电源之一。
2. 实现电导增量法MPPT控制
下面是一个简单的电导增量法MPPT算法的MATLAB Function块示例:
function dutyCycle = fcn(V_pv, I_pv, prevDuty)
% 初始化参数
V_old = 0;
P_old = 0;
% 计算当前功率
P_pv = V_pv * I_pv;
% 判断是否达到最大功率点
if (P_pv > P_old)
dP_dV = (P_pv - P_old) / (V_pv - V_old);
if (dP_dV > 0)
dutyCycle = min(prevDuty + 0.001, 1); % 增加占空比
elseif (dP_dV < 0)
dutyCycle = max(prevDuty - 0.001, 0); % 减少占空比
else
dutyCycle = prevDuty; % 保持不变
end
% 更新旧值
V_old = V_pv;
P_old = P_pv;
else
dutyCycle = prevDuty; % 功率下降时维持上一次的占空比
end
end
3. 设计逆变器并网/离网控制逻辑
对于逆变器的并网(恒PQ)和孤岛运行(恒V/f)模式切换,可以根据电网状态(如检测到的频率和电压水平)自动切换控制策略。这可以通过条件判断逻辑实现,如下所示的一个简化的伪代码:
if gridConnected
% 恒PQ控制
% 设置逆变器输出有功功率和无功功率
else
% 恒V/f控制
% 设置逆变器输出电压幅值和频率
end
4. Simulink模型集成
将上述各个部分整合到一个完整的Simulink模型中,确保各模块之间正确连接,并设置适当的参数。例如,设置光伏板的光照强度、温度,设定储能系统的充放电阈值等。
注意事项
- 上述代码和描述仅为简化示例,具体应用中需要根据实际情况调整参数和逻辑。
- 在设计过程中,应考虑实际硬件限制、安全操作范围等因素。
- 对于更复杂的系统,可能需要采用更高级的控制策略,如预测控制、模糊控制等。
为了实现一个光储交直流微电网的仿真模型,我们可以使用MATLAB和Simulink来构建各个组件,并通过适当的控制策略进行集成。以下是一个详细的步骤指南,包括代码示例。
1. 创建光伏阵列及其DC/DC变换器
光伏阵列
function [I, P] = pvArray(V, G, T)
% 输入参数
Voc = 21; % 开路电压 (V)
Isc = 8.23; % 短路电流 (A)
Impp = 7.6; % 最大功率点电流 (A)
Vmpp = 17.5; % 最大功率点电压 (V)
Gref = 1000; % 参考光照强度 (W/m^2)
Tref = 25; % 参考温度 (°C)
% 温度系数
Kt = -0.45; % 温度系数 (V/°C)
Ks = 0.005; % 温度系数 (A/°C)
% 计算实际开路电压和短路电流
Voc_actual = Voc + Kt * (T - Tref);
Isc_actual = Isc * (1 + Ks * (T - Tref)) * (G / Gref);
% 计算最大功率点
I = Isc_actual * (1 - exp((Voc_actual - V) / (Voc_actual / Impp)));
P = V * I;
end
DC/DC Boost变换器
function [Vo, Io] = boostConverter(Vi, Ii, dutyCycle)
% 输入参数
L = 1e-3; % 电感值 (H)
C = 1e-3; % 电容值 (F)
f = 10000; % 开关频率 (Hz)
% 计算输出电压和电流
Vo = Vi / (1 - dutyCycle);
Io = Ii * (1 - dutyCycle);
end
2. 电导增量法MPPT控制
function dutyCycle = mpptControl(Vpv,Ipv,Ppv,Vprev,Iprev,Pprev)
% 初始化参数
if isempty(Vprev)
Vprev = Vpv;
Iprev = Ipv;
Pprev = Ppv;
end
% 计算导数
dP_dV = (Ppv - Pprev) / (Vpv - Vprev);
% 更新旧值
Vprev = Vpv;
Iprev = Ipv;
Pprev = Ppv;
% 判断是否达到最大功率点
if dP_dV > 0
dutyCycle = min(dutyCycle + 0.001, 1); % 增加占空比
elseif dP_dV < 0
dutyCycle = max(dutyCycle - 0.001, 0); % 减少占空比
else
dutyCycle = dutyCycle; % 保持不变
end
end
3. 储能系统及双向DC/DC变换器
储能系统
function [SoC, Pbat] = batteryModel(Pin, SoC_initial, dt)
% 输入参数
Cbat = 100; % 电池容量 (Ah)
Vnom = 12; % 额定电压 (V)
eta = 0.9; % 效率
% 计算电池状态
SoC = SoC_initial + Pin * dt / (Cbat * Vnom * eta);
Pbat = Pin * eta;
end
双向DC/DC变换器
function [Vo, Io] = bidirectionalDCDC(Vi, Ii, dutyCycle)
% 输入参数
L = 1e-3; % 电感值 (H)
C = 1e-3; % 电容值 (F)
f = 10000; % 开关频率 (Hz)
% 计算输出电压和电流
Vo = Vi * dutyCycle;
Io = Ii / dutyCycle;
end
4. 逆变器并网/离网控制逻辑
恒PQ控制(并网)
function [Vout, Iout] = pqControl(Pset, Qset, Vin)
% 输入参数
Vnom = 220; % 额定电压 (V)
fnom = 50; % 额定频率 (Hz)
% 计算输出电压和电流
Vout = Vnom;
Iout = (Pset / Vout) + j * (Qset / Vout);
end
恒V/f控制(孤岛)
function [Vout, fout] = vfControl(Vset, fset)
% 输入参数
Vout = Vset;
fout = fset;
end
5. Simulink模型集成
在Simulink中创建一个新的模型,并添加上述模块:
- 光伏阵列:使用
PV Array
模块。 - DC/DC Boost变换器:使用
Boost Converter
模块。 - 电导增量法MPPT控制:使用
MATLAB Function
模块。 - 储能系统:使用
Battery
模块。 - 双向DC/DC变换器:使用
Bidirectional DC-DC Converter
模块。 - 逆变器:使用
Inverter
模块。 - 交流负载和直流负载:使用相应的负载模块。
- 断路器:使用
Breaker
模块。 - 交流主网:使用
AC Grid
模块。
示例代码
% 初始化参数
Vin_pv = 20; % 光伏输入电压 (V)
Ipv = 8; % 光伏输入电流 (A)
dutyCycle = 0.5; % 初始占空比
SoC_initial = 0.5; % 初始荷电状态
dt = 0.01; % 时间步长 (s)
Pset = 1000; % 并网有功功率 (W)
Qset = 0; % 并网无功功率 (VAR)
Vset = 220; % 孤岛电压 (V)
fset = 50; % 孤岛频率 (Hz)
% 运行仿真
for t = 0:dt:10
% 光伏阵列
[Ipv, Ppv] = pvArray(Vin_pv, 1000, 25);
% DC/DC Boost变换器
[Vo_pv, Io_pv] = boostConverter(Vin_pv, Ipv, dutyCycle);
% 电导增量法MPPT控制
dutyCycle = mpptControl(Vo_pv, Io_pv, Ppv, Vin_pv, Ipv, Ppv);
% 储能系统
[SoC, Pbat] = batteryModel(Ppv, SoC_initial, dt);
% 双向DC/DC变换器
[Vo_bat, Io_bat] = bidirectionalDCDC(Vo_pv, Io_pv, dutyCycle);
% 逆变器并网控制
[Vout, Iout] = pqControl(Pset, Qset, Vo_bat);
% 更新状态
SoC_initial = SoC;
end
注意事项
- 上述代码仅为简化示例,具体应用中需要根据实际情况调整参数和逻辑。
- 在设计过程中,应考虑实际硬件限制、安全操作范围等因素。
- 对于更复杂的系统,可能需要采用更高级的控制策略,如预测控制、模糊控制等。
为了实现一个光储交直流微电网的仿真模型,我们可以使用MATLAB和Simulink来构建各个组件,并通过适当的控制策略进行集成。以下是一个详细的步骤指南,包括代码示例。
1. 创建光伏阵列及其DC/DC变换器
光伏阵列
function [I, P] = pvArray(V, G, T)
% 输入参数
Voc = 21; % 开路电压 (V)
Isc = 8.23; % 短路电流 (A)
Impp = 7.6; % 最大功率点电流 (A)
Vmpp = 17.5; % 最大功率点电压 (V)
Gref = 1000; % 参考光照强度 (W/m^2)
Tref = 25; % 参考温度 (°C)
% 温度系数
Kt = -0.45; % 温度系数 (V/°C)
Ks = 0.005; % 温度系数 (A/°C)
% 计算实际开路电压和短路电流
Voc_actual = Voc + Kt * (T - Tref);
Isc_actual = Isc * (1 + Ks * (T - Tref)) * (G / Gref);
% 计算最大功率点
I = Isc_actual * (1 - exp((Voc_actual - V) / (Voc_actual / Impp)));
P = V * I;
end
DC/DC Boost变换器
function [Vo, Io] = boostConverter(Vi, Ii, dutyCycle)
% 输入参数
L = 1e-3; % 电感值 (H)
C = 1e-3; % 电容值 (F)
f = 10000; % 开关频率 (Hz)
% 计算输出电压和电流
Vo = Vi / (1 - dutyCycle);
Io = Ii * (1 - dutyCycle);
end
2. 电导增量法MPPT控制
function dutyCycle = mpptControl(Vpv,Ipv,Ppv,Vprev,Iprev,Pprev)
% 初始化参数
if isempty(Vprev)
Vprev = Vpv;
Iprev = Ipv;
Pprev = Ppv;
end
% 计算导数
dP_dV = (Ppv - Pprev) / (Vpv - Vprev);
% 更新旧值
Vprev = Vpv;
Iprev = Ipv;
Pprev = Ppv;
% 判断是否达到最大功率点
if dP_dV > 0
dutyCycle = min(dutyCycle + 0.001, 1); % 增加占空比
elseif dP_dV < 0
dutyCycle = max(dutyCycle - 0.001, 0); % 减少占空比
else
dutyCycle = dutyCycle; % 保持不变
end
end
3. 储能系统及双向DC/DC变换器
储能系统
function [SoC, Pbat] = batteryModel(Pin, SoC_initial, dt)
% 输入参数
Cbat = 100; % 电池容量 (Ah)
Vnom = 12; % 额定电压 (V)
eta = 0.9; % 效率
% 计算电池状态
SoC = SoC_initial + Pin * dt / (Cbat * Vnom * eta);
Pbat = Pin * eta;
end
双向DC/DC变换器
function [Vo, Io] = bidirectionalDCDC(Vi, Ii, dutyCycle)
% 输入参数
L = 1e-3; % 电感值 (H)
C = 1e-3; % 电容值 (F)
f = 10000; % 开关频率 (Hz)
% 计算输出电压和电流
Vo = Vi * dutyCycle;
Io = Ii / dutyCycle;
end
4. 逆变器并网/离网控制逻辑
恒PQ控制(并网)
function [Vout, Iout] = pqControl(Pset, Qset, Vin)
% 输入参数
Vnom = 220; % 额定电压 (V)
fnom = 50; % 额定频率 (Hz)
% 计算输出电压和电流
Vout = Vnom;
Iout = (Pset / Vout) + j * (Qset / Vout);
end
恒V/f控制(孤岛)
function [Vout, fout] = vfControl(Vset, fset)
% 输入参数
Vout = Vset;
fout = fset;
end
5. Simulink模型集成
在Simulink中创建一个新的模型,并添加上述模块:
- 光伏阵列:使用
PV Array
模块。 - DC/DC Boost变换器:使用
Boost Converter
模块。 - 电导增量法MPPT控制:使用
MATLAB Function
模块。 - 储能系统:使用
Battery
模块。 - 双向DC/DC变换器:使用
Bidirectional DC-DC Converter
模块。 - 逆变器:使用
Inverter
模块。 - 交流负载和直流负载:使用相应的负载模块。
- 断路器:使用
Breaker
模块。 - 交流主网:使用
AC Grid
模块。
示例代码
% 初始化参数
Vin_pv = 20; % 光伏输入电压 (V)
Ipv = 8; % 光伏输入电流 (A)
dutyCycle = 0.5; % 初始占空比
SoC_initial = 0.5; % 初始荷电状态
dt = 0.01; % 时间步长 (s)
Pset = 1000; % 并网有功功率 (W)
Qset = 0; % 并网无功功率 (VAR)
Vset = 220; % 孤岛电压 (V)
fset = 50; % 孤岛频率 (Hz)
% 运行仿真
for t = 0:dt:10
% 光伏阵列
[Ipv, Ppv] = pvArray(Vin_pv, 1000, 25);
% DC/DC Boost变换器
[Vo_pv, Io_pv] = boostConverter(Vin_pv, Ipv, dutyCycle);
% 电导增量法MPPT控制
dutyCycle = mpptControl(Vo_pv, Io_pv, Ppv, Vin_pv, Ipv, Ppv);
% 储能系统
[SoC, Pbat] = batteryModel(Ppv, SoC_initial, dt);
% 双向DC/DC变换器
[Vo_bat, Io_bat] = bidirectionalDCDC(Vo_pv, Io_pv, dutyCycle);
% 逆变器并网控制
[Vout, Iout] = pqControl(Pset, Qset, Vo_bat);
% 更新状态
SoC_initial = SoC;
end
注意事项
- 上述代码仅为简化示例,具体应用中需要根据实际情况调整参数和逻辑。
- 在设计过程中,应考虑实际硬件限制、安全操作范围等因素。
- 对于更复杂的系统,可能需要采用更高级的控制策略,如预测控制、模糊控制等。