大家好,欢迎来到IT知识分享网。
如果你是汽车电子小白,面对UDS协议一脸懵?
别慌!这篇保姆级教程,用“人话”拆解诊断仪与ECU的“加密对话”,让你5分钟掌握核心规则!
诊断请求:Tester如何“发指令”?
ECU就像餐厅后厨,诊断仪是“点菜员”,指令格式决定能吃到什么菜:
1. 标准点菜法:SID + 子功能 + 参数
- SID(1字节):点菜大类 → 0x22=“读数据”,0x2E=“写数据”。
- 子功能(1字节):烹饪方式 → 0x01=“清蒸”,0x02=“红烧”。
- 参数(可变):具体菜品 → 如车速ID=0x0D。
举个栗子:
22 01 0D → “师傅,用清蒸做法(0x01)给我来份车速(0x0D)!”
2. 快捷点菜法:SID + 参数
无需复杂操作时,直接甩需求:
- 示例:11 01 → “重启ECU(0x11),立刻马上(01)!”
诊断响应:ECU如何“回结果”?
后厨忙完,端菜or拒单?两种响应格式:
1.肯定响应:SID+0x40 + 数据
- 规则:原SID加0x40,附赠“菜品”。
- 示例:
62 0D 3C → “车速(0x0D)已上菜,60km/h(0x3C=60)!”
2.否定响应:0x7F + 原SID + 错误码
- 固定3字节:直接告诉你“为啥做不了”。
- 高频错误码:
- 0x11:本店无此菜(服务不支持)
- 0x22:火候不够(条件不满足)
- 0x31:点单格式错(参数无效)
示例:
7F 2E 22 → “写数据(0x2E)失败,条件不满足(0x22)!”
一图速查表:UDS对话核心规则
角色 |
格式 |
示例 |
解读 |
诊断请求 |
SID [+子功能] [+参数] |
22 01 0D |
读车速数据 |
肯定响应 |
SID+0x40 [+数据] |
62 0D 3C |
车速=60km/h |
否定响应 |
0x7F+原SID+错误码 |
7F 2E 22 |
写数据条件不满足 |
通俗版解读:UDS服务的“核心工具箱”与“高频技能包”
UDS协议就像汽车诊断的“瑞士军刀”,26种功能服务分6大类,但工程师只需重点掌握15种高频工具
,就能搞定90%的实战需求!

6大功能模块一句话总结
(1)会话控制→ ECU的“钥匙”(如0x10激活扩展会话)
(2)数据读写→ 内存的“读卡器+U盘”(如0x22读数据,0x2E写数据)
(3)故障管理→ 汽车的“体检报告”(如0x19读故障码)
(4)远程控制→ 云端操控的“遥控器”(如0x31启动例程)
(5)程序刷写→ ECU的“系统升级包”(如0x34下载数据)
(6)安全访问→ 数据的“密码锁”(如0x27解锁ECU)
UDS协议15种高频服务速查表
服务分类 |
服务名称 |
SID |
核心功能 |
请求示例 |
响应示例 |
关键注意 |
会话控制 |
诊断会话控制 |
0x10 |
切换ECU工作模式(默认/扩展会话) |
10 03(扩展会话) |
50 03(成功) |
扩展会话需配合安全访问解锁 |
ECU复位 |
0x11 |
重启ECU(软/硬复位) |
11 01(硬件复位) |
51 01(复位成功) |
操作后需重新建立会话 |
|
故障管理 |
清除诊断信息 |
0x14 |
清除ECU存储的故障码或数据 |
14 FF FF FF(全清) |
54(成功) |
需在扩展会话下执行 |
读故障码 |
0x19 |
读取当前/历史故障码(DTC) |
19 02(当前故障码) |
59 02 01 P00010C |
解析响应需匹配DTC格式 |
|
数据操作 |
读数据 |
0x22 |
读取ECU参数(如车速、温度) |
22 0D(车速) |
62 0D 3C(60km/h) |
数据标识符(DID)需预定义 |
写数据 |
0x2E |
修改ECU配置参数 |
2E 10 00 01(写DID) |
6E 10 00(成功) |
需安全访问解锁 |
|
读内存 |
0x23 |
直接读取ECU内存原始数据 |
23 00 10 00 04(4字节) |
63 00 10 00 12 34 56 78 |
高风险操作,需权限 |
|
安全控制 |
安全访问 |
0x27 |
解锁ECU高危操作权限 |
27 01 (请求种子) |
67 01 12 34(种子) |
需算法生成密钥(Seed→Key) |
通信管理 |
通信控制 |
0x28 |
关闭/恢复ECU非诊断通信 |
28 00 01 关闭应用报文) |
68 00 (成功) |
操作不当可能导致功能异常 |
例程控制 |
例程控制 |
0x31 |
触发ECU预定义自动化测试(如自检) |
31 01 01(启动例程) |
71 01 01 00(执行完成) |
例程ID需与ECU定义一致 |
程序刷写 |
请求下载 |
0x34 |
启动程序刷写,声明数据大小和地址 |
34 00 00 10 00… |
74 20(最大块32字节) |
地址需符合ECU内存映射 |
传输数据 |
0x36 |
分块传输程序数据 |
36 01 AA BB……(第1块) |
76 01(确认接收) |
按块大小(BS)分片发送 |
|
请求退出传输 |
0x37 |
结束刷写并校验完整性 |
37(结束) |
77(校验成功) |
必须校验防止数据损坏 |
|
高危操作 |
写内存 |
0x3D |
直接写入ECU内存(危险!) |
3D 00 10 00 01 02 03 |
7D 00 10 00(成功) |
需严格权限控制 |
DTC管理 |
控制DTC设置 |
0x85 |
启用/禁用故障码存储功能 |
85 01(禁用DTC) |
C5 01(成功) |
测试后需恢复设置 |
常见的否定响应码NRC请见下表

关注我,获取更多技术干货
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/182658.html