表征电动汽车的电池电芯
此示例说明了如何使用 [1] 中的测试方法对电动汽车应用的电池电芯进行特性分析。此例估计了在五种不同环境温度下,BAK N18650CL-29 18650 型锂离子电芯 [2] 的参数。电池混合脉冲功率特性 (HPPC) 测试在受控的环境箱中进行。
电池测试
典型的 HPPC 数据是一组放电-充电脉冲,在不同的荷电状态 (SOC) 和给定温度 [1] 下施加到电池上。脉冲的大小取决于电芯容量和测试温度。在每次放电-充电脉冲操作序列结束时,通过施加恒定放电电流 C/3,SOC 约下降 10%。建议在每次放电-充电脉冲序列后,让电芯休息一个小时,以使其放松。该过程持续进行,直至覆盖 SOC 范围内的所有关键点。如需更多信息,请参阅 [1]。
测试条件与设置
生物学 BCS-815 8 通道电池测试仪,配备标准电缆、配件和热电偶,进行了电池 HPPC 测试 [3]。测试舱保持了温度和湿度控制。为了测量温度,测试人员使用了配备多路复用器功能的安捷伦 34972A 数据采集系统(搭配 34901A 20 通道多路复用器)。该系统测试了三种不同的采样。测试每次均可重现。电芯在五种不同的温度下进行了测试: 和 箱温。在测试期间,温度保持均匀。有关测试流程的更多信息,请参阅[1]。
这些图显示了电池测试数据。每个测试数据包含九组放电-充电脉冲。每次放电-充电操作后,C/3 恒定电流(SOC 扫描步骤)将电芯 SOC 降低 10%。要可视化电池测试数据,在 MATLAB® 命令行窗口中,输入:
T_vec = [0 10 25 35 45]; for i = 1:5 plotBatteryTestData(T_vec(i)); end





估计电池参数
Simscape™ Battery™ 中的 Battery (Table-Based) 模块使用等效电路建模方法。通过将多个电阻器-电容器 (RC) 对串联连接,可以捕捉电芯的不同物理现象。在 Battery (Table-Based) 模块中,最多可选择五个 RC 对。您可以从 HPPC 测试数据中得出电阻和时间常数参数的值。
该方程式定义了电池电芯的电压响应:
其中:
是电芯开路电势。
是电芯的欧姆电阻。
和 是电芯第 i 个 RC 对电阻和时间常数值。
是通过电芯的电流。
t 表示历时。
所有参数都是 SOC 和电芯温度的函数。由于 HPPC 测试通常在恒定温度下进行,因此在参数估计过程中可以忽略温度依赖性。该图显示了典型的放电-充电配置文件。

