主要内容

本页采用了机器翻译。点击此处可查看英文原文。

设计符合汽车要求的电池模组

自 R2024a 起

本示例演示了如何根据电池电芯测试数据设计电池模组和冷却板。模块化电池单元是降低汽车电池包成本的良好解决方案。电池模组可帮助满足类似行业领域不同客户的需求。电池电芯通常使用脉冲放电和充电数据进行参数化。此示例使用混合脉冲功率特性 (HPPC) 测试 [1] 来估计电池欧姆电阻和其他动态电阻值。

在测试室中,对采用磷酸铁锂 (LFP) 化学成分的 A123 电芯在五种不同温度下进行了测试:0oC10oC25oC35oC45oC [2]。测试期间,试验箱内的温度保持均匀。有关测试程序和电池电芯参数化的详细信息,请参阅 表征电动汽车的电池电芯 示例。

参数化电池电芯

指定 HPPC 测试温度,单位为摄氏度。

TestTemperatures = [0 10 25 35 45];
testData = struct();

要读取、可视化并从 HPPC 测试数据中提取单个脉冲信息,请使用 hppcTest 函数。

for tempIdx = 1:5
    filename = strcat("A123HPPCdata",num2str(TestTemperatures(tempIdx)),"deg");
    loadFilename = fullfile("testDataA123cells",filename);
    hppcData = load(loadFilename);
    
    testData.(filename) = hppcTest(hppcData.data,ValidVoltageRange=[2 4]);
    figure
    plot(testData.(filename))
    title(filename)
end

Figure contains an object of type simscape.battery.parameters.ui.hppcchart.

Figure contains an object of type simscape.battery.parameters.ui.hppcchart.

Figure contains an object of type simscape.battery.parameters.ui.hppcchart.

Figure contains an object of type simscape.battery.parameters.ui.hppcchart.

Figure contains an object of type simscape.battery.parameters.ui.hppcchart.

要为电池等效电路模型在您于 TestTemperatures 工作区变量中指定的所有温度下找到最佳拟合参数,请使用 hppcTestSuite 函数创建一个测试容器对象。

hppcSuite = hppcTestSuite([testData.A123HPPCdata0deg,...
    testData.A123HPPCdata10deg,...
    testData.A123HPPCdata25deg,...
    testData.A123HPPCdata35deg,...
    testData.A123HPPCdata45deg], ...
    Temperature=TestTemperatures);

要指定所需的电池模型断点以及电池模型中的 RC 分支数量,请使用 ecm 函数。

batteryEcm = ecm(2,"TemperatureBreakpoints",simscape.Value(TestTemperatures,"degC"),...
    "ResistanceTemperatureBreakpoints",simscape.Value(TestTemperatures,"degC"));

要拟合模型参数,请使用 fitECM 函数。

batteryEcm = fitECM(hppcSuite,SegmentToFit="loadAndRelaxation",ECM=batteryEcm); 

batteryEcm 对象的 ModelParameterTablesParameterSummary 属性包含估计的模型参数。要可视化参数趋势,请使用 plotModelParameters 方法。

plotModelParameters(batteryEcm)

Figure contains an axes object. The axes object with title ChargeOpenCircuitVoltageThermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title ChargeR0Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title ChargeR1Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title ChargeTau1Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title ChargeC1Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title ChargeR2Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title ChargeTau2Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title ChargeC2Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title DischargeOpenCircuitVoltageThermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title DischargeR0Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title DischargeR1Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title DischargeTau1Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title DischargeC1Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title DischargeR2Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title DischargeTau2Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

Figure contains an axes object. The axes object with title DischargeC2Thermal, xlabel State of charge (-), ylabel Temperature (K) contains an object of type surface.

存储在 cellModel 工作区变量中的“电池(基于表格)”参数包括:

  • 温度值向量

  • 荷电状态值向量

  • 开路电压

  • 充电过程中的端电阻

  • 放电过程中的端电阻

  • 电芯容量

  • 电芯动态特性 - 所有 RC 对的极化电阻和时间常数

您可以在 cellModel 结构体中指定其他相关的电池参数。.

cellModel.Dim.Height = 0.195;    % Battery cell height
cellModel.Dim.Width = 0.150;     % Battery cell width
cellModel.Dim.Thickness = 0.020; % Battery cell thickness
cellModel.Dim.Mass = 0.4;        % Battery cell mass
cellModel.Dim.Cp = 800;          % Battery cell heat capacity
clearvars -except cellModel batteryEcm

构建电池模组

电池电芯在充电或放电时会产生热量。您必须安装冷却板以散热,并确保电池在运行期间保持在合理温度范围内。下表列出了关键的设计要求以及如何指定电池模组参数以满足这些要求:

要求

模型参数

在 100 A 的恒定电流下快速充电 20 分钟,然后操作电池模组。

HPPC 脉冲幅度为 40 A。对于 100 A 的电流,必须至少并联连接三个电芯。

numCells_p = 3;

为防止电芯过热,电芯温度的最大上升幅度必须低于或等于 10 摄氏度。将此要求设置得尽可能低。

requirements.MaxCellTempInc = 10;

模组内的最大温度梯度不得超过 5 摄氏度。电芯必须保持均匀衰减​。将此要求设置得尽可能低。

