柴油发电机仿真 Matlab Simulink 柴油发电机matlab仿真 微电网仿真 柴油发电仿真 风光柴储微电网
·
柴油发电机仿真 Matlab Simulink 柴油发电机matlab仿真 微电网仿真 柴油发电仿真 风光柴储微电网 光伏发电 柴油发电 风力发电 储能电池 光柴储微电网 风柴储微电网 风机光伏柴油储能微电网
文章目录
在 MATLAB/Simulink 中实现柴油发电机、光伏、风力发电和储能电池组成的微电网仿真,通常需要搭建一个完整的系统模型。以下是一个简化的代码示例,用于帮助你理解如何实现风光柴储微电网的仿真。
1. 系统组成
- 柴油发电机:提供稳定的电力输出。
- 光伏发电:根据光照强度产生电力。
- 风力发电:根据风速产生电力。
- 储能电池:平衡供需,存储多余电能。
- 负载:模拟用电需求。
2. MATLAB 代码示例
以下代码是一个简单的 MATLAB 脚本,用于模拟风光柴储微电网的基本运行逻辑。你可以将其扩展到 Simulink 模型中。
% 风光柴储微电网仿真
clc;
clear;
% 参数设置
T = 24; % 仿真时间 (小时)
dt = 0.1; % 时间步长 (小时)
time = 0:dt:T; % 时间向量
% 光伏发电参数
solar_irradiance = [0, 0, 0, 0, 0, 100, 300, 500, 700, 900, 1000, 1000, ...
1000, 900, 700, 500, 300, 100, 0, 0, 0, 0, 0, 0]; % 日照强度 (W/m^2)
pv_efficiency = 0.2; % 光伏效率
pv_area = 50; % 光伏板面积 (m^2)
% 风力发电参数
wind_speed = [3, 3, 3, 3, 3, 4, 5, 6, 7, 8, 9, 10, 10, 9, 8, 7, 6, 5, 4, 3, 3, 3, 3, 3]; % 风速 (m/s)
wind_turbine_efficiency = 0.4; % 风机效率
air_density = 1.225; % 空气密度 (kg/m^3)
swept_area = 100; % 风机扫掠面积 (m^2)
% 柴油发电机参数
diesel_power_max = 50; % 最大功率 (kW)
diesel_efficiency = 0.35; % 柴油机效率
fuel_cost = 1; % 燃料成本 ($/L)
% 储能电池参数
battery_capacity = 100; % 电池容量 (kWh)
battery_soc = 50; % 初始SOC (%)
battery_soc_min = 20; % 最小SOC (%)
battery_soc_max = 100; % 最大SOC (%)
battery_efficiency = 0.9; % 电池充放电效率
% 负载参数
load_profile = [10, 10, 10, 10, 10, 20, 30, 40, 50, 60, 70, 80, ...
90, 80, 70, 60, 50, 40, 30, 20, 10, 10, 10, 10]; % 负载功率 (kW)
% 初始化变量
pv_power = zeros(size(time));
wind_power = zeros(size(time));
diesel_power = zeros(size(time));
battery_power = zeros(size(time));
battery_soc_profile = zeros(size(time));
% 仿真循环
for i = 1:length(time)
% 光伏发电
pv_power(i) = solar_irradiance(i) * pv_efficiency * pv_area / 1000; % kW
% 风力发电
wind_power(i) = 0.5 * air_density * swept_area * wind_speed(i)^3 * wind_turbine_efficiency / 1000; % kW
% 总发电量
total_generation = pv_power(i) + wind_power(i);
% 功率平衡
power_deficit = load_profile(i) - total_generation; % 功率缺额
if power_deficit > 0
% 缺电时优先使用电池
battery_power(i) = min(power_deficit, (battery_soc - battery_soc_min) * battery_capacity / 100);
power_deficit = power_deficit - battery_power(i);
if power_deficit > 0
% 如果电池不足,启动柴油发电机
diesel_power(i) = min(diesel_power_max, power_deficit);
end
elseif power_deficit < 0
% 多余电量充电
battery_power(i) = max(power_deficit, -(battery_soc_max - battery_soc) * battery_capacity / 100);
end
% 更新电池SOC
battery_soc = battery_soc - battery_power(i) * dt / battery_capacity * 100 / battery_efficiency;
battery_soc = max(battery_soc_min, min(battery_soc_max, battery_soc)); % 限制SOC范围
battery_soc_profile(i) = battery_soc;
end
% 绘图
figure;
subplot(3,1,1);
plot(time, pv_power, 'r', time, wind_power, 'b', time, diesel_power, 'g');
legend('光伏功率', '风电功率', '柴油功率');
xlabel('时间 (小时)');
ylabel('功率 (kW)');
title('发电功率');
subplot(3,1,2);
plot(time, load_profile, 'k', time, pv_power + wind_power + diesel_power + battery_power, 'm');
legend('负载功率', '总供电功率');
xlabel('时间 (小时)');
ylabel('功率 (kW)');
title('负载与供电功率');
subplot(3,1,3);
plot(time, battery_soc_profile, 'c');
xlabel('时间 (小时)');
ylabel('SOC (%)');
title('电池SOC');
3. 说明
- 光伏发电:基于日照强度和光伏板面积计算功率输出。
- 风力发电:基于风速和风机参数计算功率输出。
- 柴油发电机:当光伏发电和风力发电不足以满足负载需求时启动。
- 储能电池:在电力过剩时充电,在电力不足时放电。
- 功率平衡:优先利用可再生能源,其次使用储能电池,最后启动柴油发电机。
4. 扩展到 Simulink
可以将上述逻辑模块化,分别搭建光伏发电、风力发电、柴油发电机、储能电池和负载的子系统,然后通过 Simulink 的信号连接完成整个系统的仿真。
-
具体的目标:您希望实现什么样的仿真效果?例如,是想模拟柴油发电机在不同负载下的响应,还是想研究其与电网的交互?
-
数学模型:柴油发电机的数学模型是什么样的?这通常包括转子动力学、电磁场、燃料系统等。
基本柴油发电机仿真框架
1. 创建一个新的 Simulink 模型
打开 MATLAB 并创建一个新的 Simulink 模型。
2. 添加必要的模块
- Sine Wave 或 Step 模块:用于模拟负载变化。
- Transfer Fcn 模块:用于模拟柴油发电机的动力学特性。
- Gain 模块:用于调整增益。
- Sum 模块:用于计算输入输出差值。
- Scope 模块:用于观察输出结果。
3. 构建模型
以下是一个简单的 Simulink 模型示例,用于模拟柴油发电机的基本动态响应。
% 创建新的 Simulink 模型
new_system('DieselGeneratorSim');
% 打开模型
open_system('DieselGeneratorSim');
% 添加模块
add_block('simulink/Sources/Step', 'DieselGeneratorSim/Step');
add_block('simulink/Continuous/Transfer Fcn', 'DieselGeneratorSim/TransferFcn');
add_block('simulink/Math Operations/Gain', 'DieselGeneratorSim/Gain');
add_block('simulink/Commonly Used Blocks/Sum', 'DieselGeneratorSim/Sum');
add_block('simulink/Sinks/Scope', 'DieselGeneratorSim/Scope');
% 设置模块参数
set_param('DieselGeneratorSim/Step', 'StepTime', '5', 'FinalValue', '1');
set_param('DieselGeneratorSim/TransferFcn', 'Numerator', '[1]', 'Denominator', '[1 0.5 1]');
set_param('DieselGeneratorSim/Gain', 'Gain', '2');
set_param('DieselGeneratorSim/Sum', 'Inputs', '|+-', 'IconShape', 'rectangular');
% 连接模块
add_line('DieselGeneratorSim', 'Step/1', 'Sum/1');
add_line('DieselGeneratorSim', 'TransferFcn/1', 'Sum/2');
add_line('DieselGeneratorSim', 'Sum/1', 'Gain/1');
add_line('DieselGeneratorSim', 'Gain/1', 'TransferFcn');
add_line('DieselGeneratorSim', 'TransferFcn/1', 'Scope/1');
% 设置仿真参数
set_param('DieselGeneratorSim', 'StopTime', '20', 'Solver', 'ode45');
% 保存模型
save_system('DieselGeneratorSim');
4. 运行仿真
运行上述脚本后,您将得到一个基本的柴油发电机仿真模型。点击“运行”按钮开始仿真,并通过 Scope 观察输出结果。
注意事项
- 上述模型非常简化,实际应用中可能需要考虑更多因素,如非线性效应、时变参数等。

