DTC 19服务学习2

news2024/10/1 12:16:54

紧跟上篇
0x04 reportDTCSnapshotRecordByDTCNumber
通过DTC和快照序列来获取DTC快照记录。

适用以下假设:
— 服务器支持存储给定 DTC 的两个 DTCSnapshot 记录的能力。
— 此示例假定是上一个示例的延续。
— 假设服务器请求服务器存储的 DTC 编号 123456 的两个 DTCSnapshot 记录中的第二个(请参阅前面的示例,其中将 02 的 DTCSnapshotRecordCount 返回给客户端)。
— 假设 DTC 123456 的 statusOfDTC 为 24,并且每次出现 DTC 时都会捕获以下环境数据。
— DTCSnapshot 记录数据通过数据标识符 4711 引用。
直接看例子

  • 本例中同样假设DTCSnapshotRecordNumber对服务端来说是唯一的(这里唯一的意思是说对于任何DTC,只要有Snapshotrecord,则DTCSnapshotRecordNumber就会累加一个)。 实际情况中可能有不同的定义方式,比如可以对每一个DTC都有一个DTCSnapshotRecordNumber序列,或者对某几个DTC有一个DTCSnapshotRecordNumber的序列。
  • 上图响应信息中,byte 7 (DTCSnapshotRecordNumber)为DTCSnapshot的序号, 当DTCSnapshotRecordNumber为全局唯一时, reportDTCSnapshotRecordByDTCNumber以及下一节要介绍的reportDTCStoredDataByRecordNumber都可用,但是当DTCSnapshotRecordNumber不是全局唯一时, 下一节要介绍的reportDTCStoredDataByRecordNumber功能就不可用,因为这时候给定一个DTCSnapshotRecordNumber不能唯一的确定是哪一个DTC的DTCSnapshotRecord。
  • 响应信息中,byte 8 (DTCSnapshotRecordNumberOfIdentifiers)为 dataIdentifier的序号,此例中只有一个dataIdentifier (0x4711), 所以DTCSnapshotRecordNumberOfIdentifiers的值为0x01,若有多个dataIdentifier,其值会继续增加下去。
  • dataIdentifier是数据ID,dataIdentifer 与 Snapshot record的内容相关联:一个dataIdentifier对应一组Snapshot record content。 当一个dataIdentifier 只涉及到所有数据中的一部分数据,而又需要所有数据时,就需要多个dataIdentifier。
  • ISO14229中并没有对dataidentifier的长度(本例中2个字节)以及DTCSnapshotRecord内容的长度(本例中5个字节)做强制规定。

0x06 reportDTCExtDataRecordByDTCNumber
reportDTCExtendedDataRecordByDTCNumber,它的功能是根据客户端请求的DTC,返回一个DTCExtendedDataRecord。 其功能与reportDTCSnapshotRecordByDTCNumber类似, 区别只是reportDTCSnapshotRecordByDTCNumber返回的是DTCSnapshotRecord 而reportDTCExtDataRecordByDTCNumber返回的是DTCExtendedDataRecord。 与reportDTCSnapshotRecordByDTCNumber一样,客户端请求是发送的DTCNumber叫做DTCMaskRecord,实际并没有”Mask”的功能,服务端会查找与DTCMaskRecord完全匹配的DTC。

通常情况下(客户端请求时的DTCExtDataRecordNumber不等于0xFE或0xFF,注意这点ISO14229(2013)与ISO14229(2006)不同,ISO14229(2006)只有不等于0xFF这一个例外), 服务端只会返回客户端1条预定义的DTCExtendedData 记录,否则服务端会返回存储的所有DTCExtendedData records。 DTCExtDataRecord(ISO14229(2006)此处名称为DTCExtendedDataRecord)的格式与内容由整车厂定义, DTCExtDataRecord中的数据结构由DTCExtDataRecordNumber定义,定义方式与reportDTCSnapshotRecordByDTCNumber中的dataIdentifier相似。

如果客户端请求的DTCMaskRecord 或者 DTCExtDataRecordNumber不可用或者服务端不支持,服务端会否定响应。关于否定响应ISO14229(2006)与ISO14229(2013)也有不同, ISO14229(2013)中规定,如果客户端请求DTCExtDataRecordNumber为0xFE,但是服务端不支持OBD相关的扩展数据(0x90-0xEF)时同样会产生否定响应。

使用ISO14229中的例子,做如下假设:

对于某个给定的DTC,服务端最多只能存储2个DTCExtendedData。
假设客户端请求DTC(0x123456)所有可用的DTCExtendedData。
假设DTC(0x123456)的statusOfDTC 为0x24,且随后的扩展数据是可用的。
DTCExtendedData通过DTCExtDataRecordNumbers 0x05 和0x10引用,这两个

客户端请求信息中DTCExtDataRecordNumber的值为0xFF,表示请求所有符合条件的记录,服务端将返回所有可用的(本例子中2个)DTCExtendedData。

