《GB/T 27930-2015》国标协议中报文帧ID该怎样计算
我们首先要了解的信息有以下五点:
1、充电机和BMS之间通信网络采用CAN2.0B通讯协议。
2、在充电过程中,充电机和BMS监测电压、电流和温度等参数,同时BMS管理整个充电过程。
3、充电机和BMS之间的CAN通信网络应由充电机和BMS两个节点组成。
数据信息传输采用低字节先发送的格式。
4、正的的电流表示放电,负的电流表示充电。
5、执行本标准的充电机和BMS宜具备向前兼容性。
1、什么是报文?
一个或多个具有相同参数组编号的“CAN数据帧”
--《GB/T 27930-2015》3.3
2、什么是CAN数据帧?
用于传输数据的CAN协议所必需的有序位域,以帧起始(SOF)开始,帧结束(EOF)结尾。
--《GB/T 27930-2015》3.2
3、一个CAN数据帧包都含什么?
每个CAN数据帧包含一个单一的协议数据单元(PDU),协议数据单元由七部分组成,恩别是优先权、保留位、数据页、PDU格式、PDU待定、源地址和数据域。其中前六部分组成CAN标识符(帧ID)完整的协议数据单元如下:
从上图可以看出协议数据单元由CAN标识符(帧ID)和数据域组成,而标识符由以下部分组成:
P:优先权,从最高0设置到最低7
R:保留位,本协议中默认为0
DP:数据页,本协议中默认为0
PF:PDU格式,用来确定PDU的格式,以及数据与对应的参数组编号
PS:PDU特定格式,PS值取决于PDU格式,本标准中采用PDU1格式,PS值为目标地址
SA:源地址,即此发送报文的源地址
DATA:数据域,若给定参数组数据长度≤8字节,按照第九章规定的报文长度进行传输。若给定参数组数据长度为9-1785字节时,数据传输需多个CAN数据域,通过传输协议功能 的连接管理能力来建立和关闭多包参数组的通信,详见6.5的规定。附图如下
以上引自《GB/T 27930-2015》6.2
充电机和BMS的地址分配如下:
装置 |
首选地址 |
充电机 |
86(56H) |
BMS |
244(F4H) |
由以上信息得知,组成帧ID的29位数据其中R(保留位)、DP(数据页)、PS(目标地址)、SA(源地址)这18位数据是已知数据,我们要得出帧ID只需再确定P(优先权)、PF(PDU格式)两项即可。
同时协议中又指出,PGN的第二个字节为PDU格式(PF)值,高字节和低字节均为00H。那么PF值也是已知数据,所以我们只需要根据协议中给出的报文优先权和PGN(参数组便函)值即可得出帧ID。《GB/T 27930-2015》6.4
下面我们以协议中的第一条报文CHM为例计算它对应的帧ID
从协议中可获取CHM报文相关信息如下:
SA源地址:56H
PS目的地址:F4H
PGN参数组编号:002600H
PF值:PF值为PGN的第二个字节,即26H
DP:0
R:0
P:6
将已知数据填充到相应位以后可得上表第三行,然后将十六进制数据展开为二进制数据可以得到第四行,然后再将29位数据从低位到高位去转换成16进制数据可以得到第5行数据,所以最后CHM的帧ID为1826F456H。
按照上面同样的方法可以得到整个通讯协议中,所有报文的帧ID如下表:
部分报文数据传输长度超过8字节,启动TP.CM协议将数据分包发送,TP.CM协议具体格式在《SAE J1939-21》5.3.10中有详细说明。