此协议是极空主动均衡保护板RS485/RS232/UART 接口通用协议,波特率为 9600bps。
软件板通用协议
一、概述
此协议是极空主动均衡保护板RS485/RS232/UART 接口通用协议,xx率为 9600bps。
二、帧结构
在通信过程中,保护板始终为从机,远端设备为主机。所有的通信只能是主机发起,从机应答。为了便于区分,约定由主机发出的帧为配置帧,保护板发出的帧为应答帧。
配置帧包含起始位、状态位、命令码、数据长度、数据内容、校验、停止位几个部分。帧结构如下:
起始位 | 状态位 | 命令码 | 数据长度 | 数据内容 | 校验 | 停止位 |
其中:
1)起 始 位:1 字节,表示一帧数据开始,固定为 0xDD;
2)状 态 位:1 字节,状态为 0xA5 表示读取,状态为 0x5A 表示写入。
3)命 令 码:1 字节,在通信过程中通过命令码来区分该配置帧所携带的数据内容,各命令码与所携带的数据对应关系如下:
状态位 | 命令码 | 数据内容 |
0xA5 | 0x03 | 读取基本信息及状态 |
0x04 | 读取电池单体电压 | |
0x05 | 读取保护板硬件版本号 | |
0x06 | 读取保护板用户私有数据 | |
0x5A | 0xE1 | MOS 控制指令 |
4)数据长度:1 字节,表示该帧携带数据的有效长度。
5)数据内容:N 字节,该帧数据所携带的内容,当数据长度为 0 时,无该部分。
6)校 验:2 字节,校验字段为“命令码 + 长度字节 + 数据段内容”,校验方式为上述字段加和结果再取反加 1,高位在前,低位在后。
7)停 止 位:1 字节,表示一帧数据结束,固定为 0x77;
应答帧包含起始位、状态位、命令码、数据长度、数据内容、校验、停止位几个部分。帧结构如下:
起始位 | 命令码 | 状态位 | 数据长度 | 数据内容 | 校验 | 停止位 |
其中:
1)起 始 位:1 字节,表示一帧数据开始,固定为 0xDD;
2)命 令 码:1 字节,是该帧所响应的配置帧的命令码。
3)状 态 位:1 字节,0x00 表示正确,0x80 表示错误。
4)数据长度:1 字节,表示该帧携带数据的有效长度。
5)数据内容:N 字节,该帧数据所携带的内容,当数据长度为 0 时,无该部分。
6)校 验:2 字节,校验字段为“命令码 + 长度字节 + 数据段内容”,校验方式为上述字段加和结果再取反加 1,高位在前,低位在后。
7)停 止 位:1 字节,表示一帧数据结束,固定为 0x77;
三、通信示例
1) 读取基本信息及状态
主 机 发 送:DD A5 03 00 FF FD 77
00 1B 17 00 00 00 02 D0 03 E8 00 00 20 78 00 00 00 00 00 00 10 48 03 0F 02 0B 76 0B 82 | FB FF |
BMS 响 应:DD 03 77
红色为被校验字节,为所有的字节的总和;后面 2 个为校验结果,为前面所有校验数据加和的结果再取反+1。应答帧数据内容结构如下:
数据内容 | 长度 | 说明 |
总电压 | 2 Byte | 单位:10mV;高字节在前,低字节在后。 |
总电流 | 2 Byte | 单位:10mA;通过电流判断电池充放电状态,充电为正,放电为负。 |
剩余容量 | 2 Byte | 单位:10mAh; |
标称容量 | 2 Byte | 单位:10mAh; |
循环次数 | 2 Byte | 单位:次; |
生产日期 | 2 Byte | 采用 2 个字节传送比如 0x2068,其中日期为最低 5 为:0x2028&0x1F = 8 表示日期;月份(0x2068>>5) &0x0f= 0x03 表示 3 月;年份就为 2000+ (0x2068>>9) = 2000 + 0x10 =2016; |
均衡状态 | 2 Byte | 每一个 bit 则表示每一串均衡,0 为关闭,1 为打开 表示 1~16 串 |
均衡状态_高 | 2 Byte | 每一个 bit 则表示每一串均衡,0 为关闭,1 为打开 表示 17~32 串,最高支持 32 串 |
保护状态 | 2 Byte | 每一个 bit 表示一种保护状态,0 为未保护,1 发生保护 详见注 1: |
保留 | 1 Byte | |
剩余电量 | 1 Byte | 表示剩余容量百分比 |
FET 控制状态 | 1 Byte | MOS 指示状态,bit0 表示充电,bit1 表示放电,0 表示 MOS 关闭,1 表示打开 |
电池串数 | 1 Byte | 电池串数 |
NTC 个数 | 1 Byte | NTC 个数 |
N 个NTC 内容 | 2*N Byte | 单位 0.1K 采用绝对温度传输,2731+(实际温度*10),0 度 = 2731 25 度 = 2731+25*10 = 2981; |
注 1:保护状态说明:
BIT0 | 单体过压保护 | BIT 5 | 充电低温保护 | BIT 10 短路保护 |
BIT 1 | 单体欠压保护 | BIT 6 | 放电过温保护 | BIT 11 前端检测 IC 错误 |
BIT 2 | 整组过压保护 | BIT 7 | 放电低温保护 | BIT 12 软件锁定 MOS |
BIT 3 | 整组欠压保护 | BIT 8 | 充电过流保护 | BIT 13~ BIT 15 预留 |
BIT 4 | 充电过温保护 | BIT 9 | 放电过流保护 |
2) 读取电池单体电压
主机发送:DD A5 04 00 FF FC 77
F9 F9
00 1E 0F 66 0F 63 0F 63 0F 64 0F 3E 0F 63 0F 37 0F 5B 0F 65 0F 3B 0F 63 0F 63 0F 3C 0F 66 0F 3D
BMS 响应:DD 04 77
应答帧数据内容结构如下:
数据内容 | 长度 | 数据说明 |
第一串单体电压 | 2Byte | 单位 mV,高位在前 |
第二串单体电压 | 2Byte | 单位 mV,高位在前 |
第三串单体电压 | 2Byte | 单位 mV,高位在前 |
第N 串单体电压 | 2Byte | 单位 mV,高位在前 |
FD E9
00 0A 30 31 32 33 34 35 36 37 38 39
3) 读取保护板硬件软件版本号 主机发送:DD A5 05 00 FF FB 77
BMS 响应:DD 05 77
应答帧数据内容结构如下:
数据长度 N | 数据说明 |
BYTE N | 回复内容为ASCII 码(比如硬件版本为H-XXXX) |
4) 读取保护板用户私有数据
机发发送:DD A5 06 00 FF FA 77
FD E9
00 0A 30 31 32 33 34 35 36 37 38 39
BMS 响应:DD 06 77
应答帧数据内容结构如下:
数据长度 N | 数据说明 |
BYTE N | 回复内容为ASCII 码(比“23562455”) |
5) 控制 MOS 指令
主机发送控制MOS 指令:
主机发送:DD 5A E1 02 00 XX CH CL 77
BMS 响应:DD E1 00 00 CH CL 77
其中 XX 与 MOS 动作对照表如下:
XX 的值 | MOS 的动作 |
0x00 | 解除软件关闭 MOS 管动作 |
0x01 | 软件关闭充电 MOS,解除软件关闭放电 MOS |
0x02 | 软件关闭放电 MOS,解除软件关闭充电 MOS |
0x03 | 软件同时关闭充放电 MOS |
例:主机端发送 DD 5A E1 02 00 02 FF 1B 77 则表示软件关闭放电 MOS;