与reportDTCSnapshotRecordByDTCNumber中的DTCSnapshotRecord类似,ISO14229中也未对reportDTCExtDataRecordByDTCNumber中的DTCExtDataRecord长度做强制规定, 虽然本例中的长度为1个字节,但是具体长度整车厂可以自行定义,更加灵活的是,不同的DTCExtDataRecord的长度也不必完全一致(本例中都为1个字节)。

0x0A reportSupportedDTCs
这个相对比较好理解,报告所有支持的DTC,用于获取ECU支持的所有DTC


DTC有0x123456 状态码是0x24,0x234505,status:0, 0xABCD01,status:0x2F。

0x42 reportWWHOBDDTCByStatusMask
WWHOBDDTC是一种车辆故障码的标准格式,它的全称是:

World-Wide Harmonized On-Board Diagnostic Diagnostic Trouble Code

可以翻译为:全球统一的车载诊断故障码。

WWHOBDDTC规定了车辆故障码的标准化格式,目的是为了实现不同车型和不同车辆制造商之间故障码的统一和兼容。

具体来说,WWHOBDDTC格式的故障码由五个部分组成:

P - 表示故障码系统,如P0xxx表示引擎系统故障码。

B - 表示故障码种类,如P0101表示燃油系统故障码。

X - 表示故障码具体代码,如P0101表示燃油系统稀释度传感器故障。

Y - 表示故障次序,如重复故障则编号增加。

Z - 表示车系或发动机型号,如丰田卡罗拉则填写TMC。

采用这个标准格式后,无论什么车型出现什么故障码,它的含义和定位都将是统一和通用的。这对维修技术人员和故障诊断工具来说都很重要,有利于快速准确地诊断问题。WWHOBDDTC目前已成为车辆故障码的国际标准。

此示例演示了用于确认 DTC(DTC 状态掩码 08)的 reportWWWHOBDDTCByMaskRecord SubFunction 参数的用法。该车辆使用 CAN 总线连接两个排放相关服务端(ECU)。
客户端使用以下请求参数设置:
—FunctionalGroupIdentifier = 33(排放系统组),
—DTCSeverityMaskRecord.DTCSeverityMask = FF(报告具有任何严重性和类别状态的 DTC)
—DTCSeverityMaskRecord.DTCStatusMask = 08(报告已确认 DTC 状态 = ’ 的 DTC) 1’)。
服务器支持以下设置:
— FunctionGroupIdentifier = 3316(排放系统组)
— DTCStatusAvailabilityMask = FF16
— DTCSeverityAvailabilityMask = FF16
— DTCFormatIdentifier = SAE_J2012-DA_DTCFormat_04 = 04。

在以下示例中,服务器 #1 仅报告 DTC P2522-1F A/C 请求“B” - 电路间歇性 (25221F),因为 2F (0010 1111) 的 statusOfDTC 与客户端定义的状态掩码 08(0000 1000) 匹配。服务器 #2 报告 DTC P0235-12 涡轮增压器/增压器升压传感器“A”电路对电池短路,因为 2E(0010 1110) 的 statusOfDTC 与客户端定义的状态掩码 08(0000 1000)匹配。

参考:https://blog.whatsroot.xyz/2019/03/02/UDS-DTC-introduction/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/905365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学会动态规划】环绕字符串中唯一的子字符串(25)

目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 动态规划怎么学? 学习一个算法没有捷径,更何况是学习动态规划, 跟我…

使用 Amazon Redshift Serverless 和 Toucan 构建数据故事应用程序

这是由 Toucan 的解决方案工程师 Django Bouchez与亚马逊云科技共同撰写的特约文章。 带有控制面板、报告和分析的商业智能(BI,Business Intelligence)仍是最受欢迎的数据和分析使用场景之一。它为业务分析师和经理提供企业的过去状态和当前状…

尝试自主打造一个有限状态机(一)

前言 我们都知道Unity有自带的有限状态机Animator,它的功能非常强大,为了探索它背后的原理,我开启了这个系列的文章,尝试通过自主打造一个有限状态机来理解Animator的工作原理,同时我会将这个状态机应用于实际&#xf…

unity 之 Input.GetMouseButtonDown 的使用

文章目录 Input.GetMouseButtonDown Input.GetMouseButtonDown 当涉及到处理鼠标输入的时候,Input.GetMouseButtonDown 是一个常用的函数。它可以用来检测鼠标按键是否在特定帧被按下。下面我会详细介绍这个函数,并举两个例子说明如何使用它。 函数签名…

美国陆军希望大数据技术能够帮助保护其云安全

随着陆军采用更大型的云服务,一位高级官员警告说,一些在私营部门有效的快速软件开发技巧和简单解决方案(例如开放代码库)如果没有额外的安全性,将无法为军队工作。 我们知道现代软件开发确实依赖于第三方库&#xff…

基于知识蒸馏的两阶段去雨、雪、雾算法调试记录

