Uds诊断协议的请求和响应的寻址

2024-04-22 22:28

本文主要是介绍Uds诊断协议的请求和响应的寻址,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一根总线上挂载着很多ECU,那么基于CAN协议UDS的诊断请求报文,诊断仪是如何发给ECU的?如何精准的找到想要诊断的那个ECU?ECU又是如何将诊断响应的报文返回给诊断仪?

在UDS协议中,规定了诊断请求和响应报文发送时,必须要指明寻址信息(源地址和目标地址)

发送方:源地址。接收方:目标地址。

基于CAN总线的诊断通信来说,由于每个ECU可以根据事先设定只处理总线上,指定CAN报文ID的这个报文,因此UDS协议中的诊断请求响应的地址信息,本质上就是CAN报文的ID。

假设一个汽车仪表的ECU,如果给它提前设定好了总线上发出CAN报文ID为701的报文。那就代表是发送给这个仪表ECU自己的诊断请求的报文。

有了这样的设定后,如果想给汽车仪表ECU发送数据。

只需要发送CAN报文ID为701的报文,就是发送给仪表ECU的诊断请求报文。

当仪表ECU收到这个请求CAN报文,处理完成后。同样会以一个事先设定好的CAN报文ID,本次以709为诊断响应报文的CAN报文ID。诊断请求的服务数据包含在这一帧CAN报文中,这一帧CAN报文ID为701,8个字节。

诊断仪根据约定,一旦收到了这个CAN报文ID为709的报文,就知道这是仪表ECU发回的诊断响应的报文。诊断响应的服务数据也包含在这帧CAN报文的八个字节的数据中。

Uds诊断通信的报文是通过CAN协议传输的,UDS诊断的报文就是CAN报文,请求和响应的地址信息就是CAN报文的ID。请求和响应的服务信息就是CAN报文中的数据域的字节。

在车企中其实会为总线上的每个ECU都设定一个唯一的UDS诊断请求的CAN报文ID,以及一个唯一的UDS诊断响应的CAN报文ID。

现在有一个需求

我要通过UDS诊断来升级,某一个ECU,那么会有大量的数据要进行传输,因为要把这个ECU的整个固件程序,写入到ECU中,会涉及到大量的数据进行传输。这个时候需要暂停 除了当前要升级的这个ECU以外的,其他的所有的ECU的网络通讯。此时可以使用UDS诊断中的28服务(通讯控制)来完成。28服务可以暂停我们ECU上面的总线的通信,此时总线上有数十个通讯,不可能每个ECU都给它发一次28请求。我们就可以利用请求中的功能寻址(请求中分为物理寻址和功能寻址,只有请求中有,响应中没有)。

物理寻址其实就是诊断仪与单个ECU之间的通讯,功能寻址其实就是诊断仪与多个ECU之间的通讯。通过功能寻址的方式发送请求报文的时候,总线上的所有ECU都需要回复响应的报文。车企中有一个不成文的规定,会把功能寻址的ID设置为7DF。

总的来说,就是用诊断仪发送一帧ID为7DF的28服务的诊断请求的报文,这样总线上的所有ECU就都会停止网络通讯了。

这篇关于Uds诊断协议的请求和响应的寻址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/927034

相关文章

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

SpringBoot中Get请求和POST请求接收参数示例详解

《SpringBoot中Get请求和POST请求接收参数示例详解》文章详细介绍了SpringBoot中Get请求和POST请求的参数接收方式,包括方法形参接收参数、实体类接收参数、HttpServle... 目录1、Get请求1.1 方法形参接收参数 这种方式一般适用参数比较少的情况,并且前后端参数名称必须

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。