主要内容

迁移模型以使用金宝app数据字典

一个金宝app仿真软件®数据字典永久存储模型数据,包括MATLAB®变量、数据对象和数据类型。有关数据字典的基本信息,请参见什么是数据字典?

迁移单一模型以使用字典

这个例子展示了如何将单个独立模型链接到单个数据字典。

请注意

金宝appSimulink不将仿真数据(如Timeseries对象)导入数据字典。

  1. 打开f14模型,它将设计数据加载到基本工作空间中。

  2. 将模型的副本保存到当前文件夹中。打开副本。

  3. 在Simuli金宝appnk编辑器中建模选项卡,在设计,点击数据字典链接

  4. 模型属性对话框,单击创建数据字典。

  5. 命名数据字典,保存它,然后单击应用

  6. 点击迁移数据

  7. 点击迁移响应关于复制引用变量的消息。

  8. (可选)明确启用对基本工作区的模型访问

  9. 点击好吧

  10. 要打开字典,请在Simulink编辑器中单击模型数据标记金宝app在左下角,然后单击外部数据链接。在Model Explorer中检查字典的内容模型层次结构窗格,在外部数据节点,展开字典节点。

迁移模型引用层次结构以使用字典

这个例子展示了如何将父模型及其所有引用模型链接到单个数据字典。

  1. 打开sldemo_mdlref_datamngt模型。

    openExample (“sldemo_mdlref_datamngt”
    sldemo_mdlref_datamngt模型引用sldemo_mdlref_counter_datamngt

  2. 将模型的副本保存到当前文件夹中。

  3. 打开顶层模型,sldemo_mdlref_datamngt

  4. 在Simuli金宝appnk编辑器中建模选项卡,在设计,点击数据字典链接

  5. 模型属性对话框,单击创建数据字典。

  6. 命名数据字典,保存它,然后单击应用

  7. 点击更改所有模型回复关于链接尚未使用字典的引用模型的消息。

  8. 点击迁移数据

  9. 点击迁移响应关于复制引用变量的消息。

  10. (可选)明确启用对基本工作区的模型访问

  11. 点击好吧

迁移到数据字典前的注意事项

在将模型链接到数据字典之后,您可以选择将数据从基本工作区迁移到字典中。如果选择迁移数据,请考虑这些因素。

检查数据加载回调

可以使用模型回调函数,例如PreLoadFcn在加载模型时将设计数据从文件加载到基本工作区的回调。例如,下面的回调函数从MAT文件加载设计数据myData.mat

负载myData

迁移到数据字典后,这些回调将继续将设计数据加载到基本工作空间中。由于模型随后从字典中派生设计数据,因此需要手动删除或注释掉这些数据加载回调。

您可以使用Dependency Analyzer来查找数据加载回调。看到分析模型依赖关系

检查脚本

默认情况下,新模型可以访问基本工作空间,但当它链接到数据字典时不会失去访问权。在编写脚本时,必须假设模型可以访问基本工作区、数据字典或两者都有。

如果使用句柄显式引用基本工作区基地在脚本中,考虑更改这些引用。

考虑这个例子。在这里,脚本在基本工作区中搜索变量传感器并设置参数启用的值sensor.noiseEnable

if evalin('base','sensor.noiseEnable') enable = '启用';else enable = '禁用';结束

迁移到数据字典时,将这些显式引用替换为基地如下:

如果S金宝appimulink.data.evalinGlobal (myExampleModel,…'sensor.noiseEnable') enable = '启用';else enable = '禁用';结束
金宝appSimulink.data.evalinGlobal函数在指定模型的全局作用域中计算表达式。在这里,如果模型没有链接到字典,全局作用域可以在数据字典中,也可以在基本工作空间中。

检查代码生成的可调参数

  • 如果您的模型链接到数据字典,并且模型不能访问基本工作区(请参阅继续在基本工作区中使用共享数据), 金宝appSimulink会忽略“模型参数配置”对话框中指定的存储类信息。

  • 如果您使用Simulink接口金宝app来迁移模型以使用数据字典,并且您选择迁移基本工作区数据,那么Simulink还会迁移模型的存储类信息。如果您的模型包含基本工作空间中变量的存储类信息,Simulink将这些变量转换为金宝app金宝app仿真软件。参数迁移过程中的对象。然后,Sim金宝appulink设置这些的存储类金宝app仿真软件。参数对象使用来自模型的存储类信息。

  • 如果将此模型迁移回基本工作空间,Simulink不会恢复模型中的存储类信息。金宝app要为这些变量保留存储类,请使用数据字典中的参数对象。您还可以手动重置模型中的存储类信息。

  • 如果你设置DataDictionary属性,则可以将可调变量转换为金宝app仿真软件。参数对象使用tunablevars2parameterobjects函数。

模型引用使用的数据

当您使用模型引用将大型模型系统分解为较小的组件和子组件时,您可以创建数据字典来分离模型使用的数据。模型层次结构中的不同模型可以连接到不同的字典来查看不同的数据集。

模型引用层次结构的数据源包括这些数据字典以及基本工作空间。在大多数情况下,当一个符号在一金宝app个模型引用层次结构的数据源中定义了不止一次时,Simulink会报告一个错误。但是,在以下条件下,层次结构中可能存在重复的数据定义:

  • 层次结构中的每个模型只能看到一个定义。

  • 层次结构中各个模型的定义是相同的。

您可以通过设置模型参数来放宽第二个条件EnforceDataConsistency.在“模型属性”对话框中,在外部数据选项卡,清除在引用的模型之间强制执行一致的数据定义复选框。或将参数设置为方法以编程方式实现set_param函数。

set_param (bdroot“EnforceDataConsistency”,“关闭”);

通过这个参数设置,当前模型和模型层次结构中它下面的模型可以使用名称相同但值不同的符号,只要满足第一个条件。此设置允许您更轻松地集成Simulink模型以进行大规模仿真。金宝app

默认情况下,EnforceDataConsistency参数设置为.你不能设置EnforceDataConsistency对于一个模型,除非它的每个引用模型及其变体也设置EnforceDataConsistency

设置EnforceDataConsistency导致以下错误:

  • 代码生成

  • SIL和PIL模拟

  • 受保护模型的仿真

有关更多信息,请参见确定在哪里存储Simulink模型的变量和对象金宝app

有效的设计数据类

您可以导入、存储或创建使用simulink支持的数据类型的MATLAB变量,例如金宝app金宝app布尔而且int32的结构设计数据部分的Simulink数据金宝app字典。你也可以使用这些类的对象和大多数类的子类的对象:

  • 金宝app仿真软件。AliasType

  • 金宝app仿真软件。公共汽车

  • 金宝app仿真软件。NumericType

  • 金宝app仿真软件。参数

  • 金宝app仿真软件。LookupTable

  • 金宝app仿真软件。断点

  • 金宝app仿真软件。信号

  • 金宝app仿真软件。ValueType

  • 金宝app仿真软件。变体

  • 金宝appSimulink.data.dictionary.EnumTypeDefinition

  • embedded.fi

  • embedded.fimath

  • numlti

类中导入、存储或创建这些类的配置对象配置Simulink数据字典的金宝app部分:

无效的其他数据类

中可以导入、存储或创建许多内置和自定义类或数据类型的数据对象其他数据部分的Simulink数据金宝app字典,除了以下:

  • 从内置类或自定义类创建的对象数组

  • 自定义类具有以下任意名称的属性:

    • LastModified

    • LastModifiedBy

    • 数据源

    • 状态

    • 变体

迁移与从工作空间

如果模型包含从工作空间块中引用基本工作区中的变量,则可以将模型迁移到数据字典中。然而,迁移过程根据块引用的变量的性质采取不同的操作:

  • 如果变量的值不是atimeseries对象时,迁移过程将变量导入到数据字典的Design Data部分。块仍然可以引用变量。

  • 如果变量的值是atimeseries对象(数据字典无法存储)或具有与时间序列对象相同字段的结构,则迁移过程不会导入该变量。然后,当您尝试更新图表或模拟模型时,从工作空间块无法找到该变量并发出错误。类将块配置为引用基本工作区变量evalin函数。有关更多信息,请参见从工作空间

数据字典限制

  • 金宝appSimulink不能自动将仅由非活动变量模型使用的变量迁移到数据字典中。

  • 不能导入某些类型的设计数据,例如类对象和timeseries对象放入数据字典的设计数据部分。

  • 金宝appSimulink不允许对链接到数据字典的模型进行隐式信号解析。要使用数据字典,请设置模型配置参数信号的分辨率明确的只没有一个

  • 如果模型引用层次结构已经链接到数据字典,您可以保护作为层次结构一部分的引用模型。但是,如果您迁移了一个包含受保护模型的模型引用层次结构,模拟将会失败。

    换句话说,在保护模型之前迁移模型以使用数据字典。

  • 可能不支持对包含存储在数据字典中的Simulink变量或数据类型的表达式求值。金宝app金宝app

继续在基本工作区中使用共享数据

您可以继续在基本工作空间中存储共享数据,并在数据字典中存储特定于模型的数据:

  • 启用对模型的基本工作区的访问。

  • 允许从数据字典访问基本工作空间。

要启用对模型的基本工作区的访问,请在“模型属性”对话框中外部数据选项卡上,选择启用对基本工作区的模型访问.对于新模型,默认情况下选中此复选框。如果模型没有链接到数据字典,则必须选择此选项。

还可以允许从数据字典访问基本工作区。对于现有的字典,在模型资源管理器中选择启用对基本工作区的字典访问

当您允许从数据字典访问基本工作空间时,将应用以下限制和分支:

  • 通常,您不能通过字典与基本工作区数据交互。

    • 当您在Model Explorer中检查字典的内容时,您无法看到基本工作区数据。要与基本工作区数据交互,请在模型层次结构窗格中,选择基本工作空间节点。

    • 使用数据字典的编程接口(请参阅以编程方式在字典中存储数据),以与基本工作区数据交互,您只能使用这些函数与金宝appSimulink.data.dictionary.Section对象:

      • assignin

      • 存在

      • evalin

      考虑使用函数金宝appSimulink.data.assigninGlobal代替。看到过渡到使用数据字典

  • 更改跟踪功能,例如查看和恢复对字典条目的更改的能力(参见查看并恢复对字典条目的更改),并不适用于基本工作区数据。

  • 从字典导出数据时(请参阅导入和导出字典数据), 金宝appSimulink会忽略基本的工作空间数据。

  • 金宝appSimulink将基本工作区和字典视为单个名称空间。但是,您可以定义两个具有相同名称的变量,一个在基本工作空间中,另一个在字典中。在这种情况下,变量必须相同,并且使用字典中的变量。

使用共享数据迁移复杂的模型层次结构

有关示例,请参见使用数据字典为模型引用层次结构划分数据

另请参阅

相关的话题