汽车电子 - UDS

news2025/2/22 8:48:13

汽车电子 - 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个有效字节

多帧传输

  • 首帧
  • 流控帧
  • 连续帧

在这里插入图片描述

多帧传输:- 见视频图片https://www.bilibili.com/video/BV1DN4y1Q7Da/?spm_id_from=333.999.0.0&vd_source=7155082256127a432d5ed516a6423e20
首帧 ->
<-流控帧(高速发送方,后续的多个连续的帧,最少间隔多少发送一个帧,最多发几个帧,能不能发连续帧)
连续帧 -> (发送方接收流控帧的指示,发送多个连续帧)

连续帧 ->(等待接收下一个流控帧的指示)
<- 流控帧

0:单帧
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.coloradmin.cn/o/1254258.html

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

相关文章

Redis-缓存设计

缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c; 缓存层和存储层都不会命中&#xff0c; 通常出于容错的考虑&#xff0c; 如果从存储层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询&#xff0c; 失去了缓存保护后端存储的…

Linux:docker容器操作(4)

docker的基础操作 Linux&#xff1a;docker基础操作&#xff08;3&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/134616198?spm1001.2014.3001.5501 我这里准备了两个镜像 镜像加载到容器 docker create [选项] 镜像 运行的程序 -i 让容器的标准输…

基于单片机的可升降助眠婴儿床(论文+源码)

1.系统设计 本课题为基于单片机的可升降助眠婴儿床系统&#xff0c;在设计目标上确定如下&#xff1a; 1. 可以实现婴儿床的升降&#xff0c;摇床功能控制&#xff1b; 2. 具有音乐播放功能&#xff0c;并且有多首曲目&#xff1b; 3. 用户可以通过按键或者红外遥控&#x…

6.12找树左下角的值(LC513-M)

算法&#xff1a; 这道题适合用迭代法&#xff0c;层序遍历&#xff1a;按层遍历&#xff0c;每次把每层最左边的值保存、更新到result里面。 看看Java怎么实现层序遍历的&#xff08;用队列&#xff09;&#xff1a; /*** Definition for a binary tree node.* public clas…

openpnp - 给底部相机加防尘罩

文章目录 openpnp - 给底部相机加防尘罩概述笔记END openpnp - 给底部相机加防尘罩 概述 设备标定完, 看着底部相机, 有点担心掉进去东西, 万一从吸嘴掉下去的料(或者清理设备台面时, 不小心掉进去东西)将顶部相机搞短路怎么办. 就想加个防尘罩, 如果有东西掉进去, 可以掉到机…

【机器学习 | 开山篇】打造坚实基础、Kaggle 登榜之路

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

提示工程-Prompt Engineering

提示工程 提示工程 1、概述 Prompt Engineering&#xff1a; 提示工程 通过自然语言&#xff08;英语、汉语等&#xff09;来给AI下达指示&#xff0c;从而让AI完成你指定给他的工作的过程都可以称之为提示工程。&#xff08;面向自然语言编程&#xff09; 提示词要素 指令&…

线程的常用方法-wait和notify以及线程的结束方式

再复习一下Java中的线程的状态图 wait和sleep的区别是&#xff1a;wait需要先持有锁&#xff08;wait需要再synchronized代码块中执行&#xff09;&#xff0c;执行后会让出锁。而sleep不需要先持有锁&#xff0c;执行后也不会释放锁&#xff08;有锁的话抱着锁睡觉&#xff09…

2024年天津天狮学院食品质量与安全专业《普通化学》考试大纲

2024年天津天狮学院食品质量与安全专业高职升本入学考试《普通化学》考试大纲 一、考试性质 《普通化学》专业课程考试是天津天狮学院食品质量与安全专业高职升本入学考试 的必考科目之一&#xff0c;其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《…

这一款 Mac 系统终端工具,已经用的爱不释手了!

