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

这篇具有很好参考价值的文章主要介绍了【车载开发系列】UDS诊断---读取数据($0x22)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一.概念定义

该服务的英文简称为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信息的。
【车载开发系列】UDS诊断---读取数据($0x22)

2)肯定响应

这里的MSB也是DID的值,譬如:某协议定义了DID = 0xF190,那么这里的MSB就是0xF1和0x90;而此时Record就是服务端的VIN码
【车载开发系列】UDS诊断---读取数据($0x22)

3)否定响应

否定响应SID+通过标识符读取数据请求SID+否定响应码【车载开发系列】UDS诊断---读取数据($0x22)

  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当中,该数据标识符始终应仅代表一个对象。即具有固定大小、意义等的固定对象。文章来源地址https://www.toymoban.com/news/detail-417887.html

字节值 说明 描述
0x0000-0x00FF ISOSAEReserved ISOSAE已保留
0x0100-0xA5FF VehicleManufacturerSpecific 由车辆制造商规定
0xA600-0xA7FF ReservedForLegislativeUse 针对法律用途保留的值
0xA800-0xACFF VehicleManufacturerSpecific 由车辆制造商规定
0xAD00-0xAFFF ReservedForLegislativeUse 针对法律用途保留的值
0xF180 BootSoftwareIdentificationDataIdentifier 启动软件识别数据标识符
0xF181 applicationSoftwareIdentificationDataIdentifier 应用软件识别的数据标识符
0xF182 applicationDataIdentificationDataIdentifier 应用程序数据识别标识符
0xF183 bootSoftwareFingerprintDataIdentifier 启动软件指纹的数据标识符
0xF184 applicationSoftwareFingerprintDataIdentifier 应用软件指纹数据标识符
0xF185 applicationDataFingerprintDataIdentifier 应用程序数据指纹标识符
0xF186 ActiveDiagnosticSessionDataIdentifier 活动诊断会话的数据标识符:报告服务器中活动诊断会话,由DiagnosticSessionType定义
0xF187 vehicleManufacturerSparePartNumberDataIdentifier 车辆制造商零配件编号数据标识符:编码格式为15 Byte ASCII,引用了车辆制造商的零配件编号
0xF188 vehicleManufacturerECUSoftwareNumberDataIdentifier 车辆制造商ECU软件编号的数据标识符:用于引用车辆制造商ECU的软件编号,由车厂定义
0xF189 vehicleManufacturerECUSoftwareVersionNumberDataIdentifier 车辆制造商ECU软件版本号的数据标识符:用于引用车辆制造商ECU的软件版本号,由车厂定义
0xF18A systemSupplierIdentifierDataIdentifier 系统供应商信息的数据标识符:引用系统供应商的名称和地址信息
0xF18B ECUManufacturingDateDataIdentifier ECU制造日期的数据标识符:引用ECU服务器的制造日期
0xF18C ECUSerialNumberDataIdentifier ECU序列号的数据标识符:引用ECU的序列号
0xF18D supportedFunctionalUnitsDataIdentifierVehicleManufacturerKitAssemblyPartNumberDataIdentifier 受支持的功能单元的数据标识符:请求在服务中实现的功能单元
0xF18E VehicleManufacturerKitAssemblyPartNumberDataIdentifier 车辆制造商套件总成零件号的数据标识符
0xF18F ISOSAEReserved ISOSAE已保留:供未来定义用
0xF190 VINDataIdentifier VIN数据标识符:引用了VIN编号
0xF191 vehicleManufacturerECUHardwareNumberDataIdentifier 车辆制造商ECU硬件编号的数据标识符:引用了ECU硬件编号
0xF192 systemSupplierECUHardwareNumberDataIdentifier 系统供应商ECU硬件编号的数据标识符
0xF193 systemSupplierECUHardwareVersionNumberDataIdentifier 系统供应商ECU硬件版本号标识符
0xF194 systemSupplierECUSoftwareNumberDataIdentifier 系统供应商ECU软件编号标识符
0xF195 systemSupplierECUSoftwareVersionNumberDataIdentifier 系统供应商ECU软件版本号标识符
0xF196 exhaustRegulationOrTypeApprovalNumberDataIdentifier 排气法规或型式认证编号的数据标识符
0xF197 systemNameOrEngineTypeDataIdentifier 系统名称或发动机类型的数据标识符
0xF198 repairShopCodeOrTesterSerialNumberDataIdentifier 维修车间代码或测试仪器序列号数据标识符
0xF199 programmingDateDataIdentifier 编程日期的数据标识符
0xF19A calibrationRepairShopCodeOrCalibrationEquipmentSerialNumber DataIdentifier 校准车间代码或校准设备系列号的数据标识符
0xF19B calibrationDateDataIdentifier 校准日期的数据标识符
0xF19C calibrationEquipmentSoftwareNumberDataIdentifier 校准软件设备编号的数据标识符
0xF19D ECUInstallationDateDataIdentifier ECU安装日期的数据标识符
0xF19E ODXFileDataIdentifier ODX文件的数据标识符
0xF19F EntityDataIdentifier 实际数据标识符:引用用于安全数据传输的实体数据标识符
0xF1A0–0xF1EF identificationOptionVehicleManufacturerSpecific 车辆制造商规定的识别选项
0xF1F0–0xF1FF identificationOptionSystemSupplierSpecific 系统供应商规定的识别选项
0xF200–0xF2FF periodicDataIdentifier 周期性数据标识符
0xF300–0xF3FF DynamicallyDefinedDataIdentifier 动态定义的数据标识符
0xF400–0xF4FF OBDDataIdentifier OBD数据标识符
0xF500–0xF5FF OBDDataIdentifier OBD数据标识符
0xF600–0xF6FF OBDMonitorDataIdentifier OBD监视器的数据标识符
0xF700–0xF7FF OBDMonitorDataIdentifier OBD监视器的数据标识符
0xF800–0xF8FF OBDInfoTypeDataIdentifier OBD信息类型的数据标识符
0xF900–0xF9FF TachographDataIdentifier 里程记录器的数据标识符
0xFA00 – 0xFA0F AirbagDeploymentDataIdentifier 气囊展开的数据标识符
0xFA10 NumberOfEDRDevices EDR装置数 EDR数据的EDR装置的数量
0xFA11 EDRIdentification EDR识别:应用于报告EDR识别数据
0xFA13-0xFA18 EDREntries EDR条目:每一个DID对应一个EDR、0xFA13代表最后一个EDR
0xFA19-0xFAFF SafetySystemDataIdentifier 安全系统的数据标识符
0xFB00-0xFCFF ReservedForLegislativeUse 针对法律用途保留的值
0xFD00-0xFEFF SystemSupplierSpecific 由系统供应商规定
0xFF00 UDSVersionDataIdentifier UDS版本的数据标识符
0xFF01-0xFFFF ISOSAEReserved ISOSAE已经保留

