UDS协议(史上最全)

article/2025/10/28 23:01:39
  • UDS协议
    • UDS应用层协议解读(上)
      • ISO 15765-3主要包含以下内容
        • 应用层时间参数
          • P2CAN_Client
          • P2*CAN_Client
          • P2CAN_Server
          • P2*CAN_Server
          • P3CAN_Client_Phys
          • P3CAN_Client_Func
        • 会话层时间参数
          • S3Client
            • 当ECU处于非默认会话模式时,test端会周期性地向ECU端发送诊断设备在线的请求,使ECU端保持在非默认会话模式下,不至于S3Server timeout的发生
          • S3Server
            • 会话模式
              • 默认会话模式
              • 非默认会话模式
      • ISO 14229-1主要包含以下内容
        • 服务响应码实装规则
          • ECU响应码实装规则
            • 物理寻址带sub-function的请求
            • 物理寻址不带sub-function的请求
            • 功能寻址带sub-function的请求
            • 功能寻址不带sub-function的请求
        • 子功能参数结构
        • 诊断服务
        • DTC状态
    • ISO 14229-1
      • 概述
        • 定义诊断系统的通用需求
          • 与数据链路无关的诊断服务
      • 应用层接口服务
        • 应用层服务概述
          • 服务原语
            • 请求request
            • 请求_确认req_confirm
            • 指示indication
            • 响应response
            • 响应_确认rsp_confirm
            • 确认confirm
          • 有确认服务
          • 无确认服务
        • 应用层接口服务
          • 车辆系统需求
            • 客户(Tester)和服务器(ECU)统一编址
            • 每一个Tester和ECU的地址是唯一的
            • RA(远程地址)独立分配
      • 应用层协议
        • A_SDU——应用层服务数据单元
        • A_PDU——应用层协议数据单元
          • 请求A_PDU
            • 子功能参数$Level(LEV_)的定义
              • 1字节数据
              • Bit7——禁止肯定响应指示位
              • Bit6-0——子功能参数值(0x00~0x7F)
          • 否定A_PDU
            • 否定响应码NRC_
              • SNS——服务器不支持客户端请求的诊断服务
              • SFNS——服务器不支持客户端请求服务的子功能
              • IMLOIF——请求报文的数据长度(或者格式)不符合标准
              • ROOR——请求超出范围
              • RCRRP
                • 服务器正忙,暂时无法处理客户端发出的请求
        • A_PCI——应用层协议控制信息
          • 两种不同的格式(由服务原语和Result参数决定)
            • A_PCI(SI)
            • A_PCI(NR_SI,SI)
            • 服务标识符SI
              • 请求服务标识符SI
              • 肯定响应服务标识符SI
              • 否定响应服务标识符SI
        • A_PUD=A_PCI+A_SDU
        • 服务响应的执行规则
          • 对带子功能参数的请求消息的响应
            • 对物理寻址的客户端请求消息的
            • 对功能寻址的客户端请求消息
          • 对不带子功能参数的请求消息的响应
            • 对物理寻址的客户端请求消息
            • 对功能寻址的客户端请求消息
      • 各功能单元诊断服务
        • 诊断和通信管理功能单元
          • 诊断和通信管理
            • DiagnosticSessionControl (0x10)服务
              • 用于使能服务器中不同的诊断会话
                • 诊断会话
                  • 默认会话模式
                  • 非默认会话模式
                  • 编程模式
                  • 扩展模式
                • 不同的诊断会话具有
                  • 不同的功能
                  • 不同的定时参数
                  • 受到不同的安全访问保护
              • 请求报文
              • 肯定响应
              • 诊断会话模式的状态转移图
            • DiagnosticSessionControl (10hex)服务
              • diagnosticSession Type子功能参数
              • 不同会话所允许的诊断服务
              • 支持的否定响应码
                • 0x12
                  • 不支持请求服务的子功能
                • 0x13
                  • 请求报文的数据长度(或者格式)不符合标准
                • 0x22
                  • 条件不满足
            • SecurityAccess(0x27)服务
              • 安全访问过程的本质
                • 提供保护机制
              • 请求——requestSeed和sendKey子功能
              • 子功能securityAccess Type
              • 肯定响应
              • 支持的否定响应码
                • 0x12
                  • 不支持请求服务的子功能
                • 0x13
                  • 请求报文的数据长度(或者格式)不符合标准
                • 0x22
                  • 条件不满足
                • 0x24
                  • 请求顺序错误
                • 0x31
                  • 请求超出范围
                • 0x35
                  • 无效密钥
                • 0x36
                  • 尝试次数超限
                • 0x37
                  • 延迟时间未到
            • CommunicationControl(0x28)服务
              • 用于打开/关闭服务器对非诊断消息的发送和/或接收
              • 请求
              • 子功能controlType
              • 肯定响应
              • 支持的否定响应码
                • 0x12
                  • 不支持请求服务的子功能
                • 0x13
                  • 请求报文的数据长度(或者格式)不符合标准
                • 0x22
                  • 条件不满足
                • 0x31
                  • 请求超出范围
            • TesterPresent(0x3E服务)
              • 用于向服务器指示诊断仪仍然连接在网络上,先前激活的特定诊断服务和/或通信功能仍然保持激活状态
              • 周期性发送
              • 请求
              • 肯定响应
              • 支持的否定响应码
                • 0x12
                  • 不支持请求服务的子功能
                • 0x13
                  • 请求报文的数据长度(或格式)不符合标准
            • LinkControl(0x87)服务
              • 请求
              • 子功能linkControlType
              • 肯定响应
              • 支持的否定响应码
                • 0x12
                  • 不支持请求服务的子功能
                • 0x13
                  • 请求报文的数据长度(或者格式)不符合标准
                • 0x22
                  • 条件不满足
                • 0x24
                  • 请求顺序错误
                • 0x31
                  • 请求超出范围
            • 其他服务介绍
        • 数据传输功能单元
          • ReadDataByldentifier(0x22)服务
            • 客户端请求读取由数据标识符识别的某个记录的当前值
          • ReadMemoryByAddress(0x23)服务
            • 客户端请求读取指定存储器范围数据的当前值
          • ReadScalingDataByIdentifier(0x24)服务
            • 客户端请求读取由数据标识符识别的某个记录的定标信息
          • ReadDataByPeriodicldentifier(0x2A)服务
            • 客户端请求周期性传输服务器中的数据
          • DynamicallyDefineDataIdentifier(0x2c)服务
            • 客户端请求动态定义由ReadDataByldentifier服务读取的数据标识符
            • 通过现有的DID或存储器地址定义新的DID
            • 功能强大
            • 实现复杂
          • WriteDataByIdentifier(0x2E)服务
            • 客户端请求写入由数据标识符指定的某个记录
          • WriteMemoryByAddress(x3D)服务
            • 客户端请求将数据写入到指定存储器范围内
        • 传输储存的数据功能单元
          • ReadDTCInformation(0x19)服务
          • ClearDiagnosticInformation(0x14)服务
        • 输入输出控制功能单元
          • InputOutputControlByldentifier(0x2F)服务
            • 用于替换服务器输入信号的值或内部功能
            • 控制电子系统的某个输出(执行器)
        • 远程激活例程功能单元
          • RoutineControl(0x31)服务
            • 用于远程请求启动、停止某个例程或请求例程的执行结果
        • 上传下载功能单元
          • RequestDownload(0x34)服务
          • RequestUpload(0x35)服务
          • TransferData(0x36)服务
          • RequestTransferExit(0x37)服务
    • UDS诊断入门
      • 肯定响应[SID+0x40]
      • 否定响应7F+SID+NRC
      • 7种重要的服务
        • $10Diagnostic Session Control(诊断会话)
        • $14 Clear Diagnostic Information(清除诊断信息)
        • $19 Read DTC Information
        • $22 Read Data By Identifier(通过ID读数据)
        • $27 Security Access(安全访问)
        • $2EWrite Data By Identifier(通过ID写数据)
        • $3E Tester Present(待机握手)

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

