主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

测试 AUTOSAR 组合

此示例演示了如何在 AUTOSAR 组合模型上执行连续测试。

此示例演示了 AUTOSAR 组合模型的测试框架功能和背靠背测试工作流程。切换到具有写权限的目录。

该示例使用了汽车节气门位置控制器模型。它紧密基于航运 AUTOSAR Blockset 示例。详情请参阅Import AUTOSAR Composition to Simulink (AUTOSAR Blockset)

打开 AUTOSAR 组合模型

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

组合模型包含六个组件模型,组合中的每个原子软件组件对应一个模型。Simulink 输入端口和输出端口代表 AUTOSAR 端口,信号线代表 AUTOSAR 组件连接器。

mdl = 'sltestThrottlePositionControlCompositionExample.slx';
open_system(mdl);

打开测试框架

已生成模型的测试框架,可以使用编辑器画布右下角的透视控制打开。或者,使用:

sltest.harness.open('sltestThrottlePositionControlCompositionExample',...
    'BasicSchedulerTest');

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

Initialize 步骤将输入设置为标称值,而 Run 步骤则为 950 毫秒的稳定加速度命令建模。加速度命令在 Terminate 步骤中重置为标称值。被测组件需要两个额外的输入来捕获主节气门位置传感器和副节气门位置传感器的读数。这些输入使用外部时间序列输入建模,并直接通过 Test Sequence 模块馈送,无需修改。当某些刺激输入可以建模而其他刺激输入只能作为外部捕获的数据时,这种建模风格很有用。

导出函数的测试框架

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

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

  1. send(TPS_Primary_Run_0005)

  2. send(TPS_Secondary_Run_0005)

  3. send(Monitor_Run_0005)

  4. send(APPSnsr_Run_0005)

  5. send(Controller_Run_0005)

  6. send(Actuator_Run_0005)

仿真模型以查看被测组件的节气门命令输出。

sim('BasicSchedulerTest');
open_system('BasicSchedulerTest/Scope');

背靠背测试

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

close_system(mdl,0);
file_mldatx = 'sltestThrottlePositionControlTests.mldatx';
open(file_mldatx);
sltest.testmanager.run;

测试用例验证了组合模型中节气门位置控制器 ASWC 的开环行为。等效性测试用例的第一部分在普通仿真模式下运行包含组合的测试框架。测试的第二部分使用 Post-Load 回调将节气门位置控制器 ASWC 切换到具有 Top model 代码接口的软件在环 (SIL) 模式。两次仿真的结果表明行为是等效的。

请注意,由于 SIL 模式是在回调中设置的,因此结果并不显示第二次仿真实际上是在 SIL 模式下运行的。

清理

clear sltestThrottlePositionControlData HBridgeCmd_LkupTbl ...
    SensorSelection SetpointPercent_LkupTbl TPSPrimaryPercent_LkupTbl...
    TPSSecondaryPercent_LkupTbl TPSPercent_LkupTbl tout logsout mdl file_mldatx;
sltest.testmanager.clear;
sltest.testmanager.clearResults;
sltest.testmanager.close;