RoutineControl(0x31)—— 例程控制
这个服务是用来执行一系列操作序列的,是笔者见过的用途最广泛的一个服务,可以根据需求进行一些服务定制,例如擦除内存,一些自学习流程,故障自检测,配置某些数据参数等。
例程控制可以用来进行以下操作:
- 开始一个例程
- 结束一个例程
- 查看例程执行结果
1.服务请求报文定义
图1 服务请求报文定义
Sub-function定义:
图2 0x31服务支持的子服务
2.肯定响应
图3 肯定响应报文定义
routineControlType:对应服务请求的子服务
routineIdentifier:例程ID
routineInfo:这部分是自定义的,提供一种机制,使测试工具根据这个值来实施一些流程
routineStatusRecord:提供一些额外的信息,也是自定义的
3.支持的NRC
图4 支持的NRC
4.示例
(1)Sub-function = startRoutine
发送请求:31 01 02 01
肯定响应:71 01 02 01 32 (报文最后一个字节为汽车制造商自定义的状态)
(2)Sub-function = stopRoutine
发送请求:31 02 02 01
肯定响应:71 02 02 01 30 (报文最后一个字节为汽车制造商自定义的状态)
(3)Sub-function = requestRoutineResult
发送请求:31 03 02 01
肯定响应:71 03 02 01 30 33 8F(报文最后三个字节为汽车制造商自定义的状态)
(4)Sub-function = startRoutine with routineControlOption
发送请求:31 01 02 02 06 01 (最后两个字节为ControlOption)
肯定响应:71 01 02 02 32 33 8F(报文最后三个字节为汽车制造商自定义的状态)
以上就是0x31服务,与之类似的还有一个0x2F服务,只是对比31服务2F服务应用范围较窄,一般可以模拟一下车的灯光控制等,但是如果较复杂的流程的话还是用31服务多一些,感兴趣的读者可以自行了解一下。
以上就是本期内容,如有问题欢迎私信。