当前位置: 首页 > news >正文

娄底网站设计静态网页设计实训心得

娄底网站设计,静态网页设计实训心得,wordpress用户投稿插件,上海网站设计开发公司AUTOSAR Function Inhibition Manager 详解 基于AUTOSAR 4.4.0规范的功能抑制管理器架构与实现分析目录 概述模块架构分析配置模型详解操作序列分析状态机机制总结 1. 概述 Function Inhibition Manager (FiM) 是AUTOSAR Classic Platform中的重要服务模块,负责提…

AUTOSAR Function Inhibition Manager 详解

基于AUTOSAR 4.4.0规范的功能抑制管理器架构与实现分析

目录

  1. 概述
  2. 模块架构分析
  3. 配置模型详解
  4. 操作序列分析
  5. 状态机机制
  6. 总结

1. 概述

Function Inhibition Manager (FiM) 是AUTOSAR Classic Platform中的重要服务模块,负责提供软件组件和基础软件模块的功能控制机制。FiM通过与诊断事件管理器(Dem)的协作,基于诊断事件状态来控制功能的执行权限,实现故障情况下的功能抑制和系统保护。

1.1 FiM的作用

  • 功能权限管理:为软件组件提供功能执行权限查询服务
  • 诊断事件响应:基于诊断事件状态动态调整功能权限
  • 故障安全机制:在检测到故障时及时抑制相关功能,防止系统进一步损坏
  • 配置化控制:通过配置定义功能与诊断事件的关联关系

1.2 核心概念

  • FID (Function Identifier):功能标识符,用于唯一标识一个可控制的功能
  • 抑制条件:定义何时需要抑制功能执行的条件,通常基于诊断事件状态
  • 权限状态:功能当前是否被允许执行的状态(TRUE/FALSE)
  • 抑制掩码:定义诊断事件的哪些状态会触发功能抑制

2. 模块架构分析

在这里插入图片描述

2.1 架构组件解释

应用层组件

SW-Components (软件组件)

  • 功能:应用层软件组件,包含业务逻辑功能
  • 职责:
    • 在执行关键功能前查询FiM获取执行权限
    • 根据权限状态决定是否执行功能
    • 可选择性地设置功能的可用性状态
  • 与FiM的交互:
    • 调用FiM_GetFunctionPermission()查询功能权限
    • 调用FiM_SetFunctionAvailable()设置功能可用性

BSW Modules (基础软件模块)

  • 功能:系统级基础软件模块
  • 职责:
    • 与SW-C类似,需要查询功能执行权限
    • 实现系统级功能的抑制控制
  • 接口:使用与SW-C相同的FiM接口
服务层核心组件

Function Inhibition Manager (FiM)

  • 功能:功能抑制管理器核心模块
  • 主要子组件:
    • 权限状态计算:基于诊断事件状态和抑制配置计算功能权限
    • 抑制配置管理:管理FID与诊断事件的映射关系
    • FID权限查询:处理来自SW-C和BSW的权限查询请求
诊断层组件

Diagnostic Event Manager (Dem)

  • 功能:诊断事件管理器
  • 职责:
    • 监控系统中的诊断事件状态
    • 向FiM通知监控状态变化
    • 提供诊断事件和组件的状态查询接口
  • 与FiM的交互:
    • 调用FiM_DemTriggerOnMonitorStatus()通知状态变化
    • 提供Dem_GetMonitorStatus()接口供FiM查询状态
系统管理层组件

ECU State Manager (EcuM)

  • 功能:ECU状态管理器
  • 职责:负责FiM模块的初始化和生命周期管理
  • 初始化序列:调用FiM_Init()FiM_DemInit()

Runtime Environment (RTE)

  • 功能:运行时环境
  • 职责:
    • 为FiM提供调度服务
    • 管理FiM与其他模块间的接口通信
    • 处理端口定义的参数值映射

2.2 接口关系

FiM API接口

  • FiM_GetFunctionPermission(FID, Permission*): 查询功能权限
  • FiM_SetFunctionAvailable(FID, Availability): 设置功能可用性

