【AutoSar_UDS服务】0x19服务_读取DTC信息

1 术语解释

1.1 缩略语

缩写描述解释
DTCDiagnostic Trouble Code诊断故障码
DcmDiagnostic Communication Manager诊断通信管理
DemDiagnostic Event Manager诊断事件管理
SIDService identify服务标识符
NRCNegetive reponse code否定响应码

2 功能简介

2.1 功能概述

UDS 0x19服务能够让tester读取DTC状态和相关故障信息,而这些数据需要Dcm从Dem模块获取;0x19服务有许多个子服务,如下表:

SF(hex)名称描述
01reportNumberOfDTCByStatusMask检出与客户端定义的DTC状态掩码匹配的DTC数
02reportDTCByStatusMask检出与客户端定义的状态掩码匹配的DTC列表
03reportDTCSnapshotIdentification检出DTC快照记录号
04reportDTCSnapshotRecordByDTCNumber为客户端定义的DTC掩码检出DTC快照数据
05reportDTCStoredDataByRecordNumber为客户端定义的快照记录号检出DTC快照记录数据
06reportDTCExtDataRecordByDTCNumber为客户端定义的DTC掩码和客户端定义的DTCExtendedData记录号检索DTC扩展数据
07reportNumberOfDTCBySeverityMaskRecord检出与客户端定义的严重性掩码记录匹配的DTC的数量
08reportDTCBySeverityMaskRecord检索与客户端定义的严重性掩码记录匹配的严重性和功能单元信息
09reportSeverityInformationOfDTC通过客户端定义的DTC检出严重性和功能单元信息
0AreportSupportedDTC检出服务器支持的所有DTC的状态
0BreportFirstTestFailedDTC检出最老Failed的DTC
0DreportMostRecentTestFailedDTC检出最新Failed的DTC
0CreportFirstConfirmedDTC检出最老Confirmed的DTC
0EreportMostRecentConfirmedDTC检出最新Confirmed的DTC
0FreportMirrorMemoryDTCByStatusMask从服务器DTC mirror内存中检索与客户端定义的状态掩码匹配的DTC列表
10reportMirrorMemoryDTCExtDataRecordByDTCNumber从DTC镜像内存中检索客户端定义的DTC掩码的镜像内存DTCExtendedData记录数据和客户端定义的DTCExtendedData记录号
11reportNumberOfMirrorMemoryDTCByStatusMask检出与客户端定义的状态掩码匹配的镜像内存DTC的数量
12reportNumberOfEmissionsOBDDTCByStatusMask检索与客户端定义的状态掩码匹配的“仅与排放相关的OBD”DTC的数量
13reportEmissionsOBDDTCByStatusMask检索与客户端定义的状态掩码匹配的“仅与排放相关的OBD”DTC列表
14reportDTCFaultDetectionCounter检索“预失败”DTC状态列表
15reportDTCWithPermanentStatus检索具有“永久DTC”状态的DTC列表
16reportDTCExtDataRecordByRecordNumber为客户端定义的DTCExtendedData记录号检索DTCExtendedData记录数据
17reportUserDefMemoryDTCByStatusMask从服务器的用户定义的DTC内存中检索与客户端定义的DTC状态掩码匹配的DTC列表
18reportUserDefMemoryDTCSnapshotRecordByDTCNumber从DTC用户定义内存中检索客户端定义DTC掩码和客户端定义DTCSnapshotNumber的用户定义内存DTCSnapshot记录数据
19reportUserDefMemoryDTCExtDataRecordByDTCNumber从DTC内存中检索客户端定义的DTC掩码和客户端定义的DTCExtendedData记录号的用户定义内存DTCExtendedData记录数据

2.2 服务实现原理

UDS 0x19服务的子服务有很多,这里我们看下常用的几个子服务。

2.2.1 SF_01 reportNumberOfDTCByStatusMask

0x1子服务是为了检出符合DTC状态掩码的DTC数量,其内部交互流程如下图:

Tester Dcm Dem 19 01 09 09是DTC Mask Dem_GetDTCStatusAvailabilityMask() AvailabilityMask Dem_GetTranslationType() Format Dem_SetDTCFilter() Dem_GetNumberOfFilteredDTC() Num 组装Reponse 59 01 [Format] [AvailabilityMask] [Num] Tester Dcm Dem

注: DTCStatusAvailabilityMask是Dem中支持的DTC状态位。

2.2.2 SF_02 reportDTCByStatusMask

0x2子服务是为了检出符合状态掩码的DTC及其DTCstatus, 其内部交互流程如下图:

Tester Dcm Dem 19 02 [DTCmask] Dem_GetDTCStatusAvailabilityMask() AvailabilityMask Dem_SetDTCFilter() Dem_GetNumberOfFilteredDTC() Dem_GetNextFilteredDTC() 组装Reponse loop [获取符合DTCmask的DTC] 59 02 [AvailabilityMask] [DTC_n][Status_n] Tester Dcm Dem

