[UDS] --- ReadDataByIdentifier 0x22

2023-10-27 15:12

本文主要是介绍[UDS] --- ReadDataByIdentifier 0x22,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 0x22功能描述

根据ISO14119-1标准中所述,诊断服务22主要用于Client向Server(ECU)通过DID的方式读取相关的数据。这些数据可以输入输出的数字信号,模拟信号,内部数据以及其他的系统状态信息。

2 0x22 应用场景

一般而言,对于22诊断服务,主要应用场景为以下场合:

读取当前ECU的序列号,版本号等;
标定成功后读取内部标定结果等;
读取当前ECU所处在的Session,内部状态,Snapshot Data等;
其他需要读取内部相关参数的场合;
上述这些应用场景较为常见,除此以外,当然还有很多面向ECU内部测试的应用场合,这里就不一一列举。

3 0x22服务请求

服务请求是Client发送给到Server的诊断服务指令。其中Client可以理解为Tester,Server可以理解为ECU节点。

3.1 请求格式

按照ISO14229-1标准所述,如下图1所示:
在这里插入图片描述
DID占2字节,取值范围为0x00-0xFF,根据ISO14229-1规范,定义了诸多只能用于特定场合的DID,也就意味着大家都不能随意乱用DID,在使用DID Number应充分考虑到14229的要求,防止出现跟客户扯皮的现象。

如下图所示简要列举了较为常见的DID种类及其含义:
在这里插入图片描述

4 请求和响应

4.1 Single DID Format请求与正响应

以读取单个DID F1 90 (VIN码)为例,其对应的诊断请求实例如下图所示:
在这里插入图片描述
特别需要注意的是22诊断并不存在Subfunction。

单DID(F1 90)请求示例所对应的正响应:
在这里插入图片描述

4.2 Multiple DID Format请求与正响应

既然存在单个DID读取,自然也就存在Multiple DID读取数据的操作,如下图5所示为同时读取多个DID(01 0A + 01 10)的22诊断服务请求实例:
在这里插入图片描述
当然多DID读取时表示的是超过一个DID以上的22诊断读取请求,因为个数不受限制。

谈到22服务的多DID读取,这边也可以拓展下Composite DID的使用,即通过读取一个DID便可以将map至该DID的多个DID一并读取出来,这样做的好处就是可以通过某一DID一次性获取其余已存在的DID的值,其软件实现也完全可通过配置来实现。

多DID(01 0A + 01 10)请求示例所对应的正响应:
在这里插入图片描述
在这里插入图片描述

4.3 0x22负响应

负响应的诊断格式:7F +SID + NRC。对于0x22支持的负响应如下表:
在这里插入图片描述

  • 例如当尝试读取F190的DID值且当前车速条件不满足,此时Client发送诊断指令"22 F1 90"请求Server读取数据,Server将会回复“7F 22 22”来告诉请求者当前读取数据的条件不满足,请再次检查读取该DID的条件。
  • 当发送报文长度或者格式不对时,则Server会回复"7F 22 13";
  • 当诊断请求的DID太多导致超出了传输层的限定时,则Server会回复”7F 22 14“;
  • 当诊断请求DID不存在或者在当前Session中不支持时,则Server就会回复“7F 22 31”;
  • 当Server在发生复位前处于security lock状态,那么此时Server则会回复"7F 22 33";

这篇关于[UDS] --- ReadDataByIdentifier 0x22的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/286501

相关文章

车载测试之UDS诊断协议

什么是UDS诊断 也被称为离线诊断或者增强型诊断,面向汽车上的所有ECU的诊断,可以通过UDS进行读取、写入ECU运行时的一些数据,刷写ECU、获取故障信息等,UDS是一套统一的诊断服务命令,分为6大类26个服务 26个诊断服务 UDS中的26个服务是规定在ISO的14229-1协议中 诊断和通信管理功能单元 故障码传输功能单元 数据传输类功能单元 输入输出控制功能单元

UDS报文-数据参数操作 [0x22] [0x2E]

