【AUTOSAR】UDS协议的代码分析与解读(九)----UDS读取数据2Ah

本文详细介绍了汽车电子控制单元(ECU)的两个诊断服务:8.11读取数据(周期标识符)服务,允许工具请求ECU中周期发送的数据记录;以及8.12动态定义数据标识符服务,允许诊断工具创建自定义数据标识符以便后续读取。服务包括报文格式、响应类型、参数定义和执行规定,涉及数据传输速率、标识符限制及清除机制。
摘要由CSDN通过智能技术生成

8.11 读取数据(周期标识符) Read Data By Periodic Identifier (2Ah)

服务允许诊断工具请求读取ECU中由一个或多个周期数据标识符(periodic Data Identifier)标识 的周期发送的数据记录值

在初始响应报文之后,有两种方式来发送周期数据响应报文给诊断工具。本规范只使用其中的一种 式。

8.11.1 报文格式

表 54 读取数据(周期标识符)服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

2A

#2

TransmissionMode

M

01/02/03/04

#3

PeriodicDataIdentifier[]#1

C

00-FF

#m+2

PeriodicDataIdentifier[]#m

U

00-FF

C如果传输模式(transmission Mode)为send At Slow Rate,send At Medium Ratesend At Fast Rate,第一 个周期数据标识符在请求报文中强制使用。如果传输模式为stop Sending,可以为了终止所有调度中的周期 数据标识符,不使用周期数据标识符,诊断工具也可以明确的定义一个或多个要终止的周期数据标识符。

表 55 读取数据(周期标识符)服务的肯定响应—初始响

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceIdentifier

M

6A

表 56 读取数据(周期标识符)服务的肯定响应—后续响

Byte

Name

Cvt

Value  (Hex)

#1

PeriodicDataIdentifier

M

00-FF

#2

#k+2