2.2.3 SF_03 reportDTCSnapshotIdentification

0x3子服务主要是为了检出所有捕获的快照记录号,以DTC + RecNum格式置于响应报文中;特殊地,如果一个DTC内捕获了多个快照记录号,那么以DTCa有2个RecNum分别0x1,0x2为例,响应报文中的格式 :[DTCa ] + 01+ [DTCa ] + 02 , 其内部交互流程如下图:

Tester Dcm Dem 19 03 Dem_SetFreezeFrameRecordFilter() Dem_GetNumberOfFreezeFrameRecords() Dem_GetNextFilteredRecord() 组装Reponse loop [获取DTC和RecNum] 59 03 [DTC_n][RecNum_m] Tester Dcm Dem

2.2.4 SF_04 reportDTCSnapshotRecordByDTCNumber

0x4子服务是为了通过客户端定义的DTC掩码检出DTC捕获的一个RecNum或者所有RecNum的快照数据,Dem会将快照数据[FFData]以如下图的格式转发给Dcm:
在这里插入图片描述
注 : 如果请求的RecNum是0xFF,则需要响应所有RecNum及其包含的数据, 其内部交互流程如下图:

Tester Dcm Dem 19 04 [DTC] [RecNum] Dem_SelectDTC() Dem_GetStatusOfDTC() Dem_DisableDTCRecordUpdate() Dem_SelectFreezeFrameData() Dem_GetSizeOfFreezeFrameSelection() Dem_GetNextFreezeFrameData() 组装buffer FFData loop [获取FFData] Dem_EnableDTCRecordUpdate() 组装Reponse 59 04 [DTC][status][FFData] Tester Dcm Dem

2.2.5 SF_05 reportDTCStoredDataByRecordNumber

0x05服务是为了为客户端定义的快照记录号检出DTC快照记录数据,其内部交互流程如下图:

Tester Dcm Dem 19 05 [DTCStoredDataRecNum] Dem_DcmGetDTCOfOBDFreezeFrame() Dem_SelectDTC() Dem_GetStatusOfDTC() Dem_DcmReadDataOfOBDFreezeFrame() 组装buffer loop [获取DID和Data Element] 组装Reponse 59 05 [DTCStoredDataRecNum] [DTC][status][FFData] Tester Dcm Dem

注:该子服务使用于读取OBD的快照数据,且DTCStoredDataRecordNumber只能为0x00。

2.2.6 SF_06 reportDTCExtDataRecordByDTCNumber

0x06服务是为了为客户端定义的DTC掩码和客户端定义的DTCExtendedData记录号检索DTC扩展数据,其内部交互流程如下图:
Dem扩展数据组装格式

Dem扩展数据组装格式

Tester Dcm Dem 19 04 [DTC] [EXTRecNum] Dem_SelectDTC() Dem_GetStatusOfDTC() Dem_DisableDTCRecordUpdate() Dem_SelectExtendedDataRecord() Dem_GetSizeOfExtendedDataRecordSelection() Dem_GetNextExtendedDataRecord() 组装buffer ExtData loop [获取ExtendedData] Dem_EnableDTCRecordUpdate() 组装Reponse 59 06 [DTC][status][EXTRecNum][Ext Data] Tester Dcm Dem

2.2.7 SF_0a reportSupportedDTC

0x0a子服务是为了检出服务器支持的所有DTC及其状态,其内部交互流程如下图:

Tester Dcm Dem 19 0a Dem_GetDTCStatusAvailabilityMask() AvailabilityMask Dem_SetDTCFilter() Dem_GetNumberOfFilteredDTC() Dem_GetNextFilteredDTC() 组装Reponse loop [获取符合DTCmask的DTC] 59 0a [AvailabilityMask] [DTC_n][Status_n] Tester Dcm Dem

注: 子服务0x1和0xa的实现流程是一样的。

2.3 服务应用场景

3 请求响应定义

3.1 请求消息格式

3.1.1 DTC信息相关子服务请求

在这里插入图片描述
在这里插入图片描述

3.1.2 DTC相关信息子服务请求

在这里插入图片描述
在这里插入图片描述

3.2 肯定响应格式

3.2.1 DTC信息相关子服务响应

在这里插入图片描述
在这里插入图片描述

3.2.2 DTC相关信息子服务响应

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.3 否定响应格式

0x19包含一下NRC码:
在这里插入图片描述

4 参考资料

  1. Specification of Diagnostic Communication Manager AUTOSAR CP R20-11
  2. ISO 14229-1:2013(E)
  3. Specification of Diagnostic Event Manager AUTOSAR CP R20-11
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值