首页 > 其他分享 >[CP_AUTOSAR]_系统服务_DEM模块(三)功能规范之诊断事件定义

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

时间:2024-08-04 11:25:06浏览次数:7  
标签:AUTOSAR 模块 故障 事件 Dem SWS CP DEM

目录


  在前面 《[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_总目录,点击跳转

标签:AUTOSAR,模块,故障,事件,Dem,SWS,CP,DEM
From: https://blog.csdn.net/weixin_43722921/article/details/140888046

相关文章

  • 河南省赛ccpc
    ##F.优秀字符串题意:有n个字符串找出优秀字符串的个数。优秀字符串的定义:长度为5,第三个字符和第五个字符相同,前四个字符互不相同。分析:直接模拟即可代码:```#include<bits/stdc++.h>usingnamespacestd;intmain(){   intn;cin>>n;intans=0;   while(n--){......
  • 退役CTF选手想拿xcpc牌子的第一天--AcWing基础语法课第一章代码复现
    文章目录变量、输入输出、表达式与顺序语句AcWing1AcWing604AcWing605AcWing606AcWing607AcWing608AcWing609AcWing610AcWing611AcWing612AcWing613AcWing614AcWing615AcWing616AcWing617AcWing618AcWing653AcWing654AcWing655AcWing656变量、输......
  • 流量回放技术测试领域应用及GoReplay demo实践总结
    目录前言基本概念流量回放的优势1.高度模拟真实环境:2.提高测试覆盖率:3.快速定位和复现问题:4.减少测试时间和成本:5.支持持续集成和持续部署(CI/CD):6.增强安全性测试:7.支持多场景测试:8.数据驱动的测试:9.提高团队协作效率:10.易于集成和扩展:方案比较1.Nginx层流量......
  • linux测试cpu性能的命令
    linux测试cpu性能的命令在Linux中,可以使用多种命令来测试CPU性能。以下是一些常用的命令:stress:一个通用的压力测试工具,可以生成CPU、内存、IO等负载。安装:sudoapt-getinstallstress(Debian/Ubuntu)使用:测试所有CPU核心:stress--cpu8测试单个CPU核心:stress--cpu......
  • caffe编译和基本使用(Windows + CPU)
    xqspace0.摘要本文主要完成以下几点:caffe默认支持是vs2013/vs2015+python2.7/python3.5,使用其他版本会比较麻烦,这里使用的是vs2015和python3.5;完成caffe在windows上的编译(cpu版);提供caffe的python接口;caffe的基本使用方法(这里是推荐几篇讲的比较详细的入门博文);......
  • 【Linux或者Windows中相关网络工具使用介绍】nc、ping、ifconfig、ipaddr、tcpdump、l
    在实际的网络排错、运维诊断、或者是开发过程中,熟练运用Linux或者Windows当中的有关网络工具,能够助力我们更迅速更精准地定位故障。因而,今天给大家分享几款必掌握的网络利器。1.nc命令在Linux中,nc命令即netcat命令,它被称为网络工具中的“瑞士军刀”,是一个功能强大的......
  • 什么是DHCP?为什么要有DHCP?
    今天我们来聊聊DHCP,它在网络管理中扮演着重要的角色。作为网络技术的基础之一,DHCP(DynamicHostConfigurationProtocol)在自动分配IP地址和管理网络配置方面发挥了至关重要的作用。那么,什么是DHCP?为什么要有DHCP呢?给大家带来了详细解答,赶快来看看吧!1.什么是DHCP?DHCP,全称为“......
  • CPU和GPU的区别(CPU核心少但是强和GPU核心多但是弱)
    目录CPU和GPU的区别(CPU核心少但是强和GPU核心多但是弱)内存和显存的区别在Helo2和Zk-Snarks中使用CPU还是GPU提升验证效率实现串行和并行的原因及简单举例CPU和GPU的区别(CPU核心少但是强和GPU核心多但是弱)CPU(中央处理器)和GPU(图形处理器)在设计和功能上存在显著差异:设......
  • 使用epoll编写TCP服务器示例
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<netinet/in.h>#include<sys/socket.h>#include<arpa/inet.h>#include<sys/epoll.h>#include<unistd.h>#include......
  • Linux - 查看CPU使用率命令mpstat
    简介想在imx6q上定时查看CPU使用率,发现命令mpstat可以直接使用,不需要额外安装 使用mpstat的基本用法mpstat的全称为MultiprocessorStatistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。这个命令Linux缺省没有安装,它是Linux性......