与多个模型共享一个配置
若要与多个模型共享配置集,请将其存储为独立配置设置在仿真软件®数据字典或基本工作区中。默认情况下,配置集驻留在单个模型中,因此只有该模型可以使用它。独立配置集是仿真软件。ConfigSet
对象,您将其存储在模型之外,以便多个模型可以使用它。
若要在模型中使用独立配置集,请创建配置引用在指向独立配置集的模型中。然后,您可以以与标准配置集相同的方式激活配置引用。多个模型可以引用相同的独立配置集。
当你想:
在多个模型中使用相同的配置参数。当您更改独立配置中的参数值时,更改将应用于引用该配置的每个模型。
要跨模型层次结构共享配置集,您可以将引用从顶层模型传播到它的引用模型。有关更多信息,请参见跨引用模型共享配置.
更改任意数量模型的配置参数,而不更改模型文件。在Simulink数据字典中存储配置集时,更改配置中的参数值将更改数据字典文件。链接到数据字典并引用配置集的模型使用新的值,但是它们的模型文件没有更改。
在不更改模型文件的情况下快速替换任意数量模型的配置集。当您在Simulink数据字典中存储配置集时,您可以从同样存储在数据字典中的引用中指向该配置。然后,您的模型可以引用数据字典的配置引用。当您更改数据字典的引用以指向不同的配置集时,模型将使用新的配置。
当配置引用基本工作区中的配置时,它指向表示
仿真软件。ConfigSet
对象。将不同的配置集分配给变量,将该配置集分配给引用该变量的每个模型。
对于本例,您将在Simulink数据字典中存储配置集,并从链接到数据字典的模型中引用配置集。要创建和链接Simulink数据字典,请参见迁移模型以使用Simulink数据字典.若要共享已保存在模型中的配置集,请将该配置转换为引用的独立配置,如跨引用模型共享配置.
在数据字典中创建配置集
在从模型引用独立配置集之前,请在Simulink数据字典中创建配置并将其链接到模型。对于本例,使用Simulink项目sldemo_slproject_airframe
.该项目包含Simulink数据字典system_model
以及链接到数据字典的多个模型。
打开项目。在命令行中,键入
sldemo_slproject_airframe
.在项目文件夹中,在文件夹中
数据
,双击Simulink数据字典system_model.sldd
.数据字典在Model Explorer中打开。在模型层次结构窗格中,展开的数据字典节点
system_model
.右键单击节点,单击显示空的部分.选择Configurations节点并单击添加配置按钮.配置集对象出现在内容窗格,使用默认名称,
配置
.命名新配置
SharedConfig
.
可以访问数据字典的模型system_model.sldd
可以引用新的配置。
创建并附加配置引用
要在模型中使用独立的配置集,请附加指向该配置集的配置引用。对于本例,使用模型LinearActuator
.该模型链接到Simulink数据字典system_model.sldd
,其中包含您的新配置SharedConfig
.
打开模型。在命令行中,键入
LinearActuator
.在模型资源管理器中模型层次结构窗格中,选择模型节点。
选择添加>配置引用或单击添加配置参考按钮.
在模型节点下,单击配置.命名为
参考
上市。命名配置引用
LinActuatorRef
.
新的配置引用附加到模型,但是它还没有指向独立的配置,而且它还不是活动的。要完成设置,解析并激活配置引用。
解析配置参考
未解析的配置引用是指没有指向有效配置集对象的配置引用。使用上述步骤创建配置引用时,引用无法解析。
解析您创建的配置引用:
在模型层次结构控件的模型节点下面的
LinearActuator
模型,选择Configurations节点。在内容窗格中,选择未解析的配置引用,LinActuatorRef
.右边窗格显示配置引用无法解析。
使用的名字要选择的下拉菜单
SharedConfig
,这是在数据字典中创建的。提示
可以指定配置引用的名称,而不是配置集的名称。但是,在此深度之外嵌套配置引用会导致错误。
点击应用.警告图标消失,引用指向独立配置集。
如果您的配置引用已经解析,您可以按照以下步骤更改它引用的配置集。
激活配置参考
在您创建配置引用并将其附加到模型之后,激活引用以在模型中使用被引用的配置。
在模型层次结构控件的模型节点下面的
LinearActuator
模型,选择Configurations节点。在内容窗格中,选择配置引用LinActuatorRef
.右键单击配置引用
LinActuatorRef
并选择激活.
当配置引用处于活动状态时,Model Explorer将显示带有后缀的引用的名称(主动)
.独立的配置集现在为模型提供配置参数。
在另一个模型中创建一个配置引用
对于本例,您将更新配置集,并查看它如何影响其关联的模型。重复上面的过程进行关联SharedConfig
第二种模型:
打开模型
NonLinearActuator
.该模型还链接到包含独立配置集的数据字典。在Model Explorer中,向模型添加一个配置引用
NonLinearActuator
.命名配置引用
NonLinActuatorRef
.将引用指向独立配置集
SharedConfig
.激活配置引用。
两个模型现在都包含一个指向Simulink数据字典中相同配置集对象的配置引用。
更改引用配置集中的参数值
通过从指向配置集的引用的“配置参考”对话框中打开它,可以编辑独立配置集。更改独立配置集会影响引用它的配置引用,但在这些引用中覆盖的参数除外。要编辑您从模型中引用的配置集:
打开引用配置集的一个模型。对于本例,打开模型
LinearActuator
.打开“配置参考”对话框建模选项卡上,单击模型设置按钮.“配置参考”对话框显示所引用配置的只读视图
SharedConfig
.在对话框中,您可以按照在Configuration parameters对话框中的方式浏览、搜索和获取与上下文相关的参数帮助。在Configuration Reference对话框的顶部,单击Model Configuration Parameters图标.打开“配置参数”对话框。现在可以像对任何配置集一样更改和应用参数值。
请注意
配置集中的一些选项不能在独立配置中使用,因为它们在一个特定的模型上执行操作。例如,数据导入/导出>连接输入按钮在独立的配置集中不受支持,因为它为使用该配置的模型打开根导入映射器。
在解算器窗格中,设置类型参数
固定步
.点击应用,然后好吧.应用的更改出现在“配置参考”对话框中。引用独立配置的模型
SharedConfig
使用新的求解器类型。
修改配置参考中的“参数值”
您可以覆盖引用独立配置集的模型的单个参数值,而不更改独立配置。对于被覆盖的参数,引用使用您在本地分配的值,而不是引用的配置集中的值。例如,假设这样LinearActuator
而且NonLinearActuator
都在同一个模型层次结构中。你想要的LinearActuator
被引用的次数,但希望Simulink返回一个错误,如果NonLinearActuator
被多次引用。在本例中,您可以重写模型参考>每个顶级模型允许的实例总数参数。NonLinearActuator
模型。
对于本例,覆盖模型配置引用中的参数NonLinearActuator
.
打开模型
NonLinearActuator
.打开“配置参考”对话框建模选项卡上,单击模型设置按钮.活动配置引用显示被引用配置的只读视图。
右键单击要更改的参数并选择覆盖从上下文菜单。您现在可以像更改任何配置集一样更改参数值。对于本例,覆盖该参数模型参考>每个顶级模型允许的实例总数并将该值设置为
一个
.在左窗格中,每个窗格显示其包含的被覆盖参数的数量。
点击应用保持变化或取消将参数恢复为引用值。
对参数值所做的更改只应用于覆盖和编辑参数的配置引用。它们不影响对被引用配置集的其他引用。对于本例,模型
NonLinearActuator
允许顶级模型引用它一次,而模型LinearActuator
允许一个顶级模型多次引用它。
若要将被覆盖的参数从引用的配置集中恢复为其值,请右键单击被覆盖的参数并选择恢复从上下文菜单。被覆盖的参数重置为引用配置中的值,并再次变为只读。
保存引用的配置集
如果将独立配置集存储在Simulink数据字典中,则可以通过保存数据字典来保存对配置的更改。
如果在退出MATLAB之前,您的模型引用了存储在基本工作区中的配置集®,您需要将引用的配置集保存到mat文件或MATLAB脚本中。
在模型资源管理器中,在模型层次结构中,选择基本工作空间.
在内容窗格中,右键单击引用的配置集对象的名称。
从上下文菜单中选择出口选择.
指定用于将配置集保存为mat文件或MATLAB脚本的文件名。
提示
当您重新打开模型时,您必须加载保存的配置集,否则配置引用将无法解析。要设置模型以自动加载配置集对象,请参见用回调自定义模型行为.
加载已保存的引用配置集
如果配置引用使用导出到mat文件或MATLAB脚本的配置集,则需要将引用的配置集从文件加载到基本工作区。
在模型资源管理器中,在模型层次结构中,右键单击基本工作空间.
从上下文菜单中选择进口.
指定保存的配置集的文件名并选择OK。配置集对象出现在基本工作区中。
配置引用限制
配置引用可以指向另一个配置引用,但不能在第二个引用之外嵌套配置引用。
如果在使用自定义目标时激活配置引用,则
ActivateCallback
函数不会触发以通知相应的独立配置集。同样,如果一个独立配置集从一个目标切换到另一个目标,则ActivateCallback
函数不会触发以通知新目标。即使活动配置引用指向该目标,也会发生此行为。有关ActivateCallback
功能,请参阅rtwgensettings结构(仿真软件编码器).并不是引用中的所有参数都可以被覆盖,例如,模型引用层次结构中必须一致的参数不能被覆盖。