BMS-CAN 协议 V2.1
BMS-CAN 协议 V2.1
1. 历史更改
版本 | 说明 | 备注 |
V2.0 | 相比于 V1 版本添加了极空 BMS 常用的各种数据, 并且兼容了 V1.0 版本。 | |
V2.1 | 去掉充电机信息帧的接收(0x18FF50E5) |
2. 概述
本协议规定了 BMS 与汽车 CAN 网络中其他节点间的通信协议。
3. 物理接口
物理接口本协议采用 CAN2.0A/B 标准。通讯xx率为 250kbps。
4. 数据约定
本协议数据传输中对于多字节数据,除特殊说明外,均采用低字节在前,高字节在后(小端)。极空 BMS CAN 帧 ID 地址默认为 F4,
在多组 BMS 同时使用时,通过极空 BMS APP 设置设备地址(默认为 0)改变 BMS 发送 CAN 帧 ID,CAN 帧 ID+设备地址 = 发送的帧 ID;如:CAN 帧 ID 为 0x02F4,设备地址为 2,0x02f4+2 = 0x02F6,BMS 发送的帧 ID 为 0x02f6。
5. 参数组编号
参数组编码分配如下:
序号 | 名称 | 描述 | 帧格式 | ID | 发送方 | 接收方 | 报文周期 |
1 | BATT_ST1 | 电池状态信息1 | 标准帧 | 0x02F4 | BMS | 外设 | 20ms |
3 | CELL_VOLT | 电芯电压 | 标准帧 | 0x04F4 | BMS | 外设 | 100ms |
4 | CELL_TEMP | 电芯温度 | 标准帧 | 0x05F4 | BMS | 外设 | 500ms |
6 | ALM_INFO | 告警信息 | 标准帧 | 0x07F4 | BMS | 外设 | 100ms |
2 | BATT_ST2 | 电池状态信息2 | 扩展帧 | 0x18F128F4 | BMS | 外设 | 100ms |
5 | ALL_TEMP | 电芯所有温度 | 扩展帧 | 0x18F228F4 | BMS | 外设 | 500ms |
7 | BMSERR_INFO | BMS 故障信息 | 扩展帧 | 0x18F328F4 | BMS | 外设 | 100ms |
8 | BMS_INFO | BMS 信息 | 扩展帧 | 0x18F428F4 | BMS | 外设 | 500ms |
9 | BMSSwSta | BMS 开关状态 | 扩展帧 | 0x18F528F4 | BMS | 外设 | 500ms |
10 | CELLVOL | 电池单体电压 | 扩展帧 | 0x18E028F4 | BMS | 外设 | 1000ms |
11 | BMSChg_INFO | BMS 充电请求 | 扩展帧 | 0x1806E5F4 | BMS | 外设 | 500ms |
12 | Ctrl_INFO | 控制信息 | 扩展帧 | 0x18F0F428 | 外设 | BMS | |
6. 消息定义
6.1 电池状态 1(BATT_ST)ID:0x02F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | BattVolt | 0 | 00 | 0x0000 | 0.1 | 0 | V | 电池组总电压 |
2 | BattCurr | 16 | 16 | -400~1000 | 0.1 | -400 | A | 电池组总电流 |
3 | SOC | 32 | 8 | 0~1 | 1 | 0 | % | 剩余容量 |
4 | 保留 |
例:0x02F4 13 01 D7 11 33 XX XX XX
表示:
13 01 电压 27.5V
D7 11 电流 56.7A(精度:0.1A)(充电为正,放电为负)
33 SOC 51%
6.2 电芯电压(CELL_VOLT)ID:0x04F4
本消息定义了电芯电压信息。具体格式如下:
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | MaxCellVolt | 0 | 00 | 0x0000 | 1 | 0 | mV | 最高单体电压 |
2 | MaxCvNO | 00 | 0 | 0x000 | 1 | 1 | 最高单体位置 | |
3 | MinCellVolt | 00 | 00 | 0x0000 | 1 | 0 | mV | 最低单体电压 |
4 | MinCvNO | 00 | 0 | 0x000 | 1 | 1 | 最高单体位置 |
例:0x04F4 8c 0a 05 92 09 08 XX XX
表示:
8c 0a 最高单体电压 2700mV
05 对应单体号 5
92 09 最低单体电压 2450mV
08 对应单体号 8
6.3 电芯温度(CELL_TEMP)ID:0x05F4
本消息定义了电芯温度信息。具体格式如下:
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | MaxCellTemp | 0 | 0 | -00x000 | 1 | -50 | ℃ | 最高电芯温度 |
2 | MaxCtNO | 8 | 8 | 1~250 | 1 | 1 | 最高温度位置 | |
3 | MinCellTemp | 16 | 8 | -50~200 | 1 | -50 | ℃ | 最低电芯温度 |
4 | MinCtNO | 00 | 0 | 0x000 | 1 | 1 | 最低温度位置 | |
5 | AvrgCellTemp | 32 | 8 | -50~200 | 1 | -50 | ℃ | 平均电芯温度 |
例:0x05F4 48 06 2F 01 3F XX XX XX
表示:
48 | 最高电芯温度 | 22℃ |
06 | 对应单体号 | 6 |
2F | 最低电芯温度 | -3℃ |
01 | 对应单体号 | 1 |
3F | 平均电芯 | 13℃ |
6.4 故障信息(ALM_INFO)ID:0x07F4
告警信息为事件触发方式发送,当有告警时 BMS 周期性发送该报文,无告警信息则不发送。当同时有多个告警同时发生时,仪表界面会循环显示报警号,最多可以循环显示 4 个报警号。报警号显示以警告发生先后顺序为优先级。具体格式如下:
报警号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | 单体过压 | 0 | 2 | 0~3 | 1 | 0 | 告警级别 | |
2 | 单体欠压 | 2 | 2 | 0~3 | 1 | 0 | ||
3 | 保留 | |||||||
4 | 保留 | |||||||
5 | 单体压差过大 | 8 | 2 | 0~3 | 1 | 0 | ||
6 | 放电过流 | 10 | 2 | 0~3 | 1 | 0 | ||
7 | 充电过流 | 12 | 2 | 0~3 | 1 | 0 | ||
8 | 温度过高 | 14 | 2 | 0~3 | 1 | 0 | ||
9 | 温度过低 | 16 | 2 | 0~3 | 1 | 0 | ||
10 | 保留 | |||||||
11 | SOC 过低 | 20 | 2 | 0~3 | 1 | 0 | ||
12 | 保留 | |||||||
13 | 保留 | |||||||
14 | 保留 | |||||||
15 | 内部通信故障 | 28 | 2 | 0~3 | 1 | 0 |
告警级别:0 为无告警,1 级为严重告警,2 级为重要告警,3 级为一般告警例:0x07F4 03 00 20 00 XX XX XX XX
表示:
第 1 字节 43 二进制:0000 0011 第三字节 20:0010 0000
11 单体过压,3 级告警
10 SOC 过低,2 级告警
6.5 电池状态 2(BATT_ST)ID:0x18F128F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | CapRemain | 0 | 00 | 0x0000 | 0.1 | 0 | AH | 剩余容量 |
2 | FulChargeCap | 00 | 00 | 0x0000 | 0.1 | 0 | AH | 电池实际容量 |
3 | CycleCap | 00 | 00 | 0x0000 | 0.1 | 0 | AH | 循环总容量 |
4 | CycleCount | 00 | 00 | 0x0000 | 1 | 0 | 电池循环次数 |
例:0x18F128F4 2C 01 90 01 E8 03 00 64
表示:
2C 01 剩余容量 30Ah
90 01 电池实际容量 40Ah E8 03 循环总容量 100Ah 64 00 电池循环次数 100 次
6.6 电芯温度(ALL_TEMP)ID:0x18F228F4
本消息定义了电芯上的所有温度信息,格式如下:
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | TempMaskCode | 0 | 8 | 0:不支持 1:支持 bit0:电芯温度 1 bit1:电芯温度 2 bit2:电芯温度 3 |
bit3:电芯温度 4 bit4:电芯温度 5 | ||||||||
2 | CellTemp1 | 0 | 0 | -00x000 | 1 | -50 | ℃ | 电芯温度 1 |
3 | CellTemp2 | 16 | 8 | -50~200 | 1 | -50 | ℃ | 电芯温度 2 |
4 | CellTemp3 | 24 | 8 | -50~200 | 1 | -50 | ℃ | 电芯温度 3 |
5 | CellTemp4 | 32 | 8 | -50~200 | 1 | -50 | ℃ | 电芯温度 4 |
6 | CellTemp5 | 40 | 8 | -50~200 | 1 | -50 | ℃ | 电芯温度 5 |
注:温度为 FF 时表示温度传感器不存在;电芯温度 3 和 BMS 的 MOS 温度是同一个,除了继电器版本的 BMS 表示电芯温度,其余都表示 BMS 内部 MOS 的温度。
例:0x18F228F4 07 48 47 50 FF FF XX XX
表示:
07 表示温度 1 温度 2 温度 3 可用,温度 4 温度 5 不支持
48 温度 1 22℃
47 温度 2 21℃
50 温度 3 30℃ FF 温度 4 不存在 FF 温度 5 不存在
6.7 故障信息(BMSERR_INFO)ID: 0x18F328F4
本消息定义了 BMS 内部所有的故障,具体格式如下:
报警号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 备注 |
1 | 线电阻过大 | 0 | 1 | 0~1 | 1 | 0 | 1:故障 0:正常 |
2 | MOS 过温 | 1 | 1 | 0~1 | 1 | 0 | |
3 | 单体数量不符 | 2 | 1 | 0~1 | 1 | 0 | |
4 | 电流传感器异常 | 3 | 1 | 0~1 | 1 | 0 | |
5 | 单体过压 | 4 | 1 | 0~1 | 1 | 0 | |
6 | 电池总压过压 | 5 | 1 | 0~1 | 1 | 0 | |
7 | 充电过流 | 6 | 1 | 0~1 | 1 | 0 | |
8 | 充电短路 | 7 | 1 | 0~1 | 1 | 0 | |
9 | 充电温度过高 | 8 | 1 | 0~1 | 1 | 0 | |
10 | 充电温度过低 | 9 | 1 | 0~1 | 1 | 0 | |
11 | BMS 内部通信异常 | 10 | 1 | 0~1 | 1 | 0 | |
12 | 单体欠压 | 11 | 1 | 0~1 | 1 | 0 | |
13 | 电池总压欠压 | 12 | 1 | 0~1 | 1 | 0 | |
14 | 放电过流 | 13 | 1 | 0~1 | 1 | 0 | |
15 | 放电短路保护 | 14 | 1 | 0~1 | 1 | 0 | |
16 | 放电温度过高 | 15 | 1 | 0~1 | 1 | 0 | |
17 | 充电 MOS 故障 | 16 | 1 | 0~1 | 1 | 0 | |
18 | 放电 MOS 故障 | 17 | 1 | 0~1 | 1 | 0 |
例:0x18F328F4 02 30 01 XX XX XX XX XX
表示:
02 MOS 过温
30 单体欠压 电池总压欠压
01 放电温度过高
6.8 BMS 信息(BMS_INFO)ID:0x18F428F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | BMSRunTime | 0 | 32 | 1 | 0 | S | BMS 运行时间 | |
2 | HeatCur | 00 | 00 | 0x0000 | 1 | 0 | mA | 加热电流 |
3 | SOH | 00 | 0 | 0x000 | 1 | 0 | % | 电池健康度 |
例:0x18F428F4 C8 00 00 00 28 0A 64 XX
表示:
C8 00 00 00 BMS 运行时间 200S
28 0A 加热电流 2.6A
64 电池健康度 100%
6.9 开关状态(BmsSwSta)ID:0x18F528F4
MOS 开关状态,BMS 以 500ms 的周期主动向外发送保护板部控制开关状态。
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | ChgMosSta | 0 | 1 | 0~1 | 充电 MOS 状态 0:断开 1:闭合 | |||
2 | DchgMosSta | 1 | 1 | 0~1 | 放电 MOS 状态 0:断开 1:闭合 | |||
3 | BalanSta | 2 | 1 | 0~1 | 均衡状态,0:未均衡 1:正在均衡 | |||
4 | HeatSta | 3 | 1 | 0~1 | 加热 MOS 状态,0:断开 1:闭合 | |||
5 | ChgDevPlugSta | 4 | 1 | 0~1 | 充电器状态,0:未插入 1:插入 | |||
6 | ACCSta | 5 | 1 | 0~1 | ACC 状态,0:关闭 1:打开 |
例:0x018F528F4 3D XX XX XX XX XX XX XX
3D 二进制 0011 1101 表示充电 MOS 闭合 放电 MOS 断开 正在均衡 加热 MOS 闭合 充电器插入 ACC 打开
7.0 单体电压(CellVol)ID:0x18E028F4~0x18E628F4
上报所有电池单体电压,帧 ID 范围在 0x18E028F4~0x18E628F4,每帧只表示 4 个单体电压,不足的以 00 补齐。目前最多支持 25串单体电压, 帧 ID 数量随单体数量变化而变化, 如 12 串单体, 则帧 ID 为 0x18E028F4~0x18E228F4 , 17 串单体, 则帧 ID 为 0x18E028F4~0x18E428F4,最后一帧只有一个单体电压,其余以 00 补齐。格式如下:
CAN 帧 ID:0x18E028F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | 单体电压 1 | 0 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
2 | 单体电压 0 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
3 | 单体电压 0 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
4 | 单体电压 0 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
例:
0x18E028F4 AD 0E AB 0E A3 0E A6 0E
AD 0E 第 1 串电压:3757mV AB 0E 第 2 串电压:3755mV A3 0E 第 3 串电压:3747mV A6 0E 第 4 串电压:3750mV
CAN 帧 ID:0x18E128F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | 单体电压 5 | 0 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
2 | 单体电压 0 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
3 | 单体电压 0 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
4 | 单体电压 0 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
例:
0x18E128F4 AC 0E AC 0E A4 0E A7 0E
AC 0E 第 5 串电压:3756mV AC 0E 第 6 串电压:3756mV A4 0E 第 7 串电压:3748mV A7 0E 第 8 串电压:3751mV
CAN 帧 ID:0x18E228F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | 单体电压 9 | 0 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
2 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
3 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
4 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
例:
0x18E228F4 AD 0E AB 0E A3 0E A6 0E
AD 0E 第 09 串电压:3757mV AB 0E 第 10 串电压:3755mV A3 0E 第 11 串电压:3747mV A6 0E 第 12 串电压:3750mV
第 11 页 共 15 页
CAN 帧 ID:0x0x18E328F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | 单体电压 00 | 0 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
2 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
3 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
4 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
例:
0x18E328F4 AC 0E AC 0E A4 0E A7 0E
AC 0E 第 13 串电压:3756mV AC 0E 第 14 串电压:3756mV A4 0E 第 15 串电压:3748mV A7 0E 第 16 串电压:3751mV
CAN 帧 ID:0x18E428F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | 单体电压 00 | 0 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
2 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
3 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
4 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
例:
0x0x18E428F4 AC 0E AC 0E A4 0E A7 0E
AC 0E 第 17 串电压:3756mV AC 0E 第 18 串电压:3756mV A4 0E 第 19 串电压:3748mV A7 0E 第 20 串电压:3751mV
CAN 帧 ID:0x18E528F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | 单体电压 00 | 0 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
2 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
3 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
4 | 单体电压 00 | 00 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
例:
0x18E528F4 AC 0E AC 0E A4 0E A7 0E
AC 0E 第 21 串电压:3756mV AC 0E 第 22 串电压:3756mV A4 0E 第 23 串电压:3748mV A7 0E 第 24 串电压:3751mV
CAN 帧 ID:0x18E628F4
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | 单体电压 00 | 0 | 00 | 0x00000 | 1 | 0 | mV | 单体电压 |
2 | ||||||||
3 | ||||||||
4 |
例:
0x18E628F4 AC 0E XX XX XX XX XX XX
AC 0E 第 25 串电压:3756mV
7.1 控制信息(Ctrl_INFO)ID:0x18F0F428
充放电开关信息为外围设备发送的信息,是由外围设备向 BMS 发送指令已达到配置 BMS 参数的目的。
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | MaskCode | 0 | 8 | 1:允许控制 0:禁止控制 bit0:充电控制 bit1:放电控制 bit2:均衡控制 | ||||
2 | ChgSw | 8 | 8 | 0~1 | 充电开关,0:关闭 1:开启 | |||
3 | DchgSw | 16 | 8 | 0~1 | 放电开关,0:关闭 1:开启 | |||
4 | BanlanSw | 24 | 8 | 0~1 | 均衡开关,0:关闭 1:开启 |
例:0x18F0F428 05 01 01 01 XX XX XX XX
05 二进制 0000 0101 允许充电控制 禁止放电控制 允许均衡控制
01 打开充电开关
01 放电开关控制无效
01 打开均衡开关
7.2 充电请求(BMSChgINFO)ID:0x1806E5F4
充电信息为事件触发式发送,当充电器插入或接收到充电机的报文(0x18FF50E5)时 BMS 以 500ms 的周期发送充电信息,当充电器没有插入时则不发送。注:本帧通信过程中数据采用大端,格式如下:
序号 | 参数 | 起始位 | 位长度 | 范围 | 分辨率 | 偏移量 | 单位 | 备注 |
1 | ChgVol | 0 | 00 | 0x0000 | 0.1 | 0 | V | 充电电压 |
2 | ChgCur | 00 | 00 | 0x0000 | 0.1 | 0 | A | 充电电流 |
3 | ChgDevSw | 32 | 8 | 0~1 | 充电器开关,0:开启 1:关闭 | |||
4 | ChgAndHeat | 40 | 8 | 0~1 | 充电加热模式,0:充电 1:加 热 |
例:0x1806E5F4 03 48 00 C8 00 00 XX XX
03 48 充电电压 84V
00 C8 充电电流 20A
00 充电器开启
00 充电模式