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

article/2025/10/28 13:22:50

汽车诊断简介

汽车诊断分类

按照连接方式分类可分为在线诊断、远程诊断:

  • 在线诊断:诊断仪通过与汽车OBD(On Board Diagnostic)接口直接连接
  • 远程诊断:通过车载终端、云端服务、用户之间交互实现

按照通信方式分类可分为:

  • 基于CAN总线的汽车诊断
  • 基于LIN总线的汽车诊断
  • 基于车载以太网(Automotive Ethernet)的汽车诊断

汽车诊断作用

  1. 通过诊断仪,读取汽车各电控单元(ECU)存在的故障,方便售后维修;
  2. 通过诊断仪,对汽车各电控单元(ECU)进行软件升级;
  3. 通过诊断仪,获取ECU运行状态信息、修改车辆配置、标定等。

汽车CAN网络拓扑

在这里插入图片描述在这里插入图片描述

寻址方式

物理寻址:一对一
功能寻址:一对多
标准帧诊断报文ID格式:0x7xx(优先级最小)
在这里插入图片描述

汽车在线诊断交互原理

在这里插入图片描述

UDS网络层协议

PDU定义

在这里插入图片描述## 单帧(多帧)报文格式

在这里插入图片描述
数据流传输分为非分段数据流和分段数据流。

非分段数据流由单帧SF构成,其使用条件为:正常寻址模式下单帧长度不超过7,扩展寻址模式下单帧长度不超过6。

单帧的N_PCI为1个字节,高四位N_PCItype=0,低四位SF_DL表示单帧传输数据的长度,为1-7。
在这里插入图片描述

分段数据流由首帧FF、流控制帧FC、连续帧CF组成。正常寻址模式下,数据字节长度大于7,扩展寻址模式下,数据字节长度大于6。

首帧N_PCI占据2字节,第一个字节高四位N_PCItype=1,第一个字节低四位和第二个字节表示后面要传输的数据长度FF_DL,最小为8个字节(首帧6+连续帧的第一帧2,要保证连续帧的第一帧至少有一个字节的数据才会用到非分段数据流),最大为4095个字节。
在这里插入图片描述

流控制帧FC的N_PCI占据3个字节,第一个字节高四位N_PCItype=3,第一个字节低四位表示数据流状态FS,0表示继续发送(CTS),1表示等待(WT),2表示溢出(OVFLW);第二个字节表示块大小BS,为允许一次连续发送CF的数量,为0时表示再无流控制帧,发送方可无限发送连续帧直至信息发送完毕;第三个字节表示ST_min,表示发送CF的最小间隔时间。
在这里插入图片描述

连续帧CF的N_PCI占据一个字节,第一个字节高四位N_PCItype=2,第一个字节低四位序列号SN,0x010x0F—>0x000x0F—>0x00~0x0F,表示第一次发的连续帧序列号为1~F,加到F后,下一次发的是0,再到F,如此循环。
在这里插入图片描述
需要注意的是,所有的报文类型都支持物理寻址;但是只有单帧才支持功能寻址(多帧中需要互相通信,功能寻址无法进行点对点通信)

网络层服务原语

在这里插入图片描述
请求服务(Request):网络层的上层使用。用于向网络层传递控制报文信息以及要发送的数据。如tester向ECU发出数据。

指示服务(Indication):网络层使用。用于向更高层或应用层传递状态信息以及接收到的数据。如ECU收到tester的数据,传到应用层。

确认服务(Confirm):网络层使用。用于向更高层或应用层传递状态信息。如tester收到了ECU方面的数据。

定时处理

在这里插入图片描述N_As:发送方CAN帧发送时间,其实质是首帧和连续帧在数据链路层传播的时间(发送方CAN报文确认超时);
N_Ar:接收方CAN帧发送时间,其实质是流控制帧在数据链路层传播的时间(接收方CAN报文确认超时);
N_Bs:直到下一个流控制帧接受的时间,其实质是接收方收到首帧时发出的ACK响应,与自己(发送方)收到流控帧的间隔时间(FC超时);
N_Br:直到下一个流控制帧发送的时间,其实质是自己(接收方)收到首帧,与自己开始发出流控制帧的间隔时间(FC接收端发送等待时间);
N_Cs:直到下一个连续帧发送的时间,其实质是自己(发送方)收到流控制帧,或者连续帧送达时产生的ACK响应,与自己开始发出新连续帧的间隔时间(STmin,不小于传输CF的时间);
N_Cr:直到下一个连续帧接收的时间,其实质是自己(接收方)收到连续帧,或者流控制帧送达时产生的ACK响应,到下一次收到连续帧的间隔时间(CF超时)。

