汽车电子 - UDS

汽车电子 - UDS

  • 概念
    • 基本概念
    • 分类
    • 请求与响应
    • 寻址信息
      • 物理寻址
      • 功能寻址
    • 协议格式???
      • 750/758厂家自定义的吗???, 所有的UDS服务都在这里边吗???,代码中的Indata和outData???
    • 帧格式
      • 单帧传输 SF
      • 多帧传输
  • UDS服务
    • 10 服务

概念

参考
https://zhuanlan.zhihu.com/p/162710671
https://zhuanlan.zhihu.com/p/438099472

基本概念

客户端:诊断工具
服务端:ECU

UDS不止与诊断有关,还可以有诊断、刷写、升级都可以通过UDS诊断进行操作

分类

6大类26个服务
每个服务有一个唯一的服务ID,也叫SID

  • 诊断和通信控制管理功能相关的

10 :诊断会话
11:ECU复位,重启
27:安全访问(解锁ECU服务),ECU写入数据必须,必须要得到厂商提供的安全秘钥,然后根据秘钥利用27服务进行解锁ECU
3E:保持ECU和诊断仪通信

  • 故障码传输功能类

19:读取ECU存储的故障的信息,
14:清楚ECU故障码

  • 数据传输类的服务

22:根据想读的那一项数据的数据ID来读取ECU现在存储的运行时的一些数据
2E:向ECU写入一些指定的数据

  • 输入输出控制类功能

2F: 服务输入输出控制(模拟我们的车身控制模块去控制车窗升降) ,模拟输出一个让车窗升降的信号,来控制,验证模块正常

  • 例程控制服务

31: 检查可刷写前置条件的一个程序(开发制造),然后用31服务启动/停止个程序

  • 上传、下载服务,从ECU读取/写入,刷写ECU

34
36

请求与响应

UDS请求和响应
诊断仪请求 ECU给响应
诊断仪:CANoe/VBA工具/手持诊断仪

读取工作电压:诊断仪发送(诊断)报文
ECU返回的结果就是诊断响应(报文)

请求/响应规定
报文格式:SID(服务ID)+对应服务中某一项的数据ID
肯定响应:(SID+40)+服务特有的响应
否定响应:7F+SID(否的是哪个请求)+否定响应码(失败的原因是什么)

否定响应码NRC:3个字节
7F(固定)
SID(否定的响应服务)
NRC:

  • 11 请求的服务ID不支持
    (数据ID项(不是SID)不被支持 <- 请求22 02 07中02 07代表某项数据的数据ID,不被当前ECU支持)
    诊断仪发送的请求就没有做进去,就是ECU不支持服务
  • 12 服务SID下的子功能不支持
  • 22 先决条件不满足,本来是在扩展会话下进行,但是在默认会话下执行请求,所以就是先决条件不满足
  • 31 参数数据溢出,
  • 33 不满足安全策略,想用2E服务写入一些数据,但是必须先解锁ECU,如果没有解锁那么就报33错误,必须先解锁
  • 35 秘钥不匹配,如果想用27服务解锁ECU时,ECU需要诊断仪提供一个秘钥,如果秘钥不匹配那么报错
  • 36 解锁次数上限
  • 78 不代表响应失败,值代表收到请求,但是没有马上返回响应,ECU会等一会再返回响应

寻址信息

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

诊断请求、响应的服务信息,包含在(这)一帧CAN报文中,(每一帧CAN报文对应一个ID)
针对基于CAN协议的UDS诊断,UDS诊断发出和接收的报文就是CAN报文,
请求和响应的地址信息就是CAN报文的ID
请求和响应的服务信息就是CAN报文中的数据域的字节

物理寻址

物理寻址和功能寻址只针对诊断请求,在诊断响应中并没有这个概念
诊断仪与单个ECU之间的通讯,(一对一)
诊断仪通过物理寻址的方式发送请求报文时,只有指向那个ECU进行响应

功能寻址

物理寻址和功能寻址只针对诊断请求,在诊断响应中并没有这个概念
诊断仪与多个ECU之间的通讯,(群发,所有的指向对象都会进行响应)
7DF,作为功能寻址的报文ID (诊断仪发7DF,其他ECU发送各自的响应报文ID)

协议格式???

750/758厂家自定义的吗???, 所有的UDS服务都在这里边吗???,代码中的Indata和outData???

750对应TX
758对应RX
如何带参数进行传输,和带参数进行相应

帧格式

针对基于CAN的UDS服务,CAN帧数据场中,最多传输8个字节的数据

UDS报文帧分类

单帧CAN传输UDS报文(一帧CAN报文能装的下请求和响应)
多帧CAN传输UDS报文(一帧CAN报文不能装的下请求和响应)

