[CP_AUTOSAR]_系统服务_DEM模块(三)功能规范之诊断事件定义

目录

  • 1、诊断事件定义
    • 1.1、Event priority(事件优先级)
    • 1.2、Event occurrence(事件发生计数器)
    • 1.3、Event kind(事件类别)
    • 1.4、Event destination(故障内存)
    • 1.5、Diagnostic monitor definition(诊断监测器定义)
    • 1.6、Event dependencies(事件独立性)
    • 1.7、Component availability(组件可用性)

  在前面 《[CP_AUTOSAR]_系统服务_DEM模块(一)》文中,简要介绍了 DEM 模块的功能、与其它模块之间的功能交互;在 《[CP_AUTOSAR]_系统服务_DEM模块(二)》文中,简要介绍了 DEM 模块关于ECU启动阶段的行为、诊断监测器的重新初始化的功能规范。本文接着介绍诊断事件定义的功能规范。
  参考文档《AUTOSAR_SWS_DiagnosticEventManager》

1、诊断事件定义

  可以被 DEM 模块处理的原子级单元定义为诊断事件。诊断事件的状态表示了监测器的运行结果,DEM 模块可以通过 RTE 或者 BSW 模块获取监测器的执行结果。
  DEM 模块使用 EventId 来管理系统中诊断事件的状态,并对各个诊断结果执行相应的行动,比如存储冻结帧。
  [SWS_Dem_00153] DEM 模块应该通过一个 EventId 和 EventName 来表示一个诊断事件。所有的监测器以及BSW 模块使用 EventId 作为 EventName ,DEM 配置工具用数字替换符号名称。
  [SWS_Dem_00154] 每个 DEM 模块 EventId 和相关的 EventName 都是唯一的。DEM 模块不应该设计多个监测器共享一个 EventId 的用例。DEM 模块使用内部监测器状态来存储汇报的诊断事件的状态。

1.1、Event priority(事件优先级)

  基于重要性的事件排列被定义为事件优先级。如果要存储的事件数量超出了最大的内存条目,那么就可以根据事件优先级来决定哪些故障条目可以从 event memory 中移除。
  [SWS_Dem_00382] 每个诊断事件都被分配一个优先级(参数为 DemDTCPriority)。
  [SWS_Dem_00383] 最高优先级的数值为 1 ,优先级数值越大,表示的重要性越低。

1.2、Event occurrence(事件发生计数器)

  [SWS_Dem_00011] DEM 模块为每一个 Event memory entry(单个存储的容器,用于存储该事件以及相关的数据,可以动态分配给指定的事件)提供事件发生计数器;
  [SWS_Dem_00523] 如果诊断事件进入各自的 event memory (比如,主要故障内存由若干个事件内存条目组成),DEM 模块应该初始化事件发生计数器为1。
  [SWS_Dem_00524] 如果配置参数 DemOccurrenceCounterProcessing 被设置为 DEM_PROCESS_OCCCTR_TF,DEM 模块中事件发生计数器应该加一,如果相关的诊断事件已经存储到 event memory 中,UDS 状态参数中 bit0 (TestFailed)由 0 变为 1 即可触发。
  [SWS_Dem_00580] 如果配置参数 DemOccurrenceCounterProcessing 被设置为 DEM_PROCESS_OCCCTR_CDTC,DEM 模块需要将事件发生计数器应该加一,如果相关的诊断事件已经存储到 event memory 中 并且 UDS status bit 3 等于1,UDS 状态参数中 bit0 (TestFailed)由 0 变为 1 即可触发。
  [SWS_Dem_00625] DEM 模块不再增加指定事件的发生计数器,如果发生计数器达到了最大值 255。

1.3、Event kind(事件类别)

  有两种诊断事件类型:
  1、与 BSW 模块相关的诊断事件:通过 API 函数 Dem_SetEventStatus 来汇报;
  2、与 SWCs 模块相关的诊断事件:通过 RTE 接口函数 SetEventStatus 来汇报;
  诊断事件的类别可以通过参数 DemEventKind 来配置。

