【ISO14229_UDS_0x22服务详解】

1、0x22服务(ReadDataByIdentifier,按数据标识符读取数据服务)

  Service description:
  0x22服务(ReadDataByIdentifier,按数据标识符读取数据服务)允许客户端从服务端中定义的一个或者多个数据标识符中请求数据记录值。
  客户端请求消息包含了一个或者多个两个字节的数据标识符值,其表示服务端所维持的数据记录值。数据记录值的格式和定义应该由车辆制造厂商或者系统供应商所指定,这些数据记录值可能会包含模拟量输入和输出信号,数字输入和输出信号,内部数据和系统状态信息。
  服务端可能会限制同时请求的数据标识符数量,首先需要由车辆制造厂商和系统供应商商讨决定。
  一旦接收到0x22服务(ReadDataByIdentifier,按数据标识符读取数据服务)的请求消息,服务端应该访问由数据标识符参数指定数据元素记录值,并且在单个0x22服务肯定应答报文中去传输他们的值。请求报文中可能会多次包含同一个DID值,服务端应该将这些重复的DID看作独立的DID并答复。

2、请求报文格式

2.1 请求报文定义

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

字节序号参数值约定字节值
#1ReadDataByIdentifier Request SIDM0x22

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

M
M

0x00 – 0xFF
0x00 – 0xFF
.
.
.
.
.
.
.
.

#n-1
#n
dataRecord[] = [
        byte#1
        byte#2]

U
U

0x00 – 0xFF
0x00 – 0xFF

2.2 请求报文中子函数参数定义

  该服务未使用子函数参数。

2.3 请求报文中数据参数定义

  该服务在请求报文中的数据参数定义如下表所示:

定义
dataIdentifier(#1 to #m)
该参数表示客户端请求读取数据记录的标识符。

3、肯定应答报文

3.1 肯定应答报文格式定义

字节序号参数值约定字节值
#1ReadDataByIdentifier Response SIDM0x62

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

M
M

0x00 – 0xFF
0x00 – 0xFF

#4
.
.
#(k-1)+4
dataIdentifier[]#1 = [
        data#1
        .
        .
        data#k ]

M
.
.
U

0x00 – 0xFF
.
.
0x00 – 0xFF
.
.
.
.
.
.
.
.

#n-(o-1)-2
#n-(o-1)-1
dataIdentifier[]#m = [
        byte#1 (MSB)
        byte#2]

M
M

0x00 – 0xFF
0x00 – 0xFF

#n-(o-1)
.
.
#n
dataIdentifier[]#m = [
        data#1
        .
        .
        data#o ]

U
.
.
U

0x00 – 0xFF
.
.
0x00 – 0xFF

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

Definition
dataIdentifier (#1 to #m)
请求报文中的数据参数标识符(DID)。
dataRecord (#1 to #k/o)
0x22服务(ReadDataByIdentifier)肯定应答报文中提供客户端数据记录的值,数据具体内容由车辆制造厂商制定。

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

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

NRC描述
0x13incorrectMessageLengthOrInvalidFormat
请求报文长度不正确时,会发送该NRC
0x14responseTooLong
响应报文的总长度超出了底层传输协议层的限制时(如单条请求消息中出现了多个DID组合),会发送该NRC
0x22conditionsNotCorrect
服务端的运行条件不满足去执行对应动作时,会发送该NRC
0x31requestOutOfRange
设备不支持所请求的DID、当前会话层不支持所请求的DID、请求的动态DID还没有被分配,会发送该NRC
0x31securityAccessDenied
至少有一个DID是保密的并且服务端处于未解锁状态,会发送该NRC

  0x22服务(ReadDataByIdentifier)的否定应答码(NRC)具体处理过程。

在这里插入图片描述

5、0x22服务(根据标识符读取数据服务)案例说明

  Assumptions:
  如下案例中,运行0x22服务(ReadDataByIdentifier)的条件都满足。
  案例1中读取了2字节大小的DID(F190),其包含了车架号(VIN)信息。
  案例2中示例了单条请求包含了多个DID的情况(0x10A包含了发动机冷却液温度,节气门位置,发动机转速,歧管绝对压力,空气流量,车速,大气压,计算负载值,怠速空气控制,加速踏板位置以及电池电压)。
例1:read single dataIdentifier 0xF190 (VIN number)
  案例1 0x22服务(根据标识符读取数据服务)的请求报文使用如下,由客户端发向服务端(ECU):

字节顺序Description字节值
#1ReadDataByIdentifier Request SID0x22
#2dataIdentifier [ byte#1 ] (MSB)0xF1
#3dataIdentifier [ byte#2 ]0x90

  案例1 0x22服务(根据标识符读取数据服务)的肯定应答报文见下表,由服务端(ECU)发往客户端:

字节顺序Description字节值
#1ReadDataByIdentifier Response SID0x62
#2dataIdentifier [ byte#1 ] (MSB)0xF1
#3dataIdentifier [ byte#2 ]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

例2:Read multiple dataIdentifiers 0x010A and 0x0110
  案例2 0x22服务(根据标识符读取数据服务)的请求报文使用如下,由客户端发向服务端(ECU):

字节顺序Description字节值
#1ReadDataByIdentifier Request SID0x22
#2dataIdentifier#1 [ byte#1 ] (MSB)0x01
#3dataIdentifier#1 [ byte#2 ]0x0A
#4dataIdentifier#2 [ byte#1 ] (MSB)0x01
#5dataIdentifier#2 [ byte#2 ]0x10

  案例2 0x22服务(根据标识符读取数据服务)的肯定应答报文见下表,由服务端(ECU)发往客户端:

字节顺序Description字节值
#1ReadDataByIdentifier Response SID0x62
#2dataIdentifier [ byte#1 ] (MSB)0x01
#3dataIdentifier [ byte#2 ] (LSB)0x0A
#4dataRecord [ data#1 ] = ECT0x57
#5dataRecord [ data#2 ] = TP0x30
#6dataRecord [ data#3 ] = RPM0x4C
#7dataRecord [ data#4 ] = RPM0x30
#8dataRecord [ data#4 ] = MAP0x30
#9dataRecord [ data#4 ] = MAF0x30
#10dataRecord [ data#4 ] = VSS0x30
#11dataRecord [ data#8 ] = BARO0x34
#12dataRecord [ data#9 ] = LOAD0x33
#13dataRecord [ data#10 ] = IAC0x4D
#14dataRecord [ data#11 ] = APP0x42
#15dataIdentifier [ byte#1 ] (MSB)0x01
#16dataIdentifier [ byte#2 ] (LSB)0x10
#17dataRecord [ data#1 ] = B+0x8C

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值