Loading

本篇文章主要介绍在ISO 14229-1标准中定义的UDS服务——$2E WriteDataByIdentifier,其为Tester提供了向目标ECU请求写入指定数据记录到指定DID的能力。

1 服务介绍

$2E WriteDataByIdentifier服务允许Tester向ECU写入指定数据记录到指定DID所存储的位置,该DID可以是非保密或保密的。出于安全原因,ECU可能会限制或禁止对某些DID的写入,这些DID由系统供应商和车辆制造商定义为只读DID。

$2E服务不支持动态DID,执行该服务时需要满足的条件由车辆制造商规定。以下情况可能会用到该服务:

  • 将配置信息刷写到ECU(例如VIN码)
  • 清除NVM数据
  • 重置自学习值
  • 设置选项内容

2 服务数据格式

2.1 请求数据格式

以下是$2E服务的请求数据格式:

字节序参数字节值说明
#Byte1WriteDataByIdentifier SID0x2E必选
#Byte2

#Byte3
dataIdentifier[] = [byte#1 : byte#2](MSB)0x00 – 0xFF
0x00 – 0xFF
必选
#Byte4

#ByteM+3
dataRecord[] = [data#1 : data#M]0x00 – 0xFF

0x00 – 0xFF
必选

2.1.1 dataIdentifier

dataIdentifier参数表示Tester向ECU请求写入数据记录的标识符

2.1.2 dataRecord

dataRecord参数表示Tester向ECU请求写入的数据记录

2.2 肯定响应数据格式

以下是$2E服务的肯定响应数据格式:

字节序参数字节值说明
#Byte1WriteDataByIdentifier SID + 0x400x6E必选
#Byte2

#Byte3
dataIdentifier[] = [byte#1 : byte#2](MSB)0x00 – 0xFF
0x00 – 0xFF
必选

2.2.1 dataIdentifier

dataIdentifier是对应$2E服务请求报文中的dataIdentifier参数回显。

2.3 否定响应数据格式

以下是$2E服务的否定响应数据格式:

字节序参数字节值说明
#Byte1Negative Response SID0x7F必选
#Byte2WriteDataByIdentifier SID0x2E必选
#Byte3NRCsupportedNRC必选

supportedNRC的可选值如下表所示:

supportedNRCNRC define描述
0x13incorrectMessageLengthOrInvalidFormat诊断请求指令的长度或格式不对
0x22conditionsNotCorrect执行诊断的条件不满足
0x31requestOutOfRange诊断请求参数超出范围或DID/RID不支持
0x33securityAccessDenied不满足安全策略
0x72generalProgrammingFailure擦除或刷写内存时错误

3 服务通信示例

3.1 写入DID 0xF190(VIN)

本例展示了Tester如何通过$2E服务向ECU写入DID 0xF190的值,其包含了VIN码信息,其中,存在以下条件:

  • sub-function bit7: SPR = 0

3.1.1 请求报文

字节序参数字节值
#Byte1WriteDataByIdentifier SID0x2E
#Byte2dataIdentifier[byte#1]0xF1
#Byte3dataIdentifier[byte#2]0x90
#Byte4dataRecord[data#1] = VIN 1 = “W”0x57
#Byte5dataRecord[data#2] = VIN 2 = “0”0x30
#Byte6dataRecord[data#3] = VIN 3 = “L”0x4C
#Byte7dataRecord[data#4] = VIN 4 = “0”0x30
#Byte8dataRecord[data#5] = VIN 5 = “0”0x30
#Byte9dataRecord[data#6] = VIN 6 = “0”0x30
#Byte10dataRecord[data#7] = VIN 7 = “0”0x30
#Byte11dataRecord[data#8] = VIN 8 = “4”0x34
#Byte12dataRecord[data#9] = VIN 9 = “3”0x33
#Byte13dataRecord[data#10] = VIN 10 = “M”0x4D
#Byte14dataRecord[data#11] = VIN 11 = “B”0x42
#Byte15dataRecord[data#12] = VIN 12 = “5”0x35
#Byte16dataRecord[data#13] = VIN 13 = “4”0x34
#Byte17dataRecord[data#14] = VIN 14 = “1”0x31
#Byte18dataRecord[data#15] = VIN 15 = “3”0x33
#Byte19dataRecord[data#16] = VIN 16 = “2”0x32
#Byte20dataRecord[data#17] = VIN 17 = “6”0x36

3.1.2 肯定响应报文

字节序参数字节值
#Byte1WriteDataByIdentifier SID + 0x400x6E
#Byte2dataIdentifier[byte#1]0xF1
#Byte3dataIdentifier[byte#2]0x90

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

👤本站访客数: 👁️本站访问量: