ThinkNotes

Simple is not easy | 化繁为简,知易行难

0%

电量计 -- 77561电池建模和调参

电量计 – 77561电池建模和调参

合并电池建模数据到PRJ

77561的可配参数包括建模表都是cobra直接配置到flash,因此直接在现有prj上编辑参数:

(1)导入TableMaker输出的OCV_falcon.txt(X轴是电压的版本)和RC.txt表

image-20250331173554812

(2)导入电池规格参数

电量计采样是双节电芯才按双节电压处理;如果是电量计两个通道分别采样单节电芯要按单节电芯算,电池包的电压参数要除2。

多串电芯的示例(双节采样):

image-20250331193151566

多并电芯的示例:

image-20251023102148780

注意保护电压也要调整,Cell OV threshold >= 充电限制电压,如果设置低了ADC就不采集,SBS通信就读不出电压为0

image-20251023115325601

FW环境数据更新

(1) 初始化DFCC表

放电精度调参主要是调DFCC,其定义取决于客户需求要关注哪几个电流和温度,如下图是初始值,默认权重都是100%即保持当前soc不缩小或放大。

注意:DFCC_Y和DFCC_Z的值也要跟随调整,DFCC_X一般不动。

image-20251023103321369

sysim系统阻抗是电量计芯片和电芯之间的线阻,影响放大误差,如果默认值1毫欧和实际硬件有很大不匹配可能导致很大的放电误差。

需要测量电池包内,电芯到电量计芯片的阻抗,注意不是电池包到外部充放电线的阻抗,再配置代码参数sysim(单位0.1毫欧)

例如 cfg.sysim = 2*10; 表示系统阻抗2毫欧。

(2)更新RC建模表的XY个数

注意Firmware的RC table XY值也要调整为和建模表一致!仿真环境也必须一致,否则仿真曲线和实测曲线不重合!

image-20251103110429290

仿真环境数据更新

(1)更新建模表和参数

batsim代码里新增一个DATA_TYPE宏区分不同项目配置,根据OCV_falcon.txt和RC.txt表合并OCV,RC table和parameter,需要修改SOCLib的table.c/table.h/parameter.c

使用python脚本完成以上OCV和RC表数据替换,详见python tool注释;

image-20250331203309863

image-20250331203328434

image-20250331203805982

image-20250403142611409

注意DFCC需要手动配置。从Firmware代码拷DFCC table和Y,Z个数到仿真代码。必须一致否则调参对不上而且问题隐蔽!

还有一些参数在仿真代码main.c直接定义的,如sysim,eod_ddv。

(2)FW 的lib_fg.c需要同步到仿真的SOCLib77561\lib,仿真使用的到底是那个lib_fg .c和.h可以在vs环境查看,将FW的lib/lib_fg.c和lib_fg.h复制到仿真工程的SOCLib77561\lib,在vs工程中移除之前的libfg.c和.h,再添加existing file libfg.c和.h。

移植FW lib到仿真工程可能有的问题:dbg_print编译报错,注释掉所有dbg_print。最后winmerge比较确认和FW一致性。参数定义不一致问题,以当前FW定义为准。

以上全部配置好后,编译SOCLib和Simer GUI

仿真软件调参DFCC

实测不同温度电流下的cobra放电数据(cycler-cobra .csv)

Bat simmer软件

先编译Lib和GUI,运行bat simmer,加载cobra采集数据csv。csv可能包含充电和放电过充,可手动设置Display只显示放电区域的x轴范围

image-20250402173244348

image-20250401105054688

已更新Bat simmer版本功能,GUI X轴自动显示放电过程

DFCC调参

调参是根据cyc-sim蓝绿曲线的最大值,找对应的SOC,再结合电流和温度,查表对应的DFCC值。

(1)DFCC调参基本思路:

cycle曲线是以cobra csv的电荷积分信息算出的真实电量信息,作为目标值;

simer曲线是以SOCLib中算法输出的rsoc电量信息,作为待调试值;

调参目标:放电阶段,simer曲线逼近cycle曲线,对应的cyc-sim误差全局小于3%。

cycle-cobra的误差反映的是调参以前的实测误差,在调参过程中用不到这个误差。调参以后可以再cobra实测确认误差应该和cyc-sim一致。

image-20250402172723008

(2)调参过程:

如果simmer > cycle,调低对应的DFCC区间值;反之则调高DFCC区间值。

以调整RSOC 10位置的误差为例:

由于DFCC表的电流是离散的几个值,可能当前测试的电流(1A)不在DFCC电流表中(0.6A, 1.5A),算法查DFCC表会依赖于临近电流插值,因此估计(0.6A, 1.5A)两个电流点的DFCC值会共同决定1A的DFCC值,可以同时把(0.6A, 1.5A)两个点调大,也可以只调1.5A, 0.6A不变,以调整结果为准。

image-20250402171530799

在调参后需要编译SOCLib更新DLL,Bat Sim界面程序不需要更新,可以直接VS F5运行查看效果(sln项目配置需要设置F5运行默认从Bat sim启动)。

