AutoSAR系列讲解(入门篇)4.7-BSW的Diagnostics功能

news2024/11/24 5:09:01


一、架构与术语解释


首先简单介绍以下诊断(Diagnostics),由于百度百科中就有很好的解释,这里直接引用一下:


汽车诊断技术是凭借仪器设备对汽车进行性能测试和故障检查的方法和手段,它能够测试出汽车各项工作性能指标,并可在汽车或总成不解体的情况下发现故障及其产生的原因。主要用于汽车保养前的诊断和汽车维修后的质量检验。车辆监理部门也用来对车辆进行定期监督检验。


但是上文中讲的是诊断是做什么的,但是我们应该要了解诊断是如何实现的。


1. ECU故障发生了,那么在事后我们去维修的时候,维修师傅如何知道是什么出问题了呢?那么就需要将发生的故障记录下来,所以就要将故障的内容记录到EEP或者Flash中,所以下图中将会用到NVRAM Manager及其更底层的模块(由于之前介绍过,这里省略掉了)


2. 维修师傅是不可能直接读取EEP或者Flash中的内容的,因此还是需要用到CAN传输数据到维修师傅的诊断设备上的,因此这里就有了
communication的一些模块。但是这些信息并非是应用层直接下发,所以这里用的是DCM而非COM


3. 故障发生的时候,肯定是需要做出应急反应的,所以就还需要对故障做处理的功能


FIM: Function Inhibition Manager,功能禁止管理。也就是当一些error出现的时候,禁止一些功能。比如当检测到控制器过电流的时候,关闭MOS或IGBT,防止炸管。就是说有一部分SWC是需要使能条件的,这些条件取决于故障内容(就是来源于下面的DEM中),而FIM负责根据故障内容关闭一些SWC或执行一些SWC
DEM: Diagnostic EventManager,诊断事件管理。就是用来记录和存储诊断事件的,下面连接NVRAM Manager,就是将这些诊断事件记录到EEP或者Flash中
DCM: Diagnostic Communication Manager,诊断通信管理。实现诊断通信协议,我们通常说的UDS协议(即ISO14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准,比如读取故障码应该向ecu发什么指令,读数据流又是发什么指令),就是在这里配置的
其他模块:
前面介绍过了,不再赘述,不清楚的还是再回头熟悉一遍:存储、通信


二、工作流程


1. 绿色箭头:就是对故障做出快速响应的功能。这里首先由应用层传输数据到DEM,DEM判断出是哪个故障,之后发送给FIM;FIM立即做出判断,通过回调函数通知SWC或者轮询的方式禁止SWC
2. 黄色箭头:就是将故障记录的功能。接上面故障由应用层传输数据到DEM,DEM一边是发送给FIM,另一边是发送给NVRAM Manager,然后将故障记录到EEP或者Flash中,方便以后维修诊断

 

 

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

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

相关文章

CMU 15-445 -- 存储篇 - 02

CMU 15-445 -- 存储篇 - 02 引言Database StorageDisk Manager 简介计算机存储体系为什么不使用 OS 自带的磁盘管理模块磁盘管理模块的核心问题在文件中表示数据库File StorageDatabase PagesHeap File OrganizationPage LayoutData LayoutTuple LayoutTuple Storage Data Repr…

Windows Update当前无法检查更新怎么办?

当进行Windows更新或升级时,可能会提示“Windows Update当前无法检查更新,因为未运行服务。您可能需要重新启动计算机”。而当重启也无法解决问题时,我们该怎么办呢?下面我们就来了解一下。 1、删除Software Distribution文件夹中…

Hyperledger Fabric交易流程分析

1、交易流程 客户端利用受支持的SDK(Golang、Java、Node、Python)提供的API构建交易提案请求,将交易事务提案打包成为一个正确的格式。交易提案包含如下要素: ①channelID:通道信息。 ②chaincodelD:要调用的链码信息。 ③timestamp:时间戳。 ④sign:客户…

百度智能车竞赛丝绸之路2——手柄控制

