UDS诊断协议

UDS

  • 主要功能:读取故障,数据传输,上传下载,复位等

借鉴参考了shnsxz大佬的博客
借鉴参考了fish_study_csdn大佬的博客

诊断请求
第一字节
  • 为了解决数据过长,即分包的问题,15765-2总共定义了4种类型的帧结构在这里插入图片描述

  • 表示四种帧的类型主要靠byte1的高四位,单帧为0,首帧为1,连续为2,流控为3

在这里插入图片描述

  • 在单帧的情况下(即),SF_DL代表后面有几个字节数据,如果有没有使用的字节,通常要用0x55或0xAA来填充。

在这里插入图片描述

  • 分包情况的工作流程,如下图所示

在这里插入图片描述

  • 首先,发送端通过FF(FirstFrame)启动通信,其中前两个字节的高位4bit标识为0001代表FF,低4bit与第二个字节共同表示总数据长度。接着,接收端回应FC(FlowControl),首字节高4bit为0011,低4bit的FlowStatus和第二个字节的BlockSize、第三个字节的SeperateTime共同指示接收速率。FlowStatus存在三种状态:CTS(0)、WT(1)、OVFLW(2)。

    • FlowStatus的状态:FlowStatus为0时,允许发送ConsecutiveFrame;为1时要求暂停发送,恢复时再发FlowStatus=0通知;若因资源限制无法接收数据,则发送FlowStatus=2的FlowControl。

    在这里插入图片描述

    • Stmin的状态:由控制图可知,Stmin的大小控制的是上一帧CF结束到开始下一帧CF中间的最小时间间隔
      在这里插入图片描述

    • BS的状态:BS的大小是CF帧在没有流控帧的情况下能发多少帧,例如BS为5,那么CF能够发五帧,然后就要看新的流控帧如何调配。

    在这里插入图片描述

  • 分段传输的诊断服务举例:
        这是一个读取DTC的命令和应答。
        03 19 02 08 55 55 55 55 (诊断仪发送的SingleFrame的request)
        10 33 59 02 19 01 00 07 (ECU以FirstFrame开始传输的response)
        30 00 00 55 55 55 55 55 (诊断仪发送的FC)
        21 09 03 05 02 09 05 04 (ECU发送的CF)
        22 07 09 05 06 06 09 05 (ECU发送的CF)
        23 08 03 08 07 01 05 08 (ECU发送的CF)
        24 07 01 06 08 07 01 0C (ECU发送的CF)
        25 08 07 01 0D 08 07 03 (ECU发送的CF)
        26 07 09 08 01 01 09 09 (ECU发送的CF)
        27 01 07 09 AA AA AA AA (ECU发送的CF,此时传输结束)
        BS和STmin等于0时,表示接收端可以以最快的速度来接收数据,发送端可以一次发送的CF数量不受限制。

其余字节
UDS报文
  • 有子功能

    • 1byte:Service ID(SID),服务标识符,相当于CCP的CMD,代表了这条诊断命令执行的什么功能。

    • 1byte:Sub-function,当前服务标识符具体的操作,代表当前诊断服务的具体操作

      • 其中Sub-function的8个bit,最高位的1bit用于抑制正响应。当最高位为1时,不会给出正响应;为0,给出正响应。
    • xbyte:Parameter,当前功能下的发送参数

    • 例如:31 01 08 09为开启软件刷写检查,31 02 08 09为关闭

      • 31为服务标识符,01为子功能ID,08 09为具体参数
  • 没有子功能

    • 1byte:Service ID,服务标识符

    • xbyte:Parameter,当前功能下的发送参数

通用介绍
  • 正响应的意思是执行成功后,服务端返回报文报告执行成功
  • 负响应的意思是执行失败后,服务端返回报文报告执行失败
  • 负响应返回的报文:最高字节固定为7F,第二字节为被拒绝的SID,后续字节为被拒绝的原因

    • 发送报文:27 05

    • 回复:7F 27 13

  • 正响应返回的报文:最高字节为SID基础上加上0x40,次高字节为子功能ID,后续表示发送的数据

    • 发送报文:27 05

    • 回复:67 05 01 01 01

  • 诊断会话包含三个子功能:01 Default默认会话,02 Programming编程会话,03 Extended扩展会话,

    • ECU上电后,一般处于默认状态

    • 编程会话:可以进行软件刷写等一系列操作

    • 扩展会话:大部分诊断数据读写

  • 如图为UDS诊断协议图片,进入01会话成功,进入02会话失败,进入03会话成功

    4d54610593226da49c05eccba830dfa4

常见的SID诊断服务
  • 10服务:诊断会话,10 01默认会话;10 02编程会话;10 03扩展会话;

  • 11服务:该服务请求ECU根据复位的内容有效地执行ECU复位,11 01硬件复位;11 03软件复位

  • 14服务:使用此服务来清楚ECU内存中的故障内存的诊断行行行;常见的请求命令为14FFFFFF

  • 19服务:此服务读取ECU驻留诊断故障代码(DTC)信息的状态;常见用法是19 02 09读取当前和历史故障

  • 22服务:该服务允许通过DID向ECU请求读取数据值;读取功能配置22 F1 01;网络配置22 F1 10等

  • 27服务:该服务在向ECU请求写入数据时需要进行的解锁服务;请求种子2701;发送钥匙2702

  • 28服务:用于“打开/关闭”ECU的某些消息的传输和/或接收,以及消息的通讯类型,常见的有28 01 只收不发

  • 2E服务:该服务 允许通过DID在解锁条件下向ECU请求写入数据值;常见的为写入车辆的网络配2E F1 10 xx

  • 2F服务:使用此服务来替换输入信号、内部ECU功能和\或控制由服务器的数据接口引用的电子系统的输出(执行器)

  • 31服务:客户端使用此服务来启动/停止例程,并在服务器的内存中请求例程结果。通常刷写过程中会用到。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue+SpringBoot打造智慧家政系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…