1.4、Event destination(故障内存)

  在 DCM - DEM 交互过程中,参数 DTCOrigin 被用于区分存储的内存区域。在不同的内存区域(primary,主要故障内存; user defined,用户自定义故障内存;permanent,永久故障内存),所允许的操作是不一样的。
  配置参数 DemMemoryDestinationRef 定义了故障专用的存储位置,以及它相关的数据。
  一、主要故障内存
    故障状态掩码、失败计数器、Debounce 计数器、故障的总数、故障顺序表、第一次存储的事件以及最近一次存储的事件、冻结帧、扩展数据等;
  二、用户自定义故障内存
    与主要故障内存中存储的数据单元类似,由用户自定义;
  故障状态掩码、失败计数器、Debounce 计数器等;
  三、永久故障内存
    排放相关的故障(比如,与 OBD 相关的驾驶循环、WWHOBD 有关的冻结帧数、暖机循环计数、IUMPR 计数器等)被自动分配到永久故障内存(Permanent Event Memory)中。作为 “Permanent DTC” 来存储故障,是来源于它的当前状态。在这个上下文中,该词语 “permanent” 是指与排放相关故障的属性有关,而非单单指 NVM 的永久性存储。

1.5、Diagnostic monitor definition(诊断监测器定义)

  诊断检测器是能够决定组件单元的功能是否合理的例程实体。监测器功能为一条监测路径定义了故障类型(如短地、开路等)。一条监测路径代表了一个物理系统或者一个线圈正在被监控(如传感器输入)。一个诊断事件,一条监测路径。
  下图为 SWC 中监测器的示例:
在这里插入图片描述
  如果故障监测器所监测的系统正在抖动(比如运行正常的物理系统受到了扰动),汇报故障的 API 只有在抖动计数器达到预定值时才会被调用。诊断事件状态的改变(passed 或者 failed),是有必要去汇报的。通常,监视器总是调用Dem更有效,因此应该首选。因此,Dem处理未改变结果的报告是具体实施的。
  如果监测器使用 DEM 模块内部的抖动计数器机制,每当执行带有功能检查的代码时,都会调用汇报的 API。

1.6、Event dependencies(事件独立性)

  DemComponent 中事件优先级、以及DemComponents 之间的依赖关系,是被用于过滤汇报给故障内存的故障存储的。
  当某个故障发生时,由于优先级或依赖关系导致其他故障也会相继发生,那么此时前者被称为因果故障(Causal Fault), 而后者则被称为连续故障(Consecutive Fault)
  [SWS_Dem_01126] 当一个事件报告为 FAILED 时,如果同一个 DemComponent 中具有更高优先级的其他事件已经为FAILED,则该事件应被视为连续故障(CONSECUTIVE FAULT)。
  [SWS_Dem_01127] 当一个事件报告为 FAILED 时,如果父故障为FAILED,则该事件应被视为连续故障(CONSECUTIVE FAULT)。
  [SWS_Dem_01128] 如果父故障发生(在同一个系统中的其它故障的失效都应该被忽略,比如传感器的供电异常,那么在供电异常故障汇报时,类似于传感器数值不正确的故障则应该被忽略,而供电异常则是传感器数值不正确故障的父故障),则该事件应被视为连续故障(CONSECUTIVE FAULT)。DEM 应该忽略事件的优先级。
  [SWS_Dem_01129] 如果汇报的故障不被认定为连续故障,那么应被认定为 CAUSAL FAULT。因果故障会被正常执行事件处理,进行故障内存管理。
  [SWS_Dem_01218] 如果汇报的故障不被认为是连续故障,并且已经配置了 DemCausalityDelayTime,则将其视为初步因果故障(PRELIMINARY-CAUSAL FAULT)。从汇报事件发生的时间点开始,直到经过 DemCausalityDelayTime,事件可以被重新认定为连续故障。如果在此期间在同一 DemComponent 内或任何父 DemComponent 上报告了另一个具有更高优先级的故障,则该事件应被重新视为连续故障。时间过去后,故障将不会被重新考虑。
  [SWS_Dem_01130] 被认为是连续故障的故障不应存储到故障存储器中。(处理应类似于未满足存储条件)
  [SWS_Dem_01211] 汇报 DEM_EVENT_STATUS_FDC_THRESHOLD_REACHED (例如,通过接口调用、或者达到了 debounce 算法中配置的阈值时) 被认为是故障事件的连续报告,则不应被存储到故障内存中。处理应类似于未满足储存条件
  [SWS_Dem_01131] DEM 提供接口 Dem_GetComponentFailed ,其允许查询 DemComponents 的失效状态。
  [SWS_Dem_01132] 如果 DemTriggerFiMReports 使能,每个 DemComponent 失效状态发生改变时,DEM 应该调用函数 DemTriggerOnComponentStatus 去通知 Fim 模块。
  [SWS_Dem_01133] 如果组件状态正在改变并且 DemComponentFailedCallbackFnc 被配置,或者是DemComponentFailedCallbackUsePort 被设置为 TRUE ,DEM 模块应该触发回调函数 DemTriggerOnComponentStatus。

