主要内容

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

从电化学阻抗谱数据估计电池模型参数

自 R2025a 起

本示例演示了如何使用 Simscape™ Battery™ 软件,从电化学阻抗谱 (EIS) 数据中估计电池等效电路模型 (ECM) 的参数。分数阶等效电路模型 (FOECM) 是用于分析和解释电化学阻抗谱 (EIS) 数据的等效电路模型。电化学阻抗谱 (EIS) 是一种有价值的技术,可用于探测或研究电池电芯和燃料电池等电化学系统的阻抗动态特性。传统上,在电化学钝化测试 (EIS) 过程中,需向电化学电芯施加微弱的交变电流 (AC) 信号,并测量由此产生的电压响应。该电压响应可用于表征不同工况下跨频段的复杂阻抗特性,包括初始电池浸泡温度、初始荷电状态 (SOC)、电流或负载、电流方向性、健康状态 (SOH) 或剩余容量,以及负载频率。

在此示例中,首先通过在 MATLAB® 中创建 EISModel 对象来定义 FOECM,这使得您能够在频域中对 FOECM 的阻抗进行仿真和可视化。然后,您估计最接近给定 EIS 配置文件的 FOECM 参数。

仿真 FOECM 的频率响应

要在 MATLAB® 中表示 FOECM,请使用 eisModel 函数创建一个 EISModel 对象。

eisfom = eisModel(); 
disp(eisfom)
  EISModel with properties:

     CircuitTopology: "R0+L1+(R1,CPE1)+(R2,CPE2)+CPE3"
       NumParameters: 10
       ParameterList: ["R0"    "L1"    "R1"    "CPE1n"    "CPE1Q"    "R2"    "CPE2n"    "CPE2Q"    "CPE3n"    "CPE3Q"]
     ParameterValues: [0.0250 1.0000e-06 0.0035 0.8000 1 0.0350 0.8000 10 0.8000 100]
    CircuitImpedance: "((((R0 + (i*w*L1)) + ((R1 * (1/(((i*w)^CPE1n)*CPE1Q))) / (R1 + (1/(((i*w)^CPE1n)*CPE1Q))))) + ((R2 * (1/(((i*w)^CPE2n)*CPE2Q))) / (R2 + (1/(((i*w)^CPE2n)*CPE2Q))))) + (1/(((i*w)^CPE3n)*CPE3Q)))"
       ParameterList: ["R0"    "L1"    "R1"    "CPE1n"    "CPE1Q"    "R2"    "CPE2n"    "CPE2Q"    "CPE3n"    "CPE3Q"]

Show all properties

该图展示了默认 EISModel 对象的等效电路拓扑:

DefaultFOECM.png

EISModel 对象允许您通过 CircuitTopology 属性指定构成 FOECM 的电路元素的类型、数量及连接方式。您通过字符串值定义电路拓扑。使用 "+" 符号表示串联连接。使用 "( , )" 符号表示并联连接。嵌套的并联或串联连接数量没有限制。

此表显示了 CircuitTopology 属性支持的电气电路元素:

名称

标识符字符串

图标

阻抗

机制

电阻器

R

Resistor.png

R

电解质、电极及其他导体的欧姆电阻。

电容器

C

Capacitor.png

1j*w*C

电极或电解质界面处的双层结构

电感器

L

Inductor.png

j*w*L

测量装置中导线、导体和布线引起的感应效应

恒相位元件

CPE

ConstantPhaseElement.png

1(j*w)n*Q

解释了非理想电容行为,通常由表面粗糙度、不均匀性或多孔电极引起。

有限空间 Warburg

FSW

FiniteSpaceWarburg.png

Zj*w*t*coth(j*w*t)

发生在有限区域内的扩散过程,例如固态电池电解质内部的扩散过程

半无限 Warburg

W

SemiInfiniteWarburg.png

Ww*(1-j)

在无界介质中的扩散过程,例如在氧化还原流动电池的体相电解质中氧化还原物种的扩散

有限长度 Warburg

FLW

FiniteLengthWarburg.png

Zj*w*t*tanh(j*w*t)

在具有限定长度的介质中发生的扩散过程,例如在薄层电芯中

将您的 EISModel 对象的电路拓扑定义为一个电阻与并联电阻-电容网络串联的结构。

eisfom.CircuitTopology = "R0+(R1,C1)";
disp(eisfom)
  EISModel with properties:

     CircuitTopology: "R0+(R1,C1)"
       NumParameters: 3
       ParameterList: ["R0"    "R1"    "C1"]
     ParameterValues: [0.0250 0.0035 150]
    CircuitImpedance: "(R0 + ((R1 * (1/(i*w*C1))) / (R1 + (1/(i*w*C1)))))"
       ParameterList: ["R0"    "R1"    "C1"]

Show all properties

要仿真频率模型,请定义您希望在哪些频率点上进行模型仿真。

freq = logspace(-2,5,100);

使用simulateFrequencyResponse函数在这些频率下仿真 EIS 电路。该函数同时返回阻抗的实组件和虚组件。

[simRealZ,simImagZ] = eisfom.simulateFrequencyResponse(freq);

使用 plot 函数在奈奎斯特图上绘制频率响应曲线。阻抗描绘出一条半圆弧。

