UDS诊断服务-2E服务
先说个比喻2E 就是往 ECU 的抽屉里塞东西你把 ECU 想象成一个有几百个抽屉的柜子。每个抽屉上贴了个标签DID抽屉里放着一样东西数据。22 服务 打开抽屉看一眼读2E 服务 打开抽屉把里面的东西换成新的写就这么简单。没了。2E 的全部报文结构一句话就能说完请求2E 哪个抽屉(DID) 塞什么东西(DataRecord) 响应6E 哪个抽屉(DID)请求没有校验位。响应没有数据回传。没有保留字节。没有批量写入。就这么多。如果你看到的任何资料里2E 的请求超过SID DID 数据这三样东西或者响应超过0x6E DID这 3 个字节——那份资料有问题。第一个坑会话编号0x02 和 0x03 你搞反了没有这是我见过最高频的错误没有之一。要写数据先切到扩展会话 0x02。停。0x02 不是扩展会话。编号它叫什么干什么用0x01defaultSession默认会话啥也干不了只能读读故障码0x02programmingSession编程会话刷固件、写 VIN、改核心标定0x03extendedDiagnosticSession扩展诊断会话2F 控制、2E 写一般参数、跑例程0x04safetySystemDiagnosticSession安全系统专用你大概率用不到记住口诀二编程三扩展。写个空调默认档位10 03切扩展会话就够了。写 VIN 码10 02切编程会话还得做安全验证。我当年在产线上写 VIN用10 03切了个扩展会话就发 2E被 ECU 一个7F 2E 7F怼回来。后来才知道 VIN 要编程会话。第二个坑你的报文是不是多塞了几个零来看一个真实场景。你要往 DID0x0200某 OEM 定义的怠速目标值写入 800rpm。800 的十六进制是 0x0320占 2 个字节。正确的请求2E 02 00 03 205 个字节。完事了。很多人包括当年的我会写成2E 02 00 03 20 00 00 008 个字节后面补了仨零凑满一帧。ECU 看到后面多出来的三个字节心想这啥玩意儿DID 定义的数据就 2 字节你给我 5 字节数据于是回你一个7F 2E 130x13 incorrectMessageLengthOrInvalidFormat。翻译成人话你报文长度不对。CAN 单帧能装 8 字节不代表你必须塞满 8 字节。报文长度 SID(1) DID(2) DataRecord(n)。多一个字节都是错的。同理响应也是正确6E 02 00 3 字节SID0x40 加 DID 回显 错误6E 02 00 00 00 00 00 00标准 2E 肯定响应就 3 个字节。不回传你写入的数据没有保留字段没有校验回显。你想验证写没写进去发个 22 去读。第三个坑别找校验位了它不存在有些资料会告诉你2E 请求的最后一个字节是可选校验位CRC8/CRC16不需要时填 0x00。这话是编的。ISO 14229-1 的 2E 服务定义里请求结构就是字段长度说明SID1 字节0x2EDID2 字节你要写哪个抽屉DataRecordn 字节你要塞进去的东西没有第四个字段。没有校验位没有保留位没有可选附加信息。如果某个 OEM 确实需要完整性校验比如写标定时要求 CRC那 CRC 是DataRecord 的一部分由 OEM 在诊断规范里定义这个 DID 的数据格式是2 字节数值 1 字节 CRC。它不是独立于 DataRecord 之外的校验字段。第四个坑一次只能写一个 DID有些资料尤其是那些喜欢编以太网增强功能的会告诉你以太网下可以单帧批量写入多个 DID。然后给你一个看起来像这样的报文2E 03 02 00 03 20 02 01 46 ...这个格式在任何版本的 ISO 14229 里都不存在。0x2E 每次请求只写一个 DID。要写三个参数发三次请求。CAN 也好DoIP 也好都是这样。2E 02 00 03 20 → 写怠速 2E 02 01 64 → 写水温阈值 2E 02 02 01 → 写空调档位三次。老老实实三次。没有捷径。第五个坑安全验证不是5 秒有效有资料这么写通过 27 服务验证后若超过 5000ms 未执行写入需重新验证。这是误导。安全访问SecurityAccess的生命周期跟会话绑定不跟秒表绑定。只要会话没断没超时、没切走、没复位ECU 没重启那你的安全访问就一直有效。5 秒、50 秒、5 分钟都行。你可能把两个东西搞混了概念超时后果典型值S3_serverTesterPresent 超时会话退回默认安全访问连带失效5000msOEM 自定义安全访问本身只要会话在就一直有效无独立超时所以不是安全验证 5 秒过期而是如果你 5 秒内没发 3ETesterPresent会话断了安全访问跟着失效。实操建议做完 27 服务后如果后续操作比较复杂比如要写好几个 DID每隔 3~4 秒发一次3E 00保活。完整的实操流程以改怠速目标值为例不写步骤一二三四了。直接上真实对话。你我要把怠速从 750 改到 800。我行。先确认三件事。你哪三件我第一DID 是多少查你的诊断规范CDD/ODX别猜。假设是 0x0200。第二数据几个字节、什么范围假设 2 字节600~1200rpm。第三需要什么权限假设要扩展会话 安全等级 0x03。你好都确认了。然后呢我走。第 1 步切会话 你发10 03 ECU回50 03 00 32 01 F4 好扩展会话已开P250msP2*500ms 第 2 步安全验证 你发27 03 ECU回67 03 AB CD 12 34 ← 种子长度由 OEM 定 你算密钥 f(种子) ← 算法在 OEM 规范里 你发27 04 56 78 9A BC ← 密钥 ECU回67 04 ← 验证通过 第 3 步写入 你发2E 02 00 03 20 SID2E, DID0x0200, Data0x0320 即 800rpm ECU回6E 02 00 写好了。 三个字节干净利落。 第 4 步验证别偷懒 你发22 02 00 ECU回62 02 00 03 20 当前值确实是 800。 第 5 步保活如果你还要写别的 你发3E 00 ECU回7E 00 第 6 步搞定切回默认会话 你发10 01 ECU回50 01你就这我就这。2E 本身就这么简单。复杂的是前面查规范、确认权限、搞清楚数据格式。NRC 速查ECU 拒绝你的真正原因别望文生义。每个 NRC 都有标准定义别自己猜。NRC它真正的意思你大概干了什么怎么办0x13incorrectMessageLengthOrInvalidFormat数据长度跟 DID 定义不匹配多塞了零或少了字节查规范核对 DataRecord 长度0x22conditionsNotCorrect前提条件不满足比如发动机在转不让你改标定满足条件再来0x31requestOutOfRangeDID 不存在、值超范围、或者这个 DID 是只读的查规范确认 DID 可写、值合法0x33securityAccessDenied没做安全验证或安全等级不够先做 27 服务0x7FserviceNotSupportedInActiveSession当前会话不允许 2E切会话10 02或10 030x78requestCorrectlyReceived-ResponsePending收到在处理等一下别重发。等最终响应0x11serviceNotSupported这个 ECU 压根不支持 2E极罕见查规范最容易搞混的两对0x13 vs 0x31长度/格式错用 0x13值超范围/DID 不存在用 0x31。不是反过来的。0x22 vs 0x7F条件不满足如发动机在转用 0x22会话不对用 0x7F。不是反过来的。0x78 不是资源不可用是稍等我在处理。千万别重发会打乱 ECU 的处理队列。DID 的事儿别把 OEM 的活当成标准的活标准ISO 14229-1只定义了极少数DIDDID含义备注0xF190VIN17 字节 ASCII通常只写一次0xF186Active Diagnostic Session当前会话编号0xF187Part NumberECU 零件号0xF188Software Version软件版本0xF189Hardware Version硬件版本除此之外全是 OEM 自定义。你看到的 0x0200怠速、0x0201水温阈值、0xF200配置码——全是某个 OEM 自己编的。换一个品牌、换一个 ECU 供应商DID 编号可能完全不同。所以永远不要记 DID 编号要查诊断规范。写入之后数据去哪儿了这是很多人忽略的问题。2E 肯定响应只说明ECU 收到了你的数据但不告诉你数据存在哪、什么时候生效。实际上有三种情况由 OEM 定义情况表现你该怎么做立即生效掉电保持写入后马上生效重启还在最理想写个 22 验证一下就行立即生效掉电不保持写入后生效但重启后恢复原值数据在 RAM 里。可能需要额外的存储到 NVM操作OEM 自定义可能是 2E 写一个特殊 DID也可能是 31 跑一个例程写入后不生效需复位写入成功但行为没变发11 01硬复位或11 02软复位重启后生效怎么知道是哪种查诊断规范。标准不管这事儿。传输层CAN 和以太网对 2E 有影响吗应用层格式零影响。2E 02 00 03 20在 CAN 上是这 5 个字节在 DoIP 上还是这 5 个字节。响应6E 02 00在哪儿都是 3 个字节。传输层差异只影响怎么把这 5 个字节送过去CANISO 15765-2DoIPISO 13400短报文≤7 字节有效数据单帧搞定TCP 一个报文搞定长报文如写 17 字节 VIN首帧 连续帧多帧传输TCP 自动分段应用层无感加密无CAN 本身不加密可选 TLS不存在以太网下 2E 格式不同、以太网支持批量写入、以太网支持 4 字节校验这些说法。标准编号别搞混标准号内容ISO 14229-1应用层2E 服务定义在这ISO 14229-2会话层ISO 14229-3UDS on CANISO 14229-5UDS on IPISO 13400DoIPISO 15765-2CAN 传输层多帧最后一张纸的 2E 速查卡打印出来贴工位上。┌─────────────────────────────────────────────────┐ │ 2E 服务速查 │ │ │ │ 请求2E DID_H DID_L Data... │ │ 响应6E DID_H DID_L │ │ 否定7F 2E NRC │ │ │ │ ✓ 没有校验位 │ │ ✓ 没有保留字节 │ │ ✓ 响应不回传数据 │ │ ✓ 一次只写一个 DID │ │ ✓ CAN 和以太网格式完全一样 │ │ │ │ 会话0x02编程 0x03扩展 别搞反 │ │ │ │ 流程查规范 → 切会话 → 安全验证 → 写 → 读回验证│ │ │ │ 常用 NRC │ │ 0x13 长度不对 0x31 值超范围 │ │ 0x22 条件不满足 0x7F 会话不对 │ │ 0x33 没解锁 0x78 等一下别重发 │ └─────────────────────────────────────────────────┘写在最后2E 服务是 UDS 里最所见即所得的服务——请求就是SID DID 数据响应就是0x6E DID没有子功能没有控制模式没有掩码没有花活。它之所以被写错不是因为标准复杂而是因为太简单了简单到很多人不信它就这么多非得给它加点校验位、保留字节、批量写入才觉得完整。别加了。标准就这么多。够用了。如果你在实际项目中被7F 2E 13折磨过或者发现你的诊断规范里某个 DID 的写入行为跟预期不一样——评论区聊。我好奇你的 ECU 是怎么折磨你的。

