Autosar UDS开发01(UDS诊断入门概念(UDSOnCan))

news2024/11/16 19:24:41

目录

回顾接触UDS的过程

UDS基本概念

UDS的作用

UDS的宏观认识

UDS的CAN通讯链路

UDS的报文种类


回顾接触UDS的过程

        自21年毕业后,我一直干了2年的Autosar CAN通讯开发。

        开发的主要内容简单概括就是:应用报文开发、网管报文开发、休眠唤醒开发,及CAN网络相关故障开发,并没有涉及UDS开发,但虽然没有涉及开发,但多多少少都听过一点(特别是后来跑路的时候,恶补了学习了一手,嘿嘿)。

        我刚开始接触诊断相关内容的时候,对诊断没有任何概念。所以听到同事们讨论什么SID啦、DID啦,DTC啦,什么27啦。

        不能说听得不太懂,只能说一脸懵逼。

        小小的脑瓜大大的问号,SID?SID是什么?怎么还有DID,DTC?它们是什么关系,他们是一个类别的东西吧?长得这么像!

        所以就百度,好了,假设你是一个对UDS诊断没有任何概念的小白。你看看百度出来的东西。

        你看看上面这图,我就问你,你说这是小白能看懂的东西吗??什么每种服务都有自己独立的ID,我连服务是什么鬼都不知道,我看得懂才怪了。

        所以,我连SID的概念都花了好久才搞明白。

        于是,我问同事,有没有什么资料能够学习UDS,然后,他们都告诉我,让我看14229-1和15765-2这两个标准文档。

        然而,一个文档三四百页,内容这么多,怎么看啊,主要是,对小白来说,如此多内容的文档,是很难捉住重点的,这样就很费劲了。

        有一次,领导把我派去了测试部支援3天,让我跟着一个测试部的同事测UDS的内容,想起来也挺不好意思,这3天我也没帮到什么忙,主要是不懂这些数据,举个小栗子,看下面这张图。

        这一串串数据,让一个对诊断没有任何概念的小白来看哪里能看懂啊。

        后来,我明白了什么是SID、DID,什么又是DTC,诊断报文的这些数据要怎么看。

        但是,由于没有具体开发过UDS,因此并不知道这些东西具体是怎么去开发的。比如19服务有个DTC状态码,这个状态码是要怎么开发?是Autosar配置工具配置的吗?还是不需配置静态代码已经全部实现?

        两年过去,在换了一个企业后,有机会开始正式开发UDS和对UDS进行完整的测试,让我对UDS从概念上的认识进入到了UDS各个具体内容开发的认识。

        下面就开始讲一下我理解的UDS基本概念。


UDS基本概念

UDS的作用

        当一辆汽车出现故障的时候,维修人员会拿着诊断仪接上汽车,然后读取出车上的故障信息,这样就知道车上什么地方出故障了。(这只是其中一个功能,另外还有软件升级、标定等等。)

        能实现山上面这个过程,就是因为有UDS的存在。

        我们所说的诊断UDS开发,就是代码实现上面图中“ECU-A”的诊断功能。最终使得ECU-A能够根据诊断仪的请求,返回对应的数据信息。

UDS的宏观认识

        就像地球总共由7块大陆组成一样。且先不管UDS的具体细节内容,UDS世界总共由以下这些“大陆板块”组成:

        大家把这些大陆板块称之为:SID,即:诊断服务ID,简称“服务” 。每一个服务都有它的独特的职能。(车企常用到的每个服务后续我会每个都写一篇去展开描述。)

        整个UDS都是围绕上面这些服务展开的,服务下面又会有子服务。这就好比“国家”的概念。“国家”是不会做事情的,做事情的是“国家”下面的各个“部门”,你可以把各个诊断服务理解为各个“国家”,子服务理解国家下面的“部门”。

        举个栗子:28服务(CommunicationControl)有下面的这些子服务。

       28服务它的作用是通讯控制,但是真正具体干活的是它的各个子服务,比如0x00:使能报文的发送和接收。

