2. 电池管理系统(BMS)基础:BMS功能架构、电池特性与建模、SOC/SOH估算方法

2.1 BMS的功能架构——它到底在管什么?

做储能系统这么多年,我经常被问到:“BMS不就是个电池保护板吗?”
说实话,我第一次接触储能项目时也这么想。直到有一次,一个20尺集装箱的电池簇因为BMS通信延迟,导致过充保护没及时触发……嗯,从那以后我再也不敢小看BMS了。

BMS的核心任务,我总结为四个字:测、控、均、通

  • :采集电压、电流、温度。别小看这个,一个电池簇几百个电芯,采样精度差0.5%,SOC估算能偏10%。
  • :控制继电器、接触器、风扇。说白了就是“该断就断,该吹就吹”。
  • :均衡管理。被动均衡靠电阻放热,主动均衡靠电容或电感搬移能量。我个人习惯,大容量储能系统优先用主动均衡,效率高。
  • :与PCS、EMS通信。协议五花八门,Modbus、CAN、IEC 61850都有。

典型BMS架构层级:

  • 从控(BMU):采集单体电压、温度,做被动均衡。一个BMU管12~24串电芯。
  • 主控(BCU):汇总从控数据,计算SOC/SOH,控制总压、总流,与PCS通信。
  • 总控(BAMS):多簇并联时用,协调各簇BCU,做簇间均衡。

你想想看,一个100MW的储能站,可能有几十万个电芯。BMS要是不可靠,后果不堪设想。

BMS功能架构图 BAMS(总控) BCU(主控) BCU(主控) BCU(主控) BMU BMU BMU BMU BMU CAN/RS485 CAN/RS485

2.2 电池特性——你得懂它的脾气

锂电池不是理想电压源。它的特性,说白了就是“三随”:随温度变、随电流变、随寿命变

2.2.1 开路电压与SOC的关系

OCV-SOC曲线是BMS的“圣经”。磷酸铁锂的曲线中间段很平,SOC从30%到70%,电压变化不到0.1V。这就导致一个问题——电压法估算SOC根本不准

我记得有个项目,现场运维说“电池电压还有3.3V,怎么突然就保护了?”我一看数据,SOC已经掉到5%了,但电压还在3.28V。这就是铁锂的“假电压”陷阱。

2.2.2 内阻特性

电池内阻分欧姆内阻和极化内阻。欧姆内阻跟温度强相关,-20℃时内阻可能是25℃时的3~5倍。极化内阻跟电流大小和持续时间有关。

我的经验:做HPPC测试时,一定要记录静置时间。静置1小时和静置2小时,测出来的极化内阻能差15%。我一般静置2小时以上,数据才稳定。

2.2.3 循环老化

电池容量衰减不是线性的。前期慢,中期快,后期又慢。SOH从100%掉到80%,可能只需要1000次循环;但从80%掉到70%,可能只需要300次。

注意:不要用线性模型预测电池寿命。我在一个项目中用线性拟合预测剩余寿命,结果提前了半年就报废了。后来改用双指数模型才准。

2.3 电池建模——给电池画个像

BMS要实时计算,模型不能太复杂。常用的模型就几种:

2.3.1 等效电路模型(ECM)

最常用的是二阶RC模型。一阶RC精度不够,三阶RC计算量太大。二阶RC是工程上的“黄金平衡点”。

// 二阶RC模型离散化方程(C语言伪代码)
// V_oc = f(SOC) 查表得到
// V_t = V_oc - I*R0 - V1 - V2

// 状态更新
V1_k = V1_k1 * exp(-dt/tau1) + I_k1 * R1 * (1 - exp(-dt/tau1));
V2_k = V2_k1 * exp(-dt/tau2) + I_k1 * R2 * (1 - exp(-dt/tau2));

// 端电压预测
V_t_pred = V_oc(SOC_k1) - I_k * R0 - V1_k - V2_k;

参数辨识我建议用带遗忘因子的递推最小二乘法(FFRLS)。固定遗忘因子0.98,效果不错。

2.3.2 电化学模型

像P2D模型,精度高但计算量太大,BMC跑不动。一般用于离线仿真。我见过有人把简化后的单粒子模型(SPM)跑在BMS上,但需要很强的算力支持。

