解读国家标准《电动汽车远程服务与管理系统技术规范》三部曲:
系统架构及协议概述: https://blog.csdn.net/XiuHua_Wu/article/details/113530169 车载设备设计规范: https://blog.csdn.net/XiuHua_Wu/article/details/113530895 协议数据包结构及定义(重点):https://blog.csdn.net/XiuHua_Wu/article/details/113732636
本文为国标阅读笔记第三篇:
- 国家标准:《电动汽车远程服务管理系统技术规范》 第三部分:通信协议和数据格式GB/T 32960.3-2016 http://c.gb688.cn/bzgk/gb/showGb?type=online&hcno=674DE45C0AD3DE2CD75B9C4CD8ED57C1
- 建议在阅读本文之前先阅读:车载IoT】国家标准《电动汽车远程服务与管理系统技术规范》:系统架构及协议概述https://blog.csdn.net/XiuHua_Wu/article/details/113530169
- 具体实施时,请仔细阅读国家标准。
文章目录
- 传输规则
- 数据包结构
-
- 格式和定义数据单元
-
- 车辆登录数据格式和定义
- 实时信息报告数据格式和定义
-
- 信息类型标志
- 车辆数据格式及定义
- 驱动电机数据
- 燃料电池数据
- 车辆位置数据
- 极值数据
- 报警数据
- 自定义数据
- 定义档位状态位
- 数据格式和定义
- 平台登录数据格式和定义
- 平台发布数据格式和定义
协议应采用的网联字节序来传递字和双字
起始字节 |
定义 |
数据类型 |
描述及要求 |
0 |
起始符 |
STRING |
固定为ASCII字符### |
2 |
命令单元:命令标识 |
BYTE |
见定义表 |
3 |
命令单元:响应标志 |
BYTE |
见定义表 |
4 |
唯一识别码 |
STRING |
实时传输车辆数据时,应使用车辆VIN,字码应符合GB 16735规定;如果传输其他数据,则使用唯一的自定义编码 |
21 |
加密数据单元 |
BYTE |
0x01:数据不加密。x02:数据经过RSA算法加密。0x03:数据经过AES128位算法加密。xFE:异常。0xFF:无效。其他:预留 |
22 |
数据单元长度 |
WORD |
数据单元长度为数据单元总字节数,有效值范围为0~65531 |
24 |
数据单元 |
- |
数据单元格式和定义定义表 |
倒数第1位 |
校验码 |
BYTE |
采用BCC(不同或验证),验证范围:从命令单元的第一个字节开始,在知道验证码前一个字节之前,验证码占用一个字节,当数据单元加密时,应先加密后验证,先验证后解密 |
编码 |
定义 |
方向 |
0x01 |
车辆登入 |
上行 |
0x02 |
实时信息报告 |
上行 |
0x03 |
上报补发信息 |
上行 |
0x04 |
车辆登入 |
上行 |
0x05 |
平台登入 |
上行 |
0x06 |
平台登出 |
上行 |
0x07~0x08 |
预留终端数据 |
上行 |
0x09~0x7F |
预留上行数据系统 |
上行 |
0x80~0x82 |
预留终端数据 |
下行 |
0x83~0xBF |
预留下行数据系统 |
下行 |
0xC0~0xFE |
平台交换自定义数据 |
自定义 |
答应包定义:
- 命令的主动发起人的响应标志为0xFE表示此包为命令包;当响应标志不是0时xFE被动接受方不应回应。
- 当命令被动接收方的响应标志不是0xFE此包表示为应答包。
- 服务端发送响应时,应更改响应标志,保留报告时间,删除其他报告内容,重新计算验证位置。
编码 |
定义 |
说明 |
0x01 |
成功 |
接收到的信息正确 |
0x02 |
错误 |
设置未成功 |
0x03 |
VIN重复 |
VIN重复错误 |
0xFE |
命令 |
表示数据包是命令包,而不是应答包 |
数据表示内容 |
长度/字节 |
数据类型 |
有效值范围 |
年 |
1 |
BYTE |
0~99 |
月 |
1 |
BYTE |
1~12 |
日 |
1 |
BYTE |
1~31 |
小时 |
1 |
BYTE |
0~23 |
分钟 |
1 |
BYTE |
0~59 |
秒 |
1 |
BYTE |
0~59 |
数据标识内容 |
长度/字节 |
数据类型 |
描述及要求 |
数据采集时间 |
6 |
BYTE[6] |
见时间定义 |
登入流水号 |
2 |
WORD |
车载终端每登入一次,登入流水号自动+1,从1开始循环累加。最大值:65531循环周期:天 |
ICCID |
20 |
STRING |
SIM卡ICCID号(ICCID应为终端从SIM卡获取的值,不应人为填写或修改) |
可充电储能子系统数 |
1 |
BYTE |
可充电储能子系统数n,有效值范围:0~250 |
可充电储能系统编码长度 |
1 |
BYTE |
可充电充能系统编码长度m,有效范围:0~50("0"表示不上传该编码) |
可充电储能系统编码 |
n×m |
STRING |
可充电储能系统编码宜为终端从车辆获取的值 |
:可充电储能子系统指当车辆存在多套可充电储能系统混合使用时,每套可充电储能系统为一个可充电储能子系统
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
数据采集时间 |
6 |
BYTE[6] |
见时间定义 |
信息类型标志(1) |
1 |
BYTE |
见信息类型标志定义 |
信息体(1) |
- |
- |
根据数据类型不同,长度和数据类型不同 |
… |
- |
- |
… |
信息类型标志(n) |
1 |
BYTE |
见信息类型标志定义 |
信息体(n) |
- |
- |
根据数据类型不同,长度和数据类型不同 |
类型编码 |
说明 |
备注 |
0x01 |
整车数据 |
见信息体的整车数据定义 |
0x02 |
驱动电机数据 |
见信息体的驱动电机数据定义(停车充电过程无需传输该数据) |
0x03 |
燃料电池数据 |
见信息体的燃料电池数据定义 |
0x04 |
发动机数据 |
见信息体的发动机数据定义(停车过程无需传输该数据) |
0x05 |
车辆位置数据 |
见信息体的车辆位置数据定义 |
0x06 |
极值数据 |
见信息体的极值数据定义 |
0x07 |
报警数据 |
见信息体的报警数据定义 |
0x08~0x09 |
终端数据预留 |
- |
0x0A~0x2F |
平台交换协议自定义数据 |
- |
0x30~0x7F |
预留 |
|
0x80~0xFE |
用户自定义 |
见信息体的用户自定义 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
车辆状态 |
1 |
BYTE |
0x01:车辆启动状态。0x02:熄火。0x03:其他状态。0xFE:异常。0xFF:表示无效。 |
充电状态 |
1 |
BYTE |
0x01:停车充电。0x02:行驶充电。0x03:未充电状态。0x04:充电完成。0xFE:异常。0xFF:无效。 |
运行模式 |
1 |
BYTE |
0x01:纯电。0x02:混动。0x03:燃油。0xFE:异常。0xFF:无效。 |
车速 |
2 |
WORD |
有效值范围:02200(表示0km/h220km/h)最小计量单元:0.1km/h。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
累计里程 |
4 |
DWORD |
有效值范围:09999999(表示0km999999.9km)。最小计量单元:0.1km。0xFF,0xFF,0xFF,0xFE:异常。0xFF,0xFF,0xFF,0xFF:无效。 |
总电压 |
2 |
WORD |
有效值范围:010000(表示0V1000V)。最小计量单元:0.1V。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
总电流 |
2 |
WORD |
有效值范围:020000(偏移量1000A,表示-1000A+1000A)。最小计量单元:0.1A。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
SOC |
1 |
BYTE |
有效值范围:0100(表示0%100%)。最小计量单元:1%。0xFE:异常。0xFF:无效。 |
DC-DC状态 |
1 |
BYTE |
0x01:工作。0x02:断开。0xFE:异常。0xFF:无效。 |
档位 |
1 |
BYTE |
见档位定义 |
绝缘电阻 |
2 |
WORD |
有效范围060000(表示0kΩ60000kΩ)。最小计量单元:1kΩ |
预留 |
2 |
WORD |
预留位 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
驱动电机个数 |
1 |
BYTE |
有效值1~253 |
驱动电机总成信息列表 |
∑每个驱动电机总成信息长度 |
- |
按驱动电机序号依次排列,每个驱动电机数据格式和定义见《每个驱动电机数据格式和定义》(本文未列出,见国标) |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
燃料电池电压 |
2 |
WORD |
有效值范围:020000(表示0V2000V)。最小计量单元:0.1V。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
燃料电池电流 |
2 |
WORD |
有效值范围:020000(表示0A+2000A)。最小计量单元:0.1A。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
燃料消耗率 |
2 |
WORD |
有效值范围:060000(表示0kg/100km600kg/100km)。最小计量单元:0.01kg/100km。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
燃料电池温度探针总数 |
2 |
WORD |
N个燃料电池温度探针。有效值范围:0~65531。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
探针温度值 |
1×N |
BYTE[N] |
有效值范围:0240(数值偏移量40°C,表示-40°C+200°C)。最小计量单元:1°C。 |
氢系统中最高温度 |
2 |
WORD |
有效值范围:02400(偏移量40°C,表示-40°C200°C)。最小计量单元:0.1°C。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
氢系统中最高温度探针代号 |
1 |
BYTE |
有效值范围:1~252。0xFE:异常。0xFF:无效。 |
氢气最高浓度 |
2 |
WORD |
有效值范围:060000(表示0mg/kg50000mg/kg)。最小计量单元:1mg/kg。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
氢气最高浓度传感器代号 |
1 |
BYTE |
有效值范围:1~252。0xFE:异常。0xFF:无效。 |
氢气最高压力 |
2 |
WORD |
有效值范围:01000(表示0MPa100MPa)。最小计量单元:0.1MPa。 |
氢气最高压力传感器代号 |
1 |
BYTE |
有效值范围:1~252。0xFE:异常。0xFF:无效。 |
高压DC/DC状态 |
1 |
BYTE |
0x01:工作。0x02:断开。0xFE:异常。0xFF:无效。 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
定位状态 |
1 |
BYTE |
【BIT0】0:有效定位;1:无效定位。(当数据通信正常,而不能获取定位信息时,发送最后一次有效定位信息,并将定位状态置为无效。【BIT1】0:北纬;1:南纬。【BIT2】0:东经;1:西经。【BIT3~7】保留 |
经度 |
4 |
DWORD |
以度为单位的纬度值乘以106,精确到百万分之一度 |
纬度 |
4 |
DWORD |
以度为单位的纬度值乘以106,精确到百万分之一度 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
最高电压电池子系统号 |
1 |
BYTE |
有效值范围:1~250。0xFE:异常。0xFF:无效。 |
最高电压电池单体代号 |
1 |
BYTE |
有效值范围:1~250。0xFE:异常。0xFF:无效。 |
电池单体电压最高值 |
2 |
WORD |
有效值范围:015000(表示0V15V)。最小计量单元:0.001V。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
最低电压电池子系统号 |
1 |
BYTE |
有效值范围:1~250。0xFE:异常。0xFF:无效。 |
最低电压电池单体代号 |
1 |
BYTE |
有效值范围:1~250。0xFE:异常。0xFF:无效。 |
电池单体电压最低值 |
2 |
WORD |
有效值范围:015000(表示0V15V)。最小计量单元:0.001V。0xFF,0xFE:异常。0xFF,0xFF:无效。 |
最高温度子系统号 |
1 |
BYTE |
有效值范围:1~250。0xFE:异常。0xFF:无效。 |
最高温度探针序号 |
1 |
BYTE |
有效值范围:1~250。0xFE:异常。0xFF:无效。 |
最高温度值 |
1 |
BYTE |
有效值范围:0250(数值偏移量40°C,表示-40°C+210°C)。最小计量单元:1°C。0xFE:异常。0xFF:无效 |
最低温度子系统号 |
1 |
BYTE |
有效值范围:1~250。0xFE:异常。0xFF:无效。 |
最低温度探针序号 |
1 |
BYTE |
有效值范围:1~250。0xFE:异常。0xFF:无效。 |
最低温度值 |
1 |
BYTE |
有效值范围:0250(数值偏移量40°C,表示-40°C+210°C)。最小计量单元:1°C。0xFE:异常。0xFF:无效 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
最高报警等级 |
1 |
BYTE |
为当前发生的故障中的最高等级值,有效值范围:0~3。0:无故障。1:1级故障,指代不影响车辆正常行驶的故障。2:2级故障,指代影响车辆性能,需驾驶员限制行驶的故障。3:3级故障,为最高级别故障,指代驾驶员应立即停车处理或请求救援的故障具体等级对应的故障内容由厂商自行定义。0xFE:异常。0xFF:无效。 |
通用报警标志 |
4 |
DWORD |
见通用报警标志位定义(本文未列出,具体见国标) |
可充电储能装置故障总数N1 |
1 |
BYTE |
N1个可充电储能装置故障有效值范围:0~252。0xFE:异常。0xFF:无效。 |
可充电储能装置故障代码列表 |
4×N1 |
DWORD |
扩展性数据,由厂商自行定义,可充电储能装置故障个数等于可充电储能装置故障总数N1 |
驱动电机故障总数N2 |
1 |
BYTE |
N2个驱动电机故障有效值范围:0~252。0xFE:异常。0xFF:无效 |
驱动电机故障代码列表 |
4×N2 |
DWORD |
厂商自行定义,驱动电机故障个数等于驱动电机故障总数N2 |
发动机故障总数N3 |
1 |
BYTE |
N3个驱动电机故障,有效值范围:0~252。0xFE:异常。0xFF:无效 |
发动机故障列表 |
4×N3 |
DWORD |
厂商自行定义,发动机故障个数等于驱动电机故障总数N3 |
其他故障总数N4 |
1 |
BYTE |
N4个其他故障,有效值范围:0~252。0xFE:异常。0xFF:无效 |
其他故障代码列表 |
4×N4 |
DWORD |
厂商自行定义,故障个数等于故障总数N4 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
自定义数据长度 |
2 |
WORD |
自定义数据长度n,有效范围1~65531 |
自定义数据 |
1×N |
BYTE[N] |
扩展性数据,由用户自行定义 |
位 |
定义 |
Bit7 |
预留,预留位用0表示 |
Bit6 |
预留,预留位用0表示 |
Bit5 |
1:有驱动力。0:无驱动力。 |
Bit4 |
1:有制动力。0:无制动力。 |
Bit3~0 |
挡位:=0000:空挡。=0001:1挡。=0010:2挡。=0011:3挡。=0100:4挡。=0101:5挡。=0110:6挡。=…。=1101:倒挡。=1110:自动D挡。=1111:停车P。 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
登出时间 |
6 |
BYTE[6] |
见时间定义 |
登出流水号 |
2 |
WORD |
登出流水号与当次登入流水号一致 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
平台登入时间 |
6 |
BYTE[6] |
见时间定义 |
登入流水号 |
2 |
WORD |
下级平台每登入一次,登入流水号自动加1,从1开始循环累加,最大值为65531,循环周期为天 |
平台用户名 |
12 |
STRING |
平台登入用户名 |
平台密码 |
20 |
STRING |
平台登入密码 |
加密规则 |
1 |
BYTE |
0x01:数据不加密。0x02:数据经过RSA算法加密。0x03:数据经过AES128位算法加密。0xFE:异常。0xFF:无效。其他:预留 |
数据表示内容 |
长度/字节 |
数据类型 |
描述及要求 |
登出时间 |
6 |
BYTE[6] |
见时间定义 |
登出流水号 |
2 |
WORD |
登出流水号与当次登入流水号一致 |