UDS的CAN通讯链路

       UDS的最终目的,是如一开始那张图。告诉诊断仪自己的故障信息、通过诊断仪升级软件、标定等等。

        而通讯总线,就是实现这些功能的媒介。​

        所谓的UDSOnCan,其实就是字面意思:基于CAN总线的UDS

        大家都知道,汽车上不止有CAN总线,可能还有LIN总线、以太网等等。所以,UDS还可以“On”在其它总线上。我们这里讲的是UDSOnCan,如下图。

         从上面这张官方标准的图就可以看出UDS在整个CAN通讯中的链路了,但会比较抽象。

        所以我按照Autosar的架构画了下面的图,UDS的整个链路如下图红色线所示:

        UDSOnCan相关协议如下图示。

        11898:这个是关于CAN总线的相关标准。比如它会描述CANH、CAHL的电平要求是多少、一帧CAN报文的结构定义、关于CAN Tranceive的一些要求等等。从上面的图中也可以看到,不只是诊断报文的这部分要满足11898,网管报文、应用报文也是同样要满足这个。实际上,所有的CAN报文,都得满足11898。

        15765-2:这个就是诊断报文的传输协议标准,比如发送多帧时要如何发送,每帧的时间间隔等等。

        14229-1:到这一层,才是真正打开UDS的世界,具体的UDS功能都在这个标准文档中定义。

        诊断开发。一般来说实际上是指CANTP模块(15765-2)、DCM模块和DEM模块(14229-1)。

UDS的报文种类

        UDS总共有3种报文。物理请求报文、功能请求报文、响应报文

        我们先来讲一下为什么会有这3种诊断报文。

        由于一辆汽车上有十几个ECU。因此,诊断仪对车上ECU的操作共有两种情况。

        ①对某一个ECU单独进行操作。比如读取某一个ECU的故障信息、升级某一个ECU的软件

        ②同时对所有ECU进行操作。比如整车处于唤醒过程中,大家都在往外发送报文,总线负载率相对较高。但诊断人员现在需要对某一个ECU升级软件,总线负载率高可能会影响,因此,需要先让所有的ECU都停止发送应用报文。这时候就需要通知所有ECU停发应用报文。

        根据上面第①种情况。就出现了第一种诊断报文类型:物理请求报文。每个ECU都有自己唯一的诊断物理地址。当ECU接收到物理地址是指向自己的诊断报文时就要根据这帧报文的请求内容做出对应的操作。简单来说,就是一对一。

        根据上面第②种情况。就出现了第二种诊断报文类型:功能请求报文。在同一个CAN网络上所有ECU的功能地址是一样的。在同一个CAN网络,当ECU接收到功能地址的诊断报文时都要根据这帧报文的请求内容做出对应的操作。简单来说,就是一对多。

        好了,物理请求报文和功能请求报文都是ECU要接收的诊断报文,ECU接收到诊断报文后需要回应。因此就出现了第三种诊断报文类型:响应报文

        上面的描述可以用下面两张图表示:

        物理请求示例如下图所示,诊断仪发送物理请求报文(红色),ECU接收到后,回应响应报文(蓝色) 

        功能请求示例如下图所示:诊断仪发送功能请求报文(红色),ECU接收到后,回应响应报文(蓝色) 

        另外需要注意的是:物理请求报文是支持回应多帧的。而功能请求报文只支持回应单帧。这在15765-2中8.3.2.4就有说明。


        到这里为止。关于UDS的一些基本概念应该就差不多了。接下来我会先讲一下15765-2,即UDSOnCan的“OnCan”,也即CANTP层。


返回目录:

Autosar BSW 开发笔记(目录)-CSDN博客

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

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

相关文章

职业迷茫,我该如何做好职业规划

案例25岁男,入职2月,感觉自己在混日子,怕能力没有提升,怕以后薪资也提不起来。完全不知道应该往哪个方向进修,感觉也没有自己特别喜欢的。感觉自己特别容易多想,想多年的以后一事无成的样子。 我觉得这个案…

腾讯云5年服务器CVM和3年轻量应用服务器配置价格表

腾讯云3年轻量和5年云服务器CVM活动入口,3年轻量应用服务器配置可选2核2G4M和2核4G5M带宽,5年CVM云服务器可以选择2核4G和4核8G配置可选,阿腾云atengyun.com分享腾讯云3年轻量应用服务器和5年云服务器CVM活动入口和配置报价: 目录…

3.如何实现 API 全局异常处理?-web组件篇

文章目录 1. 统一异常处理 1. 统一异常处理 在 Spring MVC 中,通过 ControllerAdvice ExceptionHandler 注解,声明将指定类型的异常,转换成对应的 CommonResult 响应。实现的代码,可见 GlobalExceptionHandler类。

【微软技术栈】C#.NET 如何使用本地化的异常消息创建用户定义的异常

本文内容 创建自定义异常创建本地化异常消息 在本文中,你将了解如何通过使用附属程序集的本地化异常消息创建从 Exception 基类继承的用户定义异常。 一、创建自定义异常 .NET 包含许多你可以使用的不同异常。 但是,在某些情况下,如果它们…

springboot苍穹外卖实战:七、店铺营业状态设置与查询+接口文档多端分组优化

店铺营业状态设置与查询 注意,先把测试类最上面的SpringBootTest注解注释掉,否则每次启动项目都会自动帮你测试一遍,导致项目启动变慢。 其次,该项目没有设置相应拦截器对付以下情况:用户使用过程中商家突然暂停营业&…