到了这里,关于【车载开发系列】UDS诊断---读取数据($0x22)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 车载诊断NRC - UDS Negative Response Code

    下表中列出了ISO14229-1:2013(E)中定义的否定响应码及其使用条件: 否定响应码的取值范围为0x00 - 0xFF,被分为三组: 0x00:服务器内部实现否定响应码判断逻辑时使用,表示要给出肯定响应。 0x01 – 0x7F:诊断通信相关的否定响应码。 0x80 – 0xFF:服务器收到诊断服务请求时,由

    2023年04月08日
    浏览(49)
  • UDS统一诊断服务【一】诊断会话控制0X10服务

    最近在做诊断相关的开发工作,将自己接触到的知识点记录下来。前面的文章已经介绍过UDS的一些基础知识,和基本的一些概念,不清楚的可以查看之前的文章:UDS基础知识介绍 诊断会话控制服务 DiagnosticSessionControl ,SID是0X10,主要功能是控制服务端的会话模式切换。一般默

    2024年02月03日
    浏览(182)
  • 汽车诊断之UDS入门-0x27(SecurityAccess)安全访问

    安全访问服务 0x27 用来解锁 ECU 对应的安全等级 , 一般处在非默认会话 下 进行解锁,这个服务解锁的是 处在某个安全等级下的服务 。 服务格式   安全等级解闭锁   需要注意的是: 1.P owerOn 或者 R eset 后, ECU 处在 locked 状态; 2.同一时刻只有 1 个安全等级是 active ,与这个

    2024年02月08日
    浏览(75)
  • UDS统一诊断服务【三】安全访问0X27服务

    今天分享的是UDS的安全访问服务,希望能对你有所帮助 SecurityAccess 安全访问,27服务,用来保护某些诊断服务的,提供一种保护机制。例如对于重要数据的上传或者下载过程不做任何限制,可能会对整车的安全造成极大的威胁,尤其是针对底盘域的控制器更是要在这方面做好

    2024年02月16日
    浏览(54)
  • 【车载开发系列】诊断故障码中的Debounce策略

    故障诊断通常由诊断事件管理Dem模块和SW-C共同完成,即先由SWC中的Monitor Function对故障条件实时监控,并不断将故障条件的判定结果上报给Dem模块,而在Dem为了防止所有的故障误报,在其处理过程中增加一个Debouncing(去抖动)环节,也就是采用Debounce算法来确定事件的最终状态。

    2024年02月09日
    浏览(63)
  • Autosar诊断实战系列16-UDS19 06扩展数据配置及工程问题讨论

    在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与BswM/NvM关联模块的应用开发及诊断capl测试脚本开发等诊断相关实战内容。 Autosar诊断实战导读快速链接:

    2024年02月09日
    浏览(46)
  • UDS诊断系列之七 安全访问(27)服务(番外)附录I

    附录I的主要内容是通过一个状态图来描述ECU在安全访问的各状态之间的切换条件,以及如何进行状态切换即切换过程中都需要执行哪些操作。 下面直接先上图。 图看起来流程很多,但实际上很简单,先说图中的四个状态: A - ECU没有接收过任何安全访问的请求,或者刚刚接

    2024年02月10日
    浏览(53)
  • 车载诊断协议DoIP系列 —— DoIP会话模式(安全与非安全)

    我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠自己,四海皆为家。人生的

    2024年02月19日
    浏览(68)
  • Autosar诊断系列介绍20 - UDS应用层P2Server/P2Client等时间参数解析

    本系列Autosar 诊断入门介绍,会详细介绍诊断相关基础知识,如您对诊断实战有更高需求,可参见诊断实战系列专栏,快速链接:Autosar诊断实战系列导读 如您MCAL配置,通信,诊断,OS等Autosar全栈实战有更高需求,可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶

    2024年02月14日
    浏览(60)
  • UDS诊断协议

    UDS 本质上是一系列服务的集合,包含 6 大类,共 26 种。每种服务都有独立的 ID ,即 SID 。 请求 SID(1Byte) + 参数 SID(1Byte) + Sub-function(1Byte) + 参数 SID + DID(2Bytes) 响应 肯定响应 SID+0x40(1Byte) + Sub-function (根据请求是否存在) + 参数 SID+0x40(1Byte) + DID + Data 否定响应 0x7F + SID + NRC(1Byte)

    2024年02月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包