Main Content

使用 SIL/PIL 管理器的单元测试子系统代码

如果您的模型包含子系统,您可以使用 Simulink® Test™SIL/PIL 管理器对从子系统生成的代码执行单元测试。此工作流测试生成的子系统代码,将其作为从父模型生成的代码的一部分。

要对从原子子系统生成的代码执行单元测试,请执行以下操作:

  1. 打开包含原子子系统的模型。例如,在命令行窗口中,输入:

    openExample('ecoder/SILPILVerificationExample', ...
                 supportingFile='SILBlock.slx')

  2. 在新文件夹中,将模型另存为 plant_model

  3. 修改此工作流不支持的配置参数设置。在命令行窗口中,输入:

    set_param('plant_model', ...
              'CreateSILPILBlock','None', ...
              'PreserveStaticInFcnDecls', 'Off');
    
    % For this example, use these values for block parameters.
    set_param('plant_model/Controller', ...
              'RTWSystemCode','Nonreusable function', ...
              'RTWFileNameOpts', 'Auto');

    注意

    对于映射到 AUTOSAR 可运行实体的函数调用子系统,即使在以下情况下,也可以使用此工作流:

    • 模块参数 TreatAsAtomicUnit 不为 'on'

    • 模块参数 RTWSystemCode 不为 'Nonreusable function''Reusable function'

    有关限制的详细信息,请参阅Atomic Subsystem Workflow Limitations

  4. 为包含这些原子子系统的模型生成代码。在命令行窗口中,输入:

    slbuild('plant_model')

  5. 为子系统创建一个测试框架。右键点击 Controller 子系统,然后选择测试框架 > 为 '控制器' 创建

  6. 设置框架属性:

    • 名称 - controller_subsystem_harness

    • 源和信宿InportOutport

    • 选择创建后打开框架

    点击确定

    Simulink TestController 子系统创建一个测试框架。

  7. 指定保存数据的格式。在命令行窗口中,输入:

    set_param('controller_subsystem_harness', ...
              'SaveFormat','Dataset')

  8. 在测试框架窗口中,打开 SIL/PIL 管理器。在 App 选项卡上,点击 SIL/PIL 管理器

  9. 如果需要,配置代码覆盖率

  10. 运行背靠背模型和 SIL 仿真:

    1. 模式部分中,选择自动验证

    2. 运行自动验证部分中,点击运行验证

  11. 结果库中,您可以:

    • 使用仿真数据检查器以分析结果。例如,比较来自模型和 SIL 仿真的 controller_model_output 信号。

    • 导出一个等效性测试用例。

    有关详细信息,请参阅Analyze Results and Export Test Cases

有关限制的详细信息,请参阅Subsystem Block SIL/PIL Limitations

相关主题