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