Django(复习篇)

项目创建 1. 虚拟环境 python -m venv my_env ​ cd my_env activate/deactivate ​ pip install django ​2. 项目和app创建 cd mypros django-admin startproject Pro1 django-admin startapp app1 ​3. settings配置INSTALLED_APPS【app1"】TEMPLATES【 DIRS: [os.pat…

低价寄快递寄件微信小程序 实际商用版 寄快递 低价寄快递小程序(源代码+截图)前后台源码

盈利模式 快递代下CPS就是用户通过线上的渠道(快递小程序),线上下单寄快递来赚取差价,例如你的成本价是5元,你在后台比例设置里面设置 首重利润是1元,续重0.5元,用户下1kg的单页面显示的就是6元…

2023.11.13 hive数据仓库之分区表与分桶表操作,与复杂类型的运用

目录 0.hadoop hive的文档 1.一级分区表 2.一级分区表练习2 3.创建多级分区表 4.分区表操作 5.分桶表 6. 分桶表进行排序 7.分桶的原理 8.hive的复杂类型 9.array类型: 又叫数组类型,存储同类型的单数据的集合 10.struct类型: 又叫结构类型,可以存储不同类型单数据的集合…

帧同步的思想与异步FIFO复位

02基于FDMA三缓存构架_哔哩哔哩_bilibili 图像从外部传输进来的时候,会产生若干延迟,可能会出现各种各样的问题(断帧等),此时可以通过VS信号清空FIFO进行复位。 这个过程中的复位信号可能需要拓展,这是因为…

某手游完整性校验分析

前言 只是普通的单机手游,广告比较多,所以分析处理了下,校验流程蛮有意思的,所以就分享出来了 1.重打包崩溃处理 样本进行了加固,对其dump出dex后重打包出现崩溃 ida分析地址发现为jni函数引起 利用Xposed直接替换…

云计算——ACA学习 云计算架构

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号:网络豆云计算学堂 座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 写在前面 前期回顾 本期介绍 一.云计算架…

基于蜻蜓算法优化概率神经网络PNN的分类预测 - 附代码

基于蜻蜓算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于蜻蜓算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于蜻蜓优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

互联网大厂招兵买马开发鸿蒙应用,移动开发的春天又来了?

日前,美团拟开发鸿蒙系统APP的多个相关岗位正招聘开发人员引发业内关注。事实上,鸿蒙开发者已经成为京东、WPS、凤凰新闻、微博等互联网大厂争相招聘的人才,且招聘岗位众多。也就是说,这些公司正在加快鸿蒙化开发,为鸿…

思维模型 目标效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。明确目标,激发内在动机。 1 目标效应的应用 1.1 目标效应在教育领域的应用-棉花糖实验 美国斯坦福大学心理学系的教授米歇尔(Walter Mischel)曾经进行了…

vue-常用指令

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容-常用指令 目录 常用指令 1、v-cloak 2、数据绑定指令 3、v-once 4、v-bind(重点&a…

C++ 图解二叉树非递归后序 + 实战力扣题

145.二叉树的后序遍历 145. 二叉树的后序遍历 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> postorderTraversal(TreeNode* root) {stack<TreeNode*> st;vector<int> vec;if(root NULL) return vec;TreeNode* guard root…

Golang 字符串处理汇总

1. 统计字符串长度&#xff1a;len(str) len(str) 函数用于统计字符串的长度&#xff0c;按字节进行统计&#xff0c;且该函数属于内置函数也不用导包&#xff0c;直接用就行&#xff0c;示例如下&#xff1a; //统计字符串的长度,按字节进行统计: str : "golang你好&qu…

【ATTCK】MITRE Caldera -前瞻规划器

CALDERA是一个由python语言编写的红蓝对抗工具&#xff08;攻击模拟工具&#xff09;。它是MITRE公司发起的一个研究项目&#xff0c;该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的&#xff0c;能够较真实地APT攻击行为模式。 通过CALDERA工具&#xff0c;安全…

有奖 | Python 开发者 2023 年度调查

你好&#xff0c;我是 EarlGrey&#xff0c;一名双语学习者&#xff0c;会一点编程&#xff0c;目前已翻译出版《Python 无师自通》、《Python 并行编程手册》等书籍。 点击上方蓝字关注我&#xff0c;持续接收优质好书、高效工具和赚钱机会&#xff0c;一起提升认知和思维。 1…

2023年【电工(初级)】考试内容及电工(初级)复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;初级&#xff09;考试内容是安全生产模拟考试一点通总题库中生成的一套电工&#xff08;初级&#xff09;复审模拟考试&#xff0c;安全生产模拟考试一点通上电工&#xff08;初级&#xff09;作业手…