1.7、Component availability(组件可用性)

  [SWS_Dem_01134] DEM 模块支持组件可用性。不可用的组件被视为未包含在系统中。
  [SWS_Dem_01135] 接口函数 Dem_SetComponentAvailable 可以设置组件的可用性状态。
  [SWS_Dem_01136] 设置组件(DemComponent)不可用,那么所有分配的事件也应该被设置为不可用。
  [SWS_Dem_01239] 启动之后,所有的 DemComponents 都是可用的。
  [SWS_Dem_01226] 如果通过函数 Dem_SetComponentAvailable 设置一个组件不可用,那么 DEM 模块应该设置其子组件为不可用,就像系统中不存在组件。
  [SWS_Dem_01227] 如果一个组件被设置为不可用,DEM 模块应该设置所有分配到该组件的事件为不可用,包括这些事件的所有子节点。事件的行为类似于将每个事件单独设置为“不可用”。
  [SWS_Dem_01228] 如果通过函数 Dem_SetComponentAvailable 设置一个组件不可用而且任何分配到该组件的独立事件是失效的,该独立事件会被保持为可用的。
  [SWS_Dem_01229] 如果通过函数 Dem_SetComponentAvailable 设置一个组件为可用,所有被分配到该组件的事件也应该设置为可用,包括这些事件的子节点(如果这些子节点仍被设置不可用)。事件的行为类似于将每个事件单独设置为“可用”。
  [SWS_Dem_01231] 如果函数 Dem_SetComponentAvailable 被调用去设置一个事件为可用,如果它当前相关的节点为不可用,那么函数返回值应该为 E_NOT_OK。
  [SWS_Dem_01232] 如果函数 Dem_SetComponentAvailable 设置某个事件为可用,并且其组件为不可用,Dem_SetEventAvailable 函数应该返回 E_NOT_OK。

   更多内容可参考 CP_AUTOSAR_总目录,点击跳转

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

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

相关文章

springboot系列教程(三十):springboot整合Zookeeper组件,管理架构中服务协调

一、Zookeeper基础简介 1、概念简介 Zookeeper是一个Apache开源的分布式的应用,为系统架构提供协调服务。从设计模式角度来审视:该组件是一个基于观察者模式设计的框架,负责存储和管理数据,接受观察者的注册,一旦数据…

【数据结构】链表篇

文章目录 1.链表的概念以及结构2.链表的分类2.1 单向或者双向2.2 带头或者不带头2.3 循环或者不循环2.4 无头单向非循环链表和带头双向循环链表 3.单链表的实现3.1 准备工作3.2 节点的创建3.3 单链表的释放3.4 打印链表3.5 单链表的尾插3.6 单链表的尾删3.7 单链表头删3.8 单链…

TiDB系列之:TiCDC同步TiDB数据库数据到Kafka集群Topic

TiDB系列之:TiCDC同步TiDB数据库数据到Kafka集群Topic 一、Changefeed 概述Changefeed 状态流转操作 Changefeed 二、同步数据到Kafka创建同步任务,复制增量数据 KafkaSink URI 配置 kafka最佳实践TiCDC 使用 Kafka 的认证与授权TiCDC 集成 Kafka Connec…

搭建高可用OpenStack(Queen版)集群(一)之架构环境准备

一、搭建高可用OpenStack(Queen版)集群之架构环境准备 一、架构设计 二、初始化基础环境 1、管理节点创建密钥对(方便传输数据) 所有控制节点操作 # ssh-keygen #一路回车即可 Generating public/private rsa key pair. Enter f…

算法通关:016:设计循环双端队列

文章目录 题目思路代码运行结果问题为什么能直接调用方法名 题目 leetcode641 设计循环双端队列 思路 代码 import java.util.Deque; import java.util.LinkedList;/*** Author: ggdpzhk* CreateTime: 2024-08-03* 641 双端队列:利用双向链表和动态数组实现*/ pu…

C#和S7-1200PLC S7.NET通信

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。这篇博客作为C#的基础系列,和大家分享如何一步步建立一个C#项目完成对S7-1200PLC数据的连续读取。首先创建一个窗体应用。_s7协议批量…

【uniapp离线打包】(基于Android studio)

文章目录 uniapp打包官方教程入口一、准备工作(工具三大件)Android Studio版本推荐 二、准备工作(Android壳和uniapp包)导入Android壳生成uniapp包将uniapp包导入android壳降低jdk版本 三、准备工作(证书)准备Android平台离线签名…