错误处理

SF_DL错误

SF_DL=0或者SF_DL>7(常规寻址)或者SF_DL>6(扩展或混合寻址)时,接收方网络忽略收到的单帧,且接收方无indication。
在这里插入图片描述

FF_DL错误

  1. FF_DL>接收方的缓存,那么接收方网络层应中断报文接收,接收方发送FC,其中FS = Overflow(2),接收方无indication;
    在这里插入图片描述

  2. FF_DL<8/7(常规寻址模式为8,扩展或混合寻址模式为7),网络层应忽略FF,接受方无indication,且不发送FC;
    在这里插入图片描述

SN错误

流控帧CF中的SN错误,报文接收应该中断,接收方网络层应指示上层=N_WRONG_SN;
在这里插入图片描述

FS错误

如果发送方网络层发现接收到的流控制帧FC中数据流状态FS错误,那么报文发送应被中断,发送方网络层应确认上层=N_INVALID_FS;
在这里插入图片描述

N_WFTmax错误

接收方最多连续发送多少个等待FC帧个数,是本地变量。可以在多包报文发送过程的接收方网络实体中定义,系统初始化时应设置正确,使用这个变量可以避免发送方节点一直处于等待FC状态;
在这里插入图片描述

ST错误

发送方接收到的FC中的STmin设置为保留值时,发送方继续发送CF,只是各个CF之间的间隔时间为协议最大值(7F-127ms),发送方和接收方没有错误向各自上层报告;
在这里插入图片描述

非预期帧的处理

在多包报文传输过程中,任何一方接收到的非期望报文(同一个N_AI),根据网络是全双工还是半双工,节点处于接收状态、发送状态还是空闲状态,网络层的处理方法不同:
在这里插入图片描述
多包报文的发送必须采用物理寻址,如果多包报文的发送是功能寻址则需忽略功能寻址第一帧。

超时处理

N_As超时:发送方没有及时发送N_PDU
N_Ar超时:接收方没有及时发送N_PDU
N_Bs超时:发送方没有接收到流控帧
N_Br超时:接收方没有发出流控帧
N_Cs超时:即STmin,发送两个连续帧需要等待的最短时间
N_Cr超时:接收方没有接收到连续帧

N_PDU域的映射

将N_PDU映射到CAN数据帧的不同位置,构成了四种地址格式:
在这里插入图片描述

常规寻址-----11位CAN ID

N_AI映射到CAN_ID,但没有规定N_AI与CAN_ID的具体映射关系:
在这里插入图片描述

常规固定寻址-----29位CAN ID

与混合寻址编排方式类似,完整定义了N_AI如何映射到CAN数据帧的第一个字节:
在这里插入图片描述

扩展寻址-----仅用于11位CAN ID

在这里插入图片描述

混合寻址-----11位或29位CAN ID

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


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

相关文章

汽车诊断UDS通信协议总结

UDS通信过程 UDS&#xff08;Unified Diagnostic Services&#xff09;是一种用于汽车诊断的通信协议&#xff0c;它是基于CAN&#xff08;Controller Area Network&#xff09;总线的一种高层协议。 下面是UDS通信的基本流程&#xff1a; 建立诊断会话&#xff1a;通过CAN总…

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

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

基于UDS协议的Bootloader

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

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

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

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

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

UDS协议入门之10服务

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

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

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

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

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

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

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

UDS协议(史上最全)

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

八叉树地图

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

八叉树(Octree)

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

八叉树及应用

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

八叉树场景管理

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

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

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

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

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

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

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

详解八叉树地图

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

PCL可视化八叉树格网

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

松散八叉树

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