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

news/2024/11/8 20:37:40/

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由非默认会话模式切换到默认会话模式。

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


http://www.ppmy.cn/news/484326.html

相关文章

湖大CG满分教程:作业训练一编程题9. 二叉树遍历,从前序、中序到后序

【问题描述】 二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,深度遍历有前序、中序以及后序三种遍历方法。 三种基本的遍历思想为: 前序遍历:根结点 ---> 左子树 ---> …

下拉加载刷新

注意传参没有pageNo的话,就不能实现下拉刷新,因为不知道当前要加载哪页的内容 const [list, setList] useState<IgetListUserResponce[data]>(); const [showLoading, setShowLoading] useState(false);const memoState useMemo<{pageNo: number;total: number;ca…

electron 连接打印机打印pdf文件

electron 打印内容 区分系统 类似unix系统的使用 npm包&#xff1a;unix-printwindow系统使用&#xff1a; pdf-to-printer 运行线程 视图线程 函数参数 两个包都提供了print函数来打印文件&#xff0c;配置基本一致&#xff0c;只是参数形式有所不同&#xff0c;pdf-to-pr…

保证水库大坝安全需要做好哪方面的监测

水库安全监测是保证水库大坝安全的重要手段是确保水库大坝安全运行的基础也是做好水库安全管理的重要技术保障。根据《水库大坝安全管理条例》《水库大坝安全监测技术规范》等有关规定&#xff0c;对坝体变形、渗透、应力应变等进行监测&#xff0c;以掌握坝体、坝基和库岸的运…

三网话费充值优惠接口API分享

话费充值接口文档 接口版本&#xff1a;1.0 ―、引言 文档概述 本文档提供话费充值接口规范说明&#xff0c;提供一整套的完整的接入示例(http 接口)供商户参 考&#xff0c;可以帮助商户开发人员快速完成接口开发与联调&#xff0c;实现与话费充值系统的交易互联。 公司官网…

【Flutter——复选框实例代码超详细讲解!】

Flutter——复选框实例代码超详细讲解&#xff01; 文章目录 Flutter——复选框实例代码超详细讲解&#xff01;代码实现效果代码实例代码结构总结 代码实现效果 代码实例 import package:flutter/material.dart; // 导入 Flutter 的核心库void main() {runApp(const MyApp())…

.Net6 WebAPI 手动开启gRPC服务

文章目录 .Net6 WebAPI 手动开启gRPC服务引用包开启服务配置gRPC通道完整代码 总结新建一个Service.cs类&#xff0c;继承自生成的类后&#xff0c;重写处理方法&#xff08;如果没有生成就先编译一下工程文件&#xff09;必须重写proto中定义的所有方法 .Net6 WebAPI 手动开启…

Linux基础服务1——Openssh

文章目录 一、基本简介二、登录示例2.1 当前用户登录2.2 指定用户登录 三、ssh主机密钥四、ssh免密登录五、服务端配置文件5.1 连接端口号5.2 限制只能使用普通用户登录5.3 密钥登录 六、SSH安全注意事项 一、基本简介 常见远程登录工具&#xff1a; telnet&#xff0c;认证明文…