混合脉冲功率特性 (HPPC) 参数估计
Simscape™ Battery™ 包含用于从电池混合脉冲表征 (HPPC) 数据执行电池等效电路模型 (ECM) 参数估计的对象和函数。该功能可用于处理和统计电池电芯测试数据,拟合或回归 ECM 参数,验证拟合精度,可视化参数趋势,并自动对 Simscape Battery 电芯模块进行参数化处理。HPPC 是电池行业中一项重要的技术,也是在电池电芯和系统层面最常进行的电池测试之一。
Simscape Battery 包含用于估计 ECM 参数的基础优化方法。您还可以从其他工具箱中选择方法,例如从 System Identification Toolbox™ 工具箱中选择 tfest 函数。这些替代优化方法通常比默认优化方法提供更稳健的参数估计方法。要使用这些优化方法,您必须拥有所需工具箱的许可证。
该图展示了从 HPPC 数据中估计模型参数的一般工作流程。

混合脉冲功率特性分析
HPPC 技术涉及向电池施加一系列恒定电流脉冲,并在不同工况下测量其端电压和温度响应。多种关键工况会影响电芯的阻抗及测得的电压响应。这些工况包括:
初始电池浸泡温度
初始荷电状态 (SOC)
电流或负载
当前方向性,例如充电或放电
健康状态 (SOH) 或剩余容量
负载频率
热边界条件
每次电流脉冲测得的电压响应包含有关电池阻抗的宝贵信息。这种阻抗反过来能提供有关电池性能和功率能力的数据。
HPPC 测试方法对于表征电池的 DC 内阻 (DCIR)、开发动态电池模型、测试和提升电池管理系统 (BMS) 的稳健性,以及确保电池满足应用性能要求至关重要。多家机构已制定标准化 HPPC 测试程序,以确保结果的一致性和可比性。以下是一些关键的行业标准:
美国先进电池联盟 (USABC)
IEC 62660-1(国际电工委员会)
SAE J1798(汽车工程师学会)
ISO 12405-1(国际标准化组织)
爱达荷国家实验室 INL/EXT-15-34184
这些标准的典型目标是获取电池在特定 SOC 值或任何关键工况时能够输出或吸收的最大电流和功率的近似值。该曲线图展示了锂离子电池在 25°C 温和工作条件下、90% SOC 电量状态下的初始静止状态或平衡状态下的动态电压响应。

该图中测得的电压响应表现出线性特性。您可以通过使用简单的 RC 支路等效电路模型(例如双 RC 等效电路模型)来低误差地建模此响应。然而,在较低的电池温度或极低的 SOC 状态下(例如 SOC 低于 10%时),电池的电压响应可能呈现非线性行为。在这些情况下,线性 RC 分支 ECM 的估计算法通常会失效,或者给出的模型参数会导致测量电池电压与仿真电池电压之间的相关性极低。您必须了解所用电池模型的局限性,以及参数估计方法所产生的误差。极端工况最适合采用电化学电池模型或物理增强等效电路模型进行建模,而非线性等效电路模型。

