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

news2025/4/6 5:31:23

目录

  • 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.coloradmin.cn/o/1977814.html

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

相关文章

2.MonggoDB是什么?

1. 不是什么? 要想知道MongoDB是什么,我们得先搞清楚它不是什么,首先它不是关系数据,不是像下面这样这种格式存储数据。 这个图展示了关系型数据库的常用存储方式,一个表格,里面存储了多行记录&#xff0…

Linux系统中的两个核心进程:`init`和`kthreadd`

文章目录 1 init 进程1.1 基本信息1.2 主要功能1.3 示例 2 kthreadd 进程2.1 基本信息2.2 主要功能2.3 示例 3 对比总结4 用户空间进程与内核线程4.1 用户空间进程特点 4.2 内核线程特点 5 对比总结6 结论参考链接封面 本文详细对比了Linux系统中的两个核心进程: i…

nvm 对node版本的控制

使用nvm切换Node.js版本的步骤如下 nvm list available // 显示可以安装的所有node.js的版本 如果出现空白 问题解决 经过查找nvm的文档,发现,对于中国用户而言,可以切换nodejs或npm的镜像地址来访问: nvm node_mirror https:…

软raid - - udev规则

一、什么是udev FROM AI: udev是Linux 2.6内核及以后版本中引入的一个设备管理框架,它取代了之前的devfs系统。udev以守护进程的形式运行,并且工作在用户空间而不是内核空间。它的主要功能是动态地创建和管理/dev目录下的设备节点,并且能够根…

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

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

蚂蚁笔试0511-编程题

解题思路: 记录0、正数、负数的个数,分类讨论。 解题思路: 有n个位置,每个位置有m个数,所以一共有m^n种情况,每种情况至少包含权值1,也就是全相等是一段,或者说是一个数形成的 从第二…

黑马Java零基础视频教程精华部分_11_面向对象进阶(3)

系列文章目录 文章目录 系列文章目录一、抽象类1、为什么要有抽象类?2、抽象方法3、抽象类4、抽象类和抽象方法定义格式5、注意事项 二、接口1、为什么会有接口?2、接口和抽象类的异同3、接口的定义和使用4、接口中成员的特点5、接口和类之间的关系6、实…

机器学习第五十周周报 CGNN

文章目录 week50 CGNN摘要Abstract0. 概述1. 题目2. Abstract3. 网络结构3.1 状态更新网络3.2 method 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程 5. 结论6.相关代码CompositeLGNNCompositeGNNcomposite-graph-class小结参考文献 week50 CGNN 摘要 本周阅读了题为Co…

【题解】189. 轮转数组(数组、数学、双指针)

https://leetcode.cn/problems/rotate-array/description/?envTypestudy-plan-v2&envIdtop-interview-150 class Solution { public:void rotate(vector<int>& nums, int k) {k k % nums.size(); // 注意k要取一下模reverse(nums.begin(), nums.end()-k);rev…

常见cms漏洞之ASPCMS

项目地址&#xff0c;自行百度 漏洞复现&#xff0c;使用后台配置文件拿shell 访问后台 http://192.168.177.153/admin_aspcms/login.asp 账号密码已设置成&#xff0c;登录即可 admin 123456

关于Win11无法自动进入休眠问题

最近从win10升到11了 感觉还挺好用的 就是右键有点逆天 主要是为了3k屏连接1080显示器更新的 但是发现彻底无法休眠了&#xff0c;这个还要说的是以前win10睡眠一次就算一次硬盘通电&#xff0c;现在更新后不会了 下面说回休眠 b站浏览一番后发现是22H2隐藏了休眠时间设置&a…

哈希 || unordered系列的关联式容器底层 | 哈希模拟实现 | HashTable代码实现

底层结构 unordered系统的关联式容器之所以效率比较高&#xff0c;是因为其底层使用了哈希结构。 哈希概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须经过关键码的多次比较。 顺序查找的…

【机器学习算法基础】(基础机器学习课程)-10-逻辑回归-笔记

一、模型的保存与加载 逻辑回归是一种常见的机器学习算法&#xff0c;广泛用于分类问题。为了在不同的时间或环境下使用训练好的模型&#xff0c;我们通常需要将其保存和加载。 保存模型 训练模型&#xff1a;首先&#xff0c;你需要用你的数据训练一个逻辑回归模型。例如&…

【软考】甘特图

目录 1. 说明2. 图示3. 特点4. 例题4.1 例题1 1. 说明 1.Gantt图是一种简单的水平条形图,它以日历为基准描述项目任务。2.水平轴表示日历时间线(如时、天、周、月和年等)&#xff0c;每个条形表示一个任务&#xff0c;任务名称垂直地列在左边的列中&#xff0c;图中水平条的起…

猫头虎分享:从零开始掌握ChatGPT的实用技巧与多样应用

猫头虎分享&#xff1a;从零开始掌握ChatGPT的实用技巧与多样应用 ChatGPT使用方法与应用场景分享 大家好&#xff0c;我是猫头虎 &#x1f42f;&#xff0c;欢迎大家来到这次的分享课程。在这里&#xff0c;我们将深入了解ChatGPT的使用方法和应用场景。本文旨在帮助大家从零…

配置nacos显示nacos registry register finished但是nacos页面看不到服务

在idea配置按以下配置&#xff1a; 父工程&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.0.1.0</version><type>pom</type&…

内网权限维持——映像劫持CLR劫持

文章目录 一、映像劫持1.1 IFEO简介1.2 利用Shfit后门技术进行劫持1.3 GlobalFlag 二、CLR劫持2.1 CLR简介2.2 利用CLR探查器进行权限维持 攻击机kali IP&#xff1a;192.168.111.0 跳板机win7 IP&#xff1a;192.168.111.128&#xff0c;192.168.52.143 靶机win server 2008 I…

【开端】通过springboot框架创建对象

日常创建对象的方式 UserService userService new UserService() 这中方式创建对象&#xff0c;是程序运行中&#xff0c;才会创建的对象。在web中&#xff0c;我们需要再web服务器启动完成就创建一系列的对象。这是就可以把创建对象的任务交给spring的IOC框架。 例如创建U…

SOMEIP_ETS_003:数组长度过短导致有效载荷被剥离

测试目的&#xff1a; 确保DUT在接收到的SOME/IP消息中数组长度小于实际数组长度时&#xff0c;能够正确地截断负载数据至声明的数组长度。 描述 本测试用例旨在验证DUT在处理一个声明数组长度小于其实际长度的SOME/IP消息时&#xff0c;是否能够将响应消息的负载数据截断至…

国标GB/T28181视频转S3云存储,支持阿里云OSS、腾讯云COS、天翼云存储,视频转云存大大降低运营商项目运营成本

最近在做一个运营商主导的项目&#xff0c;在沟通项目需求的时候&#xff0c;发现从运营商的角度&#xff0c;带宽和存储的成本在内部计费中是能够比市场上的价格低的多的多&#xff0c;以一个100路摄像头的本地存储为例&#xff0c;如果采用NVR本地存储&#xff0c;或者CVR本地…