前言 该项目的介绍可以参考博主这篇博文:基于知识蒸馏的去雪、去雾、去雨算法 调试过程 该项目中inference.py可以直接使用,只要将student的权重文件放入即可,博主实验过其去噪后的结果,貌似是变清晰了一点。但train时的meta里的…

lnmp(docker)

1. 建立工作目录 [rootdocker ~]# mkdir /opt/nginx [rootdocker ~]# cd /opt/nginx [rootdocker nginx]# rz -E rz waiting to receive. #上传 nginx 安装包 nginx-1.12.0.tar.gz[rootdocker nginx]# rz -E rz waiting to receive. #上传 wordpress 服务包 wordpress-4.9.4-z…

使用shell脚本批量curl调用接口

文章目录 [toc] 1. 批量调用接口的方式1.1)方式一:业务代码 curl1.2)方式二 : shell curl 2.curl和wget的使用2.1)wget2.2) curl2.2.1) curl发送POST请求2.2.2) curl发送GET请求2.2.3) 参数有其他类型 3. shell脚本4. 从windows…

深度学习最强奠基作ResNet《Deep Residual Learning for Image Recognition》论文解读(上篇)

1、摘要 1.1 第一段 作者说深度神经网络是非常难以训练的,我们使用了一个残差学习框架的网络来使得训练非常深的网络比之前容易得很多。 把层作为一个残差学习函数相对于层输入的一个方法,而不是说跟之前一样的学习unreferenced functions 作者提供了…

【算法刷题之链表篇(1)】

目录 1.leetcode-82. 删除排序链表中的重复元素 II(1)题目描述(2)方法及思路(一次遍历)(3)代码实现 2.leetcode-19. 删除链表的倒数第 N 个结点(1)题目描述&a…

push github

一、生成密钥 打开git bash执行下面指令,Enter下一步Enter下一步..生成ssh key 密钥; ssh-keygen -t rsa 二、 复制公共密钥到git hub 登录github,在选项setting >> SSH and GPG key >> add new ssh添加刚才的公钥地址即可 验证…

大数据-玩转数据-Flink营销对账

一、说明 在电商网站中,订单的支付作为直接与营销收入挂钩的一环,在业务流程中非常重要。对于订单而言,为了正确控制业务流程,也为了增加用户的支付意愿,网站一般会设置一个支付失效时间,超过一段时间不支…

Codeforces Round 890 (Div. 2) E2. PermuTree (hard version) (主席树/树状数组/差分+前缀和)

题目 有一个初始为空的数组&#xff0c;你需要处理q(q<1e6)次操作&#xff0c;操作分四种&#xff1a; ① x&#xff0c;数组后面加一个新的数x ② - k&#xff0c;删掉数组最后面的k个值 ③ !&#xff0c;回滚最后一次变更&#xff08;只有①操作和②操作视为变更&…

Leetcode刷题之快乐数

题⽬描述&#xff1a; 算法原理: 为了⽅便叙述&#xff0c;将「对于⼀个正整数&#xff0c;每⼀次将该数替换为它每个位置上的数字的平⽅和」这⼀个 操作记为 x 操作&#xff1b; 我们做这道题可以参考环形链表:142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09;…

在线HmacSHA224加密工具--在线获取哈希值又称摘要

具体请前往&#xff1a;在线计算HmacSha224工具

Internet Download Manager2023下载器最新中文版本功能

对于idm相信大家都不陌生&#xff0c;全称是Internet Download Manager。idm是一款非常经典、功能强大的Windows文件多线程下载加速软件&#xff0c;在电脑用户中口碑极好&#xff0c;被称为必装的HTTP下载神器。 1、idm既是下载器&#xff0c;也是加速器&#xff0c;可以提升…

next.js 创建 react ant design ts 项目

环境说明&#xff1a;next.js 官方文档要求node版本在16.8以上。笔者使用的 node版本是16.20.1&#xff0c;不要使用16.13.0&#xff0c;笔者在使用 node16.13.0环境时创建的 react 项目点击事件无效 next.js官网截图 next.js 官网&#xff1a;https://nextjs.org/ react 官网…

个人信息保护影响评估(PIA)怎么做?解发条件、实施步骤、操作指南

个人信息保护一直是人们关注的热点话题&#xff0c;互联网、人工智能、大数据等新兴技术的快速发展极大地增强了入侵个人信息的能力&#xff0c;对个人信息的随意收集、违法获取、过度使用、非法买卖、泄露等问题引起了全球各国的普遍关注。同时随着用户的个人信息保护意识的逐…

Flask模型部署教程?

如何使用Flask框架来部署机器学习模型&#xff1f;Flask是一个轻量级的Python Web框架&#xff0c;它非常适合用于将机器学习模型部署成实际应用。 什么是Flask&#xff1f; Flask是一个Python Web应用框架&#xff0c;它允许轻松地构建Web应用程序。它被广泛用于构建各种Web…

基于Java+SpringBoot+Vue的校企合作项目管理系统【源码+论文+演示视频+包运行成功】

博主介绍&#xff1a;✌擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案…