您可以通过放电或充电脉冲开始时电压的突然变化(例如 V1 到 V2 或 V5 到 V6)来估计电阻。要估计和参数,您可以使用放电 (V4 - V5) 或充电 (V8 - V9) 脉冲后的短电压放松。您可以从 SOC 扫描步骤 (V9 - V12) 之后的更长电压放松阶段 (V12 - V14) 中提取更多的时常数。来自 Curve Fitting Toolbox (TM) 的 fminsearch MATLAB 函数或 curvefit 函数使用测试数据点来拟合不同 SOC 点处的 和 参数。要确定给定 SOC 下的开路电压,请使用长放松期结束时的电压 (V1) 以及放电-充电脉冲操作开始前的电压。
在此示例中,您使用 batteryParametersLUT 函数来估计电池的 、 和 参数。
参数估计方法
函数 batteryParametersLUT 接受以下参量作为输入:
HPPC 数据,指定为时间(以秒为单位)、电流(以安培为单位)、电压(以伏特为单位)和 SOC (0-1) 的列向量。HPPC 数据中的第四列 SOC 为可选项。您必须确保数据涵盖电池的整个 SOC 范围,从完全充电的电芯 (SOC=1) 到几乎耗尽的电池电芯,以避免参数外推。
HPPC 数据中的电芯容量和初始 SOC,指定为两个标量值的数组。此示例使用 cellProp 参数来存储这些值。
放电脉冲电流(以 A 为单位)、充电脉冲电流(以 A 为单位)、SOC 扫描电流(以 A 为单位)以及检测这些电流的容差值,指定为四个标量值的数组。您必须将容差定义为一个合适的值(通常为 0.01-0.05),以便函数检测 HPPC 数据中的当前拐点。此示例使用 hppcProtocol 参数来存储这些值。
指定为整数的 RC 对数,以及指定为标量值数组的初始估计值,用于短(V4-V5 和 V8-V9)和长 (V12-V14) 松弛曲线。
数据拟合方法,指定为
fminsearch或curvefit。启用调试的选项,指定为
true或false。如果为true,则函数绘制用于曲线拟合的 HPPC 曲线以及用于评估欧姆电阻、动态参数和开路电势所选的点。
此代码说明了如何使用 batteryparametersLUT 函数。参数提取是一个两步过程:
result = batt_BatteryCellCharacterization.batteryParametersLUT(... [time, current, voltage],... cellProp,hppcProtocol,... numPairShort, iniEstimateShort,... numPairLong, iniEstimateLong,... "fminsearch", false); % Method to define number of RC pairs and the initial estimates % numRCpairs = 1; % iniEstimateRC = [1e-3 10]; % [R1, Tau1] % numRCpairsRest = 3; % iniEstimateRCrest = [1e-3 1 5e-3 10 1e-2 100]; % [R1, Tau1, R2, Tau2, R3, Tau3] % Specify all resistance values in Ohms % Specify all time constant values in seconds battRC = exportResultsForLib(... result, ... 0:1e-3:1, ... true);
您必须为 exportResultsForLib 函数提供以下输入参量:
batteryParametersLUT函数的输出。SOC 范围,指定为 SOC 断点数组。此示例使用 SOC 断点 0:1e-3:1。
绘制选项,指定为
true或false。如果为true,则该函数将所有估计的电池参数作为 SOC 范围的函数绘制出来。
battRC 工作区变量用于存储最终的参数化数据。
参数化 Battery (Table-Based) 模块
要对 Battery (Table-Based) 模块进行参数化,并可视化在 T_vec 工作区变量中指定的所有温度的验证结果,在 MATLAB 命令行窗口中输入:
optionRun = 0; % Define cell array to store parameters for different temperature cases cellParameters = cell(1,length(T_vec)); caseName = cell(1,length(T_vec));
估计向量 T_vec 中定义的所有温度下的电池参数:
for T = 1:length(T_vec) Tval = T_vec(1,T); caseName{1,T} = strcat(num2str(Tval),'degC'); disp(strcat('Estimating parameters for T = ',num2str(Tval),' degC')); % Get HPPC data for a particular temperature [time, current, voltage, cellProp, protocolHPPC] = ... getBatteryTestData(Tval); % Define the number of RC pairs to consider and the initial estimates % for resistance and the time constant values. [numRCshort, iniEstimateShort, numRClong, iniEstimateLong] = ... getBatteryIniEstimatesResTau(Tval); % Estimate battery parameters result = batt_BatteryCellCharacterization.batteryParametersLUT(... [time, current, voltage],... cellProp,protocolHPPC,... numRCshort,iniEstimateShort,... numRClong,iniEstimateLong,... "fminsearch", false); % Save generated parameters for library cellParameters{1,T} = ... exportResultsForLib(result, 0:1e-3:1, false); end
Estimating parameters for T =0 degC
*** Number of discharge pulses =9 *** Number of charge pulses =9 *** Number of SOC sweep pulses =8
Estimating parameters for T =10 degC
*** Number of discharge pulses =9 *** Number of charge pulses =9 *** Number of SOC sweep pulses =8
Estimating parameters for T =25 degC
*** Number of discharge pulses =9 *** Number of charge pulses =9 *** Number of SOC sweep pulses =8
Estimating parameters for T =35 degC
*** Number of discharge pulses =9 *** Number of charge pulses =9 *** Number of SOC sweep pulses =8
Estimating parameters for T =45 degC
*** Number of discharge pulses =9 *** Number of charge pulses =9 *** Number of SOC sweep pulses =8
将长休息(放松)时间拟合与短休息时间拟合结果与原始 HPPC 测试数据进行比较。该示例仅在您在上述下拉菜单中选择 Parameterize and Verify 时执行这些命令。
% Verification Plots if optionRun for T = 1:length(T_vec) Tval = T_vec(1,T); % Get HPPC data for a particular temperature [time, current, voltage, ~, ~] = getBatteryTestData(Tval); verifyCellParam = cellParameters{1,T}; hppcCurrentData = timeseries(current,time); warning('off','all'); % Run the verification model sim('CellCharacterizationHPPC.slx'); % Post-process data and plot sim_V1 = simlog_CellCharacterizationHPPC.longRest_3RC.v.series.values; sim_V2 = simlog_CellCharacterizationHPPC.shortRest_1RC.v.series.values; sim_t = simlog_CellCharacterizationHPPC.shortRest_1RC.v.series.time; % Plot figure('Name', strcat('HPPC verification ',caseName{1,T})); plot(sim_t,sim_V1,'r--');hold on; plot(sim_t,sim_V2,'b--');hold on; plot(time,voltage,'k-');hold off; legend('Fit from long relaxation time curve', ... 'Fit from short relaxation time curve',... 'Test Data','Location','southwest'); xlabel('Time (s)'); ylabel('Voltage (V)'); title(strcat('Verification plots for T = ',num2str(Tval))); end end
将不同温度下的电池参数组合到 Battery (Table-Based) 模块所需的格式中。
% Raw data generated from the parameterization paramData = cell2table(cellParameters, ... "VariableNames", caseName); % The Battery (Table-Based) block parameters % % Third argument "long" implies Battery Dynamic parameters selected based % upon the long relaxation or rest time. You can get short relaxation time % based parameters by using "short" instead of "long" in the third argument % below. battModel = getBatteryTableBasedParams( ... T_vec, cellParameters, "long", ... [numRCshort numRClong]);