DataRecord[]=[

data#1

data#k]

M

U

00-FF

8.11.2 支持的否定响应码

表 57 读取数据(周期标识符)服务的否定响应码

Hex

Cvt

ErrorText

13

M

报文长度错

如果报文长度错误或者诊断工具超过了一次请求周期数据标识符允许的最大 个数,则发送此否定响应码

22

M

条件不满足

如果ECU的操作件不满足执行相应动作的要求, 发送此否定响应码。例如, 如 果诊断工具请求不同传输类型的周期数据标识符而ECU不支持同时进

行多种传输模式。

31

M

请求超出范

下情况时,发送此否定响应码:

1.设备不支任意一个请求的周期数据标识符值;

2.设备在当前会话下不支持任意一个请求的周期数据标识符值;

2.设备不支持规定的传输模式。

8.11.3 参数定义

传输模式”  (transmissionMode)定义见表58

58读取数据(周期标识符)服务参数定义

Hex

Description

Cvt

01

Send At Slow Rate

此参数规定了ECU须在低速下发送要求的数据记录信息来响应请求报文。传输模 式参数slow规定了重复的速率,此值由h事业部建立并预定义在ECU中。

U

02

Send At Medium Rate

此参数规定了ECU须在中速下发送要求的数据记录信息来响应请求报文。传输模 式参数medium规定了重复的速率,此值由h事业部建立并预定义在ECU中。

U

03

Send At Fast Rate

此参数规定了ECU须在高速下发送要求的数据记录信息来响应请求报文。传输模 式参数fast规定了重复的速率,此值由h事业部建立并预定义在ECU中。

U

04

stopSendingECU终止发送周期性/重复性的肯定响应报文。

仅在ECU支持至少一种其它传模式时(低速率发送,中速率发送,高速率 发送),终止发送才要求被ECU支持。

C

注: 周期数据标识符为1字节数据, 其是F200h~F2FFh数据标识的低字节, 此范围是特地预留给该服务的。例

如:如果周期数据标识符为E3h,则实际的数据标识符为F2E3h

8.11.4 执行规定

本规范规定整个肯定响应报文长度不会超过一帧报文所能容纳的长度。

h事业部和系统供应商协定来限制ECU同时支持的周期数据标识符数量。超出最大数量的限制将 导致否响应并且不发送请求中的任何一个周期标识符对应的数据。在一个请求报文中不允许出现重复 相同的周标识符, 如果诊断工具违背了这一规则,ECU应该只接收其中的一个。

由周期数据标识符组成的数据标识符需被通过数据标识符读数据服务(22h服务) 支持。

8.12 动态定义数据标识符 Dynamically Define DataIdentifier (2Ch)

此服务允许诊断工具在ECU态定义一个数据标识符,此后该数据标识符可以被读取数据服务 22h或读取数据(周期标识符) 2Ah所读取。

此服务的目的是提供给诊断工具组合一个或多个数据为一个数据集的能力。

可以通源数据标识符、内存地址或两种方式的组合来定义一组数据,本规范只定义了第一种方式。 动态定义数据标识符将会包含一个串联的数据参数定义

8.12.1 报文格式

表 59 动态定义数据标识符服务的请求报文—定义标识符

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

2C

#2

Sub-Function=[

DefineByIdentifier]

M

01

#3#4

dynamicallyDefinedDataIdentifier[]=[

byte#1(MSB)

byte#2(LSB)]

M

F2,F3

00-FF

#5

#6

sourceDataIdentifier[]#1=[

byte#1(MSB)

byte#2(LSB)]

M

00-FF

#7

positionInSourceDataRecord#1

M

01-FF

#8

memorySize#1

M

00-FF

#n-3

#n-2

sourceDataIdentifier[]#m=[

byte#1(MSB)

byte#2(LSB)]

U

00-FF

#n- 1

positionInSourceDataRecord#m

U

01-FF

#n

memorySize#m

U

00-FF

表 60 动态定义数据标识符服务的请求报文—清除标识符

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

2C

#2

Sub-Function=[

clearDynamicallyDefinedDataIdentifier]

M

03

#3

#4

dynamicallyDefinedDataIdentifier[]=[

byte#1(MSB)

byte#2(LSB)]

C

F2,F3

00-FF

C此参数的存在要求ECU清除包含byte#1byte#2的动态定义数据标识符。如果参数不存 在则清除ECU中所有的动态定义数据标识符。

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceIdentifier

M

6C

#2

DefinitionType=[definitionType]

M

01,03

#3

#4

dynamicallyDefinedDataIdentifier[]=[

byte#1(MSB)

byte#2(LSB)]

C

F2,F3

00-FF

C:如果请求报文中包含参数动态定义数据标识符,此参数存在,否则不允许包含此参数。

8.12.2 支持的否定响应码

62 动态定义数据标识符服务的否定响应码

Hex

Cvt

ErrorText

12

M

功能不支持

如果子功能参数不支持,发送此否定响应码。

31

M

请求超出范

如下况时,发送此否定响应码:                                        1.请求报文中的任何数据标识符(动态定义数据标识符或任何源数据标识符)/无效;                                                           2.“positionInSourceDataRecord不正确(小于1或大于ECU允许的最大值);     3.请求报文中的某内存地址ECU不支持

4.规定的内存大小无效;

5.组合的动态数据标识符中的数据数量超过ECU允许的最大值;

13

M

报文长度错

如果报文长度错误,发送此否定响应码

22

U

条件不满

如果ECU的操作条件不满足执行相应动作的要求,发送此否定响应码。

8.12.3 参数定义

表 63 动态定义数据标识符服务的子功

Hex

Description

Cvt

01

defineByIdentifier

此值用来向ECU指明通过数据标识符定义动态数据标识符

M

03

clearDynamicallyDefinedDataIdentifier

此值用来清除指定的动态数据标识符。注意: ECU应肯定响应诊断工具的清除请

求, 即使请求时指定的动态数据标识符不存在。然而, 指定动态数据标识符需 有效范围(F200h-F3FFh)

M

8.12.4 执行规定

以下任一情况发生时, 动态定义的标识符将失效:

a)收到清除动态标识符的指令;

b) ECU硬件或者软件复位;

c)由于任何原因, ECU由非默认会话模式切换到默认会话模式。

为了避免错误并降低复杂度,新定义的标识符不允许嵌套参考另一个动态定义的标识符。如果指定 的动态标识符在请求时正在被周期性(按照请求的时间) 报告, 动态数据标识符应先被终止然后再被清 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值