【AUTOSAR】UDS协议的代码分析与解读(六)----UDS清除诊断读取DTC

8.5 清除诊断信息 ClearDiagnosticInformation (14h)

清除诊断信息服务用于清除电控单元存储器中的一个或多个诊断信息。

8.5.1 报文格式

 20 清除诊断信息服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

Request Service Identifier

M

14

#2

Group Of DTC=[

HighByte,

MidByte,

LowByte]

M

00--FF

00--FF

00--FF

 21 清除诊断信息服务的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

Positive Response Service ID

M

54

8.5.2 支持的否定响应码

 22 清除诊断信息服务的否定响应码

Hex

Cvt

Error Text

13

M

报文长度错

如果报文长度错误,发送此否定响应码

31

M

请求超出范

如果特定的“groupOfDTC”参数不支持,发送此否定响应码。

72

M

一般编程错误

如果向存储单元读取数据时ECU监测到错误,发送此否定响应码。

8.5.3 参数定义

 23 清除诊断信息服务组定义

Hex

Description

Cvt

FFFF33

排放相关系统Emissions-relatedsystems

U

100000

动力组Powertraingroup

U

400000

底盘组Chassisgroup

U

800000

车身组Bodygroup

U

C00000

网络通信组Networkcommunicationgroup

U

FFFFFF

有组(所有DTC)

M

8.5.4 执行规定

a) 诊断障信息将在ECU回复肯定响应之前被清除。如果ECU支持存储DTC的多个备份(如:分 别存在RAMEEPROM中),其应将所存储的DTC信息全部清除;

b) 利用参数“GroupOfDTC”,诊断工具可只清除一个特定的DTC组, 也可清除一个特定的DTC  c)在执行完清除诊断信息后,如果接收到读取故障信息的请求,ECU不允许返回任何之前的DTC d) 当接收到此诊断请求后,即使未存储有DTC ECU也需返回肯定响应;

e) 此服务不允许赖其他的服务,即使故障存储器没有被读取过, ECU也应该清除故障信息。

8.6 读取 DTC 信息 Read DTC Information (19h)

此服务允许诊断工具读取车辆内任意一个或一组ECU中存储的诊断故障代码(DTC)及其相关信息。

ECU应可返回包含排放相关及非排放相关在内的所有DTC信息。ECU允许诊断工具的请求包括(括 中为子功能):

a)诊断具可获取与诊断工具定义的DTC状态掩码相匹配的DTC数目(19h 01h);

b) 诊断工具可获取与诊断工具定义的DTC状态掩码相匹配的所有DTC列表和状态信息(19h 02h); c)诊工具可获取与诊断工具定义的DTC码和DTCsnapshot记录号码(FFh代表所有记录)相关的 DTCSnapshot录信息(19h 04h);

d)断工具可获取与诊断工具定义的DTC码和DTCExtendedDatarecord号码(FFh代表所有记录) 相关的DTCExtendedData记录信息。扩展数据的典型应用是存储与DTC相关的动态信息,如故障发生次 数及最近一个故障的发生时间(19h 06h);

e)诊断工具可获取ECU支持的所有DTC列表和状态信息(19h 0Ah)。

ECU需要支持的通用型DTC请参考最新版的《X集团h事业部_诊断故障码需求附录》。

8.6.1 报文格式

8.6.1.1  读取 DTC 信息通过状态掩码报告 DTC 数目(19h 01h) 表 24 (19 01)的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

Request Service Identifier

M

19

#2

sub-function=[Report Number Of DTC By StatusMask]

M

01

#3

DTC Status Mask

M

00-FF

表 25 (19 01)的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

59

#2

reportType=[ReportNumberOfDTCByStatus Mask]

M

01

#3

DTCStatusAvailabilityMask

M

00-FF

#4

DTCFormatIdentifier=[SAE_J2012-DA_DTC Format_00]

M

00

#5

DTCCountHighByte

M

00-FF

#6

DTCCountLowByte

M

00-FF

8.6.1.2  读取 DTC 信息通过状态掩码报告 DTC  (19h 02h)

表 26 (19 02)请求报文

Byte

Name

Cvt

Value  (Hex)

#1

Request Service Identifier

M

19

#2

sub-function=[Report Number Of DTC By Status Mask]

M

02

#3

DTCStatusMask

M

00-FF

 27 (19 02) 肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

59

#2

reportType=[ReportNumberOfDTCByStatusMask]

M

02

#3

DTCStatusAvailabilityMask

M

00-FF

#4

