0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

北汇信息POLELINK 2023-04-23 09:32 次阅读

作者 | 小懒小编 | 吃不饱

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


01服务介绍
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中也叫冻结帧。

0204子服务介绍

快照数据概念介绍

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

报文格式介绍

接下来通过介绍19 04子服务请求和响应的报文格式,分析报文中各个字节的相关定义。
49e88146-dee2-11ed-ad0d-dac502259ad0.png图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的含义。

49efe2ce-dee2-11ed-ad0d-dac502259ad0.jpg

图2
SnapshotRecordNumber需要提前定义,可以有多个。如SnapshotRecordNumber设置为FF,则表示读取所有的快照数据组。
49faea34-dee2-11ed-ad0d-dac502259ad0.png图3 响应格式
图3为响应报文格式,当使用19 04对ECU进行请求时,ECU给出的肯定响应的报文格式由七部分组成。此时的DTCAndStatusRecord由三个字节的DTC和一个字节的StatusOfDTC组成,StatusOfDTC表示DTC的状态。假设现在的DTC状态为0x09,则Bit0和Bit3置1。如某个DTC一直存在并且确认,则在ECU响应的报文中的StatusOfDTC为0x09,如图4。
4a036768-dee2-11ed-ad0d-dac502259ad0.png图4
SnapshotRecordNumber这个字节表示DTC快照记录的组号
DTCSnapshotRecordNumberOfldentifiers表示快照DID的个数,占一个字节;Dataldentifier这部分由两个字节组成,表示快照数据对应的DID,DTCSnapshotRecord表示快照DID对应的具体数据。

实例分析

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

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

4a0c047c-dee2-11ed-ad0d-dac502259ad0.png图5

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

快照DID为0x4711,如果此时记录的是转向灯故障时当前车速的数据,那么这个0x4711则表示此时快照数据的名称——车速。DTCSnapshotRecord为具体的快照数据0xA666075020,以16进制数值表示,通过数据类型解析后就可以得到具体的车速等信息。
4a134318-dee2-11ed-ad0d-dac502259ad0.png图6

在CANdelaStudio中如何设置

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

①配置DTC信息

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

4a1dacea-dee2-11ed-ad0d-dac502259ad0.png图7

②设置服务

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

4a27e11a-dee2-11ed-ad0d-dac502259ad0.png图8
点击图9上面标签页中的“DTCs”,然后会跳转到图9所示界面,将我们前面配置的DTC信息更新到这里来,如图9所示,当前DTC为0x123456。
4a3101e6-dee2-11ed-ad0d-dac502259ad0.png图9
点击图10上面标签页中的“Snapshot Records”,然后会跳转到图10所示界面,在这里设置快照记录组号。4a443824-dee2-11ed-ad0d-dac502259ad0.png图10

③设置肯定响应参数

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

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

03总结
19 04服务的目的是读取对应DTC的快照数据,从而使工程师在进行诊断时更加快速了解故障发生时的车辆状况信息。除此之外,19服务还有其他4个常用的Subfunction,大家可以根据ISO 14229-1中的相关解释和实例进行知识扩展。北汇信息专注于汽车电子网络通信、诊断刷写、逻辑功能测试开发服务,期待进一步沟通交流、共享合作的机会。参考文档:ISO 14229-1(2020)注:文中部分图片来源于Vector.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6514

    浏览量

    87610
  • 服务
    +关注

    关注

    0

    文章

    74

    浏览量

    18461