相关文章

八叉树地图

点云地图不能用于导航,八叉树地图可以用于导航八叉树:从一个节点展开成八个子检点,整个空间从最大空间细分到最小空间的过程 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年代后开展起来的。这种方法,既可以看成是四叉树方法在三维…

Octree(八叉树)

1. 算法原理 八叉树(Octree)是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,将八个子节点所表示的体积元素加在一起就等于父节点的体积。八叉树是四叉树在三维空间上的扩…

【PCL自学:ocTree】八叉树(octree)的原理及应用案例(点云压缩,搜索,空间变化)

PCL中八叉树(octree)的原理及应用案例 一、什么是八叉树ocTree?1.八叉树原理 二、八叉树应用案例1.点云压缩2.用八叉树进行空间划分和搜索操作3.无序点云数据的空间变化检测 一、什么是八叉树ocTree? 1.八叉树原理 上世纪80年代&…

十进制小数化为二进制小数的方法是什么_十进制转成二进制的两种方式

第一种:用2整除的方式。 用2整除十进制整数,得到一个商和余数;再用2去除商,又会得到一个商和余数,如此重复,直到商为小于1时为止,然后把先得到余数作为二进制数的低位有效位,后得到的…

Python 利用内置函数把二进制小数转换为十进制

如果需要把一个二进制整数转换为十进制整数,只需要简单的一行: int(1101,2) 但如果有一个二进制小数的话,就需要自己实现一个函数了。 不过,许多人是这样写的:(图片取自这里) 可是,由于python本身并不适…

[学习笔记] 二进制小数表示方法

文章目录 科学计数法二进制推广计算机中的小数EXCESS表示系统特殊情况举例(float)普通情况最大正实数普通情况最小负实数普通情况最小正实数特殊情况最大正实数 科学计数法 科学计数法想必大家都很熟悉了,往往通过如下形式表示一个实数&…

十进制小数化为二进制小数的方法是什么_二进制的转换

二进制是在计算机中常用的一种进制数,其数据用0和1两个数码来表示数据。我们人类常用的是十进制,那么二进制和十进制之间是有一个转换方法的。 二进制转换十进制 一个二进制数转换为十进制数,是比较简单的,其方法就是用每一个位置…