AUTOSAR系列专题--诊断模块(下)

news2024/10/6 9:00:37

往期小怿向各位小伙伴介绍了,文章内容过多分为了两期,本期为大家介绍《AUTOSAR模块之诊断篇(下)》。

目录

1.概述

2.DCM

3.DEM

4.FIM

5.结语

点击查看前文:AUTOSAR系列专题--诊断模块(上)

03 DEM

3.1 概述

DEM(诊断事件管理器)负责处理和存储诊断事件(错误)和相关数据。此外,DEM向DCM提供故障信息(例如,从事件存储器中读取所有存储的DTC)。DEM提供到应用程序层和其他BSW模块的接口。

DEM与BSW和SWC的接口和依赖关系如下图:

图片

3.2 DTC

DTC(诊断故障码,长度3字节),用来记录ECU发生故障时的故障信息,比如故障触发条件、故障解除条件、系统功能表现等。

ISO15031-6标准中规定了DTC的数据组成,DTC命名方式等信息。

DEM支持的DTC类型如下:

图片

DTC的故障类型如下:

● 硬件故障:如RAM、Flash、CPU时钟等硬件本身失效的问题

● 软件故障:如配置字故障,标定故障或客户定义的软件功能性故障

● 外部环境故障:电压过高或者欠压、环境温度过高或过低等

● 通讯相关故障:如报文丢失、信号无效Checksum/AliveCounter故障等

DTC产生时,并不会直接存储在NVM中,而是间接通过Event-DTC的mapping关系来存储DTC,而DTC的状态位则是由其mapping的所有event的状态位的或集。只有DTC以及状态位信息往往不能一步到位定位故障的root cause,需要引入环境信息才能够进一步确定问题所在,包含:

● Snapshot Data:快照信息即为故障发生时刻存下来的瞬态的环境数据,一般是指电源模式、温度、时间戳、车速等信息

● Extended Data:即为在故障发生时其他的辅助故障信息,如aging counter、aged counter 、Fault Counter以及event id等

3.3 Event

Event是故障监控的基本单元,能够定位某个模块中的某个具体故障。

Event和DTC的区别

● 多个Event可以mapping 同一个DTC

● 而同一个Event不能mapping多个DTC

● DTC代表某类Event集中表现,而Event则是某个DTC的具体实例

● Event的优先级决定了DTC的优先级;Event之间的依赖关系决定了DTC的依赖关系

Event生命周期

一个事件从发现到老化需要经历多个阶段,例如Event使能条件满足后才能上报,DEM内部去抖且满足存储条件后才能存储,存储后需要进行老化处理。

Event Report

故障上报,SWC或者BSW向DEM报告诊断事件的状态。它由两个部分组成,一个是诊断事件(diagnostic event),一个是滤波(debounce)。DEM会给每个诊断事件分配一个独一无二的识别码(EventId),用来区分不同的事件。

Event上报流程

● 判断是否开启了Operation Cycle

● Event使能条件是否满足

● 是否使能了85服务(ControlDTCSetting)

● 去抖处理

● 判断存储条件是否满足

Event使能条件

Event开启监控绝大部分情况下都需要满足一定条件,若不加以相关的限制条件,那么会导致增加诸多的信息干扰,无法快速排查Root Cause,通过Event过滤器,可以达到所允许或者抑制的Event上报的效果。

Event上报方式

● 循环上报:不会被14服务清除,可实时监控故障状态,但上报的Event数量过多,增加RTE负载

● 触发上报型:能降低RTE负载,但也容易被14服务清除

3.4 Diagnostic Monitor

诊断监视器是确定组件正确功能的例行实体(routine entity)。诊断监视器能在监控路径识别特定的故障类型(如对地短路),监控路径表示被监控的物理系统或者电路 (例如传感器输入)。每个监视路径都与一个诊断事件相关联。

3.5 DEM Debounce

DEM Debounce为了实现防止故障误报,只有经历去抖动算法之后,Event的最终状态才能够被确定,即PASS、FAIL,、No Result这三类。一般而地抖动策略也分为两种包括TimeBase与Counterbase:

● TimeBase是通过计时来完成对Event的去抖动的过程,适用于超时类故障

● CounterBase则是通过计数来完成对Event的去抖动,适用于触发型的故障

3.6 Event Memory Management:

事件内存管理定义为在DEM模块中添加、更新和删除事件内存条目的过程。DEM模块确定事件内存条目是新的还是当前存在于事件内存中。

Event retention

Event retention定义了DEM模块记录和处理事件(DTC)、UDS状态信息和事件相关数据(例如,冻结帧、扩展数据)的能力。