Dem API接口

  • FiM_DemTriggerOnMonitorStatus(EventId): 监控状态变化通知
  • FiM_DemTriggerOnComponentStatus(ComponentId, Status): 组件状态变化通知

初始化接口

  • FiM_Init(ConfigPtr): FiM模块初始化
  • FiM_DemInit(): FiM与Dem协作初始化

2.3 数据流向

  1. 向下数据流:SW-C/BSW → FiM → Dem

    • 权限查询请求传递到FiM
    • FiM向Dem查询诊断事件状态
  2. 向上数据流:Dem → FiM → SW-C/BSW

    • Dem通知FiM状态变化
    • FiM计算并返回权限状态给调用者
  3. 横向数据流:EcuM ↔ RTE ↔ FiM

    • 系统管理和调度协调

2.4 架构特点

  • 分层设计:清晰的分层架构,职责分离
  • 接口标准化:使用AUTOSAR标准接口,确保互操作性
  • 配置驱动:通过配置定义行为,提高灵活性
  • 实时响应:支持同步权限查询,满足实时性要求

2.5 代码示例

/* AUTOSAR FiM架构相关的接口定义 *//* SW-C查询功能权限示例 */
Std_ReturnType Application_CheckPermissionAndExecute(void)
{boolean permission;Std_ReturnType result;/* 查询功能权限 */result = FiM_GetFunctionPermission(FID_CRITICAL_FUNCTION, &permission);if (result == E_OK) {if (permission == TRUE) {/* 权限允许,执行功能 */return ExecuteCriticalFunction();} else {/* 权限被拒绝,跳过功能执行 */return E_NOT_OK;}} else {/* FiM未初始化或其他错误 */return E_NOT_OK;}
}/* FiM内部权限计算示例 */
static boolean FiM_Internal_CalculatePermission(uint16 FID)
{uint16 inhibitionCounter = 0;uint16 eventIndex;Dem_MonitorStatusType monitorStatus;Std_ReturnType demResult;/* 遍历与此FID关联的所有事件 */for (eventIndex = 0; eventIndex < FiM_Config[FID].NumEvents; eventIndex++) {/* 获取事件的监控状态 */demResult = Dem_GetMonitorStatus(FiM_Config[FID].EventList[eventIndex].EventId,&monitorStatus);if (demResult == E_OK) {/* 应用抑制掩码检查 */if ((monitorStatus & FiM_Config[FID].EventList[eventIndex].InhibitionMask) != 0) {inhibitionCounter++;}}}/* 如果有任何抑制条件激活,则拒绝权限 */return (inhibitionCounter == 0) ? TRUE : FALSE;
}/* Dem通知FiM状态变化示例 */
void FiM_DemTriggerOnMonitorStatus(Dem_EventIdType EventId)
{uint16 fidIndex;/* 开发错误检测 */if (FiM_InitStatus != FIM_INITIALIZED) {Det_ReportError(FIM_MODULE_ID, 0, FIM_DEMTRIGGERONMONITORSTATUS_ID, FIM_E_UNINIT);return;}/* 查找受此事件影响的所有FID */for (fidIndex = 0; fidIndex < FIM_MAX_FIDS; fidIndex++) {if (FiM_Internal_IsEventAssociatedWithFID(EventId, fidIndex)) {/* 重新计算此FID的权限状态 */FiM_PermissionStatus[fidIndex] = FiM_Internal_CalculatePermission(fidIndex);}}
}

3. 配置模型详解

在这里插入图片描述

3.1 配置容器层次结构

FiM主容器

FiM模块容器

  • 功能:FiM模块的根配置容器
  • 关键属性:
    • 模块名称:固定为"FiM"
    • 支持变体:VARIANT-POST-BUILD(后构建变体)和VARIANT-PRE-COMPILE(预编译变体)
    • 后构建变体支持:允许在ECU集成时修改配置
  • 包含子容器:FiMGeneral和FiMConfigSet
FiMGeneral通用配置