2.4 SOC估算方法——BMS的核心技术

SOC估算,说白了就是“猜”电池里还剩多少电。但怎么猜得准,是个大学问。

2.4.1 安时积分法

最基础的方法。积分电流,累加容量。

SOC(t) = SOC(0) - (∫I dt) / C_n * 100%

问题在于:初始SOC不准,电流传感器有零漂,积分误差会累积。我曾经用霍尔传感器,零漂0.5A,积分1小时后,SOC误差能到2%。

2.4.2 开路电压法

静置足够长时间后,查OCV-SOC表。精度高,但需要静置。储能系统一般在启机前用一次,运行中很少用。

2.4.3 卡尔曼滤波法(EKF/UKF)

这是目前工程上最主流的方法。把安时积分和电压修正结合起来。

// 扩展卡尔曼滤波(EKF)核心步骤
// 1. 状态预测(安时积分)
SOC_pred = SOC_est + (-I * dt / C_n);

// 2. 误差协方差预测
P_pred = P_est + Q;

// 3. 卡尔曼增益计算
K = P_pred * H / (H * P_pred * H + R);

// 4. 状态更新(用电压测量值修正)
SOC_est = SOC_pred + K * (V_meas - V_pred);

// 5. 误差协方差更新
P_est = (1 - K * H) * P_pred;

工程建议:

  • Q(过程噪声)设大一点,应对电流突变;R(测量噪声)根据电压采样精度设定。
  • 我习惯在电流为0时,把卡尔曼增益调大,让电压修正起主导作用。
  • 铁锂电池建议用UKF(无迹卡尔曼滤波),因为OCV-SOC曲线非线性强,EKF容易发散。

2.4.4 机器学习方法

像LSTM、GRU这些,精度确实高,但部署到BMS上算力是个问题。目前更多用在云端做离线分析。

2.5 SOH估算方法——电池的健康体检

SOH估算比SOC更难。因为SOH的变化太慢了,而且影响因素多。

2.5.1 容量法

最直接的方法。满充到满放,计算实际容量。

SOH = C_actual / C_rated * 100%

但储能系统很少有机会做完整的充放电循环。我一般利用夜间低谷时段做一次“准满放”,结合安时积分估算。

2.5.2 内阻法

电池老化后内阻会增大。通过交流注入法(EIS)或直流脉冲法测内阻。

直流脉冲法简单:给一个固定电流脉冲,测量电压跳变,ΔV/ΔI就是欧姆内阻。

避坑指南:我曾经用直流脉冲法测内阻,结果发现不同SOC下内阻差异很大。后来我统一在SOC 50%时测,数据才有一致性。

2.5.3 增量容量分析(ICA)

这是比较高级的方法。通过分析dQ/dV曲线,可以看到电池内部正负极材料的衰退情况。ICA曲线的峰值位置和高度变化,能反映活性物质损失和锂库存损失。

估算方法精度实时性工程难度适用场景
安时积分法低(误差累积)辅助参考
开路电压法高(需静置)启机校准
卡尔曼滤波(EKF)中高(3%~5%)三元锂电
卡尔曼滤波(UKF)高(2%~3%)中高磷酸铁锂
机器学习高(1%~2%)云端分析

2.6 工程实践中的几个坑

最后分享几个我踩过的坑,希望对你有帮助:

  • 电流传感器零漂:霍尔传感器温度漂移严重。我建议用分流器+隔离放大器,精度高一个数量级。
  • 通信延迟:CAN总线负载率超过30%时,丢帧概率大增。BMS和PCS之间的保护信号,我坚持用硬线直连,不依赖通信。
  • 均衡策略:不要一看到压差大就均衡。我曾经遇到一个项目,均衡一直开着,结果电池温度升高,反而加速了老化。现在我的策略是:压差超过20mV才启动均衡,且均衡电流不超过0.05C。
  • SOC初始化:系统重启后,SOC从0开始积分是大忌。我每次都会记录上次下电时的SOC和OCV,重启后先查表校准。

BMS是储能系统的“大脑”,但再好的算法也离不开可靠的硬件和合理的策略。做BMS,既要懂电化学,也要懂电力电子,还要懂嵌入式软件。说白了,这是个交叉学科,需要慢慢积累。


公众号:蓝海资料掘金营,微信deep3321