ReadDataByIdentifier(0x22)服务
ReadDataByIdentifier服务允许客户端从一个或多个dataIdentifiers标识的服务器请求数据记录值。
客户端请求消息包含一个或多个两字节的dataIdentifier值,用于标识服务器维护的数据记录
允许的dataIdentifier值)。 dataRecord的格式和定义应该是车辆制造商或系统供应商特定的,并且如果服务器支持,可以包括模拟输入和输出信号,数字输入和输出信号,内部数据和系统状态信息。
服务器可以限制车辆制造商和系统供应商同意的可同时请求的数据标识符的数量。
一旦接收到ReadDataByIdentifier请求,服务器将访问由dataIdentifier参数指定的记录的数据元素,并在包含关联的dataRecord参数的单个ReadDataByIdentifier肯定响应中传送它们的值。 请求消息可能包含相同的dataIdentifier多次。 服务器应将每个dataIdentifier作为一个单独的参数对待,并按照请求的频率对每个dataIdentifier的数据进行响应。(请求数据标识符)
数据标识符是一个唯一的、预定义的数字代码,用于表示ECU内部的某项数据或参数。这些数据可以包括诊断故障码(Diagnostic Trouble Codes, DTCs)、实时数据、校准数据等。通过使用0x22服务,诊断工具可以向ECU发送一个包含所需DID的请求,然后ECU会返回相应的数据。
例如,在汽车诊断过程中,技师可能需要查询发动机转速、冷却液温度等相关数据。技师可以使用适当的DID和0x22服务从ECU获取这些信息,以便分析和诊断潜在问题。不同的ECU和车辆制造商可能会有自己特定的数据标识符集合。通常制造商会提供相应的文档,用于查找和解释这些DID。
请求格式
0x22 + 多个ECU请求或单个
正向响应:
负向响应:
支持的否定响应码
例子
如果是负向响应,则 7F 34 F1 90 否定响应码
例子2
The second example demonstrates requesting of multiple dataIdentifiers with a single request (where
dataIdentifier 010A contains engine coolant temperature, throttle position, engine speed, manifold
absolute pressure, mass air flow, vehicle speed sensor, barometric pressure, calculated load value, idle
air control, and accelerator pedal position, and dataIdentifier 0110 contains battery positive voltage