FiMGeneral容器

  • 功能:定义FiM模块的通用行为参数
  • 关键配置参数:
    • FiMAvailabilitySupport
      • 描述:是否支持功能可用性控制
      • 类型:Boolean
      • 影响:启用时支持FiM_SetFunctionAvailable()API
    • FiMVersionInfoApi
      • 描述:是否提供版本信息API
      • 类型:Boolean
      • 影响:启用时提供FiM_GetVersionInfo()API
    • FiMDevErrorDetect
      • 描述:是否启用开发错误检测
      • 类型:Boolean
      • 影响:启用时进行参数检查和错误报告
    • FiMMainFunctionPeriod
      • 描述:主函数调用周期(秒)
      • 类型:Float [0.0…∞]
      • 用途:定义FiM_MainFunction()的调用间隔
    • FiMEventUpdateTriggeredByDem
      • 描述:事件更新是否由Dem触发
      • 类型:Boolean
      • TRUE:Dem主动通知状态变化
      • FALSE:FiM周期性轮询状态
FiMConfigSet配置集

FiMConfigSet容器

  • 功能:包含具体的FiM配置数据
  • 特点:支持多配置集,允许不同的配置变体
  • 包含元素:FiMFID、FiMInhibitionConfiguration、FiMSummaryEvent

3.2 核心配置类解释

FiMFID功能标识符

FiMFID类

  • 功能:定义系统中的功能标识符
  • 关键属性:
    • FiMFunctionId
      • 描述:功能的唯一数字标识符
      • 类型:Integer
      • 取值范围:1-65535 (0表示无功能)
      • 约束:在同一FiM实例中必须唯一
    • 功能标识符名称
      • 描述:功能的可读名称
      • 类型:String
      • 用途:配置工具中的显示和文档
    • 功能描述
      • 描述:功能的详细说明
      • 类型:String
      • 用途:帮助理解功能用途
FiMInhibitionConfiguration抑制配置

FiMInhibitionConfiguration类

  • 功能:定义FID与诊断事件的关联关系
  • 关键属性:
    • FiMInhibitionMask
      • 描述:抑制掩码,定义触发抑制的事件状态
      • 类型:FiMInhibitionMaskType
      • 可能值:TestFailed、Tested、NotTested的组合
    • 配置标识符
      • 描述:抑制配置的唯一标识
      • 类型:Integer
      • 用途:内部管理和引用
  • 引用关系:
    • 引用FiMFID:指定被控制的功能
    • 引用DemEvent:指定监控的诊断事件
    • 引用DemComponent:指定监控的诊断组件
    • 引用FiMSummaryEvent:指定监控的汇总事件
FiMSummaryEvent汇总事件

FiMSummaryEvent类

  • 功能:将多个诊断事件组合成一个逻辑单元
  • 关键属性:
    • 汇总事件名称
      • 描述:汇总事件的名称
      • 类型:String
      • 用途:配置中的标识
    • 事件组描述
      • 描述:说明包含的事件类型
      • 类型:String
      • 用途:文档和理解
    • 最大输入事件数
      • 描述:此汇总事件可包含的最大事件数
      • 类型:Integer
      • 约束:配置验证时使用
  • 包含关系:包含多个DemEvent作为输入事件

3.3 数据类型定义

FiM_ConfigType配置类型

FiM_ConfigType结构

  • 功能:FiM模块的配置数据结构
  • 关键属性:
    • 配置数据指针:指向实际配置数据的指针
    • 初始化标志:标识配置是否有效
    • 配置版本:配置数据的版本信息
  • 用途:在FiM_Init()时传递配置信息
FiM_FunctionIdType功能ID类型

FiM_FunctionIdType类型

  • 功能:定义功能标识符的数据类型
  • 类型选择:
    • uint8:支持1-255个功能
    • uint16:支持1-65535个功能
  • 取值范围:根据系统复杂度选择
  • 约束:0值保留,表示无效功能
FiMInhibitionMaskType抑制掩码类型

FiMInhibitionMaskType结构

  • 功能:定义抑制掩码的位字段
  • 关键位字段:
    • 测试失败位:事件测试失败时触发抑制
    • 测试完成位:事件测试完成时触发抑制
    • 测试未完成位:事件未测试时触发抑制
  • 掩码值:位字段的组合值
  • 逻辑:当事件状态与掩码匹配时,触发功能抑制

