UDS诊断
一、UDS诊断简介
汽车诊断技术是指在不拆卸车辆的情况下,通过读取车辆在运行过程中所记录的数据或故障码来查明故障原因,并确定故障部位的汽车应用技术。通过诊断,可以快速检测到汽车故障来提高汽车安全性和维修效率。
USD协议诊断主要采用“问 - 答”模式,即诊断仪(Tester)像车辆指定的ECU发送请求(Request),指定的ECU会做出相对应的响应(Response),并将响应返回给诊断仪。从而可以依据定义好的诊断调查问卷,就可以将相对应的数据转化为相对应的问题和描述。
常用的诊断协议包括:IOS14229位于CAN应用层,还有位于CAN网络层的IOS15765协议(canTP模块)、位于数据连路层和物理层的的IOS11891UDS具体定义在14229协议中体现。


二、UDS诊断请求及其响应格式
Tester请求格式有如下几种:

ECU响应格式有:
1、肯定响应(positive):
SID+0x40(X1XXXXXX 将bit6位置1)
2、否定响应(negative):
7F-SID-否定响应码NRC
肯定响应抑制位:
由子服务里的最高位bit7:
Bit7=0时:需要肯定响应
Bit7=1时:禁止肯定响应
例如:ECU收到诊断仪发来的服务为$02 3E 00时,需要给出$02 7E 00的肯定响应。同样是Present服务,如果ECU收到的是$02 3E 80,则无需给出肯定响应。
否定响应不会被抑制。

常用的否定响应码有:

详细否定响应可参考:https://blog.csdn.net/weixin_47890316/article/details/106181730
否定响应码78:

这里有两个时间参数,P2Sever和P2Sever*。当Tester给ECU发送诊断请求后,ECU需要在P2Sever时间内给出相应的响应,如果ECU当前正在处理别的任务,而不能在P2Sever的时间内给出相应的响应,那么它先在P2Sever时间内给出一个NRC为78,告诉诊断仪ECU正在忙,之后会在P2Sever*的时间内给出其它的响应报文,如果P2Sever*的时间内还是不能给出相应的肯定响应或否定响应,将继续给出78报文,直到能够正确处理请求报文。
否定响应码配置:
否定响应码在CDD文件中设置,再导入配置工具,依据诊断调查问卷,以我做的项目中的10 01服务为例,10 01服务支持12、13、22否定响应码

三、UDS诊断服务种类
UDS诊断服务分为六大类、26种:

UDS诊断寻址方式:
在总线上往往有着众多ECU设备,作为诊断设备既可以与所有的ECU一起沟通,也可以指定某一个ECU单独沟通。
功能寻址:可以广播诊断请求Request,同时等待总线上的ECU给与响应,一般功能寻址ID为0x7DF

物理寻址:指定发送特定诊断请求Request,等待指定ECU给与响应,此ID由OEM定义

寻址方式设置:
服务的寻址方式在CDD文件里配置,这里以27 01服务为例, 27 01服务只支持物理寻址,不支持功能寻址。

诊断和通信管理功能单元
0x10服务(DiagnosticSessionControl)

0x11(ECUReset)
诊断仪请求ECU复位
0x3E(TesterPresent)
主要用于维持在某一模式下

0x27(SecurityAccess)
如当写入较为重要的信息过程中,则首先需要使用27服务才能够使用写操作的诊断指令,如2E服务;

27服务否定响应
以我做的一个项目为例(需求再OEM企标中):失败尝试次数为3次,延时时间为10S

数据传输单元
0x22(ReadDataByIdentifier)
诊断仪请求读取由提供的DID标识的记录的当前值。该服务允许诊断仪从ECU请求由一个或多个 DID 标识的数据记录值。
例:
22 F1 90 F1 8A 读取车身号码和系统供应商标识符
0x2E(WriteDataByIdentifier)
本服务是请求写入提供的 DID 指定的数据。该服务允许客户端在由提供的DID 指定的内部位置将数据写入服务器。数据并且可能会受到保护,也有可能不受到保护。
格式Request(请求):2E+DID+Data
Response(响应):6E+DID
储存数据传输功能单元
0x19(ReadDTCInformation)
诊断仪从ECU请求诊断信息(包括DTC,捕获的数据等)。故障码包括四个大类,分别是PCBU,P是powertrain动力系统,C是Chassis底盘,B是Body车身,U是network通信系统。一个DTC信息占用4个字节。最后一个字节是DTC的状态。