从
- 具体的目标:您希望实现什么样的仿真效果?例如,是想模拟三相系统的稳态响应,还是研究其在故障情况下的动态行为?
- 已有的模型细节:您是否已经有了部分 Simulink 模型?如果有,请描述一下现有的结构。
- 数学模型:三相系统的数学模型是什么样的?这通常包括电压、电流、功率等。
基本三相电力系统仿真框架
1. 创建一个新的 Simulink 模型
打开 MATLAB 并创建一个新的 Simulink 模型。
2. 添加必要的模块
- Three-Phase Source 模块:用于生成三相电压。
- Three-Phase Transformer 模块:用于模拟变压器。
- Three-Phase Load 模块:用于模拟负载。
- Measurement Blocks 模块:用于测量电压和电流。
- Scope 模块:用于观察输出结果。
3. 构建模型
以下是一个简单的 Simulink 模型示例,用于模拟三相电力系统的基本动态响应。
% 创建新的 Simulink 模型
new_system('ThreePhaseSystemSim');
% 打开模型
open_system('ThreePhaseSystemSim');
% 添加模块
add_block('powerlib/Elements/Three-Phase Source', 'ThreePhaseSystemSim/ThreePhaseSource');
add_block('powerlib/Elements/Three-Phase Transformer', 'ThreePhaseSystemSim/ThreePhaseTransformer');
add_block('powerlib/Elements/Three-Phase Programmable Resistor', 'ThreePhaseSystemSim/ThreePhaseLoad');
add_block('powerlib/Measurements/Voltage Measurement', 'ThreePhaseSystemSim/VoltageMeasurement');
add_block('powerlib/Measurements/Current Measurement', 'ThreePhaseSystemSim/CurrentMeasurement');
add_block('simulink/Sinks/Scope', 'ThreePhaseSystemSim/Scope');
% 设置模块参数
set_param('ThreePhaseSystemSim/ThreePhaseSource', 'MagnitudeA', '500', 'Frequency', '60');
set_param('ThreePhaseSystemSim/ThreePhaseTransformer', 'Primary', 'Delta', 'Secondary', 'Wye', 'TurnsRatio', '1');
set_param('ThreePhaseSystemSim/ThreePhaseLoad', 'R', '10');
set_param('ThreePhaseSystemSim/VoltageMeasurement', 'Inputs', 'abc');
set_param('ThreePhaseSystemSim/CurrentMeasurement', 'Inputs', 'abc');
% 连接模块
add_line('ThreePhaseSystemSim', 'ThreePhaseSource/1', 'ThreePhaseTransformer/1');
add_line('ThreePhaseSystemSim', 'ThreePhaseTransformer/2', 'ThreePhaseLoad/1');
add_line('ThreePhaseSystemSim', 'VoltageMeasurement/1', 'Scope/1');
add_line('ThreePhaseSystemSim', 'CurrentMeasurement/1', 'Scope/2');
% 设置仿真参数
set_param('ThreePhaseSystemSim', 'StopTime', '0.1', 'Solver', 'ode23tb');
% 保存模型
save_system('ThreePhaseSystemSim');
4. 运行仿真
运行上述脚本后,您将得到一个基本的三相电力系统仿真模型。点击“运行”按钮开始仿真,并通过 Scope 观察输出结果。
注意事项
- 上述模型非常简化,实际应用中可能需要考虑更多因素,如非线性效应、时变参数等。

