UDS诊断笔记

文章目录

  • 常见缩写
  • 简介
  • UDS寻址模式
    • 1. 物理寻址(点对点、一对一)
    • 2. 功能寻址(广播、一对多)
    • 3. 功能寻址使用场景举例
  • UDS报文格式
  • UDS协议栈
    • 网络层
      • 网络层功能
      • 网络层协议
      • 1. 单帧 SF(Single Frame)
      • 2. 首帧 FC(First Frame)
      • 3. 流控帧 FC(Flow Control Frame)
      • 4. 连续帧 CF(Continuous Frame)
      • 定时参数
  • UDS诊断服务
    • 1. 诊断和通信管理功能单元
    • 2. 数据传输功能单元
    • 3. 存储数据传输功能单元
    • 4. IO 控制功能单元
    • 5. 例程功能单元
    • 6. 上传下载功能单元
  • 引用与参考

常见缩写

  • ECU: 电 子 控 制 单 元
  • UDS:Unified Diagnostic Service( 统 一 诊 断 服 务 )
  • SID:Service Identifier(服 务 标 识 符 )
  • DID:Data Identifier(数 据 标 识 符 )
  • DTC:Diagnostic Trouble Code(故 障 诊 断 代 码 )
  • NRC:Negative Response Code(否 定 响 应 码 )
  • EOL:End Of Line(下 线 )
  • ISO:International Standards Organization(国际标准组织)
  • NA:Not Applicable(不适用)
  • NRC: 否定响应代码
  • USDT: Unacknowledged Segmented Data Transfer(不需响应的分段数据传输)
  • APP: Application(应用程序)
  • FBL: Flash Boot Loader(刷写引导程序)
  • OBD: 车辆诊断连接接口

简介

UDS本质上是一系列服务的集合。UDS的服务包含6大类,共26种。每种服务都有自己独立的ID,即SID(Service Identifier)。

UDS本质上是一种定向的通信,是一种交互协议Request/Response)
在这里插入图片描述

Tester发给ECU的数据,应包含 SID,且SID处于该 应用层数据 的第一个字节。

  • 如果是肯定的响应(Positive Response)首字节回复[SID+0x40]外,其他字节根据服务返回;例如,请求0x10,响应返回0x50
  • 如果是否定的响应(Negative Response)首字节回复0x7F第二字节回复刚才询问的SID第三字节NRC(否定响应码),代表否定的依据

在这里插入图片描述

  • 如上图,TesterECU 发送的数据 为 02 10 01 AA AA AA AA AA
    • N_PCI = 02, 表示 此帧为单帧有效数据长度2
    • N_Data = 10 01, 表示 Tester 发送的有效信息,请求ECU进入默认会话
    • AA AA AA AA AA自定义自动填充数据
  • ECUTester 响应的数据 为 06 50 01 00 32 01 F4 CC
    • N_PCI = 06, 表示 此帧为单帧有效数据长度6
    • N_Data = 50 01 00 32 01 F4, 50 =[SID+0x40], 后面为该服务返回数据
    • CC 为自定义自动填充数据

UDS寻址模式

1. 物理寻址(点对点、一对一)

根据物理地址的不同进行访问,但只能访问(通过CAN ID访问)单个ECU节点,TesterSA源地址,ECU作为TA目标地址

2. 功能寻址(广播、一对多)

根据功能的不同进行访问,它能访问(通过CAN ID访问)多个ECU节点,对于标准帧来说,通常是0x7DF,也就是说本网络中所有ECU都要对这条指令做出响应,即一对多模式

每个ECU 都有2个 CAN的诊断帧ID,分别对应物理寻址时 ECU发到CAN线上的报文CAN ID和处理指定CAN ID的数据报文

通常由主机厂来确定不同ECU的这两个特定的诊断ID。比如0x701对应接收Tester的消息,0x709对应发给Tester的消息

3. 功能寻址使用场景举例

  1. 刷写前使用0x85(ControlDTCSetting)服务关闭ECU故障检查功能
  2. 刷写前使用0x28(CommunicationControl)服务对某些ECU禁言
  3. 使用0x14(ClearDiagnosticInformation)服务清除多个ECU DTC等

UDS报文格式

在这里插入图片描述