SpringSecurity-1(认证和授权+SpringSecurity入门案例+自定义认证+数据库认证)

SpringSecurity 1 初识权限管理1.1 权限管理的概念1.2 权限管理的三个对象1.3 什么是SpringSecurity 2 SpringSecurity第一个入门程序2.1 SpringSecurity需要的依赖2.2 创建web工程2.2.1 使用maven构建web项目2.2.2 配置web.xml2.2.3 创建springSecurity.xml2.2.4 加载springSe…

50 选择结构

常见的选择结构有单分支选择结构、双分支选择结构、多分支选择结构及嵌套的分支结构,也可以构造跳转表来实现类似的逻辑。循环结构和异常处理结构中也可以实现带有 else 子句,可以看作特殊形式的选择结构。 所有的 Python 合法表达式都可以作为条件表达…

一篇文章让你搞懂原码,反码,补码!

目录 1.机器数和机器数真值 1.1机器数 1.2机器数的真值 2.原码,反码,补码的计算方法 2.1原码 2.2反码 2.3补码 3.为什么要使用反码和补码? 3.1原码不能让符号位参与运算的问题: 3.2为了解决原码作减法,引入…

SAP支出管理,企业成本控制的智能钥匙

在企业运营中,有效的支出管理是确保财务健康和提升竞争力的关键。SAP支出管理系统作为企业资源规划的核心组成部分,提供了一套全面的解决方案,帮助企业实现成本控制、风险管理和合规性监督。实现支出管理流程自动化,并主动管理更多…

python爬虫预备知识三-序列化和反序列化

序列化和反序列化 序列化是为了将内存中的数据保存在磁盘上或者用于传输,实现程序状态的保存和共享。反序列化反之。 序列化后的变量再被反序列化回来之后,两者之间已经没有任何关系。 序列化后的文件是在不同程序或者说不同语言之间传递数据的关键方…

分享5款.NET开源免费的Redis客户端组件库

前言 今天大姚给大家分享5款.NET开源、免费的Redis客户端组件库,希望可以帮助到有需要的同学。 StackExchange.Redis StackExchange.Redis是一个基于.NET的高性能Redis客户端,提供了完整的Redis数据库功能支持,并且具有多节点支持、异步编…

[Git][分支管理][上]详细讲解

目录 1.理解分支2.创建分支3.切换分支4.合并分支5.删除分支 1.理解分支 感性理解:分支可以理解为平行宇宙,但是在用户需要的时候,可以将两个平行宇宙合并,此时两个平行宇宙的效果将会"叠加"理性理解:每次提…

TCP 和 UDP 之间的区别?

从 连接,可靠性,传输方式等方面: TCP 是面向连接的协议,在发送数据的时候需要先通过 TCP 的三次握手,而 UDP 是无连接的协议,可以直接传输数据TCP 通过超时重传,流量控制和拥塞控制等方法保障了…

使用JWT的SpringSecurity实现前后端分离

1. SpringSecurity完成前后端完全分离 分析: 前后端分离:响应的数据必须为JSON数据,之前响应的是网页 需要修改的代码有: 登录成功需要返回json数据登录失败需要返回json数据权限不足时返回json数据未登录访问资源返回json数据 1.…

二叉树的前序遍历 - 力扣(LeetCode)C语言

144. 二叉树的前序遍历 - 力扣(LeetCode)(点击前面链接即可查看题目) 一、题目 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: …

文心智能体【MBTI速测小精灵】:趣味速测,精准解析你的性格密码!

文章目录 一、文心智能体平台是什么?二、创建文心智能体智能体创建智能体调试分析智能体基础配置智能体高级配置智能体高级调试 三、文心智能体发布四、文心智能体体验总结 一、文心智能体平台是什么? AgentBuilder文心智能体平台是基于文心大模型的智能…

适用于 Android 的 6 大视频恢复软件榜单 – 恢复您的珍贵回忆!

失去珍贵的回忆可能是一种令人心碎的经历,尤其是在您的 Android 设备上拍摄视频时。无论是由于意外删除、格式化、系统崩溃还是任何其他不可预见的情况,丢失珍贵视频的想法都会造成巨大的痛苦。但不要担心!在这篇博文中,我们将深入…

临床随机对照试验中的分层问题及其解决方法

在临床随机对照试验(Randomized Controlled Trials, RCTs)中,分层问题(Stratification Issues)是影响研究结果有效性的重要因素之一。RCTs是评估医疗干预效果的金标准,旨在通过随机分组和对照来消除干扰因素…