UDS诊断之31服务

2022-05-25 15:17:28 浏览数 (1)

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服务多一些,感兴趣的读者可以自行了解一下。

以上就是本期内容,如有问题欢迎私信。

0 人点赞