%% 电池模型单独文件
clear; close all; clc;
model_name = 'Battery_Model';
new_system(model_name);
open_system(model_name);
% 电池参数
V_nominal = 48; % 额定电压 48V
Capacity = 100; % 容量 100AH
R_internal = 0.1; % 内阻 0.1Ω
% 使用更通用的模块路径
% 输出端口 - 使用不同的可能路径
try
add_block('simulink/Commonly Used Blocks/Out1', [model_name '/Voltage_Out']);
catch
try
add_block('simulink/Sinks/Out1', [model_name '/Voltage_Out']);
catch
add_block('simulink/Sinks/Outport', [model_name '/Voltage_Out']);
end
end
try
add_block('simulink/Commonly Used Blocks/Out1', [model_name '/SOC_Out']);
catch
try
add_block('simulink/Sinks/Out1', [model_name '/SOC_Out']);
catch
add_block('simulink/Sinks/Outport', [model_name '/SOC_Out']);
end
end
try
add_block('simulink/Commonly Used Blocks/Out1', [model_name '/Current_Out']);
catch
try
add_block('simulink/Sinks/Out1', [model_name '/Current_Out']);
catch
add_block('simulink/Sinks/Outport', [model_name '/Current_Out']);
end
end
% 输入端口 - 使用不同的可能路径
try
add_block('simulink/Commonly Used Blocks/In1', [model_name '/Current_In']);
catch
try
add_block('simulink/Sources/In1', [model_name '/Current_In']);
catch
add_block('simulink/Sources/Inport', [model_name '/Current_In']);
end
end
% 创建电池子系统
add_block('simulink/Sources/Constant', [model_name '/Battery_Voltage']);
set_param([model_name '/Battery_Voltage'], 'Value', num2str(V_nominal));
add_block('simulink/Discontinuities/Dead Zone', [model_name '/Charge_Discharge']);
set_param([model_name '/Charge_Discharge'], 'LowerValue', '-1');
set_param([model_name '/Charge_Discharge'], 'UpperValue', '1');
add_block('simulink/Commonly Used Blocks/Gain', [model_name '/Internal_Resistance']);
set_param([model_name '/Internal_Resistance'], 'Gain', num2str(R_internal));
add_block('simulink/Math Operations/Add', [model_name '/Voltage_Sum']);
set_param([model_name '/Voltage_Sum'], 'Inputs', '+-');
% SOC计算
add_block('simulink/Continuous/Integrator', [model_name '/SOC_Integrator']);
set_param([model_name '/SOC_Integrator'], 'InitialCondition', '100');
set_param([model_name '/SOC_Integrator'], 'LowerSaturationLimit', '0');
set_param([model_name '/SOC_Integrator'], 'UpperSaturationLimit', '100');
add_block('simulink/Commonly Used Blocks/Gain', [model_name '/SOC_Gain']);
set_param([model_name '/SOC_Gain'], 'Gain', num2str(-1/(Capacity*3600)));
% 连接
add_line(model_name, 'Current_In/1', 'Charge_Discharge/1');
add_line(model_name, 'Charge_Discharge/1', 'Internal_Resistance/1');
add_line(model_name, 'Internal_Resistance/1', 'Voltage_Sum/2');
add_line(model_name, 'Battery_Voltage/1', 'Voltage_Sum/1');
add_line(model_name, 'Voltage_Sum/1', 'Voltage_Out/1');
% SOC计算连接
add_line(model_name, 'Current_In/1', 'SOC_Gain/1');
add_line(model_name, 'SOC_Gain/1', 'SOC_Integrator/1');
add_line(model_name, 'SOC_Integrator/1', 'SOC_Out/1');
add_line(model_name, 'Current_In/1', 'Current_Out/1');
% 添加显示
try
add_block('simulink/Commonly Used Blocks/Display', [model_name '/SOC_Display']);
catch
add_block('simulink/Sinks/Display', [model_name '/SOC_Display']);
end
add_line(model_name, 'SOC_Integrator/1', 'SOC_Display/1');
% 自动排列并保存
Simulink.BlockDiagram.arrangeSystem(model_name);
save_system(model_name);
fprintf('电池模型创建完成: %s.slx\n', model_name);
最新发布