1、本文介绍的服务为22、2E服务
2、22服务
-
该服务通过标识符(DID)来读取ECU的数据
-
请求格式
由上图可知请求格式分为两个个部分:
第一部分:请求SID:0x22,占用一个字
第二部分:dataIdentifier(DID),占用两个字节,由厂家定义DID的值,代表读取的是什么数据。如0x0123代表的是读取ECU版本号。一次请求可读取多个DID数据。DID范围如下图所示: -
肯定响应
由上图可以响应格式分为三个部分:
第一部分:response SID:0x62
第二部分:dataIdentifier(DID),请求读取的DID值
第三部分:dataRecord,要读取DID对应的数据。
注意:根据诊断仪一次请求读取多少个DID,ECU就响应多少个DID的数据给诊断仪。格式:response SID + n(dataIdentifier + dataRecore)。一般都是一次请求读取一个DID数据。
-
22服务支持的NRC。13是请求格式不正确;14读取的数据已经超过了传输的最大值,就是超限了;31我们刚才也已经提到过了,比如说请求的DID不支持,请求的DID在当前会话下不支持;33要求在解锁状态下,而现在没有处于解锁状态执行了响应的请求。
-
举例
需要根据具体的DID详细说明来完成具体数据位的内容。
3、2E服务
-
该服务通过标识符来写入数据到ECU
-
请求格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lS6Ylw23-1625646552755)(C:\Users\hf104\AppData\Roaming\Typora\typora-user-images\image-20210707160037701.png)]
由上图可知,请求格式分为三部分
第一部分:请求SID:0x2E,占用一个字节
第二部分:dataIdentifier(DID),需要写入数据对应的DID标识符值。占用两个字节
第三部分:dataRecord,需要写入的数据 -
响应格式
由上图可知,响应格式分为两个部分
第一部分:response SID:0x6E
第二部分:dataIdentifier(DID),请求DID的值-
2E服务支持的NRC。31;3E;33;72和编程有关的,比如说在Bootloader刷写的过程中,需要对Flash进行操作,而写入数据没有写成功的时候,会回复72 NRC
-
举例
-