[UDS] --- UDS概述

news2024/11/21 0:36:08

UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是在汽车电子ECU环境下的一种诊断通信协议,在ISO 14229中规定。它是从ISO 14230-3(KWP2000)和ISO 15765-3协议衍生出来的。“统一”这个词意味着它是一个“国际化的”而非”公司特定的”标准。到目前为止,这种通信协议被用在几乎所有由OEM一级供应商所制造的新ECU上面。这些ECU控制车辆的各种功能,包括电控燃油喷射系统(EFI),发动机控制系统,变速箱,防抱死制动系统(ABS),门锁,制动器等。

1 诊断通信基本流程

其实诊断通信的机制很简单,事件驱动型,一问一答。
类比client-server通信方式,诊断仪即客户端,发送request,服务器即ECU,收到request之后进行处理,然后向诊断仪回复response。
在这里插入图片描述

有些情况下,我们可能只需要给ECU发送请求,而不需要ECU返回响应,例如用诊断命令雨刷动两下,我们可以通过雨刷的动作来判断诊断指令是否执行成功。这种通信方式是无反馈的,也是允许的。
在这里插入图片描述

1.1 响应时间P2 & P2*

在这里插入图片描述
Tester给ECU 发送request之后,ECU需要在P2server时间内给出响应
如果ECU当前正在处理别的事情,不能在P2server时间内给出response,ECU会先在P2server时间内给出RC(responde code)为78的报文,告诉Tester我现在正在忙,之后会在P2server时间内给出其他响应报文;
如果P2server
时间内还是不能给出肯定响应或者否定响应,那么给出pending报文,直到ECU可以给出正确的response

2 诊断寻址方式

在总线上往往有着众多ECU设备,作为诊断设备既可以与所有的ECU一起沟通,也可以指定某一个ECU单独沟通。所以寻址方式就有功能寻址(Functionally Addressed)和物理寻址(Physically Addressed)两种。

功能寻址可以广播诊断请求Request,同时等待总线上的ECU给与响应。
在这里插入图片描述
物理寻址指定发送特定诊断请求Request,等待指定ECU给与响应。
在这里插入图片描述

物理寻址:一对一
功能寻址:一对多

3 SI (Service ID)

SID:Service Identifier,诊断服务ID。UDS本质上是一种定向的通信,是一种交互协议(Request/Response),即诊断方(Tester)给ECU发送指定的请求数据(Request),这条数据中需要包含SID,且SID处于该应用层数据的第一个字节。
理论上一个字节的取值范围是0x00-0xFF,实际SID可取值的分布如下表:
在这里插入图片描述

4 诊断交互格式

4.1 诊断请求格式:

Diagnostic request的格式可以分为两类:一类是拥有sub-function的,另一类是没有sub-function的,如下面两张图所示。Service ID(以下简称SID)的长度固定为1个字节,代表了这条诊断命令执行的什么功能。sub-function的长度也是1个字节,它通常表示对这个诊断服务的具体操作,比如是启动、停止还是查询这个诊断服务。而后面的parameter则根据各个诊断服务的不同具有不同的内容,长度和格式并没有统一规格,它用于限定诊断服务执行的条件,比如某个诊断服务执行的时间等。parameter的一个重要应用是作为标识符,标识诊断请求要读出的数据内容,我会在后续的文章里详细讲述各个诊断服务的应用。
在这里插入图片描述
在这里插入图片描述

肯定响应抑制位
子功能参数的取值范围为0x00 - 0x7F。细心的同学应该发现了,子功能参数占用了一个字节,可用的数值范围为0~0xFF。但子功能的最大取值只到0x7F,那么最高位去哪了呢。这个子功能参数的最高位就是诊断服务肯定响应抑制位SuppressPosRspMsgIndicationBit,简写为SPRMIB。
如下是诊断服务子功能参数的格式定义。其中的最高位Bit7就决定了ECU是否需要给出肯定响应。
在这里插入图片描述
肯定响应抑制位的作用
ECU收到SPRMIB为1的服务时,不需要给出肯定响应。相反,当ECU收到SPRMIB为0的服务时,需要给出肯定响应。
例如,ECU收到诊断仪发来的Tester Present服务为$02 3E 00时,需要给出$02 7E 00的肯定响应。同样是Test Present服务,如果ECU收到的是$02 3E 80,则无需给出肯定响应。

