网站首页 > 技术文章 正文
UDS协议中会涉及到一些专业术语,服务ID(Service ID(SID))、诊断请求(Diagnostic Request)、正响应/负响应(Positive/Negative Response)、负响应码(Negative Response Code - NRC)。
UDS中常用的缩写
UDS —— Unified Diagnostic Service(统一诊断服务)
ECU —— Electronic Control Unit(电子控制单元)
SF —— Single Frame(单帧)
FF —— First Frame(第一帧)
CF —— Consecutive Frame(连续帧)
FC —— Flow Control(流控制帧)
SF_DL —— Single Frame Data Length(单帧数据长度)
FF_DL —— First Frame Data Length(第一帧数据长度)
SN —— Sequence Number(帧序号)
FS —— Flow Status(流控制状态)
BS —— Block Size(块大小)
STmin —— Minimum Separation Time(最小连续帧时间间隔)
SID —— Service Identifier(服务标识符)
DTC —— Diagnostic Trouble Code(故障诊断代码)
DID —— Data Identifier(数据标识符)
NRC —— Negative Response Code(否定响应码)
EOL —— End Of Line(下线)
ISO —— International Standards Organization(国际标准组织)
NA —— Not Applicable(不适用)
1.Service ID服务标识符
在UDS协议中,Service ID(SID)是指服务标识符,用于标识要执行的服务。每个服务都有一个唯一的SID,在诊断会话中通过SID来区分要执行/响应哪种服务请求。
14229-1中定义了26种服务并将这些服务分为6大类:
诊断和通信管理类
数据传输类
存储数据传输类
输入输出控制类
例程功能类
上传下载类
表格中黑色加粗部分为常用的服务,其他的不常用。
大类 | SID (Hex) | 诊断服务名 | 服务Service |
诊断和通信管理类 | 10 | 诊断会话控制 | Diagnostic Session Control |
11 | ECU复位 | ECU Reset | |
27 | 安全访问 | Security Access | |
28 | 通讯控制 | Comunication Control | |
3E | 待机握手 | Tester Present | |
83 | 访问时间参数 | Access Timing Parameter | |
84 | 安全数据传输 | Secured Data Transmission | |
85 | 控制DTC的设置 | Control DTC Setting | |
86 | 事件响应 | Response On Event | |
87 | 链路控制 | Link Control | |
数据传输类 | 22 | 通过ID读数据 | Read Data By Identifier |
23 | 通过地址读取内存 | Read Memory By Adress | |
24 | 通过ID读比例数据 | Read Scaling Data By Identifier | |
2A | 通过周期ID读取数据 | Read Data By Periodic Identifier | |
2C | 动态定义标识符 | Dynamically Define Data Identifier | |
2E | 通过ID写数据 | Write Data By Identifier | |
3D | 通过地址写内存 | Write Memory By Adress | |
存储数据传输类 | 14 | 清除诊断信息 | Clear Diagnostic Infomation |
19 | 读取故障码信息 | Read DTC Infomation | |
输入输出控制类 | 2F | 通过ID控制输入输出 | Input/Output Control By Identifier |
例程功能类 | 31 | 例行程序控制 | Routine Control |
上传下载类 | 34 | 请求下载 | Request Download |
35 | 请求上传 | Request Upload | |
36 | 数据传输 | Transfer Data | |
37 | 请求退出传输 | Request Transfer Exit | |
38 | 请求文件传输 | Request File Transfer |
2.诊断请求(Diagnostic Request)
?诊断请求是指诊断工具向车辆发送的请求消息,用于请求执行某个服务。诊断请求消息由三个部分组成:SID、子功能和实际数据。其中,SID用于标识要执行的服务,至于子功能:指的是这个服务还能更进一步的划分或者具有启动/暂停之类的子功能。
??尽管服务类型不尽相同,但UDS针对这些服务定义了统一的诊断请求包的格式,每个诊断请求由1个Byte的SID + 1个Byte的 sub-function(实际上是1bit spr + 7bit sub-function)+ 不定长的实际数据构成,其格式如下所示:
其中sub-function占据7位:
sub-function :0x00-0x7F
spr=1
该字节范围
0x00-0xFF
spr=0
该字节范围
0x00-0x7F
注:spr存在的目的是告诉ECU针对某个服务请求是否需要发送正响应数据,用于减少ECU发送不必要的响应,节约系统资源:
spr=1, 抑制正响应,即ECU不给出正响应;
spr=0, 需要ECU给出正响应,如果某个服务没有sub-function,即没有第二个字节,那默认是要发正响应的。
3.正响应/负响应(Positive/Negative Response)
诊断工具向车辆发送服务请求后,如果服务执行成功,则返回的响应消息称为正响应,反之返回的响应消息称为负响应。
?正响应报文的字节组成格式如下图所示:
一个最简单的例子(0x10-诊断会话控制服务):
一个不带sub-function的例子(0x22-通过DID读数据):
?负响应消息由两部分组成:SID和负响应码(NRC)。SID用于标识响应的服务,负响应码指示服务执行失败的原因。
??负响应报文的字节组成格式如下所示:
一个0x10-诊断会话控制服务例子:
4.负响应码(Negative Response Code - NRC)
在UDS协议中,负响应码用于指示服务执行失败的原因。NRC用一个字节表示,每个取值都对应一种不同的错误类型。
NRC码 | 含义 | NRC码 | 含义 |
0x01 - 0x0f | 暂保留; | 0x78 | 收到请求,延迟响应; |
0x10 | 未知错误,服务被拒绝; | 0x79 - 0x7d | 暂保留; |
0x11 | 不支持该服务请求; | 0x7e | 当前会话下子功能不支持; |
0x12 | 不支持子功能; | 0x7f | 当前会话下服务不支持; |
0x13 | 消息长度或格式错误; | 0x80 | 暂保留; |
0x14 | 请求信息长度超出; | 0x81 | rpm(每分钟转速)太高; |
0x15 - 0x20 | 暂保留; | 0x82 | rpm太低; |
0x21 | 服务端正忙; | 0x83 | 当前引擎正在运行; |
0x22 | 条件不满足; | 0x84 | 当前引擎未运行; |
0x23 | 暂保留; | 0x85 | 截止当前时间引擎运行时间太短; |
0x24 | 请求顺序错误; | 0x86 | 温度过高; |
0x25 | 指令已经被接收,但是未被执行; | 0x87 | 温度过低; |
0x26 | 失败的操作导致当前操作无法执行; | 0x88 | 车速过高; |
0x27 - 0x30 | 暂保留; | 0x89 | 车速过低; |
0x31 | 参数错误; | 0x8a | 油门/踏板过高(超过了当前要求的最大阈值); |
0x32 | 暂保留; | 0x8b | 油门/踏板过低; |
0x33 | 安全校验未通过; | 0x8c | 变速器档位不在空档; |
0x34 | 暂保留; | 0x8d | 变速器档位不在排挡; |
0x35 | 密钥不匹配; | 0x8e | 暂保留; |
0x36 | 已达到解锁最大错误次数; | 0x8f | 制动开关没有关闭 |
0x37 | 超时时间未到; | 0x90 | 换挡杆不在驻车档; |
0x38 - 0x4f | 由扩展数据链路安全性保留; | 0x91 | 变矩器离合器锁定; |
0x50 - 0x6f | 暂保留; | 0x92 | 电压过高; |
0x70 | 不允许上传下载; | 0x93 | 电压过低; |
0x71 | 数据传输中断; | 0x94 - 0xef | 暂保留(特定条件下); |
0x72 | 擦除或烧写内存错误; | 0xf0 - 0xfe | 为汽车制造商保留; |
0x73 | 块序列计数错误; | 0xff | 暂保留; |
0x74 - 0x77 | 暂保留; |
5.ECU诊断层与会话层参数
No | 术语 | 说明 |
01 | P2server | 当tester给ECU发送请求时,ECU要在P2server时间内给出响应 |
02 | P2server* | 如果ECU在处理别的任务,不能给出响应,现在P2server内给出pending的响应,同时在P2server*时间内给出响应 |
03 | P2Client | 在tester端成功发送诊断请求后等待ECU发送响应时的超时时间 |
04 | P2*Client | 在接收到ECU应答的NRC为0x78时,到Tester收到ECU响应的单帧或首帧的超时时间 |
05 | P4Server | ECU 接收一个请求(T_Data.indication)到最终响应(T_Data.request)开始传输的时间间隔 |
06 | S3Server | 保持在非默认会话下的超时时间,超时后返回默认会话模式 |
07 | S3Client | 发送下个TesterPresent以保持在非默认会话模式的时间 |
08 | P3client_phys | 诊断工具连续请求的时间间隔 - 物理 |
09 | P3client_func | 诊断工具连续请求的时间间隔 - 功能 |
S3server补充说明:
在非默认会话,如此时请求进入扩展会话10 03,且没有请求0x3E握手服务。则会在定时器S3server超时后,会话模式退回默认会话。一般该时间会设置为5000ms。
参考内容
[1]CSDN作者lingboweitu的文章《UDS常用缩写》,文章链接为:
https://blog.csdn.net/lingboweitu/article/details/84790728
[2] CSDN作者车载系统攻城狮的文章《UDS协议从入门到精通(UDS速查手册)》,文章链接为:
https://blog.csdn.net/qq_40309666/article/details/130831416
[3] CSDN作者《【车载开发系列】UDS当中的时间参数》,文章链接为:https://blog.csdn.net/Last_Impression/article/details/132452312
本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。
作 者 | 郭志龙
编 辑 | 郭志龙
校 对 | 郭志龙
猜你喜欢
- 2024-12-20 微软确认Win10更新出现问题:建议完全重置系统
- 2024-12-20 【MFRC522】STM32 MFRC522 IC读卡 程序及原理图
- 2024-12-20 win10更新又双叒翻车 这几天出了这些问题都是它的锅
- 2024-12-20 微软 Win10 KB5003173 更新安装失败,原因是没有新版 Edge浏览器
- 2024-12-20 今年最后一次可选更新:微软Win11推送26100.2454
- 2024-12-20 关于BIOS的入口地址0xFFFF0 bios information
- 2024-12-20 部分Win11 24H2用户反馈微软12月更新BUG:安装失败、蓝屏等
- 2024-12-20 Win10用户反馈安装微软3月更新时遇到0xd0000034错误
- 2024-12-20 Win11 22H2 (KB5017321) 安装更新失败如何修复
- 2024-12-20 R730调整风扇转速 r710风扇速度设置
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)