主要内容

AUTOSAR成分测试

在AUTOSAR组合模型上运行连续的测试。

这个例子演示了AUTOSAR组合模型的测试工具特性和背靠背的测试工作流程。切换到有写权限的目录。

该实例使用了汽车节气门位置控制器的模型。它紧密地基于一个已经发布的AUTOSAR Blockset示例。有关详细信息,请参见导入AUTOSAR合成到Simulink金宝app(AUTOSAR Blockset)

打开AUTOSAR合成模型

AUTOSAR组合模型包含一个相互连接的模型块网络,每个模型块代表一个原子AUTOSAR软件组件(ASWC)。油门位置控制器组合由AUTOSAR创作工具(AAT)创建,并使用描述该组合的ARXML文件导入Simulink。金宝app

组合模型包含6个组件模型,其中一个用于组合中的每个原子软件组件。金宝appSimulink的输入端口和输出端口代表AUTOSAR端口,信号线代表AUTOSAR组件连接器。

mdl =“sltestThrottlePositionControlCompositionExample.slx”;open_system (mdl);

打开测试工具

模型的测试工具已经生成,可以使用编辑器画布右下角的透视图控件打开。此外,使用:

sltest.harness.open (“sltestThrottlePositionControlCompositionExample”...“BasicSchedulerTest”);

使用Test Sequence块作为源。被测部件需要加速踏板位置传感器输入APP_HwIO_Value,它在Test Sequence块中使用简单的三步序列建模:

初始化步骤将输入设置为标称值,而运行Step模型一个稳定的加速命令为950毫秒。文件中的加速命令被重置为标称值终止的一步。被测组件需要两个额外的输入来捕获主油门位置传感器和副油门位置传感器读数。这些输入使用外部时间序列输入建模,并直接通过Test Sequence块输入,而不需要修改。当一些刺激输入可以建模,而其他输入只能作为外部捕获的数据使用时,这种建模风格非常有用。

用于导出功能的测试工具

被测试的组件是AUTOSAR组合模型,它使用导出功能建模风格。当您为导出功能模型创建测试工具时,工具将包含一个test Sequence块,该块被配置为调用每个根级Simulink Function块,并向模型中的每个函数调用子系统发送一个触发器事件。金宝app生成的Test Sequence块可以用作建模调度程序的一个方便的起点。

在本例中,由于输入信号数据也是由一个Test Sequence源块生成的,发送触发器事件的代码被合并到一个单独的Test Sequence块中,并在刺激波形生成后嵌入到每个步骤中。触发器事件的调用顺序是使用来自组合模型的已编译信息计算的。

  1. 发送(TPS_Primary_Run_0005)

  2. 发送(TPS_Secondary_Run_0005)

  3. 发送(Monitor_Run_0005)

  4. 发送(APPSnsr_Run_0005)

  5. 发送(Controller_Run_0005)

  6. 发送(Actuator_Run_0005)

模拟模型,以看到节流命令输出从组件测试。

sim卡(“BasicSchedulerTest”);open_system (“BasicSchedulerTest /范围”);

连续测试

测试管理器可用于锁定仿真行为,并在软件在环(SIL)模式下验证等价性。打开测试文件并运行等价测试。

close_system (mdl 0);file_mldatx =“sltestThrottlePositionControlTests.mldatx”;打开(file_mldatx);sltest.testmanager.run;

测试用例验证了油门位置控制器ASWC在%组成模型中的开环行为。等价测试用例的第一部分以正常的模拟模式运行包含该组合的测试工具。测试的第二部分使用Post-Load回调以切换节气门位置控制器ASWC到SIL模式顶级模特代码接口。两种模拟结果表明,行为是等价的。

清理

清晰的sltestThrottlePositionControlDataHBridgeCmd_LkupTbl...SensorSelectionSetpointPercent_LkupTblTPSPrimaryPercent_LkupTbl...TPSSecondaryPercent_LkupTblTPSPercent_LkupTbl吹捧logsoutmdlfile_mldatx;sltest.testmanager.clear;sltest.testmanager.clearResults;sltest.testmanager.close;