DTCAndStatusRecord[]=[

DTCHighByte#1

DTCMiddleByte#1

DTCLowByte#1

statusOfDTC#1

DTCHighByte#2

DTCMiddleByte#2

DTCLowByte#2

statusOfDTC#2

:

DTCHighByte#m

DTCMiddleByte#m

DTCLowByte#m

statusOfDTC#m]

C1

00-FF

#5

C1

00-FF

#6

C1

00-FF

#7

C1

00-FF

#8

C2

00-FF

#9

C2

00-FF

#10

C2

00-FF

#11

C2

00-FF

:

:

:

#n-3

C2

00-FF

#n-2

C2

00-FF

#n- 1

C2

00-FF

#n

C2

00-FF

C1:此参数只在可以报告的DTC信息时存在。 C2:此参数只在需要报告的DTC信息多于一个时存在。

8.6.1.3  读取 DTC 信息通过 DTC 码报告 DTC Snapshot 记录(19h 04h)

表 28 (1904)请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

19

#2

Sub-function=[reportDTCSnapshotRecordByDTCNumber]

M

04

#3

#4

#5

DTCMaskRecord[]=[DTCHighByte DTCMiddleByte DTCLowByte]

M

00-FF

00-FF

00-FF

#6

DTCSnapshotRecordNumber

M

00-FF

表 29 (19 04)的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

59

#2

ReportType=[ReportDTCSnapshotRecordByDTCNumber]

M

04

#3

#4

#5

#6

DTCAndStatusRecord[]=[

DTCHighByte

DTCMiddleByte

DTCLowByte

StausOfDTC]

M

00-FF

00-FF

00-FF

00-FF

#7

DTCSnapshotRecordNumber#1

C1

00-FE

#8

DTCSnapshotRecordNumbeOfIdentifierr#1

C1

00-FF

#9

#10

#11

DTCSnapshotRecord[]#1=[

dataIdentifier#1byte#1(MSB)

dataIdentifier#1byte#2(LSB)

snapshotData#1byte#1

snapshotData#1byte#p

dataIdentifier#wbyte#1(MSB)

dataIdentifier#wbyte#2(LSB)

snapshotData#wbyte#1

snapshotData#wbyte#m]

C1

C2

C2

00-FF

:

:

:

:

#t

DTCSnapshotRecordNumber#x

C3

00-FE

#t+1

DTCSnapshotRecordNumbeOfIdentifierr#x

C3

00-FF

#t+2

#t+3

#t+4

DTCSnapshotRecord[]#1=[

dataIdentifier#1byte#1(MSB)

dataIdentifier#1byte#2(LSB)

snapshotData#1byte#1

snapshotData#1byte#p

dataIdentifier#wbyte#1(MSB)

dataIdentifier#wbyte#2(LSB)

snapshotData#wbyte#1

snapshotData#wbyte#u]

C3

C4

00-FF

C1:参数DTC Snap shot Record NumberDTC Snap shot Record中的第一个data Identifier/snap shot Data 合存在的条件至少一个DTC  Snap shot  记录可以被报告(请求中DTCSnapshotRecordNumber不等于FFh 或请求中 DTC Snap shot Record Number等于FFh  时只有一个记录可以被报告)。                     C2/C4:在一个DTC Snap shot Record  中允许存在多个data Identifier/snap shot Data组合。例如一个data       Identifier只代表数据的一部分。当DID代表一块数据时,可以使用一个data Identifier/snap shot Data   

C3:参数DTC Snap shot Record NumberDTC Snap shot Record中的第一个data Identifier/snap shot Data 在的条件是所有记录需要报告时(请求中DTC Snap shot Record Number设为FFh)并且多于一个记录 以被报告。

8.6.1.4  读取 DTC 信息通过 DTC 码报告 DTC 扩展数据记录(19h 06h)

表 30 (19 06)请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

19

#2

Sub-function=[reportDTCExtendedDataRecordByDTCNumber]

M

06

#3

#4

#5

DTCMaskRecord[]=[

DTCHighByte

DTCMiddleByte

DTCLowByte]

M

00-FF

00-FF

00-FF

#6

DTCExtendedDataRecordNumber

M

00-FF

表 31 (19 06)的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

59

#2

reportType=[reportDTCExtendedDataRecordByDTCNumber]

M

06

#3

#4

#5

#6

DTCAndStatusRecord[]=[

DTCHighByte

DTCMiddleByte

DTCLowByte

StausOfDTC]

M

00-FF

00-FF

00-FF

00-FF

#7

DTCExtendedDataRecordNumber#1

C1

00-FD

#8

DTCExtendedDataRecord[]#1=[

ExtendedData#1byte#1

ExtendedData#1byte#p]

C1

C1

00-FF

00-FF

DTCExtendedDataRecordNumber#x

C2

00-FD

DTCExtendedDataRecord[]#x=[

ExtendedData#xbyte#1

ExtendedData#xbyte#q]

C2

C2

00-FF

00-FF

C1:参数DTC Extended Data Record NumberDTC Extended Data Record中的扩展数据存在的条件是至少 一个DTC Extended Data Record可以被报告(请求中DTC Extended Data Record Number不等于FFh或请 DTC Extended Data Record Number等于FFh但只有一个记录可以被报告)。

C2参数DTC Extended Data Record NumberDTC Extended Data Record中的扩展数据存在的条件是所有 录需要被报告(请求中DTC Extended Data Record Number设为FFh) 并且多于一个记录可以被报告时存 

8.6.1.5  读取 DTC 信息报告支持的 DTC  (19h 0Ah)

表 32 (19 0A)请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

19

#2

Sub-function=[reportSupportedDTC]

M

0A

表 33 (19 0A)的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

59

#2

reportType=[ reportSupportDTCs]

M

0A

#3

DTCStatusAvailabilityMask

M

00-FF

#4

DTCHighByte#1

C1

00-FF

#5

DTCMiddleByte#1

C1

00-FF

#6

DTCLowByte#1

C1

00-FF

#7

statusOfDTC#1

C1

00-FF

#n-3

DTCHighByte#N

C2

00-FF

#n-2

DTCMiddleByte#N

C2

00-FF

#n- 1

DTCLowByte#N

C2

00-FF

#n

statusOfDTC#N

C2

00-FF

C1:此参数只在有可以报告的DTC信息时存在。

C2:此参数只在需要报告的DTC信息多于一个时存在。

8.6.2 支持的否定响应码

 34 读取 DTC 服务的否定响应码

Hex

Cvt

ErrorText

12

M

功能不支持

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

13

M

报文长度错

如果报文长度错误,发送此否定响应码

31

C1

请求超出范

下情况时,发送此否定响应码:

1.ECU不识别诊断工具指定的DTCMaskRecord

2.断工具指定了无效DTCExtendedDataRecordNumber

C1:只有04/06子功能支持NRC31

8.6.3 参数定义

该服务使用子功能参数选择DTC报告类型(04/06子功能是否实现,由h事业部与供应商共同决定), 定义如下表(表34):

 35 读取 DTC 服务的子功能参数定义

Hex

Description

Cvt

01

根据状态掩码报告诊断故障代码数量

该参数表示电控单元应向测试工具报告符合状态掩码的诊断故障代码的数

M

02

根据状态掩码报告诊断故障代码

该参数表示电控单元应把符合状态掩码的诊断故障代码和相应的状态发送给 试工具。

M

04

根据诊断故障代码报告诊断故障代码快照记录

该参数规定电控单元应将诊断故障代码快照记录发送给测试工具。该快照记录应 符合诊断故障代码和诊断故障代码快照记录编号。

U

06

根据诊断故障代码报告诊断故障代码扩展数据记录

该参数规定电单元应将诊断故障代码扩展数据记录发送给测试工具。 该扩展数 据记录应符合诊断故障代码和诊断故障代码扩展数据记录编号。

U

0A

报告支持的诊断故障代码

该参数规定电控单元应将支持的所有诊断故障代码和相应的状态发送给测试 工具。

M

8.6.4 执行规定

a)读取DTC信息通过状态掩码报告DTC数目(19h 01h)                                1)使用通过状态掩码报告DTC数目功能服务, 诊断工具可以获取与诊断工具发送的状态

