UDS 诊断教程 (四)
这篇文章介绍一下 UDS 的第二类诊断服务,即 Data Transmission (数据传输)。这类诊断服务包括
以下 SID:
ReadDataByIdentifier (0x22)
ReadMemoryByAddress (0x23)
ReadScalingDataByIdentifier (0x24)
ReadDataByPeriodicIdentifier (0x2A)
DynamicallyDefineDataIdentifier (0x2C)
WriteDataByIdentifier (0x2E)
WriteMemoryByAddress (0x3D)
通常,0x22 和 0x2E 成对使用,0x23 和 0x3D 成对使用,这几个服务用于诊断数据的基本读写操作。
0x24,0x2A,0x2C 是一些特殊操作。
0x22 和 0x2E 这两个服务是对以标识符(identifier)标记的数据的操作,前者是读,后者是写。UDS 规定,
诊断数据使用两个 byte 的标识符来标记,比如,0xF187 用来标记 ECU 的零件号,0xF19E 用于标记该
ECU 所使用的诊断文件的名字,UDS 还规定了厂家可以自定义的标识符范围。这两个服务的用法很简单,
下面我以读取 ECU 的零件号为例说明:
22 F1 87 (读取零件号)
62 F1 87 XX YY ZZ KK MM NN(给出零件号)
具体每次可以使用 22 服务读取几个 ID,每个 ID 的读写权限(比如在哪些 session 中可以读写,是否需
要安全访问操作等),由厂家自定义。假设零件号这个 ID 是可以写入的话,则写零件号的诊断命令是:
2E F1 87 XX YY ZZ KK MM NN(写入零件号)
6E F1 87(给出 positive response)
0x23 和 0x3D 这两个服务是对以地址信息(memoryAddress )标记的数据的操作,前者是读,后者是
写。这个命令的格式稍微复杂一点。以 0x23 为例,它的诊断请求格式是:
0x23 服务的请求格式 0x23
第一部分固定为 1 个 byte, 0x23;
评论0