目录
一. DID
》缩写
缩写 |
全称 |
SID |
服务标识符 |
DID | dataIdentifier 数据标识符 |
Cvt | 约定值 M 强制的 C 有条件的 U 用户选项 |
NRC | 否定响应码 |
dataRecord 数据记录 |
》Data Identifier 数据标识符 (DID)的作用
DID是UDS中的一个重要概念,表示特定的数据标识符。DID用于标识和获取ECU中的特定参数数据,如传感器数据、状态信息等等。通过使用DID,诊断工具可以准确地获取所需的数据,从而帮助诊断人员更好地了解车辆的状态和性能。每个DID都对应着车辆的某个特定数据项。
DID在车辆诊断中的应用场景广泛。比如,通过读取特定的DID,诊断工具可以获取发动机的转速、车辆、油温等数据(发动机冷却液温度、油门位置、发动机转速、进气歧管绝对压力、空气质量流量、车速传感器、气压、负载、怠速控制器、油门踏板位置等等),一边进行故障排查和性能评估。此外,DID还可以用于读取车辆的故障码、清除故障码、读取冻结帧等功能。通过使用DID,诊断人员可以更准确地了解车辆的状态和性能,从而进行有效的故障诊断和维修。
(1)DID可以理解为一个/多个变量、常量或一段内存的名称或代号
(可以类似理解为:人为的为某个两个字节的内存空间取了一个名字;汽车的一些数据,比如发动机的转速、车辆、油温等数据会写入到这个内存中,如果我们想读汽车的某个状态值或写入某些数值,就可以去相应的内存空间进行读取和写入。比如某个DID为1A01,我么可以通过 22 1A01 读取里面的数据,通过 2E 1A01 写入数据(个人理解,可能有误,有错误请指点))
(2)通过DID可以访问相关的信息
(3)DID – 2字节
二. 0x22服务
》ReadDataByIdentifier(0x22)服务
客户端读取一个或者若干个DID标识的数据信息
》请求报文
读取DID的请求报文 :22 + DID ......
A_Data Byte |
Parameter Name |
Cvt |
Byte Value |
#1 |
ReadByIdentifier Request SID |
M |
0x22 |
#2 #3 |
DID []#1= [ byte#1(MSB) byte#2] |
M M |
0x00-0xFF 0x00-0xFF |
… |
… |
… |
… |
#n-1 #n |
DID []#m=[ byte#1(MSB) byte#2] |
U U |
0x00-0xFF 0x00-0xFF |
》肯定响应报文
A_Data Byte |
Parameter Name |
Cvt |
Byte Value |
#1 |
ReadByIdentifier Response SID |
M |
0x62 |
#2 #3 |
DID []#1= [ byte#1(MSB) byte#2] |
M M |
0x00-0xFF 0x00-0xFF |
#4 … #(k-1)+4 |
dataRecord[]#1= [ data#1 … data#k] |
M … U |
0x00-0xFF … 0x00-0xFF |
… |
… |
… |
… |
#n-(o-1)-2 #n-(o-1)-1 |
DID []#m=[ byte#1(MSB) byte#2] |
U U |
0x00-0xFF 0x00-0xFF |
#n-(o-1) … #n |
dataRecord[]#1= [ data#1 … data#o] |
U |