[UDS] --- ReadDataByIdentifier 0x22

简介: [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";
相关文章
|
7月前
|
安全
[UDS] --- TesterPresent 0x3E
[UDS] --- TesterPresent 0x3E
144 1
|
7月前
|
传感器 安全 内存技术
[UDS] --- RoutineCommunicationControl 0x31
[UDS] --- RoutineCommunicationControl 0x31
372 1
|
7月前
|
安全
[UDS] --- WriteDataByIdentifier 0x2E
[UDS] --- WriteDataByIdentifier 0x2E
175 0
|
4月前
|
存储 监控 网络协议
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
|
7月前
|
网络协议
攻防世界---misc---神奇的Modbus
攻防世界---misc---神奇的Modbus
|
7月前
|
安全
[UDS] --- CommunicationControl 0x28
[UDS] --- CommunicationControl 0x28
170 0
|
7月前
|
存储 安全
[UDS] --- ECUReset 0x11
[UDS] --- ECUReset 0x11
114 0
|
7月前
|
安全 内存技术
[UDS] --- UDS服务应该支持的NRC
[UDS] --- UDS服务应该支持的NRC
746 0
|
7月前
[UDS] --- UDS概述
[UDS] --- UDS概述
711 0
|
7月前
[UDS] --- DiagnosticSessionControl 0x10 service
[UDS] --- DiagnosticSessionControl 0x10 service
278 0