【ISO14229_UDS_0x2E服务详解】

1、0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)

  Service description:
  0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)允许客户端写入数据到服务端,这需要在数据标识符所指定的位置实现,该数据标识符可以是保密的也可以不是。
  动态定义数据标识符不能够使用该服务。当执行该服务时需要满足哪些条件是车辆制造厂商来制定的。以下情况可能会用到该服务:
  — 刷新时写入一些配置信息到服务端(如,VIN号);
  — 清除非易失性存储(NVM);
  — 重置自学习值;
  — 设置选项内容;

2、请求报文格式

2.1 请求报文定义

  下表定义了请求报文的格式:

字节序号参数值约定字节值
#1WriteDataByIdentifier Request SIDM0x2E

#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 肯定应答报文格式定义

字节序号参数值约定字节值
#1WriteDataByIdentifier Response SIDM0x6E

#2
#3
dataIdentifier[] = [
        byte#1 (MSB)
        byte#2]

M
M

0x00 – 0xFF
0x00 – 0xFF

3.2 肯定应答报文数据参数定义

Definition
dataIdentifier
请求报文中的数据参数标识符(DID)。

4、支持的否定应答码(NRC_)

  本服务实施了如下否定响应代码,下表记录了每个否定应答码发生的情况,如果服务端在错误场景使用了该服务,则应使用如下列出的否定响应码。

NRC描述
0x13incorrectMessageLengthOrInvalidFormat
请求报文长度不正确时,会发送该NRC
0x22conditionsNotCorrect
服务端的运行条件不满足去执行请求动作时,会发送该NRC
0x31requestOutOfRange
如下情况会发送该NRC:
— 服务端不支持请求报文中的dataIdentifier,或者只支持只读dataIdentifier
— 请求报文中DID无效
0x33securityAccessDenied
DID是保密的并且服务端处于未解锁状态,会发送该NRC
0x72generalProgrammingFailure
当服务端写入的内存地址报错时,会发送该NRC

  0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)的否定应答码(NRC)具体处理过程。
WriteDataByIdentifier服务的NRC处理

5、0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)案例说明

  Assumptions:
  如下案例中,运行0x2E服务(WriteDataByIdentifier)的条件都满足。
  案例1中展示了通过2字节大小的DID(F190)写入VIN写入过程。
**Example #1: write dataIdentifier 0xF190 (VIN) **
  案例1 0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)的请求报文使用如下,由客户端发向服务端(ECU):

字节顺序Description字节值
#1WriteDataByIdentifier Request SID0x2E
#2
#3
dataIdentifier [ byte#1 ] (MSB)
dataIdentifier [ byte#2 ]
0xF1
0x90
#4dataRecord [ data#1 ] = VIN Digit 1 = “W”0x57
#5dataRecord [ data#2 ] = VIN Digit 2 = “0”0x30
#6dataRecord [ data#3 ] = VIN Digit 3 = “L”0x4C
#7dataRecord [ data#4 ] = VIN Digit 4 = “0”0x30
#8dataRecord [ data#4 ] = VIN Digit 5 = “0”0x30
#9dataRecord [ data#4 ] = VIN Digit 6 = “0”0x30
#10dataRecord [ data#4 ] = VIN Digit 7 = “0”0x30
#11dataRecord [ data#8 ] = VIN Digit 8 = “4”0x34
#12dataRecord [ data#9 ] = VIN Digit 9 = “3”0x33
#13dataRecord [ data#10 ] = VIN Digit 10 = “M”0x4D
#14dataRecord [ data#11 ] = VIN Digit 11 = “B”0x42
#15dataRecord [ data#12 ] = VIN Digit 12 = “5”0x35
#16dataRecord [ data#13 ] = VIN Digit 13 = “4”0x34
#17dataRecord [ data#14 ] = VIN Digit 14 = “1”0x31
#18dataRecord [ data#15 ] = VIN Digit 15 = “3”0x33
#19dataRecord [ data#16 ] = VIN Digit 16 = “2”0x32
#20dataRecord [ data#17 ] = VIN Digit 17 = “6”0x36

  案例1 0x2E服务(WriteDataByIdentifier,按数据标识符写入数据服务)的肯定应答报文见下表,由服务端(ECU)发往客户端:

字节顺序Description字节值
#1WriteDataByIdentifier Response SID0x6E
#2dataIdentifier [ byte#1 ] (MSB)0xF1
#3dataIdentifier [ byte#2 ] (LSB)0x90

返回UDS诊断服务功能单元介绍目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值