3.4 配置关系

包含关系
  1. FiM → FiMGeneral:FiM模块包含一个通用配置
  2. FiM → FiMConfigSet:FiM模块包含一个或多个配置集
  3. FiMConfigSet → FiMFID:配置集包含多个功能标识符
  4. FiMConfigSet → FiMInhibitionConfiguration:配置集包含多个抑制配置
  5. FiMSummaryEvent → DemEvent:汇总事件包含多个输入事件
引用关系
  1. FiMInhibitionConfiguration → FiMFID:抑制配置引用目标功能
  2. FiMInhibitionConfiguration → DemEvent:抑制配置引用监控事件
  3. FiMInhibitionConfiguration → DemComponent:抑制配置引用监控组件
  4. FiMInhibitionConfiguration → FiMSummaryEvent:抑制配置引用汇总事件
类型使用关系
  1. FiMFID → FiMFunctionIdType:功能标识符使用功能ID类型
  2. FiMInhibitionConfiguration → FiMInhibitionMaskType:抑制配置使用掩码类型

3.5 配置约束

必选配置约束
  • 每个FiMInhibitionConfiguration必须至少引用以下之一:
    • FiMInhEventRef(事件引用)
    • FiMInhComponentRef(组件引用)
    • FiMInhSumRef(汇总事件引用)
唯一性约束
  • FiMFunctionId在同一FiM实例中必须唯一
  • 配置标识符在同一配置集中必须唯一
数量约束
  • 最大抑制配置数:FiMMaxFiMInhibitionConfigurations
  • 每个FID最大事件数:FiMMaxEventsPerFidInhibitionConfiguration
  • 每个FID最大汇总事件数:FiMMaxSumEventsPerFidInhibitionConfiguration

3.6 代码示例

/* AUTOSAR FiM配置相关的数据结构定义 *//* 功能标识符类型定义 */
typedef uint16 FiM_FunctionIdType;  /* 支持65535个功能 *//* 抑制掩码类型定义 */
typedef struct {uint8 TestFailedBit     : 1;    /* 测试失败位 */uint8 TestedBit         : 1;    /* 已测试位 */uint8 NotTestedBit      : 1;    /* 未测试位 */uint8 Reserved          : 5;    /* 保留位 */
} FiMInhibitionMaskType;/* 抑制配置结构 */
typedef struct {FiM_FunctionIdType FunctionId;              /* 目标功能ID */Dem_EventIdType EventId;                    /* 关联的诊断事件ID */FiMInhibitionMaskType InhibitionMask;       /* 抑制掩码 */
} FiMInhibitionConfigType;/* FID配置结构 */
typedef struct {FiM_FunctionIdType FunctionId;              /* 功能ID */uint8 NumInhibitionConfigs;                 /* 抑制配置数量 */const FiMInhibitionConfigType* InhibitionConfigs; /* 抑制配置数组 */
} FiMFIDConfigType;/* FiM总配置结构 */
typedef struct {uint16 NumFIDs;                             /* FID总数 */const FiMFIDConfigType* FIDConfigs;         /* FID配置数组 */boolean AvailabilitySupport;                /* 可用性支持 */boolean DevErrorDetect;                     /* 开发错误检测 */boolean EventUpdateTriggeredByDem;          /* Dem触发更新 */
} FiM_ConfigType;/* 配置实例示例 */
static const FiMInhibitionConfigType FID_CriticalFunction_InhibitionConfigs[] = {{.FunctionId = FID_CRITICAL_FUNCTION,.EventId = DEM_EVENT_SENSOR_FAILURE,.InhibitionMask = {.TestFailedBit = 1,     /* 测试失败时抑制 */.TestedBit = 0,         /* 测试完成时不抑制 */.NotTestedBit = 0       /* 未测试时不抑制 */}},{.FunctionId = FID_CRITICAL_FUNCTION,.EventId = DEM_EVENT_ACTUATOR_FAILURE,.InhibitionMask = {.TestFailedBit = 1,     /* 测试失败时抑制 */.TestedBit = 0,.NotTestedBit = 1       /* 未测试时也抑制 */}}
};static const FiMFIDConfigType FiM_FIDConfigs[] = {{.FunctionId = FID_CRITICAL_FUNCTION,.NumInhibitionConfigs = 2,.InhibitionConfigs = FID_CriticalFunction_InhibitionConfigs}
};const FiM_ConfigType FiM_Config = {.NumFIDs = 1,.FIDConfigs = FiM_FIDConfigs,.AvailabilitySupport = TRUE,.DevErrorDetect = TRUE,.EventUpdateTriggeredByDem = TRUE
};/* 配置访问函数示例 */
static const FiMFIDConfigType* FiM_GetFIDConfig(FiM_FunctionIdType FID)
{uint16 index;for (index = 0; index < FiM_Config.NumFIDs; index++) {if (FiM_Config.FIDConfigs[index].FunctionId == FID) {return &FiM_Config.FIDConfigs[index];}}return NULL;  /* FID未找到 */
}/* 抑制掩码检查函数示例 */
static boolean FiM_CheckInhibitionMask(const FiMInhibitionMaskType* mask,Dem_MonitorStatusType monitorStatus
)
{boolean inhibit = FALSE;/* 检查测试失败位 */if ((mask->TestFailedBit == 1) && ((monitorStatus & DEM_MONITOR_STATUS_TF) != 0)) {inhibit = TRUE;}/* 检查已测试位 */if ((mask->TestedBit == 1) && ((monitorStatus & DEM_MONITOR_STATUS_TNCTOC) == 0)) {inhibit = TRUE;}/* 检查未测试位 */if ((mask->NotTestedBit == 1) && ((monitorStatus & DEM_MONITOR_STATUS_TNCTOC) != 0)) {inhibit = TRUE;}return inhibit;
}

