汽车UDS诊断之控制诊断故障码设置服务(0x85)深度剖析

ControlDTCSetting就是控制诊断故障码设置服务,简单说客户端可以利用此服务让服务端停止或恢复DTC状态位更新。

控制诊断故障码设置
服务 描述
ControlDTCSetting 客户端请求服务端停止或恢复DTC状态位的更新

目录

1.英文术语

2.缩写表

3.服务描述

4.请求消息定义

4.1.请求消息子功能定义

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

5.肯定响应消息定义

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

6.否定响应消息定义

6.1.否定响应码

7.服务使用示例

7.1.示例#1-控制DTC设置(DTC设置类型=停止)

7.1.1.步骤1:控制DTC设置请求

7.1.2.操作汇总

7.2.示例#2-控制DTC设置(DTC设置类型=恢复)

7.2.1.步骤1:控制DTC设置请求

7.2.2.操作汇总


 

1.英文术语

英文术语 翻译
ControlDTCSetting 控制DTC设置
ControlDTCSetting Request SID 控制DTC设置请求SID
sub-function 子功能
DTCSettingType DTC设置类型
DTCSettingControlOptionRecord DTC设置控制选项记录
ControlDTCSetting Response SID 控制DTC设置响应SID

2.缩写表

缩写 翻译
DTC 诊断故障码
SID 服务标识符
Cvt

约定值

M 强制的

C 有条件的

U 用户选项

NRC 否定响应码

3.服务描述

控制诊断故障码设置服务就是让服务端停止或恢复DTC状态位更新。当我们用读取DTC信息(0x19)服务的特定子功能去读取DTC信息,这时候在该服务的肯定响应在DTC参数状态中会记录所有DTC状态位,我们可以看到这些DTC信息相较于上次读取是被冻结了或还在记录。

控制诊断故障码设置服务重点知识:

  • 该服务可设置支持功能寻址,可控制单个服务端或多个服务端的DTC状态位更新
  • 该服务是改变ECU功能的服务,要设置在非默认会话模式下执行,当ECU重新回到默认会话模式时,该服务功能就会恢复到默认,即恢复DTC状态位更新。 
  • 如果之前已经让服务端停止DTC状态位更新,而且并没有重新恢复更新,此时客户端再去请求停止,服务端仍应发送肯定响应;如果之前已经让服务端恢复DTC状态位更新或者没进行服务请求,此时客户端再去请求开启,服务端仍应发送肯定响应。
  • 如果客户端发送清除诊断信息(0x14)服务,此优先级比停止更新要高,则控制DTC设置不应禁止重置服务端的DTC状态位,所以可以重置DTC状态位。
  • 在停止DTC状态位更新之后,恢复DTC状态位更新的方式有:
    1、在非默认会话模式下超时,重新回到默认模式下;
    2、ECU复位,如:进行实际复位操作或者请求ECU复位服务;
    3、使用控制DTC设置服务重新恢复DTC状态位更新。

服务白话解读:正常情况下,服务端的故障检测功能模块会根据故障检测结果实时更新每个DTC的状态(记录在对应的DTC状态位中) 。而我们此服务就可以用来停止DTC状态位更新,简单来说就是停止故障检测功能,不再继续记录DTC状态,原来记录的DTC状态冻结,保持不变。

 

4.请求消息定义

请求消息定义
A_Data字节 参数名称 Cvt 字节值 助记符
#1 控制DTC设置请求SID M 0x85 CDTCS
#2 子功能=[DTC设置类型] M 0x00-0xFF

LEV_DTCSTP_

#3

#3+(m-1)

