这个示例展示了如何将总线传播到引用的模型中。它还展示了如何使用来自父模型的记录信号数据独立地模拟引用模型。
打开并模拟示例模型sldemo_mdlref_bus.
.
该模型包含一个名为CounterA的模型块,它引用sldemo_mdlref_counter_bus
,这是一个简单计数器的模型。
名为COMPERCBUS的总线阵列将数据和帧中的饱和度限制为模型。命名为CounterBus的总线包含两个元素:数据信号和名为LimitBus的嵌套总线。数据用于计数,LIMITBUS包含计数器的上限和下限值。
Model块有第二个输入端口,该端口连接到名为INCREMENTBUS的总线。此总线包含更改增量和重置计数器的元素。
该模型使用名为sldemo_mdlref_bus.sldd
包含
对象定义COUNTERBUS、LIMITBUS和INCREMENTBUS的元素。金宝appsimulink.bus.
查看公共汽车
对象,打开总线编辑器。在Simuli金宝appnk®Toolstrip中,在建模标签,在设计画廊,点击总线编辑器.
模型使用公共汽车
对象指定下列总线创建器块的输出:
CounterBusCreator1.
CounterBusCreator2.
LIMITBUSCREATOR1.
LimitBuscreator2.
IncrementBusCreator
名为counter_input in的导入块sldemo_mdlref_counter_bus
指定了公共汽车
对象命名COUNTERBUS
.双击块。在“块参数”对话框中,在信号属性标签,数据类型被设定为巴士:抵消者
.
名为Inclement_Input的InPort块类似地配置为使用公共汽车
对象命名incrementbus.
.
这些信号被标记为信号记录:
COUNTERBUS
incrementbus.
OUTERDATA
INNERDATA
在模拟模型之后,日志记录的信号可以在填充
变量。
topOut = 金宝appSimulink.SimulationData.Dataset topOut BlockPath 4个元素名称 ____________ ________________________________________ 1 [1 x1信号]COUNTERBUS sldemo_mdlref_bus /连接2 [1 x1信号]OUTERDATA sldemo_mdlref_bus / CounterA 3 [1 x1信号]INCREMENTBUS sldemo_mdlref_bus / IncrementBusCreator 4 [1 x1信号]INNERDATA……erA|sldemo_mdlref_counter_bus/COUNTER -使用大括号{}访问、修改或使用索引添加元素。
该模型使用数据集
用于信号日志记录的格式。访问数据集
格式记录数据的给定信号,使用getElement
方法:
topOut.getElement(“COUNTERBUS”)
ans = 金宝appsimulink.simulationdata.signal package:simulink.simulationdata属性:名称:'counterbus'传播名称:''块路径:[1x1 simulink.simulationdata.blockpath] porttype:'outport'portindex:1值:[2x1 struct]
总线数据记录为MATLAB®结构价值
字段:
topOut.getElement . values(“COUNTERBUS”)
Ans = 2x1带有字段的结构数组:数据限制
该结构包含MATLABtimeseries
每辆总线的对象:
TopOut.getElement('counterBus')。值(1).data
TimeSeries Common属性:名称:'数据'时间:[301x1 double] timeInfo:tsdata.timemetadata数据:[301x1 int32] datainfo:tsdata.datametadata
TopOut.getElement('counterBus')。值(2).data
TimeSeries Common属性:名称:'数据'时间:[301x1 double] timeInfo:tsdata.timemetadata数据:[301x1 int32] datainfo:tsdata.datametadata
您还可以使用Logged数据绘制情节
功能:
topout.getElement('suinddata')。值.plot()
要在引用的模型中记录信号,请选择模型块并单击测井信号在这一点模型块标签。
对于这个模型,记录模式被设定为记录模型中指定的所有信号
.模拟时记录的所有信号sldemo_mdlref_counter_bus
当将顶级模型模拟为引用模型时,它也会被记录。更改这些信号的日志记录或记录信号的子集:
集记录模式来覆盖信号
.
在里面模型层次结构窗格,清除CounterA (sldemo_mdlref_counter_bus)复选框,以指示此模型不应使用记录模型中指定的所有信号
设置。
在表中,在模拟顶部模型时选择要记录的信号。
要保存更改,请保存顶部模型。
打开引用的模型sldemo_mdlref_counter_bus
点击时作为顶级模型作为顶级模特开放模型块左下角的徽章。
被引用的模型被配置为通过根import块读取记录的信号数据。要查看此配置,请打开“配置参数”对话框。在Simuli金宝appnk工具条中,在建模选项卡上,单击模型设置.在这一点数据导入/导出标签,输入使用逗号分隔的列表来指定已记录的数据填充
对于两个输入端口。这counter_input.端口使用数量阵列的结构阵列来加载数据库的数据,以及increntment_input.端口使用TimeSeries的结构来加载incrementBus的数据。
topOut.getElement(“COUNTERBUS”)
topOut.getElement(“INCREMENTBUS”)
您可以配置输入字段,单击连接输入按钮。将打开根导入映射器工具。在本例中,该工具使用映射算法来设置输入字段来自基本工作空间中记录的数据。
选择要导入的数据:
在root Inport映射器中,单击从工作空间.
选择记录的数据填充
然后点击好的.
在打开的对话框中,指定文件名并单击节省.
使用加载到Root Inpert Mapper工具的数据,您可以确定要为其分配输入数据的根输入端口。金宝appSimulink将基于这些标准之一与输入端口匹配输入数据:块名称,块路径,信号名称,端口订单或自定义算法。因为填充
使用来自模型的信号名称进行日志记录时,映射条件的最佳选择是信号名称.使用这个标准,Simulink试图将输入数据金宝app变量名称与输入信号的名称匹配。
要选择此选项:
在根Inport Mapper层次结构窗格中,选择方案数据集填充
.
点击信号名称单选按钮。
点击地图到模型按钮箭头,然后单击映射所有.
当映射数据时,Simulink根据输入金宝app数据评估输入端口以确定兼容性。Root import Mapper表用绿色的复选标记、橙色的警告三角形或红色的错误感叹号反映了这种兼容性的状态。在本例中,表格显示绿色状态,表示没有兼容性问题。您可以使用输入数据到输入端口的映射来模拟该模型。映射还设置输入在里面数据导入/导出配置参数对话框的标签为正确的逗号分隔的输入列表。要将更改应用于模型,请在“配置参数”对话框中,单击应用.
模拟sldemo_mdlref_counter_bus
.
模拟后,范围sldemo_mdlref_bus.
(OUTERDATA
) 和sldemo_mdlref_counter_bus
(INNERDATA
)显示相同的痕迹。
在参考模型中提供作用域的信号也被记录下来。记录的数据可以在MATLAB工作区的变量下使用subOut
.您可以验证数据中的数据topout.getElement('suinddata')
和subOut.getElement(“INNERDATA”)
是相同的。