天邦达储能BMS通信协议
天邦达储能BMS通信协议
深圳天邦达科技有限公司
1 协议说明
本通信协议根据YD/T1363.1规范制定,使用串口异步通信模式,8位数据位,1个起始位,1个停止位,无校验位,缺省xx率9600。
2 通信方式
监控系统为分布式结构,监控单元(SU)与监控模块(SM)的通信为主从方式,监控单元为上位机,监控模块为下位机。
通信过程:SU呼叫SM并下发命令,XX收到命令后返回响应信息。500ms内,SU接收不到SM响应信息或响应信息错误,则认为本次通信过程失败。
3 数据帧
3.1 数据帧结构
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
字节数 | 1 | 1 | 1 | 1 | 1 | 2 | LENID/2 | 2 | 1 |
格式 | SOI | VER | ADR | CID1 | CID2 | LENGTH | INFO | CHKSUM | EOI |
表1为传输的数据帧结构。表2是对数据帧各项内容的说明,表3是返回码(RTN)的说明。表1 数据帧结构
表2 数据帧各项具体内容
序号 | 符 号 | 表 示 意 义 | 备注 |
1 | SOI | 起始位标志(START OF INFORMATION) | (7EH) |
2 | VER | 通信协议版本号 | 22H |
3 | ADR | 设备地址(0~15有效),用4位地址拨码开关标识 | 00~0FH |
4 | CID1 | 设备标识码(设备类型描述) | 4AH |
5 | CID2 | 控制标识码(命令类型描述) 返回码RTN(返回码见表3) | SU发出到SM SM返回到SU |
6 | LENGTH | INFO字节长度(包括LENID和LCHKSUM) | |
7 | INFO | 控制数据信息 COMMAND INFO 应答数据信息 DATA INFO | SU发出到SM SM返回到SU |
8 | CHKSUM | 校验和码 | |
9 | EOI | 结束码 | CR (0DH) |
表2中的COMMAND INFO由以下控制命令码组成:
—— COMMAND GROUP:1字节:表示同一类型设备的不同组号;
—— COMMAND ID:1字节:表示同一类型设备相同组内的不同监控点;
—— COMMAND TYPE:1字节:表示不同的遥控命令或历史数据传输中的不同控制命令;
—— COMMAND TIME:7字节:表示时间字段;
—— COMMAND DATAI:含有整型数的命令信息;表2中的DATA INFO由以下应答码组成:
—— DATAI:含有整型数的应答信息;
—— RUNSTATE:设备的运行状态;
—— WARNSTATE:设备的告警状态;
—— DATAFLAG:标识字节;
—— DATATIME:时间字段。
表3 返回码RTN
序号 | RTN值(HEX) | 表示意义 | 备注 |
1 | 00H | 正常 | |
2 | 01H | VER错 | |
3 | 02H | CHKSUM错 | |
4 | 03H | LCHKSUM错 | |
5 | 04H | CID2无效 | |
6 | 05H | 命令格式错 | |
7 | 06H | 无效数据 |
4 数据格式
4.1 数据传输格式
在表1的数据帧结构中,SOI和EOI(SOI=7EH,EOI=0DH)以一个字节传输,其余各项每个字节都是拆成两个字节,每个字节用两个ASCII码表示,即高四位用一个ASCII码表示,低四位用一个 ASCII码表示,传输时先发送高四位的ASCII码,后发送低四位的ASCII码。如CID1=4AH,4的ASCII码是34H,A的ASCII码是41H,传送时顺序发送34H和41H两个字节。
4.2 LENGTH 数据格式
表4为LENGTH的数据格式。
表4 LENGTH 数据格式
高字节 | 低字节 |
校验码LCHKSUM | 长度标示码LENID(表示INFO的传送中ASCII码字节数 |
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
LENGTH共2个字节,LENID表示INFO项的ASCII码字节数,当LENID=0时,INFO由LENID和 LCHKSUM组成,为空,即无该项。LENGTH拆分为四个ASCII码传送,先高字节,后低字节。
校验码的计算:D11D10D9D8+D7D6D5D4+D3D2D1D0,求和后模16余数取反加1。例如 :
INFO项的ASCII码字节数为18,即LENID=0000 0001 0010B。 D11D10D9D8+D7D6D5D4+D3D2D1D0=0000B+0001B+0010B=0011B,模16余数为0011B,
0011B取反加1就是1101B,即LCHKSUM为1101B。
可以得出:LENGTH为1101 0000 0001 0010B,即D012H。
4.3 CHKSUM 数据格式
CHKSUM的计算是除SOI、EOI和CHKSUM外,其他字符按ASCII码值累加求和,所得结果模65536
余数取反加1。CHKSUM拆分四个ASCII码传送,先高字节,后低字节。示例 :
收到或发送的字符序列是:“~20014043E00200FD3BCR”(“~”为SOI,“CR”为EOI),则最后五个字符“FD3BCR”中的FD3B是CHKSUM,计算方法是:
‘2’+‘0’+‘0’+…+‘E’+‘0’+‘0’+‘2’ +‘0’+‘0’
=32H + 30H + 30H + … + 45H + 30H + 30H + 32H + 30H + 30H
= 02c5H
其中字符‘2’的ASCII码值32H,字符‘E’的ASCII码值45H。02C5H模65536余数是02C5H,02C5H取反加1就是FD3BH。
4.4 INFO 数据格式
4.4.1 整型数格式
整型数,INTEGER,2个字节长度,分为2个类型:
—— 有符号整型数,表达的数据范围 –32768 ~ +32767;
—— 无符号整型数,表达的数据范围 0 ~ 65535。整型数拆分成4个ASCII码传送,先高字节,后低字节。
4.4.2 无符号字符型数格式
无符号字符型数,CHAR,1个字节长度,表达的数据范围 0 ~ 255。传输时,拆分成2个ASCII码,先高四位ASCII码,后低四位ASCII码。
4.4.3 整型数传送值与实际值的换算
采用整型数传送遥测数据时,传送值与实际值之间需要进行换算,换算原则如下:
a)电池单体电压:单位mV,无负号整数。
b) 总电压:单位V,无负号整数,传送值=实际值*100,如45.6V,传送值为4560。
c) 温度:单位:摄氏度,有符号整数,传送值=实际值*10,如25摄氏度,传送值为250。
d) 电流值:单位:安,有符号整数,传送值=实际值*100,充电为正,放电为负,如放电12.3安,传送值为1230。
e) 安时量:无符号整数,传送值= 实际值*100,如40.52AH,传送值为4052。
f) 系统参数:无符号整数。
5 通信命令
5.1 获取实时数据
表5是SU发给XX的命令信息,表6是SM收到命令信息后,返回的响应信息。
表5 获取实时数据命令信息
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
字节数 | 1 | 1 | 1 | 1 | 1 | 2 | LENID/2 | 2 | 1 |
格式 | SOI | VER | ADR | 4AH | 42H | LENGTH | COMMAND INFO | CHKSUM | EOI |
注:LENID=02H,COMMAND INFO为1个字节,由COMMAND GROUP组成。此时,具体 COMMAND GROUP固定为01H,表示获取第1组电池遥测数据。
表6 获取实时数据的响应信息
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
字节数 | 1 | 1 | 1 | 1 | 1 | 2 | LENID/2 | 2 | 1 |
格式 | SOI | VER | ADR | 4AH | RTN | LENGTH | DATAINFO | CHKSUM | EOI |
注:DATAINFO由DATAFLAG和DATAI组成,DATAI为电池管理系统遥测内容。
DATAFLAG的说明:
DATAFLAG字节各位描述如下。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
D0:告警标示位,有未上报告警量变化时为1,否则为0。 D4:开关标示位,有未上报开关量变化时为1,否则为0。其它位保留未使用。
表7为DATAI 遥测量各项传送内容:
表7 遥测量各项传送内容
序号 | 内 容 | 字节数 |
1 | 电池组容量(SOC) | 2 |
2 | 电池组总电压 | 2 |
3 | 电池数量 m | 1 |
4 | 电池单体电压1 | 2 |
5 | 电池单体电压2 | 2 |
... | ... | ... |
m+3 | 电池单体电压m | 2 |
m+4 | 环境温度 | 2 |
m+5 | 电池组平均温度 | 2 |
m+6 | MOS温度 | 2 |
m+7 | 电池温度数量 n | 1 |
m+8 | 电池温度1 | 2 |
m+9 | 电池温度2 | 2 |
... | ... | ... |
m+n+7 | 电池温度n | 2 |
m+n+8 | 电池组充、放电电流 | 2 |
m+n+9 | 电池组内阻 | 2 |
m+n+10 | 电池组健康状态SOH | 2 |
m+n+11 | 用户自定义个数=13 | 1 |
m+n+12 | 满充容量 | 2 |
m+n+13 | 剩余容量 | 2 |
m+n+14 | 循环次数 | 2 |
m+n+15 | 电压状态 | 2 |
m+n+16 | 电流状态 | 2 |
m+n+17 | 温度状态 | 2 |
m+n+18 | 报警状态 | 2 |
m+n+19 | FET状态 | 2 |
m+n+20 | 过压保护状态 | 2 |
m+n+21 | 欠压保护状态 | 2 |
m+n+22 | 高压报警状态 | 2 |
m+n+23 | 低压报警状态 | 2 |
m+n+24 | 均衡状态 | 2 |
表8 从m+n+15项开始的状态内容具体注解
内容 | 字节 | 备注 |
电压状态 | 2 | B0:单节过压保护(1 置位,0 清除,下同) B1:单节欠压保护 B2:总电压过压保护 B3:总电压欠压保护 B4:单节高压报警 B5:单节低压报警 B6:总电压高压报警 |
B7:总电压低压报警 B8:压差报警 B9~B14:预留 B15:系统进入休眠状态 | ||
电流状态 | 2 | B0:充电 (1 充电,0 未充电) B1:放电 (1 放电,0 未放电) B2:充电过流保护 B3:短路保护 B4:放电过流 1 保护 B5:放电过流 2 保护 B6:充电电流报警 B7:放电电流报警 B8~B15:预留 |
温度状态 | 2 | B0:充电高温(电芯)保护(1 置位,0 清除,下同) B1:充电低温(电芯)保护 B2:放电高温(电芯)保护 B3:放电低温(电芯)保护 B4:环境高温保护 B5:环境低温保护 B6:功率高温保护 B7:功率低温保护 B8:充电高温(电芯)报警 B9:充电低温(电芯)报警 B10:放电高温(电芯)报警 B11:放电低温(电芯)报警 B12:环境高温报警 B13:环境低温报警 B14:功率高温报警 B15:功率低温报警 |
报警状态 | 2 | B0:压差报警(1 置位,0 清零,下同) B1:充电 FET 损坏报警 B2:外部 SD 卡失效报警 B3:SPI 通信失效报警 B4:EEPROM 失效报警 B5:LED 报警 B6:Buzzer 报警 B7:低电量报警 B8:MOS 高温保护 B9:MOS 高温报警 B10:限流板故障 B11:采样故障 B12:电芯故障 B13:NTC 故障 B14:充电 MOS 故障 B15:放电 MOS 故障 |
FET 状态 | 2 | B0:放电管状态(1 导通,0 关断) B1:充电管状态(1 导通,0 关断) B2:放电管损坏(1 损坏,0 正常) B3:充电管损坏(1 损坏,0 正常) B5-B4:限流模式 B5B4=00:不限流、B5B4=01限流5A、 B5B4=10:限流10A、B5B4=11限流25A B6-B10:预留 B11:LED报警状态(1→开 0→关) B12:蜂鸣器状态(1→开 0→关) B13~B15:预留 |
过压保护状态 | 2 | B0~B15 对应电池 1~16 节 |
欠压保护状态 | 2 | B0~B15 对应电池 1~16 节 |
高压报警状态 | 2 | B0~B15 对应电池 1~16 节 |
低压报警状态 | 2 | B0~B15 对应电池 1~16 节 |
均衡状态 | 2 | B0~B15 对应电池 1~16 节 |