聊聊诊断协议——UDS

article/2025/10/28 13:12:09

文章目录

  • 前言
  • 一、车载诊断功能是什么?
  • 二、诊断协议框架
  • 总结


前言

随着技术不断提高,驾驶员对车辆的要求也在不断提高,因此车身控制器的数量也在与日俱增。控制器实现的功能:安全功能(防抱死系统等)、驾驶功能(助力转向等)、影音娱乐(车载娱乐系统,抬显系统),当然也包括今天索要分享的内容:诊断功能。


一、车载诊断功能是什么?

诊断功能的作用在上文已谈到:起初是为了快速界定车身发生故障部位,现完善和扩充很多功能(定义DID读取车辆运行状态信息、Software update刷写)。它的经典模型如下:

 Tester与车辆直接通信(直接通信方式),Tester发送请求(Request)到车身控制器,控制器基于收到的诊断请求给予响应(Response)。因全球有诸多OEM以及供应商,为了避免社会资源浪费,需定义通用的诊断协议。诊断协议中定义诊断服务的类型、诊断请求和响应的格式、ECU响应的机制等等。

今天我想跟大家聊聊UDS这个诊断协议(ISO 14229),全名:Road vehicles — Unified diagnostic services (UDS)。目前为止有7个子类:

注:上图标红的内容,当某一天一种新的总线引用到车载网络中,UDS协议照样适用在新的总线,不会因为时间推移,需求变更而被淘汰。

---ISO 1429-1中主要定义诊断服务类型(如2013版中定义26个诊断服务,也预留给用户自定义的内容)、诊断服务请求的格式、ECU收到诊断请求响应机制和格式;

---ISO 14229-2定义诊断功能实现过程中通信参数;

---ISO 14229-3、ISO 14229-4、ISO 14229-5、ISO 14229-6、ISO 14229-7是UDS协议在不同车载总线(车载通信介质)的具体应用和相应限制。比如ISO 14229-5定义了UDSonIP的具体应用和相应限制:

车载以太网通信过程中,是TCP搭建链接。在做会话模式切换以及Reset重启,搭建好的TCP链接会断开,再进行通信,需要重新搭建TCP链接(其实质是连接IP地址和Port端口的Socket)。

如果将UDS协议与计算机经典七层模型做一个Map:

 

每个层级对应不同的总线协议。这里以CAN总线为例,做个简单分享:

1、在物理层以及数据链路层,对应的协议ISO 11898。定义CAN总线电气特性,物理Pin脚。硬件工程师需重点关注这方面的内容;

2、传输层对应的协议是ISO 15765-2,定义数据传输的规则。里面详细解释CAN单帧和多帧数据传输规则:

(1)多帧中首帧First Frame、流控制Flow Control、连续帧Consecutive Frame标识符,格式在协议中都做了详细定义(在后续文章中会分享这个协议内容);

(2)协议定义不同的寻址方式格式

3、会话层映射ISO 14229-2,定义了通信参数;

4、表示层中定义OEM Specific数据内容(DID);

5、应用层14229-1配合ISO 14229-5,共同规范UDS协议在CAN总线的应用。

UDS协议定义了26服务类型:

 如上图,是以UDS 2013版为例,列举了26服务的类型。但在OEM诊断需求规范中,不会每个控制器都用到这26个服务,是根据新款车型控制器需求,基于UDS协议根据所需定义控制器的诊断需求规范。服务是1 byte的长度,除了上述的26服务,UDS也预留一些位给用户自定义:

UDS也定义了请求和响应的格式

 

诊断请求以Service ID来识别,肯定响应的规则是SID+40,否定响应的标识符是7F,后+SID表示否定那个服务,再+NRC告诉工程师为何给你否定响应。

截至目前,ISO 14229发布了2006/2013/2020三个不同版本。经常用的是06版和13版。现对这两个版本做一个简单区分:

1、在功能寻址情况下,如果出现7E/7F两个NRC,06版协议定义ECU必须给响应,13版为了降低总线负载,不用响应;

2、在13版UDS协议中对NRC优先级做了响应规定,而06版没有;

3、13版协议中ECU刷写做了描述,而06版没有。

2020版UDS协议多了Service 29:

通过安全认证,才能获取通信权限,更加好的保护数据安全。 

 

总结

如上是对ISO 14229协议进行汇总总结,对比了不同版本的协议主要区别。


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

相关文章

UDS诊断基础——UDS网络层协议

汽车诊断简介 汽车诊断分类 按照连接方式分类可分为在线诊断、远程诊断: 在线诊断:诊断仪通过与汽车OBD(On Board Diagnostic)接口直接连接远程诊断:通过车载终端、云端服务、用户之间交互实现 按照通信方式分类可分为: 基于…

汽车诊断UDS通信协议总结

UDS通信过程 UDS(Unified Diagnostic Services)是一种用于汽车诊断的通信协议,它是基于CAN(Controller Area Network)总线的一种高层协议。 下面是UDS通信的基本流程: 建立诊断会话:通过CAN总…

UDS诊断系列之二 ISO14229协议介绍(上)

ISO14229系列,涵盖了UDS的服务定义以及在各车载总线上的一些特殊应用指导,以及各总线类型所对应的下层协议要求,下面就是该系列中各协议所对应的内容清单。 协议编号协议名称协议内容14229-1Application layerUDS的使用规则,服务…

基于UDS协议的Bootloader