DTC设置控制选项记录[] = [

                                            参数#1

                                                 :

                                            参数#m]

U

  :

U

0x00-0xFF

      :

0x00-0xFF

DTCSCOR_

PARA1

     :

PARAm

4.1.请求消息子功能定义

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

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

ISOSAEReserved

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

M ISOSAERESRVD
0x01

恢复

根据正常的操作条件,服务端应恢复诊断故障码状态位的更新。

M ON
0x02

停止

服务端应停止诊断故障码状态位的更新。

M OFF
0x03-0x3F

ISOSAEReserved

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

M ISOSAERESRVD
0x40-0x5F

车辆制造商特定

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

U VMS
0x60-0x7E

系统供应商特定

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

U SSS
0x7F

ISOSAEReserved

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

M ISOSAERESRVD

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

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

DTC设置控制选项记录

当控制DTC状态位的更新时(目前定义的子功能关于控制DTC状态位的更新有恢复(0x01)停止(0x02)两个子功能),该参数记录才被选择使用,也可以不使用。

此参数记录通常是不用的。

注:当控制DTC状态位更新时,如果不使用参数记录,那么我们控制的就是所有DTC状态位的更新;

       当控制DTC状态位更新时,如果使用参数记录,这个记录我们可以自行定义,只要有道理有实用价值都可以         的,譬如:控制某个DTC状态位的更新、限制更新次数啥的等等。

5.肯定响应消息定义

肯定响应消息定义
A_Data字节 参数名称 Cvt 字节值 助记符
#1 控制DTC设置请求SID M 0xC5 CDTCSPR
#2 子功能=[DTC设置类型] M 0x00 - 0x7F DTCSTP

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

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

DTC设置类型

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

6.否定响应消息定义

否定响应消息定义
A_Data字节 参数名称 字节值 Cvt 助记符
#1 否定响应SID 0x7F M SIDNR
#2 控制DTC设置请求SID 0x85 M SIDRQ
#3 否定响应码 0xXX M NRC_

6.1.否定响应码

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

子功能不支持

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

SFNS
0x13

消息长度错误或格式无效

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

IMLOIF
0x22

条件错误

如果未满足控制DTC设置请求的条件,因此无法执行DTC设置,则应发送此否定响应码。

CNC
0x31

请求超出范围

如果服务端检测到DTC设置控制选项记录(自己定义的格式)中有错误,则应使用此响应码。

ROOR

7.服务使用示例

7.1.示例#1-控制DTC设置(DTC设置类型=停止)

7.1.1.步骤1:控制DTC设置请求

该示例不使用DTC设置控制选项记录参数,客户端通过将抑制肯定响应位设置为假(即“0”),以请求有机会得到肯定响应消息。

控制DTC设置请求消息

消息方向

客户端→服务端

消息类型

请求

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

控制DTC设置请求SID

0x85

RDTCS

#2

子功能 = 停止

               抑制肯定响应位 = 假

0x02

DTCSTP_OFF

控制DTC设置响应消息

消息方向

服务端→客户端

消息类型

响应

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

控制DTC设置响应SID

0xC5

RDTCSPR

#2

子功能 = 停止

0x02

DTCSTP_OFF

7.1.2.操作汇总

步骤1:控制DTC设置请求-停止

图解:

操作 CAN报文 实体
0 1 2 3 4 5 6 7
控制DTC设置请求 0x02 0x85 0x02           客户端
肯定响应 0x02 0xC5 0x02           服务端

7.2.示例#2-控制DTC设置(DTC设置类型=恢复)

7.2.1.步骤1:控制DTC设置请求

该示例不使用DTC设置控制选项记录参数,客户端通过将抑制肯定响应位设置为假(即“0”),以请求有机会得到肯定响应消息。

控制DTC设置请求消息

消息方向

客户端→服务端

消息类型

请求

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

控制DTC设置请求SID

0x85

RDTCS

#2

子功能 = 恢复

               抑制肯定响应位 = 假

0x01

DTCSTP_ON

控制DTC设置响应消息

消息方向

服务端→客户端

消息类型

响应

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

控制DTC设置响应SID

0xC5

RDTCSPR

#2

子功能 = 恢复

0x01

DTCSTP_ON

7.2.2.操作汇总

步骤1:控制DTC设置请求-恢复

图解:

操作 CAN报文 实体
0 1 2 3 4 5 6 7
控制DTC设置请求 0x02 0x85 0x01           客户端
肯定响应 0x02 0xC5 0x01           服务端

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

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

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

上一篇:【黄啊码】PHP在线解密工具,Goto解密工具


下一篇:汽车UDS诊断之安全访问服务(0x27)深度剖析