主要内容

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

makeVariantAssembly

将 Variant Component 转换为 Variant Assembly Component

自 R2023b 起

说明

variantAssemblyComp = makeVariantAssembly(variantComponent)Variant Component 数据模块 variantComponent 转换为 Variant Assembly Component 数据模块,并返回 Variant Assembly Component 数据模块对象 variantComponent。如果 Variant Component 模块的变量控制模式为标签,并且只有 Model 模块和 Create and Use Referenced Subsystems in Models 模块作为其变体选择项,请使用此语法。

示例

variantAssemblyComp = makeVariantAssembly(variantComponent,Name=Value)Variant Component 模块 variantComponent 转换为一个或多个名称-值参量指定的 Variant Assembly Component 模块,并返回 Variant Assembly Component 数据模块对象 variantComponent。如果 Variant Component 模块的变体控制模式为表达式或至少有一个 Subsystem 模块作为其变体选择项,请使用此语法。

示例

示例

全部折叠

此示例说明如何使用 makeVariantAssembly 函数将标签模式下的 Variant Component 模块转换为 Variant Assembly Component 模块。

创建一个模型,获取其根架构,并在标签模型中创建一个变体组件。

model = systemcomposer.createModel("VariantComponentInLabelMode");
systemcomposer.openModel("VariantComponentInLabelMode");
arch = get(model,"Architecture");
variantComp = addVariantComponent(arch,'Controller');

Controller 模块的变体控制模式设置为 label

vacBlockHandle = variantComp.SimulinkHandle;
set_param(vacBlockHandle,'VariantControlMode','label');

使用 makeVariantAssembly 函数将 Variant Component 转换为 Variant Assembly Component。

variantAssemblyComp = makeVariantAssembly(variantComp,SubsystemFilesFolderPath=pwd)
variantAssemblyComp = 
  VariantComponent with properties:

           Architecture: [1×1 systemcomposer.arch.Architecture]
                   Name: 'Controller'
                 Parent: [1×1 systemcomposer.arch.Architecture]
                  Ports: [0×0 systemcomposer.arch.ComponentPort]
             OwnedPorts: [0×0 systemcomposer.arch.ComponentPort]
      OwnedArchitecture: [1×1 systemcomposer.arch.Architecture]
             Parameters: [0×0 systemcomposer.arch.Parameter]
               Position: [280 349 380 422]
                  Model: [1×1 systemcomposer.arch.Model]
         SimulinkHandle: 219.0032
    SimulinkModelHandle: 153.0031
                   UUID: 'eb7cf36c-d000-45c6-bbb4-403bbf6bbb64'
            ExternalUID: ''

此示例说明如何使用 makeVariantAssembly 函数将 expression 模式下的 Variant Component 模块转换为 Variant Assembly Component 模块。

创建一个模型,获取其根架构,并在 expression 模型中创建一个变体组件。

model = systemcomposer.createModel("VariantComponentInExpressionMode");
systemcomposer.openModel("VariantComponentInExpressionMode");
arch = get(model,"Architecture");
variantComp = addVariantComponent(arch,'Controller');

Controller 模块的变体控制模式设置为 expression

vacBlockHandle = variantComp.SimulinkHandle;
set_param(vacBlockHandle,'VariantControlMode','expression');

使用 makeVariantAssembly 函数将 Variant Component 转换为 Variant Assembly Component。在转换过程中:

  • 会验证变体组件的当前配置。

  • 任何内联组件选择项都会转换为子系统引用选择项。

  • 具有架构类型组合的内联组件会转换为具有组合的子系统引用组件。在此过程中会创建一个新的架构子系统文件。

  • 结、架构类型为 Simulink® 行为的内联组件会被转换为具有 Simulink 行为的子系统引用组件。在此过程中会创建一个新的 Simulink 子系统文件。

SubsystemFilesFolderPath = pwd;
vcvName = 'EngType';
enumClassFilePath = 'controllerClass.m';
variantAssemblyComp = makeVariantAssembly(variantComp,SubsystemFilesFolderPath = pwd,VariantControlVariableName=vcvName,EnumerationClassFilePath=enumClassFilePath)
variantAssemblyComp = 
  VariantComponent with properties:

           Architecture: [1×1 systemcomposer.arch.Architecture]
                   Name: 'Controller'
                 Parent: [1×1 systemcomposer.arch.Architecture]
                  Ports: [0×0 systemcomposer.arch.ComponentPort]
             OwnedPorts: [0×0 systemcomposer.arch.ComponentPort]
      OwnedArchitecture: [1×1 systemcomposer.arch.Architecture]
             Parameters: [0×0 systemcomposer.arch.Parameter]
               Position: [280 349 380 422]
                  Model: [1×1 systemcomposer.arch.Model]
         SimulinkHandle: 219.0031
    SimulinkModelHandle: 153.0029
                   UUID: '5784df87-7467-406c-97e4-b4accb038863'
            ExternalUID: ''

输入参数

全部折叠

变体组件,指定为 systemcomposer.arch.VariantComponent 对象。

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来

示例: makeVariantAssembly(variantComp,SubsystemFilesFolderPath = pwd,VariantControlVariableName=vcvName,EnumerationClassFilePath=enumClassFilePath)

要创建的有效 MATLAB 变量名或结构体字段名,指定为字符串标量或字符向量。有关命名规则,请参阅 变量名称基于变量生成字段名称

在仿真过程中,Simulink® 会使用该参数值来确定转换后的 Variant Assembly Component 模块的活动变体选择项。

示例: 'EngType'

依赖项

如果 Variant Component 模块的 VariantControlMode 参数设置为 'expression',则使用此参量。

数据类型: char | string

要创建的 MATLAB 类文件的绝对路径或相对路径,指定为字符串标量或字符向量。在模块转换过程中,Simulink 会在指定的枚举类文件中定义一个枚举类,并将转换后的 Variant Assembly Component 模块的变体选择项作为其成员。

示例: 'ControllerType.m'

依赖项

如果 Variant Component 模块的 VariantControlMode 参数设置为 'expression',则使用此参量。

数据类型: char | string

转换后的 Variant Assembly Component 模块的 Subsystem Reference 选择项必须保存为子系统文件的绝对或相对文件夹路径,指定为字符串标量或字符向量。

示例: SubsystemFilesFolderPath = 'ControllerChoices'

依赖项

如果 Variant Component 模块至少有一个 Subsystem 模块作为其变体选择项,则使用此参量。

数据类型: char | string

输出参量

全部折叠

Variant Assembly Component 模块,以 systemcomposer.arch.VariantComponent 对象的形式返回。

限制

  • 只有变体控制项模式设置为标签表达式Variant Component 模块才能转换为 Variant Assembly Component 模块。

  • 软件架构和 AUTOSAR 架构不支持从 Variant ComponentVariant Assembly Component 的转换。

详细信息

全部折叠

备选方法

您可以通过模块对话框将 Variant Component 模块转换为 Variant Assembly Component 模块。有关详细信息,请参阅将 Variant Component 转换为 Variant Assembly Component

版本历史记录

在 R2023b 中推出

全部展开