主要内容

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

makeVariantAssembly

将 Variant Component 转换为 Variant Assembly Component

自 R2023b 起

说明

variantAssemblyComp = makeVariantAssembly(variantComponent)Variant Component 模块 variantComponent 转换为 Variant Assembly Component 模块,并返回 Variant Assembly Component 模块对象 variantAssemblyComp。如果 Variant Component 模块的变体控制模式为标签,且其变体选择项仅包含 Model 模块和子系统引用模块,请使用此语法。

示例

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

示例

示例

全部折叠

此示例说明如何使用 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,ReferenceFilesFolderPath=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: 215.0500
    SimulinkModelHandle: 149.2601
                   UUID: '56c7ad60-4eea-4290-9caa-4923c09808f1'
            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 子系统文件。

ReferenceFilesFolderPath = pwd;
vcvName = 'EngType';
enumClassFilePath = 'controllerClass.m';
variantAssemblyComp = makeVariantAssembly(variantComp,ReferenceFilesFolderPath = 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: 215.0236
    SimulinkModelHandle: 149.2085
                   UUID: 'f3774ec1-2daa-4317-8b1d-72139d4e4a6f'
            ExternalUID: ''

输入参数

全部折叠

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

名称-值参数

全部折叠

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

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

示例: makeVariantAssembly(variantComp,ReferenceFilesFolderPath=pwd,VariantControlVariableName=vcvName,EnumerationClassFilePath=enumClassFilePath,ReferenceComponentType="SubsystemReference")

要创建的有效 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 模块的子系统引用选项必须保存为子系统文件的绝对或相对文件夹路径,该路径指定为字符串标量或字符向量。

示例: ReferenceFilesFolderPath = "ControllerChoices"

依赖项

如果 Variant Component 模块的变体选择项中至少包含一个内联组件,请使用此参量。

数据类型: char | string

转换为 Variant Assembly Component 模块后,选择模型或子系统引用组件。若要将内联组件转换为架构模型或软件架构模型,请指定 "ModelReference"。若要将内联组件转换为架构子系统引用或 Simulink 子系统引用,请指定 "SubsystemReference"

注意

软件架构模型的默认引用组件类型为 "ModelReference",且无法更改,因为这些模型不支持子系统文件。

示例: ReferenceComponentType="ModelReference"

数据类型: char | string

输出参量

全部折叠

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

限制

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

  • AUTOSAR 架构不支持将 Variant Component 转换为 Variant Assembly Component

详细信息

全部折叠

备选方法

您可以通过交互方式、通过“模块参数”对话框,或通过编程方式,将 Variant Component 模块转换为 Variant Assembly Component 模块。有关详细信息,请参阅将 Variant Component 转换为 Variant Assembly Component

版本历史记录

在 R2023b 中推出

全部展开