UDS_RoutineControl(0x31)服务

一、服务功能:

UDS 服务 Service 0x31 RoutineControl 是用于对主机厂定义的一些特定程序的控制操作(启动程序、停止程序、请求运行结果)的服务。它可以让诊断仪对服务器(如ECU)中的某些例程进行控制,例如擦除内存、检查编程依赖性、执行OBD测试等。

与2F服务相比,2F的基本功能都可以通过31服务来实现,不过用2F来实现的功能来用31服务,未免有点大材小用,因此31服务则是用于更复杂的输入输出控制场景,而2F服务则可用于较为简单常见的输入输出控制场景。

二、应用场景:

一般而言,对于31诊断服务,主要应用场景为以下场合:

①:比如用于某sensor特定工况下的操作集合,如进行摄像头或者雷达内参标定流程;

②:在整车制造过程中较为常见的便是某Sensor的外参标定工位,在该工位中需要用到31服务开启标定例程,标定流程结束后也能够31服务获取标定例程的最终结果;

③:如雷达使用过程中的非正常工况下的发波波形配置调整可以通过31服务来实现;

④:在进行UDS刷写过程中可以通过31服务来触发内存的擦除操作等;

注意事项:

31服务针对同一控制场景一般可分为开始,停止,获取结果三个过程,这三个过程并不是同时存在,是否需要同时存在完全可以客户自定义;

31服务针对每一个控制场景均可以一个Routine ID来进行唯一的区别,因此不同的控制场景应采用唯一的Routine ID来进行区别;

通过AUTOSAR工具链配置的31 Routine回调函数命名时,函数名除了说明其基本功能以外,也需要将对应的Routine ID体现在函数名称中,这样便于搜索排查问题,是一种不错的代码实践;

对于31服务涉及的回调函数,一般不建议走RTE,主要是从代码可维护角度而言,更加简洁明了,实现效率高,走RTE接口还需增加额外的工作量,没有必要且容易出错。

三、服务请求:

请求格式:

Request SID:Rouutine Control的服务ID 固定为0x31;

SubFunction:

01:开启Routine;

02:停止Routine;

03:获取Routine;

其他预留

routineIdentifier(2byte):即RID;

routineControlOptionRecord:根据客户需求可以自定义;

四、服务响应:

正响应格式:

Response ID:该参数固定为0x71;

Subfunction:该参数为上述诊断请求格式中Routine Type保持一致;

routineIdentifier:该参数与诊断服务请求中的routineIdentifier中保持一致;

routineInfo:一般可以理解为客户自定义,作为可选项;

routineStatusRecord:同上;

五、支持的NRC:

13:发送报文长度或者格式不对。

22:例如当尝试请求复位时且当前车速条件不满足,此时Client发送诊断指请求时,会回复22。

24:当某个routine还没有Start时便请求结果或者中止Routine时,会回复24。

31:当routineIdentifier或者可选的routineControlOptionRecord中均超出规定的范围时。

33:当该routineIdenfier设置了安全访问等级时,如果未解锁便执行该31服务。

72:当31服务用于擦除NVM时,在此过程中如果出现失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值