掩码匹配的DTC的数目。此请求的响应包含DTC状态有效掩码(DTC Status Availability Mask)

于表示ECU持的DTC状态位。在DTC状态有效掩码后,肯定响应包含了DTC格式标识符(DTC Format Identifier),报告了DTC格式及解码方法的信息。DTC格式标识符后是DTC数目(DTC Count), 是一个2字节无符号数, 表示ECU内存储的与诊断工具定义的状态掩码匹配的DTC的数目。

2)诊断工具发送清除诊断信息(14h) 服务时, DTC数目将被清除。

b)读取DTC信息通过状态掩码报告DTC数目(19h 02h):

1)使用通过状态掩码报告DTC功能服务, 诊断工具可以获取与诊断工具发送的状态掩码 匹配的DTC的列表。

2)该服务的处理须按照以下进行:ECU须将诊断工具请求的DTC状态掩码与它支持的各个DTC 状态进行位与逻辑运算。ECU将不仅返回DTC状态有效掩码, 还有所有运算结果为非零 的所有DTC。(例如,(status Of DTC&DTC Status Mask) !=0) 如果诊断工具规定的状态掩码包含 ECU不支持的位,ECU只须使用其支持的状态位处理DTC信息。如果ECU中没有匹配诊断工具请求 中状态掩码的DTC肯定响应报文中, DTC状态有效掩码字节后没有DTC和状态信息;