paramData 和 battModel 工作区变量分别包含从参数化和 Battery (Table-Based) 模块参数生成的原始数据。
使用估计参数仿真电池
下图显示了 CellDischargeCC 模型。

battModel 工作区变量包含参数化所需的所有相关数据,并指定模型中 Battery (Table-Based) 模块的所有参数。该图显示了 Battery (Table-Based) 模块中的每个参数的值。

设置仿真的最小和最大 C 率。
oneHr = 3600; C_rate_min = 0.25; C_rate_max = 1; C_rate_del = 0.25; numCases = (C_rate_max - C_rate_min)/C_rate_del + 1;
设置电池热质量、初始温度和初始状态 (SOC)。电芯的温度取决于 CellThermalMass,该值等于 200 J/K。
CellThermalMass = 200; InitialTemperature = 305; InitialSOC = 1;
在给定的 InitialTemperature 条件下,以不同的 C 率进行恒定电流放电。
legendStr = strings(1,numCases); battSensorData = cell(1,numCases);
运行所有仿真。
caseNum = 0; for C_rate = C_rate_min:C_rate_del:C_rate_max caseNum = caseNum + 1; legendStr(1,caseNum) = strcat(num2str(C_rate),'C rate discharge case'); BatteryConstantCurrent = C_rate*battModel.CellCapacityAhr; batterySimTime_s = oneHr/C_rate; sim('CellDischargeCC'); ts = simlog_CellDischargeCC.battery.v.series.time; voltage = simlog_CellDischargeCC.battery.v.series.values; tempK = simlog_CellDischargeCC.battery.cell_temperature.series.values; battSensorData{1,caseNum} = [ts voltage tempK]; end
绘制不同恒定电流放电情况下的电池电压曲线。
titleDisplay = strcat('Cell Voltage, Ambient Temperature =',num2str(InitialTemperature-273),' degC'); figure('Name', titleDisplay); for itr = 1:numCases plot(battSensorData{1,itr}(:,1),battSensorData{1,itr}(:,2)); hold on end hold off legend(legendStr); xlabel('Time'); ylabel('Voltage'); title(titleDisplay);

绘制恒定电流放电过程中电池温度的升高曲线。
titleDisplay = strcat('Cell Temperature, Ambient Temperature =',num2str(InitialTemperature-273),' degC'); figure('Name', titleDisplay); for itr = 1:numCases plot(battSensorData{1,itr}(:,1),battSensorData{1,itr}(:,3)); hold on end hold off legend(legendStr); xlabel('Time'); ylabel('Temperature (K)'); title(titleDisplay);

参考资料
Christophersen, Jon P."Battery Test Manual For Electric Vehicles, Revision 3".United States:N. p., 2015.Web. doi:10.2172/1186745
Zhengzhou Bak Battery Co.,LTD, "Specification For Lithium-ion Rechargeable Cell.Cell Type :N18650CL-29".
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.
