DTC 19服务学习2
紧跟上篇
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/
相关文章:
DTC 19服务学习2
紧跟上篇 0x04 reportDTCSnapshotRecordByDTCNumber 通过DTC和快照序列来获取DTC快照记录。 适用以下假设: — 服务器支持存储给定 DTC 的两个 DTCSnapshot 记录的能力。 — 此示例假定是上一个示例的延续。 — 假设服务器请求服务器存储的 DTC 编号 123456 的两个…...
【腾讯云 TDSQL-C Serverless 产品体验】基于腾讯云轻量服务器以及 TDSQL-C 搭建 LNMP WordPress 博客系统
文章目录 一、前言二、数据库发展与云原生数据库2.1 数据库发展简介2.2 云原生数据库简介2.2.1 云数据库与云原生数据库区别 三、腾讯云 TDSQL-C 数据库3.1 什么是腾讯云 TDSQL-C 数据库3.2 为什么推出 TDSQL-C 数据库?传统 MySQL 架构存在较多痛点3.2.1 传统 MySQL…...
【vue3】对axios进行封装,方便更改路由并且可以改成局域网ip访问(附代码)
对axios封装是在main.js里面进行封装,因为main.js是一个vue项目的入口 步骤: 在1处创建一个axios实例为http,baseURL是基础地址(根据自己的需求写),写了这个在vue界面调用后端接口时只用在post请求处写路由…...
Java IO流(三)线程模型
传统阻塞I/O模式 其中黄色框表示对象,蓝色框表示线程,白色框表示API方法 特点 采用阻塞IO模式获取输入数据每个连接都需要独立的线程完成数据的输入,业务处理和处理结果数据返回 潜在问题 并发数很大时,需要对应每个连接请求创建一个线程,所以占用资源很大连接创建后,若当前…...
string(模拟实现与深拷贝)
目录 深拷贝与浅拷贝 浅拷贝: 深拷贝 写时拷贝(了解) 模拟实现 准备 完整代码 深拷贝与浅拷贝 浅拷贝: 也称位拷贝,编译器只是将对象中的值拷贝过来。如果对象中管理资源,最后就会导致多个对象共享同一份资源,当一…...
5.Vue_Element
文章目录 1 Ajax1.1 Ajax介绍1.1.1 Ajax概述1.1.2 Ajax作用1.1.3 同步异步 1.2 Axios1.2.1 Axios的基本使用1.2.2 Axios请求方法的别名 2 前端工程化2.1 前端工程化特点2.2 Vue项目开发流程 3 Vue组件库Element3.1 Element介绍 1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 Ajax: 全…...
链路追踪jaeger
这里的链路指的是客户端向服务发起一个请求,该请求所经过的路线,也可以说是该请求经过的流量 例如: 客户端发起一个下订单的请求其流量过程: request—>service—>order-web—>order_srv—>mysql—>order_srv—&…...
神经网络基础-神经网络补充概念-42-梯度检验
概念 梯度检验(Gradient Checking)是一种验证数值计算梯度与解析计算梯度之间是否一致的技术,通常用于确保实现的反向传播算法正确性。在深度学习中,通过梯度检验可以帮助验证你的神经网络模型是否正确地计算了梯度,从…...
<kernel>kernel 6.4 USB-之-hub_port_connect()分析
<kernel>kernel 6.4 USB-之-hub_port_connect()分析 kernel 6.4 USB系列文章如下: <kernel>kernel 6.4 USB-之-hub_event()分析 <kernel>kernel 6.4 USB-之-port_event()分析 <kern…...
linux驱动学习3-外部中断
在做中断试验时,发现中断驱动总是insmod失败,之后定位到 gpio_request 失败,之后是想到使用的野火做好的系统,在uEnv.txt中会加载大量设备树插件,将key相关的设备树插件屏蔽即可。 linux中断API函数 中断号 每个中断…...
vue中的canvas插件
vue中canvas插件有vue-konva、vue-fabricjs、vue-canvas-effect、vue-chartjs和vue-threejs等。详细介绍:1、vue-konva是一个用于在Vue.js中使用Konva.js的插件,Konva.js是一个功能强大的HTML5 2D 渲染引擎,可以用于创建交互式的Canvas应用程…...
分享图片 | 快速浏览网页资源,批量保存、一键分享图片
前言 小伙伴学习吉他,有时需要在互联网搜索曲谱资源,而多数曲谱均为图片,并且为多页,在电脑上显示练习很不方便,需要停下来点击鼠标进行翻页,影响练习的连贯性。 为了解决上述问题,通常把图片…...
Programming abstractions in C阅读笔记:p123-p126
《Programming Abstractions In C》学习第50天,p123-p126,总结如下: 一、技术总结 1.notaion 这也是一个在计算机相关书籍中出现的词,但有时却不是那么好理解,因为它可以指代很多对象,这里做一个记录。示…...
自然语言处理从入门到应用——LangChain:链(Chains)-[通用功能:LLMChain、RouterChain和SequentialChain]
分类目录:《自然语言处理从入门到应用》总目录 LLMChain LLMChain是查询LLM对象最流行的方式之一。它使用提供的输入键值(如果有的话,还包括内存键值)格式化提示模板,将格式化的字符串传递给LLM,并返回LLM…...
ElasticSearch-安装部署全过程
本文已收录于专栏 《中间件合集》 目录 概念说明什么是ElasticSearch什么是Kibana什么是RESTful API 提供服务安装过程安装ElasticSearch1.下载ElasticSearch 安装包2.解压安装包3.进入解压之后的文件夹4.创建一个data文件夹用来存储数据5.进入config文件夹编辑elasticsearch.y…...
mathematica报错:Tag Plus is \ Protected
在使用化简函数Simplify的时候使用了规则的语法,但是规则可能没有使用等号。 例如 Simplify[(1 - c^2)/d^2, c^2 d^2 1]等号被认为是赋值符号,要修改为两个等号: Simplify[(1 - c^2)/d^2, c^2 d^2 1]这样就不会报错了。...
Python Django 模型概述与应用
今天来为大家介绍 Django 框架的模型部分,模型是真实数据的简单明确的描述,它包含了储存的数据所必要的字段和行为,Django 遵循 DRY Principle 。它的目标是你只需要定义数据模型,然后其它的杂七杂八代码你都不用关心,…...
Golang Gorm 更新字段 save update updates
更新和删除操作的前提条件都是要在找到数据的情况下,先要查询到数据才可以做操作。 更新的前提的先查询到记录,Save保存所有字段,用于单个记录的全字段更新它会保控所有字段,即使零值也会保存。 在更新和删除之前,要利…...
springBoot 配置文件引入 redis 的相关参数说明
在Spring Boot应用中使用Redis作为缓存或数据存储时,可以在应用的配置文件中配置相关参数。下面是常用的Redis配置参数及其说明: spring.redis.host: Redis服务器主机地址,默认为localhost。spring.redis.port: Redis服务器端口,…...
Docker的使用心得:简化开发与部署的利器
开发与测试的无缝衔接: Docker让开发与测试之间的切换变得前所未有的顺畅。我可以在本地开发环境中创建一个与生产环境一致的Docker容器,这样不仅可以确保开发过程中不会出现意外问题,还可以在测试阶段避免不必要的繁琐配置。 跨平台的可移植…...
vue3 基于element plus对el-pagination进行二次封装
vue3 基于element plus对el-pagination进行二次封装 1、前言2、在components文件夹中新建pagination.vue文件3、在组件内使用分页 1、前言 在vue3项目中,如果每个列表页都敲一遍分页方法,显然是不合理的,那么,下面我将基于elemen…...
RuntimeError: result type Float can‘t be cast to the desired output type __int64报错解决方法
小白刚开始学习YOLOv5,跟随老哥的步骤走了一遍目标检测--手把手教你搭建自己的YOLOv5目标检测平台 最后训练最后一步出现RuntimeError: result type Float can‘t be cast to the desired output type __int64报错 解决方法:找到5.0版报错的loss.py中最…...
解析Python爬虫常见异常及处理方法
作为专业爬虫程序猿长期混迹于爬虫ip解决方案中,我们经常会遇到各种各样的异常情况。在爬虫开发过程中,处理这些异常是不可或缺的一部分。本文将为大家总结常见的Python爬虫异常,并分享相应的处理方法,帮助你避免绊倒在爬虫之路上…...
详解Spring的循环依赖问题、三级缓存解决方案源码分析
0、基础:Bean的生命周期 在Spring中,由于IOC的控制反转,创建对象不再是简单的new出来,而是交给Spring去创建,会经历一系列Bean的生命周期才创建出相应的对象。而循环依赖问题也是由Bean的生命周期过程导致的问题&#…...
oracle分析函数学习
0、建表及插入测试数据 --CREATE TEST TABLE AND INSERT TEST DATA. create table students (id number(15,0), area varchar2(10), stu_type varchar2(2), score number(20,2));insert into students values(1, 111, g, 80 ); insert into students values(1, 111, j, 80 ); …...
代码随想录训练营day17|110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 v...
TOC 前言 代码随想录算法训练营day17 一、Leetcode 110.平衡二叉树 1.题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#x…...
C# Thread用法
C# 中的线程(Thread)是一种并发执行的机制,允许同时执行多个代码块,从而提高程序的性能和响应性。下面是关于如何使用 C# 线程的一些基本用法: 1. 创建线程: 使用 System.Threading 命名空间中的 Thread 类…...
新榜 | CityWalk本地生活商业价值洞察报告
如果说现在有人问,最新的网络热词是什么? “CityWalk”,这可能是大多数人的答案。 近段时间,“CityWalk”刷屏了各种社交媒体,给网友们带来了一场“城市漫步”之旅。 脱离群体狂欢,这个在社交媒体引发热议的词汇背后又…...
LVS负载均衡集群-NAT模式部署
集群 集群:将多台主机作为一个整体,然后对外提供相同的服务 集群使用场景:高并发的场景 集群的分类 1.负载均衡器集群 减少响应延迟,提高并发处理的能力 2,高可用集群 增强系统的稳定性可靠性&…...
C++学习笔记总结练习:effective 学习日志
准则 1.少使用define define所定义的常量会在预处理的时候被替代,出错编译器不容易找到错误。而且还没有作用范围限制,推荐使用constdefine宏定义的函数,容易出错,而且参数需要加上小括号,推荐使用inline有的类中例如…...
wordpress 视频展示/网站关键词如何优化上首页
1.存储结构:数据库database 表table 数据data;2.SQL(Structured Query Language,结构化查询语言)语言:和数据库交互的语言,进行数据库管理的语言。库的操作3.查询所有数据库:show databases;4.创建数据库 create …...
小额贷款网站怎么做/seo网站优化外包
算法练习篇之:调整数组顺序使奇数位于偶数前面 (数组) 题目描述解题思路代码实现总结题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于…...
网站添加子域名/游戏代理是怎么赚钱的如何代理游戏
properties属性文件工具类package xxx.business.utils; import org.apache.commons.configuration.ConfigurationException; import o ...Android再学习-20141022-Activity的生命周期20141022-Android再学习 如何在一个应用程序当中定义多个Activity 定义一个类,继承Activity 在…...
php做网站需要注意什么/今天热搜前十名
原文地址:https://wenku.baidu.com/view/9d4051f4700abb68a982fb4e.html 嵌入式常见英文缩写和英文词汇 ( 搜集中 ) 英文缩写 ARM : Advanced RISC Machine AAPCS : ARM Architecture Process call standard ARM 体系结构过程调用标准 R…...
免费网站建站/广西百度seo
孩子为什么要学编程?少儿编程有什么好处吗?人工智能时代,让孩子先人一步看见未来AI时代来临,很多工作将被人工智能取代,未来的人才必须具备学习与创新能力,而编程能让孩子站在这个时代的最前沿,…...
网站图片优化怎么做/谷歌怎么推广自己的网站
工业机器人通常使用以下编程语言: 工控语言,例如:PLC(可编程控制器语言)计算机语言,例如:C、Python、Java机器人控制语言,例如:Robot Operating System (ROS) 不同的机器人系统和应用可能需要使…...