GB/T 27930 -2015电动汽车非车载传导式充电机与BMS之间通信协议解析方法

笔者依据GB/ T27930的说明和在实际应用中获得的CAN报文实例解析该协议

报文组成

该协议的物理层使用的是CAN总线,所以其一定符合基本的CAN要求。CAN数据帧分为标准帧(11位标识符CAN数据)和扩展帧(29位标识符CAN数据)。国标中规定采用该协议的设备都应使用CAN扩展帧,在整个CAN数据帧中,我们只关心其 标识符数据内容发送周期。所以我们只讨论这3个信息点。
GB/T 27930 -2015电动汽车非车载传导式充电机与BMS之间通信协议解析方法_第1张图片
上图中的定义是国标参考SAE J1939制定的,可以参考下面这个链接对SAE J1939的PDU部分做个简单的了解
SAE J1939理解

报文ID

报文的标识符id相当于我们每个人的身份证。在通讯过程中可以通过该信息来区分报文内容。
上面说道了使用该协议的设备必须是CAN扩展帧,也就是29位标识符。包含了上图中的 P(优先权)R(保留位)DP(数据页)PF(PDU格式)PS(PDU特定格式)SA(源地址)
我们在协议中随便找一个数据帧按照上述进行解析看是否和我们通过CAN核读取到的一样。
GB/T 27930 -2015电动汽车非车载传导式充电机与BMS之间通信协议解析方法_第2张图片
我们先分析 CHM报文,由图可知其优先级为 6 转化为二进制为 110b,
而R(保留位)和DP(数据页)在本协议中已经被规定死为0,
PS的值为目标地址,在这条报文中目标地址为BMS系统,固定为F4H
SA为源地址,该条报文下为充电机,固定为56H。

至此我们已经确定了标识符29位中的21位。得到如下信息
18 XX F4 56-----------------------(为16进制数据)
而 PF为 PDU格式信息中的一部分,可以通过上述链接中对SAE J1939的部分得知PF值既为 16进制PGN的中间值,CHM的PGN = 0x002600 ,所以PF = 0x26
从而得到该报文ID为 0x1826F456,按照上述规则可以推出BHM报文ID为0x182756F4
实际情况如下:
在这里插入图片描述
可知我们的推断方式是正确的。
但是上述报文的数据长度都是小于8字节的,如果数据长度大于8字节的报文,协议规定使用组帧报文发送。

在这里插入图片描述
我们就以BCP报文为例解析一下。
在这里插入图片描述
BMS系统向充电机发送一个ID为0x1cec56f4的报文
报文ID 1 2 3 4 5 6 7 8
0x1cec56f4 10 0d 00 02 ff 00 06 00

BYTE1 :固定为 10
BYTE2-3 :帧数据长度,13 = 0DH,小端模式,所以 0d 00
BYTE4 :为数据包个数,13个字节需要分2次发送
BYTE5 :固定为FF
BYTE6-8 :该报文的PGN 00 06 00

充电机回复:
0x1cecf456 111 02 01 ff ff 00 06 00

BYTE1 :固定为 11
BYTE2 :告诉BMS系统,自己已经准备好接受2帧报文的数据了
BYTE3 :告诉BMS系统,自己接受的第一帧报文序号为 01
BYTE4-5 :保留
BYTE6-8 :该报文的PGN 00 06 00

数据传输:
0x1ceb56f4

声明:
为转载文章,侵权删除

你可能感兴趣的:(笔记)