在多个模型之间共享配置
要在多个模型之间共享配置集,请将其作为独立配置集存储在 Simulink® 数据字典或基础工作区中。默认情况下,配置集位于单个模型中,因此只有该模型可以使用它。独立配置集是一个 Simulink.ConfigSet
对象,您可以将其存储在模型之外以供多个模型使用。
要在模型中使用独立配置集,请在模型中创建一个指向该独立配置集的配置引用。然后,您可以采用与激活标准配置集相同的方式激活配置引用。多个模型可以引用同一个独立配置集。
如果需要执行以下操作,请使用配置引用:
在多个模型中使用相同的配置参数。在独立配置中更改参数值时,这些更改将应用于引用该配置的每个模型。
要在整个模型层次结构中共享一个配置集,您可以将引用从顶层模型传播到其引用模型。有关详细信息,请参阅Share a Configuration Across Referenced Models。
在不更改模型文件的情况下,更改任意数量模型的配置参数。当您在 Simulink 数据字典中存储配置集时,更改配置中的参数值会更改数据字典文件。链接到数据字典并引用配置集的模型会使用新值,但其模型文件不变。
在不更改模型文件的情况下,快速更换任意数量模型的配置集。当您在 Simulink 数据字典中存储配置集时,您可以从也存储在数据字典中的引用指向该配置。然后,您的模型可以引用数据字典的配置引用。当您更改数据字典的引用以指向不同配置集时,模型将使用新配置。
当配置引用引用基础工作区中的配置时,它指向表示
Simulink.ConfigSet
对象的变量。为该变量分配不同配置集会将该配置集分配给引用该变量的每个模型。
对于此示例,请将配置集存储在 Simulink 数据字典中,并从链接到数据字典的模型中引用该配置集。要创建和链接 Simulink 数据字典,请参阅迁移模型以使用 Simulink 数据字典。要共享已保存在模型中的配置集,请将该配置转换为引用的独立配置,如Share a Configuration Across Referenced Models中所示。
在数据字典中创建配置集
在从您的模型中引用独立配置集之前,请在 Simulink 数据字典中创建配置,并将其链接到您的模型。在此示例中,请使用 Simulink 工程弹体。该工程包含 Simulink 数据字典 system_model
以及链接到数据字典的多个模型。
打开工程。在命令行中,键入
openExample('simulink/AirframeProjectExample')
。在工程文件夹下的
data
文件夹中,双击 Simulink 数据字典system_model.sldd
。数据字典在模型资源管理器中打开。在模型层次结构窗格中,展开
system_model
的数据字典节点。右键点击该节点,然后点击显示空白节。选择“配置”节点,然后点击添加配置按钮 。配置集对象显示在目录窗格中,默认名称为
Configuration
。将新配置命名为
SharedConfig
。
对数据字典 system_model.sldd
具有访问权限的模型可以引用新配置。
创建并关联配置引用
要在模型中使用您的独立配置集,请关联指向该配置集的配置引用。在此示例中,请使用模型 LinearActuator
。该模型链接到 Simulink 数据字典 system_model.sldd
,其中包含您的新配置 SharedConfig
。
打开模型。在命令行中,键入
LinearActuator
。在模型资源管理器中的模型层次结构窗格中,选择模型节点。
选择添加 > 配置引用或点击添加配置引用按钮 。
在模型节点下,点击配置。将列出名为
Reference
的新配置引用。将配置引用命名为
LinActuatorRef
。
新配置引用会关联到模型,但它尚未指向独立配置且未处于活动状态。要完成设置,请解析并激活配置引用。
解析配置引用
未解析的配置引用是未指向有效配置集对象的配置引用。当您使用前面的步骤创建配置引用时,引用并未解析。
要解析您创建的配置引用,请执行下列步骤:
在模型层次结构窗格中,在
LinearActuator
模型的模型节点下,选择“配置”节点。在目录窗格中,选择未解析的配置引用LinActuatorRef
。右窗格显示配置引用未解析。
使用名称下拉菜单选择您在数据字典中创建的
SharedConfig
。提示
您可以指定配置引用的名称,而不是配置集的名称。但是,嵌套超出此深度的配置引用会导致错误。
点击应用。警告图标消失,引用指向您的独立配置集。
如果您的配置引用已解析,您可以按照以下步骤更改它引用的配置集。
激活配置引用
创建配置引用并将其关联到模型后,激活该引用以在模型中使用引用的配置。
在模型层次结构窗格中,在
LinearActuator
模型的模型节点下,选择“配置”节点。在目录窗格中,选择配置引用LinActuatorRef
。右键点击配置引用
LinActuatorRef
,然后选择激活。
当配置引用处于活动状态时,模型资源管理器显示具有后缀 (Active)
的引用名称。现在,由独立配置集为模型提供配置参数。
在另一个模型中创建配置引用
对于此示例,您将更新配置集,并查看它如何影响其关联的模型。重复上述过程,将 SharedConfig
与第二个模型关联起来:
打开模型
NonLinearActuator
。该模型还链接到包含独立配置集的数据字典。在模型资源管理器中,添加对模型
NonLinearActuator
的配置引用。将配置引用命名为
NonLinActuatorRef
。将引用指向独立配置集
SharedConfig
。激活配置引用。
现在,两个模型都包含指向 Simulink 数据字典中同一配置集对象的配置引用。
更改引用配置集中的参数值
您可以从指向独立配置集的引用的“配置引用”对话框中打开该配置集来进行编辑。更改独立配置集会影响引用它的配置引用,但在这些引用中被覆盖的参数除外。要编辑您从模型中引用的配置集,请执行下列步骤:
打开引用该配置集的一个模型。在此示例中,请打开模型
LinearActuator
。要打开“配置引用”对话框,请在建模选项卡上,点击模型设置按钮 。“配置引用”对话框显示引用的配置
SharedConfig
的只读视图。在该对话框中,您可以浏览、搜索和获取参数的上下文相关帮助,就像在“配置参数”对话框中一样。在“配置引用”对话框的顶部,点击模型配置参数图标 。“配置参数”对话框将打开。您现在可以更改和应用参数值,就像对任何配置集一样。
注意
配置集中的某些选项无法在独立配置中使用,因为它们对一个特定模型执行操作。例如,独立配置集中不支持数据导入/导出 > 连接输入按钮,因为它为使用该配置的模型打开了根输入端口映射器。
在求解器窗格中,将类型参数设置为
Fixed-step
。点击应用,然后点击确定。您应用的更改将出现在“配置引用”对话框中。引用独立配置
SharedConfig
的模型使用新求解器类型。
更改配置引用中的参数值
您可以覆盖引用独立配置集的模型的单个参数值,而无需更改独立配置。对于被覆盖的参数,引用使用您在本地分配的值,而不是在引用配置集中的值。例如,假设 LinearActuator
和 NonLinearActuator
在同一模型层次结构中。您希望根据需要引用 LinearActuator
任意多次,但希望在多次引用 NonLinearActuator
时 Simulink 返回错误。在此示例中,您可以仅针对 NonLinearActuator
模型覆盖模型引用 > 每个顶层模型允许的实例总数参数。
对于此示例,将覆盖模型 NonLinearActuator
的配置引用中的参数。
打开模型
NonLinearActuator
。要打开“配置引用”对话框,请在建模选项卡上,点击模型设置按钮 。活动配置引用显示引用配置的只读视图。
右键点击要更改的参数,并从上下文菜单中选择覆盖。您现在可以更改参数值,就像更改任何配置集的参数值一样。对于此示例,请覆盖参数模型引用 > 每个顶层模型允许的实例总数,并将值设置为
One
。在左窗格中,每个窗格显示所包含的被覆盖参数的数量。
点击应用保留更改,或点击取消将参数还原为引用的值。
对参数值所做的更改仅应用于您覆盖和编辑了其参数的配置引用。它们不影响对引用配置集的其他引用。对于此示例,模型
NonLinearActuator
允许顶层模型引用它一次,而模型LinearActuator
允许顶层模型多次引用它。
要将被覆盖的参数还原为它在引用配置集中的值,请右键点击被覆盖的参数,然后从上下文菜单中选择还原。被覆盖的参数将重置为它在引用配置中的值,并再次变为只读。
保存引用配置集
如果您将独立配置集存储在 Simulink 数据字典中,可以通过保存数据字典来保存对配置的更改。
如果您的模型引用存储在基础工作区中的配置集,则在退出 MATLAB® 之前,您需要将引用配置集保存到 MAT 文件或 MATLAB 脚本中。
在模型资源管理器的“模型层次结构”中,选择基础工作区。
在目录窗格中,右键点击引用配置集对象的名称。
从上下文菜单中,选择导出所选内容。
指定用于将配置集保存为 MAT 文件或 MATLAB 脚本的文件名。
提示
重新打开模型时,必须加载已保存的配置集,否则配置引用将处于未解析状态。要将模型设置为自动加载配置集对象,请参阅使用回调自定义模型行为。
加载已保存的引用配置集
如果您的配置引用使用您导出到 MAT 文件或 MATLAB 脚本的配置集,您需要将引用的配置集从文件加载到基础工作区。
在模型资源管理器的“模型层次结构”中,右键点击基础工作区。
从上下文菜单中,选择导入。
指定已保存配置集的文件名,然后选择“确定”。配置集对象显示在基础工作区中。
配置引用限制
配置引用可以指向另一个配置引用,但无法在第二个引用之外嵌套配置引用。
如果在使用自定义目标时激活配置引用,则
ActivateCallback
函数不会触发以通知对应的独立配置集。同样,如果独立配置集从一个目标切换到另一个目标,ActivateCallback
函数不会触发以通知新目标。即使活动配置引用指向该目标,也会发生此行为。有关ActivateCallback
函数的详细信息,请参阅 rtwgensettings 结构体 (Simulink Coder)。并非引用中的所有参数都可以覆盖,例如,不能覆盖在模型引用层次结构中必须保持一致的参数。