汽车UDS诊断之ECU复位服务(0x11)深度剖析

ECUReset就是ECU复位服务。

ECU复位
服务 描述
ECUReset 客户端向服务端请求重置服务端。

目录

1.英文术语

2.缩写表

3.服务描述

4.请求消息定义 

4.1.请求消息子功能定义

4.2.请求消息数据参数定义

5.肯定响应消息定义

5.1.肯定响应消息数据参数定义

6.否定响应消息定义

6.1.否定响应码

7.服务使用示例

7.1.示例#1-执行硬复位

7.1.1.步骤1:请求执行硬复位

7.1.2.操作汇总


1.英文术语

英文术语 翻译
ECUReset ECU复位
ECUReset Request SID

ECU复位请求SID

ISO14229定义此值为0x11

sub-function 子功能
resetType 复位类型
hardReset 硬复位
keyOffOnReset  钥匙电复位
softReset  软复位
ECUReset Response SID 

ECU复位响应SID

ISO14229定义此值为(0x11+0x40)

powerDownTime  断电时间

2.缩写表

缩写 解释
SID 服务标识符
Cvt

约定值

M 强制的

C 有条件的

U 用户选项

NRC 否定响应码

3.服务描述

        ECU复位服务就是可以此诊断指令来命令ECU执行自复位,复位有多种形式,依据子功能参数来区分(即客户端使用ECU复位服务来请求服务端重置,重置成功后,将直接进入默认会话)。

        通常来说,ECU在收到一条诊断指令后,要先进行相应的处理,执行某些诊断操作,完毕后再发送肯定响应。但是ECU复位服务是个特例,因为它的诊断操作是复位,这时候这个ECU就会重新开始运行,此时ECU也不会记得你前面发过诊断指令,所以复位后没办法ECU就没办法再去发送诊断响应,所以要先发送肯定响应,再执行复位。

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

4.请求消息定义 

请求消息定义
A_Data字节 参数名称 Cvt 字节值 助记符
#1 ECU复位请求SID M

0x11

ER
#2 子功能 = [复位类型] M 0x00 - 0xFF LEV_RT_

4.1.请求消息子功能定义

该服务使用子功能参数选择(此字节的bit7表示抑制肯定响应位,下表并没有介绍此位)。

下表中标绿的三种较为常用:

请求消息子功能定义
位6-0 描述 Cvt 助记符
0x00

ISOSAEReserved

该值为本文件为未来定义预留。

M ISOSAERESRVD
0x01

硬复位

模拟的是ECU先完全掉电再上电的过程。

在我们汽车行业里面ECU一般会有两种电源供应:

1、一种是常电用来供给ECU处理低功耗模式下使用的。

2、另一种唤醒电用来作为唤醒源,是ECU从低功耗模式进入正常模式的媒介,这个要根据厂家约定,如果某个厂家只支持常电不支持钥匙电,那就只供应常电给ECU,ECU就能够正常工作。

所以我们想ECU完成掉电,就必须将常电唤醒完全断开再上电。

U HR
0x02

钥匙电复位

模拟的是像司机下钥匙电再重新上电的情况钥匙电关闭再重新上电的复位过程,RAM中的内容要被重置。

U KOFFONR
0x03

软复位

只是程序从头开始执行,RAM中的内容不重置无需重新初始化先前学到的配置数据、自适应因素和其他长期调整)。

U SR
0x04

使能快速休眠

开启休眠功能,在这种模式下,使用关闭钥匙电也不会进入关闭状态,而是进入休眠状态。

这个子功能是针对由车辆电池供电而非点火供电的ECU,这类ECU通常情况下在钥匙电关闭后的一段时间内进入电源关闭状态(PowerOff),而这个指令命令ECU打开快速休眠功能,在这种模式下,ECU在钥匙电关闭后将不会进入关闭状态,而是进入休眠状态休眠意味着虽然断电,但仍然可以被唤醒(电池供电),进入休眠状态所需要的时间更短,且能够在更短的时间内被唤醒,但会有一定功耗。其实这个类似于电脑的关机和休眠,常规模式下钥匙电关闭后ECU会关机,而快速休眠模式打开后,则会快速进入休眠。

所以进入快速休眠状态必须满足以下两个条件:

1、请求使能快速休眠(会有响应消息)

2、关闭钥匙电(操作使用休眠功能,不会去发响应消息)