参考上汽标准:SMTC 2 800 004 电控单元诊断开发的技术要求 一、概述 二、Bootloader要求 三、刷新流程 四、刷新示例 一、概述 Bootloader概述:使用UDS协议服务实现应用软件,应用数据(包括网络配置数据和标定数据)的更新。B…

UDS - 诊断协议和协议栈介绍

目录 UDS介绍 UDS命令形式 UDS的26种服务 UDS on CAN (CAN上的UDS为例说明) 常用UDS命令 故障码(四个大类) NRZ码 CAN ID与CAN节点寻址关系 UDS源代码 (UDS协议栈) CAN诊断实战 UDS介绍 UDS(全称&#xff1…

UDS应用层协议解析(史上最全)

UDS应用层协议解析 UDS应用层协议解读(下) 诊断服务分类 基础服务类 0x10 诊断会话模式 任何会话模式切换至默认会话模式时,非默认会话模式下设置的状态需要reset(28服务、85服务设置的状态需要恢复至默认状态,27服务解…

UDS协议入门之10服务

前言 ISO-14229中按各服务的功能将uds协议划分为六大类: Diagnostic and Communication Management (诊断和通信管理)Data Transmission (数据传输)Stored Data Transmission (存储数据传输,用…

UDS协议发展历史(UDS是什么?)

诊断协议那些事儿 本文为诊断协议那些事儿专栏首篇文章,旨在介绍诊断的起源、发展历史,让读者对诊断有一个基本的认识,明确UDS到底是什么。 关联文章: UDS的应用场景 UDS的OSI模型 UDS服务列表 文章目录 诊断协议那些事儿一、诊…

(转发)详解汽车UDS诊断协议(二)

一.概述 UDS定义的服务从逻辑上分为6类,在上一篇文章中已经对诊断和通信管理类”“数据传输类”“存储数据传输“进行了解读。本文将介绍余下3类UDS服务,即“IO控制服务”“例行程序服务”“上传与下载服务”。 二.诊断服务内容 O控制服务 1. InputO…

(转发)详解汽车UDS诊断协议(一)

一.概述 UDS(UnifiedDiagnostic Services,统一诊断服务,有时也称增强诊断)是ISO-14229定义的基于OSI模型中应用层的协议。其中,ISO 14229-1定义了诊断服务,但不涉及网络层及实现手段,只有应用层的内容&…

UDS协议(史上最全)

UDS协议 UDS应用层协议解读(上) ISO 15765-3主要包含以下内容 应用层时间参数 P2CAN_ClientP2*CAN_ClientP2CAN_ServerP2*CAN_ServerP3CAN_Client_PhysP3CAN_Client_Func会话层时间参数 S3Client 当ECU处于非默认会话模式时,test端会周期性地…

八叉树地图

点云地图不能用于导航,八叉树地图可以用于导航八叉树:从一个节点展开成八个子检点,整个空间从最大空间细分到最小空间的过程 octomap 八叉树建立的地图由很多小方块组成,分辨率较高的时候,方块很小;分辨率…

八叉树(Octree)

转自:http://www.cnblogs.com/21207-iHome/p/7098000.html 八叉树(Octree)是一种用于描述三维空间的树状数据结构。想象一个立方体,我们最少可以切成多少个相同等分的小立方体?答案就是8个。再想象我们有一个房间&…

八叉树及应用

八叉树及应用 八叉树的定义如何搭建一颗八叉树八叉树的作用八叉树的实际应用 上一次介绍了KD树及应用,这次介绍一下八叉树,主要从定义、结构、作用及应用几个方面进行理解。 八叉树的定义 八叉树是在描述三维空间坐标场景中常用的一种数据结构。如下图所…

八叉树场景管理

目录 什么是八叉树(八叉树的数据结构)八叉树的图例八叉树的实现算法八叉树的场景管理器代码实现八叉树的应用场景 1.什么是八叉树——八叉树的数据结构 八叉树是一个树形结构,它的特点就是每个节点正好拥有八个子节点。它的这个结构特点正好能把空间立方体平均分成对…

基于八叉树的空间划分及搜索操作

基于八叉树的空间划分及搜索操作 原理CodeCmakeList.txtCPP体素 近邻 搜索K 近邻 搜索半径内 近邻 搜索 Result 原理 建立空间索引在点云数据处理中有着广泛的应用,常见的空间索引一般 是自顶而下逐级划分空间的各种空间索引结构。 比较有代表性的包括 BSP树KD树K…

基于C++的八叉树颜色删减实验

基于八叉树颜色删减实验 一、实验目的及要求 实现真彩色到256色的颜色转换算法 提供的代码: main.cpp :提供了主控函数main ,八叉树类octTree 和八叉树节点结构octNode 。 代码的编译: 由于需要使用bmp的信息头和文件头结构…

八叉树 java_图像八叉树量化讲解 Java版本

这篇文章主要讲解八叉树算法的原理,并用java进行实现 1.算法原理 八叉树最早是在1988年,由 M. Gervautz 和 W. Purgathofer 提出,该算法的最大优点是效率高,占用内存少。在图像量化中的思路是,图像rgb通道的值均为8比特…

详解八叉树地图

个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-102.html 八叉树地图 八叉树地图(OctoMap)就是一种灵活的、压缩的、又能随时更新的地图。八叉树示意图如下: 一个大立方体不断地均匀分成八块,直…

PCL可视化八叉树格网

1 原理 八叉树其实是一种特殊的由上至下的体素,其构造原理在这里不再进行赘述,详细的构造方式可参考博客:https://blog.csdn.net/qq_32867925/article/details/109094719 有时候为了将点云、构造的层次八叉树需要进行可视化,便于…