requirements.MaxModuleTgrad = 5;

冷却液的泵送要求必须较低,且模组的泵送要求必须低于 20 kPa。

requirements.MaxPressureDrop = 20000;

电池模组由五个串联单元组成,每个单元由三个并联电芯组成,共计 15 个电芯。

% Specify the number of cells in the parallel set.
numCells_p = 3;
% Specify the number of series-connected parallel set.
numCells_s = 5;
% Specify the maximum acceptable temperature gradient in the battery module.
requirements.MaxModuleTgrad  = 5;
% Specify the maximum acceptable temperature rise within the battery module.
requirements.MaxCellTempInc  = 10;
% Specify the maximum acceptable pressure drop for the module cooling system.
requirements.MaxPressureDrop = 20000;

加载预生成的电池模组库。

batteryLFP = load('BattDetailedModuleLFP.mat');

要更新预生成的电池库模块,请使用 buildBatteryModule 函数。在 MATLAB® 命令行窗口中输入:

% If you already have BattDetailedModuleLFP library folder in your working directory,
% then you must delete it before running this code.
[~,moduleDetailed] = buildBatteryModule(numCells_s,numCells_p,cellModel);
buildBattery(moduleDetailed,'LibraryName','BattDetailedModuleLFP',...
                            'MaskParameters','VariableNamesByInstance');
moduleLFP = load('BattDetailedModuleLFP.mat');

绘制电池模组。

battDetailedPlot = batteryChart(batteryLFP.Detailed);
title(battDetailedPlot,"Detailed Battery Model");

Figure contains an object of type simscape.battery.builder.batterychart.

初始化详细电池模组模块的参数。

run('BattDetailedModuleLFP_param');

参数化电池模组

根据您之前定义的电芯参数设置模组参数。

run('setBattModuleLFPcell_param');

通过指定 thermal_massCellPercentDeviation 值来设置电池电芯的热质量变化。

thermalMassPercentDev = load("BattDetailedModuleCellVar.mat");
Detailed.thermal_massCellPercentDeviation = thermalMassPercentDev.cellToCell;

电池模组冷却系统的设计

此例中的电池模组采用 Parallel Channels 冷却板。设置并联通道冷却板的参数。

run('setBattModuleCoolingPlate_param');

设置工作参数。

chargingParams.SOC = 0.05;  % Initial battery state of charge
chargingParams.T = 300;     % Initial battery temperature, K
chargingParams.I = 100;     % Charging current, A
chargingParams.time = 1200; % Charging time, s
chargingParams.CoolT = 300; % Coolant inlet temperature, K
chargingParams.Flow = 3;    % Flowrate, lpm

您必须运行一个试验设计来估计冷却板的所需参数。设置冷却通道数量、通道直径和适用冷却液流量的选项。定义平行通道冷却板的设计参数。

designParams.NumChannelOptions = [2 3 4];
designParams.FlowrateOptions = [1 3 5];
designParams.ChannelDiaOptions = [1.5e-3 2e-3 2.5e-3];

要运行全因子设计选项,在 MATLAB 命令行窗口中,输入:

simResults = getBattModuleThermalDesign(designParams, chargingParams, thermalMassPercentDev.cellToCell);
save battModuleLFPsimResults.mat simResults

加载仿真结果。

load('battModuleLFPsimResults.mat');

选择符合要求的仿真。

selectData = simResults.("Max. Gradient Tcell") <= requirements.MaxModuleTgrad &...
             simResults.("Pressure Drop") <= requirements.MaxPressureDrop &...
             simResults.("Max. Tcell") - chargingParams.T <= requirements.MaxCellTempInc;

goodDesignPoints = simResults(selectData,:)
goodDesignPoints=2×6 table
    Max. Gradient Tcell    Max. Tcell    Pressure Drop    Num. Channels    Flowrate    Channel Diameter
    ___________________    __________    _____________    _____________    ________    ________________

           1.3088            309.27          18024              2             1             0.002      
          0.32956            308.72          13021              3             1             0.002      

根据电芯温度上升的最低值选择最终设计。

[~,bestOptionID] = min(goodDesignPoints.("Max. Tcell"));
finalDesign = goodDesignPoints(bestOptionID,:)
finalDesign=1×6 table
    Max. Gradient Tcell    Max. Tcell    Pressure Drop    Num. Channels    Flowrate    Channel Diameter
    ___________________    __________    _____________    _____________    ________    ________________

          0.32956            308.72          13021              3             1             0.002      

disp(strcat('Select coolant plate with #Channels=',num2str(finalDesign.("Num. Channels")),', ChannelDia=',num2str(finalDesign.("Channel Diameter")*1000),'mm.'));
Select coolant plate with #Channels=3, ChannelDia=2mm.

该参数化冷却板非常适合该要求。

参考资料

  1. Christophersen, Jon P. Battery Test Manual For Electric Vehicles, Revision 3.United States:N. p., 2015.Web. doi:10.2172/1186745

  2. Anandaroop Bhattacharya, Subhasish Basu Majumder."Experimental data collected with Biologic BCS-815 8-channel battery tester for battery HPPC test".Indian Institute of Technology (IIT) Kharagpur, India.

另请参阅

|