主要内容

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

同步测试框架和模型之间的更改

测试框架提供了一个隔离的环境来测试设计变更。您可以将更改从测试框架到主模型,或者将更改从主模型同步到测试框架。同步包括以下模型元素:

  • 被测组件 (CUT) - CUT 模块以及 CUT 中的模块、信号和其他实体。

  • 模块参数 - 与模块相关的参数的值。要查看某个模块的参数,请右键点击该模块并从上下文菜单中选择模块参数

  • 可选地,模型或测试框架的活动配置集。有关配置集的信息,请参阅 管理模型的配置集

要在测试框架和主模型之间同步活动配置集和模型工作区参数,请在“创建测试框架”对话框的高级属性选项卡中选择重构时更新配置参数和模型工作区数据

您不需要同步基础工作区数据,因为它可供测试框架和主模型使用。子系统模型测试框架始终与其底层模型同步。

为新测试框架设置同步

当您创建测试框架时,您可以指定何时将测试框架中的变更与主模型进行同步。同步可以自动或手动进行。如果您计划在测试框架中尝试不同的组件设计,请使用手动同步来避免覆盖主模型中的组件。

对于所有同步类型,即使测试框架已打开,您也可以仿真主模型。您还可以为当前测试的组件及其嵌套子系统之外的模型组件创建框架。您可以同时打开同一模型拥有的多个框架。

同步模式参数的设置为:

  • 在框架打开和关闭时同步 - 当您打开一个或多个测试框架时,模型与框架之间会进行同步。如果只有一个框架处于打开状态,当您关闭框架时,同步操作将从框架传递到模型。当多个框架打开时,若仅关闭其中一个,则不会与建模同步。

  • 在框架打开时同步 - 当您打开一个或多个测试框架时,模型与框架之间会进行同步。

  • 仅在推送和重构期间同步 - 当仅有一个测试框架打开时,点击工具条中的推送更改,将从测试框架同步到模型.当您点击重新构建框架时,模型与框架之间的同步操作将自动执行。当打开多个框架时,仅当您重建模型时才会发生同步。不支持推送同步。

  • 仅在重构间同步 - 当一个或多个框架打开时,同步仅在您点击重建框架时发生。变更从模型同步到测试框架。

注意

同步将子系统从主模型复制到子系统测试框架模型,并从子系统测试框架模型复制到主模型。当主模型同步到子系统测试框架时以及当子系统测试框架同步到主模型时,Simulink® 模块复制回调都会运行。子系统的同步不会同步代码或状态映射。

如果您为 Model 模块在软件在环 (SIL) 或处理器在环 (PIL) 模式下创建测试框架,则测试框架中的模块模式将分别更改为 SIL 或 PIL。当您关闭测试框架时,此模式不会更新到主模型。

如果您在测试框架中使用 SIL 或 PIL 模块,请考虑将测试框架设置为每次打开时重建。定期重建测试框架可以使 SIL/PIL 模块引用的生成代码作为主模型的反映。

该表显示在每种同步类型下,当一个或多个测试框架处于打开状态时,是否可以更改模型、测试框架或模型中的 CUT.

同步类型支持的模型元素当一个框架打开时锁定当多个框架同时打开时,系统将自动锁止。

在框架打开和关闭时同步

可以用来:

  • 子系统,包括 Stateflow 图和 MATLAB Function 模块

  • Model 模块

  • S-Function 模块

  • 子系统引用模块 - 仅同步模块参数

不适用于:

  • 模块图

  • SIL/PIL 框架

  • 子系统模型框架

  • System Composer 建模、组件或 CUTs

以下元素已解锁:

  • 主要模型及主要模型框架

  • 主模型中不属于子系统的 CUTs 以及其框架

  • 子系统框架及框架中的 CUTs

以下元素已被锁定:

  • 主建模中的子系统切割测试 (CUT)

以下元素已解锁:

  • 主要模型及主要模型框架

  • 框架 CUT

  • 非子系统和框架、库框架以及 MATLAB 函数的 CUTs

  • 主模型和框架中的子系统 CUT 测试,但未发生同步现象。

以下元素已被锁定:

  • 主模型 CUT

在框架打开时同步

可以用来:

  • 模块图

  • 子系统,包括 Stateflow® 图和 MATLAB Function 模块

  • Model 模块

  • S-Function 模块

  • 子系统引用模块 - 仅同步模块参数

不适用于:

  • SIL 或 PIL 框架

  • 子系统模型框架

以下元素已解锁:

  • 主要模型及主要模型框架

  • 主模型中不属于子系统的 CUTs 以及其框架

以下元素已被锁定:

  • 主模型和框架中的子系统切割测试 (CUT)

以下元素已解锁:

  • 主要模型及主要模型框架

  • 主模型中不属于子系统的 CUTs 以及其框架

  • System Composer 框架中用于内联组件的主要建模和切割点 (CUT)

以下元素已被锁定:

  • 主模型和框架中的子系统切割测试 (CUT)

  • System Composer 主模型和框架中的模型参考组件切割图 (CUT)

仅在推送和重构期间同步

可以用来:

  • 子系统,包括 Stateflow 图和 MATLAB Function 模块

  • Model 模块

  • S-Function 模块

  • 子系统建模 - 仅在推送时同步并重建。

不适用于:

  • 模块图

  • SIL 或 PIL 框架

  • 库中的组件

  • System Composer 建模、组件或 CUTs

以下元素已解锁:

  • 主模型、框架以及模型和框架中的所有类型 CUTs,包括子系统。

以下元素已解锁:

  • 主模型、框架及框架中的所有类型 CUTs,包括子系统框架

以下元素已被锁定:

  • 主模型 CUT。