4.2 诊断响应格式

Diagnostic response分为positive和negative两类。positive response意味着诊断仪发过来的诊断请求被执行了,而negative response则意味着ECU因为某种原因无法执行诊断仪发过来的诊断请求,而无法执行的原因则存在于negative response的报文中。
在这里插入图片描述
肯定响应格式
肯定响应(Positive Response)格式为:(SID+0X40)+Subfunction(子功能)+数据
例如:
请求0X10服务,Subfunction(子功能)为0X02
肯定响应第1个字节为0X50,第2个字节为0X02

否定响应格式
否定响应(Negative Response)格式为:0X7F+SID+NRC
例如:
请求0X10服务,否定响应第1个字节为固定的0X7F,第2个字节为0X10,第3个字节为NRC
NRC是否定响应码,可以根据返回的NRC判断是什么原因导致的否定响应

下面是实际的canoe诊断肯定响应和否定响应的截图:
在这里插入图片描述

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

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

相关文章

web - Tomcat服务器

文章目录 目录 文章目录 前言 一 . CS和BS的异同 二 . 什么是Tomcat 二 . Tomcat安装 四 . Tomcat目录结构 bin目录: 用于存放二进制的可执行文件 config目录 server.xml:配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是:8080 lib目录 log…

Qwt QwtPlotGrid网格类详解

1.概述 QwtPlotGrid类是Qwt绘图库中用于绘制网格的类。网格是图表中用于显示坐标轴刻度之间的辅助线的一种视觉元素。使用QwtPlotGrid类可以方便地添加水平和垂直网格线到绘图区域上。 以下是类继承关系图: 2.常用接口 分别启用或禁用x和y轴上的网格线。 enable…

优化改进YOLOv5算法:加入ODConv+ConvNeXt提升小目标检测能力——(超详细)

为了提升无人机视角下目标检测效果,基于YOLOv5算法,在YOLOv5主干中实现了Omnidimensional Convolution(ODConv),以在不增加网络宽度和深度的情况下提高精度,还在YOLOv5骨干网中用ConvNeXt块替换了原始的C3块,以加快检测速度。 1 Omni-dimensional dynamic convolution …

Docker 容器服务的注册、发现及Docker安全

目录 Docker容器服务的注册和发现 1、什么是服务注册与发现? 2、什么是consul consul的部署 1、环境准备 2、部署consul服务器 1)建立 Consul 服务 2)设置代理,在后台启动 consul 服务端 3)查看集群信息 4&a…

VSCode:清理ipch缓存

VSCode使用了一段时间,发现有些变慢,电脑管家扫描后,提示“AppData\Local\Microsoft\vscode-cpptools\ipch”目录下有很多缓存文件可以清理。 查询了一下:C/C 扩展常见问题解答 (visualstudio.com) 该件夹内包含缓存的预编译头文…

vscode markdown 使用技巧 -- 如何快速打出一个Tab 或多个空格

背景描述: 我在使用VSCode,这玩意很好用,但是,有一个缺点是,我想使用Tab来做一些对齐,但是我发现在VSCode中,无论是Tab还是多个空格,最终显示出来的都是一个空格 使用代码可以实现打…

基于ssm的宠物医院管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

搞定蓝牙——第四章(GATT协议)

搞定蓝牙——第四章(GATT协议) 原理介绍层次结构server和client端Attribute ESP32代码 文章下面用的英文表示: server和client:服务端和客户端 char.:characteristic缩写,特征 Attribute:属性 ATT:Attribut…

02第二课 指标与指标体系

二、如何获得数据:指标体系与用户路径 Q1 指标可以用来干什么? 建立指标体系目的是获得全面而充足数据支撑,通过分析,从而发现问题、或得出主观问题的结论。 优秀的指标体系在制定每个指标时,会与业务目标密切关联,紧密围绕活动策略,数据结果可以有效的衡量产品的健康…

JAVA基础(JAVA SE)学习笔记(九)异常处理

前言 1. 学习视频: 尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第三阶段:Java高级应用 9.异常处理 10.多线程 11.常用类和基础API 12.集合框架 13.泛型 14…

优咔科技创新连接方案助力高质量5G车联服务

上海优咔网络科技有限公司 CEO 闫楠 【摘要】本文就智能网联汽车对高质量5G车联服务的需求背景和行业趋势进行了分析,主要介绍采用5G双SIM卡的创新连接方案,重点讲述双SIM卡联网的端到端体系架构和技术方案,并就优咔科技全方位支撑行业领先车…

俄罗斯黑客利用Roundcube零日漏洞窃取政府电子邮件

导语:最近,一起涉及Roundcube Webmail的零日漏洞被俄罗斯黑客组织Winter Vivern利用,攻击了欧洲政府机构和智库。这一漏洞已经存在至少一个月,直到10月16日,Roundcube开发团队才发布了安全补丁来修复这个Stored Cross-…

hibernate源码(1)--- schema创建

sessionFactory 配置项: hibernate的核心是sessionFactory,那我们看看如何构建session Factory。 参考官网: plugins {id("java") } group "com.atai.hibernatespy" version "1.0-SNAPSHOT" repositories…

【UE】抓取物体

目录 效果 步骤 一、制作准心 二、简单的第三人称视角偏移 三、基于屏幕正中央的打点与射线 四、物理抓取的实现(抓取、放下、丢出) 效果 步骤 一、制作准心 1. 新建一个HUD,这里命名为“HUD_ZhunXin”,同时复制一个第三人…

51单片机晶体管数字编码

51单片机 单片机型号:STC86C52RC/LE52RC 晶体管 数字编码 数字P0P1P2P3P4P5P6P7011111100101100000211011010311110010401100110510110110610111110711100000811111110911110110 00011 11110x3F10000 01100x0620101 10110x5B30100 11110x4F40110 01100x6650110 110…

Qt设计一个自定义的登录框窗口

今天写了一个Qt登录、注册的小demo,后续完善会连接MySQL使用,过几天写完我会放在github上。 主要页面: 动态演示: 写完这个界面后,我终于知道了Qt为什么几乎没什么好看的窗口设计了,随便写一个简单大方的登…

【OpenCV实现平滑图像处理】

文章目录 概要2D 卷积(图像过滤)模糊图像(平滑图像)中值模糊双边过滤小结 概要 在图像处理中,低通滤波器是一种常用的技术,用于平滑、模糊或降低图像的噪音。这种滤波器通过去除图像中高频部分&#xff08…

基于FPGA的电风扇控制器verilog,视频/代码

名称:基于FPGA的电风扇控制器verilog 软件:QuartusII 语言:Verilog 代码功能: 基于FPGA的电风扇控制器 运用 EDA SOPO实验开发系统设计一个基于FPGA的电风扇定时开关控制器,能实现手动和自动模式之间的切换。要求: (1)KI为电…

PLM如何与MES管理系统协同工作

产品生命周期管理(PLM)和MES生产管理系统是现代企业中不可或缺的生产管理工具。它们分别负责产品的设计和制造过程,对于提高企业的生产效率和产品质量具有重要作用。然而,要实现高效的生产管理,PLM和MES需要进行协同工…

Python---练习:使用for循环嵌套实现打印九九乘法表

思考: 外层循环主要用于控制循环的行数,内层循环用于控制列数。 基本语法: # 外层循环 for i in 序列1:# 内层循环for j in 序列2:循环体 序列1 序列2 ,就可以是range(1, 10) -----也就是从1,到9。 参考while循环…