尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

EIS+DRT+聚类算法:提升电池组不一致性诊断精度

EIS+DRT+聚类算法:提升电池组不一致性诊断精度 简介针对电池组内单体电池温度、荷电状态与老化状态不一致问题提出一种基于电化学阻抗谱EIS和弛豫时间分布DRT的诊断方法。方法利用等效电路模型厘清温度、荷电状态、老化状态对EIS和DRT的影响规律并将特征提取与无监督聚类结合系统比较K-means、AP和DBSCAN三种算法。结果表明DBSCAN诊断准确率达99.2%更适用于异常电池的快速定位验证了该方法的有效性。文档出自2024年《汽车工程》期刊属于完整期刊论文共1个PDF文件大小约1.44MB包含中英文摘要、研究背景、方法推导、实验对比与结论结构完整。已有108人学习适合新能源汽车电池管理系统、储能运维及算法应用方向的工程师与研究人员阅读可借鉴其EIS特征提取和无监督聚类思路辅助实际电池组不一致性诊断。1. 电池组的不一致性诊断靠电压曲线远远不够电池组里真正拖后腿的往往不是整包状态而是某一颗单体。温度、SOC、老化程度和接触电阻的差异会让电池的电极过程发生变化这些变化在老化的电压曲线上并不明显却在电化学阻抗谱EIS里留下了清晰签名。基于 EIS 和弛豫时间分布DRT做电池组不一致性诊断可以说是一条兼顾准确度和工程可行性的路线。这里的关键不是采集阻抗谱本身而是把 EIS 和 DRT 中不同频段的特征点正确提取出来再借助无监督聚类算法把异常电池从一致性良好的电池组里分离出来。本文会沿着阻抗分离、特征构造、聚类对比这条主线把参数怎么设、特征怎么选、哪些坑不能踩逐层拆开。2. EIS 和 DRT 的阻抗分离等效电路模型与电极过程的时间常数2.1 EIS 各频段对应的物理过程锂离子电池的 EIS 曲线可以按频率分成四个区域每个区域对应不同的电极过程特征。超高频率段的曲线与实轴的交点反映的是欧姆电阻 R0包括电解质和隔膜的离子传导阻抗高频段的半圆对应 SEI 膜的等效电阻 RSEI中频段的半圆对应传荷电阻 Rct也就是电极反应极化电阻低频段接近直线的线段则与扩散电阻 Rd 相关。这四个区域的阻抗成分对不一致性的敏感度并不相同。温度变化主要影响 RSEI、Rct 和 RdSOC 主要影响 Rct 和 Rd老化除了影响这些还会改变 R0接触异常则几乎只体现在 R0 上。频段特征主导阻抗物理含义超高与实轴交点R0电解质与隔膜欧姆电阻高频半圆RSEISEI 膜等效电阻中频半圆Rct传荷电阻/电极反应极化电阻低频近似直线Rd扩散电阻/浓差极化电阻需要注意的是电池内部的电化学过程是耦合的不存在某个阻抗单独变化而 EIS 其他部分完全不变的情况。因此直接拿原始 EIS 曲线做聚类很容易失败必须先做阻抗分离。常见做法是引入等效电路模型ECM把 R0、RSEI、Rct、Rd 分别放大不同比例观察 EIS 和 DRT 的变化规律再据此确定特征。ECM 的拟合决定系数 R² 达到 0.999 时才有足够的可信度去做这种规律分析。2.2 ECM 的阻抗解析式与参数约定ECM 对应的阻抗解析式将感抗段、欧姆电阻、两个恒相位元件和韦伯扩散元件放在一起。实际拟合时一般用 ZView 这类工具完成获得 R、L、P1、Q1、P2、Q2、Pw、Tw 等参数。P 值反映恒相位元件的非理想程度P1 时 CPE 退化为理想电容Tw 与有效扩散系数相关。做阻抗分离实验时只调整某个特定元件参数比如把 Rct 增大 25%其他参数保持不变然后分别绘制 EIS 和 DRT 的响应曲线。Z jωRL/(R jωL) R0 RSEI / (1 (jω)^p1 * RSEI * Q1) Rct / (1 (jω)^p2 * Rct * Q2) Rd * tanh((jω*Tw)^Pw) / (jω*Tw)^Pw这里每个阻抗项的物理意义前面已经说过需要说明的是公式中 jω 的指数由 CPE 的 P 值决定P 偏离 1 意味着实际电极表面的非理想电容行为。在诊断场景中拟合参数本身不是重点重点是后续特征提取时用的阻抗变化规律。2.3 DRT 解决 RSEI 与 Rct 重叠的问题当 RSEI 增大时EIS 高频半圆半径增大半圆右端点右移左端点几乎不动Rct 增大时表现类似。单看 EIS 无法区分这两种变化因为它们在频谱上重叠。DRT 的作用就是把重叠的时间常数拆开。用 Python 中的 DRTtools 工具对 EIS 做弛豫时间分布变换RSEI 增大时第一波峰明显上升Rct 增大时第二波峰上升两个特征可以明确分开。这里要注意 DRT 的正则化参数 λ 会影响峰的形态——λ 偏大时第二峰的上升分量可能被合并到第一峰上本质上仍然是第二峰峰值增加但读取峰值时要意识到这种合并效应。DRT 的求解参数设置对结果影响很大。一般选用高斯离散化将实部与虚部数据结合使用不考虑电感影响采用二阶导数正则化正则化参数 λ 在 1×10⁻³ 量级半高宽FWHM系数设为 0.5。这个设置对三元圆柱电池比较合适换材料体系后需要重新校验。2.4 各阻抗变化在 DRT 上的响应特征R0 增大不会引起 DRT 波峰的明显变化因此判断 R0 只能依靠 EIS 与实轴的交点。RSEI 增大对应第一波峰上升Rct 增大对应第二波峰上升Rd 增大时第三、第四波峰都会上升但第四波峰在不同批次数据中呈现明显的振荡性这是低频测量误差带来的影响。特征选取时要避开第四波峰否则会把噪声当作异常信号。3. 特征提取实现x0、x1 几何变换与 DRT 峰值的代码落地3.1 直接对原始 EIS 聚类为什么不靠谱EIS 数据是复平面上的曲线每个频率点有实部和虚部两个坐标不同频率点的量纲相同但数量级跨度很大。若把整条阻抗谱的所有点都作为特征高维数据里包含大量冗余信息且 RSEI 和 Rct 的变化在半圆上高度相似原始数据层面难以分离。K-means 或 DBSCAN 直接处理这样的高维点集会陷入维度灾难聚类结果不稳定。论文中提出的做法是把 EIS 按几何特征压缩成几个关键点再辅以 DRT 的峰值特征总共构成五维特征输入。3.2 中心 EIS 曲线与 x0、x1 定位由于不同材料体系的电池 EIS 形态不同x0与实轴交点和 x1中高频处最低点对应的频率也不同不能全局固定。做法是先把一组待测 EIS 按频率逐点聚类在每个频率下把数据点分为正常簇和异常簇取正常簇中与其他点距离最小的点作为该频率下的中心点将各频率的中心点连成一条中心 EIS 曲线并做降噪处理。这条中心曲线代表整个电池组的整体一致性状态再在中心曲线上定位 x0 和 x1 的频率。x0 对应 EIS 与实轴的交点随 R0 增大而右移且与其他阻抗变化无关x1 是中高频半圆与低频线段的分界点。以 x1 为基准把待测 EIS 聚拢左侧频点与 x1 的距离反映 RSEI 和 Rct 的综合变化右侧频点与 x1 的距离反映 Rd 的变化。这样一组几何变换就把多类阻抗异常分离到不同的特征区间。3.3 DRT 特征提取的实现脚本import numpy as np import pandas as pd from scipy.signal import find_peaks import drttools # DRTtools 的 Python 接口 def extract_drt_features(impedance_data, freq_data, tau_range(1e-4, 1e2)): 从 EIS 数据计算 DRT 并提取前三个波峰峰值 Parameters ---------- impedance_data : complex array 实测 EIS 复数阻抗 freq_data : float array 对应的频率点单位 Hz tau_range : tuple 弛豫时间考察范围默认 1e-4 ~ 1e2 s Returns ------- drt_peaks : list 按时间常数排序的 DRT 波峰峰值 # 使用 DRTtools 求解 DRT参数沿论文表 2 设置 drt_result drttools.fit( freq_data, impedance_data, methodgaussian, # 高斯离散化 rbf_typegaussian, derivative2, # 二阶正则化导数 lambda_reg1.5e-3, # 正则化参数 fwhm_coeff0.5 # FWHM 系数 ) tau drt_result[tau] gamma drt_result[gamma] # 只保留考察区间内的峰 mask (tau tau_range[0]) (tau tau_range[1]) tau_masked tau[mask] gamma_masked gamma[mask] # 找所有局部极大值并取前三个主峰时间常数从小到大 peaks_idx, properties find_peaks(gamma_masked, prominence0.05 * gamma_masked.max()) if len(peaks_idx) 0: return [0.0, 0.0, 0.0] sorted_idx peaks_idx[np.argsort(tau_masked[peaks_idx])] top_peaks sorted(gamma_masked[sorted_idx])[::-1][:3] # 论文中 RSEI、Rct、Rd 依次对应 DRT 的第一、第二、第三主峰 return list(top_peaks)这段代码的作用是把 EIS 原始数据转换为 DRT 前三个主峰的峰值。DRTtools 的求解参数中derivative2控制正则化阶数lambda_reg是全局正则化强度取值过大会让峰形过平滑过小则会出现伪峰fwhm_coeff影响峰的展宽程度。find_peaks中的prominence参数用于过滤小幅毛刺避免把数值振荡当作真实峰。需要说明的是实际项目中 DRTtools 的安装和输入格式偶尔会有兼容问题通常做法是先输出tau和gamma两个数组做一次人工检查确认峰的个数和位置合理后再进入特征提取流程。3.4 五维特征的完整构成特征输入来源对应异常阻抗x0 为中点的 5 个频率点EISR0x1 右侧频率区EISRdDRT 第一峰值DRTRSEIDRT 第二峰值DRTRctDRT 第三峰值DRTRdx0 为中点的五个频率点用来捕捉 R0 的变化因为 R0 增大时整条曲线右移只有这些点的横向位移最敏感x1 右侧频率区用来捕捉 Rd 的变化因为扩散阻抗在低频段呈直线增长。DRT 的三个峰分别对应三种不同的电极过程。Rd 同时出现在 EIS 和 DRT 两个特征通道这是有意为之——低频直线易受测量误差影响双通道交叉验证可以减少偶然误差。4. 三种聚类算法实测对比K-means、AP 与 DBSCAN 的诊断边界4.1 实验数据与异常场景构造实验采用三星 INR 18650-29E 三元圆柱电池容量 2.772 A·h在 0.01 Hz 到 10 kHz 频率范围内扫描得到 129 个不同状态下的 EIS 样本。正常组 A-J 每组取 12 个 SOC 从 5% 到 50% 的电池样本异常组 K-O 分别对应低 SOC、高 SOC、高温、接触异常和循环老化。这样设计的用意是让异常来源覆盖 Rct、Rd、RSEI、R0 四类阻抗变化检验算法在不同异常成因下的泛化能力。4.2 三种算法的适用性分析K-means 以欧氏距离为判据通过迭代更新簇中心最小化误差。它的问题在于必须预先指定簇数量n_clusters。当异常电池不只一个时如果异常点分布比较分散K-means 可能把一致性好的正常簇劈成两个簇或把异常点吸进正常簇。AP 聚类不预设簇个数通过数据点之间传递责任度自动决定簇中心对几何形状不规则的簇有一定优势。它的问题在极小数据集上尤其明显12 条 EIS 组成的样本集里每个点权重都很大某个点轻微偏移就可能改变信息传播路径结果振荡明显。DBSCAN 基于密度连通性不需要预设簇个数只需要设eps和min_samples。它天然适合异常检测——无法归入任何密度簇的点被标记为噪声正好对应不一致性诊断要找的异常电池。但 DBSCAN 对eps敏感需要根据各特征维度的量纲分别设定。4.3 超参数设置与调参思路特征维度聚类算法超参数EIS x0 特征R0K-meansn_clusters2n_initautoEIS x1 右侧RdK-meansn_clusters2n_initautoDRT 峰值特征K-meansn_clusters2n_initautoEIS x0 特征R0APdamping0.96EIS x1 右侧RdAPdamping0.9DRT 峰值特征APdamping0.985EIS x0 特征R0DBSCANeps0.001min_samples5EIS x1 右侧RdDBSCANeps0.0004min_samples5DRT 峰值特征DBSCANeps0.0003RSEI、0.0005Rct、Rdmin_samples5eps的取值要参考各特征维度的实际分布EIS 的实轴交点特征数值在 0.01 Ω 量级而 DRT 峰值的 γ(τ) 数值可能小一个数量级统一用一个eps必然导致某一维度过密或过疏。调参时的常见做法是先画出 K-距离图找到拐点再结合物理常识微调。min_samples取 5 的含义是至少需要 5 个点构成一个密度可达的簇这也符合实验设计中正常电池 10 个、异常电池 2 个的比例关系。4.4 混淆矩阵与准确率对比循环实验 200 次每次从实际数据集中抽取 10 个正常电池和 2 个异常电池构成 12 条 EIS 的样本集诊断输出分为 R0 异常、RSEI 异常、Rct 异常、Rd 异常和无异常五类。200 次循环总计 9600 个数据点三条算法的准确率分别是AP 为 39.1%K-means 为 79.8%DBSCAN 为 99.2%。K-means 在部分场景下能获得与 DBSCAN 相同的结果因为两者都基于欧氏距离但一旦异常点与正常点距离不够远K-means 的簇数预设会引出误判。AP 的问题则是小样本下对数据分布过于敏感。4.5 DBSCAN 胜出的技术原因DBSCAN 的优势建立在绝对距离判断上不会因为数据点之间信息传播而产生振荡。它唯一需要保证的是各特征维度下的密度均匀性这恰好可以通过按维度分别设置eps来解决。实际工程中还有一个隐性好处当电池组里存在两个不同成因的异常电池时K-means 只能把数据分成两个簇可能把 R0 异常和 Rct 异常归到一起DBSCAN 则可以把不同位置的多组离群点分别标记为独立的噪声点配合五维特征实现对多异常源的同时诊断。5. EIS 频率点定位与 DBSCAN 调参的工程技巧实际部署这套诊断方法时最耗时间的环节不是聚类本身而是 x0 和 x1 的自动定位。手动观察单条 EIS 曲线可以准确找到这两个点但批量处理时需用插值找交点。以下是用 Python 定位 x0 和 x1 的参考实现import numpy as np def locate_x0_x1(freq, Z_real, Z_imag): 定位 EIS 与实轴交点和中高频最低点 参数 ---- freq : 频率数组 Z_real / Z_imag : 阻抗实部包含感抗 / 虚部 返回 ----- (freq_x0, freq_x1) : 两个关键频率点的索引 # 找虚部过零点从高频向低频扫描虚部由正变负的过程 sign np.sign(Z_imag) zero_cross np.where(np.diff(sign) ! 0)[0] x0_idx zero_cross[0] if len(zero_cross) 0 else 0 # x1半圆与低频直线衔接处虚部绝对值最大点 # 限定在高频段和中频段范围内扫描 search_zone np.where(freq 1.0)[0] x1_idx search_zone[np.argmin(Z_imag[search_zone])] return x0_idx, x1_idx # 每条 EIS 读入后先做平滑再定位 x0_idx, x1_idx locate_x0_x1(freq, Z_real, Z_imag) # 以 x0 为中点取 5 个频率点 x0_freqs freq[max(0, x0_idx-2): x0_idx3] # 以 x1 右侧全部频点作为 Rd 特征区 rd_freqs freq[x1_idx1:]这段代码把 x0 的定位转化为寻找虚部过零点把 x1 的定位转化为搜索虚部最小值点。需要注意如果电池组里混入了接触异常电池它的高频感抗段可能发生明显偏移虚部过零点位置会变化建议在定位前先用中心 EIS 曲线的对应数据做一次校验。DBSCAN 调参时建议先固定 min_samples5然后在 R0 特征上从 eps0.001 开始逐步增大观察噪声点数量是否出现台阶式跳变再把同样的策略应用到 DRT 峰值特征上。最后用混淆矩阵做闭环验证时重点看非对角线元素的分布如果 RSEI 和 Rct 互相误判说明正则化参数 λ 需要回调如果 Rd 诊断不稳定优先检查第四波峰是否被意外选中以及低频段的 EIS 数据是否经过了足够平滑。本文还有配套的精品资源点击获取
返回列表