AUTOSAR DEM (三):故障事件及故障错误码定义

本文详细解释了Autosar中的诊断事件管理,包括DEM模块如何通过EventId和EventName表示事件,事件优先级、发生次数、种类、目的地的定义,以及诊断监控器、事件依赖关系、组件可用性、DTC(诊断故障代码)的相关概念。此外,还涵盖了DTC格式、严重性、功能单元和DTC抑制输出的管理。

故障事件定义

在 Autosar 中,诊断事件是指在车辆电子系统中发生的特定事件,可以用于诊断和故障排除。

DEM模块通过EventId和相关的EventName来表示每个诊断事件。诊断事件的状态代表了监控器的结果,DEM模块通过RTE或其他BSW模块从SW-C接收监控器的结果。DEM模块使用EventId来管理系统中每个诊断事件的状态,并对各个测试结果执行所需的操作,例如存储冻结帧/拓展帧。

所有监控器和BSW模块使用EventId作为符号化的EventName来管理诊断事件。
每个DEM模块的EventId和相关的EventName在ECU配置中必须是唯一的。DEM模块无法处理多个监控器共享一个EventId的情况。
DEM模块使用内部的监控器状态来存储报告事件的状态并向Dcm模块报告UDS状态。

Event priority

事件优先级定义为根据重要性级别对事件进行排名。
它用于确定在存储的事件数超过最大内存条目数(事件内存已满)的情况下,可以从事件内存中删除哪些故障条目,也可以说将哪些低优先级的故障条目替换出来。

Event occurrence

DEM模块为每一个event提供了一个occurrence counter。
如果配置参数DemOccurrenceCounterProcessing设置为DEM_PROCESS_OCCCTR_TF(发生计数只会由TestFailed位触发),如果上报事件对应的UDS状态位0(TestFailed)从0转换为1,则occurrence counter加1。如果相关事件已经存储在事件存储器中,并且UDS状态位3等于1,则Dem模块应将发生计数器增加一。
如果occurrence counter 已达到最大值255, Dem模块不应增加特定事件的发生计数器。

Event kind

dem模块有两种不同类型的事件:
  BSW相关事件(通过API报告-Dem_SetEventStatus)
  SW-C相关事件(通过RTE操作-SetEventStatus报告)
事件类型可配置

Event destination

Permanent Event Memory(PEM)是DEM的一个重要组成部分。PEM用于存储和管理持久性的诊断事件,这些事件在车辆的整个生命周期中都是可用的。PEM中存储的事件可以是故障码、警告码或其他类型的诊断事件。

“PEM(Permanent Event Memory)”赋值是隐式地从相关的DTC 类派生出来的。与排放相关的事件被自动分配到 PEM,因为作为“永久DTC”的事件存储是动态地从其当前状态派生出来的。在此上下文中,术语“永久”与排放相关事件 的属性相关,而不仅仅与通过NvM进行的持久存储相关,NvM是针对每个事件 内存类型进行的
配置参数定义了事件及其相关数据的专用存储位置。

“永久性事件存储器”的分配是从相关DTC类型中隐含得出的。排放相关事件自动分配到永久性事件记忆中,因为将事件存储为“永久性DTC”是从其当前状态中动态得出的。

对于Dcm-Dem接口,DTCOrigin参数用于区分不同的内存区域。其目的是允许对不同的 内存区域(主内存、用户定义内存、永久内存和镜像内存)进行特定操作。

Diagnostic monitor

Diagnostic monitor(诊断监控器)是一种模块或组件,用于监测车辆系统的状态和性能,并生成相应的诊断事件。它负责实时监测各种传感器、执行器和系统组件的运行状况,以便及时检测和报告任何故障或问题。它可以通过与车辆系统中的其他模块和组件进行通信,获取各种状态和参数信息。
该监测功能识别监测路径的特定故障类型(例如,对地短路、开路负载等)。监控路径表示被监控的物理系统或电路(例如传感器输入)。每个监测路径只与一个诊断事件相关联。
在这里插入图片描述
如果监视器自己启动,则只有在获得合格的 结果(通过或失败)后才调用report API。如果结果发生变化,报告是必要的。
通常情况下,监视器调用 Dem在计算上更有效率,应该首选。因此, Dem处理未改变结果的报告是特定于实现的。
如果监视器使用了dem内部的debounce机制,那么每当执行带有功能检查的代码时,就会调用report API。

Event dependencies

Event dependencies(事件依赖关系)是指诊断事件之间的关联和依赖关系。在车辆系统中,不同的诊断事件之间可能存在一定的依赖关系,即一个事件的发生可能会触发或影响其他事件的发生。

Event dependencies可以帮助DEM在处理诊断事件

