4. BMS系统架构

BMS(Battery Management System,电池管理系统)是电动汽车、储能电站和消费电子电池包中负责“监测、保护、均衡、通信”的核心电子控制系统。从工程实现角度看,BMS并非一块单一的电路板,而是由多个硬件单元、多层软件架构和多种通信链路共同构成的分布式系统。理解BMS的系统架构,是进行后续算法开发、故障诊断和整车匹配的基础。本章将从硬件拓扑、软件分层、通信网络和功能模块四个维度,拆解一个典型分布式BMS的完整骨架。

BMS分布式系统架构总览 电池包(高压区) 电芯组1 (12S) 电芯组2 (12S) 电芯组3 (12S) 温度传感器 NTC(每模组 4~6 个) 从控单元 BMU × 3(采集/均衡) AFE采样 主控单元 BCU(低压区) MCU S32K / TC2xx 高压采样 总压/绝缘/电流 继电器驱动 / 预充控制 / 加热控制 电源管理:12V→5V→3.3V / 隔离DCDC 通信与接口 CAN / CAN FD(整车通信) 菊花链(从控采集链路) UART / I2C / 调试接口 CAN 菊花链 BMS 软件分层架构(AUTOSAR风格) 应用层(ASW) SOC/SOP/SOH/均衡/保护 RTE 层 通信/事件/数据映射 BSW 层 CAN驱动/IO驱动/OS MCAL 层 寄存器/ADC/定时器 核心功能模块 数据采集 | 状态估计(SOC/SOH) | 故障诊断 | 热管理 | 均衡控制 | 高压安全 | 通信管理 | 数据记录 从控/采样链路 主控/通信链路 软件分层

4.1 硬件组成:从电芯到主控的物理链路

BMS硬件通常采用“主从架构”或“集中式架构”。在乘用车和大型储能系统中,分布式主从架构是主流。其硬件组成可划分为三个核心单元:从控单元(BMU,Battery Monitoring Unit)、主控单元(BCU,Battery Control Unit)和采样单元(AFE,Analog Front End)。

4.1.1 核心原理:三大硬件单元的职责边界

  • 采样单元(AFE芯片):通常集成在从控板上,负责采集电芯电压、模组温度。关键器件如ADBMS6830、LTC6811等,支持最多12~16串电芯的电压采集,内置ADC(模数转换器)和均衡开关。AFE通过SPI或菊花链接口与MCU通信。
  • 从控单元(BMU):以MCU为核心(如S32K1xx、RH850),负责管理本模组内的AFE芯片,执行电压/温度数据预处理、被动均衡控制,并将数据通过菊花链或CAN上传至主控。BMU通常还包含隔离电源和CAN收发器。
  • 主控单元(BCU):整车BMS的大脑,通常由高性能MCU(如TC275、S32K3)构成。负责总压采集、绝缘检测、继电器控制、SOC/SOH估算、故障决策以及与整车VCU(整车控制器)的CAN通信。
工程经验:在12S(12串)模组中,一片AFE即可完成电压采集;但在96S的整包中,需要8片AFE级联。此时菊花链的通信稳定性和隔离电源的耐压等级是硬件设计的核心难点。

4.1.2 判断方法:如何区分主控与从控硬件

从硬件特征上可以快速区分:从控板通常靠近电芯模组安装,板上有明显的AFE芯片和均衡电阻阵列;主控板则安装在电池包外部或高压盒内,带有高压连接器、继电器驱动电路和整车CAN接口。从供电方式看,从控由隔离DCDC供电,主控由整车12V蓄电池供电。

4.1.3 案例拆解:某商用车96S电池包硬件配置

以一款96S(96串)磷酸铁锂电池包为例,其硬件配置如下:

硬件单元数量关键器件功能
AFE采样芯片8片LTC6811每片采集12串电压,共96串
从控BMU4块S32K144每块管理2片AFE,执行均衡
主控BCU1块TC275总压采集、绝缘检测、SOC估算
菊花链隔离4组LTC6820提供SPI隔离通信

该配置中,从控BMU通过菊花链串联,最后汇聚到主控的SPI接口。主控通过CAN与VCU通信,报文周期为100ms。实际调试中,发现菊花链在电芯电压突变时偶发通信错误,最终通过调整AFE的滤波电容和降低通信速率解决。

4.1.4 常见误区与复盘

误区:认为AFE芯片越多越好。实际上,AFE级联数量受限于菊花链的延迟和隔离耐压。超过8片AFE时,建议改用CAN通信的从控方案,避免菊花链信号质量劣化。

4.2 软件分层:从寄存器到应用算法的逻辑隔离

BMS软件通常遵循AUTOSAR(汽车开放系统架构)的分层思想,即使非AUTOSAR项目,也会采用类似的分层结构,以保证代码可移植性和功能安全(ISO 26262)。

