大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS诊断通过DID读取数据0X22服务介绍,希望能对你有所帮助
一、读数据服务介绍
DID:Data Identifier 数据标识符,简单理解就是个编号,用来标识要读取的是什么内容,比如,你要读取软件版本号,硬件版本号,那发送的DID就不一样了。0X22服务的主要功能就是通过DID读取数据,可以请求一个DID的数据,也可以请求多个,其数量限制也由汽车厂商和供应商来约定。请求的DID数量,只要不超过数量限制即可,服务端在回复的时候要包含所有数据,也就是有多少个DID请求,就要回复多少个DID对应的数据,即使多个DID里面有重复的,响应的时候也要当成是两个单独的DID请求。二、数据格式
1,请求报文
请求报文的格式简单,[SID] + [DID] 即可,SID后面至少跟一个DID,需要注意的是,之前的服务都是有sub-function的,这个服务是没有的
2,响应报文
响应报文格式:[SID + 0X40] + [DID] + [DataRecord] ……+ [DID] + [DataRecord]
这里需要注意的是,看是单个DID请求还是多个DID请求,有多少个DID请求,回复的时候就需要回复多少个 [DID] + [DataRecord]
3,否定响应
0X13:请求的消息长度不正确,或格式错误
0X14:响应的消息太长了
0X22:条件不正确,就是不满足服务daunt的运行条件
0X31:不支持当前请求的DID
0X33:没过安全访问,需要先执行27服务解密后,才能执行22服务
三、举例子
单个DID请求
回复
多个DID请求的例子
回复
最后,如果觉得有帮助,希望你能点个关注,一键三连,感激不尽