DEM规范共规定了6种Event存储的条件,更多内容请参看DEM规范手册。

Event Displacement

事件替换意味着,最不重要的、已经存在的事件内存条目被需要存储的新事件内存条目替换。在替换过程中,重要程度最低事件内存条目会丢失。如果新事件内存大小超过所有可能的事件,则不会发生置换。如果事件置换策略被禁止,即DemEventDisplacementStrategy设置为DEM_DISPLACEMENT_NONE,则DEM禁止事件置换功能。

如果事件置换策列被启用,即DemEventDisplacementStrategy设置为DEM_DISPLACEMENT_FULL或DEM_DISPLACEMENT_PRIO_OCC,则DEM根据以下原则置换事件:

● Event Priority(最重要的评判原则,数字越小存储优先级越高,适用于FULL或者PRIO_OCC策略)

● Event Active或者Passive状态(Active存储优先级高于Passive优先级,适用于FULL策略)

● Event Occurence Time(按时间顺序替换较旧的存储事件,按时间顺序替换较旧的存储事件)

Aging of Event

DEM模块提供了从事件内存中删除特定事件的能力,如果其故障条件在某一段时间(操作周期)内未满足失效条件,这个过程被称为“Aging 老化”或“Unlearning 遗忘”。事件老化后,DEM将删除相关事件快照数据(冻结帧)和扩展数据记录。

DemAgingCycleCounterThreshold或DemAgingCyclecounterthresholdforfslc定义了完成的老化周期计数值,在此之后,事件内存条目将从事件内存中删除(老化)。当Aging Counter达到DemAgingCycleCounterThreshold 时, DTC状态位bit3:confirmedDTC设置为0。每个Event memory entry至少有一个Aging Counter。

04 FIM

功能抑制管理器(Function Inhibition Manager)负责为软件组件(software component)及其功能(functionality)提供控制机制,通过FIM可以抑制(取消应用程序功能的激活)这些功能,甚至可以在运行时(构建后配置)期间进行配置和修改。

functionality:一个功能可以由具有相同权限/抑制条件集的一个、几个或部分可运行实体( runnable entity)的内容构建。

FID:功能被分配到一个标识符(FID -功能标识符),以及该特定标识符的抑制条件。这些功能在执行之前轮询各自FID的权限状态。如果特定标识符的抑制条件成立,则相应的功能将不再执行。

图片

4.1 FIM Core Variables

● Diagnostic Event:“诊断事件”是DEM向特定诊断监视器功能提供的标识符,用于报告错误

● Monitor Status:“监测状态”是DEM根据监测功能的报告值计算出的状态。可能的值由Dem_MonitorStatusType定义

● Monitored Component:“被监控组件”是由DEM提供给特定被监控组件(硬件组件或信号)的标识符。“被监控组件”的FAILED状态表示所有分配的监控功能的结果和从其他DEMComponent继承的故障信息

● Summarized Event:FIM配置应该支持汇总事件。汇总事件由多个单个诊断事件组成;因此,特定的总结事件只是多个诊断事件的代表。Summarized Event可以用作SWC的抑制条件

● Function Identifier:

a. 应保证FIM中的每个functionid是唯一的

b. FIM模块应使用FunctionId直接指向相关的功能信息(权限状态等)

FIM实现了功能权限的计算。这些被计算的对象是SWC或Logic Unit,每个FID的权限状态是根据分配给特定FID的EventIds计算的。计算出每个EventIds的权限状态,并进行“与”以确定最终的权限状态

● Function Identifier permission state:FID权限状态包含由其FID表示的功能是否可以执行的信息(True执行/False禁止)。SWC组件通过FIM_GetFunctionPermission访问状态

4.2 FIM Core Functionalities

FIM Data Structure

FIM的配置过程应该在FIM模块中创建数据结构来存储抑制关系(EventID - FID -applicable mask)。

可配置的EventIds数量和抑制掩码被分配给一个FID。每个FID的EventIds和抑制掩码数量必须匹配,以便对于每个配置的事件,都存在相应的抑制掩码。抑制掩码包含FID的抑制条件,前提是相关的EventIds具有特定的状态(Dem_EventStatusExtendedType)。这些掩码定义了FID对事件的哪些状态敏感。

每个FID都有一个抑制掩码,两者都分配给一个特定的FID EventId。如果该事件具有一定的状态,并且如果事件状态与配置的掩码匹配,则对FID的抑制将激活。

图片

Interaction with DEM

FIM模块的功能是基于DEM事件为控制SWC(允许/抑制)提供服务功能当所报告事件的监控状态发生变化时,如果DemTriggerFiMReports是启用的,DEM通过API函数FIM_DemTriggerOnMonitorStatus通知FIM监控状态的变化。在收到监视器状态变化的通知时,FIM使用Dem_GetMonitorStatus来重新计算函数抑制。