相关新闻

使用Disk2vhd实现Windows物理服务器到Hyper-V的零停机迁移

使用Disk2vhd实现Windows物理服务器到Hyper-V的零停机迁移

1. 项目概述:从物理到虚拟的平滑过渡 在IT基础设施的演进中,将运行多年的物理服务器迁移到虚拟化平台,几乎是每个运维工程师或系统管理员都会面临的经典任务。这不仅仅是硬件的老化更新,更是一次架构的现代化升级。我最近就完成了…

2026/8/5 16:19:23 阅读更多 →
AI生成3D游戏原型:从提示词到可运行项目的工程实践指南

AI生成3D游戏原型:从提示词到可运行项目的工程实践指南

这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来。Claude Opus 5 把提示词生成游戏这件事,从过去只能出点粗糙色块,直接推到了能跑出带物理和音乐的完整 3D 原型。这意味着,如果你在尝试用 AI 辅助游戏原型开…

2026/8/5 16:18:22 阅读更多 →
mlir 编译器学习笔记之三 -- 测试

mlir 编译器学习笔记之三 -- 测试

1、完成mlir测试用例的check 自动更新bishengir-opt xx.mlir --split-input-file -torch-decompose-complex-ops -convert-torch-to-hfusion | python mlir/utils/generate-test-checks.py --source xx.mlir -i2、CHECK对 [[ 有特殊的含义,如果相应匹配&#xff0c…

2026/8/5 16:18:22 阅读更多 →

最新新闻

GCD队列切换从未如此简单:TaskQueue让主线程与后台线程无缝协作

GCD队列切换从未如此简单:TaskQueue让主线程与后台线程无缝协作

GCD队列切换从未如此简单:TaskQueue让主线程与后台线程无缝协作 【免费下载链接】TaskQueue A Task Queue Class developed in Swift (by Marin Todorov) 项目地址: https://gitcode.com/gh_mirrors/ta/TaskQueue TaskQueue是一个用Swift开发的任务队列类&am…

2026/8/5 17:09:52 阅读更多 →
革命性效率提升:CALM如何将文本生成速度提高K倍?

革命性效率提升:CALM如何将文本生成速度提高K倍?

革命性效率提升:CALM如何将文本生成速度提高K倍? 【免费下载链接】calm Official implementation of "Continuous Autoregressive Language Models" 项目地址: https://gitcode.com/gh_mirrors/calm12/calm CALM(Continuous…

2026/8/5 17:09:52 阅读更多 →
PDF补丁丁终极使用指南:如何用免费工具轻松解决所有PDF编辑难题

PDF补丁丁终极使用指南:如何用免费工具轻松解决所有PDF编辑难题

PDF补丁丁终极使用指南:如何用免费工具轻松解决所有PDF编辑难题 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: h…

2026/8/5 17:09:52 阅读更多 →
如何高效使用MobaXterm中文版:Windows远程管理的终极一体化解决方案

如何高效使用MobaXterm中文版:Windows远程管理的终极一体化解决方案

如何高效使用MobaXterm中文版:Windows远程管理的终极一体化解决方案 【免费下载链接】Mobaxterm-Chinese Mobaxterm simplified Chinese version. Mobaxterm 的简体中文版. 项目地址: https://gitcode.com/gh_mirrors/mo/Mobaxterm-Chinese 还在为Windows远程…

2026/8/5 17:09:52 阅读更多 →
戴森球计划工厂蓝图终极指南:3000+蓝图快速提升生产效率

戴森球计划工厂蓝图终极指南:3000+蓝图快速提升生产效率

戴森球计划工厂蓝图终极指南:3000蓝图快速提升生产效率 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是一个汇集了超过3000个戴森球计划工厂…

2026/8/5 17:09:52 阅读更多 →
Logue:本地AI会议纪要工具,Mac上实现隐私安全的Markdown笔记生成

Logue:本地AI会议纪要工具,Mac上实现隐私安全的Markdown笔记生成

这次我们来看一个专门解决会议记录痛点的本地 AI 工具:Logue 1.0.1。它不是又一个云端 AI 笔记应用,而是直接把 AI 会议纪要能力搬到了你的 Mac 上,核心是本地运行、隐私安全、输出纯 Markdown。对于经常开线上会议、又担心录音数据上传云端有…

2026/8/5 17:08:52 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →