当前位置: 首页 > news >正文

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容器,这样不仅可以确保开发过程中不会出现意外问题,还可以在测试阶段避免不必要的繁琐配置。 跨平台的可移植…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

管理学院权限管理系统开发总结

文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...

Qt的学习(二)

1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...