使用数据存储在多个模型
这个例子展示了如何使用本地数据存储和日志。它还显示了如何定义、使用和日志数据存储共享全球数据引用的模型之一。
检查示例模型
打开示例模型。顶部模型sldemo_mdlref_dsm
参考模型sldemo_mdlref_dsm_bot
和sldemo_mdlref_dsm_bot2
。日志数据存储是打开的sldemo_mdlref_dsm
在数据导入/导出面板的配置参数对话框。
引用模型sldemo_mdlref_dsm_bot
放大输入信号,如果信号是由2如果信号是积极的还是负面并将这个信号的值写入本地数据存储RefSignalVal
。这个本地数据存储配置日志写的所有值模拟后的工作区。本地数据存储的日志记录参数的控制日志记录选项卡块参数对话框。
的阳性
子系统包含块放大输入信号,如果信号是积极的和写这个信号到本地数据存储的值RefSignalVal
。
的底片
子系统包含块放大输入信号,如果信号为负,这个信号的值写入本地数据存储RefSignalVal
。
引用模型sldemo_mdlref_dsm_bot2
集全球布尔数据存储的值命名ErrorCond
真的如果输入信号的值以外的范围(-0.8,0.8)。模型还监视数据存储ErrorCond
和交换机之间的两个参考模型的输出,取决于该数据存储的值。
定义全局数据存储使用仿真软件®信号对象金宝app
指定模型,模型和被引用的模型金宝app都使用相同的内存数据存储ErrorCond
在每个模型中,创建一个实例金宝appSimulink.Signal
对象命名ErrorCond
在工作区或数据字典,可见每个模型。因为这个对象是可见的每个模型,其范围包括个人模型和意味着有一个全局的数据存储名称之间共享的模型。注意,所有的三个模型包含一个数据存储与数据存储的内存块ErrorCond
。如果任何模型包含这样一个街区,街区将定义一个本地数据存储模型,将影子全球数据存储。
由于对象ErrorCond
定义了一个全球数据存储,它必须显式地定义数据类型
,复杂性
,维
non-inherited设置属性。SampleTime
和StorageClass
可能离开他们继承的值,或者显式地设置。
例子包括一个垫子文件命名sldemo_mdlref_dsm_data.mat
包含金宝appSimulink.Signal
对象ErrorCond
。的预加载功能模型sldemo_mdlref_dsm
加载这个垫子文件,导致基础对象加载工作区。您可以查看该对象模型中通过选择基本工作空间探险家。您还可以创建这个对象的MATLAB®命令窗口。以下命令定义在这个例子中使用的对象。
ErrorCond = 金宝appSimulink.Signal;ErrorCond。描述=使用信号子系统输出无效的;ErrorCond。数据类型= 'boolean'; ErrorCond.Complexity = 'real'; ErrorCond.Dimensions = 1; ErrorCond.SampleTime = 0.1; ErrorCond.LoggingInfo.DataLogging = true;
全球数据存储日志
记录所有的值写入全局数据存储,设置数据采集
财产的LoggingInfo
财产的金宝appSimulink.Signal
对象。的LoggingInfo
属性还允许规范等其他测井参数的大量毁灭和最大点。
金宝app仿真软件。日志记录Info (handle) DataLogging: 1 NameMode: 0 LoggingName: '' DecimateData: 0 Decimation: 2 LimitDataPoints: 0 MaxPoints: 5000
模拟模型层次结构
模拟sldemo_mdlref_dsm
查看输出。引用模型sldemo_mdlref_dsm_bot
写入的数据存储ErrorCond
虽然顶级模特sldemo_mdlref_dsm
读取的数据存储。蓝线代表模型的输入块一个
参考模型sldemo_mdlref_dsm_bot
。橙色线表示开关组的输出。输出开关,当输入信号的大小超出范围的。
查看记录结果
全球数据存储ErrorCond
本地数据存储RefSignalVal
配置记录所有写值后仿真。这些记录结果存储在基本工作空间中dsmout
变量。
dsmout = 金宝appSimulink.SimulationData。数据集的dsmout 2元素名称BlockPath _______ ________________________________________ 1 1 x1 DataStoreMemory ErrorCond”2 [1 x1 DataStoreMemory] RefSignalVal……dlref_dsm / | sldemo_mdlref_dsm_bot / DSM -使用大括号{}来访问,修改或添加元素使用索引。
访问本地数据存储,存储的数据使用getElement
函数来得到正确的数据存储元素的基础上的名字RefSignalVal
。
> > dsmout.getElement (“RefSignalVal”)
金宝appSimulink.SimulationData。DataStoreMemory包:仿真软件。金宝appSimulationData属性:名称:“RefSignalVal”BlockPath: [1 x1 Simulink.Simu金宝applationData。BlockPath)范围:“当地”DSMWriterBlockPaths: [1 x2 Simulink金宝app.SimulationData。x1 uint32 BlockPath] DSMWriters:[101]价值观:[1 x1 timeseries]
数据存储在一个timeseries
在值
字段。
> >的情节(dsmout.getElement (RefSignalVal) . values);
确定哪些块写数据存储在一个给定的时间,使用DSMWriters
财产。这个数组包含一个指标的列表DSMWriterBlockPaths
数组中。例如,块数据存储的路径写块写第五价值数据存储可以获得如下。
> > dsm = dsmout.getElement (“RefSignalVal”);> > dsm.DSMWriterBlockPaths (dsm.DSMWriters (5))
金宝appSimulink.SimulationData。BlockPath包:仿真软件。金宝appSimulationData块路径:“sldemo_mdlref_dsm /‘sldemo_mdlref_dsm_bot /积极/ DSW“下手使用getBlock方法来阻止路径特征向量这个对象的访问。