image-20250402173650853

(3)DFCC表是有调整规律的:

低温的容量会调低,大电流的容量会调高,高温的容量会调高。

同一 Y, Z轴下的一行DFCC值不会反复跳变,一般是从40%递增到100%甚至超过100。

某个soc点位怎么调都缩写不了误差如何处理:

  1. 考虑调它前面的点位(曲线左侧soc更高的点位),因为前面的soc会累积影响到当前soc,当前误差最大可能是前面soc影响。

  2. 曲线要看转折点而不仅仅是最大误差点,看左侧趋势在哪个点位发生斜率改变,这个转折点就是要调的soc,而不是后面误差累计达到最大的点

(4)注意:Bat simer全局最大误差idx log是不准确的,调参应该以曲线鼠标显示的soc值为准

如下图说RSOC 30是误差最大点,实际误差很小;RSOC 8是误差最大点,要调的是这个点)

image-20250402170734028

(5)调参也应该参考cobra曲线和sim曲线,某处soc对应误差大,不一定是修改DFCC这个soc的值,而是修改这个soc前面或者后面的值,要根据sim曲线趋势判断误差发生在前面还是后面的soc。

如下图左侧是cobra原始DFCC,右侧是调参后的DFCC。

正常的调参,DFCC值应该是连续变化,如果有误差在当前soc改不动,例如当前soc偏低,但怎么调高也纠正不了,考虑原因是前面放电更高soc点位的DFCC值偏低。

调参切忌盯着一个soc点位调,错误把DFCC值改成跳变。

image-20250408163614933

(5)权重互补

因为DFCC表只是几个采样,实际电流情况会有插值。DFCC调参需要考虑权重互补,考虑相邻DFCC行的权重。

image-20250418103046531

(6) 使用cobra数据精确调参

遇到常温误差比较大的情况时,首先排查两个问题:1.看EOD电压附近+-50mV以内是否电量达到0,这是EOD参数基础功能要求。2.如果发现电池开始放电压降大,怀疑sysim问题,仿真代码可以修改sysim看看效果。

然后才是调DFCC:查看GGMEM0的fcc和facc比例,可以直接得出dfcc该如何调整。

image-20251028150421032

Bug fix记录

CADC补偿问题影响低温精度

77561有CADC TRIM功能,是利用ATE对不同批次芯片测试中发现某些批次电流误差较大时(良率问题),ATE将25度和60度下CADC电流误差纠正值写入flash,FW根据flash值按一定斜率推算低温-20度的电流补偿值。25度和60度的补偿是数字逻辑纠偏不需要FW参与。

如果CADC TRIM功能失效,会导致-20C精度测试的误差很大(达到20%),这时不管怎么调DFCC都很难纠正。因此低温下SOC精度问题尤其要注意CADC补偿是否正常。

CADC TRIM功能和DFCC调参的相关性:

image-20250411141816196

image-20250411141914294

低温大电流放电,cycle曲线异常

低温-20度用大电流0.5C 2.5A放电,工具读csv显示的cycle曲线异常,下降极快

image-20250416160203454

而同样环境,低温-20度小电流0.2C 1A放电,或者是低温-10度大电流0.5C 2.5A放电,cycle曲线都是正常。

问题原因:低温+大电流两个条件叠加,导致放电开始时初始电压就降到3.4V,而截止电压是3.3V。但工具解析cycle csv数据对放电终点有误判认为3.4V就是终点导致cycle曲线错误解析。

-20度 2.5A的放电数据cycle csv:

image-20250416161004330

解决办法:用rsoc = 0作为放电终点,只对小电流放电补充判断截止电压,避免大电流放电误判

image-20250416161023471

修复之后效果:

image-20250416161237987

电池一致性问题

一般电池建模和放电cobra测试使用同型号的电芯,但有时电芯一致性区别大,使用#1号电芯建模,使用#2电芯放电测试,怎么调参都达不到仿真效果,可能是一致性问题,即两个同型号电芯的实际容量和内阻等特性有大的差异,导致建模不匹配。

对这种问题,首先确认三个数据是否一致,排除软件引起:建模RCtable,Cobra测试FW的算法和RCtable,仿真环境FW的算法和RCtable,应该完全一致。

image-20250514193017205

问题特性是:

  1. 仿真可以调得很好,但cobra测试误差很大(相同的FW和建模数据,cobra测试曲线和仿真曲线不能保持一致),如下图

  2. 查看cobra csv log无异常,温度(内部外部温度区别不大),电流值(originCurrent和CADC校准后的Bat current),电量(放电的 电流*时间 积分 = ccmAh电量)等关键数据都没问题。

image-20250514193136189

使用当前电芯做一次建模,和已有的RCtable的建模结果比较,如果soc误差大即确认建模不匹配,如下图:

微信图片_20250514194341

然后用已有RCtable的那块建模电芯再复测,如果仿真曲线和cobra曲线能匹配,就确认了是一致性问题。