百度智能车竞赛丝绸之路1——智能车设计与编程实现控制 百度智能车竞赛丝绸之路2——手柄控制 一、机器人设计 二、实现原理 本教程使用Python的Serial库和Struct二进制数据解析库去实现Xbox手柄百度大脑学习开发板(上位机)和机器人控制器(…

9小时通关 黑马新教程发布,含重磅项目~

随着测试行业的蓬勃发展,对从业者的要求越来越高,自动化测试已经成为软件测试中一个重要组成部分,广泛应用于各行各业。甚至,在圈子中还流传着这样一句话:学好测试自动化,年薪30万不在话下! 今…

Qt读写文件

一、界面 项目文件结构 样例文件 中芯国际近期做出了两个重要改变:第一个是调整财报披露方式,不再公布芯片制程的营收占比,而只公布晶圆尺寸的营收占比;第二个是撤消14nm工艺的官方展示,只有28nm、40nm及以上的芯片工…

LeNet基础

目录 1.LeNet简介 1.1基本介绍 1.2网络结构 2.LetNet在pytorch中的使用 2.1首先定义模型 2.2初始化数据集,初始化模型,同时训练数据。 2.3 训练结果​编辑 2.4绘制曲线 1.LeNet简介 1.1基本介绍 LeNet(LeNet-5)是历史上第…

磁盘阵列(RAID)

什么是磁盘阵列 磁盘阵列(RAID)是一种将多个物理硬盘组合成一个逻辑存储单元的技术。这种技术可以提高数据存储的可靠性、性能或容量,并且可以在某些情况下提供备份和灾难恢复功能。 RAID技术可以通过在多个硬盘之间分配数据来提高性能。例…

事务处理相关

目录 步骤1.创建一个数据表 步骤2:创建项目导入jar包 步骤3:根据表创建模型类 步骤5:创建Service接口和实现类 步骤6:添加jdbc.properties文件 步骤7:创建JdbcConfig配置类 步骤8:创建MybatisConfig配置类 步骤9:创建SpringConfig配置类 步骤10:编写测试类 开启事务 1…

电磁阀原理精髓

一、引用 电磁阀在液/气路系统中,用来实现液路的通断或液流方向的改变,它一般具有一个可以在线圈电磁力驱动下滑动的阀芯,阀芯在不同的位置时,电磁阀的通路也就不同。 阀芯在线圈不通电时处在甲位置,在线圈通电时处在…

算法与数据结构-链表

文章目录 链表和数组的区别常见的链表类型单链表循环链表双向链表 总结 链表和数组的区别 相比数组,链表是一种稍微复杂一点的数据结构。对于初学者来说,掌握起来也要比数组稍难一些。这两个非常基础、非常常用的数据结构,我们常常会放到一块…

Python基础 - global nonlocal

global global作为全局变量的标识符,修饰变量后标识该变量是全局变量 global关键字可以用在任何地方,包括最上层函数中和嵌套函数中 实例1:如下代码,定义了两个x,并且赋值不同 直接调用print(x) 打印的是全局变量x的…

号外!MyEclipse 2023.1.1已发布,更好支持Vue框架

MyEclipse 2023.1.1是之前发布的2023.1.0的一个小错误修复版本,如果您已经安装了MyEclipse 2023,只需检查产品中的更新 (Help > Check for Updates…) 就可以选择这个新版本。或者,下载我们更新的离线安装程序来安装2023.1.1。 MyEclipse…

C# WPF应用使用visual studio的安装程序类的一些坑

重写installer实现自定义安装程序时,项目类型要选择 类库(.NET Framework) 否则会出现命名空间System.Configuration不存在Install的报错 有些可能想实现安装完自动启动应用的功能,就需要获取installer安装路径 var s Context.Parameters["assem…

【Java】网络编程与Socket套接字、UDP编程和TCP编程实现客户端和服务端通信

网络编程客户端和服务器Socket套接字流套接字TCP数据报套接字UDP对比TCP与UDP UDP编程DatagramSocket构造方法:普通方法: DatagramPacket构造方法:普通方法: 实现 TCP编程ServerSocket构造方法普通方法 Socket构造方法普通方法 实现 网络编程 为什么需要…

MyBatis-Plus 实现PostgreSQL数据库jsonb类型的保存

文章目录 在 handle 包下新建Jsonb处理类方式一方式二 PostgreSQL jsonb类型示例新建数据库表含有jsonb类型创建实体类创建Control 发起请求 在 handle 包下新建Jsonb处理类 方式一 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFea…

低代码开发平台到底省掉了哪些成本?可能大家一直错了

低代码到底是否真正可以降低研发成本?是否每个团队都适合?如果能降低,到底是降低的什么成本?其实我觉得这个是我们每个技术交付团队应该在使用任何产品之前都要考虑的问题。 在我们考虑低代码是否能降低成本的问题前,…

【Python】一文带你学会数据结构中的字典、集合

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

一步一步学OAK之九:通过OAK相机实现视频帧旋转

目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4: 定义变量Setup 5: 定义旋转矩形的四个顶点坐标Setup 6: 创建pipelineSetup 7: 创建节点Setup 8: 设置属性Setup 9: 建立链接Setup 10: 连接设备并启动管道Setup 11: 创建与DepthAI设备通信的输入队列和输…

C#核心知识回顾——2.拓展方法、运算符重载、分部类、里氏替换

1.拓展方法 为现有非静态变量类型添加新方法 1.提升程序拓展性 2.不需要再对象中重新写方法 3.不需要继承来添加方法 4.为别人封装的类型写额外的方法 特点&#xff1a; 1.一定是写在静态类中 2.一定是个静态函数 3.第一个参数为拓展目标 4.第一个参数用this修饰 /// <sum…