【车载开发系列】UDS诊断---读取数据($0x22)

news2024/11/15 21:20:26

【车载开发系列】UDS诊断—读取数据($0x22)

UDS诊断---读取数据($0x22)

    • 【车载开发系列】UDS诊断---读取数据($0x22)
    • 一.概念定义
    • 二.报文格式
      • 1)请求
      • 2)肯定响应
      • 3)否定响应
    • 三.应用场景
    • 四.注意事项
    • 五.DID参数定义

一.概念定义

该服务的英文简称为ReadDataByIdentifier 。
根据ISO14119-1标准中所述,诊断服务22主要用于Client向Server(ECU)通过DID的方式读取相关的数据。这些数据可以输入输出的数字信号,模拟信号,内部数据以及其他的系统状态信息。作为诊断服务种的基础服务,可以简单理解为就是一个用于读取ECU数据的外部接口,可实时获取软件内部的相关的状态信息。概括起来就是诊断工具读取数据标识符对应的数据记录。

二.报文格式

0x22服务用于读did,客户端请求格式为 “22+did”,服务端肯定响应为“62+DID+数据”,否定响应为“7f+22+NRC码”
当客户端发送22+F186这个请求时,服务端肯定会返回当前的会话状态,
回复“62+F186+(01 or 02 or 03)”

1)请求

这里的MSB也是DID的值,在这里可以看到,读取数据服务$22是支持一条指令取得多个DID信息的。
在这里插入图片描述

2)肯定响应

这里的MSB也是DID的值,譬如:某协议定义了DID = 0xF190,那么这里的MSB就是0xF1和0x90;而此时Record就是服务端的VIN码
在这里插入图片描述

3)否定响应

否定响应SID+通过标识符读取数据请求SID+否定响应码在这里插入图片描述

  1. 如当尝试读取F190的DID值且当前车速条件不满足,此时Client发送诊断指令"22 F1 90"请求Server读取数据,Server将会回复“7F 22 22”来告诉请求者当前读取数据的条件不满足,请再次检查读取该DID的条件。
  2. 当发送报文长度或者格式不对时,则Server会回复"7F 22 13";
  3. 当诊断请求的DID太多导致超出了传输层的限定时,则Server会回复”7F 22 14“;
  4. 当诊断请求DID不存在或者在当前Session中不支持时,则Server就会回复“7F 22 31”;
  5. 当Server在发生复位前处于security lock状态,那么此时Server则会回复"7F 22 33"

三.应用场景

  1. 读取当前ECU的序列号,版本号等;
  2. 标定成功后读取内部标定结果等;
  3. 读取当前ECU所处在的Session,内部状态,Snapshot Data等;
  4. 其他需要读取内部相关参数的场合;
  5. 内部测试时需要取得相关测试用状态和数据的场合

四.注意事项

  1. 特别需要注意的是22诊断并不存在Subfunction。
  2. 不光存在单个DID的读取,还可以多个DID读取,而且读取DID的个数是不受到限制的。
  3. 绝大多数情况下,Server针对Client的请求都会给到正响应,比如发生重启前需确保整车处于安全状态,如引擎熄火,车速不能超过3km/h等,或者为了防止不按照诊断请求格式进行请求,那么Server需要通过某种方式来告诉Client执行不成功的原因在哪里以便于调查问题直至得到正响应。
    因此ISO14229-1针对所有的诊断服务提供了一种统一的诊断负响应的诊断格式:7F +SID + NRC。

五.DID参数定义

逻辑上,参数数据标识符DID代表了一个对象或者是多个对象的集合。此参数可从服务器的内存中获取。如果数标识符经过了服务动态定义数据标识符的动态定义,则既存在于固定内存中,也能存储在随机存取存储器RAM当中。
一般来说,数据定义符能够在含0x22,0x2E和0x2F在内的多个诊断服务请求中使用,数据标识符还可以用于各种诊断服务的响应中。
例如在0x19服务的子功能readDTCSnapshotRecordByDTCNumber(按照DTC编号读取DTC快照)的肯定响应中。
动态定义的数据标识符除外,虽然ECU未定义此标识符,但客户端使用服务0x2C(动态定义数据标识)可对其进行定义。
重要
无论数据标识符用于哪个服务,在固定的ECU当中,该数据标识符始终应仅代表一个对象。即具有固定大小、意义等的固定对象。