单帧传输 SF

单帧传输,一个CAN帧最多传输8个字节,如果UDS请求和发送报文要传输的字节小于8个字节,就使用单帧传输
单帧例子:

请求:02 10 03 00 00 00 00 00 其中02中的0就表示单帧,2表示有2个有效字节
响应:06 50 03 00 32 01 F4 00 其中06中的0表示单帧,6表示有6个有效字节

多帧传输

  • 首帧
  • 流控帧
  • 连续帧

在这里插入图片描述

发送方发送首帧FF给接收方,接收方必须立刻返回一个流控帧FC(流控帧的作用:告知发送方接下来该怎么继续发送,如何发送后续的帧,后续的帧每隔多久发送一个帧… 见下面的bash)
发送方按照接收方流控帧的指示,继续发送帧(按照指示发送完成后,需要等待下一个流控帧的指示)

首帧   -> 	<-流控帧(高速发送方,后续的多个连续的帧,最少间隔多少发送一个帧,最多发几个帧,能不能发连续帧)
连续帧 -> (发送方接收流控帧的指示,发送多个连续帧)
...
连续帧 ->(等待接收下一个流控帧的指示)<- 流控帧  

首帧:1表示首帧,
流控帧:3表示流控帧
连续帧:2表示连续帧
在这里插入图片描述

UDS服务

10 服务

10服务- 诊断会话控制

诊断会话:
会话(聊天),会话分场合,
诊断仪-ECU之间通信,就是需要构建一个会话的场合
默认会话1001:读取数据、故障码、重置ECU,22、19、14、11
扩展会话1002:解锁ECU,控制输入输出,2E,2F,27
编程会话1003:刷写ECU的相关服务:34,35,36,38,对ECU进行编程,刷写固件程序

编程会话和扩展会话,为非默认会话
ECU上电默认就是默认会话

如果在跳转到非默认会话后,没有使用非默认会话下的服务,那么ECU就会跳转回默认会话下,一般推荐5s

进入编程会话必须先进入扩展会话

USD 服务
请求报文:10+会话子功能
响应报文:肯定响应(10+40)+会话子功能+会话超时时间(规定)+增强型会话超时时间(78响应码相关)

PDU: 协议数据单元,其实就是报文

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

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

相关文章

快速弄懂Pyqt5的4种项目部件(Item Widget)

快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图&#xff08;Item View&#xff09; 快速掌握Pyqt5的6种按钮 待续。。。 在PyQt5中&#xff0c;item widget是指可以放置在某些特定控件中的小部件&#xff0c;这些控件如…

offer 选择难?说说我的 2 个思考

大家好&#xff0c;我是鱼皮。秋招仍在进行中&#xff0c;随着越来越多的公司开奖&#xff0c;最近 编程导航星球 的小伙伴们也陆续发来了 offer 报喜&#xff1a; 图片 图片 但也有一部分小伙伴陷入了 “甜蜜的烦恼”&#xff0c;拿了几个 offer 却不知道怎么选择。 offer 选择…

存算一体还是存算分离?谈谈数据库基础设施的架构选择

从一则用户案例说起 某金融用户问&#xff0c;数据库用服务器本地盘性能好还是外置存储好&#xff1f;直觉上&#xff0c;本地盘路径短性能应该更好。然而测试结果却出乎意料&#xff1a;同等中等并发压力&#xff0c;混合随机读写模型&#xff0c;服务器本地SSD盘合计4万 IOPS…

使用uniapp开发系统懒加载图片效果

1、创建一个Vue组件 在uniapp项目中&#xff0c;我们可以创建一个独立的Vue组件来实现懒加载图片效果。打开uniapp项目&#xff0c;进入components文件夹&#xff0c;创建一个名为"LazeImage"的组件。 2、编写组件模板 在"LazeImage"组件中&#xff0c;…

【Spring篇】spring核心——AOP面向切面编程

目录 想要彻底理解AOP&#xff0c;我觉得你的先要了解框架的模块化思想&#xff0c;为此先记录框架在讲AOP 什么是java框架&#xff1f;为什么要出现框架&#xff1f; 我总结以下七点来讲述和帮助理解java框架思想 什么是AOP&#xff1f; 如何理解上面这句话呢&#xff1…

快速压缩:迅速减小PDF文件大小的步骤与技巧

虽然png图片格式是一种无损压缩格式&#xff0c;但是png图片的内存大小也是比较大的&#xff0c;而且兼容性上也没有jpg图片好&#xff0c;许多平台推荐的也都是jpg格式&#xff0c;所以当我们需要把png转jpg格式的时候&#xff0c;就需要用到图片格式转换器&#xff0c;今天推…

Pure-Pursuit 跟踪五次多项式轨迹