UDS协议栈

UDS协议栈主要分为网络层和应用层两大部分
在这里插入图片描述

网络层

为了解决ISO 11898 协议中的经典can数据链路层与UDS 应用层 ISO 14229 协议中定义的应用层,彼此的数据长度不一样问题。经典can数据链路层最大支持8字节,但 ISO 14229 不仅仅支持can总线设计的,其最大容量是达到4095字节

例如,UDS应用需要发送20字节数据信息,而 经典CAN不能一帧报文处理完,需要3帧才能发送完毕。那么如何将多字节数据通过can进行有效,有序的传输呢?ISO 15765-2 由此而生。

网络层功能

  • 应用层诊断服务can数据帧的转发;
  • 多帧数据传输,进行数据的打包、解包,协调上下层工作;

网络层协议

N_PDU(网络层协议数据单元) 一般包含3个领域,N_PDU: { N_AI, N_PCI, N_Data }

参数名称缩写描述
寻址信息N_AI隐含源地址、目标地址和寻址方式信息
协议控制信息N_PCI用于标识N_PDU帧类型
数据N_Data包含应用层数据A_Data

网络层对于N_PDU分为单帧(SF)首帧(FF)流控帧(FC)连续帧(CF)这四种类型,每种类型是通过协议控制信息(N_PCI)进行区分的,每一个N_PDU都只有一个N_PCI。通常对于CAN诊断来说,就可以通过识别每条CAN帧数据域的 首个字节 来确定它属于四种类型中的哪类。

N_PDU类型N_PCI
Byte 1Byte 2Byte 3
Bit 7-4 Bit 3-0
单帧(SF) N_PCI Type = 0 SF_DL <= 7 N_Data
首帧(FF) N_PCI Type = 1 7 < FF_DL <= 4095 N_Data
流控帧(FC) N_PCI Type = 3 FS BS STmin
连续帧(CF) N_PCI Type = 2 SN (0-F循环计数) N_Data

网络层分为单帧和多帧,单帧(SF)就是一帧can报文8字节内就可以把uds数据处理完毕。多帧就是一帧can报文8字节内处理不完,需分为首帧(FF),流控帧(FC),连续帧(CF)来处理。网络层还有时间参数,如N_Ar、N_As、N_Br、N_Bs、N_Cr、N_Cs。后续网络层会详细讲解。

1. 单帧 SF(Single Frame)

单帧 顾名思义就是一帧can报文就可以处理完uds服务

2. 首帧 FC(First Frame)

发送方发送 N_Data 数据过长 时,则需要拆分成多帧报文 被拆分后的报文需要通过多个N_PDU来发送,而接收方接收到多个N_PDU信息后进行重组。
发送方发送多帧时,需要先发送首帧来告知接收方有多少字节数要发送到接收方。

3. 流控帧 FC(Flow Control Frame)

UDS多帧通讯时:

  1. 发送方 发送首帧FF 给接收方。
  2. 接收方接收到首帧, 解析首帧
  3. 接受方根据自身条件判断后(如:接收数据缓存大小,接收数据快慢能力,当前是否可以接收数据等), 回复一帧流控帧FC给发送方。
  4. 发送方根据接收到接收方的流控帧FC来决定后续的操作。

FS (Flow State) 流状态:

  • 0 : 继续发送
  • 1 : 等待
  • 2 : 溢出,即第一帧中的FF_DL信息的长度超过接受实体缓冲区的大小)

BS 表示 块大小(允许一次可连续发送连续帧 CF 的次数)
STmin 表示 发送方发送连续帧 CF 与连续帧 CF 间的最小间隔时间

4. 连续帧 CF(Continuous Frame)

发送方发送首帧FF,然后接收到接收方的流控帧FC后,若条件允许可继续发送信息,则需根据连续帧CF的控制信息格式来发送信息。

对于所有的拆分信息,SN开始于0。第一帧应当分配值为0。 虽然第一帧 N_PCI 没有明确表示出序列号,但是应该将首帧当作0号序列对待,第一个流控帧FC后的 连续帧SN设置为1,同一拆分信息上,每一个新增的连续帧顺序号SN增1,连续帧顺序号SN的值不受流控帧的影响,当连续帧顺序号SN值为0x0F时,下一个连续帧中将顺序号SN重置为0。

