模拟AUTOSAR基本软件服务和运行时环境
通过使用参考实现模拟AUTOSAR组件对基本软件内存和诊断服务的调用。
配置对AUTOSAR基本软件服务的呼叫
AUTOSAR标准定义了在AUTOSAR运行时环境中运行的基本软件(BSW)服务。服务包括NvM (NVRAM Manager)、Dem (Diagnostic Event Manager)和FiM (Function Inhibition Manager)服务。在AUTOSAR运行时环境中,AUTOSAR软件组件通常使用客户机-服务器或发送方-接收方通信访问BSW服务。
在AUTOSAR软件组件模型中,要实现对NvM、Dem和FiM服务接口的客户端调用,需要拖放预配置的NvM、Dem和FiM调用方块。每个块都有预先填充的参数,例如客户端端口名称而且操作.例如,您可以配置块参数,以选择要调用的服务操作。要在AUTOSAR软件组件中配置添加的调用方块,需要同步模型。该软件创建AUTOSAR客户端-服务接口、操作和端口,并将每个Simulink函数调用映射到AUTOSAR客户端端口和操作。金宝app有关更多信息,请参见配置对AUTOSAR NVRAM管理服务的调用,配置对AUTOSAR诊断事件管理服务的调用,配置对AUTOSAR函数抑制管理服务的调用.
这里是一个油门位置集成模型,它集成了两个油门位置传感器组件和一个油门位置监控器组件。传感器组件获取原始油门位置传感器(TPS)值,并将其转换为TPS百分比值。监控器组件获取主要和次要传感器组件提供的TPS百分比值,并决定通过哪个TPS信号。传感器组件调用BSW NvM和Dem服务,监视器组件调用BSW Dem服务。
open_system (“autosar_bsw_presim”);
传感器组件autosar_bsw_sensor1
而且autosar_bsw_sensor2
每个都包含一个Initialize Function块,用于调用NvM服务接口NvMService
.调用是使用基本软件库块实现的NvMServiceCaller.每个块都配置为调用NvMService
操作ReadBlock
.的ReadBlock
调用使用客户端端口S1LowSetPoint
而且S2LowSetPoint
.这里是初始化函数块autosar_bsw_sensor1
.
下面是NvMServiceCaller块对话框ReadBlock
调用初始化函数块。有关更多信息,请参见NvMServiceCaller.
传感器组件autosar_bsw_sensor1
而且autosar_bsw_sensor2
每个都包含两个对Dem服务接口的调用DiagnosticMonitor
.这两个调用都是使用基本软件库块实现的DiagnosticMonitorCaller.每个块都配置为调用DiagnosticMonitor
操作SetEventStatus
.的SetEventStatus
调用使用客户端端口S1StuckLow
,S1StuckHigh
,S2StuckLow
,S2StuckHigh
.
对象的DiagnosticMonitorCaller块对话框StuckLow
调用第一个传感器组件。有关更多信息,请参见DiagnosticMonitorCaller.
监控组件autosar_bsw_monitor
包含对Dem服务接口的调用DiagnosticMonitor
以及对Dem服务接口的四次调用DiagnosticInfo
.
在传感器组件中,a
DiagnosticMonitorCaller
块实现DiagnosticMonitor
调用,并将其配置为调用SetEventStatus
操作。客户端端口名称为TPS
.这四个
DiagnosticInfo
调用使用基本软件库块实现DiagnosticInfoCaller.每个块都配置为调用DiagnosticInfo
操作GetEventFailed
.的GetEventFailed
调用使用客户端端口TPS1StuckLow
,TPS1StuckHigh
,TPS2StuckLow
,TPS2StuckHigh
.
这是DiagnosticinfoCaller
控件的块对话框TPS1StuckLow
调用。有关更多信息,请参见DiagnosticInfoCaller.
如果您有Simulink金宝app Coder和Embedded Coder软件,您可以为NvM和Dem服务调用生成C代码并导出ARXML描述。打开并构建每个组件模型。例如,建立模型autosar_bsw_monitor
,打开模型。新闻Ctrl + B或输入MATLAB命令slbuild(“autosar_bsw_monitor”)
.
要查看模型构建的结果,请检查代码生成报告。
配置AUTOSAR仿真基本软件服务参考实现
若要模拟调用BSW服务的AUTOSAR组件模型,请创建包含组合、系统或集合模型。在该包含模型中,提供组件调用的NvM、Dem和FiM服务操作的参考实现。
AUTOSAR基本软件块库包括一个NVRAM业务组件Block和a诊断服务组件块。这些块提供了NvM、Dem和FiM服务操作的参考实现。为了支金宝app持对NvM、Dem和FiM服务的组件调用的模拟,在包含模型中包含这些块。你可以用以下两种方式插入这些块:
通过创建一个Simulink Test集合模型自动插入块金宝app
手动将块插入到包含的组合、系统或集合模型中
要为调用BSW NvM、Dem和FiM服务的模型自动插入服务组件块,请打开模型(或包含模型)并创建一个Simulink Test测试工具(需要Simulink Test)。金宝app有关更多信息,请参见创建一个测试工具(金宝app仿真软件测试).创建测试工具将编译模型,添加Service Component块,并创建模拟所需的端口和其他元素。
本例手动为NvM和Dem服务调用插入服务组件块。打开集成模型autosar_bsw_presim
.使用库浏览器或add_block
命令,或通过在模型窗口中键入块名称,将NVRAM和诊断服务组件块添加到模型中。
open_system (“autosar_bsw_presim”);add_block ('autosarlibnvm/NVRAM服务组件','autosar_bsw_presim/NVRAM服务组件');add_block (autosarlibdem/诊断服务组件,'autosar_bsw_presim/诊断服务组件');set_param (“autosar_bsw_presim”,“SimulationCommand”,“更新”);
NVRAM服务组件块具有预填充的参数,包括运行时环境(RTE)参数和NVRAM属性参数。根据您使用NvM服务操作的方式,检查参数设置并考虑是否需要修改。有关更多信息,请参见NVRAM业务组件.
RTE页签列出了组件客户端端口及其与NvM服务块id的对应关系。表中的每一行表示从Basic Software调用方块对NvM服务的调用。作用于同一个NvM块的调用通常使用相同的块ID。这个例子映射了NvMReadBlock
客户端端口到不同的块id。
“初始值”选项卡表列出组件客户端端口及其用于模拟的初始值。默认初始值为0。
诊断服务组件块具有预填充的参数,包括RTE参数和DemCounter-Based消除抖动参数。根据您使用Dem服务操作的方式,检查参数设置并考虑是否需要修改。
的Counter-Based消除抖动参数控制Dem服务参考实现提供的基于计数器的反弹算法。在多次模拟运行期间,您可以调优事件步长和阈值参数并观察效果。有关更多信息,请参见诊断服务组件.
RTE选项卡表列出了组件客户端端口及其到Dem或FiM服务id(在本例中为事件id)的映射。表中的每一行表示从Basic Software调用方块对Dem服务的调用。作用于同一事件的调用通常使用相同的事件ID。这个例子映射了民主党SetEventStatus
客户端端口到不同的事件id,然后映射DemGetEventFailed
客户端端口到共享的事件idSetEventStatus
港口。例如,SetEventStatus
港口S1StuckHigh
而且GetFailedEvent
港口TPS1StuckHigh
共享事件ID 1;S1Stucklow
而且TPS1StuckLow
共享事件ID 2;等等。
模拟调用AUTOSAR NvM和Dem服务
在集成模型中配置NVRAM块和诊断服务组件块后,需要对集成模型进行仿真。仿真测试了油门位置传感器和监控器组件模型中的AUTOSAR NvM和Dem服务调用。
open_system (“autosar_bsw_simulation”);simOutIntegration = sim(“autosar_bsw_simulation”);