SOC计算---基于SIMULINK的安时积分法

本文探讨了电池荷电状态(SOC)的定义,强调了估算中的难点如电池开路电压差异、充放电倍率影响、温度效应和容量衰减。介绍了安时积分法作为常用算法的优缺点,并提到了工业上通常采用的安时积分法加校正策略及卡尔曼滤波器的未来趋势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SOC的定义

SOC-电池荷电状态,也叫剩余电量,代表的是电池使用一段时间或长期搁置不用后的剩余可放电电量与其完全充电状态的电量的比值,常用百分数表示。其一般用一个字节也就是两位的十六进制表示(取值范围为0-100),当SOC=0时表示电池放电完全,当SOC=100%时表示电池完全充满。

SOC估算的难点

  1. 电池开路电压(OCV)特性。电池开路电压指的是电池在静置状态下,正负电极之间的电位差。不同的电池其开路电压特性都不一样,甚至同一款电芯与电芯进行串并联构成电池包,二者的开路电压也不相同。
  2. 受充放电倍率影响。电池在充放电情况下,我们测量得到的是电池的端电压。充放电倍率的变化会影响电池内部的电阻,电阻的变化会影响电池端电压的变化,这种情况下会打乱端电压-开路电压-SOC之间的对应关系。
  3. 温度状态。电池充放电的实质是内部的锂离子在正负极上的脱出与嵌入。温度会影响电池内部的化学反应,直接影响电池的容量进而影响SOC的计算。其中特别是低温对电池容量的影响极大,进而对电池的实时SOC估算造成困难(不止是容量,温度对内阻等参数的影响都有很大的影响)。
  4. 电池容量衰减。电池在使用的过程中寿命将逐渐衰减,衰减机理主要在于正负极材料晶体的塌陷和电极的钝化导致了有效锂离子的损失。不仅是随着使用的增加电池的寿命会衰减,对电池的滥用也会造成电池的寿命损伤(过充、过放等),从而对电池的SOC估算造成影响,电池的容量衰减也是SOX算法的难点(事实上,SOX算法哪个不难,纯属个人吐槽)。

安时积分法

工程应用中最普遍的一种计算电池SOC的算法。安时积分法是在初始时刻 SOC0的基础上通过电流估算电池充放的电量来估算电池的 SOC。
在这里插入图片描述

通过计算一定时间内充放电电流和对应时间的积分,从而计算变化电量的百分比,最终求出初始 SOC 和变化的 SOC 之间的差,即剩余电量。安时积分的优点很明显,计算简单,计算量少。缺点也很明显:1.由于电流霍尔精度问题会造成累计误差;2.受初始SOC的影响很大。
利用simulink对安时积分法进行建模,如下图所示。
基于安时积分的simulink模型
然后使用一段对工况对搭建的模型进行验证,使用的是数据为一段电池的充放电工况充放电工况如下图。
在这里插入图片描述
首先将初始SOC设定为0.7,可以看到使用模型的仿真结果与实际工况计算得到的SOC走势一致,但是安时积分法没有误差修正的能力,所以一直保持一定的误差。

在这里插入图片描述
然后将初始值设置为正确值0.836,得到的SOC估算结果与BMS显示SOC结果一致。
在这里插入图片描述
写在最后,工业上一般使用安时积分法加校正策略来进行SOC估算,可以一定程度上减小误差。随着技术的发展,工业逐渐采用卡尔曼滤波器来进行实时SOC估算,后期我会单独整理出来一篇文章。

### 使用Simulink实现安时积分法计算电池荷电状态(SOC) 在工程应用中,最普遍的一种计算电池SOC的算法是安时积分法。该方法是在初始时刻SOC0的基础上通过电流估算电池充放的电量来估算电池的SOC[^1]。 #### 构建基本模型 为了构建一个有效的安时积分法模型,在Simulink环境中需遵循以下设计原则: - **初始化设置**:设定起始时间点的SOC值(通常设为满充电态即`SOC_0=1`),并定义电池的最大容量C_max。 - **输入信号处理**:引入实际测量得到的电池工作过程中的瞬时电流i(t),作为系统的输入变量之一;考虑到噪声等因素的影响,建议加入低通滤波器对原始数据进行预处理以提高精度。 - **核心运算逻辑**: 安时积分的核心公式表达如下: \[ SOC(t)=SOC(0)+\frac{1}{C_{max}}\int^{t}_{0} i(\tau)d\tau \] 在离散形式下可近似表示成累加求和的形式: \[ SOC(k+1)=SOC(k)+\Delta t\times\left[\frac{i(k)}{C_{max}}\right] \] 其中\(k\)代表当前采样周期编号,\(\Delta t\)则指相邻两次采集之间的时间间隔大小。 ```matlab % MATLAB Function Block Code Example function soc_out = fcn(i, dt, C_max) persistent soc; if isempty(soc) soc = 1; % Initial State of Charge (Full Battery) end soc = soc + ((i * dt)/C_max); soc_out = min(max(soc, 0), 1); % Ensure SOC within valid range [0,1] ``` 此段MATLAB函数代码实现了上述描述的功能,并确保了每次更新后的SOC保持在一个合理的范围内(介于完全放空到充满之间)。需要注意的是,这里假设所有单位都已标准化以便直接相除比较。 #### 模型验证与优化 完成初步搭建之后,应当针对特定应用场景下的典型负载曲线测试所建立起来的仿真框架性能表现情况。如果发现预测误差较大,则可能需要考虑引入补偿机制或是采用更加复杂的数学模型来进行改进,比如结合卡尔曼滤波技术进一步提升估计准确性[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值