在 Simscape Battery 中,您可以利用 HPPC 数据推导或估计线性 RC 分支 ECM 在不同温度、SOC 值和电流下的参数的值。然后,您可以使用估计的参数对 Battery Equivalent Circuit 模块进行参数化。
选择电路拓扑
为确保模型在计算上高效、能捕捉必要的动态特性,并符合分析或应用的目标,必须根据所需测试数据合理选择模型电路拓扑。拓扑决定了模型的复杂度,在计算效率与精度之间寻求平衡。更复杂的拓扑能捕捉更细致的行为,但需要您估计更多参数。
要估计电池 ECM 的参数,请使用 ECM 对象。ECM 对象创建一个等效电路模型对象,用于从阻抗数据估计电池参数。在执行 HPPC 测试时,使用此对象收集您的数据。
电化学模型 (ECM) 通过使用一组电气电路元素(包括电阻器、电容器和电感器)以特定电路拓扑连接,来近似模拟电芯的动态行为,例如随时间变化的电压响应。ECM 类似于真实的电化学系统。ECM 的仿真速度较快,但模型的保真度和准确性较低。
本表展示了用于表示电池阻抗的最典型电化学模型。
| 电路名称 | NumRCPairs 属性值 | 拓扑与参数 |
|---|---|---|
| 单电阻器 | 0 |
|
| Thevenin ECM 或单 RC 分支 ECM | 1 |
|
| 双 RC 分支 ECM | 2 |
|
| 3 RC 分支 ECM | 3 |
|
有关 ECM 对象及其属性及函数的更多信息,请参阅 ecm。
处理测试数据
要导入、查看、处理和存储来自 Simscape Battery 中的 HPPC 实验技术的数据,请使用 HPPCTest 和 HPPCTestSuite 对象。
HPPCTest 对象
HPPCTest 对象可让您对 HPPC 数据中的不同恒定电流脉冲进行可视化、制表和操作。HPPCTest 对象包含单个 HPPC 测试程序中执行过的所有当前脉冲的汇总信息。该对象会自动识别每个恒定电流脉冲,并将其制成表格以便检查,同时作为数据预处理中的一个选项,为参数估计过程做好准备。此 HPPC 测试数据必须采用 MAT 文件格式,且必须包含时间、电流和电压信号。按选项,您可以指定温度、电量和 SOC。
通过使用 HPPCTest 对象的对象函数,您可以绘制整个 HPPC 测试电压或特定脉冲的测量电压,添加或移除电流脉冲的数据,并一次性更新所有充放电脉冲的 SOC 值。
HPPCTest 对象根据以下属性自动识别数据中的充放电恒流脉冲:
ValidPulseDurationRange- 有效脉冲持续时间范围,用于指示脉冲是否有效,且必须存储在TestSummary属性表中。将上限值降低至 60 秒以下的值,可确保诸如容量检测等极长放电过程不会被纳入最终的脉冲估计列表中。将该属性的下限值提高至大于一秒或两秒的值,可确保该函数将潜在噪声、异常电流或异常短脉冲排除在最终用于估计的脉冲列表之外。ValidVoltageRange- 有效电池电压范围,用于指示脉冲是否有效,且必须存储在TestSummary属性表中。CurrentOnThreshold- 阈值电流值,用于指示当前处于充电还是放电状态。该值对于静止电流或基线电流不为零的实验至关重要。NumSamplesRequirement- 连续点数,以标量形式指定,当电流值大于CurrentOnThreshold属性的值时,即表示存在充电或放电脉冲。
您可以根据个人选项自定义这些属性,从而过滤出或仅选择用于参数估计的脉冲。
有关该对象及其属性和函数的更多信息,请参阅 hppcTest。
HPPCTestSuite 对象
您可以在多种不同条件下执行电池 HPPC 测试,包括温度、SOC、电流和剩余容量。随后可将这些测试存储于多个文件中。Simscape Battery 指代多个 HPPC 测试文件组成的 HPPC 测试套件。HPPC 测试套件通常根据每个电流脉冲开始时的电池温度进行分类,该温度在不同的 SOC 值和负载电流下保持恒定。在其他情况下,电池的初始温度也可能因测试设置和热环境的不同而在特定测试文件内产生差异。
在 Simscape Battery 中,您可以通过合并不同的电池 ECM 对象或使用 HPPCTestSuite 对象,来估计一组 HPPC 测试的多维参数表。HPPCTestSuite 对象是一组不同的独立 HPPC 测试,这些测试通常在不同温度、不同电池电芯或不同电池 C 率下进行。您可以为每个 HPPC 测试的温度提供一个选项。
有关该对象及其属性和函数的更多信息,请参阅 hppcTestSuite。
估计模型参数
在选择能反映电池行为的等效电路模型拓扑后,您将使用收集到的 HPPC 测试数据对模型进行拟合。该过程涉及调整模型参数,以使模型预测与实验数据之间的差异最小化。要找到最优参数,需使用优化算法。随后,您通过将模型预测结果与额外实验数据或不同工况进行对比来验证模型,以确保其准确性和可靠性。
对于 HPPC 数据,参数估计过程涉及最小化 ECM 预测电压输出与 HPPC 测试中测得的电池电压响应之间的误差。为最小化误差,需反复调整模型参数(如 R0、R1 和 C1),直至测量电压与仿真电压之间的误差达到满意水平。
fitECM 函数通过基于时间的 HPPC 数据对电池 ECM 进行阻抗参数估计。这些参数随后存储在 ECM 对象中,您可以使用该对象对 Battery Equivalent Circuit 模块进行参数化设置。
您可以选择不同的拟合方法来估计模型参数。要选择拟合方法和拟合的脉冲段,请分别指定 FittingMethod 和 SegmentToFit 属性。此表显示了 fitECM 函数中这些属性的可用选项列表。选择这些方法需要您拥有关联的 MATLAB® 工具箱的许可证。
| 必需的 MATLAB 工具箱 | FittingMethod 属性 | SegmentToFit 属性 |
|---|---|---|
| Simscape Battery | fminsearch |
|
| Simscape Battery 和 Curve Fitting Toolbox™ | curvefit |
|
| Simscape Battery 和 System Identification Toolbox | tfest |
|
| Simscape Battery 和 Model-Based Calibration Toolbox™ | mbc | 不可用 |
针对特定工作点的电池 ECM 参数可能存在差异,这取决于参数估计过程中所采用的电流脉冲段或区段。负载分段参数适用于大多数应用场景。然而,最佳估计区间取决于电池 ECM 的具体终端应用场景。某些方法更适合用于估计特定区段的参数。例如,tfest 函数最适合拟合纯负载动力学。fminsearch 方法对初始参数值、参数上限和参数下限极为敏感。
该图展示了电池 ECM 的测量电压响应与仿真电压响应,其参数通过 fitECM 函数进行估计。该函数使用具有恒定开路电压值的双 RC 模型计算仿真电压。

