UDS介绍

news2024/12/24 22:15:04

首先要有网络网络七层的概念:

学习链接: 七层网络模型-CSDN博客


UDS网络层/TP层(ISO 15765-2)的解读 - 知乎 (zhihu.com)

概念:

        UDS(Unified Diagnostic Services,统一的诊断服务。

        标准名是《道路车辆 统一的诊断服务》

        英文名是《Road vehicles—Unified diagnostic services》

        在ISO 14229中规定,它是从ISO 14230-3(KWP2000)和ISO 15765-3协议衍生出来的。这些ECU控制车辆的各种功能,包括电控燃油喷射系统(EFI),发动机控制系统,变速箱,防抱死制动系统(ABS),门锁,制动器等。

除CAN总线以外,UDS也可在不同的汽车总线(例如 LIN, Flexray, Internet 和K-line)上实现。

关键缩略词

 缩写释意
SIDService Identifier诊断服务ID是一种交互协议(Request/Response),即诊断方(Tester)给ECU发送指定的请求数据(Request),这条数据中需要包含SID,且SID处于该应用层数据的第一个字节。如果是肯定的响应(Positive Response),首字节回复[SID+0x40],举例子就是请求0x10,响应0x50;请求0x22,响应0x62。如果是否定的响应(Negative Response),首字节回复0x7F,第二字节回复刚才询问的SID如果是肯定的响应(Positive Response),首字节回复[SID+0x40],举例子就是请求0x10,响应0x50;请求0x22,响应0x62。如果是否定的响应(Negative Response),首字节回复0x7F,第二字节回复刚才询问的SID

协议栈总览:

       UDS标准栈

协议

网络层概述

uds只涉及第一第二,第五第七层。

OSI
物理层定义终端之间的电气、机械等特性和标定;包括电压、频率、数据速率、最大传输距离。
数据链路层在物理线路上提供可靠的数据传输;例如物理地址、网络拓扑、线路规划、差错报告、数据帧有序传输;需要解决帧的破坏、丢失和重复的问题,线路使用权的竞争问题,流量调节和出错处理问题。
网络层

网络层最主要的目的就是把数据转换成能适应CAN总线规范的单一数据帧从而进行传输,如果将要传输的报文长度超过了CAN数据帧的长度,则需要将报文信息进行拆分后传输,每次至多可以传输4095个字节长度的报文。

网络层协议数据单元(N_PDU)有四种类型,即单帧(SF)、首帧(FF)、连续帧(CF)、流控制帧(FC),用于建立对等实体间的通信。

传输层(TP层

使收发的数据帧所包含的字节总数,扩容到4095个字节。

不管发送或接收是成功或是出错,都需要上报给应用层。

会话层
表示层在物理线路上提供可靠的数据传输;例如物理地址、网络拓扑、线路规划、差错报告、数据帧有序传输;需要解决帧的破坏、丢失和重复的问题,线路使用权的竞争问题,流量调节和出错处理问题。
应用层USD应用层由ISO 14229标准定义。诊断通信的过程从用户角度来看非常容易理解,诊断仪发送诊断请求(request),ECU给出诊断响应(response),而UDS就是为不同的诊断功能的request和response定义了统一的内容和格式。

基 于UDS的DOIP/DOCAN框架

 DoI P

是Diagnostic communication over Internet Protocol 的简称,顾名思义,我们以太网协议,承载UDS数据,实现诊断通信的这种方式称为DoIP相比DoCAN中CAN网络的封闭性,DoIP由于Ethernet的互联互通,可以实现车与车、车与人的远距离诊断通信。由ISO13400 系列标准定义。通过网络协议进行诊断通信,由ISO13400 系列标准定义。即DoIP是在以太网网络上传输UDS诊断数据的传输协议。DoIP带宽高,适合传输大量数据的场景,如车上的OTA软件升级。DoIP报文也是基于TCP或UDP,但在其报文的Payload起始段添加了DoIP报头(首部),用来区分不同的DoIP报文类型,实现不同的功能。DoIP报文的结构如下图所示:

在这里插入图片描述

DOIP协议体系参考协议总览‘

  • 网络层协议IP
  • 传输层协议TCP/UDP
  • 对网关的要求(网关如何集成到现有网络总)
  • 对测试设备的要求(如何发现车辆并建立通信)

支持DoIP的车辆网络架构图如下

在这里插入图片描述

 从这张图上可以看出:汽车内部必须有一个DoIP的总网关,它作为和外部的诊断设备DoIP通信的唯一接口。

DOCAN

UDS定义的是诊断服务,属于应用层的内容,实现诊断通信的底层总线技术有很多,比如CAN,LIN,Ethernet,Flexray等,由于法规强制的OBD接口是CAN总线的,所以绝大多数场景中诊断都是基于CAN实现的。这就带来了一个问题,classical CAN总线物理层的每一帧只能传输8个字节,CAN FD第帧最多能传输64个字节,那么如果UDS产生的一条诊断命令超过了8个字节,在CAN总线上一帧是承载不了的,就需要进行分包,这也是DoCAN(Diagnose over CAN)要解决的最主要的问题。

参考:基于CAN总线实现的UDS诊断(DoCAN) - 知乎 (zhihu.com)

目前并非最终版本,工作中遇到了再回来修改添加

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【栈和队列高频考点题】

目录 1 与栈有关的考题 1.1 最小栈 1.2 栈的弹出压入序列 1.3 逆波兰表达式求值 1.4 二叉树的最近公共祖先 1.5 单调栈 2 与队列有关的考题 2.1 二叉树的分层遍历 2.2 滑动窗口 1 与栈有关的考题 1.1 最小栈 题目描述: 解题思路: 要想在O(1…

微信小程序引入 vant ui组件

1.初始化 在小程序根目录(app.js所在目录),打开cmd命令窗口 npm init -y参数 -y 表示对 npm 要求提供的信息,都自动按下回车键,表示接受默认值。 2.下载miniprogram依赖 通过 npm 安装: npm i vant/weapp -S --p…

京东开源RaftKeeper性能超越ZooKeeper!

一、背景介绍 成百上千台服务器组成的分布式系统中,服务器故障或网络抖动会随时发生,有时会导致严重的系统崩溃,为解决如上问题,雅虎开源了ZooKeeper分布式协调服务并在2010年成为Apache顶级项目,是Hadoop、HBase和Cl…

为什么FTP会随着时间的过去而变慢?

有人问:我在XP上有FZ客户端3.5.3,在Vista上有0.9.41服务器。通过已经很慢的连接传输大文件时,我注意到速度开始时约为40kb / s,但逐渐趋于稳定,约为20kb / s,并保持这种状态。如果我退出客户端并重新启动它…

夜天之书 #81 大厂开源之殇

本轮开源之风吹起迄今数年,最大的影响还是越来越多的商业公司开始探索开源方法能够如何改变自己的经营策略。开源策略循序渐进分成使用、参与和发起。在发起开源项目实践一线的,一个是打着开源旗号的创业公司,另一个就是大型企业尤其互联网企…

JUC并发编程之AQS原理

1. AQS 原理 1.1 概述 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 特点: 用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个生态,控制如何获…

剪枝与重参第六课:基于VGG的模型剪枝实战

目录基于VGG的模型剪枝实战前言1.Intro2.Prune实战2.1 说明2.2 test()2.3 加载稀疏训练模型2.4 前处理2.5 建立新模型并存储信息2.6 BatchNorm层的剪枝2.7 Conv2d的剪枝2.8 Linear的剪枝3.基于VGG的模型剪枝总结基于VGG的模型剪枝实战 前言 手写AI推出的全新模型剪枝与重参课程…

快排的递归实现

快速排序是一种时间复杂度低,但会虽随着数组的顺序变化,因为其效率之高被称为快速排序,而 且其不稳定性也可以同过优化进行解决。 快速排序的实现有三种方法: 1.hoare版 其基本思想为:任取待排序元素序列中 的某元…

3、如何使用GDB来进行命令行debug

文章目录一、与前面的联系二、GDB的一些认识1、什么是gdb2、gdb作用3、gdb可实现的功能三、GDB常用的调试命令一、与前面的联系 对于前面说到的launch.json文件就是用于debug的配置文件,在前面的vscode中我们可以发现配置好launch.json文件之后进行调试&#xff0c…

攻防世界-web2(逆向加密算法)

打开链接是PHP源码 给了一串密文,并对这串密文进行了一系列操作加密,注释里说解密$miwen就是flag 在此我们先介绍一些PHP内置函数: strrev(string): 反转字符串 strlen(string): 返回字符串的长度 substr(string, start, length): 返回字符…

认识、使用C++vetor和array

目录 前言: 1.vector模板 1.1vector简介 1.2创建vector类对象 2.array模板 2.1array简介 2.2创建array类对象 3.比较中学习 4.怎么避免数组越界访问 前言: 指针的基础用法分了近三篇文章,结合数组、结构、共用体、字符串一起学习。相…

【Golang | http】使用http库完成一个简单的POST请求

引言 主要记录使用Golang实现一个POST请求所用到的小知识点 1、项目结构 客户端向服务端注册用户信息,服务端返回注册信息中的用户名 PS E:\goland-workspace\GolangLearning\http> tree /f 卷 文件 的文件夹 PATH 列表 卷序列号为 0C66-1433 E:. ├─client…

小样本学习FSL介绍

1 概念 小样本学习(few-shot learning,FSL)旨在从有限的标记实例(通常只有几个)中学习,并对新的、未见过的实例进行识别。 相比于传统的深度学习和机器学习方法,小样本学习能够更好地模拟人类的…

从C出发 22 --- 变量的作用域与生命期

问题 1 : 这样子定义一个不属于任何函数的变量正确吗? 问题 2 : 编译能通过吗? 问题 : 我们要打印的var 到底是 10 还是 100. 总结: 什么都不会输出,因为这里的 i ;是让局部变量的 i ,程序会一直死循环 为什么都是 11,为什…

在构建个人想法时,使用哪个工具更好呢?Tana, AmpleNote 和 妙记多 Mojidoc的比较

笔记类 App 都很强调个人化,因为我们每个人会用不同的方法来做笔记、写日记。不过有一些框架可以帮助我们,比如子弹笔记(Bullet Journal)等。 Tana 和 Amplenote 都可以使用「标签」,尽管它们处理的方式、体验都大不相…

4.14~4.16学习总结

多线程: 同步代码块 格式:Synchronized(锁) { 操作共享数据的代码 } 特点1:锁默认打开,有一个线程进去了,锁自动关闭。 特点2:里面的代码全部执行完毕,线程处理,锁自动打开。 …

SaleSmartly(ss客服)怎么玩转Instagram自动化?

这段时间接触了不少粉丝,一直在说ins营销,说谁谁谁通过这个引流,结果爆了,那我们今天就来简单说一下。Instagram (IG) 是全球最大的照片和视频共享平台,拥有超过10亿的月活跃用户和 5 亿的日活跃Story用户。借助IG的强…

LNMP和论坛的搭建

系列文章目录 文章目录系列文章目录一、LNMP搭建1.承接上文搭建nginx服务2.Mysql数据库搭建3.安装配置 PHP 解析环境4.、部署 Discuz!社区论坛 Web 应用总结一、LNMP搭建 1.承接上文搭建nginx服务 2.Mysql数据库搭建 1、安装Mysql环境依赖包 yum -y install \ n…

不限量免注册,极速体验AI助手

最近 ChatGPT 很火,火到每个人都想玩一把,由于受限,不是在搭梯子就是在搭梯子的路上,现在类 ChatGPT 产品,它终于来了。还是先简单秀一波操作:第一波:大数据记录中,涉及关键字快速检…

vue2路由(上)

路由的简介 什么是路由? 用生活上的例子,路由器上的接口对应一个主机。 而由key和values组成的映射关系就是路由 主要用于SPA单页面应用 就是根据你端口号后面的路径,看你有没有配置这个页面对应的组件,如果有,那么就…