当您使用模型引用将大型模型系统分解为较小的组件和子组件时,您可以创建数据字典来隔离设计数据.设计数据是一组工作空间变量,模型用来指定块参数和信号特征。有关数据字典的基本信息,请参见什么是数据字典?.
要采用基于组件的方法进行数据管理,请创建一个包含公共数据的共享字典,并为每个包含该组件所需数据的组件创建一个单独的字典。
这个例子展示了如何将设计数据划分到字典中。当您完成时,系统中的每个组件都有一个字典,字典引用允许组件共享数据。
导航到文件夹
(打开).matlabroot
/帮助/工具/模型/例子金宝app
复制这些文件到一个可写文件夹:
ProjectData_Contr.mat
ProjectData_ContrSub1.mat
ProjectData_ContrSub2.mat
ProjectData_ContrSubs.mat
ProjectData_Plant.mat
ProjectData_System.mat
ex_SystemModel
ex_PlantComp_Lvl1
ex_PlantComp_Lvl2
ex_ContrComp
ex_ContrComp_Sub1_Lvl1
ex_ContrComp_Sub1_Lvl2
ex_ContrComp_Sub2_Lvl1
ex_ContrComp_Sub2_Lvl2
加载mat文件以在基础工作空间中创建设计数据。
打开示例模型ex_SystemModel
.该模型位于包含其他示例模型的引用层次结构的顶部。
在模型中,更新图表。模型中的每个总线信号使用金宝app仿真软件。公共汽车
对象作为数据类型。的对象,SensorBus
和CtrlBus
,在基本工作空间中。
被引用的模型ex_PlantComp_Lvl1
和ex_ContrComp
将总线对象用于根级输入和输出,这意味着植物和控制器组件共享对象。
在基本工作区中,双击金宝app仿真软件。NumericType
对象命名FloatType
.控制器组件中的信号、参数和其他数据项使用这种共享数据类型。
在模型浏览器中模型层次结构窗格中,展开节点ex_SystemModel。
单击配置
节点。在内容窗格中,节点参考SimConfigSet
出现了。SimConfigSet
是一个金宝app仿真软件。ConfigSet
对象在基本工作区中。为保持仿真配置参数的一致性,请参考层次中的所有模型SimConfigSet
.
右键单击节点控制器(ex_ContrComp)
并选择开放.
在模型浏览器中模型层次结构窗格中,展开新节点ex_ContrComp
.单击配置
节点。
在内容窗格中,节点参考CodeGenConfigSet
出现了。CodeGenConfigSet
是一个金宝app仿真软件。ConfigSet
对象在基本工作区中。为了维护代码生成的配置参数一致性,控制器组件中的模型参考CodeGenConfigSet
.工厂组件中的模型不使用CodeGenConfigSet
.
在模型层次结构窗格中,选择基本工作空间.在内容窗格中,右键单击该变量diff
并选择发现在使用.在选择一个系统对话框中,选择ex_SystemModel
并点击好吧.如果看到关于更新关系图的消息,请单击好吧.
在内容窗格中,变量diff
使用常数模型中的块ex_ContrComp_Sub1_Lvl1
和ex_ContrComp_Sub1_Lvl2
,它们组成第一个控制器子组件。类似地,层次结构中的其他模型共享基本工作区变量多项式系数
,初始化
,μ
,ρ
.
该表显示了在基本工作空间中共享每个变量的模型。
变量名 | 使用变量的模型 | 共享的范围 |
---|---|---|
CtrlBus |
工厂和控制器组件中的顶级模型 | 整个系统在全球共享 |
SensorBus |
工厂和控制器组件中的顶级模型 | 整个系统在全球共享 |
SimConfigSet |
层次结构中的所有模型 | 整个系统在全球共享 |
ρ |
ex_PlantComp_Lvl2 ,ex_ContrComp_Sub1_Lvl2 ,ex_ContrComp_Sub2_Lvl2 |
整个系统在全球共享 |
μ |
ex_PlantComp_Lvl1 和ex_PlantComp_Lvl2 |
由植物组件中的模型共享 |
FloatType |
控制器组件中的所有模型 | 由控制器组件和子组件共享 |
CodeGenConfigSet |
控制器组件中的所有模型 | 由控制器组件和子组件共享 |
初始化 |
ex_ContrComp_Sub1_Lvl2 和ex_ContrComp_Sub2_Lvl1 |
由控制器子组件共享 |
diff |
ex_ContrComp_Sub1_Lvl1 和ex_ContrComp_Sub1_Lvl2 |
由第一个控制器子组件中的模型共享 |
多项式系数 |
ex_ContrComp_Sub2_Lvl1 和ex_ContrComp_Sub2_Lvl2 |
由第二个控制器子组件中的模型共享 |
假设由不同的开发团队维护工厂组件和控制器组件。您可以使用数据字典来存储共享的设计数据并确定其范围。
创建一个共享的全局数据字典,其中包含整个系统共享的数据。
在模型资源管理器中,选择文件>新>数据字典.
将新字典名称设置为GlobalShare
并点击保存.
在模型层次结构窗格中,右键单击GlobalShare
节点并选择显示空的部分.
在模型层次结构窗格中,选择基本工作空间.在内容窗格中,选择整个系统全局共享的设计数据:CtrlBus
,SensorBus
,ρ
.
右键单击并选择复制.
在模型层次结构窗格中,右键单击设计数据
节点下GlobalShare
并选择粘贴.
同样,复制SimConfigSet
从基本工作空间复制到配置
节点下GlobalShare
.
为Plant组件中的模型共享的数据创建一个数据字典。将此字典中的引用添加到共享全局字典中。
在模型资源管理器中,选择文件>新>数据字典.
将新字典名称设置为植物
并点击保存.
在模型层次结构窗格中,选择节点植物
.在对话框窗格中,在引用字典,点击添加.
双击GlobalShare.sldd
.
在模型层次结构窗格中,右键单击该节点植物
并选择保存更改.
将Plant组件链接到它的组件字典,然后将Plant组件中模型共享的数据从基本工作空间迁移到字典。
打开模型ex_PlantComp_Lvl1
.
在模型中,更新图表。
如果多个不一致的定义在诊断视图中显示错误SimConfigSet
中,选择删除其他旁边的GlobalShare
实例。该修复将定义保留在GlobalShare
字典并删除模型可以看到的其他定义。
在建模选项卡,在设计,点击链接到数据字典.
在弹出的对话框中,单击浏览.
双击Plant.sldd
.
在模型属性对话框中,单击应用.点击改变所有的模型以响应关于链接引用模型的消息。
在模型属性对话框中,单击迁移数据.
在“数据迁移”对话框中,选择包括来自参考模型的数据然后点击迁移.
(可选)模型属性对话框,允许模型访问基本工作区.
删除前面加载模型数据的方法。在模型属性对话框中回调选项卡上,清晰的PreLoadFcn
的模型。
点击好吧.
创建包含控制器组件中模型共享的数据的数据字典。该字典还可以引用共享全局字典。
在模型资源管理器中,选择文件>新>数据字典.
将新字典名称设置为控制器
并点击保存.
在模型层次结构窗格中,选择节点控制器
.在对话框窗格中,在引用字典,点击添加.
双击GlobalShare.sldd
.
在模型层次结构窗格中,右键单击该节点控制器
并选择保存更改.
将Controller组件链接到它的组件字典,然后将Controller组件中模型共享的数据从基本工作空间迁移到字典。
打开模型ex_ContrComp
.
如果多个不一致的定义在诊断视图中显示错误SimConfigSet
中,选择删除其他旁边的GlobalShare
实例。该修复将定义保留在GlobalShare
字典并删除模型可以看到的其他定义。
在建模选项卡,在设计,点击链接到数据字典.
在弹出的对话框中,单击浏览.
双击Controller.sldd
.
在模型属性对话框中,单击应用.点击改变所有的模型以响应关于链接引用模型的消息。
在模型属性对话框中,单击迁移数据.
在“数据迁移”对话框中,选择包括来自参考模型的数据然后点击迁移.
(可选)模型属性对话框,允许模型访问基本工作区.
删除前面加载模型数据的方法。在模型属性对话框中回调选项卡上,清晰的PreLoadFcn
的模型。
点击好吧.
最后,将顶层模型链接到全局字典。
打开模型ex_SystemModel
.
在建模选项卡,在设计,点击链接到数据字典.
在弹出的对话框中,单击浏览.
双击GlobalShare.sldd
.
在模型属性对话框中,单击好吧.点击只更改此模型以响应关于链接引用模型的消息。
在模型浏览器中模型层次结构窗格中,选择字典节点Plant。在内容窗格中,以查看Plant.sldd
,点击显示当前系统和以下.将显示设计数据和配置部分的内容。
类似地,查看的内容Controller.sldd
.
的数据源列显示每个字典存储的变量和对象。
所有的全局共享变量,例如CtrlBus
和SensorBus
,居住在GlobalShare.sldd
.的变量初始化
,这两个控制器子组件共享Controller.sldd
.
如果分配给控制器组件的开发团队必须对全局共享变量进行更改,则他们将访问GlobalShare
字典文件。类似地,如果团队必须对变量进行更改初始化
,他们必须访问控制器
字典文件。
要查看整个字典和模型层次结构,请执行依赖项分析。
打开保存的模型ex_SystemModel
.
在建模选项卡,设计部分中,点击依赖分析仪.
系统模型,ex_SystemModel
,与本词典有关GlobalShare.sldd
.植物组件和控制器组件都链接到一个单独的字典。为了访问共享数据,组件字典引用字典GlobalShare.sldd
.这些字典形成了一个引用层次结构。
要了解模型引用层次结构中的模型如何共享数据,请使用以下技术:
在一个打开的模型中,在Modeling选项卡上,选择找到>找到参考变量.模型资源管理器显示模型使用的变量,以及引用模型使用的变量。然后,您可以右键单击变量并进行选择发现在使用显示使用该变量的所有模型。有关更多信息,请参见使用模型资源管理器编辑和管理工作区变量.
在命令提示符处,使用该函数金宝appSimulink.findVars
确定模型使用的变量。然后您可以使用该函数相交
确定两个模型、组件或子组件共享的变量。