仅在重构间同步

可以用来:

  • 模块图

  • SIL/PIL 验证模式组件

不适用于:

  • 子系统,包括 Stateflow 图和 MATLAB Function 模块

  • S-Function 模块

  • 库中的组件

  • System Composer 建模、组件或 CUTs

以下元素已解锁:

  • 主要模型、框架及各类 CUTs,不包括模型中的 SIL/PIL 验证模式组件。

以下元素已被锁定:

  • 框架中的 SIL 或 PIL 验证模式组件已被锁定并封装。

注意

仅在重构间同步不适用于子系统。

所有元素均已解锁。

更改现有测试框架的同步

要更改测试框架同步模式:

  1. 关闭测试框架。

  2. 在主模型中,点击模块或 Simulink 画布上的框架徽章。

  3. 在测试框架缩略图预览中,点击框架操作图标并选择属性

  4. 在属性对话框中更改同步模式

如果使用命令行,请使用 sltest.harness.set 设置 SynchronizationMode 属性。

同步配置集和模型工作区数据

要同步测试框架和主模型之间的活动配置集和工作区参数,请框架创建或框架属性对话框中选择重构时更新配置参数和模型工作区数据

检查不同步的组件差异

如果您的测试框架没有同步更改,您可以检查测试框架和主模型之间不同步的组件差异。在以下情况下,检查不同步的差异会很有用:

  • 您正在测试框架中进行初步的设计更改,并想检查主模型组件是否被覆盖。

  • 您对主模型进行了设计更改,并想要检查必须重建哪些测试框架。

从测试框架窗口中,选择检查框架来检查差异。如果组件不同,您可以将更改从测试框架推送到主模型,或者从主模型重建测试框架。另请参阅 sltest.harness.check 函数。

检查不同步差异时请考虑以下情况:

  • sltest.harness.check 在测试框架和主模型的比较中仅包含模块图、模块参数和封装参数。端口选项、编译属性、隐藏参数和 Model 模块数据记录参数不包括在比较中。

  • 如果组件包含 Simscape™ Solver Configuration 模块,则检查结果始终显示该组件在测试框架和主模型之间有所不同。Solver Configuration 模块受到组件外部的 Simscape 模块的影响,因此测试框架和主模型之间总是存在差异。

重建测试框架

重建测试框架来反映主模型的最新状态。在测试框架中,选择重新构建框架。除了更新被测组件和模块参数之外,此操作还会重建框架转换子系统。如果测试框架没有转换子系统,则重建会添加它们。

重建可能会断开信号线。例如,如果主模型中的信号名称发生变化,则可以断开测试框架中的信号线。如果线路断开,请将信号线重新连接到被测组件或转换子系统。如果您指定使用 sltest.harness.createsltest.harness.set 为 SIL/PIL 子系统使用现有的生成代码,则框架重建将使用该代码而不是重新生成它。

有关更多信息,请参阅创建或导入测试框架并选择属性sltest.harness.rebuild

将测试框架的变更推送到模型

在测试框架中更改系统后,如果仅打开一个框架,则可以将更改推送到主模型。在测试框架中,选择推送更改。此过程将覆盖主模型中的组件。当打开多个框架时,不支持将更改推送到模型。

检查组件并将参数推送至主模型

此示例展示了更新测试框架中的参数、检查测试框架和主模型之间的同步以及将参数更改从测试框架推送到主模型的基本工作流程。

此示例还包括编程步骤。

打开模型 sf_car。该模型包括变速箱换档控制器算法和简化的动力系统和车辆动力学。

model = "sf_car";
open_system(model);

更新测试框架中的封装参数

1.打开测试框架。点击 shift_logic 图上的徽章并选择 ShiftLogic_InportHarness 测试框架。仅当您推送到主模型或从主模型重建时,测试框架才会设置为同步。

要从命令行打开测试框架,请使用:

chart = "sf_car/shift_logic";
harness = "TestDownshiftPointsHarness";
sltest.harness.open(chart,harness);

2.双击 shift_logic 子系统。对于换档前延迟(勾选),输入 4 并点击确定

要从命令行更改值,请使用:

shiftLogicMask = Simulink.Mask.get("TestDownshiftPointsHarness/shift_logic");
maskParamValue = shiftLogicMask.Parameters.Value;
shiftLogicMask.Parameters.Value = "4";

3.检查测试框架和主模型之间的同步性。在命令行中,运行 sltest.harness.check 函数。

[comparison,details] = sltest.harness.check(chart,harness);

结果表明,由于更新了封装参数,测试框架中的被测组件有所不同。

comparison
comparison =

  logical

   0

details
details = 

  struct with fields:

     overall: 0
    contents: 1
      reason: 'The contents of harnessed component and the contents of the component in the main model are same, but they differ in terms of block or mask parameters.'

将参数更新到主模型

1.在测试框架的框架选项卡上,点击推送更改

2.在主模型中,双击 shift_logic 子系统。参数值已更新。

要使用命令行推送更改,请使用:

sltest.harness.push(chart,harness)

3.更新主要模型和测试框架。

set_param(model,SimulationCommand="update");
set_param(harness,SimulationCommand="update");

4.通过第二次运行 sltest.harness.check 函数重新检查测试框架和主模型之间的同步。

[comparison,details] = sltest.harness.check(chart,harness);

结果表明,测试框架与主模型的被测组件相同。

comparison
comparison =

  logical

   1

details
details = 

  struct with fields:

     overall: 1
    contents: 1
      reason: 'The checksum of the harnessed component and the component in the main model are same.'

5.关闭模型而不重新保存。

close_system(model,0);

另请参阅

| |

主题