定时参数

网络层定义了N_ArN_AsN_BrN_BsN_CrN_Cs六个时间参数

定时参数描述
N_As发送方数据帧经数据链路层发送的时间
N_Ar接收方数据帧经数据链路层发送的时间
N_Bs发送方接收流控制帧的等待时间
N_Br接收方发送流控制帧的间隔时间
N_Cs发送方发送连续帧的间隔时间
N_Cr接收方接收连续帧的等待时间
  • N_As超时:发送方没有及时发送N_PDU
  • N_Ar超时:接收方没有及时发送N_PDU
  • N_Bs超时:发送方没有接收到流控帧。
  • N_Br超时:接收方没有发出流控帧。
  • N_Cs:即STmin,发送两个连续帧需要等待的最短时间,N_Cr最大1000ms
  • N_Cr超时:接收方没有收到连续帧。

UDS诊断服务

1. 诊断和通信管理功能单元

序号ID服务说明服务详解
10x10Diagnostic Session Control
(诊断会话控制)
客户端请求通过服务器控制会话点击此处跳转
20x11ECU Reset
(ECU重置)
客户端强制服务器执行重置点击此处跳转
30x27Security Access
(安全访问)
客户端请求解锁受保护的服务器点击此处跳转
40x28Communication Control
(通信控制)
客户端控制服务器内通信参数的设置(例如,通信波特率)点击此处跳转
50x3ETester Present
(测试仪 保活)
客户端向服务器发送其仍处于保活状态消息点击此处跳转
60x83Access Timing Parameter
(访问计时参数)
客户端使用该服务来读取/修改 有效通信的计数参数点击此处跳转
70x84Secured Data Transmission
(受保护的数据传输)
客户端使用该服务来执行具有扩展数据链路安全性的数据传输点击此处跳转
80x85Control DTC Setting
(控制DTC设置)
客户端控制服务器内DTC设置点击此处跳转
90x86Response On Event
(基于事件响应)
客户端请求设置/控制 服务器内的事件机制点击此处跳转
100x87Link Control
(链路控制)
客户端请求控制通信波特率点击此处跳转

2. 数据传输功能单元

序号ID服务说明服务详解
10x22Read Data By Identifier
(按标识符读取数据)
客户端请求读取通过给定 Data Identifier(数据标识符)所识别的记录的当前值点击此处跳转
20x23Read Memory By Address
(按地址读取内存)
客户端请求读取给定范围的当前值点击此处跳转
30x24Read Scaling Data By Identifier
(按标识符读取换算数据)
客户端请求读取通过给定 Data Identifier(数据标识符)所识别的记录的换算信息点击此处跳转
40x2ARead Data By Periodic Identifier
(按周期性标识符读取数据)
客户端请求调度服务器中的数据供周期性传输点击此处跳转
50x2CDynamically Define Data Identifier
(动态定义数据标识符)
客户端请求动态定义后续可能成为 22 服务所读取的数据标识符点击此处跳转
60x2EWrite Data by Identifier
(按标识符写数据)
客户端请求写入通过给定 Data Identifier(数据标识符)所指定的记录点击此处跳转
70x3DWrite Memory By Address
(受保护的数据传输)
客户端请求改写给定的内存范围的值点击此处跳转

3. 存储数据传输功能单元

序号ID服务说明服务详解
10x14Clear Diagnostic Information
(清除诊断信息)
允许客户端从服务器中清除诊断信息(包括DTC 和捕获的数据等)点击此处跳转
20x19Read DTC Information
(读取诊断信息)
允许客户端从服务器中请求诊断信息(包括DTC 和捕获的数据等)点击此处跳转

4. IO 控制功能单元

序号ID服务说明服务详解
10x2FInput Output Control By Identifier
(按标识符输入输出控制)
客户端请求服务器控制特定 输入/输出点击此处跳转

5. 例程功能单元

序号ID服务说明服务详解
10x31Routine Control
(例程控制)
客户端请求启动、停止服务器的例程,或请求例程结果点击此处跳转

6. 上传下载功能单元