有关 fitECM 函数及其参量的更多信息,请参阅 fitECM。
欧姆电阻计算
fitECM 函数根据您选择的拟合方法,以不同方式计算 ECM 参数。
对于 "fminsearch"、"curvefit" 和 "tfest" 方法,该函数利用 ThresholdForR0 的值,基于恒流脉冲的初始电压降直接计算欧姆电阻值。ThresholdForR0 属性的值表示函数通过应用欧姆定律计算瞬时电阻的时间点。在欧姆定律方程中,ThresholdForR0 处的电流是分母,静止状态下的初始电压减去 ThresholdForR0 处的电压是分子。该函数采用最近点插值法,估计 ThresholdForR0 处的电压值和电流值。
该方程计算欧姆电阻:
,其中:
U0- 脉冲开始时的初始电压或开路电压,单位为伏特UThresholdForR0 - 在ThresholdForR0属性值处的插值电压,单位为伏特IThresholdForR0 - 在ThresholdForR0属性值处的插值电流,单位为安培
动态电阻计算
您可以通过曲线拟合和模型拟合的识别方法或基于优化的方法,计算与 RC 支路相关的其他高阶动态参数,例如 R1、C1、Tau1、R2、C2、Tau2、R3、C3 和 Tau3。
下图展示了电池在负载条件下随时间推移所发生的关键阻抗动态变化或过电势演变的概览。最初,在电流达到设定值后的最初几毫秒内,测得的端电压变化主要源于欧姆电阻的影响。欧姆电阻是与电流通过材料导电相关的电阻,只要有电流流过电芯,该电阻就始终存在。若脉冲持续时间达到十分之一秒及以上,电极界面处的电化学反应将持续进行,此时所需能量相对较少。这种能量用于将锂从金属插层态转化为溶剂化离子,或从溶剂化离子转化为金属态。这微小的能量需求实际上导致了额外的电荷转移电阻。只要电流脉冲持续存在,这种电阻就会保持活性并不断演变。最后,经过数秒后,电池微结构内部发生的扩散过程及其他质量传递机制,同样转化为随时间和电流密度增长的额外电阻。因此,在设计 HPPC 实验时,必须考虑适当的采样频率。采样频率决定了您能够多好地捕捉、分离并理解不同的动态特性。

左图显示了电池对恒定电流脉冲的测量电压响应。电压值随时间或脉冲持续时间的函数而变化。右侧曲线图显示了通过电化学阻抗谱 (EIS) 技术获得的实部阻抗的绝对值。在给定条件下,两种技术测得的电阻值必须一致。电化学阻抗谱 (EIS) 是理解电池内部不同过电势发生时间尺度更优的技术。您可以利用电化学阻抗谱 (EIS) 来理解欧姆电阻出现的时间尺度,并了解如何通过采样来分离欧姆电阻与电荷转移的贡献。
参数化与仿真
参数估计工作流的最后一步取决于您是使用 HPPC 数据还是 EIS 数据来估计模型参数。
对于 HPPC 数据,您可以使用估计的参数来参数化一个 Battery Equivalent Circuit 模块。此参数化设置使您能够在 Simulink® 中运行电池仿真。要对 Battery Equivalent Circuit 模块进行参数化,请使用 ECM 对象的 parameterizeEquivalentCircuitBlock 函数。
该图展示了参数化前后 Battery Equivalent Circuit 模块掩模内部的参数。左侧的模块掩码显示了 Battery Equivalent Circuit 模块参数的默认值。当调用 parameterizeEquivalentCircuitBlock 函数时,软件会自动将模型参数参数化,使用 ECM 对象内部的估计值。

参考
[1] Barai, Anup, Kotub Uddin, W. D. Widanage, Andrew McGordon, and Paul Jennings. “A Study of the Influence of Measurement Timescale on Internal Resistance Characterisation Methodologies for Lithium-Ion Cells.” Scientific Reports 8, no. 1 (January 8, 2018): 21. https://doi.org/10.1038/s41598-017-18424-5.
另请参阅
hppcTest | hppcTestSuite | ecm | fitECM | Battery Equivalent
Circuit | parameterizeEquivalentCircuitBlock



