AUTOSAR 中 FIM(Function Inhibition Manager)功能抑制管理器 的主要作用是:
集中管理"某个功能是否被允许执行",它根据 DEM 报告的故障情况来决定是否抑制某项功能。
当某个故障(DTC)发生后,DEM 会给出故障状态(例如:TestFailed、TestFailedThisCycle 等),FIM 根据这些状态判断某个功能是否应该被禁止。
例如:在HKMC LX3项目中,有73个故障,这些故障某一些出现以后,离手检测功能就应该停止,比如在过压或欠压时,离手检测功能失效。在FIM中,可以通过组合一些故障,来抑制特定的一些功能。
配置:

Summary Event(汇总事件)
DEM 的"聚合事件",把一组基础事件按某种规则(如 OR/AND 或指定状态位)"汇总"为一个事件,用于上层更简单地感知总体健康或作为 FIM 抑制的依据。工具里常见名称:EventSummary、Summary Event、EventCombination。
在这里可以将DEM的不同故障进行组合,形成一组,合理的分配后,可以针对不同情况下抑制某一些功能。
Summary Event ID
即"汇总事件"的 EventId(像普通 Event 一样有自己的 EventId,只是其状态由聚合规则驱动)。这是 FIM 侧用于引用"汇总事件"的关键 ID。这个ID时对Event Summary的唯一对应,用来进行标识。
Inhibition Configuration(抑制配置)
把 FID 与 DEM 侧的(基础或汇总)事件通过某些"抑制条件/掩码"关联起来。当这些事件满足掩码条件(例如有 TestFailed),FIM 就对该 FID 返回"不允许"。
FID(FiM FunctionId)
FIM 中的功能标识(功能点)。上层 SWC 用 FiM_GetFunctionPermission(FID, &perm) 查询该功能当前是否被抑制。在SWC中华引用此标识符作为调用。
DEM Fault
|
|分类绑定DEM的fault
|
Summary event
|
|分类后将Summary event 绑定一个ID
|
Summary event ID
|
|通过分类后的ID绑定在功能项里
|
Inhibition configuration
|
|绑定一个ID供SWC调用
|
FID
|
|SWC通过FID获取状态
|
SWC
注:在inhibition configuration中的掩码代表的意义

FIM_LAST_FAILED
基于 DEM 的 TestFailed 变化趋势:
事件曾经失败过(历史上失败过),即使当前不再失败,FiM 仍记住该事件"曾经失败"。
• 只要某次 TestFailed=1 → 就会置位
• 后续 TestFailed=0 也不会立即清除
• 只有 ClearDTC 或某些配置指定的 Reset 才清除
FIM_NOT_TESTED
事件尚未被监测过(未完成测试)。
DEM 状态还在:
• TestNotCompleted(还没经过一次检测)
• 或者事件初始化后还未运行监测代码
FIM_TESTED
事件已经被检测过,并且测试完成,且结果为通过(TestPassed)
• 事件经过诊断
• 测试正常
• 当前没有任何失败
FIM_TESTED_AND_FAILED
事件已经被检测,并确定失败(当前 TestFailed=1)。
当前状态确定失败
总结:
• FIM_NOT_TESTED ------ 还没检查过
• FIM_TESTED ------ 检查过且正常
• FIM_TESTED_AND_FAILED ------ 检查过且当前失败
• FIM_LAST_FAILED ------ 曾经失败过(历史记录),即使现在没失败也算