&#x1f525;&#x1f525;&#x1f525;作为程序员或者运维管理人员&#xff0c;我们经常需要使用终端工具来进行服务器管理及各种操作&#xff0c;比如部署项目、调试代码、查看/优化服务、管理服务器等。 相信大家用的最多的终端工具就是 Xshell、iTerm2和Mobaxterm&#…

Vue框架学习笔记——计算属性

文章目录 前文提要代码需求描述插值语法实现methods实现 计算属性getter执行时间&#xff1a;setter 计算属性简写形式&#xff08;只读不改&#xff0c;才能如此简写&#xff09;slice截取元素&#xff0c;限制输入字符数量 前文提要 本人仅做个人学习记录&#xff0c;如有错…

vue3(二)-基础入门

一、列表渲染 of 和 in 都是一样的效果 html代码&#xff1a; <div id"app"><ul><li v-for"item of datalist">{{ item }}</li></ul><ul><li v-for"item in dataobj">{{ item }}</li></u…

聚观早报 |红魔9 Pro支持165W快充;2023Q3欧洲手机市场报告

【聚观365】11月22日消息 红魔9 Pro支持165W快充 2023Q3欧洲手机市场报告 长安汽车官宣加入蔚来换电体系 网龙战略投资Rokid IBM推出5亿美元的风险基金 红魔9 Pro支持165W快充 截至目前&#xff0c;除了已经发布或即将亮相的几款骁龙8 Gen3常规旗舰外&#xff0c;游戏手机…

梯度详解与优化实战

什么是梯度 对所有自变量求偏微分构成的向量&#xff0c;它是一个向量&#xff08;有大小和函数值增长方向&#xff09; 导数是一个标量 找最小值点坐标的案例 import torchimport numpy as np import matplotlib.pyplot as plt def himmelblau(x):return (x[0]**2x[1]-11)…

MFC 绘制单一颜色三角形、渐变颜色边框三角形、渐变填充三角形、正弦函数曲线实例

MFC 绘制三种不同圆形以及绘制正弦函数曲线 本文使用visual Studio MFC 平台实现绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线. 关于基础工程的创建请参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-vis…

SpringBoot 环境使用 Redis + AOP + 自定义注解实现接口幂等性

目录 一、前言二、主流实现方案介绍2.1、前端按钮做加载状态限制&#xff08;必备&#xff09;2.2、客户端使用唯一标识符2.3、服务端通过检测请求参数进行幂等校验&#xff08;本文使用&#xff09; 三、代码实现3.1、POM3.2、application.yml3.3、Redis配置类3.4、自定义注解…

部署项目时常用的 Linux 命令

目录 1 前言2 SSH登录命令3 SCP传输命令4 CP拷贝命令5 MV移动命令6 TAR解压命令7 DU查看文件夹/文件大小8 TAIL查看日志9 NOHUP后台运行10 结语 1 前言 在应用部署过程中&#xff0c;Linux命令是必不可少的工具。它们能够帮助我们管理文件、连接服务器、拷贝文件、查看日志以及…

大数据项目--学习笔记

新零售项目介绍 1&#xff0c;行业背景介绍 一&#xff0c;百货商店 百货商店是世界商业史上第一个实行新销售方法的现代大量销售组织。其新型销售方法有&#xff1a; 1&#xff0e;顾客可以毫无顾忌地、自由自在地进出商店&#xff1b; 2&#xff0e;商品销售实行“明码标价…

java基础语法总结

导言&#xff1a; Java语言是一种面向对象的编程语言&#xff0c;具有简单、可移植、安全、高性能等特点。本篇文章主要对java的基础的语法进行一个简单的总结和概述。 目录 导言&#xff1a; 正文&#xff1a; 1. 数据类型与变量 2. 运算符与逻辑控制 3. 方法 4. 数组…

数据结构 / 结构体字节计算

1. 结构体的存储 结构体各个成员的地址是连续的结构体变量的地址是第一个成员的地址 2. 64位操作系统8字节对齐 结构体的总字节大小是各个成员字节的总和&#xff0c;字节的总和需要是最宽成员的倍数结构体的首地址是最宽成员的倍数结构体各个成员的偏移量是该成员字节的倍数…