模拟金宝app®数据字典永久存储模型数据,包括MATLAB®变量、数据对象和数据类型。有关数据字典的基本信息,请参见什么是数据字典?。
这个示例展示了如何将单个独立模型链接到单个数据字典。
请注意
金宝appSimulink不会将仿真数据(如Timeseries对象)导入数据字典。
打开f14
模型,该模型将设计数据加载到基本工作空间中。
将模型的副本保存到当前文件夹中。打开复制。
在Simuli金宝appnk编辑器中建模选项卡,在设计点击链接到数据字典。
在模型属性对话框中,单击新创建数据字典。
命名数据字典,保存它,然后单击应用。
点击迁移数据。
点击迁移以响应关于复制引用变量的消息。
(可选)明确启用对基本工作区的模型访问。
点击好吧。
要打开字典,在Simulink Editor中,单击模型数据标金宝app识在左下角,然后点击外部数据链接。要检查字典的内容,请在模型资源管理器中模型层次结构窗格中,在外部数据节点,展开字典节点。
这个例子展示了如何将父模型及其所有引用模型链接到一个数据字典。
打开示例模型sldemo\U mdlref\U datamngt
,它引用模型sldemo_mdlref_counter_datamngt
。
将模型的副本保存到当前文件夹中。
打开顶部模型,sldemo\U mdlref\U datamngt
。
在Simuli金宝appnk编辑器中建模选项卡,在设计点击链接到数据字典。
在模型属性对话框中,单击新创建数据字典。
命名数据字典,保存它,然后单击应用。
点击改变所有的模型响应关于链接尚未使用字典的引用模型的消息。
点击迁移数据。
点击迁移以响应关于复制引用变量的消息。
(可选)明确启用对基本工作区的模型访问。
点击好吧。
在将模型链接到数据字典之后,可以选择将数据从基本工作空间迁移到字典中。如果选择迁移数据,请考虑以下事项。
可以使用模型回调,例如PreLoadFcn
在加载模型时将设计数据从文件加载到基本工作区的回调。例如,以下回调从MAT文件加载设计数据myData.mat
。
负载myData
迁移到数据字典之后,这些回调将继续将设计数据加载到基本工作空间中。由于模型然后从字典中派生设计数据,因此需要手动删除或注释掉这些数据加载回调。
您可以使用依赖项分析器来查找数据加载回调。看到分析模型依赖关系。
默认情况下,新模型可以访问基本工作空间,但在链接到数据字典时不会失去访问权限。编写脚本时必须假设模型可以访问基本工作区和/或数据字典。
如果您使用句柄对基本工作空间进行显式引用基础
在脚本中,考虑更改这些引用。
考虑一下这个例子。在这里,脚本在基本工作区中搜索变量传感器
然后设置参数使可能
取决于值sensor.noiseEnable
。
if evalin('base','sensor.noiseEnable') enable = '已启用';else enable = '禁用';结束
迁移到数据字典时,请将这些显式引用替换为基础
如下:
如果S金宝appimulink.data.evalinGlobal(myExampleModel,'sensor.noiseEnable')启用='Enabled';else enable=‘Disabled’;终止
金宝appSimulink.data.evalinGlobal
函数在指定模型的全局范围内计算表达式。在这里,如果模型没有链接到字典,则全局作用域可以在数据字典或基本工作空间中。
如果您的模型链接到数据字典,并且该模型无权访问基本工作空间(请参见继续在基本工作区中使用共享数据), 金宝appSimulink将忽略在“模型参数配置”对话框中指定的存储类信息。
如果您使用Simulink接口金宝app来迁移模型以使用数据字典,并且您选择迁移基础工作空间数据,那么Simulink也迁移模型的存储类信息。如果您的模型在基本工作空间中包含变量的存储类信息,那么Simulink会将这些变量转换为金宝app金宝appSimulink.参数
迁移过程中的对象。然后,Simulink设置这些文件的存储类金宝app金宝appSimulink.参数
对象使用来自模型的存储类信息。
如果将此模型迁移回基本工作区,Simulink不会恢复模型中的存储类信息。要保留这些变量的存储类,请使用数据金宝app字典中的参数对象。您还可以手动重置模型中的存储类信息。
如果你设置数据字典
属性,您可以将可调变量转换为金宝appSimulink.参数
对象的使用TunableVars2参数对象
作用
当您使用模型引用将大型模型系统分解为较小的组件和子组件时,您可以创建数据字典来隔离设计数据。设计数据是一组工作空间变量,模型用来指定块参数和信号特征。
模型引用层次结构中的模型通常共享数据。数据所有权、共享变量的数量以及共享策略的复杂性都会影响使用字典的方式。
在以下条件下,模型引用层次结构中可以存在重复的数据定义:
层次结构中的每个模型只能看到一个定义。
在层次结构中的模型之间定义必须相同。
有关详细信息,请参阅确定Simulink模型中变量和对象的存储位置金宝app。
您可以使用Simulink支持的数据类型导入、存储或创建MATLAB变量,例如金宝app金宝app布尔
和int32
,以及设计数据部分的Simulink数据金宝app字典。你也可以使用这些类的对象,以及子类化这些类的大多数类的对象:
金宝app仿真软件。AliasType
金宝app模拟总线
金宝app仿真软件。NumericType
金宝appSimulink.参数
金宝appSimulink.LookupTable
金宝app仿真软件。断点
金宝app仿真软件。信号
金宝appSimulink.变体
金宝appSimulink.data.dictionary.EnumTypeDefinition
embedded.fi
embedded.fimath
努姆尔蒂
此外,您可以在中导入、存储或创建以下类的配置对象配置部分的Simulink数据金宝app字典。
您可以在中导入、存储或创建许多内置和自定义类或数据类型的数据对象其他数据部分的Simulink数据金宝app字典,除了以下:
从内置类或自定义类创建的对象数组
自定义类具有以下任意名称的属性:
最后修改
LastModifiedBy
数据源
状态
变种
如果一个模型包含从工作空间块,则可以将模型迁移到数据字典中。但是,迁移过程会根据块引用的变量的性质采取不同的操作:
金宝appSimulink无法将仅由非活动变量模型使用的变量自动迁移到数据字典中。
不能导入某些类型的设计数据,例如元
类对象,timeseries
对象放入数据字典的设计数据部分。
金宝appSimulink不允许对链接到数据字典的模型进行隐式信号解析。要使用数据字典,请设置模型配置参数信号分辨率来明确的只
或没有一个
。
如果模型引用层次结构已链接到数据字典,则可以保护作为层次结构一部分的引用模型。但是,如果移植包含受保护模型的模型引用层次结构,模拟将失败。
换句话说,在保护模型之前,将其迁移到使用数据字典。
可能不支持包含存储在数据字典中的Simulink变量或数据类型的表达式的求值。金宝app金宝app
您可以通过以下方式继续在基本工作区中存储共享数据,并在数据字典中存储特定于模型的数据:
启用对模型的基本工作区的访问。
启用从数据字典访问基本工作空间。
控件上的“模型属性”对话框中启用对模型的基本工作空间的访问外部数据选项卡,选择启用对基本工作区的模型访问. 对于新模型,默认情况下选中此复选框。如果模型未链接到数据字典,则必须选择此选项。
您还可以允许从数据字典访问基本工作区。对于现有词典,在模型管理器中,选择启用对基本工作区的字典访问。
当您允许从数据字典访问基本工作区时,将会出现以下限制和后果:
通常,您不能通过字典与基本工作空间数据进行交互。
当您在Model Explorer中检查字典的内容时,您无法看到基本工作区数据。要与基本工作空间数据交互,请在模型层次结构窗格中,选择基本工作空间节点。
使用数据字典的编程接口(参见以编程方式在字典中存储数据),要与基本工作空间数据交互,您只能使用这些函数金宝appSimulink.data.dictionary.Section
对象:
assignin
存在
evalin
考虑使用诸如金宝appSimulink.data.assigninGlobal
相反看见过渡到使用数据字典。
变更跟踪功能,例如查看和恢复对字典条目的变更(参见查看和恢复对字典条目的更改),不应用于基本工作区数据。
当您从字典中导出数据时(参见导入和导出字典数据),S金宝appimulink忽略基本工作空间数据。
金宝appSimulink将基本工作区和字典视为单个命名空间。但是,您可以使用相同的名称定义两个变量,一个在基本工作区中,另一个在字典中。在这种情况下,变量必须相同,并且使用字典中的变量。
有关示例,请参见使用数据字典对模型引用层次结构的数据进行分区。