每个FID都有一个Inhibition Counter抑制计数器。抑制计数器包含当前抑制的EventIds的数量。如果状态与掩码匹配,则抑制计数器增加;否则,抑制计数器不会更新。这适用于FIM_GetFunctionPermission(如果权限状态必须在查询时计算)和FIM_MainFunction。

若FIM_DemTriggerOnMonitorStatus报告了监视器状态变化,则执行以下操作:

● 如果EventId的状态改变导致释放状态(掩码与监视器状态不匹配),则抑制计数器必须减小

● 如果EventId的状态变化导致抑制状态(掩码与监视器状态匹配),则抑制计数器必须增加

● 如果抑制计数器为> 0,则FID权限状态设置为FALSE,否则FID权限状态设置为TRUE

Interaction with SWC:

对于每个FID,SWC应提供导致FID抑制的events列表和mask掩码FIM模块应同步响应传入的查询来确保对功能的即时控制。FIM模块通过将权限状态存储为状态变量或在权限查询时计算事件状态来实现这一行为如果使用接口FIM_SetFunctionAvailable将一个函数(FID)设置为不可用,它的权限状态FIM_GetFunctionPermission总是返回FALSE。

4.3 FIM Usage Example

FIM的配置实际上建立了EventId和被分配的FunctionId之间的映射关系

下图展示了FIM的实现过程:

图片

Step1:Front-Left Window-lifter SW-C 上报故障给到Error Management模块

Step2:DEM模块识别出为Event anti_Pinch故障

Step3:DEM模块会调用FiM模块相应的函数接口来通知FIM该Event Status对相应FID的影响

Step4:SWC模块轮询相应的FID,然后做出相应的功能抑制响应

05 结语

今天小怿在本文中为大家做了AUTOSAR诊断模块的详细介绍,总结来说诊断相关的三个模块分别负责实现诊断过程中的不同功能,DCM主要负责诊断通信管理,DEM实现诊断事件的处理,而FIM模块则是针对故障发生后对相关功能的抑制。今天关于AUTOSAR诊断模块就到这里,感谢大家的阅读!

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

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

相关文章

设备维护管理软件哪家好?设备巡检系统对企业经营管理有什么好处?

随着时代的不断进步,科学技术的飞速发展以及自动化水平的持续提高,设备维护保养工作在日常工作生产中扮演着至关重要的角色。然而,在实际生产中,由于对设备性能和保养规程的不熟悉,常常出现误操作、保养不到位或无法及…

如何修改字符串内容?

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 String 1. 修改字符串2. StringBuilder和…

bpmnjs Properties-panel拓展(属性设置篇)

最近有思考工作流相关的事情,绘制bpmn图的工具认可度比较高的就是bpmn.js了,是一个基于node.js的流程图绘制框架。初始的框架只实现了基本的可视化,想在xml进行客制化操作的话需要拓展,简单记录下几个需求的实现过程。 修改基础 …

leetcode 516. 最长回文子序列

2023.8.27 本题依旧使用dp算法做&#xff0c;可以参考 回文子串 这道题。dp[i][j]定义为&#xff1a;子串s[i,j] 的最长回文子串。 直接看代码: class Solution { public:int longestPalindromeSubseq(string s) {vector<vector<int>> dp(s.size(),vector<int&…

JVM知识点(一)

1、JVM基础概念 &#xff08;1&#xff09;JVM、JRE、JDK JRE&#xff1a;JVM基本类库组成的运行环境就是JRE。JVM自己是无法完成一次编译&#xff0c;处处运行的&#xff0c;需要有一个基本类库告诉JVM如何操作运行&#xff0c;如如何操作文件&#xff0c;连接网络等&#x…

四川玖璨电子商务有限公司:短视频运营表格

随着互联网的飞速发展和用户对内容需求的不断增加&#xff0c;短视频运营成为了当前互联网领域的一大热门。短视频作为一种具有高度吸引力和传播力的内容形式&#xff0c;成为各大平台争相追逐和竞争的热点。 然而&#xff0c;短视频运营并非一项简单的任务。为了能够在激烈的…

HOOPS Exchange如何实现3D模型格式转换?

HOOPS Exchange是一个专业的3D数据转换工具包&#xff0c;用于处理各种不同格式的3D模型数据。它提供了高效、精确的转换和处理功能&#xff0c;让开发者能够在不同的3D软件和环境之间无缝交换模型数据。 HOOPS Exchange将模型加载到标准化数据结构中&#xff0c;可以查询该数…