Pure-Pursuit 跟踪五次多项式轨迹 考虑双移线轨迹 X 轴方向位移较大&#xff0c;机械楼停车场长度无法满足 100 ~ 120 m&#xff0c;因此采用五次多项式进行轨迹规划&#xff0c;在轨迹跟踪部分也能水一些内容 调整 double_lane.cpp 为 ref_lane.cpp&#xff0c;结合 FrenetP…

第7章-使用统计方法进行变量有效性测试-7.3-列联表分析与卡方检验

目录 列联表分析 列联表 Python代码实现列联表 卡方检验 检验统计量

C# 面试题大全

1. 类成员有 2 种可访问形式&#xff1f;注&#xff1a;this.&#xff1b; new Class().Method 2. public static const int A1;这段代码有错误么&#xff1f;是什么&#xff1f; const成员都是static所以应该去掉static. 3. float f-123.567F; int i(int)f; i…

鸿蒙开发报错:agconnect sdk not initialized. please call initialize()【BUG已解决】

文章目录 项目场景:问题描述原因分析:解决方案:总结:项目场景: 鸿蒙开发报错: agconnect sdk not initialized. please call initialize() 问题描述 报错内容为: 10-25 11:41:01.152 6076-16676 E A0c0d0/JSApp: app Log: 数据查询失败: {“code”:1100001,“messag…

使用VC++设计程序对一幅256级灰度图像进行全局固定阈值分割、自适应阈值分割

图像分割–全局固定阈值分割、自适应阈值分割 获取源工程可访问gitee可在此工程的基础上进行学习。 该工程的其他文章&#xff1a; 01- 一元熵值、二维熵值 02- 图像平移变换&#xff0c;图像缩放、图像裁剪、图像对角线镜像以及图像的旋转 03-邻域平均平滑算法、中值滤波算法、…

定长子网划分和变长子网划分问题_二叉树解法_通俗易懂_配考研真题

引入:定长子网划分和变长子网划分的基本概念 定长子网划分和变长子网划分的基本概念 目前常用的子网划分&#xff0c;是基于CIDR的子网划分&#xff0c;也就是将给定的CIDR地址块划分为若干个较小的CIDR地址块。 定长子网划分: 使用同一个子网掩码来划分子网&#xff0c;因…

C语言每日一题(39)寻找两个正序数组的中位数

力扣网 4 寻找两个正序数组的中位数 题目描述 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,…

任意文件读取漏洞理解

任意文件读取漏洞理解 1. 漏洞描述&#xff1a; 任意文件读取漏洞是指攻击者可以利用漏洞读取系统上的任意文件&#xff0c;包括敏感信息的配置文件、用户数据甚至系统文件&#xff0c;从而获取未经授权的访问权限。 2. 漏洞原理&#xff1a; 这种漏洞通常是由程序处理用户输入…

libmosquitto库的一个bug,任务消息id(mid)分配后不起作用

代码如图所示: 当订阅了所有主题后,每个主题的mid是他们的下标索引加100的数字,可是实际打印出来的值是: mid依然是1,2,这个参数在这里失效了,不知道是bug还是mqtt的什么机制?

SpringBoot封装Elasticsearch搜索引擎实现全文检索

一、前言 注&#xff1a;本文实现了Java对Elasticseach的分页检索/不分页检索的封装 ES就不用过多介绍了&#xff0c;直接上代码&#xff1a; 二、实现步骤&#xff1a; 创建Store类&#xff08;与ES字段对应&#xff0c;用于接收ES数据&#xff09; import com.alibaba.f…

武汉数字孪生赋能工业制造,加速推进制造业数字化转型

随着数字孪生技术的不断推进&#xff0c;互联网、物联网、智能传感技术开始应用到数控机床的远程服务&#xff0c;状态监控&#xff0c;故障诊断&#xff0c;维护管理等方面。武汉数字孪生是在虚拟空间中创建物理对象的高保真虚拟模型&#xff0c;以模拟其在现实世界中的行为提…

2023年03月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 计算“2+4+8+……+128”,用变量n表示每项,根据变化规律,变量n的赋值用下列哪个最合适?( ) A: B: C: D: 答案:D

叠加原理(superposition principle)

叠加原理&#xff08;superposition principle&#xff09;指对线性系统而言&#xff0c;两个或多个输入产生的输出&#xff0c;等于这几个输入单独引起的输出的和&#xff0c;即输入的叠加等于各输入单独引起的输出的叠加。 例如&#xff0c;如果输入产生的输出是&#xff0c;…

「C++」入门

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;C启航 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 文章目录 &#x1f349;前言&#x1f349;命名空间&#x1f34c;访问命名空间中的元素&#x1f34c;同名命名空间&#x1f34c;展开&…