主要内容

使用数据字典为模型引用层次划分数据

当您使用模型引用将大型模型系统分解为较小的组件和子组件时,您可以创建数据字典来隔离设计数据.设计数据是一组工作空间变量,模型用来指定块参数和信号特征。有关数据字典的基本信息,请参见什么是数据字典?

要采用基于组件的方法进行数据管理,请创建一个包含公共数据的共享字典,并为每个包含该组件所需数据的组件创建一个单独的字典。

为每个组件创建一个字典

这个例子展示了如何将设计数据划分到字典中。当您完成时,系统中的每个组件都有一个字典,字典引用允许组件共享数据。

探索示例模型层次结构

  1. 导航到文件夹matlabroot/帮助/工具/模型/例子金宝app(打开)

  2. 复制这些文件到一个可写文件夹:

    • 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

  3. 加载mat文件以在基础工作空间中创建设计数据。

  4. 打开示例模型ex_SystemModel.该模型位于包含其他示例模型的引用层次结构的顶部。

  5. 在模型中,更新图表。模型中的每个总线信号使用金宝app仿真软件。公共汽车对象作为数据类型。的对象,SensorBusCtrlBus,在基本工作空间中。

    被引用的模型ex_PlantComp_Lvl1ex_ContrComp将总线对象用于根级输入和输出,这意味着植物和控制器组件共享对象。

  6. 在基本工作区中,双击金宝app仿真软件。NumericType对象命名FloatType.控制器组件中的信号、参数和其他数据项使用这种共享数据类型。

  7. 在模型浏览器中模型层次结构窗格中,展开节点ex_SystemModel。

    单击配置节点。在内容窗格中,节点参考SimConfigSet出现了。SimConfigSet是一个金宝app仿真软件。ConfigSet对象在基本工作区中。为保持仿真配置参数的一致性,请参考层次中的所有模型SimConfigSet

  8. 右键单击节点控制器(ex_ContrComp)并选择开放

  9. 在模型浏览器中模型层次结构窗格中,展开新节点ex_ContrComp.单击配置节点。

    内容窗格中,节点参考CodeGenConfigSet出现了。CodeGenConfigSet是一个金宝app仿真软件。ConfigSet对象在基本工作区中。为了维护代码生成的配置参数一致性,控制器组件中的模型参考CodeGenConfigSet.工厂组件中的模型不使用CodeGenConfigSet

  10. 模型层次结构窗格中,选择基本工作空间.在内容窗格中,右键单击该变量diff并选择发现在使用.在选择一个系统对话框中,选择ex_SystemModel并点击好吧.如果看到关于更新关系图的消息,请单击好吧

    内容窗格中,变量diff使用常数模型中的块ex_ContrComp_Sub1_Lvl1ex_ContrComp_Sub1_Lvl2,它们组成第一个控制器子组件。类似地,层次结构中的其他模型共享基本工作区变量多项式系数初始化μ,ρ

该表显示了在基本工作空间中共享每个变量的模型。

变量名 使用变量的模型 共享的范围
CtrlBus 工厂和控制器组件中的顶级模型 整个系统在全球共享
SensorBus 工厂和控制器组件中的顶级模型 整个系统在全球共享
SimConfigSet 层次结构中的所有模型 整个系统在全球共享
ρ ex_PlantComp_Lvl2ex_ContrComp_Sub1_Lvl2,ex_ContrComp_Sub2_Lvl2 整个系统在全球共享
μ ex_PlantComp_Lvl1ex_PlantComp_Lvl2 由植物组件中的模型共享
FloatType 控制器组件中的所有模型 由控制器组件和子组件共享
CodeGenConfigSet 控制器组件中的所有模型 由控制器组件和子组件共享
初始化 ex_ContrComp_Sub1_Lvl2ex_ContrComp_Sub2_Lvl1 由控制器子组件共享
diff ex_ContrComp_Sub1_Lvl1ex_ContrComp_Sub1_Lvl2 由第一个控制器子组件中的模型共享
多项式系数 ex_ContrComp_Sub2_Lvl1ex_ContrComp_Sub2_Lvl2 由第二个控制器子组件中的模型共享

假设由不同的开发团队维护工厂组件和控制器组件。您可以使用数据字典来存储共享的设计数据并确定其范围。

创建共享全局字典

创建一个共享的全局数据字典,其中包含整个系统共享的数据。

  1. 在模型资源管理器中,选择文件>>数据字典

  2. 将新字典名称设置为GlobalShare并点击保存

  3. 模型层次结构窗格中,右键单击GlobalShare节点并选择显示空的部分

  4. 模型层次结构窗格中,选择基本工作空间.在内容窗格中,选择整个系统全局共享的设计数据:CtrlBusSensorBus,ρ

  5. 右键单击并选择复制

  6. 模型层次结构窗格中,右键单击设计数据节点下GlobalShare并选择粘贴

  7. 同样,复制SimConfigSet基本工作空间复制到配置节点下GlobalShare

为植物组件创建字典