序号ID服务说明服务详解
10x34Request Download
(请求下载)
客户端请求从客户端向通过服务器传输数据点击此处跳转
20x35Request Upload
(请求上传)
客户端请求从服务器向客户端传输数据点击此处跳转
30x36Transfer Data
(传输数据)
客户端向服务器传输数据(下载)或请求服务器传输数据(上传)点击此处跳转
40x37Request Transfer Exit
(请求传输终止)
客户端请求传输终止点击此处跳转
50x38Request File Transfer
(请求文件传输)
客户端请求在服务器和客户端之间传输文件点击此处跳转

引用与参考

  • https://zhuanlan.zhihu.com/p/502441990
  • https://blog.csdn.net/weixin_48498880/article/details/126443147
  • https://blog.csdn.net/weixin_48498880/article/details/128255219

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/84641.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gradio解决上传文件数最大为1000的限制

当使用上传文件夹功能传输超过1000个文件时&#xff0c;会报出以下错误&#xff1a; 在github上&#xff0c;最新版的gradio仓库已经解决了这一问题&#xff1a; 但是这一更改还没有正式发布&#xff0c;因此无法使用pip更新&#xff1a; 因此只能先手动git clone https://g…

Pytest三种运行方式

Pytest 运行方式共有三种&#xff1a; 1、主函数模式 运行所有 pytest.main() 指定模块 pytest.main([-vs],,./testcase/test_day1.py) 只运行testcase 下的test_day1.py 文件 指定目录 pytest.main([-vs]),./testcase) 只运行testcase 目录下的文件 通过nodeid指定用例…

JavaScript + GO 通过 AES + RSA 进行数据加解密

浏览器端搞些小儿科的加密&#xff0c;就好比在黑暗夜空中&#xff0c;点缀了几颗星星&#xff0c;告诉黑客「这里有宝贵信息&#xff0c;快来翻牌」 浏览器端的加密&#xff0c;都是相对安全的。 它的具体安危&#xff0c;取决于里面存在的信息价值&#xff0c;是否值得破解者…

虹科新品 | 振动监测:提升风能行业效率与安全!

一、 CTC概览 服务于工业振动分析市场ISO 9001认证设计和测试以满足工业环境的实际需求无条件终身保修兼容所有主要数据采集器、分析仪和在线系统美国制造 二、风能行业&#xff1a;为什么要进行监测&#xff1f; 在风能行业&#xff0c;振动监测是一项至关重要的节约成本和安…

学习笔记-JVM监控平台搭建

SpringBoot Actuator 1 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>2 开启配置 # 暴露所有的监控点【含Prometheus】 management.endpoin…

windows下以指定用户访问SMB服务器进行读写

一 概述 最近遇到一个问题&#xff0c;linux 的 smb服务器开启匿名访问&#xff0c;windows访问linux文件夹不需要用户名密码就可以进去使用&#xff0c;但是存在一个问题&#xff0c;ssh连接到linux 后修改的文件&#xff0c;在windows已smb方式下打开某个文件修改 是没有权限…

uniapp文件下载并预览

大概就是这样的咯&#xff0c;文件展示到页面上&#xff0c;点击文件下载并预览该文件&#xff1b; 通过点击事件handleDownLoad(file.path)&#xff0c;file.path为文件的地址&#xff1b; <view class"files"><view class"cont" v-for"(…

docker-compose Install minio

前言 MinIO 是一种高性能、兼容 S3 的对象存储。它专为大规模 AI/ML、数据湖和数据库工作负载而构建。它在本地和任何云(公共或私有云)上运行,从数据中心到边缘。MinIO是GNU AGPL v3下的软件定义和开源。 MinIO是对象存储服务,它基于Apache License 开源协议,兼容Amazon …

无脑——010 复现yolov8 使用rt detr 训练自己的数据集

1.配置环境 1. 首先去官网下载yolov8的zip https://github.com/ultralytics/ultralytics 存放在我的目录下G:\bsh\yolov8 然后使用conda创建新的环境 conda create -n yolov8 python3.8 #然后激活环境 conda activate yolov8然后安装pytorch&#xff0c;注意 &#xff0c;py…

GitOps 与 DevOps:了解关键差异,为企业做出最佳选择

