主要内容

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

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

将单个模型迁移到Use Dictionary

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

请注意

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

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

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

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

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

  5. 命名数据字典并保存,单击应用

  6. 点击迁移数据

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

  8. (可选)明确允许模型访问基本工作区

  9. 点击好吧

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

将模型引用层次结构迁移到Use Dictionary

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

  1. 打开示例模型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

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

您可以使用依赖项分析器来查找数据加载回调。看到分析模型的依赖性

检查脚本

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

如果您使用句柄对基本工作空间进行显式引用基地在脚本中,考虑更改这些引用。

考虑一下这个例子。在这里,脚本在基本工作区中搜索变量传感器然后设置参数启用取决于值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函数。

模型引用使用的数据

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

模型引用层次结构中的模型通常共享数据。数据所有权、共享变量的数量以及共享策略的复杂性都会影响使用字典的方式。

在以下条件下,模型引用层次结构中可以存在重复的数据定义:

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

  • 在层次结构中的模型之间定义必须相同。

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

有效的设计数据类

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

  • 金宝app仿真软件。AliasType

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

  • 金宝app仿真软件。NumericType

  • 金宝app仿真软件。参数

  • 金宝app仿真软件。LookupTable

  • 金宝app仿真软件。断点

  • 金宝app仿真软件。信号

  • 金宝app仿真软件。变体

  • 金宝appSimulink.data.dictionary.EnumTypeDefinition

  • embedded.fi

  • embedded.fimath

  • numlti

控件中可以导入、存储或创建下列类的配置对象配置部分的Simulink数据金宝app字典。

其他数据类无效

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

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

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

    • LastModified

    • LastModifiedBy

    • 数据源

    • 状态

    • 变体

迁移与从工作空间

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

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

  • 如果变量的值是atimeseries对象(数据字典无法存储的对象)或字段与时间序列对象相同的结构,迁移过程不会导入该变量。然后,当您尝试更新图表或模拟模型时,从工作空间块无法找到变量并发出错误。在这种情况下,您可以通过使用evalin函数。看到与数据字典一起使用

数据字典的局限性

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

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

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

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

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

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

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

  • 支持对模型的基本工作空间的访问。

  • 启用从数据字典访问基本工作空间。

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

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

当您允许从数据字典访问基本工作区时,将会出现以下限制和后果:

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

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

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

      • assignin

      • 存在

      • evalin

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

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

  • 当您从字典中导出数据时(参见导入和导出字典数据), 金宝appSimulink忽略基本工作区数据。

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

迁移带有共享数据的复杂模型层次结构

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

另请参阅

|

相关的话题