UDS诊断学习笔记
定义介绍:
UDS(Unified Diagnostic Service)诊断的诊断服务。诊断协议是面向整车所有ECU(电控单元)的一种诊断通信协议,是诊断服务的规范化标准。
UDS本质上是一系列服务的集合,UDS的服务包含了6大类,共26种,每种服务都有自己独立的ID,即SID(Service Identifier)
通信模式:
实际上是与ECU交互的过程,即诊断仪请求(Request)ECU,ECU给出对应响应(Response)。
UDS寻址模式:
1.物理寻址,点对点,一对一,可根据物理地址的不同进行访问,但只能访问单个节点。
2.功能寻址,广播模式,一对多,根据功能的不同进行访问,它可以访问多个ECU节点,其SID对于标准帧来说,通常是7DF。
UDS的服务:
罗列出常用的15种服务,支持子功能的有10、11、27、28、3E、85、19、31,子功能通常是这些服务具有某些已经定义好的功能。
1.$10
10服务是Diagnostic Session Control诊断会话控制,子功能有01、02、03三种,这三种代表10服务可以进入的3种不同的会话模式。
01 Default默认会话,02 Programming编程会话(用于解锁bootloader相关的诊断服务,即程序烧录。),03 Extended扩展会话,ECU上电时,进入的是默认会话(Default)。
指令格式:
请求:10 SF
SF:子功能,比如01、02、03,编程会话只能通过先进扩展会话之后再进编程会话,当前为编程会话,不能直接发10 03跳转到扩展会话。
肯定相应:50 SF sessionParameterRecord[](4byte)
0x40+SID=0x50
SF是对应请求的子功能,请求是什么子功能,他便显示什么子功能。
会话参数记录有P2Server_max(2byte)和P2*Server_max(2byte),高位在前的表示方式。
P2Server_max:指的是ECU在收到请求和给出响应之间的这个时间间隔,他描述了ECU的反应速度。
P2*Server_max:在ECU给出NRC 78(等待)之后生效,所以会需要更长的反应时间。
否定相应:7F SID NRC(否定相应码)
否定相应格式一定,SID对应请求的SID,NRC为Negative Response Code,即会有一些类似于一个指令格式或数据是否正确的判断,在发送不是一个正常指令时,ECU就会给你这个NRC,相当于一个提示,可以通过不同的NRC判断指令的错误原因。比如常见的7E表示SF在此会话不支持(在编程会话发10 03即会出现)、12表示SF不支持(发10 FF这种不支持的SF)、13表示发出的此SID格式长度不符合标准定义的SID的格式(10服务定义的两个byte,发10 01 01,即会得到此NRC)。
以下服务,下期再解析。
2.$11
11服务是ECU Reset复位
3.$27
27服务是Security Access安全访问
4.$28
28服务是Communication Control通讯控制
5.$85
85服务是Control DTC Setting控制DTC设置
6.$22
22服务是Read Data By Identifier读DID
7.$2E
2E服务与22服务相对,是Write Data By Identifier写DID
8.$14
14服务是Clear Diagnostic Information清诊断信息
9.$19
19服务是Read DTC Information 读取故障码信息
10.$2F
2F服务是Input Output Control By Identifier通过ID控制输入输出
11.$31
31服务是Routine Control例程控制
12.$34
34服务是Request Download请求下载
13.$36
36服务是Transfer Data数据传输
14.$37
37服务是Request Transer Exit请求推出传输
15.$3E
3E服务是Tester Present待机握手
UDS诊断学习笔记的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Redis学习笔记之ABC
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...
- TCP/IP协议学习笔记
计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链 ...
- Dynamic CRM 2013学习笔记(二)插件基本用法及调试
插件是可与 Microsoft Dynamics CRM 2013 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标准行为.也可 ...
- ETHREAD APC 《寒江独钓》内核学习笔记(4)
继续学习windows 中和线程有关系的数据结构: ETHREAD.KTHREAD.TEB 1. 相关阅读材料 <windows 内核原理与实现> --- 潘爱民 2. 数据结构分析 我们 ...
- <老友记>学习笔记
这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
随机推荐
- DataTable 数字排序问题
问题:DataTable 的默认排序功能是按字符来排的.在js里,把数字当字符串来排序会很大的问题,例如:"2" > "11" 返回的是 true 解决办 ...
- System.Threading.Timer定时器使用注意事项
1.定时器不要直接在方法里面定义和赋值,因为方法执行完,方法体内的变量会被GC回收. 有时候我们将timer定义在了方法里面,然后看到timer被执行了几次之后才失效,原因就是GC不一定会立即回收. ...
- activiti学习2:示例工程activiti-explorer.war的使用
目录 activiti学习2:示例工程activiti-explorer.war的使用 一.搭建开发环境 二.运行示例工程 三.示例工程功能演示 1. 创建流程图 2. 部署流程图 3. 启动流程 4 ...
- 打开iBatis显示运行sql语句
将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试: log4j.logger.com.ibatis=DEBUG log4j.logger.com ...
- zookeeper实现的分布式锁
在分布式系统中,多个jvm对共享资源进行操作时候,要加上锁,这就是分布式锁 利用zookeeper的临时节点的特性,可以实现分布式锁 public class ZookeeperDistrbuteLo ...
- 19 SpringMVC 拦截器
1. 拦截器的概述(1)SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术.(2)可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链 中的 ...
- Spring学习指南-第二章-Spring框架基础(完)
第二章 Spring框架基础 面向接口编程的设计方法 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...
- 你也可以写个聊天程序 - C# Socket学习1
原文:你也可以写个聊天程序 - C# Socket学习1 简述 我们做软件工作的虽然每天都离不开网络,可网络协议细节却不是每个人都会接触和深入了解.我今天就来和大家一起学习下Socket,并写一个简单 ...
- [golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量
1 前言 svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量 2 代码 type Point struct { X float64 Y float64 } func GetOffsetX ...
- python 安装 SQLAlchemy 报错
安装 SQLAlchemy 报错 安装命令 pip install -i https://pypi.doubanio.com/simple SQLAlchemy 报错截图 编码错误,这里我们需要改下源 ...