主要内容

添加或删除变量的选择变体装配子系统模块使用外部文件

一个变体装配子系统块可以使用模型块,子系统的参考块,或作为其变体的选择。变体的选择是保持在一个单独的模型和子系统在MATLAB的文件®路径。您可以添加或删除的变体的选择变体装配子系统块无需修改模型。你使用外部源如枚举类或MATLAB函数来管理的变体的选择变体装配子系统块。不像当你使用不同的子系统块,您不需要在进行导航变体装配子系统阻止添加或删除变量的选择。有关更多信息,请参见变体装配子系统

这个例子解释了如何:

操作变体选择的变体装配子系统块标签模式

本节将展示如何添加或删除的变体的选择变体装配子系统块在标签模式。

保持变体选择的变体装配子系统块模型和子系统文件

装配子系统块可以包含一个变体模型块,子系统的参考块,或作为其变体的选择。变体的选择是保存在单独的模型和子系统上的MATLAB®文件路径。

1。打开slexVariantAssemblySubsystemInLabel模型。模型包含一个变种装配子系统控制器

2。添加的变体的选择控制器块,打开块参数对话框中,指定该MATLAB的表达式变体的选择说明符参数。

{‘linear_generic1’,‘linear_generic2’,‘nonlinear_generic1’,‘nonlinear_generic2}

在这个例子中,linear_generic1linear_generic2选择模型。的nonlinear_generic1nonlinear_generic2阻塞子系统参考。这些变体的选择保持在各自的内部文件ControllersList文件夹中。

确保ControllersList文件夹及其所有子文件夹添加到搜索路径的当前会话使用MATLAB目录函数。

3所示。在你指定的表达式变体的选择说明符参数,单击验证按钮。表达式求值,以确保它是一个有效的MATLAB表达式返回一个一维单元阵列模型或子系统的文件名或文件名称模式在MATLAB的道路。在成功验证,添加到变体的选择控制器块。验证期间遇到任何错误信息显示在块对话框。

4所示。双击控制器块观察四个变量的选择linear_generic1,linear_generic2,nonlinear_generic1,nonlinear_generic2添加到控制器块。的文件名和路径选择是显示在新添加的变体变量的选择表中参考选项卡。

5。从标签模式积极的选择中,选择linear_generic1和模拟模型。观察到的linear_generic1选择变得活跃。

6。您可以修改的表达式变体的选择说明符参数描述指定变量选择装配子系统块变异的变异选择说明符参数,然后再次模拟模型。

指定变量选择装配子系统块变异的变异选择说明符参数

添加模型子系统的参考选择一个块作为变体变体装配子系统块,指定文件引用的名称。文件名必须指定为MATLAB表达式返回一个一维单元阵列特征向量的评估。然后您可以使用刷新按钮验证表达式。在成功验证,添加变体选择的块变体装配子系统块。对于每一个选择,控制标签生成的一个变体。控制变量的名称标签的名称一样的选择。新添加的变量选择和相应的标签显示在控制变量的选择表。

