目录
1、0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)
Service description:
0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)允许客户端写入数据到服务端,这需要在数据标识符所指定的位置实现,该数据标识符可以是保密的也可以不是。
动态定义数据标识符不能够使用该服务。当执行该服务时需要满足哪些条件是车辆制造厂商来制定的。以下情况可能会用到该服务:
— 刷新时写入一些配置信息到服务端(如,VIN号);
— 清除非易失性存储(NVM);
— 重置自学习值;
— 设置选项内容;
2、请求报文格式
2.1 请求报文定义
下表定义了请求报文的格式:
字节序号 | 参数值 | 约定 | 字节值 |
---|---|---|---|
#1 | WriteDataByIdentifier Request SID | M | 0x2E |
#2 #3 | dataIdentifier[] = [ byte#1 (MSB) byte#2] | M M | 0x00 – 0xFF 0x00 – 0xFF |
#4 . . #m+3 | dataRecord[] = [ data#1 . . data#2] | M . . U | 0x00 – 0xFF . . 0x00 – 0xFF |
2.2 请求报文中子函数参数定义
该服务未使用子函数参数。
2.3 请求报文中数据参数定义
该服务在请求报文中的数据参数定义如下表所示:
定义 |
---|
dataIdentifier 该参数表示客户端请求写入数据记录的标识符。 |
dataRecord 该参数表示客户端正在写入与数据标识符相关的数据记录。 |
3、肯定应答报文
3.1 肯定应答报文格式定义
字节序号 | 参数值 | 约定 | 字节值 |
---|---|---|---|
#1 | WriteDataByIdentifier Response SID | M | 0x6E |
#2 #3 | dataIdentifier[] = [ byte#1 (MSB) byte#2] | M M | 0x00 – 0xFF 0x00 – 0xFF |
3.2 肯定应答报文数据参数定义
Definition |
---|
dataIdentifier 请求报文中的数据参数标识符(DID)。 |
4、支持的否定应答码(NRC_)
本服务实施了如下否定响应代码,下表记录了每个否定应答码发生的情况,如果服务端在错误场景使用了该服务,则应使用如下列出的否定响应码。
NRC | 描述 |
---|---|
0x13 | incorrectMessageLengthOrInvalidFormat 请求报文长度不正确时,会发送该NRC |
0x22 | conditionsNotCorrect 服务端的运行条件不满足去执行请求动作时,会发送该NRC |
0x31 | requestOutOfRange 如下情况会发送该NRC: — 服务端不支持请求报文中的dataIdentifier,或者只支持只读dataIdentifier — 请求报文中DID无效 |
0x33 | securityAccessDenied DID是保密的并且服务端处于未解锁状态,会发送该NRC |
0x72 | generalProgrammingFailure 当服务端写入的内存地址报错时,会发送该NRC |
0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)的否定应答码(NRC)具体处理过程。
5、0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)案例说明
Assumptions:
如下案例中,运行0x2E服务(WriteDataByIdentifier)的条件都满足。
案例1中展示了通过2字节大小的DID(F190)写入VIN写入过程。
**Example #1: write dataIdentifier 0xF190 (VIN) **
案例1 0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)的请求报文使用如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | WriteDataByIdentifier Request SID | 0x2E |
#2 #3 | dataIdentifier [ byte#1 ] (MSB) dataIdentifier [ byte#2 ] | 0xF1 0x90 |
#4 | dataRecord [ data#1 ] = VIN Digit 1 = “W” | 0x57 |
#5 | dataRecord [ data#2 ] = VIN Digit 2 = “0” | 0x30 |
#6 | dataRecord [ data#3 ] = VIN Digit 3 = “L” | 0x4C |
#7 | dataRecord [ data#4 ] = VIN Digit 4 = “0” | 0x30 |
#8 | dataRecord [ data#4 ] = VIN Digit 5 = “0” | 0x30 |
#9 | dataRecord [ data#4 ] = VIN Digit 6 = “0” | 0x30 |
#10 | dataRecord [ data#4 ] = VIN Digit 7 = “0” | 0x30 |
#11 | dataRecord [ data#8 ] = VIN Digit 8 = “4” | 0x34 |
#12 | dataRecord [ data#9 ] = VIN Digit 9 = “3” | 0x33 |
#13 | dataRecord [ data#10 ] = VIN Digit 10 = “M” | 0x4D |
#14 | dataRecord [ data#11 ] = VIN Digit 11 = “B” | 0x42 |
#15 | dataRecord [ data#12 ] = VIN Digit 12 = “5” | 0x35 |
#16 | dataRecord [ data#13 ] = VIN Digit 13 = “4” | 0x34 |
#17 | dataRecord [ data#14 ] = VIN Digit 14 = “1” | 0x31 |
#18 | dataRecord [ data#15 ] = VIN Digit 15 = “3” | 0x33 |
#19 | dataRecord [ data#16 ] = VIN Digit 16 = “2” | 0x32 |
#20 | dataRecord [ data#17 ] = VIN Digit 17 = “6” | 0x36 |
案例1 0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)的肯定应答报文见下表,由服务端(ECU)发往客户端:
字节顺序 | Description | 字节值 |
---|---|---|
#1 | WriteDataByIdentifier Response SID | 0x6E |
#2 | dataIdentifier [ byte#1 ] (MSB) | 0xF1 |
#3 | dataIdentifier [ byte#2 ] (LSB) | 0x90 |