22 (读取DID) 请求格式 字节编号参数名称data描述1Read DID0X22读取DID2DID Hight0X00~0XFF数据ID 高字节3DID Low0X00~0XFF数据ID 低字节 肯定应答格式 字节编号参数名称data描述1Ask Read DID0X62响应标识2DID Hight0X00~0XFF数据ID 高字节3DID Low0X00~0XFF数据ID 低字节4

基于UDS的Flash 刷写——BootLoad刷写流程详解

从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 流程概述UDS流程详解释前编程①诊断会话控制 - 切换到扩展会话(10 03)②例程控制-预编程条件检查(31 01 02 03)③DTC设置控制 - 关闭DTC(85 02)④通讯控制 -关闭收发(28 01 03) 主编程⑤诊断会话控制 - 切换到扩展会话(10 02

UDS诊断系列之十九 读取故障码(DTC)

一、读取符合条件的DTC数量 通过调用19服务的01子功能,我们可以轻松地读取符合特定条件的故障码数量。重要的是要意识到,此功能仅提供故障码的数量,而不包含任何额外的信息。这意味着,虽然你可以获得故障码的总数,但不会得到关于这些故障码的详细描述或其他相关数据。 1.请求报文 该子功能也比较简单,请求格式如下: 该子功能的请求非常简洁,仅包含三个字节。以下是请求格式的详细说明: 服务编号:

UDS 诊断 - ReadScalingDataByIdentifier(按标识符读取换算数据)(0x24)服务

UDS 诊断服务系列文章目录 诊断和通信管理功能单元 UDS 诊断 - DiagnosticSessionControl(诊断会话控制)(0x10)服务 UDS 诊断 - ECUReset(ECU重置)(0x11)服务 UDS 诊断 - SecurityAccess(安全访问)(0x27)服务 UDS 诊断 - CommunicationControl(通信控制)(0x28)服务 UDS 诊断

汽车的UDS诊断02

UDS的不同服务: 1)物理寻址和功能寻址 can总线上往往有多个ECU,诊断设备可以和某个ECU通信,也可以和多个ECU通信,通过物理寻址和功能寻址来解决这个问题,只针对请求报文: 物理寻址:就是诊断仪与ECU之间点对点通信 功能寻址:就是诊断仪与多个ECU之间一对多信 我们的诊断报文通常会有3个诊断ID(在报文帧中的仲裁场中),物理请求(物理寻址)报文ID,功能请求(功能寻址)报文I

汽车的UDS诊断01

UDS(Unified Diagnostic Services):ISO14229中定义了汽车通用诊断协议;ISO15765规定了帧的格式; 1)UDS中的四种帧 UDS中的四种帧:单帧、首帧、流空帧、连续帧                                                              图1

UDS服务——TransferData (0x36)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍TransferData (0x36)—— 数据传输,用于下载/上传数据时用的,数据的传输方向由不同的服务控制:0x34服务表示下载,0x35服务表示上传。通过阅读本文,希望能对你有所帮助。 文章目录 诊断协议那些事儿传输数据服务介绍一、服务请求报文定义blockSequenceCounter:数据块顺序计数值transferReq

车载学习:UDS诊断、ECU刷写、OTA升级、Tbox测试、CANoe实操

每天的直播时间: 周一至周五:20:00-23:00 周六与周日:9:00-12:00,14:00-17:00 TBOX  深圳  涉及过T-BOX测试吗Ota升级涉及的台架环境是什么样的?上车实测之前有没有一个仿真环境台架环境都什么零部件T-BOX了解多少Linux和shell有接触吗 单片机uds'诊断是在实车上座的吗 uds在实车上插的那口 诊断仪

UDS——2F服务:输入输出控制

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍输入输出控制服务下的2F服务InputOutputControlByIdentifier,该服务主要在车身域比较常见,比如车窗控制,传感器开关、执行器控制等。 参考文章: 数据传输功能单元——DID参数定义 22服务-ReadDataByIdentifier 2E服务-WriteDataByIdentifier 文章目录 诊