UDS诊断基础知识简介-ISO14229

article/2025/10/31 0:31:21

什么是UDS?

UDS全称为Unified Diagnostic Services,统一的诊断服务。由ISO-14229系列标准定义。

诊断通信的过程从用户角度来看非常容易理解,诊断仪发送诊断请求(request),ECU给出诊断响应(response),而UDS就是为不同的诊断功能请求和响应之间定义了统一的内容和格式。位于OSI模型中的应用层。

作为汽车诊断通信重要构成部分,UDS在诊断中作用主要体现在以下几个方面

  1. 在诊断故障码中运用
    读取当前故障,历史故障,读取故障发生时环境信息,清除故障码
  2. 数据传输
    读取各种参数,下线配置
  3. 控制例程
    下线测试,身份认证,控制器reset等
  4. 上传下载
    刷新常用的诊断服务

Diagnostic request的格式:

Diagnostic request的格式可以分为两类:一类是拥有sub-function的,另一类是没有sub-function的,如下面两张图所示。Service ID(以下简称SID)的长度固定为1个字节,代表了这条诊断命令执行的什么功能。sub-function的长度也是1个字节,它通常表示对这个诊断服务的具体操作,比如是启动、停止还是查询这个诊断服务。而后面的parameter则根据各个诊断服务的不同具有不同的内容,长度和格式并没有统一规格,它用于限定诊断服务执行的条件,比如某个诊断服务执行的时间等。parameter的一个重要应用是作为标识符,标识诊断请求要读出的数据内容。
在这里插入图片描述
在这里插入图片描述

有一点要补充的是,其实sub-function严格来说是7个bit,而不是1个byte,因为它的最高位bit被用于抑制正响应(suppress positive response,SPR),如果这个bit被置1,则ECU不会给出正响应(positive response); 如果这个bit被置0,则ECU会给出正响应。这样做的目的是可以告诉ECU不要发不必要的response,从而节约通信资源。

Diagnostic response的格式:

Diagnostic response分为positive和negative两类。positive response意味着诊断仪发过来的诊断请求被执行了,而negative response则意味着ECU因为某种原因无法执行诊断仪发过来的诊断请求,而无法执行的原因则存在于negative response的报文中。

除了UDS之外也有其它的通信协议,比如OBD(用于汽车法规排放相关协议)。基于CAN的UDS俗称UDSonCAN,而基于K线的UDS目前很少见。对于UDS和OBD的通信结构如下图:
在这里插入图片描述
positive response的格式如上图所示,也基本上是由三部分组成,其中的response SID这个字节作为诊断请求的echo,它等于SID + 0X40。后面的两个部分则视具体的诊断服务而定。
在这里插入图片描述

negative response的格式固定为3个字节,第一个字节为0x7F,第二个字节是被拒绝掉的SID,第三个字节是这个诊断服务无法被执行的原因。下面这张图列举了部分原因代码,比如,如果ECU给出7F 22 13这个negative response,则说明22这个服务因为诊断请求数据长度不对的原因无法执行。
在这里插入图片描述
诊断通信的过程就是诊断仪和ECU交换数据,前者发的是request,后者发的是response,而UDS最重要的作用就是定义了这些request和response的格式和内容。

通讯机制

基于CAN的UDS俗称UDSonCAN,而基于K线的UDS目前很少见。下面是UDS通讯结构图:

在这里插入图片描述
UDS特点:UDS为事件驱动型,不会主动告诉外部信息,一问一答的形式,如诊断仪发出指令,UDS回复。

常用的诊断服务

在这里插入图片描述

下面来简单梳理一些服务的格式。

10服务:DiagnosticSessionControl

10服务的主要功能为ECU诊断状态控制。
在这里插入图片描述
常用的sub-function有:

0x01:defaultSession(ECU上电之后,默认状态)–默认会话

0x02:ProgrammingSession(这个session中可以进行软件刷写的一系列诊断服务)–编程会话

0x03:extendedDiagnosticSession(在这个session中可执行较多的诊断服务)–扩展回话会话在这里插入图片描述注意:10 指令中不同会话的转换是按照上图的流程来的 不能随意切换。如默认会话下不能直接进入编程会话

11服务:电控单元复位

在这里插入图片描述
11 01 : hard Reset (simulates the power-on/start-up sequence typically performed after a server has been previously disconnected from its power supply)(模拟通常在服务器之前与其电源断开连接后执行的开机/启动顺序)

11 02 :keyOffOnReset(similar to the driver turning the ignition key off andback on)(同时关闭和重新打开点火钥匙(类似于司机把点火钥匙关掉再打开))

11 03 :soft Reset(causes the server to immediatelyrestart the application program if applicable)(使服务器立即启动应用程序(如果适用) )

27服务:SecurityAccess安全访问

对于安全级别稍微高一些的诊断服务,需要执行27这个安全访问诊断命令,进行一个简单的身份验证。

完成27服务有以下步骤:

