Loading

前言:本篇文章主要介绍在ISO 14229-1标准中定义的UDS服务——$11 ECUReset,其为Tester提供了控制目标ECU强制执行复位的能力。

0 预备知识

从事汽车行业的朋友可能会听到过“15电”、“30电”等行业术语,其实它们分别是指在汽车电气系统中常见的电气连接点标识KL15与KL30,主要用于描述汽车电气系统的不同电源来源:

  • KL15:这个标识代表“点火开关供电”(Ignition Switch Power)。当点火开关处于“ON”或“ACC”位置时,KL15端子会提供电源。这通常用于点火系统和一些车内设备,如音响系统、导航仪等,这些设备在点火开关打开时才会有电源供应。
  • KL30:这个标识代表“常电供电”(Constant Power)。KL30端子是直接连接到车辆电池正极的,可以提供持续的电源,无论点火开关是否开启。这种电源通常用于需要保持常电源的设备,如汽车的时钟、报警系统、空调系统、灯光或一些带有记忆功能的设备。

1 服务介绍

$11 ECUReset诊断服务即ECU复位服务,Tester可利用该服务请求目标ECU强制执行复位操作。

关键点:

  1. 在ECU执行复位之前,ECU应先回复肯定响应给Tester
  2. 在ECU执行复位之后,ECU应该处于默认会话(defaultSession)
  3. 在ECU回复肯定响应后,到执行复位之前,ECU不应接收任何请求消息,也不应发送任何响应消息

$11服务在汽车研发过程中经常会被用到,其主要应用场景如下所示:

  • 通过$11服务重启ECU,使被刷写过新软件的ECU恢复到初始状态
  • 通过$11服务重启ECU,使KL30供电的ECU走下电流程从而保存一些只有下电时才能存储的数据
  • 通过$11服务重启ECU,使得输入的相关标定参数生效
  • 通过$11服务,使KL30供电的ECU快速休眠

2 服务数据格式

2.1 请求数据格式

以下是$11服务的请求数据格式:

字节序参数字节值说明
#Byte1ECUReset SID0x11必选
#Byte2sub-function = [resetType]0x00 – 0xFF必选

2.1.1 resetType

resetType是$11服务的sub-function参数,用于指示ECU执行不同类型的复位操作,其具体定义如下表所示:

resetType描述
0x00ISO保留
0x01硬复位(hardReset)
用于指示ECU模拟直接掉电,然后上电的重启,这可能导致VM和NVM被重新初始化。其主要用于需要ECU彻底复位的场景,如刷写之后的复位。
0x02点火开关复位(keyOffOnReset)
用于指示ECU模拟点火开关从off至on的重启。通常NVM里面的数据会被保留,而VM里面的数据将被重新初始化。
0x03软重启(softReset)
效果同上,只是复位没有那么彻底。在无需初始化任何数据的情况下,重置PC指针重新运行应用程序,即RAM中的数据不会被重置。
0x04使能快速休眠(enableRapidPowerShutDown)
用于指示ECU开启快速休眠功能,该子功能只适用于KL30供电的ECU。
通常情况下,此类ECU在车辆下电后,会在一段时间内进入电源关闭状态。而在使能快速休眠后,此类ECU在车辆下电后,则不会进入电源关闭状态,而是进入休眠状态,这意味着,虽然车辆下电了,但ECU仍然可以被唤醒(由电池供电),但会有一定功耗。
0x05抑制快速休眠(disableRapidPowerShutDown)
用于指示ECU关闭以前使能的快速休眠功能。
0x06

0x3F
ISO保留
0x40

0x5F
车辆制造商自定义
0x60

0x7E
系统供应商自定义
0x7FISO保留

2.2 肯定响应数据格式

以下是$11服务的肯定响应数据格式:

字节序参数字节值说明
#Byte1ECUReset SID + 0x400x51必选
#Byte2sub-function = [resetType]0x00 – 0x7F必选
#Byte3powerDownTime0x00 – 0xFF可选a
  • a:该参数只有当resetType = enableRapidPowerShutDown(0x04)时才会出现

2.2.1 resetType

resetType是对应$11服务请求报文中的resetType参数回显

2.2.2 powerDownTime

该参数向Tester指示,当车辆下电后,ECU保持待机状态的最小时间,也即ECU进入休眠状态的最短时间。

该参数长度为一个字节,分辨率为1s。

  • 0x00 – 0xFE:0 – 254 秒
  • 0xFF:表示故障或时间不可用

2.3 否定响应数据格式

以下是$11服务的否定响应数据格式:

字节序参数字节值说明
#Byte1Negative Response SID0x7F必选
#Byte2ECUReset SID0x11必选
#Byte3NRCsupportedNRC必选

supportedNRC的可选值如下表所示:

supportedNRCNRC define描述
0x12sub-functionNotSupportedECU不支持该诊断请求服务的子功能
0x13incorrectMessageLengthOrInvalidFormat诊断请求指令的长度或格式不对
0x22conditionsNotCorrect执行诊断的条件不满足
0x33securityAccessDenied不满足安全策略

3 服务通信示例

3.1 ECU硬复位

本例展示了Tester通过$11服务请求ECU执行硬复位(hardReset)的流程,其中,存在以下条件:

  • sub-function bit7: SPR = 0

3.1.1 请求报文

字节序参数字节值
#Byte1ECUReset SID0x11
#Byte2sub-function = [resetType = hardReset ]0x01

3.1.2 肯定响应报文

字节序参数字节值
#Byte1ECUReset SID + 0x400x51
#Byte2sub-function = [resetType = hardReset ]0x01

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

👤本站访客数: 👁️本站访问量: