电池测试量热法ARC(放热反应电池测试模型温度)「电池放热怎么计算」

这个例子展示了如何通过模拟加速量热法来测试电池单元的热失控行为
ARC测试是一种研究和电池热行为的技术
为了测量发热率和热稳定性,测试对电池进行控制加热
该测试有助于确定电池可能进入热失控的条件,并为电池设计、安全措施和风险评估提供有价值的信息
通过ARC测试,可以了解电池的热行为,包括热失控期间的起始温度和热释放速率
这些信息对于开发更安全的电池技术和实施安全措施以防止或减轻与热失控相关的风险至关重要
电池热失控事件是一种自我强化和不受控制的放热反应,内部或外部热源、电气或机械滥用、制造缺陷或过度充电等因素都可能引发这种反应
当发生热失控时,电池的温度会迅速升高
这种快速增加会导致一连串的化学反应、热量产生的增加和易燃气体的释放
此图显示了ARC测试中热失控事件的各个阶段:模型概览打开CellThermalRunawayARC模型modelName = 'CellThermalRunawayARC';open_system(modelName);该系统包括ARC设备子系统和电池块
蓄电池单元开路,这意味着它与任何电气负载断开
打开ARC设备子系统
ARC设备子系统包括ARC设备控制器图表和ARC设备硬件子系统
硬件包括一个带有加热器和温度传感器的完全绝缘的盒子
控制器命令是加热还是启用冷却
open_system(strcat(modelName,'/ARC Device'))打开ARC设备控制器图表open_sytem(strcat(modelName,'/ARC Device/ARC Device Controller'));ARC设备子系统使用热等待寻道策略缓慢加热电池,直到电池开始自热
然后设备等待,直到反应完成,并命令进行冷却程序
利用热失控事件模拟ARC测试在本节中,将向电池块添加放热反应故障
然后配置故障并运行模拟以绘制温度时间序列
添加放热反应故障定义放热反应故障
要确保放热反应从模拟开始就处于活动状态,将TriggerType属性设置为“始终打开”
cellBlockName = "Battery Cell";blockPath = strcat(modelName,'/',cellBlockName);faultObj = getFaultObject(blockPath,"Exothermic reactions");faultObj.Name = "ExothermicAlwaysOn";faultObj.Description = strcat('Exothermic reactions with analytical model and no SOC tabulation. ', ... 'Trigger is always on to allow the ARC Device to find the actual exothermic onset temperature');faultObj.TriggerType = "Always On";配置分析放热反应故障根据电池的电化学特性设置放热反应参数
请参阅数据表,为您自己的单元模型自定义值
选择不依赖于电池SOC的分析模型
setFaultParameter(faultObj,"ExothermModel","simscape.battery.enum.cells.ExothermModel.analytical");setFaultParameter(faultObj,"TabulateWithSOC","0");TotalHeatOfReactionJ =29000; % JActivationEnergyJpmol =135000; % JPercentThermalMassVented =35; ExothermOnsetTemperatureK =340; % KCurrentInterruptTemperatureK =447; % KsetFaultParameter(faultObj,"TotalHeatOfReaction",num2str(TotalHeatOfReactionJ));setFaultParameter(faultObj,"ActivationEnergy",num2str(ActivationEnergyJpmol));setFaultParameter(faultObj,"PercentThermalMassVented",num2str(PercentThermalMassVented));setFaultParameter(faultObj,"ExothermOnsetTemperature",num2str(ExothermOnsetTemperatureK));setFaultParameter(faultObj,"CurrentInterruptTemperature",num2str(CurrentInterruptTemperatureK));运行分析放热反应故障模拟启用故障并运行模拟faultObj.activate;out = sim(modelName);simlog1 = out.simlog_CellThermalRunawayARC;绘图模拟结果绘制电池温度Tcell = simlog1.Battery_Cell.batteryTemperature;reactionExtent = simlog1.Battery_Cell.reactionExtent;plot(Tcell);绘制反应的范围plot(reactionExtent);电池放热反应您可以使用ARC测试通过实验确定自加热热失控事件期间作为温度函数的温度速率
如果您有实验数据,请将其加载并绘制在本节中
使用分析热失控模型的模拟结果作为实验测量结果
[TcellSH,dTdtSH] = extractTemperatureDuringSelfHeating(simlog1);plot(TcellSH,dTdtSH,"r");grid ontitle("Temperature Rate as Function of Temperature");xlabel("Cell Temperature (K)");ylabel("dTdt (K/s)");使用表查找配置数据驱动的放热反应模型使用模拟数据对数据驱动的放热反应模型进行参数化
选择表格中的ARC测试温度速率,不要对SOC的依赖性进行建模
setFaultParameter(faultObj,"ExothermModel","simscape.battery.enum.cells.ExothermModel.acceleratedRateCalorimetryTemperature"); % select Tabulated ARC test temperature ratesetFaultParameter(faultObj,"TabulateWithSOC","0"); % do not model dependency with SOC in this casesetFaultParameter(faultObj,"TemperaturesFromARC",mat2str(TcellSH));setFaultParameter(faultObj,"TemperatureRatesFromARC",mat2str(dTdtSH));faultObj.TriggerType = "Behavioral"; % Use Temperature-based trigger.faultObj.BehavioralTriggerData.TriggerTemperature.value = num2str(ExothermOnsetTemperatureK); % Set trigger temperature运行数据驱动的放热反应故障模拟启用故障并运行数据驱动的模拟faultObj.activate;out = sim(modelName);simlog2 = out.simlog_CellThermalRunawayARC;绘图模拟结果绘制电池温度Tcell = simlog2.Battery_Cell.batteryTemperature;reactionExtent = simlog2.Battery_Cell.reactionExtent;plot(Tcell)绘制反应的范围plot(reactionExtent)验证放热反应范围将测量的温度速率与来自数据驱动的放热反应模型的模拟温度速率进行比较
ARC实验数据与查表模型的模拟结果非常吻合
[simTcellSH,simdTdtSH] = extractTemperatureDuringSelfHeating(simlog2);figureplot(TcellSH,dTdtSH,"r")hold onplot(simTcellSH,simdTdtSH,"b")grid ontitle("Temperature Rate as Function of Temperature")xlabel("Cell Temperature (K)")ylabel("dTdt (K/s)")legend({"ARC Experiment (Analytical)","Simulation Results (Tabulated)"},Location="best")结论:观察ARC实验数据与表查找模型的模拟结果之间的良好拟合
函数function [TcellSH, dTdtSH] = extractTemperatureDuringSelfHeating(simlog) % Returns temperature and temperature-rate vectors during self-heating tvec = simlog.Battery_Cell.batteryTemperature.series.time; Tcell = simlog.Battery_Cell.batteryTemperature.series.values("K"); reactionExtent = simlog.Battery_Cell.reactionExtent.series.values; selfHeating = reactionExtent > 0.01 & reactionExtent < 0.99; TcellSH = Tcell(selfHeating); dTdtSH = diff(TcellSH)./diff(tvec(selfHeating)); TcellSH(end) = []; % to have the same length as dTdtSHend
电池测试量热法ARC(放热反应电池测试模型温度)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息