当前位置: 首页 > news >正文

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:

       这里有两个时间参数,P2SeverP2Sever*。当TesterECU发送诊断请求后,ECU需要在P2Sever时间内给出相应的响应,如果ECU当前正在处理别的任务,而不能在P2Sever的时间内给出相应的响应,那么它先在P2Sever时间内给出一个NRC78,告诉诊断仪ECU正在忙,之后会在P2Sever*的时间内给出其它的响应报文,如果P2Sever*的时间内还是不能给出相应的肯定响应或否定响应,将继续给出78报文,直到能够正确处理请求报文。

否定响应码配置:

        否定响应码在CDD文件中设置,再导入配置工具,依据诊断调查问卷,以我做的项目中的10 01服务为例,10 01服务支持121322否定响应码

三、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,捕获的数据等)。故障码包括四个大类,分别是PCBUPpowertrain动力系统,CChassis底盘,BBody车身,Unetwork通信系统。一个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;   3FF分别代表清除所有DTC高、中、低位。

Response54

例程控制单元

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个字节,那么在网络层无法通过一个网络帧发完,就必须把数据分成多帧发送。这里以诊断仪向ECU2E服务写入为例:

首帧(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); -功能&#xff1a;创建一个子线程&#xff0c;一般情况下main函数所在的线程称为主线程&#xff0c;…...

【IPC 通信】信号处理接口 Signal API(6)

收发信号思想是 Linux 程序设计特性之一&#xff0c;一个信号可以认为是一种软中断&#xff0c;通过用来向进程通知异步事件。 本文讲述的 信号处理内容源自 Linux man。本文主要对各 API 进行详细介绍&#xff0c;从而更好的理解信号编程。 kill(2) 遵循 POSIX.1 - 2008 1.库 …...

ipaguard界面概览

ipaguard界面概览 ipaguard界面分左右2块&#xff1a;左边菜单导航栏&#xff0c;右边的功能区 左侧菜单&#xff1a;按模块分成启动界面&#xff0c;代码模块&#xff0c;文件模块&#xff0c;重签名与测试模块 右侧主功能区会随着功能变化&#xff0c;但是整体分3块&#xf…...

Python自动化抓取Keep运动数据:从入门到实战

1. 为什么需要自动化抓取Keep运动数据 作为一个健身爱好者&#xff0c;我每天都会用Keep记录自己的运动数据。但时间久了发现一个问题&#xff1a;这些宝贵的数据都散落在App里&#xff0c;想做个长期分析特别麻烦。每次都要手动截图、复制粘贴&#xff0c;效率低不说&#xff…...

关于MCU锁死使用仿真器的几种解决方法

在开发过程中难免遇到芯片锁死的问题&#xff0c;解决的方法有很多包括改变BOOT0/1的电平等方式&#xff0c;不过这种需要硬件上的改动都比较麻烦。这里介绍一下常见的几种通过仿真器解锁方式。 提示下面的方法基本都是我用jlink仿真器实践过的&#xff0c;一般都是用到SWD接…...

遥感数字图像处理教程【2.1】

2 . 非线性拉伸使用非线性拉伸函数对图像进行拉伸变化&#xff0c;即为非线性拉伸。常用的非线性函数有指数函数、对数函数、平 方 根 、高斯函数等。1&#xff09;指数变换对于图像中亮的部分&#xff0c;指数变换扩大了灰度间隔&#xff0c;突出了细节&#xff1b;对于暗的部…...

AIAgent自动驾驶到底靠不靠谱?2026奇点大会127项实测数据揭示L4级商用真相

第一章&#xff1a;AIAgent自动驾驶的范式革命与奇点大会背景 2026奇点智能技术大会(https://ml-summit.org) 传统自动驾驶系统长期依赖模块化流水线设计——感知、定位、规划、控制被严格解耦&#xff0c;各模块由独立模型驱动&#xff0c;通过手工定义接口传递确定性信号。…...

一条命令搞定OpenClaw部署?先看清PPClaw的真实代价

先说结论PPClaw的核心价值在于将OpenClaw的部署从本地环境配置转为云端托管&#xff0c;用API Key和命令行替代了服务器运维。它确实降低了初始部署门槛&#xff0c;但引入了新的依赖&#xff1a;PPIO平台、API Key计费模型和网络稳定性。更适合小团队快速验证或原型开发&#…...

鸿蒙开发实战:使用ArkTS与DevEco Studio打造你的首个HarmonyOS应用

1. 从零到一&#xff1a;搭建你的鸿蒙开发环境 第一次打开DevEco Studio时&#xff0c;那种既兴奋又忐忑的心情我至今记得特别清楚。作为过来人&#xff0c;我建议你先花点时间把开发环境配置妥当&#xff0c;这能避免后续开发中80%的奇怪报错。Windows和Mac用户都需要确保系统…...

VRRP实验练习

要求LSW1配置<Huawei> <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sys sw1 [sw1]v [sw1]vlan b [sw1]vlan batch 10 20 Info: This operation may take a few seconds. Please wait for a moment...done. [sw1]interface g 0/0/1 [sw…...

Notepad--完全指南:掌握跨平台国产文本编辑器的3个实用技巧

Notepad--完全指南&#xff1a;掌握跨平台国产文本编辑器的3个实用技巧 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器&#xff0c;目标是做中国人自己的编辑器&#xff0c;来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- …...

KP09 Encoder使用教程

注意&#xff1a;请不要同时将两个typec口接入数据线。 2026.3.22更新 汉化版VIAL改键软件&#xff0c;链接&#xff1a;VIAL汉化版——VIAL-JL – yoonas blog 2026.3.23更新 组合键设置 默认功能 1、默认键位 键盘有九个按键&#xff0c;两个旋钮&#xff0c;旋钮可以按下。上…...

Nanbeige 4.1-3B 自动化运维脚本生成:基于Python的服务器监控与告警

Nanbeige 4.1-3B 自动化运维脚本生成&#xff1a;基于Python的服务器监控与告警 1. 引言 想象一下这个场景&#xff1a;凌晨三点&#xff0c;你的手机突然响起刺耳的警报。你睡眼惺忪地打开一看&#xff0c;是生产服务器的磁盘满了&#xff0c;导致核心服务全部宕机。你一边手…...