收藏 人收藏

    评论

    相关推荐

    服务数据恢复—分享几个服务数据恢复的案例

    服务数据恢复案例之服务器raid6中3个磁盘离线导致阵列崩溃的数据恢复案例;服务数据恢复案例
    的头像 发表于 03-04 13:21 221次阅读

    虚拟机数据恢复-虚拟机还原快照原理和误还原快照数据恢复方案

    由一台物理服务器迁移到ESXI上的虚拟机,虚拟机迁移完成后做了一个快照,该ESXI上面一共运行了数十台虚拟机。某天工作人员不小心将快照进行了还原,虚拟机内的数据还原到了数年前刚迁移过来
    的头像 发表于 02-27 11:54 411次阅读
    虚拟机<b class='flag-5'>数据</b>恢复-虚拟机还原<b class='flag-5'>快照</b>原理和误还原<b class='flag-5'>快照</b>的<b class='flag-5'>数据</b>恢复方案

    服务数据恢复】服务器迁移数据数据损坏的数据恢复案例

    服务数据恢复环境&服务器故障: 一台安装Windows操作系统的服务器。工作人员在迁移该服务器中数据
    的头像 发表于 01-16 13:19 318次阅读

    UDS之29服务:认证服务

    汽车工业的很多领域都有严格的国际标准,其中针对车载诊断的ISO14229规定了车载诊断服务的通用需求(UDS),UDS主要应用于OSI模型的应用层,UDS协议根据功能的不同定义了26种
    的头像 发表于 11-30 08:24 1347次阅读
    <b class='flag-5'>UDS</b>之29<b class='flag-5'>服务</b>:认证<b class='flag-5'>服务</b>

    UDS在CAN和以太网上的实现方案

    JTAG是针对MCU或者SOC这种芯片的调试接口协议,而UDS更像是针对整个ECU的调试接口。UDS简单来说是一种Client/Server的通信服务,即Tester(诊断仪)向ECU发送诊断
    发表于 11-28 09:56 1134次阅读
    <b class='flag-5'>UDS</b>在CAN和以太网上的实现方案

    服务数据恢复—误还原快照导致SqlServer数据数据丢失的数据恢复案例

    服务数据恢复环境: vmfs文件系统,存放的是SqlServer数据库及其他办公文件。 服务器故障: 工作人员误操作还原快照,导
    的头像 发表于 11-06 15:06 282次阅读

    汽车UDS协议栈与XCP协议栈

    在车辆中进行故障诊断、参数配置和编程等操作。 UDS协议栈通常包含以下功能软件: 通信层:负责处理UDS协议的通信,包括CAN总线通信、LIN总线通信等。 诊断服务:实现了UDS协议定
    的头像 发表于 10-27 16:35 2177次阅读
    汽车<b class='flag-5'>UDS</b>协议栈与XCP协议栈

    UDS诊断的22服务(DID读取数据)和2E服务(DID写入数据)介绍#诊断自动化测试

    自动化测试数据
    北汇信息POLELINK
    发布于 :2023年08月31日 10:32:04

    服务数据恢复-vmware虚拟机误还原快照数据恢复案例

    服务数据恢复环境: 从物理机迁移一台虚拟机到ESXI,迁移后做了一个快照。该虚拟机上部署了一个SQLServer数据库,存放了5年左右的数据
    的头像 发表于 08-30 15:36 528次阅读

    UDS诊断服务响应规则介绍

    15031,ISO 15765,还有我们熟悉的ISO 14229就是UDS协议,在协议里面定义了诊断的请求,诊断响应的报文格式,以及ECU怎样处理诊断请求报文,以及诊断服务的应用。
    的头像 发表于 08-15 17:00 2109次阅读
    <b class='flag-5'>UDS</b>诊断<b class='flag-5'>服务</b>响应规则介绍

    UDS诊断服务介绍之31服务

    根据ISO14119-1标准中所述,诊断服务31服务主要用于实现针对某类测试场景,非正常工况下的程序活动以及其他擦除内存等连续性操作步骤的集合。
    的头像 发表于 08-08 10:48 8064次阅读
    <b class='flag-5'>UDS</b>诊断<b class='flag-5'>服务</b>介绍之31<b class='flag-5'>服务</b>

    什么是DTC快照信息

    什么是DTC快照信息 DTC快照信息是通过UDS协议获取的一种特定数据记录,用于帮助诊断车辆故障。根据ISO 14229标准的规定,DTC快照
    的头像 发表于 07-26 11:13 2044次阅读
    什么是DTC<b class='flag-5'>快照</b>信息

    【野火】瑞萨RA MCU创意氛围赛+ 基于CAN总线的UDS诊断升级MCU /bootloader/UDS诊断/14229/15765

    基于can总线的UDS软件升级 最近学习UDS诊断协议(ISO14229),是一项国际标准,为汽车电子系统的诊断通信定义了统一的协议和服务。它规定了与诊断相关的
    发表于 06-13 01:26

    UDS常用诊断服务

    UDS诊断概述 UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是在汽车电子ECU环境下的一种诊断通讯协议。简单来说,可以理解为UDS诊断协议就
    的头像 发表于 06-12 10:36 4467次阅读
    <b class='flag-5'>UDS</b>常用诊断<b class='flag-5'>服务</b>

    UDS基础知识介绍

    UDS(Unified Diagnostic Services 统一的诊断服务)是一种通用的诊断服务标准,用于汽车电子控制单元(ECU)的诊断和调试。
    的头像 发表于 05-30 10:57 1w次阅读
    <b class='flag-5'>UDS</b>基础知识介绍