U ERPSD
0x05

关闭快速休眠

(也就是跟0x04子功能相对应的)

关闭快速休眠模式,返回常规模式。

U DRPSD
0x06 - 0x3F

ISOSAEReserved

该值的范围为本文件为未来定义预留。

M ISOSAERESRVD

0x40 - 0x5F

车辆制造商特定

此值范围保留以供车辆制造商特定使用

U VMS
0x60 - 0x7E

系统供应商特定

此值范围保留以供系统供应商特定使用

U SSS
0x7F

ISOSAEReserved

该值为本文件为未来定义预留。

M ISOSAERESRVD

4.2.请求消息数据参数定义

此服务中请求消息中没有数据参数。

5.肯定响应消息定义

肯定响应消息定义
A_Data字节 参数名称 Cvt 字节值 助记符
#1 ECU复位响应SID M 0x51 ERPR
#2 子功能 = [复位类型] M 0x00 - 0x7F LEV_RT_
#3 断电时间 C 0x00 - 0xFF PDT

C:如果将子功能参数设置为使能快速休眠(0x04),则存在此参数;

5.1.肯定响应消息数据参数定义

肯定响应消息数据参数定义
定义

复位类型

此参数与请求消息的子功能参数的位6~0相同。

断电时间

此参数是ECU在断电过程中保持待机状态的最小时间(表示你这个ECU什么时候能够休眠),长度为1字节,分辨率是1s

—— 0x00 - 0xFE:0-254秒

—— 0xFF:表示故障或时间不可用。

6.否定响应消息定义

否定响应消息定义
A_Data字节 参数名称 字节值 Cvt 助记符
#1 否定响应SID 0x7F M SIDNR
#2 ECU复位请求SID 0x11 M SIDRQ
#3 否定响应码 0xXX M NRC_

6.1.否定响应码

此服务支持的否定响应码
否定响应码 描述 助记符
0x12

子功能不支持

如果不支持子功能参数,则应发送此否定响应码。

SFNS
0x13

消息长度错误或格式无效

如果消息的长度错误,则应发送此否定响应码。

IMLOIF
0x22

条件错误

如果未满足ECU复位请求的条件,则应返回此否定响应码。

CNC
0x33

安全访问拒绝

如果请求的重置需要服务器处于相应的安全状态,而服务器却没有解锁,则应发送此否定响应码。

SAD

注意:0x11服务支持的否定响应码比0x10服务多0x33-安全访问被拒绝,这是因为复位会影响ECU的正常功能,相对来说有一定的危险性,所以有的供应商或主机厂把0x11服务定义为在解锁状态下才能执行,如果在上锁状态下收到该请求,ECU应返回否定响应码0x33。

标准对0x11服务是否需要安全访问没有强制要求,用户可自定义。

7.服务使用示例

7.1.示例#1-执行硬复位

假设该示例满足了以下服务端成功执行ECU复位服务的条件:

1、服务端处于的状态:点火 = 开启,系统不应处于运行模式(例如,如果系统是发动机为动力源,发动机应关闭;如果系统是混动系统,发动机和ISG电机都要关闭。

2、客户端通过将抑制肯定响应位(子功能参数的位7)设置为“False”向服务端请求;

3、在服务端执行复位类型之前,该服务端应发送ECU复位的肯定响应消息。

7.1.1.步骤1:请求执行硬复位

ECU复位请求

消息方向

客户端→服务端

消息类型

请求

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

ECU复位请求SID

0x11

ER

#2

子功能 = 硬复位

               抑制肯定响应位 = 假

0x01

RT_HR

肯定响应消息

消息方向

服务端→客户端

消息类型

响应

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

ECU复位响应SID

0x51

ERPR

#2

子功能 = 硬复位

0x01

RT_HR

7.1.2.操作汇总

步骤1:请求执行硬复位

图解:

操作 CAN报文 实体
0 1 2 3 4 5 6 7
请求执行硬复位 0x02 0x11 0x01           客户端
肯定响应 0x02 0x51 0x01           服务端

到这里我们的0x11服务基本学完了。

以上解释有没有解决大家的疑惑,如果还是觉得有疑惑的地方,欢迎大家踊跃提出,一起分享,共同进步!!!

有CSDN号的也可以帮忙点个关注,我会陆续更新其它UDS服务

你可能感兴趣的:(汽车UDS诊断,c语言)