BMS 电池管理系统架构详解:从单体到系统级

BMS 电池管理系统架构详解:从单体到系统级

本文将深入剖析电池管理系统的分层架构设计,涵盖 AFE 采样链、主控 MCU 选型策略、通信拓扑对比以及高压安全隔离方案,为 BMS 工程师提供系统级的设计参考。


1. 引言

电池管理系统(Battery Management System,简称 BMS)是新能源汽车和储能系统中最核心的电子控制单元之一。一个设计良好的 BMS 需要在几毫秒内完成数百节电芯的电压采样、温度监控、SOC 估算、均衡控制以及故障诊断,同时保证功能安全等级达到 ASIL-C/D。

本文将 BMS 架构分为三个层次展开讨论:

  • 单体采样层:AFE(Analog Front End)芯片的拓扑与采样策略
  • 主控决策层:MCU 选型、SOC/SOH 算法部署与存储架构
  • 通信与隔离层:SPI/isoSPI/CAN 总线的选型与高压隔离设计

2. 单体采样层架构

2.1 AFE 芯片拓扑

目前主流 AFE 芯片(如 ADI LTC6811、TI BQ79616、NXP MC33771)均支持菊花链(Daisy Chain) 拓扑,单颗芯片通常可管理 12~16 串电芯。

┌──────────────────────────────────────────────────────┐
│                    BMS Master MCU                     │
│                      (SPI Host)                      │
└──────────┬───────────────────────────────────────────┘
           │ isoSPI / SPI
     ┌─────▼─────┐      ┌───────────┐      ┌───────────┐
     │  AFE #1   │◄────►│  AFE #2   │◄────►│  AFE #3   │
     │ Cells 1-12│      │Cells 13-24│      │Cells 25-36│
     └───────────┘      └───────────┘      └───────────┘

对于 800V 高压平台(如保时捷 Taycan、小鹏 G9),通常需要 6~8 颗 AFE 级联。此时菊花链的可靠性和通信延迟成为关键约束。

2.2 电压采样精度与滤波

以 LTC6811 为例,其 ADC 分辨率为 16-bit,在 ±5V 量程下 LSB 约为 152μV。但在实际系统中,以下几点会显著影响采样精度:

  1. RC 滤波时间常数:典型前端滤波电阻为 100Ω~1kΩ,电容为 10nF~100nF,截止频率 f_c = 1/(2πRC) 约 1.6kHz~159kHz
  2. PCB 走线阻抗:长走线产生的 IR drop 在高倍率充放电时可达数 mV 级别
  3. 共模噪声:高压侧 PWM 开关噪声耦合

采样抗混叠设计建议

// LTC6811 ADC 采样配置示例
// 使用 7kHz 低通滤波 + 模式 7 (27kHz 采样率)
// ADCOPT = 0: 标准模式; ADCOPT = 1: 快速模式

#define ADC_MODE_7KHZ     0x00  // 7kHz, 标准模式
#define ADC_MODE_27KHZ    0x01  // 27kHz, 快速模式 (仅 cell 电压)

void ltc6811_cfg_adc(uint8_t mode) {
    uint16_t cfg = 0;
    // REFON=1, ADCOPT=mode, GPIO[5:0] as inputs
    cfg |= (1 << 2);            // REFON enabled
    cfg |= (mode << 0);         // ADC mode select
    cfg |= (0x3F << 9);         // GPIO pull-down on
    ltc6811_write_cfg(cfg);
}

2.3 温度采样网络

典型 BMS 在每个模组上部署 4~8 个 NTC 热敏电阻(如 Murata NCP15WF104),通过 AFE 的 GPIO 通道以分压方式采样:

VREF ─────┬─────┐
          R1    │
          10k   │
          ├─────┴───► AFE GPIOx (ADC input)
         NTC
       (100kΩ @ 25°C)
          │
         GND

NTC 温度转换公式(Steinhart-Hart 简化版):

$$T = \frac{1}{\frac{1}{T_0} + \frac{1}{B} \cdot \ln\left(\frac{R}{R_0}\right)} – 273.15$$

其中 B = 4250K,T₀ = 298.15K(25°C),R₀ = 100kΩ。

float ntc_to_temperature(float resistance) {
    const float T0 = 298.15f;   // 25°C in Kelvin
    const float R0 = 100000.0f; // 100kΩ at 25°C
    const float B  = 4250.0f;   // B-constant

    float inv_T = (1.0f / T0) + (1.0f / B) * logf(resistance / R0);
    return (1.0f / inv_T) - 273.15f;  // Kelvin -> Celsius
}

工程注意点:当 NTC 线束断裂时,ADC 读数会趋向 VREF 或 GND,对应极端温度。务必在软件中加入 NTC 开路/短路诊断,否则可能导致误触发热失控保护。


3. 主控决策层架构

3.1 MCU 选型

BMS 主控 MCU 的核心需求:

