一个万博1manbetx仿真软件®数据字典永久存储模型数据,包括MATLAB®变量、数据对象和数据类型。有关数据字典的基本信息,请参见什么是数据字典?.
这个示例展示了如何将单个独立模型链接到单个数据字典。
万博1manbetxSimulink不会将仿真数据(如Timeseries对象)导入数据字典。
打开f14
模型,它将设计数据加载到基本工作空间中。
将模型的副本保存到当前文件夹中。打开复制。
在Simuli万博1manbetxnk编辑器中,单击文件>模型属性>链接到数据字典.
在模型属性对话框中,设置模型是指来数据字典并点击新创建数据字典。
命名数据字典并保存,单击应用.
点击添加路径,如果您看到将字典位置添加到MATLAB路径的消息。
点击好吧以响应迁移引用变量的消息。
点击是的以响应关于从基本工作空间删除导入项的消息。
点击好吧在模型属性对话框。
一个通知出现在Simulink Editor中,报告您的模型万博1manbetx现在已链接到数据字典。
在Simuli万博1manbetxnk编辑器中,单击数据字典标识在左下角打开字典。要检查字典的内容,请在模型资源管理器中模型层次结构窗格中,选择字典节点下的一个节点。
这个例子展示了如何将父模型及其所有引用模型链接到一个数据字典。
打开示例模型sldemo_mdlref_datamngt
,它引用模型sldemo_mdlref_counter_datamngt
.
将模型的副本保存到当前文件夹中。
打开顶部模型,sldemo_mdlref_datamngt
.
在Simuli万博1manbetxnk编辑器中,单击文件>模型属性>链接到数据字典.
在模型属性对话框中,设置模型是指来数据字典并点击新创建数据字典。
命名数据字典并保存,单击应用.
点击好吧以响应迁移引用变量的消息。
点击是的以响应关于从基本工作空间删除导入项的消息。
点击好吧以响应关于迁移枚举类型的消息。
当您将模型链接到数据字典时,您可以选择将数据从基本工作空间迁移到字典中。如果选择迁移数据,请考虑以下事项。
可以使用模型回调,例如PreLoadFcn
当模型加载时,回调将设计数据从文件加载到基本工作空间。例如,下面的回调从MAT文件加载设计数据myData.mat
.
负载myData
迁移到数据字典之后,这些回调将继续将设计数据加载到基本工作空间中。由于模型然后从字典中派生设计数据,因此需要手动删除或注释掉这些数据加载回调。
您可以使用Simulink Ma万博1manbetxnifest Tools来查找数据加载回调。看到分析模型的依赖性.
如果您使用句柄对基本工作空间进行显式引用基地
在脚本中,考虑更改这些引用。当您将任何数据移动到数据字典中时,模型不再查看基本工作区以查找设计数据。
在将设计数据迁移到数据字典之后,对基本工作空间的显式引用无法解决,并且可能发生错误。
考虑一下这个例子。在这里,脚本在基本工作区中搜索变量传感器
然后设置参数启用
取决于值sensor.noiseEnable
.
if evalin('base','sensor.noiseEnable') enable = '已启用';else enable = '禁用';结束
当迁移到数据字典时,将这些显式引用替换为基地
如下:
如果S万博1manbetximulink.data.evalinGlobal (myExampleModel,…'sensor.noiseEnable') enable = '已启用';else enable = '禁用';结束
万博1manbetxSimulink.data.evalinGlobal
函数在指定模型的全局范围内计算表达式。在这里,如果模型没有链接到字典,则全局作用域可以在数据字典或基本工作空间中。
如果您的模型链接到一个数据字典,而该字典不提供对基本工作空间的访问(参见在基本工作区中继续使用共享数据), 万博1manbetxSimulink将忽略在“模型参数配置”对话框中指定的存储类信息。
如果您使用Simulink接口万博1manbetx来迁移模型以使用数据字典,并且您选择迁移基础工作空间数据,那么Simulink也迁移模型的存储类信息。如果您的模型在基本工作空间中包含变量的存储类信息,那么Simulink会将这些变量转换为万博1manbetx万博1manbetx仿真软件。参数
在迁移对象。然后,Sim万博1manbetxulink设置它们的存储类万博1manbetx仿真软件。参数
对象使用来自模型的存储类信息。
如果您将该模型迁移回基本工作空间,那么Simulink不会恢复模型中的存储类信息。万博1manbetx要保留这些变量的存储类,请使用数据字典中的参数对象。您还可以手动重置模型中的存储类信息。
如果你设置DataDictionary
属性,您可以将可调变量转换为万博1manbetx仿真软件。参数
对象的使用tunablevars2parameterobjects
函数。
当您使用模型引用将大型模型系统分解为较小的组件和子组件时,您可以创建数据字典来隔离设计数据.设计数据是一组工作空间变量,模型用来指定块参数和信号特征。
模型引用层次结构中的模型通常共享数据。数据所有权、共享变量的数量以及共享策略的复杂性都会影响使用字典的方式。有关更多信息,请参见确定Simulink模型中变量和对象的存储位置万博1manbetx.
您可以使用Simulink支持的数据类型导入、存储或创建MATLAB变量,例如万博1manbetx万博1manbetx布尔
和int32
的结构设计数据部分的Simulink数据万博1manbetx字典。你也可以使用这些类的对象,以及子类化这些类的大多数类的对象:
万博1manbetx仿真软件。AliasType
万博1manbetx仿真软件。公共汽车
万博1manbetx仿真软件。NumericType
万博1manbetx仿真软件。参数
万博1manbetx仿真软件。LookupTable
万博1manbetx仿真软件。断点
万博1manbetx仿真软件。信号
万博1manbetx仿真软件。变体
万博1manbetxSimulink.data.dictionary.EnumTypeDefinition
embedded.fi
embedded.fimath
numlti
控件中可以导入、存储或创建下列类的配置对象配置部分的Simulink数据万博1manbetx字典。
控件中可以导入、存储或创建许多内置和自定义类或数据类型的数据对象其他数据部分的Simulink数据万博1manbetx字典,除了以下:
由内置类或自定义类创建的对象数组
自定义类具有以下任意名称的属性:
LastModified
LastModifiedBy
数据源
状态
变体
如果一个模型包含从工作空间块引用基本工作空间中的变量,则可以将模型迁移到数据字典中。然而,迁移过程会根据块所指代的变量的性质采取不同的行动:
如果变量的值不是timeseries
对象时,迁移过程将该变量导入到数据字典的Design Data部分。块仍然可以引用变量。
如果变量的值是atimeseries
对象(数据字典无法存储的对象),迁移过程不会导入该变量。然后,当您尝试更新图表或模拟模型时,从工作空间块无法找到变量并发出错误。在这种情况下,您可以通过使用evalin
函数。看到与数据字典一起使用.
万博1manbetxSimulink不能自动将仅由非活动变量模型使用的变量迁移到数据字典中。
您不能导入某些类型的设计数据,例如元
类对象,timeseries
对象放入数据字典的设计数据部分。
万博1manbetxSimulink不允许对链接到数据字典的模型进行隐式信号解析。要使用数据字典,请设置模型配置参数信号的分辨率来明确的只
或没有一个
.
如果模型引用层次结构已经链接到数据字典,则可以保护作为层次结构一部分的被引用模型。但是,如果迁移包含受保护模型的模型引用层次结构,模拟将会失败。
换句话说,在保护模型之前,迁移模型以使用数据字典。
默认情况下,将模型链接到字典将阻止模型在基本工作空间中使用变量和对象。当多个模型依赖于基本工作空间中的共享变量或对象时,这种限制会使模型的迁移具有挑战性。
您还可以配置一个字典,为模型提供对基本工作空间的访问。然后,您可以在基本工作空间中存储共享数据,并在字典中存储特定于模型的数据。要以这种方式配置字典,请选择以下技术之一:
将模型链接到新字典时,在将模型链接到数据字典对话框,从基本工作区迁移引用的变量.在链接模型之后,Simulink选择dictionary属性万博1manbetx允许访问基本工作区.
对于现有字典,在模型资源管理器中,选择允许访问基本工作区.
当您选择允许访问基本工作区对于一本词典来说,以下限制和影响是适用的:
该设置可以对其他模型和字典产生重大影响。引用目标字典的字典(参见字典引用)和所有祖先字典也提供了访问基本工作空间的模型。
一般来说,对于引用模型的层次结构,Simulink要求您建立相应的、完整的引用字典层次结构(参见万博1manbetx使用数据字典为模型引用层次划分数据).选择允许访问基本工作区对于低级模型的字典或重要的、广泛共享的字典,可能会显著影响整个模型层次结构。
例如,如果一个位于层次结构中间的字典定义了一个名为myvar#
基本工作空间定义了一个同名的不同变量,默认情况下,变量名不冲突。然而,当您选择允许访问基本工作区在低级字典中,变量名称开始冲突,生成诊断查看器错误。
通常,您不能通过字典与基本工作空间数据进行交互。
当您在Model Explorer中检查字典的内容时,您无法看到基本工作区数据。要与基本工作空间数据交互,请在模型层次结构窗格中,选择基本工作空间节点。
使用数据字典的编程接口(参见以编程方式在字典中存储数据),要与基本工作空间数据交互,您只能使用这些函数万博1manbetxSimulink.data.dictionary.Section
对象:
assignin
存在
evalin
考虑使用诸如万博1manbetxSimulink.data.assigninGlobal
代替。看到过渡到使用数据字典.
变更跟踪功能,例如查看和恢复对字典条目的变更(参见查看和恢复对字典条目的更改),不应用于基本工作区数据。
当您从字典中导出数据时(参见导入和导出字典数据), 万博1manbetxSimulink忽略基本工作区数据。
万博1manbetxSimulink将基本工作空间和字典视为单个名称空间。不能定义两个名称相同的变量,一个在基本工作空间中,一个在字典中。
例如,包括一个展示如何使用允许访问基本工作区要启用增量迁移,请参见使用数据字典为模型引用层次划分数据.