4.2.1 核心原理:四层软件架构

  1. MCAL层(微控制器抽象层):直接操作寄存器,提供ADC、PWM、SPI、CAN等驱动接口。例如,初始化AFE的SPI通信、配置定时器中断。
  2. BSW层(基础软件层):包括操作系统(OS,如FreeRTOS)、CAN协议栈、诊断服务(UDS)和NVM(非易失性存储器)管理。该层屏蔽硬件细节,向上提供统一API。
  3. RTE层(运行时环境):负责应用层与BSW之间的数据映射和事件触发。例如,将CAN接收到的整车报文转换为应用层可读的“整车速度”信号。
  4. ASW层(应用软件层):实现BMS核心算法,包括SOC估算(安时积分+卡尔曼滤波)、SOP功率预测、SOH健康度评估、均衡策略、故障诊断及热管理控制。

4.2.2 操作流程:基于模型开发(MBD)的软件设计

现代BMS软件多采用MATLAB/Simulink进行模型开发,流程如下:

  • 第一步:在Simulink中搭建算法模型,如SOC估算模型。
  • 第二步:自动生成C代码,并集成到BSW层之上。
  • 第三步:在HIL(硬件在环)台架上进行功能测试。
  • 第四步:生成HEX文件,刷写至主控MCU。

4.2.3 实战场景:软件升级与Bootloader

在整车厂售后中,BMS软件升级常通过CAN总线进行。主控中需预置Bootloader程序,应用层程序通过UDS协议(0x34服务)下载。升级过程中,必须确保高压继电器处于断开状态,且电池包SOC在20%以上,防止升级过程中断电导致程序损坏。

4.2.4 常见误区与总结

经验:软件分层的关键在于“接口稳定”。一旦BSW层与ASW层的接口定义完成,算法工程师与底层工程师可并行开发。若接口频繁变动,会导致集成阶段出现大量“野指针”和内存溢出问题。

4.3 通信架构:CAN总线与菊花链的协同

BMS内部通信主要分为两类:模组间通信(从控到主控)和系统间通信(BMS到VCU/充电桩)。

4.3.1 核心原理:两种通信方式对比

特性菊花链(SPI隔离)CAN总线
物理层差分信号,需隔离变压器双绞线,CAN收发器
速率1~2 Mbps500 kbps(经典CAN)/ 2 Mbps(CAN FD)
拓扑环形或链形总线型,可多节点
成本较低(无需收发器)较高(每节点需收发器)
可靠性单点故障影响链路节点故障不影响总线

4.3.2 判断方法:如何选择通信方式

如果电池包模组数量少于8个且空间紧凑,优先选择菊花链;如果模组数量多、分布分散,或需要支持热插拔,则选择CAN。此外,CAN总线便于连接第三方设备(如充电机、绝缘检测仪)。

4.3.3 案例拆解:菊花链通信故障排查

某储能项目反馈,BMS从控数据周期性丢失。排查过程如下:

  1. 使用示波器测量菊花链差分信号,发现信号幅值仅200mV(正常应大于500mV)。
  2. 检查隔离变压器,发现磁珠阻抗异常。
  3. 更换隔离变压器后,通信恢复正常。

复盘原因:从控板在波峰焊时温度过高,导致变压器磁芯特性漂移。后续在PCB设计中增加了热风焊盘,并调整了焊接温度曲线。

4.3.4 常见误区

注意:菊花链通信的“环形拓扑”虽然具备冗余能力,但需要额外的控制逻辑。在低成本项目中,通常采用链形拓扑,此时靠近主控的从控节点故障会导致后续节点全部失联。

4.4 功能模块划分:BMS的“五脏六腑”

从功能逻辑上,BMS可划分为八个核心模块,每个模块对应独立的软件任务和硬件资源。

4.4.1 核心原理:八大功能模块

  • 数据采集模块:负责电压、电流、温度、绝缘电阻的原始数据采集。
  • 状态估计模块:计算SOC(荷电状态)、SOH(健康状态)、SOP(功率边界)。
  • 故障诊断模块:检测过压、欠压、过温、过流、绝缘故障等,并分级报警。
  • 热管理模块:控制液冷/风冷系统,调节电池温度。
  • 均衡模块:执行被动均衡(通过电阻放电)或主动均衡(能量转移)。
  • 高压安全模块:控制正负继电器、预充继电器,实现高压上下电时序。
  • 通信模块:与VCU、充电桩、云平台进行数据交互。
  • 数据记录模块:存储故障码、SOC历史数据,支持OTA升级。

4.4.2 操作流程:功能模块的优先级调度

在实时操作系统中,各模块按优先级执行:

任务调度示例(FreeRTOS):
- 1ms 任务:电流采样(高优先级)
- 10ms 任务:电压/温度采集、故障诊断
- 100ms 任务:SOC/SOH估算、均衡控制
- 1000ms 任务:数据记录、CAN报文发送

4.4.3 实战场景:热管理模块的联动控制

当电池温度超过35℃时,BMS通过CAN发送“请求冷却”信号给VCU,VCU控制水泵和风扇启动。若温度超过45℃,BMS直接限制放电功率(SOP降额),防止热失控。该逻辑在Simulink中建模时,需考虑传感器故障时的降级策略。

4.4.4 总结复盘

核心要点:功能模块划分的边界决定了软件的可维护性。建议将“状态估计”与“故障诊断”完全解耦,避免因算法升级导致诊断逻辑失效。同时,每个模块应具备独立的错误上报机制,便于整车级故障定位。