在软件开发领域&#xff0c;GitOps 和 DevOps 是加强协作和实现软件交付流程自动化的重要技术。虽然这两种模式都旨在提高软件开发生命周期的效率&#xff0c;但它们的核心原则和实施方式却各不相同。 本篇文章将帮助您了解 GitOps 和 DevOps 之间的差异、它们的工作流程&am…

linux安装redis带图详细

如何在Linux系统中卸载Redis 一、使用apt-get卸载Redis sudo apt-get purge redis-server如果使用apt-get安装Redis&#xff0c;可以使用apt-get purge命令完全卸载Redis。其中&#xff0c;purge命令会不仅仅删除Redis二进制文件&#xff0c;还会删除配置文件、数据文件和日志…

logstash 采集 docker 日志

1、nginx容器部署 参考&#xff1a;nginx容器部署 将容器内的nginx日志文件映射到宿主机/home/logs/nginx目录下 注意&#xff1a;并且需要需要将日志的输出格式修改为json 2、编辑vim /opt/logstash-7.4.2/config/nginx-log-es.conf 文件&#xff0c;收集docker nginx容器日…

Vue + MapBox快速搭建

一、说明&#xff1a; 1.mapbox-gl自2.0版本开始不再开源&#xff0c;需要用户在官网申请key使用。 2.maplibre GL JS是一个开源库&#xff0c;它起源于 mapbox-gl-js 的开源分支。该库的初始版本&#xff08;1.x&#xff09;旨在替代Mapbox的OSS版本。简单来说maplibre是mapb…

Chatgpt API调用报错:openai.error.RateLimitError

Chatgpt API 调用报错&#xff1a; openai.error.RateLimitError: You exceeded your current quota, please check your plan and billing details. 调用OpenAI API接口 import openai import osopenai.api_key os.getenv("OPENAI_API_KEY")result openai.Chat…

Linux系统之使用cmatrix实现数字雨效果

Linux系统之使用cmatrix实现数字雨效果 一、cmatrix介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、环境准备工作3.1 安装开发环境3.2 安装基本软件3.3 安装 ImageMagick等工具 四、安装aalib工具4.1 新建目录4.2 下载aalib安装包4.3 解压软件包4.4 编译安装aalib …

Unity Git项目添加子模块

在 当前仓库根目录下执行命令 git submodule add https://github.com/xxx/child.git 检查仓库状态 git status 更新子库 git submodule update --remote 下拉父仓库Git并保住子库也更新 git pull --recurse-submodules 推荐使用 Githubdesktop工具 这样你可以更清楚的看到自己…

Redis学习笔记Day01-Redis入门

声明&#xff1a;本博客部分内容是从终极SpringBoot讲义摘抄的&#xff0c;文字是OCR识别出来的&#xff0c;有可能存在识别错误的可能&#xff0c;如有错误&#xff0c;请大胆指正&#xff0c;我马上修改&#xff01; 目录 0.官方参考手册API1.连接命令2.key相关命令3.String命…

基础实验篇 | QGC实时调整控制器参数实验

PART 1 实验名称及目的 QGC实时调整控制器参数实验&#xff1a;在进行硬件在环仿真和真机实验时&#xff0c;常常需要在QGC地面站中观察飞行状态&#xff0c;并对控制器参数进行实时调整&#xff0c;以使得飞机达到最佳的控制效果&#xff0c;但是&#xff0c;在Simulink中设…

【Python机器学习】实验11 神经网络-感知器

文章目录 人工神经网络感知机二分类模型算法 1. 基于手写代码的感知器模型1.1 数据读取1.2 构建感知器模型1.3 实例化模型并训练模型1.4 可视化 2. 基于sklearn的感知器实现2.1 数据获取与前面相同2.2 导入类库2.3 实例化感知器2.4 采用数据拟合感知器2.5 可视化 实验1 将上面数…

保姆级Arcgis安装图文安装教程

参考视频&#xff1a;【钟老师arcGIS从放弃到入门】02软件下载与安装_哔哩哔哩_bilibili 安装包在视频简介中有 注释&#xff1a;安装过程中有犯错误&#xff0c;请耐心看完一遍再跟着操作 &#xff08;一&#xff09;安装包下载 下载视频中分享的压缩包(压缩包密码&#x…