4. 操作序列分析

在这里插入图片描述

4.1 关键函数详解

FiM_GetFunctionPermission函数

函数签名

Std_ReturnType FiM_GetFunctionPermission(FiM_FunctionIdType FID,boolean* Permission
)

描述:查询指定功能的执行权限状态
参数

  • FID(输入):功能标识符,取值范围1-65535
  • Permission(输出):权限状态指针,TRUE表示允许执行,FALSE表示禁止执行
    返回值
  • E_OK:请求成功处理
  • E_NOT_OK:请求失败(如FiM未初始化)
    相关函数
  • 上层:被SW-C和BSW模块调用
  • 下层:可能调用Dem_GetMonitorStatus查询状态
  • 并列:与FiM_SetFunctionAvailable功能相关

5. 状态机机制

5.1 FiM模块状态机

未初始化状态

状态特征

  • 含义:FiM模块尚未进行任何初始化
  • 特征:
    • 静态状态变量为0
    • 所有内部数据结构未初始化
    • 内存分配未完成
  • 进入条件:系统启动或模块复位后的初始状态
  • 退出条件:调用FiM_Init()函数
完全初始化状态

状态特征

  • 含义:FiM完全初始化,所有功能可用
  • 特征:
    • 与Dem的协作关系已建立
    • 初始权限状态已计算
    • 所有配置验证完成
    • 准备处理运行时请求
  • 进入条件:FiM_DemInit()调用成功且权限状态计算完成
  • 退出条件:ECU关闭

5.2 FID权限状态机

权限允许状态

状态特征

  • 含义:功能被允许执行
  • 特征:
    • Permission = TRUE
    • 无激活的抑制条件
    • 功能可以正常执行
  • 进入条件:所有关联的诊断事件状态都不匹配抑制掩码
  • 退出条件:至少一个关联事件状态匹配抑制掩码,或被强制设置为不可用
权限拒绝状态

状态特征

  • 含义:功能被禁止执行
  • 特征:
    • Permission = FALSE
    • 存在激活的抑制条件
    • 功能不能执行
  • 进入条件:至少一个关联的诊断事件状态匹配抑制掩码
  • 退出条件:所有抑制条件解除(事件状态不再匹配掩码)

6. 总结

6.1 AUTOSAR Function Inhibition Manager 的优势

