基于Matlab/Simulink仿真模型
风光储并网发电系统仿真模型 风力发电+光伏发电+储能+三相逆变并网Matlab/Simulink仿真模型
①光伏Boost:采用电导增量法来实现光伏板最大功率跟踪
②风机:拓扑采用三相整流电路,控制采用MPPT控制
③蓄电池储能:采用双向Buck_Boost电路,电压电流双闭环控制策略,电压环稳定直流母线电压800V
④并网逆变器:三相桥式逆变器,采用PQ控制恒功率并网
仿真结果如详情图片所示
Matlab/Simulink仿真模型
文章目录
为了实现你所描述的风光储并网发电系统的仿真模型,我们需要在MATLAB/Simulink中构建各个组件,并设置相应的控制策略。下面我将提供一个简化的框架和示例代码来帮助你开始这个项目。请注意,由于Simulink模型包含图形化组件,以下内容主要以指导如何搭建模型为主,并附带一些关键部分的MATLAB脚本。
1. 构建系统模型
光伏Boost电路(采用电导增量法MPPT)
- 电导增量法MPPT:可以使用MATLAB Function块来实现电导增量算法。
function duty = mpptIncrementalConductance(v_pv, i_pv, v_old, p_old)
dp = v_pv * i_pv - p_old;
dv = v_pv - v_old;
if dp == 0
duty = duty_cycle; % Keep current duty cycle
elseif (dp > 0 && dv > 0) || (dp < 0 && dv < 0)
duty_cycle = duty_cycle + step_size; % Increase duty cycle
else
duty_cycle = duty_cycle - step_size; % Decrease duty cycle
end
duty = max(min(duty_cycle, 1), 0); % Ensure duty cycle is within [0, 1]
end
风机(三相整流电路+MPPT控制)
- 风机模型:可以使用MATLAB/Simulink中的
Simscape Electrical
库中的元件构建。 - MPPT控制:类似于光伏MPPT,但可能需要考虑风速变化对输出功率的影响。
蓄电池储能(双向Buck_Boost电路)
- 双向Buck_Boost电路:同样使用
Simscape Electrical
库中的元件构建。 - 电压电流双闭环控制:可以使用PI控制器来稳定直流母线电压和电流。
% Voltage and Current Control for Battery
e_v = V_ref - V_bus;
e_i = I_ref - I_bus;
% PI Controller for Voltage
Kp_v = 1; % Proportional gain for voltage
Ki_v = 0.1; % Integral gain for voltage
u_v = Kp_v * e_v + Ki_v * integral(e_v);
% PI Controller for Current
Kp_i = 1; % Proportional gain for current
Ki_i = 0.1; % Integral gain for current
u_i = Kp_i * e_i + Ki_i * integral(e_i);
% Combine Voltage and Current Control
u = u_v + u_i;
% Limit the output to ensure stability
u = max(min(u, U_max), U_min);
并网逆变器(三相桥式逆变器)
- PQ控制恒功率并网:可以通过设置参考功率值,并使用适当的控制策略来调整逆变器输出。
2. Simulink 模型搭建步骤
-
打开新的Simulink模型:
- 在MATLAB中输入
simulink
打开Simulink。
- 在MATLAB中输入
-
添加模块:
- 添加光伏板、风机、蓄电池等电源模块。
- 添加Boost电路、整流电路、双向Buck_Boost电路等电力电子模块。
- 添加三相桥式逆变器。
- 添加控制模块,如PID控制器、MPPT控制器等。
-
配置模块参数:
- 根据你的具体需求配置每个模块的参数,例如电压、电流、频率等。
-
连接模块:
- 将电源模块与对应的电力电子模块连接。
- 连接电力电子模块与控制系统。
- 确保所有模块之间的信号流正确无误。
-
运行仿真:
- 设置合适的仿真时间和步长。
- 运行仿真并观察结果。
3. 示例代码片段
这里提供的是一个简化版的MATLAB脚本,用于初始化和运行仿真:
% 参数设置
fs = 1000; % 采样频率 (Hz)
t = 0:1/fs:1; % 时间向量
% 初始化模型
open_system('your_simulink_model'); % 打开你的Simulink模型
% 设置模型参数
set_param('your_simulink_model/PV_Panel', 'Irradiance', '1000'); % 设置光照强度
set_param('your_simulink_model/Wind_Turbine', 'WindSpeed', '10'); % 设置风速
% 运行仿真
sim('your_simulink_model');
% 获取仿真结果
result = struct2cell(get_param('your_simulink_model', 'SimulationOutput'));
% 绘制结果
figure;
plot(t, result{1}.signals.values);
title('Simulation Results');
xlabel('Time (s)');
ylabel('Values');
grid on;
结论
上述提供的代码和说明旨在为你提供一个起点,以便你可以根据自己的具体需求构建和调整模型。实际应用中,你可能需要进一步优化模型参数和控制策略,以达到最佳性能。
为了构建一个完整的风光储并网发电系统的Simulink模型,我将提供一个详细的指南和代码片段。这个系统包括光伏板、风力发电机、储能电池和三相逆变器,并采用相应的控制策略。
1. 光伏Boost电路(采用电导增量法MPPT)
控制算法
function duty = mpptIncrementalConductance(v_pv, i_pv, v_old, p_old)
dp = v_pv * i_pv - p_old;
dv = v_pv - v_old;
if abs(dv) < 0.001 % Avoid division by zero
duty = duty_cycle; % Keep current duty cycle
elseif (dp > 0 && dv > 0) || (dp < 0 && dv < 0)
duty_cycle = duty_cycle + step_size; % Increase duty cycle
else
duty_cycle = duty_cycle - step_size; % Decrease duty cycle
end
duty = max(min(duty_cycle, 1), 0); % Ensure duty cycle is within [0, 1]
end
Simulink模型
- 光伏板:使用
Photovoltaic Array
模块。 - Boost变换器:使用
DC-DC Boost Converter
模块。 - MPPT控制器:使用MATLAB Function模块实现上述算法。
2. 风力发电机(三相整流电路+MPPT控制)
控制算法
function pitch_angle = mpptWind(v_wind, omega_r, P_ref)
P_actual = 0.5 * rho * A * v_wind^3 * C_p(omega_r);
if P_actual < P_ref
pitch_angle = 0; % No pitch control needed
else
pitch_angle = atan((P_actual - P_ref) / (K * omega_r));
end
end
Simulink模型
- 风力发电机:使用
Wind Turbine
模块。 - 三相整流器:使用
Three-Phase Rectifier
模块。 - MPPT控制器:使用MATLAB Function模块实现上述算法。
3. 蓄电池储能(双向Buck_Boost电路)
控制算法
function u = batteryControl(V_bus, V_ref, I_bus, I_ref)
e_v = V_ref - V_bus;
e_i = I_ref - I_bus;
% PI Controller for Voltage
Kp_v = 1; % Proportional gain for voltage
Ki_v = 0.1; % Integral gain for voltage
u_v = Kp_v * e_v + Ki_v * integral(e_v);
% PI Controller for Current
Kp_i = 1; % Proportional gain for current
Ki_i = 0.1; % Integral gain for current
u_i = Kp_i * e_i + Ki_i * integral(e_i);
% Combine Voltage and Current Control
u = u_v + u_i;
% Limit the output to ensure stability
u = max(min(u, U_max), U_min);
end
Simulink模型
- 蓄电池:使用
Battery
模块。 - 双向Buck_Boost变换器:使用
Bidirectional Buck-Boost Converter
模块。 - 电压电流双闭环控制:使用PI控制器模块。
4. 并网逆变器(三相桥式逆变器)
控制算法
function Sabc = pqControl(P_ref, Q_ref, Vabc, Iabc)
% Convert to dq frame
[Vd, Vq] = abc2dq(Vabc);
[Id, Iq] = abc2dq(Iabc);
% Calculate errors
ed = P_ref / Vd - Id;
eq = Q_ref / Vq - Iq;
% PI Controller for d-axis
Kp_d = 1; % Proportional gain for d-axis
Ki_d = 0.1; % Integral gain for d-axis
ud = Kp_d * ed + Ki_d * integral(ed);
% PI Controller for q-axis
Kp_q = 1; % Proportional gain for q-axis
Ki_q = 0.1; % Integral gain for q-axis
uq = Kp_q * eq + Ki_q * integral(eq);
% Convert back to abc frame
Sabc = dq2abc([ud, uq]);
end
Simulink模型
- 三相桥式逆变器:使用
Three-Phase Bridge
模块。 - PQ控制:使用MATLAB Function模块实现上述算法。
5. 整体系统集成
MATLAB脚本
% 参数设置
fs = 1000; % 采样频率 (Hz)
t = 0:1/fs:1; % 时间向量
% 初始化模型
open_system('your_simulink_model'); % 打开你的Simulink模型
% 设置模型参数
set_param('your_simulink_model/PV_Panel', 'Irradiance', '1000'); % 设置光照强度
set_param('your_simulink_model/Wind_Turbine', 'WindSpeed', '10'); % 设置风速
% 运行仿真
sim('your_simulink_model');
% 获取仿真结果
result = struct2cell(get_param('your_simulink_model', 'SimulationOutput'));
% 绘制结果
figure;
plot(t, result{1}.signals.values);
title('Simulation Results');
xlabel('Time (s)');
ylabel('Values');
grid on;
结论
上述提供的代码和说明旨在为你提供一个起点,以便你可以根据自己的具体需求构建和调整模型。实际应用中,你可能需要进一步优化模型参数和控制策略,以达到最佳性能
为了构建一个完整的风光储并网发电系统的Simulink模型,并提供相应的控制策略代码,我将详细说明每个部分的实现方法。以下是一个简化版的示例代码和模型搭建步骤。
1. 光伏Boost电路(采用电导增量法MPPT)
控制算法
function duty = mpptIncrementalConductance(v_pv, i_pv, v_old, p_old)
dp = v_pv * i_pv - p_old;
dv = v_pv - v_old;
if abs(dv) < 0.001 % Avoid division by zero
duty = duty_cycle; % Keep current duty cycle
elseif (dp > 0 && dv > 0) || (dp < 0 && dv < 0)
duty_cycle = duty_cycle + step_size; % Increase duty cycle
else
duty_cycle = duty_cycle - step_size; % Decrease duty cycle
end
duty = max(min(duty_cycle, 1), 0); % Ensure duty cycle is within [0, 1]
end
Simulink模型
- 光伏板:使用
Photovoltaic Array
模块。 - Boost变换器:使用
DC-DC Boost Converter
模块。 - MPPT控制器:使用MATLAB Function模块实现上述算法。
2. 风力发电机(三相整流电路+MPPT控制)
控制算法
function pitch_angle = mpptWind(v_wind, omega_r, P_ref)
P_actual = 0.5 * rho * A * v_wind^3 * C_p(omega_r);
if P_actual < P_ref
pitch_angle = 0; % No pitch control needed
else
pitch_angle = atan((P_actual - P_ref) / (K * omega_r));
end
end
Simulink模型
- 风力发电机:使用
Wind Turbine
模块。 - 三相整流器:使用
Three-Phase Rectifier
模块。 - MPPT控制器:使用MATLAB Function模块实现上述算法。
3. 蓄电池储能(双向Buck_Boost电路)
控制算法
function u = batteryControl(V_bus, V_ref, I_bus, I_ref)
e_v = V_ref - V_bus;
e_i = I_ref - I_bus;
% PI Controller for Voltage
Kp_v = 1; % Proportional gain for voltage
Ki_v = 0.1; % Integral gain for voltage
u_v = Kp_v * e_v + Ki_v * integral(e_v);
% PI Controller for Current
Kp_i = 1; % Proportional gain for current
Ki_i = 0.1; % Integral gain for current
u_i = Kp_i * e_i + Ki_i * integral(e_i);
% Combine Voltage and Current Control
u = u_v + u_i;
% Limit the output to ensure stability
u = max(min(u, U_max), U_min);
end
Simulink模型
- 蓄电池:使用
Battery
模块。 - 双向Buck_Boost变换器:使用
Bidirectional Buck-Boost Converter
模块。 - 电压电流双闭环控制:使用PI控制器模块。
4. 并网逆变器(三相桥式逆变器)
控制算法
function Sabc = pqControl(P_ref, Q_ref, Vabc, Iabc)
% Convert to dq frame
[Vd, Vq] = abc2dq(Vabc);
[Id, Iq] = abc2dq(Iabc);
% Calculate errors
ed = P_ref / Vd - Id;
eq = Q_ref / Vq - Iq;
% PI Controller for d-axis
Kp_d = 1; % Proportional gain for d-axis
Ki_d = 0.1; % Integral gain for d-axis
ud = Kp_d * ed + Ki_d * integral(ed);
% PI Controller for q-axis
Kp_q = 1; % Proportional gain for q-axis
Ki_q = 0.1; % Integral gain for q-axis
uq = Kp_q * eq + Ki_q * integral(eq);
% Convert back to abc frame
Sabc = dq2abc([ud, uq]);
end
Simulink模型
- 三相桥式逆变器:使用
Three-Phase Bridge
模块。 - PQ控制:使用MATLAB Function模块实现上述算法。
5. 整体系统集成
MATLAB脚本
% 参数设置
fs = 1000; % 采样频率 (Hz)
t = 0:1/fs:1; % 时间向量
% 初始化模型
open_system('your_simulink_model'); % 打开你的Simulink模型
% 设置模型参数
set_param('your_simulink_model/PV_Panel', 'Irradiance', '1000'); % 设置光照强度
set_param('your_simulink_model/Wind_Turbine', 'WindSpeed', '10'); % 设置风速
% 运行仿真
sim('your_simulink_model');
% 获取仿真结果
result = struct2cell(get_param('your_simulink_model', 'SimulationOutput'));
% 绘制结果
figure;
plot(t, result{1}.signals.values);
title('Simulation Results');
xlabel('Time (s)');
ylabel('Values');
grid on;
6. 示例代码片段
以下是具体的Simulink模型搭建步骤:
-
打开新的Simulink模型:
open_system('new_model');
-
添加模块:
add_block('simulink/Sources/Step', 'new_model/Step_Source'); add_block('simulink/Sinks/Scope', 'new_model/Scope_Output');
-
配置模块参数:
set_param('new_model/Step_Source', 'Amplitude', '1'); set_param('new_model/Scope_Output', 'Position', '[100 100]');
-
连接模块:
connect('new_model/Step_Source', 'new_model/Scope_Output');
-
运行仿真:
sim('new_model');
-
获取仿真结果:
result = struct2cell(get_param('new_model', 'SimulationOutput')); figure; plot(result{1}.signals.values); title('Simulation Results'); xlabel('Time (s)'); ylabel('Values'); grid on;