MATLAB表达式指定必须包含这两种:

  • 模型或子系统搜索路径的文件名,你当前的MATLAB会话。例如,如果您指定{model1。基金”、“subsystemRef1.slx '}说明符,引用的街区model1.slxsubsystemRef1.slx文件被添加的变体的选择变体装配子系统块。

  • 文件名称模式匹配模型在MATLAB或子系统文件名的路径。模式中的路径可以绝对或相对于模型的父文件夹包含变体装配子系统块。例如,如果您指定{folder_1 / *。基金”、“folder_2 / * .slx”}说明符,仿真软件金宝app®通过特征向量folder_1 / *folder2 / *dir函数。然后返回的函数模型和子系统文件位于folder1folder2文件夹。块引用返回的文件被添加的变体的选择变体装配子系统块。

信息如何将文件或文件夹添加到搜索路径,明白了目录

下面的表显示了不同的方法,您可以指定变体的选择说明符参数控制器块。指定这些表达式变体的选择说明符参数和验证通过单击刷新按钮。在成功验证,添加到变体的选择控制器块。

变体的选择说明符 添加变量的选择

描述指定一个文件夹的相对路径,包含或子系统模型文件。

价值- - - - - -{“ControllersList / *”}

模型文件位于或子系统ControllersList文件夹添加变体的选择。的子文件夹内的文件ControllersList不补充道。增加的选择是:

  • controller_generic1

  • controller_generic2

描述——指定文件夹及其子文件夹的相对路径文件包含模型或子系统。

价值- - - - - -{' ControllersList / * * '}

模型文件位于或子系统ControllersList文件夹添加变体的选择。的子文件夹内的文件ControllersList还补充道。增加的选择是:

  • linear_groupA_type1

  • linear_groupA_type2

  • linear_groupB_type1

  • linear_groupB_type2

  • linear_generic1

  • linear_generic2

  • nonlinear_groupA_type1

  • nonlinear_groupA_type2

  • nonlinear_groupB_type1

  • nonlinear_groupB_type2

  • nonlinear_generic1

  • nonlinear_generic2

  • controller_generic1

  • controller_generic2

描述——指定相对路径文件夹及其子文件夹包含下一层模型或子系统的文件。

价值- - - - - -{“ControllersList / *”,“ControllersList / * / *”}

模型文件位于或子系统ControllersList文件夹添加变体的选择。子文件夹内文件线性非线性还补充道。增加的选择是:

  • linear_generic1

  • linear_generic2

  • nonlinear_generic1

  • nonlinear_generic2

  • controller_generic1

  • controller_generic2

描述——指定一个文件夹,包含模型相对路径或子系统文件和子文件夹名称和一定的结局。

价值- - - - - -{' ControllersList / * * / * groupA / *”}

模型文件位于或子系统linear_groupAnonlinear_groupA添加子文件夹变体的选择。增加的选择是:

  • linear_groupA_type1

  • linear_groupA_type2

  • nonlinear_groupA_type1

  • nonlinear_groupA_type2

描述——指定一个文件夹,其中包含一个绝对路径或子系统模型文件

价值——在窗户®系统中,{“C: \脉管\ ControllersList \ *”}

在UNIX中®系统中,{' /血管/ ControllersList / *}

模型文件位于或子系统ControllersList文件夹添加变体的选择。的子文件夹内的文件ControllersList不补充道。增加的选择是:

  • controller_generic1

  • controller_generic2

描述——指定模型或子系统单元阵列的文件名

价值- - - - - -{‘linear_groupA_type1’,‘linear_groupB_type2’,‘nonlinear_generic1’,‘controller_generic2}

指定的文件添加变体的选择模型和子系统。增加的选择是:

  • linear_groupA_type1

  • linear_groupB_type2

  • nonlinear_generic1

  • controller_generic2

描述——创建一个MATLAB工作空间变量,返回一个单元阵列模型或子系统的文件名。您可以指定变量名称的变体选择说明符。

例如,控制器:

控制器= {“linear_groupA_type1”,“linear_groupB_type2”,“nonlinear_generic1”,“controller_generic2”};

价值- - - - - -控制器

模型或子系统中指定的文件控制器添加变量的选择。增加的选择是:

  • linear_groupA_type1

  • linear_groupB_type2

  • nonlinear_generic1

  • controller_generic2

描述——创建一个MATLAB函数,它返回一个单元阵列模型或子系统的文件名。然后您可以指定函数名作为变种选择说明符。

例如,getMyListOfControllerChoices函数是供你使用。

函数选择= = {getMyListOfControllerChoices选择“linear_groupA_type1”,“linear_groupB_type2”,“nonlinear_generic1”,“controller_generic2”};结束

价值- - - - - -getMyListOfControllerChoices

返回的模型或子系统的文件getMyListOfControllerChoices添加变量的选择。增加的选择是:

  • linear_groupA_type1

  • linear_groupB_type2

  • nonlinear_generic1

  • controller_generic2

描述——创建一个MATLAB函数,它返回一个单元阵列模型或子系统的文件名,文件名称模式。然后您可以指定函数名作为变种选择说明符。

例如,getMyListOfControllers

函数选择= = {getMyListOfControllers选择“controller_generic1”,“ControllersList /非线性/ * *”};结束

价值- - - - - -getMyListOfControllers

模型和子系统返回的文件getMyListOfControllers被添加作为一个变体的选择。增加的选择是:

  • nonlinear_groupA_type1

  • nonlinear_groupA_type2

  • nonlinear_groupB_type1

  • nonlinear_groupB_type2

  • nonlinear_generic1

  • nonlinear_generic2

  • controller_generic1

描述——创建一个MATLAB函数排除某些文件或文件夹的选择。然后您可以指定函数名作为变种选择说明符。

例如,getMyFilteredListOfControllerChoices函数是供你使用。

函数选择= getMyFilteredListOfControllerChoices%模式“ControllersList /”内包含的所有文件patternToInclude =“ControllersList / * *”;%模式exlude里面的所有文件”ControllersList /线性/ linear_groupA /”patternToExclude =“ControllersList /线性/ linear_groupA / *”;%设置不同的文件包括和排除选择= setdiff (getSLXFileNames (patternToInclude) getSLXFileNames (patternToExclude)) ';函数文件名= getSLXFileNames(模式)[~,文件名,fileExts] = fileparts ({dir(模式). name});文件名=文件名(strcmp (fileExts,“.slx”));结束结束

价值- - - - - -getMyFilteredListOfControllerChoices

模型或子系统的文件ControllersList除了那些在ControllersList /线性/ linear_groupA添加变量的选择。增加的选择是:

  • linear_groupB_type1

  • inear_groupB_type2

  • linear_generic1

  • linear_generic2

  • nonlinear_groupA_type1

  • nonlinear_groupA_type2

  • nonlinear_groupB_type1

  • nonlinear_groupB_type2

  • nonlinear_generic1

  • nonlinear_generic2

  • controller_generic1

  • controller_generic2

操作变体选择装配子系统块表达模式的变体

这个例子展示了如何从一个变种添加或删除变量选择装配子系统的块表达式模式。

保持变体选择的变体装配子系统块模型和子系统文件

打开slexVariantAssemblySubsystemInExpression模型。模型包含一个变种装配子系统控制器。的块表达式模式,有两个不同的选择linearConrollernonlinearController。的linearControllernonlinearController阻塞子系统参考文件保存为子系统在你当前的工作目录。

mdl =“slexVariantAssemblySubsystemInExpression”;(mdl open_system (mdl) vasBlkPath =,“/控制器”];

linearControllernonlinearController添加选择的块控制器块使用枚举创建使用这些方法之一。如果你设置变体激活时间参数的控制器代码编译启动,仿金宝app真软件设置治疗作为原子单元参数的linearControllernonlinearController。的治疗作为原子单元参数使模型能够治疗模块作为一个单元。金宝app例如,如果linearController块设置为原子,仿真软件模拟中的所有块金宝applinearController块在模拟下一个块相同的水平linearController

  • 使用一个classdef在MATLAB™文件块。

  • 使用的函数金宝appSimulink.defineIntEnumType。你不需要一个脚本文件来定义类型。

  • 使用仿真软件金宝app®数据字典永久存储枚举定义。

定义枚举类使用classdef在MATLAB文件块

在这个例子中,controllerTypesMfile是一个基于整数枚举类,它来源于内置类金宝appSimulink.IntEnumTypecontrollerTypesMfile基于整数是因为IntEnumType来自int32。使用定义的枚举类的更多信息classdef块,看创建模型枚举类金宝app

类型controllerTypesMfile
classdef controllerTypesMfile <仿金宝app真软件。IntEnumType% % Copyright 2023 The MathWorks, Inc. enumeration linearController(0) nonlinearController(1) end end

列举部分指定枚举值linearController (0)nonlinearController (1)。每个枚举值包含一个枚举成员和一个潜在的整数。在这里,枚举成员变量选择的文件名linearControllernonlinearController和底层的整数01

1。配置控制器块,设置不同的控制变量参数variantCtrlVar变体选择的枚举参数controllerTypesMFile块的参数对话框。

set_param (vasBlkPath“VariantChoicesEnumeration”,“controllerTypesMfile”)set_param (vasBlkPath“VariantControlVariable”,“variantCtrlVar”)

2。激活linearController选择,设置variantCtrlVarcontrollerTypesMFile.linearController然后模拟模型。在模拟过程中,variantCtrlVar = = controllerTypesMFile.linearController表达式的求值结果为真正的。随后,linearController选择变得活跃。

variantCtrlVar = controllerTypesMfile.linearController;sim (mdl);

同样,激活nonlinearController选择,设置variantCtrlVarcontrollerTypesMfile.nonlinearController和模拟模型。

variantCtrlVar = controllerTypesMfile.nonlinearController;sim (mdl);

此外,您可以模拟变量和使用这个脚本策划他们的价值观。

在(1:2)= Si金宝appmulink.SimulationInput (mdl);在(1)= (1).setVariable (“variantCtrlVar”,controllerTypesMfile.linearController);在(2)= (2).setVariable (“variantCtrlVar”,controllerTypesMfile.nonlinearController);= sim(中);图;((1)。来ut, out(1).yout) hold((2)。来ut, out(2).yout) xlabel(的时间(秒))ylabel (“数据”)
(03 - mar - 2023 08:08:08)运行模拟……(03 - mar - 2023 08:08:09)完成1的2模拟运行(03 - mar - 2023 08:08:09)完成2 2的模拟运行

3所示。然后您可以添加更多的变体选择的控制器块通过添加枚举类的变体选择文件名。类似地,您可以删除选择的控制器阻止通过删除对应的枚举值的枚举类。

定义动态枚举类在内存中使用金宝appSimulink.defineIntEnumType

创建一个枚举类controllerTypesInMem使用MATLAB的工作区中金宝appSimulink.defineIntEnumType

金宝appSimulink.defineIntEnumType (“controllerTypesInMem”,{“linearController”,“nonlinearController”},0:1);

列举部分指定枚举值linearController (0)nonlinearController (1)。每个枚举值包含一个枚举成员和一个潜在的整数。在这里,枚举成员变量选择的文件名linearControllernonlinearController和底层的整数01

1。配置控制器块,设置不同的控制变量参数variantCtrlVar变体选择的枚举参数controllerTypesInMem块的参数对话框。

set_param (vasBlkPath“VariantChoicesEnumeration”,“controllerTypesInMem”)set_param (vasBlkPath“VariantControlVariable”,“variantCtrlVar”)

2。激活linearController选择,设置variantCtrlVarcontrollerTypesInMem.linearController然后模拟模型。在模拟过程中,variantCtrlVar = = controllerTypesInMem.linearController表达式的求值结果为真正的。随后,linearController选择变得活跃。

variantCtrlVar = controllerTypesInMem.linearController;sim (mdl);

同样,激活nonlinearController选择,设置variantCtrlVarcontrollerTypesInMem.nonlinearController和模拟模型。

variantCtrlVar = controllerTypesInMem.nonlinearController;sim (mdl);

此外,您可以模拟变量和使用这个脚本策划他们的价值观。

在(1:2)= Si金宝appmulink.SimulationInput (mdl);在(1)= (1).setVariable (“variantCtrlVar”,controllerTypesInMem.linearController);在(2)= (2).setVariable (“variantCtrlVar”,controllerTypesInMem.nonlinearController);= sim(中);((1)。来ut, out(1).yout) hold((2)。来ut, out(2).yout) xlabel(的时间(秒))ylabel (“数据”)
(03 - mar - 2023 08:08:15)运行模拟……(03 - mar - 2023 08:08:15)完成1的2模拟运行(03 - mar - 2023 08:08:15)完成2 2的模拟运行

3所示。添加更多的变体的选择控制器块,重新定义controllerTypesInMem类与新变种选择文件名作为枚举值。同样,取消选择,重新定义的类对应的枚举值删除。

永久存储枚举定义在模型数据字典金宝app

创建一个枚举类controllerTypesInDD控制变量和变体variantCtrlVarInDD在数据字典的持久存储库vas_controllersData.sldd。列举部分指定枚举值linearController (0)nonlinearController (1)。每个枚举值包含一个枚举成员和一个潜在的整数。这里,枚举名字变体选择的文件名linearControllernonlinearController和底层的整数01。数据字典的更多信息,见永久存储枚举类型定义

1。配置控制器块,设置不同的控制变量参数variantCtrlVarInDD变体选择的枚举参数controllerTypesInDD块的参数对话框。

set_param (vasBlkPath“VariantChoicesEnumeration”,“controllerTypesInDD”)set_param (vasBlkPath“VariantControlVariable”,“variantCtrlVarInDD”)

2。激活linearController选择,设置variantCtrlVarInDDcontrollerTypesInDD.linearController然后模拟模型。在模拟过程中,variantCtrlVarInDD = = controllerTypesInDD.linearController表达式的求值结果为真正的。随后,linearController选择变得活跃。

vasDDObj = 金宝appSimulink.data.dictionary.open (“vas_controllersData.sldd”);dDataSectObj = getSection (vasDDObj,设计数据的);evalin (dDataSectObj“variantCtrlVarInDD = controllerTypesInDD.linearController;”);着干活= sim (mdl)
着干活=仿真软金宝app件。SimulationOutput:吹捧:x1双[1001]你:x1双[1001]SimulationMetadata: [1 x1仿真软件。金宝appSimulationMetadata] ErrorMessage (0 x0 char):

同样,激活nonlinearController选择,设置variantCtrlVarcontrollerTypesInDD.nonlinearController和模拟模型。

evalin (dDataSectObj“variantCtrlVarInDD = controllerTypesInDD.nonlinearController;”);out2 = sim (mdl)
out2 =仿金宝app真软件。SimulationOutput:吹捧:x1双[1001]你:x1双[1001]SimulationMetadata: [1 x1仿真软件。金宝appSimulationMetadata] ErrorMessage (0 x0 char):

此外,您可以模拟变量和使用这个脚本策划他们的价值观。

图;情节(着干活。来ut, out1.yout) hold情节(out2。来ut, out2.yout) xlabel(的时间(秒))ylabel (“数据”)

3所示。然后您可以添加更多的变体选择的控制器块通过添加枚举类的变体选择文件名。类似地,您可以删除选择的控制器阻止通过删除对应的枚举值的枚举类。

另请参阅

|