为Plant组件中的模型共享的数据创建一个数据字典。将此字典中的引用添加到共享全局字典中。

  1. 在模型资源管理器中,选择文件>>数据字典

  2. 将新字典名称设置为植物并点击保存

  3. 模型层次结构窗格中,选择节点植物.在对话框窗格中,在引用字典,点击添加

  4. 双击GlobalShare.sldd

  5. 模型层次结构窗格中,右键单击该节点植物并选择保存更改

将植物组件链接到字典并迁移数据

将Plant组件链接到它的组件字典,然后将Plant组件中模型共享的数据从基本工作空间迁移到字典。

  1. 打开模型ex_PlantComp_Lvl1

  2. 在模型中,更新图表。

  3. 如果多个不一致的定义在诊断视图中显示错误SimConfigSet中,选择删除其他旁边的GlobalShare实例。该修复将定义保留在GlobalShare字典并删除模型可以看到的其他定义。

  4. 建模选项卡,在设计,点击链接到数据字典

  5. 在弹出的对话框中,单击浏览

  6. 双击Plant.sldd

  7. 模型属性对话框中,单击应用.点击改变所有的模型以响应关于链接引用模型的消息。

  8. 模型属性对话框中,单击迁移数据

  9. 在“数据迁移”对话框中,选择包括来自参考模型的数据然后点击迁移

  10. (可选)模型属性对话框,允许模型访问基本工作区

  11. 删除前面加载模型数据的方法。在模型属性对话框中回调选项卡上,清晰的PreLoadFcn的模型。

  12. 点击好吧

为控制器组件创建字典

创建包含控制器组件中模型共享的数据的数据字典。该字典还可以引用共享全局字典。

  1. 在模型资源管理器中,选择文件>>数据字典

  2. 将新字典名称设置为控制器并点击保存

  3. 模型层次结构窗格中,选择节点控制器.在对话框窗格中,在引用字典,点击添加

  4. 双击GlobalShare.sldd

  5. 模型层次结构窗格中,右键单击该节点控制器并选择保存更改

将控制器组件链接到字典并迁移数据

将Controller组件链接到它的组件字典,然后将Controller组件中模型共享的数据从基本工作空间迁移到字典。

  1. 打开模型ex_ContrComp

  2. 如果多个不一致的定义在诊断视图中显示错误SimConfigSet中,选择删除其他旁边的GlobalShare实例。该修复将定义保留在GlobalShare字典并删除模型可以看到的其他定义。

  3. 建模选项卡,在设计,点击链接到数据字典

  4. 在弹出的对话框中,单击浏览

  5. 双击Controller.sldd

  6. 模型属性对话框中,单击应用.点击改变所有的模型以响应关于链接引用模型的消息。

  7. 模型属性对话框中,单击迁移数据

  8. 在“数据迁移”对话框中,选择包括来自参考模型的数据然后点击迁移

  9. (可选)模型属性对话框,允许模型访问基本工作区

  10. 删除前面加载模型数据的方法。在模型属性对话框中回调选项卡上,清晰的PreLoadFcn的模型。

  11. 点击好吧

链接系统到全局字典

最后,将顶层模型链接到全局字典。

  1. 打开模型ex_SystemModel

  2. 建模选项卡,在设计,点击链接到数据字典

  3. 在弹出的对话框中,单击浏览

  4. 双击GlobalShare.sldd

  5. 模型属性对话框中,单击好吧.点击只更改此模型以响应关于链接引用模型的消息。

检查数据存储

在模型浏览器中模型层次结构窗格中,选择字典节点Plant。在内容窗格中,以查看Plant.sldd,点击显示当前系统和以下.将显示设计数据和配置部分的内容。

类似地,查看的内容Controller.sldd

数据源列显示每个字典存储的变量和对象。

所有的全局共享变量,例如CtrlBusSensorBus,居住在GlobalShare.sldd.的变量初始化,这两个控制器子组件共享Controller.sldd

如果分配给控制器组件的开发团队必须对全局共享变量进行更改,则他们将访问GlobalShare字典文件。类似地,如果团队必须对变量进行更改初始化,他们必须访问控制器字典文件。

检查字典层次结构

要查看整个字典和模型层次结构,请执行依赖项分析。

  1. 打开保存的模型ex_SystemModel

  2. 建模选项卡,设计部分中,点击依赖分析仪

系统模型,ex_SystemModel,与本词典有关GlobalShare.sldd.植物组件和控制器组件都链接到一个单独的字典。为了访问共享数据,组件字典引用字典GlobalShare.sldd.这些字典形成了一个引用层次结构。

发现共享数据的策略

要了解模型引用层次结构中的模型如何共享数据,请使用以下技术:

  • 在一个打开的模型中,在Modeling选项卡上,选择找到>找到参考变量.模型资源管理器显示模型使用的变量,以及引用模型使用的变量。然后,您可以右键单击变量并进行选择发现在使用显示使用该变量的所有模型。有关更多信息,请参见使用模型资源管理器编辑和管理工作区变量

  • 在命令提示符处,使用该函数金宝appSimulink.findVars确定模型使用的变量。然后您可以使用该函数相交确定两个模型、组件或子组件共享的变量。

相关的话题