首页 > 其他分享 >UDS之19服务中04子服务:读取快照数据

UDS之19服务中04子服务:读取快照数据

时间:2023-04-19 11:23:24浏览次数:34  
标签:UDS 服务 读取 04 DTC 19 快照

背景介绍

 

 

在车载诊断中常用的诊断协议有ISO 14229等,在协议中主要定义了诊断请求、诊断响应的报文格式及ECU该如何处理诊断请求的应用。其中ISO 14229系列标准协议定义了用于行业内诊断通信的需求规范,也就是UDS。UDS主要应用于OSI七层模型的第七层——应用层,它支持的汽车总线包括:CAN、LIN、FlexRay、Ethernet及K-LINE。UDS中的服务根据其功能分为6大类,共26种。其中包含的0x19服务(ReadDTCInformation)则是UDS中的重中之重。那么我们今天就一起进入到19服务中,感受其中的奥秘。

 

 

服务介绍

 

 

19服务(ReadDTCInformation)用于读取ECU的DTC故障信息,此服务允许客户端从服务器读取诊断故障代码(DTC)的相关信息。此服务包含28个子服务(Subfunction),常用的5种子服务如下:

0x01
reportNumberOfDTCByStatusMask(读取客户端定义状态掩码匹配的DTC数量)

0x02 reportDTCByStatusMask(读取客户端定义状态掩码匹配的DTC)

0x04
reportDTCSnapshotRecordByDTCNumber(检索客户端定义DTC掩码的快照数据)

0x06
reportDTCExtDataRecordByDTCNumber(读取某个DTC及其相关的扩展数据,扩展数据包括DTC状态,优先级,发生次数,时间戳,里程等。)

0x0A reportSupportedDTC(读取ECU支持的所有DTC的状态,包含支持的各个DTC编号以及相关状态)

今天主要解析19服务中的04子服务,也就是检索客户端定义DTC的快照号对应的快照记录数据,在AUTOSAR中也叫冻结帧。

 

 

04子服务介绍

 

 

1、快照数据概念介绍

 

前面讲19服务常用子服务的时候,提到了Subfunction为04的子服务,使用04子服务对服务端进行请求,可以获取DTC发生时记录的快照数据。那04子服务是如何获取快照数据的呢?首先我们需要理解什么是快照数据。从ISO 14229-1协议可知,快照数据为发生某一故障时记录的DTC的电压、发动机转速、时间戳等,从而使工程师在ECU出现故障时能及时了解车辆的历史和实时故障信息。

 

2、报文格式介绍

 

接下来通过介绍19 04子服务请求和响应的报文格式,分析报文中各个字节的相关定义。

 

请求格式

 

 

图1

 

从图1中可知,19 04的请求报文包括四个部分,其中服务ID和Subfunction就不用过多解释了。DTCMaskRecord表示某个故障的DTC,当系统检测到一个故障发生时,则会存储其对应的故障数值,这个故障数值就是DTC。通过读取DTC可知一个故障发生时的具体位置以及原因和类型。通常UDS中DTC占3个字节,OBD Ⅱ占2个字节,在ISO 15031-6中定义的DTC由两个字节根基和一个字节的故障类型组成。我们通常用到的DTC格式都是由ISO 15031-6中定义的。图2是ISO 15031-6中定义的DTC的两个字节根基,图中很详细地解释了每一个Bit的含义。

 

 

图2

 

SnapshotRecordNumber需要提前定义,可以有多个。如SnapshotRecordNumber设置为FF,则表示读取所有的快照数据组。

 

响应格式

 

 

图3

 

图3为响应报文格式,当使用19 04对ECU进行请求时,ECU给出的肯定响应的报文格式由七部分组成。此时的DTCAndStatusRecord由三个字节的DTC和一个字节的StatusOfDTC组成,StatusOfDTC表示DTC的状态。假设现在的DTC状态为0x09,则Bit0和Bit3置1。如某个DTC一直存在并且确认,则在ECU响应的报文中的StatusOfDTC为0x09。如图4

 

 

图4

 

SnapshotRecordNumber这个字节表示DTC快照记录的组号;


DTCSnapshotRecordNumberOfldentifiers表示快照DID的个数,占一个字节;Dataldentifier这部分由两个字节组成,表示快照数据对应的DID,DTCSnapshotRecord表示快照DID对应的具体数据。

 

3、实例分析

 

前面介绍了19 04子服务请求和响应的报文格式。掌握了理论知识,那么现在我们就到实例中去具体分析,从而加深对19 04子服务如何读取快照数据的过程的理解。

 

客户端对服务端发起一个读取DTC快照的请求。当前DTC为0x123456,可以假设这是一个转向灯的故障码,0x02为快照记录组号。请求报文如图5所示。

 

 

图5

 

服务端端对客户端回复了一个肯定响应。从图6中可知,当前的DTC状态掩码为0x24,0x01表示只有一个快照DID,当然也可以包含多个快照DID,可以分别表示车速、电压等。如果有两个快照DID,此时


DTCSnapshotRecordNumberOfldentifiers这个字节为0x02。快照DID为0x4711,如果此时记录的是转向灯故障时当前车速的数据,那么这个0x4711则表示此时快照数据的名称——车速。

 

DTCSnapshotRecord为具体的快照数据0xA666075020,以16进制数值表示,通过数据类型解析后就可以得到具体的车速等信息。

 

 

图6

4.在CANdelaStudio中如何设置

 