字节值说明描述
0x0000-0x00FFISOSAEReservedISOSAE已保留
0x0100-0xA5FFVehicleManufacturerSpecific由车辆制造商规定
0xA600-0xA7FFReservedForLegislativeUse针对法律用途保留的值
0xA800-0xACFFVehicleManufacturerSpecific由车辆制造商规定
0xAD00-0xAFFFReservedForLegislativeUse针对法律用途保留的值
0xF180BootSoftwareIdentificationDataIdentifier启动软件识别数据标识符
0xF181applicationSoftwareIdentificationDataIdentifier应用软件识别的数据标识符
0xF182applicationDataIdentificationDataIdentifier应用程序数据识别标识符
0xF183bootSoftwareFingerprintDataIdentifier启动软件指纹的数据标识符
0xF184applicationSoftwareFingerprintDataIdentifier应用软件指纹数据标识符
0xF185applicationDataFingerprintDataIdentifier应用程序数据指纹标识符
0xF186ActiveDiagnosticSessionDataIdentifier活动诊断会话的数据标识符:报告服务器中活动诊断会话,由DiagnosticSessionType定义
0xF187vehicleManufacturerSparePartNumberDataIdentifier车辆制造商零配件编号数据标识符:编码格式为15 Byte ASCII,引用了车辆制造商的零配件编号
0xF188vehicleManufacturerECUSoftwareNumberDataIdentifier车辆制造商ECU软件编号的数据标识符:用于引用车辆制造商ECU的软件编号,由车厂定义
0xF189vehicleManufacturerECUSoftwareVersionNumberDataIdentifier车辆制造商ECU软件版本号的数据标识符:用于引用车辆制造商ECU的软件版本号,由车厂定义
0xF18AsystemSupplierIdentifierDataIdentifier系统供应商信息的数据标识符:引用系统供应商的名称和地址信息
0xF18BECUManufacturingDateDataIdentifierECU制造日期的数据标识符:引用ECU服务器的制造日期
0xF18CECUSerialNumberDataIdentifierECU序列号的数据标识符:引用ECU的序列号
0xF18DsupportedFunctionalUnitsDataIdentifierVehicleManufacturerKitAssemblyPartNumberDataIdentifier受支持的功能单元的数据标识符:请求在服务中实现的功能单元
0xF18EVehicleManufacturerKitAssemblyPartNumberDataIdentifier车辆制造商套件总成零件号的数据标识符
0xF18FISOSAEReservedISOSAE已保留:供未来定义用
0xF190VINDataIdentifierVIN数据标识符:引用了VIN编号
0xF191vehicleManufacturerECUHardwareNumberDataIdentifier车辆制造商ECU硬件编号的数据标识符:引用了ECU硬件编号
0xF192systemSupplierECUHardwareNumberDataIdentifier系统供应商ECU硬件编号的数据标识符
0xF193systemSupplierECUHardwareVersionNumberDataIdentifier系统供应商ECU硬件版本号标识符
0xF194systemSupplierECUSoftwareNumberDataIdentifier系统供应商ECU软件编号标识符
0xF195systemSupplierECUSoftwareVersionNumberDataIdentifier系统供应商ECU软件版本号标识符
0xF196exhaustRegulationOrTypeApprovalNumberDataIdentifier排气法规或型式认证编号的数据标识符
0xF197systemNameOrEngineTypeDataIdentifier系统名称或发动机类型的数据标识符
0xF198repairShopCodeOrTesterSerialNumberDataIdentifier维修车间代码或测试仪器序列号数据标识符
0xF199programmingDateDataIdentifier编程日期的数据标识符
0xF19AcalibrationRepairShopCodeOrCalibrationEquipmentSerialNumber DataIdentifier校准车间代码或校准设备系列号的数据标识符
0xF19BcalibrationDateDataIdentifier校准日期的数据标识符
0xF19CcalibrationEquipmentSoftwareNumberDataIdentifier校准软件设备编号的数据标识符
0xF19DECUInstallationDateDataIdentifierECU安装日期的数据标识符
0xF19EODXFileDataIdentifierODX文件的数据标识符
0xF19FEntityDataIdentifier实际数据标识符:引用用于安全数据传输的实体数据标识符
0xF1A0–0xF1EFidentificationOptionVehicleManufacturerSpecific车辆制造商规定的识别选项
0xF1F0–0xF1FFidentificationOptionSystemSupplierSpecific系统供应商规定的识别选项
0xF200–0xF2FFperiodicDataIdentifier周期性数据标识符
0xF300–0xF3FFDynamicallyDefinedDataIdentifier动态定义的数据标识符
0xF400–0xF4FFOBDDataIdentifierOBD数据标识符
0xF500–0xF5FFOBDDataIdentifierOBD数据标识符
0xF600–0xF6FFOBDMonitorDataIdentifierOBD监视器的数据标识符
0xF700–0xF7FFOBDMonitorDataIdentifierOBD监视器的数据标识符
0xF800–0xF8FFOBDInfoTypeDataIdentifierOBD信息类型的数据标识符
0xF900–0xF9FFTachographDataIdentifier里程记录器的数据标识符
0xFA00 – 0xFA0FAirbagDeploymentDataIdentifier气囊展开的数据标识符
0xFA10NumberOfEDRDevicesEDR装置数 EDR数据的EDR装置的数量
0xFA11EDRIdentificationEDR识别:应用于报告EDR识别数据
0xFA13-0xFA18EDREntriesEDR条目:每一个DID对应一个EDR、0xFA13代表最后一个EDR
0xFA19-0xFAFFSafetySystemDataIdentifier安全系统的数据标识符
0xFB00-0xFCFFReservedForLegislativeUse针对法律用途保留的值
0xFD00-0xFEFFSystemSupplierSpecific由系统供应商规定
0xFF00UDSVersionDataIdentifierUDS版本的数据标识符
0xFF01-0xFFFFISOSAEReservedISOSAE已经保留

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

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

