使用 ASAM XIL 标准创建并运行测试
Simulink® Test™ ASAM® XIL 标准的支持包实现了 ASAM XIL API,该 API 是定义测试自动化工具(例如 Simulink Test)与测试平台(例如 Simulink Real-Time™、第三方测试平台和 Simulink 模型仿真测试平台)之间通信的标准。您可以使用 ASAM XIL API 运行实时硬件在环 (HIL)、软件在环 (SIL) 和模型在环测试用例以及使用其 XIL 框架在 Simulink Test 中创建的 Simulink 仿真。该框架包括将变量从测试代码映射到测试平台的方法、配置要使用的端口、指定测试平台的启动和关闭顺序,以及查询和控制测试平台的其他命令
创建使用 Simulink Test ASAM XIL 标准支持包的测试的步骤如下:
安装支持包并设置测试平台和模型。请参阅安装并设置 Simulink XIL 标准的 ASAM Test 支持包。
运行测试.
要使用多个测试平台,请重复设置过程并为每个测试平台配置测试平台任务。有关详细示例,请参阅使用两个测试平台创建 ASAM XIL 测试。
配置测试平台
按照以下步骤配置测试平台端口,将端口添加到 Simulink Test ASAM XIL 框架,并将模型中的变量映射到测试平台变量。您可以将这些步骤的代码包含在与测试主体相同的文件中。请参阅创建测试主体。
创建
sltest.xil.framework.Framework
类的实例。每次仅使用一个Framework
对象。frm = sltest.xil.framework.Framework;
对于使用第三方测试平台的测试,使用
sltest.xil.framework.Framework
的displayAvailableTestbenches
方法获取可用测试平台的名称。创建 XML 端口配置文件。您可以对文件使用任何名称,但必须使用
.xml
文件扩展名。配置选项取决于测试平台。将示例端口配置文件中显示的产品版本号替换为您拥有的版本。示例端口配置文件为:Simulink Real-Time
使用
createPortConfigureFile
(Simulink Real-Time) 创建文件。NI™ VeriStand
<?xml version="1.0" encoding="UTF-8"?> <NIVSPortConfig> <Version Major="2020" Minor="4" Fix="0" Build="0"/> <Project>C:\NIProjects\Project.nivsproj</Project> </NIVSPortConfig>
dSPACE®
<?xml version="1.0" encoding="utf-8"?> <PortConfigurations xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance> <MAPortConfig> <SystemDescriptionFile> C:\DSPACEProjects\smd_1104_sl.sdf </SystemDescriptionFile> <PlatformName>DS1104</PlatformName> </MAPortConfig> </PortConfigurations>
Simulink 模型仿真
添加要与 Simulink Test ASAM XIL 框架一起使用的端口。请参阅 创建使用第三方测试平台的测试 或 使用 Simulink 模型仿真作为测试平台创建测试 以了解在包含测试主体的 MATLAB® 代码文件中包含此代码的位置。将相应示例端口文件中显示的产品版本号替换为您拥有的版本。
您可以使用
frm.Configuration
来显示您的配置摘要。Simulink Real-Time
要使用所有 Simulink Real-Time 功能,请添加所有三个端口。
frm.Configuration.addModelAccessPort(... 'MAPort', ... 'asamxil.v2_1', ... 'VendorName','MathWorks', ... 'ProductName','XIL API', ... 'ProductVersion','1.0', ... 'PortConfigFile',fullfile(pwd,'myConfigureFile.xml')); frm.Configuration.addECUCalibrationPort(... 'ECUCPort', ... 'asamxil.v2_1', ... 'VendorName','MathWorks', ... 'ProductName','XIL API', ... 'ProductVersion','1.0', ... 'PortConfigFile',fullfile(pwd,'myConfigureFile.xml'),... 'TargetState','started'); frm.Configuration.addECUMeasurementPort(... 'ECUMPort', ... 'asamxil.v2_1', ... 'VendorName','MathWorks', ... 'ProductName','XIL API', ... 'ProductVersion','1.0', ... 'PortConfigFile', fullfile(pwd,'myConfigureFile.xml'));
NI™ VeriStand
frm.Configuration.addModelAccessPort(... 'MAPort1',... 'asamxil.v2_1', ... 'VendorName','National Instruments', ... 'ProductName','NI VeriStand ASAM XIL Interface',... 'ProductVersion','2020', ... 'PortConfigFile',fullfile(pwd,'NIVeriStandPortConfig.xml'));
dSPACE
frm.Configuration.addModelAccessPort(... 'MAPort1', ... 'asamxil.v2_1', ... 'vendorName','dSPACE GmbH', ... 'productName','XIL API', ... 'productVersion','2021-A', ... 'portConfigFile',fullfile(pwd,'dSpaceConfig.XML'));
Simulink 模型仿真
frm.Configuration.addModelAccessPort... ('MAPort1','asamxil.v2_1',... 'VendorName','MathWorks',... 'ProductName','Simulation Server XIL API',... 'ProductVersion','1.0.0.0', ... 'PortConfigFile',MAPortConfigFile);
将测试中使用的测试变量名称映射到指定测试平台的测试平台变量名称。或者,还可以指定变量的任务(即记录率)。要显示可用的测试平台变量 ID,请使用
sltest.xil.framework.Framework
类的displayAllTestbenchVariables
方法。要查看相关任务,请使用displayAllTaskInfo
方法。请参阅创建使用第三方测试平台的测试,了解在 MATLAB 代码文件中与测试主体一起包含此代码的位置。此示例将
RPM
测试变量名称映射到Targets/Controller/Simulation Models/Models/simple_R2020a_2/Outports/Out3
测试平台变量名称。frm.Configuration.addTestVariableMapping(... 'RPM','MAPort1',... ['Targets/Controller/Simulation Models/Models'... '/simple_R2020a_2/Outports/Out3']);
创建测试主体
将测试主体写入 MATLAB 代码文件中。如果将测试主体写为函数,则可以从定义不同配置的函数中调用它。试验体步骤与测试平台无关。定义测试主体后,您可以按原样将其用于任何测试平台配置。
测试主体通常包括以下步骤:
使用
init
初始化测试平台。实例化映射的测试变量,以便您可以在测试主体的其余部分中使用它们。
将模型中的参数调整为测试所需的值。您可以随时更改这些值,但如果在测试过程中更改值,则时间不确定。
设置采集并启动。
如果需要,可以在任何时候调用
sltest.TestCase
方法(例如sltest.TestCase.verifyThat
)来确定测试用例的通过或失败状态。等待采集或仿真完成,或者使用
stop
方法停止仿真。获取记录的数据。
将记录的数据结果推送至测试管理器。仅当您计划使用测试管理器运行测试时才推送记录的数据。
运行测试
配置测试平台并编写测试主体后,在测试管理器或命令行中运行测试。
MATLAB 代码文件继承自
sltest.TestCase
,这使得您可以在测试管理器中打开并运行 MATLAB 代码测试文件。在测试主体代码中,您可以将记录的数据结果推送到测试管理器,然后使用 打开 > 打开基于 MATLAB 的 Simulink 测试(.m)将文件加载到测试管理器中。然后,像在测试管理器中运行其他测试用例一样运行该测试。您可以在 MATLAB 命令行运行代码,但是您无法从命令行将数据推送到测试管理器。
对记录的数据执行额外分析,例如使用 verifySignalsMatch
方法将结果与基线数据进行比较。
限制
当使用 SimulinkASAM Test 针对 XIL 标准的支持包进行实时测试时,ASAM XIL 标准的这些限制适用。
ASAM XIL 标准不支持
设置模型的停止时间。在某些测试平台上,仿真会在模型建立的停止时间停止。其他测试平台强制停止时间为
Inf
。验证结果。使用
sltest.TestCase
中的verify
方法来分析您捕获的数据。枚举、定点或总线数据类型。
在某些测试平台上,记录并不与仿真同时开始。这种时间差异可能会导致您的测试无法精确重复。使用
Acquisition
触发器重复捕获记录数据中的感兴趣的区域。该触发器对应于t = 0
。
当使用 Simulink 模型仿真作为测试平台时,适用以下额外的限制:
数据字典、元胞数组、总线信号、结构和
Simulink.VariantExpression
对象中的变量不会出现在 MAPort 变量列表中。如果您的模型在较长时间内记录大量数据,则可能会发生内存溢出,尤其是在仿真节奏关闭的情况下。避免此问题的一种方法是关闭大信号(例如矩阵)的记录,并且仅记录最少量的信号数据。此外,您可以指定仿真停止时间,或者如果您的模型停止时间设置为无穷大,则打开仿真节奏。
控制内存溢出的另一种方法是使用
<MaxLoggedDataPoints>
限制记录的数据点的数量。当您设置记录数据点的最大数量值时,MaxDataPoints
和DataLoggingMaxPoints
模型设置将更新为该值。由于这些设置而丢失的任何数据都无法使用 ASAM XIL 捕获或采集来获取。在任何 Simulink 模型中记录大量数据时可能会发生内存溢出。这些溢出并非特定于使用带有 Simulink 的 ASAM XIL 作为测试平台。
不支持使用可变步长求解器的模型。
故障排除
您可以使用以下 sltest.xil.framework.Framework
方法显示有关可用测试平台、变量和任务的信息:
displayAllAvailableTestbenches
displayAllTestbenchVariables
displayAllTaskInfo
另请参阅
sltest.xil.framework.Framework
| sltest.xil.framework.FrameworkConfiguration
| sltest.xil.framework.Acquisition
| sltest.xil.framework.Stimulation
| sltest.xil.framework.TestVariable
主题
- 安装并设置 Simulink XIL 标准的 ASAM Test 支持包
- 创建使用第三方测试平台的测试
- 使用 Simulink 模型仿真作为测试平台创建测试
- Simulink Test 支持的 ASAM XIL 类和方法