需求 指标 典型选型
算力 > 200 DMIPS NXP S32K3xx, Infineon TC3xx, TI TMS570
Flash ≥ 2MB 支持 OTA A/B 分区
RAM ≥ 256KB ECC 保护
CAN FD ≥ 3 路 动力 CAN / 诊断 CAN / 预留
功能安全 ASIL-D Lockstep 双核或 ECC 全覆盖
AEC-Q100 Grade 1 -40°C ~ +125°C

以 NXP S32K344 为例,其双核 Lockstep Cortex-M7 @ 160MHz,提供约 400 DMIPS 算力,足以运行扩展卡尔曼滤波(EKF)或自适应 SOC 估计算法。

3.2 SOC 估算软件架构

// SOC 估算核心调度框架
typedef struct {
    float soc;           // 当前 SOC (0.0 ~ 1.0)
    float soh;           // 当前 SOH
    float ocv;           // 开路电压 OCV
    float r0;            // 欧姆内阻
    float r1, c1;        // RC 环节参数 (1阶 Thevenin)
    float v_rc;          // RC 环节极化电压
    float q_max;         // 当前最大可用容量 (Ah)
} battery_state_t;

typedef enum {
    SOC_MODE_OCV_LOOKUP,    // 静置态: OCV-SOC 查表
    SOC_MODE_COULOMB,       // 动态: 安时积分
    SOC_MODE_EKF,           // 稳态: 扩展卡尔曼滤波
    SOC_MODE_CHARGE_END,    // 充电末端: 电压拐点校准
} soc_mode_t;

soc_mode_t select_soc_mode(battery_context_t *ctx) {
    if (ctx->rest_time > 3600)  // 静置超过 1 小时
        return SOC_MODE_OCV_LOOKUP;
    if (ctx->current < 0.5)     // 小电流稳态
        return SOC_MODE_EKF;
    if (ctx->cell_voltage > 4.15f && ctx->current < 1.0f)
        return SOC_MODE_CHARGE_END;
    return SOC_MODE_COULOMB;    // 默认: 安时积分
}

3.3 数据存储与 NVM 策略

BMS 需要持久化的关键数据:

数据项 大小 写入频率 存储介质
SOC/SOH 断点保存 32B 每 10 分钟 MCU Data Flash (EEPROM 模拟)
循环计数 + 累计 Ah 16B 每循环 1 次 MCU Data Flash
故障 DTC 日志 4KB 事件触发 外部 SPI NOR Flash (≥16MB)
电芯历史极值 128B 每次行程结束 MCU Data Flash
OTA 固件备份 2MB OTA 时 外部 NOR Flash

Flash 磨损均衡:以 NXP S32K3 的 64KB Data Flash 为例,典型擦写寿命 10 万次。若每 10 分钟写入一次 SOC 断点数据,按 16 块虚拟扇区做磨损均衡,总寿命约为:16 × 100,000 × 10 min ≈ 30 年,远超出整车寿命。


4. 通信与隔离层架构

4.1 通信总线对比

总线 速率 拓扑 隔离方案 典型用途
SPI ≤10 Mbps 点对点 数字隔离器 板内 AFE 通信
isoSPI 1 Mbps 菊花链 变压器/电容 跨模组 AFE 级联
CAN 1 Mbps 总线型 隔离 CAN 收发器 整车通信
CAN FD 5~8 Mbps 总线型 隔离 CAN FD 诊断 / OTA
菊花链 UART 2 Mbps 菊花链 电容隔离 TI BQ79616 级联

4.2 高压隔离设计

800V 平台下,BMS 主控板和高压采样板之间需要满足 IEC 60664-1 加强绝缘 要求,即至少需要承受 2×U_max + 1000V ≈ 3900V 的隔离耐压。

// 隔离失效检测 — 通过周期性读回 AFE 寄存器
bool check_isolation_integrity(uint8_t afe_id) {
    uint16_t cfg_readback, cfg_expected;

    cfg_expected = ltc6811_get_cfg_shadow(afe_id);
    cfg_readback = ltc6811_rdcfg(afe_id);

    // CRC 校验由 LTC6811 PEC 保证,此处做配置回读一致性检查
    if (cfg_readback != cfg_expected) {
        set_fault(DTC_AFE_COMM_LOSS | (afe_id << 8));
        return false;
    }
    return true;
}

实际工程中,isoSPI 的变压器选型至关重要。推荐使用 TDK ACT1210 系列共模扼流圈配合 Pulse HX1188NL 隔离变压器,可有效抑制共模瞬态抗扰度(CMTI)> 100kV/μs。

4.3 系统级 BMS 通信架构图

┌────────────────────────────────────────────────────────┐
│                      Vehicle CAN Bus                     │
│              (CAN FD 2Mbps / CAN 500kbps)               │
└────┬────────────┬──────────────┬──────────────┬─────────┘
     │            │              │              │