相关文章

Vue中$nextTick实现源码解析

这篇文章主要为大家介绍了Vue中$nextTick实现源码解析,有需要的朋友可以借鉴参考下! 先看一个简单的问题 {{ text }} 此时打印的结果是什么呢?是 old。如果想让它打印 new,使用 nextTick 稍加改造就可以 this.$nextTick(() >…

【计组笔记】06_指令系统

5.1 指令系统概述及指令格式 1. 指令的基本概念 2. 指令的分类 根据计算机层次结构分类 根据指令中地址码字段的个数分类 根据指令中操作数的物理位置分类 根据指令的功能分类 3. 指令格式 4. 指令的再认识 5. 指令格式举例 5.2 寻址方式及指令寻址 1. 寻址方式的概念 2.…

[论文阅读] 颜色迁移-Correlated Color Space

[论文阅读] 颜色迁移-Correlated Color Space 文章: Color transfer in correlated color space, [paper], [matlab code], [opencv code] 1-算法原理 本文算法比较简单, 其原理是把原始图像本身的空间分布进行归一化, 然后通过旋转平移缩放等变换, 变换到目标图像的空间分布…

WMS手动配货和自动配货的区别

手动配货 不知道配货流程的朋友可以看一下前面的文章链接: 深入浅出WMS之出库流程里面有对出库的解释说明,其中也有对配货的解释。前端页面也可以在前面的那篇文章中看到,这里我们来说一下后端部分。 查 手动配货是选中出库单的某条数据,然…

一文教你从Linux内核角度探秘JDK NIO文件读写本质(上)

1. 前言 在深入讲解Netty那些事儿之从内核角度看IO模型一文中曾对 Socket 文件在内核中的相关数据结构为大家做了详尽的阐述。 Socket内核结构.png 又在此基础之上介绍了针对 socket 文件的相关操作及其对应在内核中的处理流程: 系统IO调用结构.png 并与 epoll 的…

由阿里三位专家撰写:数据库高效优化:架构、规范SQL技巧文档

引言 学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生…

[附源码]计算机毕业设计springboot作业管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

词袋模型(Bag-of-words model)

词袋模型词袋模型简介示例计算机视觉中的词袋模型词袋模型 简介 词袋模型(Bag-of-words model)是用于自然语言处理和信息检索中的一种简单的文档表示方法。通过这一模型,一篇文档可以通过统计所有单词的数目来表示,这种方法不考…

redis安装

版本号:redis-6.2.1 下载redis-6.2.1.tar.gz放/opt目录 解压命令:tar -zxvf redis-6.2.1.tar.gz 解压完成后进入目录:cd redis-6.2.1 在redis-6.2.1目录下执行make命令 出现make test 执行make install 查看redis默认安装路径:/u…

二、CANdelaStudio入门-版本介绍

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的各个版本,欢迎各位朋友订阅、评论,可以…

PbootCMS简单两步增加自动清理日志功能

问:网站没人访问触发不了清理怎么办? 答:我建议你不要关心这个,都没人访问你的网站,你还有个锤子东西需要清理? 问:听人说前台插入script触发会不安全? 答:都是成年人…

Web应用程序,简单的日志系统解决方案

一、简介 今天介绍一下,当你的程序没有日志系统时,如何快速方便查看当前程序日志的解决方案。如果你的程序有日志系统,可以不看本篇博客哈。本文实例是使用 C# 讲解,当然实现的核心思想适用于其他语言开发的系统。 二、解决方案…

nexus搭建测试dockermavennpm仓库

JAVA下载 https://www.oracle.com/java/technologies/downloads/archive/ https://login.oracle.com/mysso/signon.jsp QQq951699. [rootvm1 ~]# mkdir -p /data [rootvm1 ~]# mv jdk-8u221-linux-i586.tar.gz /data [rootvm1 ~]# cd /data;tar xf jdk-8u221-linux-i586.tar.g…

222页8万字智慧园区IOC平台运维管理平台解决方案

目 录 第一章 项目概述 7 1.1 园区格局的变化 7 1.1.1 传统安防面临的不足与挑战 7 1.1.2 园区安防未来的发展趋势 7 1.2 需求分析 8 1.2.1 平台集成化 8 1.2.2 数据可视化 8 1.2.3 管控全面化 8 1.2.4 覆盖高清化 9 1.2.5 指挥简易化 9 1.2.6 建设智能化 9 1.3 建设思路 9 1.3…

基于物联网设计的自反馈深紫外杀菌消毒系统(STM32F407)

一、前言 目前常态化防控病毒有很多种,其中主要是人工喷洒消毒液这种消毒方式,这种消毒效果无法得到量化,同时还可能存在喷洒盲区,也会对公民的呼吸道产生刺激,腐蚀损坏公共设施,而对于室内公共空间的消毒的要求会更高,基于这样的状况,人工喷洒消毒液这种方式肯定不太…

[附源码]JAVA毕业设计教学成果管理平台(系统+LW)

[附源码]JAVA毕业设计教学成果管理平台(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

C语言——利用矩阵LU分解法求逆、行列式

本章介绍了LU分解法,以及如何利用LU分解法求逆、行列式,针对每个公式、原理、代码进行了详细介绍,希望可以给大家带来帮助。 目录 LU分解法 概念 确定L、U矩阵 LU分解法的意义 程序设计 LUP求逆 1)代码 2)代…

uniapp 监听通知栏消息插件(支持白名单、黑名单、过滤) Ba-NotifyListener

简介(下载地址) Ba-NotifyListener 是一款实时监听通知栏消息的uniapp插件。支持白名单、黑名单;支持监听消息移除;支持自定义过滤条件(如短信验证码)等。 支持监听所有通知栏消息(包含id、ti…

springboot整合layui排坑

参考:thymeleaflayui加载页面渲染时TemplateProcessingException: Could not parse as expression: "_yaoshengting的博客-CSDN博客 目录 1.table渲染问题 2.解决方式 1.将clos后的[[ ]]分成四行写 2.加上 th:inline"none 1.table渲染问题 源代码&…

[附源码]Python计算机毕业设计Django拉勾教育课程管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…