UDS学习三:读数据 0x22(Read Data By Identifier)

发布时间:2026/10/16 12:24:27
UDS学习三:读数据 0x22(Read Data By Identifier) 读数据 0x22Read Data By Identifier1. 为什么需要这个服务2. 报文格式3. DID 是什么4. DID 的通用分类5. 数据格式怎么读6. 0x22 需不需要解锁7. 常见 NRC1. 为什么需要这个服务ECU 内部存储了很多信息硬件序列号、软件版本、配置参数、车辆状态等。Tester 需要一种方式来读取这些信息——这就是0x22Read Data By Identifier。每个信息有一个唯一编号叫DIDData Identifier占2 个字节。Tester 发请求我要读 DID 0xF1AAECU 返回这个 DID 对应的数据内容下面是 0x22 服务完整的「请求—判断—响应」流程满足不满足或不存在Tester 发送 0x22 请求22 DIDECU 查找该 DIDDID 存在且当前条件满足返回正响应62 DID 数据返回负响应7F 22 NRC2. 报文格式请求Tester → ECU22 DID高字节 DID低字节示例22 F1 AA表示读 DID0xF1AA。支持一次读多个 DID一条请求携带多个 DID22 F1AA F1AE F18C → 一次读 3 个 DIDECU 会把三个 DID 的数据一起返回。正响应ECU → Tester62 DID高字节 DID低字节 数据字段说明62正响应 SID0x22 0x40 0x62DID回显你请求的 DID 编号数据数据内容长度和格式由该 DID 的定义决定负响应7F 22 NRC下面用时序图描述一次报文的完整交互过程ECUTesterECUTesteralt[DID 可读][DID不可读或不存在]22 F1 AA62 F1 AA 数据7F 22 NRC3. DID 是什么DID 是一个2 字节编号指向 ECU 内部的一块数据。可以理解为 ECU 里维护着一个大字典DID 0xF1AA → 硬件序列号 DID 0xF1AE → 软件版本信息 DID 0xDD0A → 使用模式 DID 0xF190 → VINDID 的定义在 ECU 的诊断描述文件里如 CDD 文件或模块 XML。每个 DID 包含编号recordId名称数据格式字节如何解析成可读值转换方式BCD、ASCII、枚举等可以把 DID 理解为一张「索引 → 数据」的映射表DID 0xF1AA硬件序列号DID 0xF1AE软件版本信息DID 0xDD0A使用模式DID 0xF190VIN 车辆识别码4. DID 的通用分类信息类 DID通常位于 F1xx 段DID含义F1AA硬件序列号Core Assembly PNF1AB交付序列号Delivery Assembly PNF1AE软件版本信息Software Load ModuleF1A0应用诊断数据库零件号F18C序列号F190VIN车辆识别码以上是 ISO 14229 附录中建议的标准化 DID大部分车企都遵循。状态类 DID这类 DID 各车企自定义例如使用模式、车辆模式等。DID 编号和枚举值因项目而异需查对应 ECU 的诊断规范。5. 数据格式怎么读原始字节的解析思路如下具体解析方式完全由各 DID 的定义决定BCD ASCII单字节枚举长度前缀 循环收到正响应62 DID 原始字节取出数据段按 DID 定义选择解析方式展开 BCD 并转换 ASCII查枚举表映射为名称按数量与单条长度循环截取DID 返回的数据是原始字节如何转换为可读值取决于 DID 定义。下面介绍几种常见格式。BCD ASCII 混合编码如 0xF1AA 硬件序列号62 F1AA 6608716844 41解析规则前 5 字节 BCD 编码的零件号每 4 bit 代表一个十进制数字第 6 字节 ASCII 字符0x41A 版本号组合结果 6608716844A单字节枚举如使用模式62 DD0A 01只有 1 个字节值0x01 Inactive。DID 定义中会有一个枚举表把每个值映射到具体名称。长度前缀 循环结构如 0xF1AE 软件版本62 F1AE 02 640651900142 640652000142 ...解析规则第 1 字节 软件部件数量后面每 N 字节 一个「部件号 版本号」测试程序按「数量 × 单条长度」截取逐条解析比对6. 0x22 需不需要解锁一般不需要。读 DID 在 Default Session 下即可完成。但部分 ECU 对某些敏感 DID如密钥、安全常量会要求先解锁才能读取具体取决于 ECU 供应商的安全策略。7. 常见 NRCNRC名称含义0x13Incorrect Message Length请求长度不对少发了字节0x14Response Too Long一次读太多 DID响应超出最大长度0x22Conditions Not CorrectDID 存在但当前条件不满足如需要解锁0x31Request Out Of RangeECU 没有这个 DID0x31和0x22的区别0x31 ECU 根本没有这个 DID永远不会返回0x22 DID 存在但当前条件不允许读取收到负响应后可以根据 NRC 快速判断失败原因0x310x220x130x14收到负响应7F 22 NRC判断 NRC 值ECU 没有这个 DIDDID 存在但条件不允许请求消息长度不对响应超出最大长度

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询