plot(simRealZ,-simImagZ,linewidth=1.5)
axis equal

Figure contains an axes object. The axes object contains an object of type line.

现在仿真瓦堡阻抗的频率响应。将您的 EISModel 对象的 CircuitTopology 属性设置为 "SIW1"。沃堡阻抗常用于建模扩散控制过程。

eisfom.CircuitTopology = "SIW1";
[simRealZ, simImagZ] = eisfom.simulateFrequencyResponse(freq);

绘制频率响应图。该曲线在奈奎斯特图上以 45° 直线显示所得阻抗。

plot(simRealZ,-simImagZ,linewidth=1.5)
axis equal

Figure contains an axes object. The axes object contains an object of type line.

将之前的电路拓扑与电阻器和 RC 电容组件整合。将您的 EISModel 对象的 CircuitTopology 属性设置为 "R0 + (R1,C1) + SIW1",并仿真频率响应。

eisfom.CircuitTopology = "R0 + (R1,C1) + SIW1";
[simRealZ, simImagZ] = eisfom.simulateFrequencyResponse(freq);

在奈奎斯特图上绘制频率响应曲线。奈奎斯特图以半圆形显示了 R-RC 电路在高频下的影响,并以 45° 直线显示了瓦尔堡阻抗在低频下的影响。

plot(simRealZ,-simImagZ,linewidth=1.5)
axis equal

Figure contains an axes object. The axes object contains an object of type line.

估计 FOECM 参数

通过使用经验 EIS 数据,您可以估计 FOECM 的模型参数。

加载 EIS 数据。该数据是在 25°C 温度下对容量为 5 Ah 的电芯测得的。数据包含一个双精度浮点数组成的 100×3 矩阵。矩阵的列分别表示频率、实阻抗和虚阻抗值。

load("battery5Ah25degC.mat","data")

将默认的电子图像稳定 (EIS) 模型拟合到测量数据上。为使数据匹配,请使用fitEISModel函数。fitEISModel 函数返回一个 EISModel 对象。

eisfom = fitEISModel(data);

查看模型电路拓扑及其他属性。

disp(eisfom)
  EISModel with properties:

     CircuitTopology: "R0+L1+(R1,CPE1)+(R2,CPE2)+CPE3"
       NumParameters: 10
       ParameterList: ["R0"    "L1"    "R1"    "CPE1n"    "CPE1Q"    "R2"    "CPE2n"    "CPE2Q"    "CPE3n"    "CPE3Q"]
     ParameterValues: [0.0125 1.6255e-10 0.0086 1.0000 0.9434 0.0348 0.9952 12.6841 0.4613 372.6422]
    CircuitImpedance: "((((R0 + (i*w*L1)) + ((R1 * (1/(((i*w)^CPE1n)*CPE1Q))) / (R1 + (1/(((i*w)^CPE1n)*CPE1Q))))) + ((R2 * (1/(((i*w)^CPE2n)*CPE2Q))) / (R2 + (1/(((i*w)^CPE2n)*CPE2Q))))) + (1/(((i*w)^CPE3n)*CPE3Q)))"
       ParameterList: ["R0"    "L1"    "R1"    "CPE1n"    "CPE1Q"    "R2"    "CPE2n"    "CPE2Q"    "CPE3n"    "CPE3Q"]

Show all properties

使用 plot 函数分析该函数如何在频率模型上执行拟合。该图展示了仿真数据与测量数据的对比,其中 X 轴代表阻抗的实部,Y 轴代表阻抗的虚部。

figure5Ah = uifigure(Name="Fitting Results 5 Ah Cell");
plot(eisfom,Parent=figure5Ah);

Figure Fitting Results 5 Ah Cell contains an object of type simscape.battery.parameters.ui.impedanceverificationchart.

获取电池 EIS 模型的初始估计值

fitEISModel 函数在执行参数拟合或优化时,高度依赖于初始参数的猜测。此外,由于温度、尺寸及其他变量等诸多因素的影响,不同电化学系统的参数值可能存在显著差异。要获取电池电化学阻抗谱 (EIS) 模型的参数初始估计值,请使用estimateBatteryEISParameters函数。此函数接受不同的名称-值参量,包括 BatteryCapacityBatteryTemperatureBatteryRemainingCapacity。此函数仅返回默认 EISModel 对象电路拓扑的参数估计值。

initialParameters = estimateBatteryEISParameters(BatteryCapacity=simscape.Value(30/1000,"Ah"));

根据您估计的初始参数拟合 EIS 模型。

load("battery30mAh25degC.mat","data");
eisfom = fitEISModel(data,InitialParameterEstimate=initialParameters);

使用 plot 函数分析拟合的准确性。

figure30mAh = uifigure(Name="Fitting Results 30 mAh Cell")
figure30mAh = 
  Figure (Fitting Results 30 mAh Cell) with properties:

      Number: []
        Name: 'Fitting Results 30 mAh Cell'
       Color: [0.9608 0.9608 0.9608]
    Position: [348 367 583 437]
       Units: 'pixels'

  Show all properties

plot(eisfom,1,DisplayMode="Nyquist",Parent=figure30mAh);

Figure Fitting Results 30 mAh Cell contains an object of type simscape.battery.parameters.ui.impedanceverificationchart.

另请参阅

| | | |

主题