常用19服务的子服务:
0x01 (通过状态掩码读取DTC数量)
0x02 (通过状态掩码读取DTC状态)
0x04 (读取DTC快照信息)
0x06 (读取DTC扩展信息)
0x0A (读取ECU支持的所有DTC列表及其状态)
DTC状态掩码:

DTC快照信息:
快照信息是在故障代码设置时存储的一组额外数据,对故障的维修具有辅助作用。根据使用范围的不同,快照信息可分为全局快照和局部快照。对于需存储快照信息的ECU,其必须支持全局快照信息,而选择性的支持局部快照信息。
0x14(ClearDiagnosticInformation)
诊断仪从ECU清除诊断信息(包括DTC,捕获的数据等)。完全处理该服务后,服务器应发送肯定响应。
格式:
Request:14+FF+FF+FF; 3个FF分别代表清除所有DTC高、中、低位。
Response:54 。

例程控制单元
0x31(RoutineControl)
Service 31 01 XX XX:开始执行Routine DID对应的例程;
Service 31 02 XX XX:停止运行Routine DID对应的例程;
Service 31 03 XX XX:请求Routine DID对应的例程运行结果。
四、网络层协议

单帧SF:
如果UDS数据在网络层是单帧,那么用来表明单帧的标志N_PCI是一个字节,由于网络层标准帧的长度是8个字节,N_PCI占一个字节,UDS数据只能有7个字节。单帧的N_PCI是一个字节,结构是:

多帧:
如果UDS数据大于7个字节,那么在网络层无法通过一个网络帧发完,就必须把数据分成多帧发送。这里以诊断仪向ECU、2E服务写入为例:
首帧(FF)数据格式:

流控帧FC:
Tester给ECU发完首帧后,需要等待ECU回复确认信息,所以流控帧就是ECU收到首帧后回复的网络帧,流控帧的数据结构是:
如果bit1=0,代表之后再无流控帧,可以无限制发送连续帧(CF)

连续帧CF:
连续帧的byte0的高四位是0010,低四位是连续帧的序列号,从1开始,一直到15,如果超过了15,又从1开始。当发完流控帧规定的帧数后,Tester又需要等待ECU的流控帧,确认是否继续发送,发送多少条。

