配置对AUTOSAR功能抑制管理器服务的调用
对于AUTOSAR经典平台,AUTOSAR标准将重要服务定义为在AUTOSAR运行时环境(RTE)中运行的基础软件(BSW)的一部分。例如,诊断事件管理器(Dem)、功能抑制管理器(FiM)和NVRAM管理器(NvM)提供的服务。在AUTOSAR RTE中,AUTOSAR软件组件通常使用客户机-服务器或发送方-接收方通信访问BSW服务。
为了支持AUTOSAR组件和服务的系统级建模,AUTOSAR Blockset提供一个AUTOSAR基本软件块库。该库包含预配置的块,用于建模对AUTOSAR BSW服务的组件调用和BSW服务的参考实现。有关使用这些块为对AUTOSAR BSW服务接口的客户机调用建模的信息,请参见模型AUTOSAR基本软件服务调用.
有关模拟AUTOSAR BSW服务的实时脚本示例,请参见示例模拟AUTOSAR基本软件服务和运行时环境而且配置和模拟AUTOSAR功能抑制服务调用.
正如AUTOSAR规范中定义的那样,函数抑制管理器提供了一种控制机制,用于基于具有抑制条件的函数标识符(fid),选择性地抑制(即取消激活)软件组件可运行程序中的函数执行。例如,FID可以表示在发生特定故障时必须停止的功能。
函数抑制管理器与诊断事件管理器密切相关,因为抑制条件可以基于诊断事件的状态。例如,如果向诊断事件管理器报告了传感器故障事件,函数抑制管理器可以抑制相关的函数标识符并停止相应功能的执行。
AUTOSAR Blockset提供FiM和Dem块,允许您查询功能抑制条件的状态,并根据诊断事件状态配置功能抑制标准。
模型功能抑制
AUTOSAR软件组件使用功能抑制来根据诊断事件管理器(Dem)事件的状态来打开或关闭功能。软件组件可以通过允许或阻止相关功能的执行来对事件(例如传感器成功或失败)做出反应。
考虑一个AUTOSAR软件组件模型,其中Dem Set Status块充当组件内新功能的监视器。使用Set Status块传递的Dem事件指示是否发生了传感器故障等情况。事件状态决定了关联的下游函数是否可以继续执行。只有在没有报告失败事件时,函数才会运行。
为组件中的新功能实现函数抑制:
打开AUTOSAR软件组件模型。
打开“设置状态”块对话框。检查客户端端口名称和操作值。确认客户端端口及其客户端接口在AUTOSAR字典中定义。
对新功能进行建模,使其仅在事件状态显示没有传感器故障时执行。这个示例将新功能放在一个已启用的子系统中。
添加一个抑制函数调用者块到模型。打开块对话框并配置块请求
GetFunctionPermission
FiM的操作FunctionInhibition
服务接口。指定客户端端口名称和示例时间。打开代码映射编辑器并单击更新按钮。该软件在AUTOSAR字典中创建指定的客户端端口和接口,并将Get Permission调用程序块映射到指定的AUTOSAR客户端端口和操作。
将Get Permission块连接到包含新功能的子系统的启用端口。块表示对新功能的功能抑制条件的评估。如果功能没有被抑制,因此有权限运行,Get permission块返回true,启用子系统。
这是修改后的软件组件模型。
将软件组件模型放在测试工具中。
在测试工具模型中,为模拟提供Dem Get Status和FiM Get Permission服务的参考实现,添加一个诊断服务组件块。更新模型。
打开诊断服务组件块对话框。要随时刷新对话框中的RTE和FiM表,请更新模型。
在RTE选项卡,为可以触发函数抑制的事件配置事件和函数标识符。在本例中,模型层次结构只包含一个事件端口和一个FID端口,因此RTETAB不需要进一步配置。
如果模型层次结构包含多个Get Permission块的附加端口,并且功能分布在多个组件上,则可以使用RTE选项卡,将端口分配到相同的FID,以对它们进行分组或分离FID,分别对它们进行寻址。有关具有多个端口和分布式功能的功能抑制示例,请参见配置和模拟AUTOSAR功能抑制服务调用.
配置事件和功能标识符后,切换到鱼翅选项卡。在鱼翅选项卡,添加并配置抑制条件,以确定Get Permission块何时允许功能操作。
的鱼翅TAB列出了表示模型层次结构中实现函数抑制的函数的函数标识符。在本例中,模型层次结构包含一个FID。
如果需要为FID添加抑制条件,请选中FID,单击添加抑制条件按钮。在FID下出现了一排抑制条件。
在该行中,选择一个事件ID值(与中列出的事件ID匹配)RTE选项卡)。然后,对于FID和事件ID对,选择一个抑制掩码值。AUTOSAR规范在fiminhibitbitionmask值表中定义掩码值。
在本例中,如果事件ID 1所代表的事件为LAST_FAILED,则FID 1所代表的功能将被抑制。
更新和模拟线束模型。
开发软件组件的下一步步骤包括:
寻址如何触发事件。
添加抑制功能。
有关AUTOSAR功能抑制建模的更大规模示例,请参见配置和模拟AUTOSAR功能抑制服务调用.
操作周期的故障范围
在AUTOSAR软件组件中,操作周期代表汽车周期,如点火周期、动力周期、预热周期或车载诊断(OBD)周期。可以使用诊断事件管理器服务启动、停止或查询一个周期。您可以使用操作周期来确定给定事件是否在给定时间内失败。
操作周期将模拟划分为时间周期,例如一分钟周期。在每个周期中,软件可以检查诊断条件(事件)是否在该周期中被测试(FiM条件),并相应地抑制功能。
BSW正在块DiagnosticOperationCycleCaller支持SetOperationCycleState
而且GetOperationCycleState
服务。组件调用服务来控制组件操作周期,用于将故障范围限定在一个时间段内。调用SetOperationCycleState
使用值Dem_OperationCycleStateType。DEM_CYCLE_STATE_START启动一个操作周期。传入值Dem_OperationCycleStateType。DEM_CYCLE_STATE_END结束一个操作周期。调用GetOperationCycleState
查询操作周期的当前状态。
的示例使用DiagnosticOperationCycleCaller块和SetOperationCycleState
服务,请参阅配置和模拟AUTOSAR功能抑制服务调用.
控制功能的可用性在故障或测试
功能抑制管理器支持抑制标准,以限制功能块的执行,直到逻辑和功能前任运行完,或限制安全系统的执行,直到验证故障。但是,您可以独立于抑制标准来限制功能的使用。例如,传感器组件可以在故障或测试其他系统功能期间禁用其传感器数据的读取。
BSW正在块控制功能支持SetFunctionAvailable
服务,它提供了一种抑制特定功能的细粒度机制。一个组件使用SetFunctionAvailable
输入信号值为false来抑制相关的功能,因此该功能的Get Permission块返回0。在本例中,传感器监视器使用SetFunctionAvailable
通知中央监视器组件传感器测量是否可用。
中央监视器使用抑制函数调用者块和GetFunctionPermission
服务来决定是否考虑来自每个传感器的测量。中央监视器的Get Permission块与传感器的数量一样多。
的鱼翅选项卡的诊断服务组件Block配置失败事件的详细信息。如果函数可用,则鱼翅标签ID和掩码设置控制功能抑制。如果一个函数不可用,GetFunctionPermission
总是返回false。
为功能抑制配置服务调用
作为实现功能抑制的一部分,您需要在AUTOSAR软件组件中配置对fim相关服务接口的客户机调用。下面是一个配置客户机调用以查询函数抑制条件状态的示例。
打开为AUTOSAR代码生成配置的模型。本例使用示例模型
autosar_bsw_fimmonitor
,它与示例相关配置和模拟AUTOSAR功能抑制服务调用.使用库浏览器或在模型窗口中输入块名称,添加FiM块抑制函数调用者到模型中。对于本例的目的,将块输出连接到《终结者》块。
打开新块并检查参数。对于FiM服务调用,客户端端口名称是
FiM_FunctionInhibition
和操作是GetFunctionPermission
.集样品时间来0.005
,与另一个相匹配GetFunctionPermission
模型中的调用者块。打开代码映射编辑器。更新Simulink®以AUTOSAR映射的模型与Simulink函数的更改调用者,单击更新按钮.该软件创建AUTOSAR客户端服务接口、操作和端口,并将每个Simulink函数调用者映射到AUTOSAR客户端端口和操作。
例如,对于抑制函数调用者块,其中
GetFunctionPermission
选择操作:软件创建C-S接口
FiM_FunctionInhibition
,在FiM_FunctionInhibition
,其支持的操作,GetFunctionPermission
.操作参数提供只读属性。在AUTOSAR字典中,下面是FiM_FunctionInhibition
操作GetFunctionPermission
.软件会使用默认名称创建一个客户端端口
FiM_FunctionInhibition
.与c - s接口、操作和参数名不同,客户端端口名可以自定义。客户端端口映射到FiM_FunctionInhibition
接口。代码映射编辑器映射抑制函数调用者函数调用程序块到AUTOSAR客户端端口
FiM_FunctionInhibition
和AUTOSAR操作GetFunctionPermission
.
可以选择构建组件模型并检查生成的C和ARXML代码。C代码包括对BSW服务的客户端调用,例如:
/* FunctionCaller: '
/Function inhibittioncaller ' */ rte_call_fim_functioninhibittion_getfunctionpermission (& rtb_functioninhibittioncaller_o1); 生成的RTE包含文件定义服务器操作调用点,例如
Rte_Call_FiM_FunctionInhibition_GetFunctionPermission
.ARXML代码将组件调用的BSW服务操作定义为服务器调用点,例如:
< SERVER-CALL-POINTS > < SYNCHRONOUS-SERVER-CALL-POINT UUID = "……">
SC_FiM_Function_60fb8d34c7807f7b /ThrottlePositionMonitorCompo_pkg/ThrottlePositionMonitorCompo_swc /ThrottlePositionMonitor/FiM_FunctionInhibition AUTOSAR /服务/鳍/ FiM_FunctionInhibition / GetFunctionPermission target-required-operation-ref > operation-iref > < timeout > 1.0e-06 timeout > synchronize - server - call - point >…< / SERVER-CALL-POINTS > 要模拟组件模型,请创建包含组件、系统或测试工具的模型。在该包含模型中,插入FiM的引用实现
GetFunctionPermission
服务操作。AUTOSAR基本软件块库提供了一个诊断服务组件块,提供Dem和FiM服务操作的参考实现。您可以手动将该块插入到包含该块的组合、系统或管理模型中,或者通过创建仿真软件测试™利用模型。
有关更多信息,请参见为仿真配置AUTOSAR基本软件服务实现.
例子配置和模拟AUTOSAR功能抑制服务调用提供了一组示例模型,它们共同说明了实现函数抑制的关键方面,包括:
查询抑制条件的状态(
FunctionInhibition
操作GetFunctionPermission
).根据事件状态配置抑制标准(诊断服务组件块对话框中,RTE而且鱼翅选项卡)。
定义操作周期,将故障范围限定在一个时间段(Dem
OperationCycle
操作SetOperationCycleState
).
另请参阅
抑制函数调用者|控制功能|DiagnosticOperationCycleCaller|诊断服务组件
相关的例子
- 配置对AUTOSAR诊断事件管理器服务的调用
- 为仿真配置AUTOSAR基本软件服务实现
- 模拟AUTOSAR基本软件服务和运行时环境
- 配置和模拟AUTOSAR功能抑制服务调用
- 配置AUTOSAR客户端-服务器通信