3)当诊断工具发送清除诊断信息(14h) 服务时, DTC状态信息须被清除

c)读取DTC信息通过DTC报告DTCSnapshot记录(19h04h):

1) 使用通过DTC报告DTC Snap shot记录子功能服务, 诊断工具可以依据DTC码和DTC Snap shot录号码获取对应的DTC Snap shot记录数据。ECU须首先通过搜索其支持的DTC列表寻找与请 求报文DTC码匹配的DTC (DTC码(高、中、低字节))。然后如果ECU寻找到记录号码与诊断工具 求定义的参数DTC  Snap  shot  Record Number完全匹配,响应报文中须包含这个DTC  Snap  shot Record Number,表示返回的数据是对应请求中的DTC Snap shot记录号码

2) DTC  Snap  shot记录包含多个数据参数。这些参数可以用来重建故障发生时整车运行条 (如 B+ RPM,时间戳);

3)DTCSnapshotRecord报告数据中首先是一个数据标识符,然后是对应的数据,通过该数据 标识符来标识后续的数据。DTC Snap shot Record内可以包含多组数据标识符和数据的组合;

4) 通常,ECU须在一个响应报文中报告一个DTC Snap shot Record。然而,如果诊断工具设置 DTC  Snap  shot  Record NumberFFh ECU须在一个响应报文中报告该DTC对应存储的所有DTC Snap shot记录。一个DTC存储多个Snap shot Records的典型应用是用于存储DTC多次发生时记录的 据, 这些数据体现了(每次) 发生时的整车状况;

5)如诊断工具通过DTC要求报告所有的DTC Snap shot DTC And Status Record只在响应报 文中出现一次。此服务不可以一次请求所有DTC的某Snap shot Record Number,因为请求报文中不 能使用DTC Group number

6) 如果参数DTC Mask RecordDTC Snap shot Record Number无效或不被ECU支持,ECU应发 定响应;

7) 如果参数DTC Mask Record/DTC Snap shot Record Number在请求中有效并被ECU支持, 但是没有与之对应的DTC Snap shot数据,ECU须发送肯定响应,只包含DTC And Status Record (重 求的DTC数(高、中、低字节) 和status Of DTC);

8)当诊断工具发送清除诊断信息(14h) 服务时, DTC Snap shot信息须被清

d)读DTC信息通过DTC数报告DTC扩展数据记录(19h 06h):

1)使用DTC码报告DTC扩展数据记录子功能服务,诊断工具可以依据DTC码和DTC 展数据的记录号码读取DTC扩展数据。此种情况下,ECU须在其支持的所有DTC中查找与诊断工具 定义的DTC掩码记录完全匹配的DTC。响应须包含一个预定义的DTC扩展数据记录;

2) DTC扩展数据记录中报告的数据的结构由DTC扩展数据记录号码定义,方法类似于在数据 识符中数据的定义。响应可以包括多组DTC扩展数据记录数和对应的DTC扩展数据记录。一个 DTC可以存储不同类型的DTC扩展数据记录;

3) 如果诊断工具已经设置DTC扩展数据记录为FFh ECU须在一个响应报文中包含该DTC 对应存储的所有扩展数据的记录;

4)如果参数DTC码或DTC扩展数据记录号码无效或不被支持, ECU应发送否定响应;

5)当诊断工具发送清除诊断信息(14h) 服务时, 扩展数据信息须被清除。

e)DTC信息报告支持的DTC  (19h 0Ah):

1)使报告支持的DTC子功能服务,诊断工具可以通过该诊断服务获取ECU支持的所有 DTC此响应包含DTC状态有效掩码(DTCStatusAvailabilityMask),用于表示ECU支持的DTC 态位。另外, 响应报文还包含了DTC和状态记录列表(listOfDTCAndStatusRecord),包含了DTC 码和ECU支持的每个DTC状态。

你可能感兴趣的:(数学建模)