相关文章:
UDS诊断
一、UDS诊断简介 汽车诊断技术是指在不拆卸车辆的情况下,通过读取车辆在运行过程中所记录的数据或故障码来查明故障原因,并确定故障部位的汽车应用技术。通过诊断,可以快速检测到汽车故障来提高汽车安全性和维修效率。 USD协议诊断主要采用“…...
计算材料学学习记录1
计算材料学学习记录1 平台:Bohrium 老师:单斌教授 文章目录 1.发展史背景计算材料学 2.计算方法分类3.计算材料学的应用 1.发展史 背景 材料的研究方法发展: 一切靠实验理论开始起作用理论撑起半边天 “……解决全部化学的规律的数学方法…...
PHP8中的构造方法和析构方法-PHP8知识详解
今日分享的内容是php8中的构造方法和析构方法,我们把构造方法和析构方法这两个方法分开来讲: 1、构造方法 构造方法存在于每个声明的类中,主要作用是执行一些初始化任务。如果类中没有直接声明构造方法,那么类会默认地生成一个没…...
【GPU编程】Visual Studio创建基于GPU编程的项目
vs创建基于GPU编程的项目 🍊前言🐸方法一-CUDA Runtime生成😝debug设置 🍅方法二-空项目配置🍉🍉🍉代码验证 🍊前言 cuda以及cudnn的安装以及系统环境变量的配置默认已经做完。如果…...
MySQL面试题-索引的基本原理及相关面试题
先了解一下MySQL的结构 下面我们重点讲一下存储引擎 MySQL的数据库和存储数据的目录是一一对应的,这些数据库的文件就保存在磁盘中对应的目录里 下面我们来看一下对应的具体数据文件 .frm是表的结构,不管什么样的索引都会有 .ibd代表我们现在使用的存…...
MySQL学习笔记19
MySQL日志文件:MySQL中我们需要了解哪些日志? 常见日志文件: 我们需要掌握错误日志、二进制日志、中继日志、慢查询日志。 错误日志: 作用:存放数据库的启动、停止和运行时的错误信息。 场景:用于数据库的…...
为什么u盘在mac上显示不出来
插入U盘是个看似简单的操作,但有时候在Mac电脑上却出现了无法显示U盘的情况。这样的问题是非常让人头疼的,特别是当你急需使用U盘中的文件时。那么,究竟为什么U盘在Mac上会显示不出来呢?今天就让我们一起来深入了解一下这个问题&a…...
【golang】调度系列之sysmon
调度系列 调度系列之goroutine 调度系列之m 调度系列之p 在golang的调度体系中,除了GMP本身,还有另外一个比较重要的角色sysmon。实际上,除了GMP和sysmon,runtime中还有一个全局的调度器对象。但该对象只是维护一些全局的数据&…...
货物寄到英国选择什么物流比较划算?
随着全球化的发展,越来越多的企业开始将产品销售到海外市场,其中英国作为一个重要的贸易伙伴,吸引了大量的中国企业的关注。然而,如何将货物安全、快速地运送到英国,成为了众多企业面临的一个问题。那么,货…...
vite + react 基本项目搭建
新建项目步骤略过 1、下载scss 无需任何配置就可以直接使用scss了 pnpm install sass使用scss配置全局颜色变量 新建/src/styles/variable.scss并在 $primary: #76aef9在vite.cinfig.js里配置 export default defineConfig({css: {preprocessorOptions: {scss: {javascrip…...
一个方法解决三道区间问题
1288. 删除被覆盖区间 56. 合并区间 986. 区间列表的交集 # 1288. 删除被覆盖区间 class Solution:def removeCoveredIntervals(self, intervals: List[List[int]]) -> int:# 按照起点升序排列,起点相同时,按照终点降序排列intervals.sort(key lamb…...
sub0 里斯本精彩回顾:探索波卡区块的创新空间
sub0 Europe 2023 已在葡萄牙里斯本圆满结束!sub0 大会是波卡生态开发者大会,由波卡协议的主要开发方 Parity Technologies 举办的开发者大会,汇聚了全球 Substrate 开发者和学习者,旨在为 Polkadot 和 Kusama 生态的开发者、贡献…...
颜色+情感的英语表达还有这些,零基础学英语口语去哪里,柯桥有推荐的吗?
当我们探讨关于"blue"(蓝色)的多义性时,我们会发现英语中有许多其他词汇也有类似的双关意义。 既可以表示一种颜色或物理属性,又可以代表一种情感或心理状态。 这种现象在语言中很常见,反映了语言的丰富性和…...
exoplayer的使用-6,播放器的选择
需要一个能播放蓝光的,高码率的播放器,在使用现成的播放器的基础上,可选的有几个,exoplayer,vlc,ijk,mpv. exoplayer的更新频繁,适应性强,扩展性一般,因为它基于系统的硬解,音频可扩展,使用ffmpeg可以解决. 有国际化支持,音频,字幕这些显示效果好. 对杜比视频,hdr这些支持看设…...
Windows上安装 Go 环境
一、下载go环境 下载go环境:Go下载官网链接找到自己想下载的版本,点击下载,比如我这是windows64位的,我就直接点击最新的。 二、安装go环境 双击下载的.msi文件 next next 他默认的是c盘,你自己可以改,然…...
【设计模式】四、工厂模式
文章目录 概述工厂模式简单工厂模式:工厂方法模式抽象工厂模式小结 概述工厂模式 传统方式: 简单工厂模式: 简单工厂模式的设计方案: 定义一个可以实例化 Pizaa 对象的类,封装创建对象的代码。 存在的问题: 简单工厂…...
十九,镜面IBL--BRDF积分贴图
再回顾下镜面部分的分割求和近似法 现在关注第二部分 最后可化为 也就是说,这两部分积分可以获得F0的系数和F0的偏差。 这两个值可以存储到BRDF积分贴图的RG部分。void main() { vec2 integratedBRDF IntegrateBRDF(TexCoords.x, TexCoords.y); FragColor …...
Linux 创建 终止线程(thread)
进程线程区别 创建线程 #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); -功能:创建一个子线程,一般情况下main函数所在的线程称为主线程,…...
【IPC 通信】信号处理接口 Signal API(6)
收发信号思想是 Linux 程序设计特性之一,一个信号可以认为是一种软中断,通过用来向进程通知异步事件。 本文讲述的 信号处理内容源自 Linux man。本文主要对各 API 进行详细介绍,从而更好的理解信号编程。 kill(2) 遵循 POSIX.1 - 2008 1.库 …...
ipaguard界面概览
ipaguard界面概览 ipaguard界面分左右2块:左边菜单导航栏,右边的功能区 左侧菜单:按模块分成启动界面,代码模块,文件模块,重签名与测试模块 右侧主功能区会随着功能变化,但是整体分3块…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