一个基本的 Simulink 模型框架和相应的代码示例。
1. 创建一个新的 Simulink 模型
首先,在 MATLAB 中创建一个新的 Simulink 模型:
new_system('ParallelDieselGenerators');
open_system('ParallelDieselGenerators');
2. 添加必要的模块
在 Simulink 库中找到以下模块,并将其添加到模型中:
- Sine Wave 或 Step 模块:用于模拟参考速度和电压。
- Transfer Fcn 模块:用于模拟柴油发动机的速度控制和电压控制。
- Sum 模块:用于计算输入输出差值。
- Gain 模块:用于调整增益。
- Scope 模块:用于观察输出结果。
- Synchronous Machine 模块:用于模拟同步发电机。
- Three-Phase Transformer 模块:用于模拟变压器。
- Three-Phase Programmable Resistor 模块:用于模拟负载。
- Measurement Blocks 模块:用于测量电压和电流。
3. 构建模型
以下是构建模型的基本步骤和代码示例:
3.1 添加柴油发动机速度和电压控制模块
add_block('simulink/Sources/Step', 'ParallelDieselGenerators/wref1');
set_param('ParallelDieselGenerators/wref1', 'StepTime', '0', 'FinalValue', '1');
add_block('simulink/Sources/Step', 'ParallelDieselGenerators/vtref1');
set_param('ParallelDieselGenerators/vtref1', 'StepTime', '0', 'FinalValue', '1');
add_block('simulink/Math Operations/Gain', 'ParallelDieselGenerators/Kp1');
set_param('ParallelDieselGenerators/Kp1', 'Gain', '1');
add_block('simulink/Commonly Used Blocks/Sum', 'ParallelDieselGenerators/Sum1');
set_param('ParallelDieselGenerators/Sum1', 'Inputs', '|+-', 'IconShape', 'rectangular');
add_block('simulink/Continuous/Transfer Fcn', 'ParallelDieselGenerators/TransferFcn1');
set_param('ParallelDieselGenerators/TransferFcn1', 'Numerator', '[1]', 'Denominator', '[1 0.5 1]');
% 连接模块
add_line('ParallelDieselGenerators', 'wref1/1', 'Sum1/1');
add_line('ParallelDieselGenerators', 'vtref1/1', 'Kp1/1');
add_line('ParallelDieselGenerators', 'Kp1/1', 'Sum1/2');
add_line('ParallelDieselGenerators', 'Sum1/1', 'TransferFcn1/1');
3.2 添加同步发电机模块
add_block('powerlib/Elements/Synchronous Machine', 'ParallelDieselGenerators/SynchronousMachine1');
set_param('ParallelDieselGenerators/SynchronousMachine1', 'PowerRating', '0.5e6', 'NominalFrequency', '60');
% 连接同步发电机与速度控制模块
add_line('ParallelDieselGenerators', 'TransferFcn1/1', 'SynchronousMachine1/1');
3.3 添加变压器和负载模块
add_block('powerlib/Elements/Three-Phase Transformer', 'ParallelDieselGenerators/Transformer1');
set_param('ParallelDieselGenerators/Transformer1', 'Primary', 'Delta', 'Secondary', 'Wye', 'TurnsRatio', '1');
add_block('powerlib/Elements/Three-Phase Programmable Resistor', 'ParallelDieselGenerators/Load1');
set_param('ParallelDieselGenerators/Load1', 'R', '10');
% 连接变压器和负载
add_line('ParallelDieselGenerators', 'SynchronousMachine1/2', 'Transformer1/1');
add_line('ParallelDieselGenerators', 'Transformer1/2', 'Load1/1');
3.4 添加第二个柴油发电机模块(重复上述步骤)
% 添加第二个柴油发动机速度和电压控制模块
add_block('simulink/Sources/Step', 'ParallelDieselGenerators/wref2');
set_param('ParallelDieselGenerators/wref2', 'StepTime', '0', 'FinalValue', '1');
add_block('simulink/Sources/Step', 'ParallelDieselGenerators/vtref2');
set_param('ParallelDieselGenerators/vtref2', 'StepTime', '0', 'FinalValue', '1');
add_block('simulink/Math Operations/Gain', 'ParallelDieselGenerators/Kp2');
set_param('ParallelDieselGenerators/Kp2', 'Gain', '1');
add_block('simulink/Commonly Used Blocks/Sum', 'ParallelDieselGenerators/Sum2');
set_param('ParallelDieselGenerators/Sum2', 'Inputs', '|+-', 'IconShape', 'rectangular');
add_block('simulink/Continuous/Transfer Fcn', 'ParallelDieselGenerators/TransferFcn2');
set_param('ParallelDieselGenerators/TransferFcn2', 'Numerator', '[1]', 'Denominator', '[1 0.5 1]');
% 连接模块
add_line('ParallelDieselGenerators', 'wref2/1', 'Sum2/1');
add_line('ParallelDieselGenerators', 'vtref2/1', 'Kp2/1');
add_line('ParallelDieselGenerators', 'Kp2/1', 'Sum2/2');
add_line('ParallelDieselGenerators', 'Sum2/1', 'TransferFcn2/1');
% 添加第二个同步发电机模块
add_block('powerlib/Elements/Synchronous Machine', 'ParallelDieselGenerators/SynchronousMachine2');
set_param('ParallelDieselGenerators/SynchronousMachine2', 'PowerRating', '0.3e6', 'NominalFrequency', '60');
% 连接同步发电机与速度控制模块
add_line('ParallelDieselGenerators', 'TransferFcn2/1', 'SynchronousMachine2/1');
% 添加第二个变压器和负载模块
add_block('powerlib/Elements/Three-Phase Transformer', 'ParallelDieselGenerators/Transformer2');
set_param('ParallelDieselGenerators/Transformer2', 'Primary', 'Delta', 'Secondary', 'Wye', 'TurnsRatio', '1');
add_block('powerlib/Elements/Three-Phase Programmable Resistor', 'ParallelDieselGenerators/Load2');
set_param('ParallelDieselGenerators/Load2', 'R', '10');
% 连接变压器和负载
add_line('ParallelDieselGenerators', 'SynchronousMachine2/2', 'Transformer2/1');
add_line('ParallelDieselGenerators', 'Transformer2/2', 'Load2/1');
3.5 添加测量和显示模块
add_block('powerlib/Measurements/Voltage Measurement', 'ParallelDieselGenerators/VoltageMeasurement1');
set_param('ParallelDieselGenerators/VoltageMeasurement1', 'Inputs', 'abc');
add_block('powerlib/Measurements/Current Measurement', 'ParallelDieselGenerators/CurrentMeasurement1');
set_param('ParallelDieselGenerators/CurrentMeasurement1', 'Inputs', 'abc');
add_block('simulink/Sinks/Scope', 'ParallelDieselGenerators/Scope1');
% 连接测量模块和示波器
add_line('ParallelDieselGenerators', 'VoltageMeasurement1/1', 'Scope1/1');
add_line('ParallelDieselGenerators', 'CurrentMeasurement1/1', 'Scope1/2');
4. 设置仿真参数并运行
set_param('ParallelDieselGenerators', 'StopTime', '20', 'Solver', 'ode23tb');
save_system('ParallelDieselGenerators');
注意事项
- 上述模型非常简化,实际应用中可能需要考虑更多因素,如非线性效应、时变参数等。
更多推荐




所有评论(0)