系统安全性

  • 提供基于诊断事件的功能抑制机制,在检测到故障时及时阻止危险功能的执行
  • 支持多层次的抑制条件配置,可以根据不同的故障严重程度采取相应的抑制策略
  • 实现故障安全(Fail-Safe)设计理念,确保系统在异常情况下的安全运行

架构灵活性

  • 配置驱动的设计允许在不修改代码的情况下调整抑制策略
  • 支持后构建配置变体,可以在ECU集成阶段根据具体需求调整配置
  • 模块化设计便于与其他AUTOSAR模块集成和协作

实时性能

  • 支持同步权限查询,满足实时系统的响应时间要求
  • 提供两种更新模式(Dem触发和周期性轮询),可根据系统需求选择合适的方式
  • 优化的数据结构设计确保高效的权限状态计算和查询

6.2 典型应用场景

汽车动力系统

  • 在检测到发动机传感器故障时,抑制相关的动力输出功能
  • 基于冷却系统状态控制发动机保护功能
  • 根据燃油系统诊断结果管理燃油喷射策略

底盘控制系统

  • 制动系统故障时抑制自动驾驶功能
  • 转向系统异常时限制车辆稳定性控制功能
  • 轮胎压力监测异常时调整牵引力控制策略

安全关键系统

  • 气囊系统自检异常时抑制相关安全功能
  • 防盗系统故障时限制车辆启动功能
  • 紧急制动系统异常时激活替代安全措施

6.3 实施建议

配置设计

  • 合理规划FID的分配,确保功能标识符的唯一性和可扩展性
  • 仔细设计抑制掩码,平衡安全性和可用性需求
  • 充分利用汇总事件机制简化复杂的事件关联关系

性能优化

  • 根据系统实时性要求选择合适的更新模式
  • 优化抑制配置的数量和复杂度,避免过度的计算开销
  • 考虑使用缓存机制提高频繁查询的FID的响应速度

测试验证

  • 建立完整的测试用例覆盖所有抑制条件和状态转换
  • 进行故障注入测试验证抑制机制的有效性
  • 测试不同负载条件下的系统性能表现

通过合理的设计和实施,AUTOSAR Function Inhibition Manager 能够为汽车电子系统提供可靠的功能安全保障,确保车辆在各种工况下的安全稳定运行。


http://www.dtcms.com/a/463624.html

相关文章:

  • 网站特色分析wordpress自动播放音乐插件
  • 教育网站首页源代码珠海网站设计公司
  • 影视自助建站系统源码网站建设与
  • 网站301了不知道在哪做的百度号码认证平台首页
  • 邯郸网站建设唯辛ls15227用织梦系统做网站
  • 自助创建网站备案网站主办者承诺书
  • 成都网站建设公司有哪些天津建设工程评标专家信息网
  • 网站项目设计说明书oa系统登录
  • 网页设计规划书3000字做网络优化哪家公司比较好
  • 做网站用什么后缀好荥阳网页设计
  • wordpress维基模板seo常见优化技术
  • Microsoft.NET安装步骤详解(.NET Framework/.NET 6/7/8安装教程)​
  • 如何做网站互链规则汉堡只做网站
  • 网站建设设计师扁平化网站设计趋势
  • 宽城区建设局网站官网怎么推广
  • 株洲做网站需要多少钱市场调研公司排名
  • 站长之家域名查询官网宝安做棋牌网站建设哪家公司便宜
  • 响应式网站实例宁波企业做网站
  • 合肥城乡建设网站百度热议排名软件
  • 北碚网站建设大理网站建设沛宣
  • 网站建设网站建设公司制作网站首页分为哪几部分
  • dede自定义网站地图工信部网站备案规定
  • 公司网站里面页面链接怎么做温州网站建设模板
  • Linux -- 信号【下】
  • 网站引导页下载互联网舆情监控系统
  • 如何做网站链接分析一站式网站开发服务平台
  • 【Spring Boot】Spring Boot 中常见的加密方案
  • 昭通网站seo团队拓展
  • 卡盟网站建设公司高清品牌网站设计建设
  • 网站模板的制作怎么做北京朝阳区哪里有网站开发