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

往期小怿向各位小伙伴介绍了,文章内容过多分为了两期,本期为大家介绍《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.hqwc.cn/news/86473.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java 中级】一文精通 Spring MVC - 数据格式化器(六)

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

小红书口碑营销技巧有哪些,打造独特品牌内容

作为一款社交电商平台,从目前来看,其实小红书也算是比较不错的口碑营销传播平台了。今天就来带大家一起分享下,小红书口碑营销技巧有哪些,打造独特品牌内容! ​ 一、小红书口碑营销怎么做 1. 了解目标用户 首先需要明…

nginx代理webSocket链接,webSocket频繁断开重连

一、场景 1、使用nginx代理webSocket链接,消息发送和接收都是正常的,但webSocket链接会频繁断开重连 2、如果不使用nginx代理则一切正常 3、程序没有做webSocket心跳处理 如下图 二、nginx代理配置 upstream cloud_ass {#ip_hash;server 192.168.1.…

前端如何走通后端接口

0 写在前面 现在基本都是前后端分离的项目了,那么前端小伙伴如何获取后端小伙伴接口呢? 1 条件 同一WiFi下,让后端小伙伴分享出自己的ip地址: 步骤1:winr调出运行界面 步骤2:cmd调出命令行窗口 步骤3:…

C#,《小白学程序》第三课:类、类数组与排序

1 文本格式 /// <summary> /// 同学信息类 /// </summary> public class Classmate { /// <summary> /// 学号 /// </summary> public int Id; /// <summary> /// 姓名 /// </summary> public string Nam…

小研究 - Android 字节码动态分析分布式框架(五)

安卓平台是个多进程同时运行的系统&#xff0c;它还缺少合适的动态分析接口。因此&#xff0c;在安卓平台上进行全面的动态分析具有高难度和挑战性。已有的研究大多是针对一些安全问题的分析方法或者框架&#xff0c;无法为实现更加灵活、通用的动态分析工具的开发提供支持。此…

【C++】初始化列表

前言&#xff1a;这个知识点的细节比较多&#xff0c;且有些细节不太容易理解&#xff0c;要做好准备哟&#x1f47b; Ⅰ.构造函数的不完美&#x1f62d; 初始化列表&#xff0c;顾名思义&#xff0c;用列表一样的格式将其初始化。 &#x1f914;奇怪啊&#xff0c;构造函数的…

【Ubuntu 20.04 安装 搜狗输入法】细节注意

建议下载地址为&#xff1a; 搜狗拼音下载地址-Linux 也即是这个主页&#xff1a;适配Ubuntu20.04 安装过程根据官方文档即可 即 官方安装文档 一般不会出错

Vue2向Vue3过度Vuex状态管理工具快速入门

目录 1 Vuex概述1.是什么2.使用场景3.优势4.注意&#xff1a; 2 需求: 多组件共享数据1.创建项目2.创建三个组件, 目录如下3.源代码如下 3 vuex 的使用 - 创建仓库1.安装 vuex2.新建 store/index.js 专门存放 vuex3.创建仓库 store/index.js4 在 main.js 中导入挂载到 Vue 实例…

IDEA下SpringBoot指定环境、配置文件启动

1、idea下的SpringBoot启动&#xff1a;指定配置文件 Springboot项目有如下配置文件 主配置文件application.yml&#xff0c; 测试环境&#xff1a;application-test.yml 生产环境&#xff1a;application-pro.yml 开发环境&#xff1a;application-dev.yml 1.1.配置文件…

windows下如何搭建属于自己的git服务器

前一阵子公司需要&#xff0c;领导让我给我们技术部搭建一个git服务器。以前看过教程&#xff0c;但自己没动手做过&#xff0c;开始按照网上的教程来&#xff0c;但搭建过程中发现还是不够详细&#xff0c;今天给大家一个比较详细的&#xff0c;希望对大家有帮助。 高能预警&a…

【环境配置】Android-Studio-OpenCV-JNI以及常见错误 ( 持续更新 )

最近一个项目要编译深度学习的库&#xff0c;需要用到 opencv 和 JNI&#xff0c;本文档用于记录环境配置中遇到的常见错误以及解决方案 Invalid Gradle JDK configuration found failed Invalid Gradle JDK configuration foundInvalid Gradle JDK configuration found. Open…