┌────▼────┐ ┌────▼────┐   ┌─────▼─────┐  ┌─────▼─────┐
│  VCU    │ │  MCU    │   │   BMS     │  │   OBC     │
│(Vehicle │ │(Motor   │   │  Master   │  │(On-Board  │
│ Control)│ │Control) │   │   Board   │  │ Charger)  │
└─────────┘ └─────────┘   └─────┬─────┘  └───────────┘
                                │ isoSPI (1Mbps)
              ┌─────────────────┼─────────────────┐
         ┌────▼────┐       ┌────▼────┐       ┌────▼────┐
         │  CMU #1  │       │  CMU #2  │       │  CMU #3  │
         │ (AFE x2) │       │ (AFE x2) │       │ (AFE x2) │
         │ 24 cells │       │ 24 cells │       │ 24 cells │
         └─────────┘       └─────────┘       └─────────┘
          isoSPI ────────────┘   │   └──────────── isoSPI
                        Daisy Chain (Transformer Isolated)

5. 功能安全与冗余设计

5.1 ASIL 分解策略

BMS 核心安全目标(Safety Goal):

ID 安全目标 ASIL 安全状态
SG-01 防止过充导致热失控 ASIL-D 断开主继电器
SG-02 防止过放导致电芯损坏 ASIL-C 限功率并告警
SG-03 防止过温运行 ASIL-C 降功率 / 断开

针对 ASIL-D 的 SG-01,可进行 ASIL 分解:

  • ASIL-D = ASIL-B(D) + ASIL-B(D):使用独立的两路电压采样链
  • AFE #1(主路):LTC6811 → 经 MCU Lockstep Core A 处理
  • AFE #2(冗余):TI BQ79616 → 经 MCU Lockstep Core B 处理

5.2 二级保护硬件

BMS 应具备独立于 MCU 的硬件过压保护(Secondary Protection):

// 硬件过压比较器 (独立于 MCU)
// 使用 TI BQ77216 作为 Secondary Protector
// 当任一电芯电压超过 4.25V,直接触发保险丝驱动信号
#define SECONDARY_OV_THRESHOLD_MV  4250  // 4.25V
#define SECONDARY_UV_THRESHOLD_MV  2200  // 2.20V

BQ77216 响应时间 < 1ms,不依赖任何软件逻辑,满足功能安全对独立性的要求。


6. 工程实践中的常见陷阱与建议

6.1 AFE 菊花链断开恢复

当某颗 AFE 因 EMI 干扰导致通信故障时,整个菊花链断裂。应在 LTC6811 的 isoSPI 端口处添加看门狗超时回退电路,确保通信丢失时 AFE 自动进入保护状态,而非维持上一次的均衡指令——后者可能导致电芯过放。

6.2 SOC 跳变问题

安时积分法的核心误差源——电流传感器零漂(通常 ±50mA)。在 50kWh 电池包上,±50mA 的漂移每小时累积误差约为 50mAh,100 小时后达到 5Ah(约 10% SOC 偏差)。建议:

  • 每次静置 >2 小时后执行 OCV-SOC 重校准
  • 使用双电流传感器(LEM + Shunt)交叉校验
  • 充电末端 SOC=100% 时强制复位累计误差

6.3 均衡策略的时间窗口

被动均衡(Passive Balancing)通常在充电末端执行,典型均衡电流 50~200mA。以 100Ah 电芯为例,5% 的 SOC 差异需要:

$$t_{balance} = \frac{C_{cell} \times \Delta SOC}{I_{balance}} = \frac{100 \times 0.05}{0.1} = 50 \text{ 小时}$$

因此,被动均衡无法在单次充电中完成大范围容量偏差修正。对于定期均衡,建议设置均衡窗口跨多次充电周期,并加入均衡累积计数器。


7. 结语

BMS 架构设计是一个多维度权衡的过程:采样精度 vs 物料成本、通信速率 vs EMI 鲁棒性、SOC 精度 vs 算力消耗、功能安全等级 vs 系统复杂度。本文从单体采样、主控决策到通信隔离三个层次进行了系统性的梳理,希望能为 BMS 工程师在实际项目中提供工程化的参考框架。

随着 800V 高压平台和 CTC(Cell-to-Chassis)架构的普及,BMS 正逐步向无线化(wBMS,如 ADI 的方案)和云原生(Cloud BMS,利用大数据优化 SOC/SOH 算法)方向演进,这将在后续文章中深入探讨。


参考资料:
ADI LTC6811 Datasheet
TI BQ79616-Q1 Technical Reference Manual
NXP S32K3xx Reference Manual
ISO 26262-5:2018 Annex D – ASIL Decomposition
IEC 60664-1 Insulation Coordination


标签:#BMS架构 #AFE采样 #SOC估算 #功能安全 #高压隔离 #菊花链 #电池管理系统

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Navigation

About

Writing on the Wall is a newsletter for freelance writers seeking inspiration, advice, and support on their creative journey.