Android Update Engine 分析(二十一)Android A/B 更新过程

0. 背景 早期 Android A/B 系统升级在 Android 7.1 版本推出时&#xff0c;参考文档十分有限&#xff0c;也就是 Android 官方大概有两三个页面介绍文档。 我的第一篇 A/B 系统分析文章《Android A/B System OTA分析&#xff08;一&#xff09;概览》从总体上介绍了什么是 A/…

全面解析MES系统中的车间退料管理

一、车间退料管理的定义&#xff1a; 车间退料是指在生产过程中&#xff0c;将不合格或多余的物料、半成品或成品从车间环节返还到供应链的过程。车间退料管理则是指对这一退料过程进行规范化、系统化的管理和跟踪。 二、车间退料管理的流程&#xff1a; 1. 退料申请&#xf…

不会用这个工具,你的Linux服务器就是个摆设!

大家好&#xff0c;我的网工朋友 在运维这一块&#xff0c;没有工具可谓是寸步难行。 一个好的Linux运维&#xff0c;为了提升自己的工作效率&#xff0c;免不得会找一些适合自己业务需求的工具&#xff0c;用起来工作效率高&#xff0c;工作幸福指数直线上升。 今天整理了几…

数字化、智能化的酒店固定资产管理系统

酒店固定资产管理系统是一种专门为酒店行业定制的管理软件&#xff0c;可以帮助酒店管理者全面、准确地管理固定资产。该系统具有以下实际功能和特点&#xff1a;  资产库存功能&#xff1a;通过扫描二维码或手动输入条形码&#xff0c;完成酒店固定资产的有效总结&#xff0…

windows搭建向量数据库milvus

这里我们使用docker的方式&#xff0c;搭建本地向量数据库。 首先安装docker&#xff0c;windows下载安装docker。 下载链接&#xff1a;https://docs.docker.com/desktop/install/windows-install/ 安装完成后&#xff0c;开始菜单可以看到docker。 安装milvus 下载 YAML文…

探索内网穿透工具:实现局域网SQL Server数据库的公网远程访问方法

文章目录 1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据库的重要性相信大家都有所了解&…

可快速搭建运营的答题考试问卷调查小程序开发演示

考试答题问卷调查小程序&#xff0c;支持每一个用户自由发起考试答题、问卷调查。支持控制问卷搜集、回答等各个环节的设置。支持使用系统模板问卷&#xff0c;可以一键创建属于自己的问卷。支持考试答题中错题搜集和添加错题&#xff0c;巩固知识点。 核心亮点&#xff1a; …

《Linux从练气到飞升》No.18 进程终止

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

前端 js实现 选中数据 动态 添加在表格中

如下图展示&#xff0c;表格上方有属性内容&#xff0c;下拉选中后&#xff0c;根据选中的内容&#xff0c;添加在下方的表格中。 实现方式&#xff0c;&#xff08;要和后端约定&#xff0c;因为这些动态添加的字段都是后端返回的&#xff0c;后端自己会做处理&#xff0c…

C# textBox 右键菜单 contextMenuStrip

需求&#xff1a; 想在上图空白处可以右键弹出菜单&#xff0c;该怎么做呢&#xff1f; 1.首先&#xff0c;拖出一个 ContextMenuStrip。 随便放哪里都行&#xff0c;如下: 2.在textBox里关联这个“右键控件”即可&#xff0c;如下&#xff1a; 最终效果如下&#xff1a; 以上…

世微AP9234 升压型DC/DC LED恒流驱动

描述 AP9234是一款由基准电压源、振荡电路、误差放大电路、相位补偿电路、电流限制电路等构成的CMOS升压型DC/DC LED驱动。由于内置了低导通电阻的增强型N沟道功率MOSFET&#xff0c;因此适用于需要高效率、高输出电流的应用电路。另外&#xff0c;可通过在VSENSE端子连接电流…

述途路人团·百分之一的困

我开发的第2款Steam上的小游戏&#xff1a; 《述途路人团百分之一的困》&#xff08;英文名称&#xff1a;《As Talk As Walk Wayfarer Team – One Percent Sleepy》&#xff09; https://store.steampowered.com/app/2465530/_/ 电子邮件&#xff1a;atawwt_onepes163.com

关于cross entropy这个概念

第一步&#xff0c;现在果断上chatGPT去查准确概念&#xff1a; 也就是说&#xff0c;你有一个真实的概率分布P, 同时&#xff0c;你通过训练得到的一个模型&#xff0c;这个模型对于这个数据的输出的概率分布是Q&#xff0c; 而H(P&#xff0c;Q)就是用来描述这个2个概率分布…