使用 Simulink Test 支持包(针对 ASAM XIL 标准)进行实时测试
Simulink® Test™ 针对 ASAM® XIL 标准的支持包实现了 ASAM XIL API,该 API 是定义测试自动化工具(例如 Simulink Test)与测试平台(例如 Simulink Real-Time™ 和第三方测试平台)之间通信的标准。ASAM XIL API 支持使用其 XIL 框架运行在 Simulink Test 中创建的实时硬件、软件和模型在环 (分别为 HIL、SIL 和 MIL)测试用例。Simulink Test 框架包括将变量从测试代码映射到测试平台的方法、配置要使用的端口、指定测试平台启动和关闭顺序以及查询和控制测试平台的其他命令。
Simulink Test ASAM XIL 标准工作流程
此工作流程描述了使用 Simulink Test ASAM XIL 标准支持包创建测试的步骤。工作流任务包括:
安装支持包并设置测试平台和模型 — 参见安装并设置 ASAM XIL 标准的 Simulink Test 支持包。
如果要使用多个测试平台,请为每个测试平台重复设置和配置测试平台任务。有关详细示例,请参阅使用 Simulink Test 支持包(针对 ASAM XIL 标准)创建测试。
配置测试平台
按照以下步骤配置测试平台端口,将端口添加到 Simulink Test ASAM XIL 框架,并将模型中的变量映射到测试平台变量。您可以将这些步骤的代码包含在与测试主体相同的文件中(参见创建测试主体)。
创建
sltest.xil.framework.Framework
类的实例。每次仅使用一个框架对象。使用
sltest.xil.framework.Framework
的displayAvailableTestbenches
方法获取可用测试平台的名称。创建 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 Test ASAM XIL 框架一起使用的端口。请参阅使用 Simulink Test 支持包(针对 ASAM XIL 标准)创建测试,了解在 MATLAB® 代码文件中与测试主体一起包含此代码的位置。将示例端口文件中显示的产品版本号替换为您拥有的版本。
Simulink Real-Time.
要使用所有 Simulink Real-Time 功能,请添加所有三个端口。
framework.Configuration.addModelAccessPort(... 'MAPort', ... 'asamxil.v2_1', ... 'VendorName','MathWorks', ... 'ProductName','XIL API', ... 'ProductVersion','1.0', ... 'PortConfigFile',fullfile(pwd,'myConfigureFile.xml')); framework.Configuration.addECUCalibrationPort(... 'ECUCPort', ... 'asamxil.v2_1', ... 'VendorName','MathWorks', ... 'ProductName','XIL API', ... 'ProductVersion','1.0', ... 'PortConfigFile',fullfile(pwd,'myConfigureFile.xml'),... 'TargetState','started'); framework.Configuration.addECUMeasurementPort(... 'ECUMPort', ... 'asamxil.v2_1', ... 'VendorName','MathWorks', ... 'ProductName','XIL API', ... 'ProductVersion','1.0', ... 'PortConfigFile', fullfile(pwd,'myConfigureFile.xml'));
NI™ VeriStand
framework.Configuration.addModelAccessPort(... 'MAPort1',... 'asamxil.v2_1', ... 'VendorName','National Instruments', ... 'ProductName','NI VeriStand ASAM XIL Interface',... 'ProductVersion','2020', ... 'PortConfigFile',fullfile(pwd,'NIVeriStandPortConfig.xml'));
dSPACE
framework.Configuration.addModelAccessPort(... 'MAPort1', ... 'asamxil.v2_1', ... 'vendorName','dSPACE GmbH', ... 'productName','XIL API', ... 'productVersion','2021-A', ... 'portConfigFile',fullfile(pwd,'dSpaceConfig.XML'));
使用
framework.Configuration
显示您的配置摘要。
将测试中使用的测试变量名称映射到指定测试平台的测试平台变量名称。或者,还可以指定变量的任务(即记录率)。要显示可用的测试平台变量 ID,请使用
sltest.xil.framework.Framework
类的displayAllTestbenchVariables
方法。要查看相关任务,请使用displayAllTaskInfo
方法。请参阅使用 Simulink Test 支持包(针对 ASAM XIL 标准)创建测试,了解在 MATLAB 代码文件中与测试主体一起包含此代码的位置。此示例将
RPM
测试变量名称映射到Targets/Controller/Simulation Models/Models/simple_R2020a_2/Outports/Out3
测试平台变量名称。framework.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
方法将结果与基线数据进行比较。
限制
当使用 Simulink Test 针对 ASAM XIL 标准的支持包进行实时测试时,ASAM XIL 标准的这些限制适用。
ASAM XIL 标准不提供设置模型停止时间的支持。在某些测试平台上,仿真会在模型建立的停止时间停止。其他测试平台强制停止时间为
Inf
。在某些测试平台上,记录并不与仿真同时开始。这种时间差异可能会导致您的测试无法精确重复。使用
Acquisition
触发器重复捕获记录数据中的感兴趣的区域。该触发器对应于t = 0
。ASAM XIL 标准不提供验证结果的支持。使用
sltest.TestCase
中的verify
方法来分析您捕获的数据。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