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

    文章

    6873

    浏览量

    88801
  • 服务
    +关注

    关注

    0

    文章

    75

    浏览量

    18495
收藏 人收藏

    评论

    相关推荐

    飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建SSH服务搭建

    SSH为Secure Shell的缩写,由IETF的网络小组(Network Working Group)所制定的建立在应用层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供
    发表于 09-29 09:48

    飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建SSH服务搭建

    on :: port 22. 8月 23 17:19:57 ubuntu systemd[1]: Started OpenBSD Secure Shell server. 4.关闭SSH服务
    发表于 09-27 09:06

    请问websocket库怎么读取服务器发来的数据?

    官方websocket库怎么读取服务器发来的数据?
    发表于 06-25 06:40

    蓝牙开启自定义服务之后,添加了一个服务,怎么添加第二服务啊?

    蓝牙开启自定义服务之后,添加了一个服务,怎么添加第二服务啊 按照我的理解,在创建第一个
    发表于 06-19 08:32

    服务数据恢复—异常断电导致VMware虚拟机无法启动的数据恢复案例

    服务数据恢复环境: 某大厂PS4000服务器,服务器上部署VMware ESXi虚拟化平台。 服务器故障: 机房断电,重启后
    的头像 发表于 05-29 11:29 983次阅读
    <b class='flag-5'>服务</b>器<b class='flag-5'>数据</b>恢复—异常断电导致VMware虚拟机无法启动的<b class='flag-5'>数据</b>恢复案例

    服务数据恢复—EVA存储异常断电后出现故障的数据恢复方案

    服务器存储数据恢复环境: 某品牌EVA8400,服务器上安装VMware ESXi虚拟化平台,虚拟机的虚拟磁盘包括数据盘(精简模式)+快照数据
    的头像 发表于 05-28 10:29 323次阅读

    Aurix TC364D是否可以通过某些UDS服务停用HSM?

    我想问一下,是否可以通过某些 UDS 服务停用 HSM? 我们使用的是 Aurix TC364D 混凝土芯片。 我们需要停用的原因是上传的特定测试软件没有网络安全 == 激活 HSM 后,测试软件
    发表于 05-20 07:19

    服务数据恢复—VMware虚拟机无法启动的数据恢复案例

    服务数据恢复环境: 某品牌EVA某型号存储中部署VMware ESXi虚拟化平台,数据盘(精简模式)+快照数据盘,虚拟机中有mysql数据
    的头像 发表于 05-06 13:26 452次阅读

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

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

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

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

    服务数据恢复—EVA存储数据恢复案例

    服务器存储的所有磁盘编号后取出,硬件工程师检测后发现掉线硬盘不存在物理故障,也没有发现坏道,都可以正常读取数据
    的头像 发表于 01-23 13:53 415次阅读

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

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

    TFTP服务器是什么如何下载文件

    8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。 如何从TFTP服务器下载文件 客户端会向 TFTP 服务器发送请求
    发表于 12-12 16:06

    UDS29服务:认证服务

    汽车工业的很多领域都有严格的国际标准,其中针对车载诊断的ISO14229规定了车载诊断服务的通用需求(UDS),UDS主要应用于OSI模型的应用层,UDS协议根据功能的不同定义了26种
    的头像 发表于 11-30 08:24 2060次阅读
    <b class='flag-5'>UDS</b><b class='flag-5'>之</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 5258次阅读
    <b class='flag-5'>UDS</b>在CAN和以太网上的实现方案