Autosar Dem配置-Condition(TRC)的使用-基于ETAS软件

在AUTOSAR中,为了防止故障误报,每个DTC检测通常需要一个前提条件,即Test Run Criteria (TRC)。本文详细介绍了如何基于ETAS软件配置DEM的EnableCondition和ConditionGroup,以及相关代码实现,包括在DemEventParameter中关联条件组,配置接口,创建R-port,Server Call Points,并在应用SWC中调用函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在车辆工作状态下,每个DTC检测可能都需要一个前提条件,否则如果任何条件下都可以进行DTC检测的话,可能会出现故障误报的情况。这个前提条件又称为Test Run Critieria(TRC).在DEM中,该需求可以由EnableCondition实现。本文介绍基于ETAS软件的相关配置及代码实现。

Dem配置

需要配置DemEnableCondition和DemEnableConditionGroup,在DemGeneral中,然后在对应的DemEventParameter中进行关联

标准中定义的EnableCondition含义如下:
image
当条件满足时,置True,即可以进行DTC的检测(调用Dem_SetEnableCondition函数)
image

DemEnableCondition

DemEnableCondition配置很简单,只有ID和初始状态

DemEnableConditionId

ID不需要配置,生成BSW时会自动生成。使用时,作为参数传递给Dem_SetEnableCondition函数

DemEnableConditionStatus

配置初始时的状态,为TRUE时表示可以进行检测,为False时表示不可以进行检测

示例配置如下:

image

DemEnableConditionGroup

配置条件合集,在Group中关联前面建立的Condition,只有Group中的Condition都为True时,才允许DTC进行检测

示例配置如下:
image

DemEventParameter

在DemEventParameter中关联对应的ConditionGroup,示例配置如下:
image
至此,Dem的配置就完成了,可以生成BSW代码了。

接口配置

生成完BSW代码时,还会更新Dem_Cfg_SWCD.arxml文件,该文件包含Dem的SWC接口,其中会生成EnableCondition对应的P-port(Server接口,提供Dem_SetEnableCondition函数),如下图所示:
image
image
在对应的应用SWC中建立相应的R-port,如下图所示:
image
image
在对应的Runnable中添加Server Call Points,即对应Client的使用,如下图所示:
image
如果我们重新生成SWC的模板文件,则会在对应的Runnable的函数中自动调用对应的函数。

但是一般SWC的模板不会重新生成,我们可以手动在需要的位置加入生成的RTE函数

还需要在Composition中将对应的接口进行mapping
image
然后提取ECU,提取完后可以在FlatView中找到对应的ASC
image
然后就可以生成RTE了

代码实现

生成的RTE接口示例如下:

#define Rte_Call_RPortPrototype_xxx_SetEnableCondition( ConditionFulfilled ) Dem_SetEnableCondition(((VAR(uint8, AUTOMATIC))2), ConditionFulfilled)

实际就是调用的Dem_SetEnableCondition函数,传递的参数一个为ID,一个为TRUE/FALSE

实际在SWC中的使用:

if() /* 增加满足DTC检测的条件 */
{
    	Rte_Call_RPortPrototype_xxx_SetEnableCondition(TRUE);
}
else
{
    	Rte_Call_RPortPrototype_xxx_SetEnableCondition(FALSE);
}

总结

使用EnableCondition可以同时配置多个DTC为同一个条件,也可按故障进行分类,不同类型的故障增加不同的条件,使用起来还是比较灵活的,不需要每个DTC都去单独做判断了。

### ETAS AUTOSAR DEM 模块的配置方法与参数 #### 关于 DEM 的顶层配置 AUTOSAR 中的 Diagnostic Event Manager (DEM) 是用于管理诊断事件的核心模块之一。其顶层配置通常由 `DemGeneral` 和 `DemConfigSet` 组成[^1]。其中,`DemGeneral` 负责存储有关 DEM 的全局配置信息,而 `DemConfigSet` 则包含了针对不同子模块的具体配置。 以下是常见的 DEM 配置项及其功能描述: - **DemGeneral**: 定义了 DEM 的整体行为,例如错误状态管理和日志记录策略。 - **DemConfigSet**: 提供了特定事件的配置选项,允许开发者为不同的诊断事件指定处理逻辑。 ```c typedef struct { uint8 DemMaxNumOfEvents; boolean DemUseNvM; } Dem_ConfigType; const Dem_ConfigType Demo_DemConfiguration = { .DemMaxNumOfEvents = 10, .DemUseNvM = TRUE }; ``` 上述代码片段展示了一个简单的 DEM 配置结构体示例。 #### ID 自动生成功能 在某些情况下,ID 并不需要手动配置。当生成基础软件包(BSW)时,系统会自动分配这些 ID,并通过调用 `Dem_SetEnableCondition` 函数来启用条件判断[^2]。此过程简化了开发者的配置工作量,同时也减少了潜在的人为错误。 #### 报错解决机制 如果在配置过程中遇到问题,可以参考相关文档中的章节说明进行排查。例如,在文章目录中提到的部分章节可能涉及具体问题的解决方案[^3]。这包括但不限于 DCM、DSD 等其他模块之间的交互关系。 #### 扩展数据记录支持 对于更复杂的场景,可以通过扩展数据记录 (`DemExtendedDataRecord`) 来增强诊断能力。这种记录方式允许附加额外的信息到标准事件报告之中[^4]。下面是一个简单实现的例子: ```c void ConfigureExtendedData(Dem_ExtDataIdType ExtDataId, const uint8* DataPtr, uint16 Length) { // 设置扩展数据的内容 } ``` 以上函数可用于初始化或更新某个特定事件关联的数据元素类实例。 --- #### 总结 通过对 DEM 模块的学习可知,合理利用其提供的各种配置工具能够显著提升系统的可维护性和灵活性。无论是基本的功能设定还是高级特性应用都需要紧密结合实际需求来进行调整优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞哥哥s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值