原文:电池管理系统(BMS)-SOC算法概述 - 知乎
大家好,经过前面几个文章,大家对电池管理系统大概有了一个了解,下面着重介绍以下电池管理系统中核心的SOX算法中的核心SOC的算法,文章介绍以实际商用的BMS中的算法为准,对那些晦涩难懂的学术性算法,比如神经网络,模糊控制,扩展卡尔曼等算法,就不介绍了,哈哈,其实是自己也不懂!
SOC算法的定义
SOC的定义为State of Charge ,简称SOC, 顾名思义就是指电池中剩余电荷的可用状态,可以用下面这个比例式进行描述:
SOC=( 剩余电量/额定电量)*100%
这个是地球人都知道的公式,但是这个公式在不同公司的控制策略中的定义是完全不一样,下面咱们就来讲一下这个不同,以便大家在设计时候,有个思路。
额定电量
大家如何理解,可能大家会说是标称容量,就是电池的xxAH, 但是这个多少AH是从哪里来的呢?根据我目前经验,在德系相关的企业中,他的定义是 25.C时候以0.1C所能释放的电量,而在很多美系的企业中,大多是在当前温度下,以0.1C所能释放的能量!
问题1:
那么问题来了,为何有这个差别呢?这个就跟电芯的电化学反应有关系,不同温度,不同倍率下,电芯释放出的Li+离子的数量是不一样的,但是不代表,电芯释放的能力的不一样,电芯释放出Li+的能力,在任何温度下,以最小倍率放电,肯定是一致的,这个是电芯的化学特性决定。
问题2:
那么大家问题又来了,如果一个德系车在-20度的温度下,SOC显示20%,但是可能实际情况下是没有电可以释放出来,那不就乱套了,答案是不会的因为目前电动车都有热管理系统,大多情况下会把电芯的温度控制在20C左右,同时,显示的SOC是通过比例换算,可能是实际的10%--90%,所以SOC显示多少,一般情况下都会比实际的小。
如果是按照温度的修正进行标称容量的计算,会出现哪些情况呢? 比如,在寒冷的地方,刚开始续航里程很短,但是开了一会,续航里程增加了,或者跳变的慢了! 这个其实都是正常现象!
这两种方法,没有好坏之分,针对不同的客户体验,都可以进行修正即可!
额定电量还跟SOH有一定关系,因为随这电池的老化,额定容量会发生变化,从电化学的机理上就是随着充放电次数增加,SEI膜逐渐增厚,消耗Li+,也就造成电芯所能放出的电量降低!额定电量就会降低。
综上所述,在计算SOC中Qmax时候,根据实际的情况与需要进行策略的制定。
而对于剩余的电量,就是用Qmax-安时积分的实际电量,得到剩余的电量,通过一个比例,就可以得到SOC值。
SOC的算法
对于SOC的计算,在实际的嵌入式代码中,大多都是安时积分+OCV的矫正,若不满足OCV条件,会添加一个修正系数,对安时积分进行修正,从而达到更加精准的SOC, SOC的实际算法中,核心的不是安时积分,而是在各个工况下的SOC矫正方法,矫正方法覆盖的工况越多,SOC的精度就越高。这个可能跟大家书本上的不一致,书本上大多讲的是安时积分,很少讲修正,下面我将三个比较简单的修正方法,供大家参考。
误差机理:
在这之前,先讲一下SOC产生误差的两个机理,累积误差与随机误差,累积误差多数是因为安时积分不准确,长时间不进行修正导致,技术协议与标准中规定的误差都是累积误差(目前大多是5%),随机误差是由于器件的不稳定,初始值的错误等造成,当出现这些时候,会进行SOC修正计算,用于快速将SOC设置成稳定状态。
充电修正:
无论是慢充 还是快充,当充电截至时候,即电芯的电压到达截至电压时候,SOC由于累积误差可能当时不是SOC,此刻就需要将其修正成100%
静态修正:
当电池处于静态的时候,此刻的OCV查表出来的值相当准确,但是不能刚开始启动车辆,瞬间从一个值变道另外一个值,所以需要一个修正系数K,在启动的后的一段时间,对其进行安时积分的修正。
动态修正:
当电池处于动态放电的情况下,若放电的电流大于10A,而且在一段时间内持续稳定,此时可以通过查表计算除当前实际SOC, 与实际的SOC, 通过对比偏差情况,然后查表计算修正系数K,对安时积分及逆行修正。
修正计算公式:
SOC(%) = (安时积分消耗的SOC*K)/SOC_max
- 正常情况 K=1
- 偏大修正 K>1
- 偏小修正 K<1
可参考的修正逻辑,具体就不介绍原因了,防止泄密,哈哈!
静态修正逻辑:
动态修正逻辑:
小结
根据以上的介绍,大致介绍了实际BMS软件设计的过程中,SOC的计算方法,其实目前也有用扩展卡尔曼的,但是概率很小,仅仅在电流传感器失效的时候,卡尔曼的算法才能起到用场,至于为啥,大家就自行脑补了,如果展开,会是比较多的内容,下次有机会再讲吧!