1. 概述
所谓例程,就是ECU中的一个函数或一段代码,例程控制服务(0x31)允许诊断仪向ECU发送诊断命令来开始或停止一段程序的执行,还可以请求例程执行的结果。例如ECU中一段函数的作用是依次让外部的几个电磁阀动作,同时检查是否存在阀故障,ECU正常运行时这段代码不会执行,当收到诊断仪发送的31服务诊断指令时才会开始这段代码的执行,当这段代码执行完毕后,诊断仪还可以发送指令来获取阀自检结果。这就是比较常见的例程控制服务的用法。、
例程通常有两种,一种是执行完毕后自动结束,另一种是在开始后循环不断的运行,需要诊断仪发送停止例程的指令才能停止。我们通常把能够自动停止的例程控制方式叫做异步控制,把不能自己停止、需要诊断仪控制开始和停止的方式叫做同步控制。
2. 请求报文格式
31 服务的请求报文格式如下:
-
routineControlType:子功能参数,31服务是有子功能的,子功能参数定义如下,就是开始例程、停止例程和请求例程结果。