1,诊断仪向ECU请求“请求种子”(通常是一个与时间相关的伪随机数);

2,ECU向诊断仪发送“反馈关键字”;

3,诊断仪向ECU发送“Key” (根据反馈关键字和一个本地的密码进行计算得来)

4,ECU判断诊断仪发来的“Key”是否有效

下面举个解锁的例子:

诊断仪发送:27 05

ECU响应 : 67 05 01 01 01(关键字是 01 01 01)

诊断仪发送 : 27 06 02 03 04(key值是02 03 04,seed是 01 01 01,假设本地密码为01 02 03,而算法就是将密码与seed相加)

ECU验证成功 : 67 06

此时ECU就处于unlocked的状态了,那些被保护起来的诊断服务和诊断数据可以被操作了。

28服务:CommunicationControl

该服务用于打开/关闭某些类别的报文的发送/接收。

sub-function:

0x00enableRxAndTx (激活接收和发送)

0x01enableRxAndDisableTx(激活接收和关闭发送)

0x02disableRxAndEnableTx(激活发送和关闭接收)

0x03disableRxAndTx(关闭接收和发送)

communicationType:

0x1:代表普通应用报文;

0x2:代表网络管理报文;

0x3:代表普通应用报文和网络管理报文。

14服务:ClearDiagnosticInformation

14服务主要功能为删除存储在ECU中的DTC

sub-function用于标识将要被删除的DTC种类,UDS规定用FFFFFF表示所有种类的DTC

例 :诊断仪发送:14 FF FF FF(清除所有种类的DTC)

    ECU响应: 54(给出positiveresponse)

85服务:ControlDTCSetting

该服务用于控制ECU的DTC存储。

sub-function: 0x01 : on 0x02 : off

19服务:ReadDTCInformation

19服务主要功能为读取存储在ECU中的DTC
在这里插入图片描述

sub-function

0x01用于读取符合特定条件的DTC数量。

0x02用于读取符合特定条件的DTC列表。

0x06用于读取某个DTC及其相关的环境数据。

Parameter

Parameter是指DTC的status。

bit0 表示这个DTC是active的还是passive的;

bit4表示这个DTC是否已经被confirm了,如果DTC的状态是confirm,则说明该DTC已经被ECU存储下来了。

比如:

19 02 08这个命令的用途,就是读取所有状态为confirm的DTC的数量。

31服务:RoutineControl

31服务是调用ECU内置的一些操作序列的接口。

sub-function

启动(0x01)

停止(0x02)

查询结果(0x03)

routineControlOptionRecord,用于标识routine执行时所需要的参数,由各家自定义它的内容

例如,假设用0x0801这个ID来代表检查ECU是否满足软件刷写条件(比如车速、转速为0,KL15接通等)的routine。

诊断仪向ECU发送31 01 08 01即可启动0x0801这个routine。

还有很多诊断服务,常用的是这些,持续更新~


http://chatgpt.dhexx.cn/article/AITaUn4h.shtml

相关文章

UDS常用诊断服务介绍

1、UDS诊断简介 UDS英文全称为Unified Diagnostic Services,既通用诊断协议。相对于传统的OBD诊断不仅具有车辆ECU诊断功能,同时兼具数据传输、数据读写、通信控制等功能。也就是说已经不是传统意义上的诊断服务,可以称之为增强型诊断协议。…

UDS诊断协议规范与要求

1.UDS简介 1.1标准介绍 国际标准ISO 14229,基于OSI基本模型实现。如下所示: 应用层(第7层),ISO 14229-1,ISO 14229-3 UDSonCAN,ISO 14229-4 UDSonFR,ISO 14229-5 UDSonIP&#xff…

UDS诊断入门

UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是ISO 15765 和ISO 14229 定义的一种汽车通用诊断协议,位于OSI模型中的应用层,它可在不同的汽车总线(例如CAN, LIN, Flexray, Internet 和K-line&…

软件工程 第4版张海藩 pdf_2019年第4期软件工程造价师培训课程圆满结束

2019年2月20至22日,由北京软件造价评估技术创新联盟举办的2019年第4期(总第208期)软件工程造价师培训课程在北京圆满结束。 来自系统工程所、江苏国创新云、东软望海科技等公司的近20名学员参加培训。培训课上,培训老师系统讲解了国家标准和行业标准中规…

软件设计师考试-软件工程

1. 软件开发模型 瀑布模型 瀑布模型把软件开发分为三大阶段:定义阶段、开发阶段、维护阶段。 瀑布模型的最大缺点在于不能灵活应对变化的需求,瀑布模型适用于需求明确的情况。 软件测试完成后的工作产品,例如系统测试数据、系统测试结果、…

软考之软件工程

软件过程 软件成熟度模型(CMM) 软件过程改进的框架:过程改进基础设施、过程改进线路图、软件过程评估方法、软件过程改进计划。 每一次软件改进要精力4个步骤:评估、计划、改进和监控。 能力成熟度模型集成(CMMI&a…

广东二级造价工程师《造价管理》真题解析

2022年广东二级造价工程师考试结束之后,有些网友吐槽:说今年的二造考试出题有点偏,有点难。不过也有网友表示so easy~ 由于二造是机考,当场出分。现在只能期待今年及格线和以往一样。成绩不太理想的考生也不要紧,抓紧看…

软件 工程

目录 第十章、软件工程1、瀑布模型(SDLC)2、快速原型模型3、增量模型4、螺旋模型5、Ⅴ模型6、喷泉模型7、构建组装模型(CBSD)8、统一过程(RUP)9、敏捷开发方法10、信息系统开发方法11、需求开发12、结构化设…

造价师工程师零基础自学

二级造价工程师零基础自学可以考过,但是前提是自己要有很强的学习能力和自律性。帮过网表示,二级造价工程师考试难度不小,想要考过还是要付出很多的努力的。 1、零基础怎么备考二级造价师 一:理解基础知识——看教材。 作为小白…

2、软件造价总结(主要基准数据)

1、软件开发生产率 2、人月费率 3、功能点单价 功能点单价基准为 1245.19 元/功能点(以北京地区 功能点(以北京地区 统计数据 中位数 为基准, 费用包含 软件 开发 的直接 人力成本、间直接 人力成本、间人力 成本 、间接非人力成本 、间接非…

软考软件设计师----软件工程(自用)

本篇博文目录: 1.CMM与CMMI(1) CMM(2) CMMI 2.软件开发模型(1) 瀑布模型(2) V模型(3) 增量模型(4) 演化模型(5) 喷泉模型(6) 统一过程模型 3.敏捷方法(1) 软件需求(2) 系统设计(3) 系统测试 4.测试(1)单元测试(2)集成测试(3) 测试方法 5.运行和维护知识(1) 系统可维护的评价指标…

软件工程(Software Engineering)

软件工程(Software Engineering) GTI-分布式版本控制系统查看已有的git配置信息DVOS运维一体化单分支模型exitgit --versiongit clone urlnotepadgit config --listgit initgit remote add originjava JDK版本Builder Design Mode质量属性 FURPS功能性&a…

软考-软件工程

目录 🍓软件工程概述 🧀1.软件生存周期 🧅2.软件生存周期模型 🍚瀑布模型 🍈快速原型 🍘增量模型 🍯螺旋模型 🧀喷泉模型 🍪敏捷过程 🍣3.软件开发…

Springboot+建筑造价师资格考试应试网站设计与实现 毕业设计-附源码260839

Springboot建筑造价师资格考试应试网站 摘 要 如何合理确定和有效控制工程投资,是工程项目建设的一大难题,如何使建筑工程造价管理与社会生产水平相适应,是建筑工程造价管理中需要解决的问题,只有加强建筑工程造价管理工作力度&a…

linux强行退出线程,Linux 多线程编程--线程退出

今天分析项目中进程中虚存一直增长问题,运行10个小时虚存涨到121G ,RSS占用为16G 非常恐怖。 顺便查了下Linux单进程能创建线程的上限,以及相关内容。内存32G 64bit系统信息如下: Linux线程使用方式是主进程依据请求的多少动态创建…

Linux线程优先级设置

Linux内核的三种调度策略: 1.SCHED_OTHER 分时调度策略 2.SCHED_FIFO 实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3.SCHED_RR实 时调度策略,时间片轮转。当进程的时间片用完&#xff0…

linux多线程编程 实验,linux操作系统-实验五-linux 多线程编程.docx

linux操作系统-实验五-linux 多线程编程.docx 操作系统 实验报告 实验序号 5 实验项目名称 Linux 多线程编程 学 号 姓 名 专业、班 实验地点 指导教师 实验时间 2015.10.13 一、实验目的及要求 通过本实验的学习,使学生掌握 Linux 多线程编程的基本方法。 以学生自…

Linux下多线程的操作

线程定义 **定义:**线程是轻量级的进程(LWP:light weight pocess),在Linux环境下线程的本质仍然是进程。在计算机上运行的程序是一组指令及指令参数的组合,指令按照既定的逻辑控制计算机运行。操作系统会以进程为单位…

Linux多线程——概念

目录 前言 一.线程的概念 1.1 什么是线程 1.2 线程的优点 1.3 线程缺点 1.4 线程异常 1.5 线程用途 1.6 Linux进程和线程对比 1.7 关于进程和线程的问题 1.7.1 POSIX线程库 1.7.2 进程ID和线程ID 1.7.3 线程ID和进程地址空间 1.7.4 线程库与内核线程的关系 二.线程管理 …

Linux多线程 | 线程同步

文章目录 前言主要介绍四种常用的线程同步方式以及相关的函数接口。 一、线程同步二、同步方法1.互斥锁2.信号量3.条件变量4.读写锁 总结 前言 主要介绍四种常用的线程同步方式以及相关的函数接口。 提示:以下是本篇文章正文内容,下面案例可供参考 一…