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

    文章

    7314

    浏览量

    93982
  • 服务
    +关注

    关注

    0

    文章

    76

    浏览量

    18836
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    20个常用服务端口及对应服务信息

    (1) 端口号:21 服务名称:FTP 服务描述:文件传输协议,用于在客户端和服务器之间传输文件。 (2) 端口号:22 服务名称::SSH 服务
    发表于 12-03 06:07

    《CAN(FD)总线十万个为什么》UDS诊断(下)

    在汽车电子诊断领域,UDS协议的传输层由ISO-15765标准定义。这一标准确保了即使在数据量较大的情况下,也能高效、准确地传输诊断信息。今天,我们将深入探讨ISO-15765协议的传输机制。UDS
    的头像 发表于 11-06 11:36 192次阅读
    《CAN(FD)总线十万个为什么》<b class='flag-5'>之</b><b class='flag-5'>UDS</b>诊断(下)

    《CAN(FD)总线十万个为什么》UDS诊断(上)

    在汽车电子的世界里,UDS诊断协议如同一把神奇的钥匙,为工程师和维修人员打开了通往车辆“心脏”的大门。今天,就让我们一起揭开UDS诊断的神秘面纱,探索其在汽车电子行业的重要角色。UDS
    的头像 发表于 11-05 11:35 241次阅读
    《CAN(FD)总线十万个为什么》<b class='flag-5'>之</b><b class='flag-5'>UDS</b>诊断(上)

    【CPKCOR-RA8D1】+ 6. 使用RA8D1实现UDS诊断27安全访问

    访问 SecurityAccess(27h) 27服务提供了一种访问那些权限受限或与排放及安全因素有关的数据服务的方法。 例如,上传/下载程序或数据至 ECU、从 ECU
    发表于 10-26 21:04

    飞凌嵌入式ElfBoard-常用的网络服务的搭建SSH服务搭建

    on :: port 22.8月 23 17:19:57 ubuntu systemd[1]: Started OpenBSD Secure Shell server.4)关闭SSH服务:elf@ubuntu
    发表于 10-24 08:48

    【CPKCOR-RA8D1】+ 5. 使用RA8D1实现UDS诊断协议14229

    上一节,我已经使用RA8D1实现了基于CANFD的DBC协议解析,解释了整车厂的dbc文件。本节来点高端的干货,使用RA8D1实现UDS诊断协议。 终于拿到CANoe了,10多万的仪器,奢侈一下下
    发表于 10-22 18:53

    什么是快照式光谱成像相机?

    相比,快照式技术具有以下优势: 实时性:无需机械扫描,可快速捕捉动态目标(如高速运动物体、活体组织) 无运动伪影:避免因扫描过程的运动导致的图像模糊 高效率:单次成像即可获得完整数据立方体(空间×光谱) 二、
    的头像 发表于 09-12 11:35 494次阅读
    什么是<b class='flag-5'>快照</b>式光谱成像相机?

    ATT读取由组请求CYBLE-416045-02 gatt服务器响应,带有错误的起始和结束属性句柄怎么解决?

    过程,需要经过 ATT 按组类型请求读取,我的服务器响应如下: ... 客户端 ATT 按组请求读取:起始属性句柄 = 70 / 结束属性句柄 = 65535 我的
    发表于 08-14 07:28

    盟通方案|如何集成UDS协议

    UDS诊断协议广泛应用于汽车、重卡等领域的设备诊断和固件更新。该协议主要针对全车ECU进行标准化的数据交互。UDS应用层‌(ISO14229-1)定义了6大类共26项诊断服务,覆盖了E
    的头像 发表于 06-06 14:06 507次阅读
    盟通方案|如何集成<b class='flag-5'>UDS</b>协议

    服务数据恢复—Linux系统服务器崩溃的数据恢复案例

    服务数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程
    的头像 发表于 05-20 15:46 549次阅读

    基于 Wi-Fi 的定位服务

    UTC Google maps URL: https://maps.google.com/?q=59.919015,10.688577 使用 A-GPS 提供基于 GNSS 的定位服务 样本的原始函数
    发表于 04-17 15:16

    鸿蒙元服务实战-笑笑五棋(1)

    -《笑笑五棋》给开源分享出来。 笑笑五棋 笑笑五棋的名字比较朴素,因为 笑笑 这个名字是我女儿的名字,这也应该是众多屌丝程序员独有的浪漫了吧(自嗨)。 界面风格如下: 笑笑五
    的头像 发表于 03-31 09:23 560次阅读
    鸿蒙元<b class='flag-5'>服务</b>实战-笑笑五<b class='flag-5'>子</b>棋(1)

    服务数据恢复—如何预防服务器故障与恢复服务数据

    服务器常见故障: 硬件故障:磁盘损坏、电池故障等。 软件问题:操作系统崩溃、未知的程序运行错误等。 病毒破坏:勒索病毒加密、删除服务数据等。 不可控力量;服务器浸水、火烧、机
    的头像 发表于 03-11 12:36 815次阅读

    使用FPGA调试ADS8332读取数据,读数总是ffff0,为什么?

    您好,我使用FPGA调试ADS8332读取数据,模拟电压为VA=5V,数字电压为VBD=3.3V按照数据手册9页的figure2与figure3设计的波形,设计时延迟时间、保持时间之类的参数也是
    发表于 01-08 08:16