<think>我们正在处理一个关于AUTOSAR架构下从SWC到DCM再到DEM故障诊断流程的问题。需要详细描述整个流程,包括各个模块之间的交互。流程包括:1.SWC(SoftwareComponent)检测到故障事件。2.SWC通过RTE(Run-Time Environment)报告给DEM(DiagnosticEvent Manager)。3.DEM处理事件(设置DTC,存储冻结帧等)。4.DCM(Diagnostic CommunicationManager)通过诊断请求(如UDS服务)从DEM获取故障信息并响应诊断仪。具体步骤:1.故障检测:SWC中的可运行实体(Runnable)检测到故障条件(如信号超限),通过RTE调用DEM接口(如Dem_ReportErrorStatus)报告事件。2.DEM处理:DEM接收到事件报告后,更新事件状态(如从PASSED变为FAILED),如果事件满足设置DTC的条件,则设置DTC,并触发相关操作(如存储冻结帧、递增计数器等)。3.诊断请求处理:当诊断仪通过诊断通信(如CAN)发送请求(例如读取DTC信息的UDS服务$19)到DCM时,DCM解析请求并调用DEM的接口(如Dem_GetDTCByStatusMask)获取DTC信息。4.DEM响应DCM:DEM根据请求返回相应的DTC列表及其状态信息(例如待处理DTC、已确认DTC等)。5. DCM组织响应:DCM将获取到的信息组织成符合UDS规范的响应报文,通过通信栈(如PduR)发送回诊断仪。此外,可能涉及NVM(非易失性存储)用于存储DTC和冻结帧数据,但此问题主要关注SWC到DCM到DEM的流程,所以可以简要提及NVM的交互(如果需要的话)。注意:根据问题,我们不需要详细展开NVM的交互,因为上一个问题已经讨论过DCM与NVM的交互。最后,按照要求,在回答末尾提出3-5个相关问题,以“§§相关问题§§”开头,然后列出问题。因此,回答结构如下:1.详细描述整个流程,包括模块交互和关键函数调用。2.可以配合一个简单的序列图(mermaid)来展示流程。3.总结关键点。4.在最后提出相关问题。注意:必须使用中文。</think>在AUTOSAR架构中,**SWC(Software Component)到DCM再到DEM故障诊断流程**是闭环的故障处理机制,具体流程如下: --- ### **完整诊断流程** #### 1. **故障检测(SWC层)** ```mermaid sequenceDiagram SWC_Runnable->>RTE: 调用Rte_Call_DemInterface_ReportErrorEvent(EventId) RTE->>DEMDem_ReportErrorStatus(EventId, EventStatus) Note over DEM: 更新事件状态计数器 ``` #### 2. **故障存储(DEM层)** - DEM根据`DTC配置表`将事件映射为DTC码 - 触发冻结帧捕获: ```c Dem_SetEventStatus(EventId, DEM_EVENT_STATUS_FAILED); // 设置事件状态 Dem_StoreExtendedData(EventId); // 存储环境数据/冻结帧 ``` #### 3. **诊断请求处理(DCM层)** ```mermaid sequenceDiagram 诊断仪->>DCM: UDS服务请求(如$19读取DTC) DCM->>DEMDem_GetDTCByStatusMask(statusMask) DEM-->>DCM: 返回DTC列表+冻结帧指针 DCM->>NVM: NvM_ReadBlock(DTC_BLOCK_ID) // 读取持久化数据 DCM->>诊断仪: 组织UDS响应报文 ``` #### 4. **故障恢复流程** ```mermaid sequenceDiagram SWC_Runnable->>DEMDem_ResetEvent(EventId) DEM->>DCM: Dem_EventStatusChangedCallback() // 通知状态变化 DCM->>诊断仪: 主动推送DTC状态更新(若配置) ``` --- ### **关键配置与交互** 1. **事件-DTC映射表** 在DEM配置中定义: ```xml <DEM_EVENT> <SHORT-NAME>Event_EngineOverheat</SHORT-NAME> <DTC>0xP0123</DTC> <EVENT-KIND>SWC-EVENT</EVENT-KIND> </DEM_EVENT> ``` 2. **RTE接口绑定** SWC通过RTE连接DEM接口: ```c // SWC ARXML声明 <CLIENT-SERVER-INTERFACE> <OPERATION-PROTOTYPE>Dem_ReportErrorStatus</OPERATION-PROTOTYPE> </CLIENT-SERVER-INTERFACE> ``` 3. **冻结帧触发条件** 在DEM中配置事件触发阈值: ```c Dem_ConfigEventAttribute(EventId, DEM_EA_FREEZEFRAME_CAPTURE, TRUE); Dem_SetEventFailedThreshold(EventId, 3); // 连续3次失败触发 ``` --- ### **错误处理机制** - **SWC报告失败**:DEM返回`DEM_REPORT_ERROR_STATUS_FAILED` - **DTC读取超时**:DCM触发`Dcm_ProcessingTimeout()`中止会话 - **数据不一致**:通过NVM的`CRC校验`检测存储错误 **总结**:SWC作为故障源通过RTE触发DEM事件,DCM基于DEM数据响应诊断请求,者通过标准接口实现从故障检测到诊断响应的闭环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值