《论文阅读》带边界调整的联合约束学习用于情感原因对提取 ACL 2023

《论文阅读》带边界调整的联合约束学习用于情感原因对提取 前言简介Clause EncoderJoint Constrained LearningBoundary Adjusting损失函数前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Joint Cons…

linux 安装rocketmq并使用

RocketMQ 因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务…

掌握 Istio:部署完成后如何运用?

一、环境情况 环境:Ubuntu20.04 机器数量:单机1台 IP:10.9.2.83 二、准备知识 为什么使用 Istio? Istio提供了一种更高级别的服务网格解决方案,它可以简化和加强 Kubernetes 集群中的服务间通信、流量管理、安全…

小红书图片怎么提取?小红书图片提取原图方法!

说到小红书,不少女性群体都知道这个,他的价值很高而且变现对于大多数做自媒体的小伙伴来说,也是不错的选择! 小红书对于普通大众还是互联网创作者来说,都太实用了,唯一的缺点可能就是当我们需要存储他的图…

如何在Linux安装Yearning并修改配置文件实现无公网IP远程访问本地管理界面

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用…

LeetCode刷题【树状数组、并查集】

目录 树状数组307. 区域和检索 - 数组可修改406. 根据身高重建队列673. 最长递增子序列的个数1409. 查询带键的排列 并查集128. 最长连续序列130. 被围绕的区域 树状数组 307. 区域和检索 - 数组可修改 给你一个数组 nums ,请你完成两类查询。 其中一类查询要求 …

EasyExcel模板填充list时按第一行格式合并单元格(含分页线设置)

前言: 在使用easyExcel填充list时,第一行存在合并单元格的情况下,后面使用forceNewRow()填充的行却没有合并样式。 模板: 填充后: 自定义拦截器: 根据官方文档的提示,我们需要自定义拦截器来…

21个 JVM 技术点详解(附面试解答)

最近兄弟们面试,都逃不过被 JVM 问题轰炸的命运,为啥面试官喜欢拿 JVM 说事呢?V 哥认为,除了要问倒你,就是要压你薪水,咱绝对不能怂,俗话说的好:兵来将挡,水来土掩&#…

VS+QT Debug正常但Release无法识别头文件

!!!,这个问题一般是在第一次编译的时候遇见的,包括之前使用debug也是 在Qt Installation一定要修改成自己版本的编译器,修改一次以后基本是不用再修改的

力扣---括号生成---回溯---dfs/二进制

暴力--二进制 采用与:力扣---子集---回溯(子集型回溯)---递归-CSDN博客 中二进制求解一样的思路,即遍历0~-1(从二进制去考虑),如果这个数的第 i 位为0,则括号的第 i 位为‘&#xff…

记一次Oracle 19C RAC 在线更换数据盘和OCR盘操作记录

欢迎您关注我的公众号【尚雷的驿站】 **************************************************************************** 公众号:尚雷的驿站 CSDN :https://blog.csdn.net/shlei5580 墨天轮:https://www.modb.pro/u/2436 PGFans:ht…

华为ensp中rip动态路由协议原理及配置命令(详解)

CSDN 成就一亿技术人! 作者主页:点击! ENSP专栏:点击! CSDN 成就一亿技术人! ————前言————— RIP(Routing Information Protocol,路由信息协议)是一种距离矢…

【Java】Oracle发布Java22最新版本

甲骨文(ORACLE)已经于2023年3月19日正式发布了最新版本的JDK,版本号:22 根据官方声明,Java 22 (Oracle JDK 22) 在性能、稳定性和安全性方面进行了数千种改进,包括对Java 语言、其API 和性能,以…

raid规划配置

一 raid基本知识 1、RAID磁盘阵列概述 磁盘阵列的全名(Redundant Arrays of Inexpensive Disk,RAID),中文简称是独立冗余磁盘阵列。 RAID可以通过技术(软件或者硬件)将多个独立的物理硬盘整合成为一个较大…

探索山海鲸可视化:相较于Excel的独特优势分析

作为一名新用户,我近期开始接触并尝试使用山海鲸可视化工具,这款软件最初吸引我的点在其免费可视化编辑、本地化部署的特点,用了一段时间后,我发现相较于之前使用的Excel来制作可视化看板,两者在多个方面有着显著的区别…

electron-builder允许安装时请求提升权限

场景 在下面的场景中可能会需要管理员权限: electron开发的软件具有文件操作功能,如果electron安装到C盘,并操作项目中(C盘)的文件,就会因权限不足报错。electron需要操作注册表等系统级关键配置某些命令…

浅尝大菠萝Pinia

1、pinia简介 Pinia(发音为 /piːnjʌ/,类似于英语中的“peenya”)是最接近有效包名 pia(西班牙语中的_pineapple_)的词。 Pinia 是由 Vue.js 团队成员开发,新一代的状态管理器,即 Vuex5.x。 …

Godot 学习笔记(2):信号深入讲解

文章目录 前言相关链接环境信号简单项目搭建默认的信号先在label里面预制接收函数添加信号 自定义无参数信号为了做区分,我们在label新增一个函数 自定义带参数信号Button代码label代码连接信号 自定义复杂参数信号自定义GodotObject类ButtonLabel连接信号 父传子Ca…