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

article/2025/10/28 13:32:15

目录

UDS介绍

UDS命令形式

UDS的26种服务

UDS on CAN (CAN上的UDS为例说明)

常用UDS命令

故障码(四个大类)

NRZ码

CAN ID与CAN节点寻址关系

UDS源代码 (UDS协议栈)

CAN诊断实战


UDS介绍

UDS(全称:UnifiedDiagnostic Services)

UDS包含了ISO 14229下属的7个子协议,其中ISO 14229-2还是会话层的,所以UDS仅包括应用层的说法也是错误的

UDS本质上是一种定向的通信,是一种交互协议(Request/Response),即诊断方(Tester)给ECU发送指定的请求数据(Request)。响应包括肯定响应和否定响应。

ECU:实现UDS server协议栈

诊断仪:实现UDS client协议栈

参考:http://www.catarc.org.cn/upload/202001/22/202001220940052097.pdf

 

UDS命令形式

UDS的请求命令有4种构成方式

即SID,SID+SF(Sub-function),SID+DID(Data Identifier)(读写用),SID+SF+DID。

UDS的26种服务

但常用的服务是加背景色的15种。

服务分为:权限控制、读取数据/信息、写入数据/信息、通信控制、功能控制这几类。

 

 

UDS on CAN (CAN上的UDS为例说明)

CAN ID

0x7df (BROADCAST_ID)

对于specific的ECU,设计UDS时,会指定一个唯一的CAN ID(通常是0x7YZ),用于和指定的ECU进行UDS通讯。

 

CAN的数据格式大致如下所示:

CAN 标志 | Data Length Code | Data Field

 

CAN帧的Data Field表示的就是网络层的 PDU ;将网络层的PDU简写为 N_PDU 。

PDU=N_PDU的长度+N_PDU.

N_PDU= ID+数据类型+数据域,

 

常用UDS命令

读取软件版本号

SID+DID

SID : 0x22

DID: OEM自定义(例如0xF095)

 

写入数据

SID+DID+Data

SID:0x27

 

芯片进入reset状态

SID: 0x11

 

烧写程序

SID+SF

SID: 0x10

SF:0x02

 

安全访问(输入秘钥,建立连接)

SID:0x27

 

读取DTC

SID:0x19

 

故障码(四个大类)

分别是PCBU,P是powertrain动力系统,C是Chassis底盘,B是Body车身,U是network通信系统。一个DTC信息占用4个字节。最后一个字节是DTC的状态。

第一个字节在乘用车中,前两个bit代表P/C/B/U(动力/底盘/车身/网络)中的一个,之后六个bit是数字,合在一起的样子形如“C01”。第一个字节的前2个bit中,用00/01/10/11分别表示P/C/B/U。

 

NRZ码

 

CAN ID与CAN节点寻址关系

ECU上CAN ID寻址。CAN基于报文ID。不像Ethernet,基于节点地址的。

每一个ECU都有2个CAN帧ID,分别对应收和发的物理寻址。

 

UDS源代码 (UDS协议栈)

UDS 协议栈 源代码

https://github.com/openxc/uds-c

UDS server (ECU)

https://zhuanlan.zhihu.com/p/37310388

UDS client (Diagnostics tool)

https://udsoncan.readthedocs.io/en/latest/

https://github.com/pylessard/python-udsoncan

商用软件举例:

ISO 14229/UDS Sofware Details

  • ANSI C source code
  • Use with or without RTOS
  • Supports 8, 16, 32, 64-bit CPUs
  • Integrate with flash bootloaders to update products
  • UDS Client user’s reference manual
  • UDS Server user’s reference manual

 

CAN诊断实战

https://zhuanlan.zhihu.com/p/51338035

http://forums.codeblocks.org/index.php?topic=21905.0

https://github.com/peplin/ecomcat_to_openxc


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

相关文章

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 有时候为了将点云、构造的层次八叉树需要进行可视化,便于…

松散八叉树

1八叉树简述 1.1定义1.2数据1.3树的建立 1.3.1计算包围体的大小与中心点1.3.2判断物体所属的包围盒2松散八叉树 2.1松散八叉树的建立 八叉树简述 定义 八叉树是一种对三维世界进行场景管理的理想的空间数据结构。八叉树中根节点包含一个立方体包围盒。每个非叶子节点都拥有八…

八叉树学习

八叉树学习 八叉树结构八叉树的存储结构1. 规则八叉树:2.线性八叉树:3.一对八式八叉树 参考网站 八叉树结构 八叉树结构是由 Hunter 博士于1978年首次提出的一种数据模型。八叉树结构通过对三维空间的几何实体进行体元剖分,每个体元具有相同…

PCL中的八叉树

目录 (1)什么是八叉树 (2)PCL中八叉树的体素形成和PCL中基于八叉树的点云压缩 (3)基于八叉树的k邻域搜索、半径搜索和体素近邻搜索 (4)基于八叉树和基于 kd-tree 的k邻域搜索、半…

八叉树 java_java简单实现八叉树图像处理代码示例

一晃工作有段时间了,第一次写博客,有点不知道怎么写,大家将就着看吧,说的有什么不正确的也请大家指正。 最近工作中用到了一个图像压缩的功能。找了一些工具,没有太好的选择。最后选了一个叫jdeli的,奈何效…

八叉树

http://hi.baidu.com/onlywater/blog/item/905c5e162ed18f4021a4e9c1.html 一、八叉树基本原理: 用八叉树来表示三维形体,并研究这种表示下的各种操作以及应用,是进入80年代后开展起来的。这种方法,既可以看成是四叉树方法在三维…