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

相关文章

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Spring Boot Controller处理HTTP请求体的方法

《SpringBootController处理HTTP请求体的方法》SpringBoot提供了强大的机制来处理不同Content-Type​的HTTP请求体,这主要依赖于HttpMessageCo... 目录一、核心机制:HttpMessageConverter​二、按Content-Type​处理详解1.

一文详解如何在Vue3中封装API请求

《一文详解如何在Vue3中封装API请求》在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时,下面我们来看看如何在Vue3项目中封装API请求,让你在实现功能时更加高效吧... 目录为什么要封装API请求1. vue 3项目结构2. 安装axIOS3. 创建API封装模块4. 封装API请求

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt