目录
终于要更新31服务啦,之前一直想更新,但是由于种种原因一直处于停滞状态,希望接下来的个人的一些见解能让各位对车载诊断协议感兴趣的朋友能够更加理解诊断的31服务
1 31服务的总体介绍
1.1 定义
31服务是例程控制服务,此服务包含三个子功能,分别是开启例程服务01,停止例程服务02,以及查询例程结果服务03,31服务具有很大的灵活性,可以应用在很多场景。
1.2 31服务使用的场景
场景1:在进行控制器刷写的过程中就会多次使用31服务,包含刷写条件检查,CRC校验,内存擦除,条件兼容性检查等等。
场景2:31服务主要还用于实现一些测试场景,主要应用的场景包含车钥匙学习,胎压学习,车窗防夹标定,软件内部一些参数的测试等。
2 31服务的请求
2.1 31服务的请求格式
31服务的请求格式如下表,第一个字节是请求SID;第二个字节是子功能(线程控制类型);第三个和第四个字节是线程ID,其中第三个字节是MSB,第四个字节是LSB;第五个字节及以后的字节是可选参数,用于携带一些其他信息,例如启动条件,跳出的条件,标定的参数等等,一般可以不填写相关信息。
字节 | 参数名称 | 参数约定 | 数值(Hex) |
Byte1 | Request SID 请求ID |
M | 31 |
Byte2 | SubFunction 子功能 |
M | 00 to FF |
Byte3 Byte4 |
routineIdengtifier 线程ID |
M | 00 to FF 00 to FF |
Byte5 . . Byten |
routineControlOptionRecord 线程控制器可选参数 |
U . . U |
00 to FF . . 00 to FF |