接下来我们看看在CANdelaStudio中如何设置19 04服务的请求及响应参数,步骤如下:

 

①配置DTC信息

 

在这个界面如图7,可以进行“DTC Code”的新增与删减,点击现有的信息可进行编辑改动;

 

 

图7

②设置服务

 

在左侧目录切换到“Base Variant”下的“Supported Diagnostic Classes”,点击“Fault Memory”;

 

图8

 

点击图9上面标签页中的“DTCs”,然后会跳转到图9所示界面,将我们前面配置的DTC信息更新到这里来,如图9所示,当前DTC为0x123456。

 

 

图9

 

点击图10上面标签页中的“Snapshot Records”,然后会跳转到图10所示界面,在这里设置快照记录组号。

 

 

图10

③设置肯定响应参数

 

首先根据客户的需求设置ECU支持的DTC状态位DTCStatus,如图11;

 

 

图11

 

然后在“DTCs”页面选中名为0x123456的DTC,在“Individual for DTC P123456”下设置快照数据。例如图12中现在定义的快照DID为4711,具体的快照数据是当前车辆的Wheel Speed FR等。快照DID可以在“DIDs”中提前定义。到这里,在CANdelaStudio中关于19 04服务的请求及响应参数就设置完成了。(软件界面截图来源于CANdelaStudio 16.0版本)

 

 

图12

 

总结

 

 

19 04服务的目的是读取对应DTC的快照数据,从而使工程师在进行诊断时更加快速了解故障发生时的车辆状况信息。除此之外,19服务还有其他4个常用的Subfunction,大家可以根据ISO 14229-1中的相关解释和实例进行知识扩展。

 

北汇信息专注于汽车电子网络通信、诊断刷写、逻辑功能测试开发服务,期待进一步沟通交流、共享合作的机会。

 

参考文档:ISO 14229-1(2020)

 

 

 

翻译

搜索

复制

<iframe></iframe>

标签:UDS,服务,读取,04,DTC,19,快照
From: https://www.cnblogs.com/polelink/p/17332692.html

相关文章

  • LWC_004_异步等待
    constpromise=newPromise((resolve,reject)=>{setTimeout(()=>{this[NavigationMixin.Navigate]({type:'standard__webPage',......
  • 基于UDS的DoIp实现(五) -- UDS单帧、多帧处理
    通常来讲,上位机一般只会发送8个字节数据,那么对于UDS,只需要处理这个8个字节就可以,这里也不会涉及大数据传输。但是,有些机器,比如毫米波雷达,其设计是64位,那么每次发送的数据,按照单帧的处理,是无法接收完全的,这个时候就需要进行多帧处理。一、单帧二、多帧 以下列举部分帧类型,......
  • .NET周报 【4月第3期 2023-04-15】
    国内文章SemanticKernel入门系列:......
  • 产品原型15-20230418
               ......
  • Contest 23-04-18
    #D.糖果镇思路\(m=3\)时整个路径有两个拐点,分别是\(m=1\tom=2,m=2\tom=3\)设拐点\(1\)在第\(i\)列,拐点\(2\)在第\(j\)列,则路径上的数字总和为\((front[1][i])+(front[2][j]-front[2][i-1])+(back[j])\)(\(front[i][j]\)表示第i行\(1\toj\)的前缀和,\(back[j]\)表......
  • java学习日记20230414-HashSet源码
    HashSetHashSet底层是HashMap添加一个元素时,先得到Hash值,会转化成索引值;找到存储数据表table,看这个索引位置是否存放元素;如果没有直接加入如果有,调用equals比较,如果相同放弃添加,如果不同,则添加到最后在java8中,如果一条链表的元素个数到达TREEIFY_THRESHOLD(默认是8)(table表......
  • UD PCIe-404全国产信号处理模块V7
    UDPCIe-404全国产化信号处理模块为标准PCIe全高的结构,对外支持PCIe3.0×8通信,也可以采用千兆以太网(RJ45连接器)、万兆以太网(或RapidIO、Aurora,QSFP+连接器)接口进行通信,支持多板级联,模块为100%国产化设计(同时也兼容进口器件)。FPGA芯片可选上海复旦微或深圳国微公司的V7-690T,两组DD......
  • Ubuntu 18.04 下载安装 llvm (version >= 11)
    添加源你可以在llvm找到适合特定版本的Ubuntu源。cd/etc/aptsudocpsources.listsoures.list.barksudovimsources.list#将下面的llvm源(适用于Ubuntu18.04)粘贴进去debhttp://apt.llvm.org/bionic/llvm-toolchain-bionicmaindeb-srchttp://apt.llvm.org/bionic/......
  • docker04 dockerfile常用命令 docker私有仓库 dockercompose介绍与部署
    今日内容详细目录今日内容详细1Dockerfile1.1常用和不常用命令1.2dockerfile构建一个django项目2docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建3dockercompose介绍4dockercompose部署4.1新建flask项目app.py4.2编写Dockerfile-->用于构建flask项目......
  • 【愚公系列】2023年04月 .NET CORE工具案例-DeveloperSharp的使用(数据库)
    (文章目录)前言DeveloperSharp是一个研发中大型项目必备的系统平台。也是一个低代码平台。它主要包括了如下一些功能:基于Sql语句、存储过程、事务、分页的数据库操作。并几乎支持市面上所有种类的数据库。图片操作。裁剪、缩放、加水印。http请求调用(Post与Get)高效分页We......