UDS诊断系列之二十 读取故障码(DTC)的快照信息和扩展数据

一、快照信息和扩展数据的定义

除了DTC本身之外,项目中最常用的功能就是快照信息和扩展数据。
快照信息:和我们平时拍照片一样,在诊断的范畴内,快照的意思就是给当时的系统拍一张照片,保留必要的状态信息。有了这些信息,在后续做DTC分析的时候,就可以根据系统情况分析根本原因或者对DTC进行复现。
扩展数据:扩展数据主要保存的信息是针对DTC本身的一些属性,如发生过多少次,清除过多少次等等。这些信息的主要作用是用来了解故障发生的历史,以此来判断故障指向的硬件或者软件是否真的有问题。
不管是快照信息还是扩展数据,一般OEM都会在下发的规范中定义清楚,然后释放给开发人员。

二、读取快照信息

1.请求报文

读取快照信息主要使用的是19服务的04子功能,有时候也需要03子功能来配合确认支持的快照内容,请求报文的格式如下:
读取快照信息
前面两个字节属于固定格式,跟19服务其他子功能一样,都是服务ID和子功能ID。
当子功能是03(reportDTCSnapshotIdentification)时,后面不需要其他参数,它请求的是ECU支持的所有的DTC和其快照记录编号。
当子功能是04(reportDTCSnapshotRecordByDTCNumber)时,有两个参数用来确定要读取的快照内容:

  • DTCMaskRecord:即故障码(DTC),因为每个故障码(DTC)都会有单独的快照信息,所以这个参数用来指定要读取哪一个故障码的快照信息;
  • DTCSnapshotRecordNumber:快照记录编号,每个故障码(DTC)都可以支持多个快照记录编号,除了0xFF之外每个记录编号指向不同的数据,因为当ECU收到的快照记录编号是0xFF时,需要响应所有快照信息。

2.响应报文

03(reportDTCSnapshotIdentification)子功能的报文格式如下表所示,在服务响应ID 0x59和子功能0x03之后,需要列出每一个已经保存了快照数据的DTC和其支持的快照编号。
在这里插入图片描述在这里插入图片描述
04(reportDTCSnapshotRecordByDTCNumber)子功能的响应格式如下表所示,稍微复杂一些。在服务响应ID和子功能之后,先是被请求的故障码(DTC)和故障码的状态,然后是一组或多组快照记录信息。
快照记录信息包含如下内容:

  • 快照记录编号:每组快照记录信息都包含一个字节的快照记录编号,该编号和请求保持一致;
  • 快照记录ID数量:每个快照记录编号都包含多个快照记录ID,这里用一个字节表示该快照记录编号即该组快照记录信息所包含的快照记录ID数量;
  • 快照记录:从格式上看,和22服务读取多个DID的数据格式一样,整体就是快照记录ID+快照记录数据;
    • 快照记录ID:两个字节,和22服务的DID是一个东西,有时候数据定义都可以是一样的;
    • 快照记录数据:针对每个快照记录ID都有对应的数据格式,其形式也和22服务的DID定义一样,一个DID里面可以包含多种类型的数据。
      注:只有当请求的快照记录编号是0xFF的时候,才会响应多组快照记录信息,因为0xFF表示请求故障码(DTC)支持的所有快照信息。
      在这里插入图片描述

三、读取扩展数据

1.请求报文

读取扩展数据使用的是19服务的06子功能,请求报文格式如下:
在这里插入图片描述
请求报文格式和读取快照(0x04)基本一致,只是最后一个字节定义由快照记录编号(DTCSnapshotRecordNumber)变成了扩展数据编号(DTCExtDataRecordNumber),两者用途一样都是用来对数据进行分组的。

2.响应报文

响应报文格式和读取快照信息的报文格式也是很像,不同的是从DTCAndStatusRecord之后,快照记录信息变成了扩展数据信息。
扩展数据信息包含如下内容:

  • 扩展数据编号:每组扩展数据信息都包含一个字节的扩展数据编号,可以理解为22服务的一个DID,只不过这里是一个字节,该编号和请求保持一致;
  • 扩展数据记录:每组扩展数据信息都包含至少一个字节的扩展数据,就像22服务每个DID的数据格式一样,可以自定义数据格式;
    注:只有当请求的扩展数据编号是0xFE/0xFF的时候,才会响应多组快照记录信息,因为0xFE/0xFF表示请求故障码(DTC)支持的OBD/所有快照信息。
    在这里插入图片描述

四、否定响应

如果被请求的故障码(DTC)没有与之关联的快照信息或扩展数据,那么ECU应当仅响应格式里面的故障码和状态信息,不包含后面的记录内容。
如果被请求的故障码(DTC)或者快照记录/扩展数据编号是未定义的,那么ECU应当响应NRC31-requestOutOfRange。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChenglimK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值