[UDS] --- ECUReset 0x11

1 0x11功能描述

根据ISO14119-1标准中所述,诊断服务11主要用于Client向Server(ECU)请求重启行为。该重启行为将会导致Server复位回归到特定的初始状态,具体是什么初始状态取决于Client的请求行为。

2 0x11应用场景

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

  • ECU被刷写新的软件后,此时需通过11诊断服务重启该ECU使其回复到初始状态,保证一个十分干净的运行环境;
  • 在产线下线标定的过程中,对于KL30供电的ECU存在一些仅在下电存储的数据,此时需要通过11诊断服务使ECU走下电流程进而完成相应数据的保存;
  • 为满足特定功能的需要,输入相关标定参数给到ECU后,只有通过发送诊断服务11才能使得标定参数生效的场景;
  • 对于KL30供电的ECU节点,可以使用诊断服务11使ECU快速进入休眠的场景;

上述这些应用场景较为常见,除此以外,当然还有很多面向ECU内部测试的应用场合,这里就不一一列举。

通常来说,ECU在收到一条诊断指令之后,要先进行相应的处理,执行某些诊断操作,完毕后在发送肯定响应。

但是ECU复位是个特例,因为它的诊断操作是复位,这时候这个ECU就会重新开始运行,此时ECU也不会及的前面发送过的诊断指令,所以复位后ECU没有办法再去发送诊断响应,所以要先发送肯定响应,再执行复位。

注意:从发送完肯定响应到执行复位的这段时间内,ECU是否还可以响应其他诊断操作,标准中没有规定。但是在此期间ECU不接受任何发送请求,也不发送任何响应消息。

3 0x11服务请求

服务请求是Client发送给到Server的诊断服务指令。其中Client可以理解为Tester,Server可以理解为ECU节点。

3.1 请求格式

按照ISO14229-1标准所述,如下图1所示:

各参数解释如下:

3.2 重启类型

复位类型作为subfunction参数来传递给到Server发生相应的重启行为,具体由以下几种类型:

  • HardReset:硬复位;
  • keyOffOnReset:点火开关复位;
  • SoftReset: 软复位;
  • enableRapidPowerShutDown:使能快速休眠流程;
  • disableRapidPowerShutDown:抑制快速休眠流程;
  • vehicleManufacturerSpecific:供整车制造商使用的自定义复位类型;
  • systemSupplierSpecific:供系统供应商使用的自定义复位类型;

上述复位类型的具体含义解释:

4 0x11请求和响应

4.1 正响应格式

以实现HardReset为例

11诊断服务的正响应格式实例:

从上图中可以看出,11诊断服务的正响应由以下三个部分组成:

Response ID:该参数固定为SID+0x40 = 0x51;

SubFunction:该参数具体为对应的复位类型,如01,02,03,04,05等;

powerDownTime:该参数仅针对subfunction==0x4时才会回复该参数,其他情况下,Server仅会回复前两个字节(response SID + SubFunction),其取值范围只能为0x00-0xFE,0xFF则为无效值;

4.2 负响应NRC

绝大多数情况下,Server针对Client的请求都会给到正响应,比如发生重启前需确保整车处于安全状态,如引擎熄火,车速不能超过3km/h等,或者为了防止不按照诊断请求格式进行请求,那么Server需要通过某种方式来告诉Client执行不成功的原因在哪里以便于调查问题直至得到正响应。

因此ISO14229-1针对所有的诊断服务提供了一种统一的诊断负响应的诊断格式:7F +SID + NRC。

其中NRC全称为Negetive Responce Code,每个NRC具有唯一的含义来代表当前诊断请求错误的原因所在。当然每个诊断服务支持的NRC不尽相同,具体支持的NRC需要参考ISO14229-1标准文档,对于11服务而言支持的NRC如下表:

  • 例如当尝试请求复位时且当前车速条件不满足,此时Client发送诊断指令"11 01"请求Server发生复位行为,Server将会回复"7F 11 22"来告诉请求者当前进入编程会话的条件不满足,请再次检查进入编程会话的条件。
  • 当发送报文长度或者格式不对时,则Server会回复"7F 11 13";
  • 当诊断请求的resetType不在Server支持的范围内时,则Server会回复"7F 11 12";
  • 当Server在发生复位前处于security lock状态,那么此时Server则会回复"7F 11 33"
相关推荐
XuanXu12 分钟前
Java AQS原理以及应用
java
风象南3 小时前
SpringBoot中6种自定义starter开发方法
java·spring boot·后端
mghio12 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室17 小时前
java日常开发笔记和开发问题记录
java
咖啡教室17 小时前
java练习项目记录笔记
java
鱼樱前端17 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea18 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea18 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
我不会编程55520 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python