第2章:需求分析——项目干系人分析、功能需求与非功能需求

大家好,我是你们的BMS课程讲师。今天咱们聊聊需求分析。说实话,很多工程师觉得这步是「写文档的活儿」,恨不得直接跳过去画原理图。但我得说句实在话:需求分析做不好,后面全是坑。我在项目里见过太多返工案例,都是因为一开始没把需求理清楚。

2.1 项目干系人分析

先问个问题:BMS做出来给谁用?

你可能会说「给电池包用啊」。不对。真正用BMS的是这几类人:

  • 整车厂/系统集成商:他们关心BMS能不能和整车CAN总线对上,协议是否兼容
  • 电池pack厂:他们关心BMS能不能适配他们的电芯,SOC精度够不够
  • 最终用户:他们只关心续航准不准、充电快不快、安不安全
  • 生产部门:他们关心好不好生产、测试方不方便
  • 售后/运维:他们关心故障好不好排查、能不能远程升级

我个人习惯,在项目启动前先列一张干系人清单。每个干系人后面写上他们的核心诉求。这样后面做需求评审时,就不会漏掉关键点。

我的经验:有一次我忽略了生产部门的意见,结果设计的BMS需要手工焊接一个0603的电阻,产线工人直接罢工。从那以后,我每次需求分析都会拉上生产工程师一起过一遍。

2.2 功能需求详解

功能需求是BMS的「硬功夫」。说白了,就是BMS必须能干哪些活。我按模块一个一个说。

2.2.1 电压/电流/温度采集

这是BMS的「眼睛」和「耳朵」。采集不准,后面所有算法都是白搭。

  • 电压采集:每串电芯的电压都要采。12串、24串、48串...串数越多,采集通道越多。我建议用专用AFE芯片(比如TI的BQ76952、NXP的MC33771),别自己搭分立电路——我在一个早期项目里试过,温漂大到怀疑人生。
  • 电流采集:通常用霍尔传感器或分流器。分流器精度高但功耗大,霍尔传感器隔离好但零漂大。怎么选?看你的精度要求。
  • 温度采集:NTC热敏电阻最常见。注意:不是每串电芯都要放一个温度传感器,但关键位置(正负极、中间位置)必须放。
避坑指南:我曾经在一个项目中,为了省成本,把温度传感器从8个减到4个。结果电池包中间位置过热,BMS完全没检测到。嗯,那次教训很深刻。

2.2.2 SOC估算

SOC(State of Charge,荷电状态)就是「还剩多少电」。用户最关心的就是这个数字准不准。

常用的方法有:

  • 安时积分法:简单,但误差会累积。我习惯每100ms积分一次,同时用开路电压法做校准。
  • 开路电压法:准,但需要电池静置。不适合动态工况。
  • 卡尔曼滤波法:精度高,但计算量大。MCU性能不够的话跑不动。

实际项目中,我通常用安时积分+开路电压校准+温度补偿的组合方案。精度能做到±3%以内,够用了。

2.2.3 过充/过放保护

这是BMS的「安全底线」。锂电池最怕过充和过放,轻则鼓包,重则起火。

  • 过充保护:单串电压超过4.25V(三元锂)或3.65V(磷酸铁锂)时,立即切断充电MOS管。
  • 过放保护:单串电压低于2.8V(三元锂)或2.5V(磷酸铁锂)时,立即切断放电MOS管。
  • 保护恢复:不能一恢复就立刻接通,要有迟滞。我一般设50mV的迟滞窗口。
注意:保护动作要快!我见过一个方案,软件检测到过充后还要等100ms才动作,结果电池已经过充了。硬件保护(比如AFE自带的比较器)和软件保护要双重冗余。

2.2.4 被动均衡

电芯之间总有差异。均衡就是让它们「齐步走」。

被动均衡的原理很简单:把电压高的电芯通过电阻放电,直到和其他电芯一致。但要注意:

  • 均衡电流:通常50mA~200mA。电流太大,电阻发热严重;电流太小,均衡时间太长。
  • 均衡策略:我习惯在充电末期做均衡。这时候电芯电压高,差异明显,均衡效率也高。
  • 什么时候停止:电压差小于10mV,或者电芯温度超过45°C,立即停止。

说实话,被动均衡效率不高。但成本低、实现简单,消费级BMS够用了。如果做储能或动力电池,建议上主动均衡。

2.2.5 CAN通信

BMS不是孤岛,它要和整车控制器、充电机、仪表盘通信。CAN总线是汽车行业的标准。

需要定义的内容:

  • 波特率:通常250kbps或500kbps。我建议用500k,速度快,延迟低。
  • ID分配:每个报文要有唯一ID。比如0x100是BMS状态,0x200是SOC信息。
  • 数据格式:Intel格式还是Motorola格式?一定要和整车厂对齐。我吃过这个亏——协议文档写的是Intel,实际代码写成了Motorola,联调时数据全乱套。

2.3 非功能需求

功能需求决定「能不能做」,非功能需求决定「做得好不好」。

非功能需求 典型指标 我的建议
精度 电压±5mV,电流±1%,SOC±3% 别盲目追求高精度,够用就行。±5mV对大多数场景足够了。
实时性 采集周期≤100ms,保护响应≤10ms 保护响应必须硬件实现,软件来不及。
成本 BOM成本控制在XX元以内 成本是硬约束。我一般先做成本预算,再选型。
功耗 休眠功耗<100μA 休眠时AFE要进入低功耗模式,MCU也要睡。
可靠性 MTBF≥50000小时 关键器件降额使用,电容选X7R或C0G。
一个小技巧:非功能需求要量化。别写「精度要高」,要写「电压采集精度±5mV」。这样后面测试时才有依据。

2.4 需求文档撰写

需求文档怎么写?我分享一个模板:

# BMS需求规格说明书

## 1. 项目概述
- 项目名称:48V电动自行车BMS
- 电芯类型:磷酸铁锂,16串
- 额定容量:20Ah

## 2. 功能需求
### 2.1 采集功能
- 电压:16通道,范围0~5V,精度±5mV
- 电流:1通道,范围-100A~+100A,精度±1%
- 温度:4通道,范围-20°C~85°C,精度±2°C

### 2.2 保护功能
- 过充保护:单串≥3.65V,延迟1s,恢复3.55V
- 过放保护:单串≤2.5V,延迟1s,恢复2.8V
- 过流保护:放电≥150A,延迟100ms

### 2.3 通信功能
- CAN 2.0B,500kbps
- 报文ID:0x100~0x1FF

## 3. 非功能需求
- SOC精度:±3%
- 采集周期:100ms
- 休眠功耗:<100μA
- 工作温度:-20°C~60°C

写文档时注意:每一条需求都要可测试。比如「SOC精度±3%」,测试方法就是:充满电,放空电,看累计容量和BMS报的SOC差多少。

最后说一句:需求文档不是写完了就完事了。它要经过干系人评审、签字确认。我见过太多项目,需求文档写好了没人看,最后扯皮时才发现「哦,原来当初没说要这个功能」。所以,文档是合同,不是草稿

好了,这一章就到这里。下一章我们讲系统架构设计——怎么把需求变成硬件和软件的蓝图。