主要内容

使用总线对象的接口规范

这个例子展示了如何将总线传播到引用的模型中。它还展示了如何使用来自父模型的日志信号数据独立地模拟引用模型。

打开示例模型

打开并模拟示例模型sldemo_mdlref_bus

检查模型

该模型包含一个名为CounterA的引用的model块sldemo_mdlref_counter_bus,这是一个简单计数器的模型。

名为COUNTERBUS的总线数组将数据和计数器的饱和限制输入模型。名为COUNTERBUS的总线每个都包含两个元素:一个数据信号和一个名为LIMITBUS的嵌套总线。数据用于计数,LIMITBUS包含计数器的上限和下限值。

Model块有第二个输入端口,该端口连接到名为INCREMENTBUS的总线。该总线包含更改增量和重置计数器的元素。

该模型使用一个名为sldemo_mdlref_bus.sldd包含金宝app仿真软件。公共汽车定义COUNTERBUS、LIMITBUS和INCREMENTBUS元素的对象。

浏览公共汽车对象,打开类型编辑器。在Simuli金宝appnk®工具条中,在建模选项卡,在设计画廊,点击式编辑器

该模型使用公共汽车对象来指定以下总线创建器块的输出:

  • COUNTERBUSCreator1

  • COUNTERBUSCreator2

  • LIMITBUSCreator1

  • LIMITBUSCreator2

  • IncrementBusCreator

导入块名为counter_input insldemo_mdlref_counter_bus指定了公共汽车对象命名COUNTERBUS。双击该块。在“块参数”对话框中,在信号的属性选项卡,数据类型设置为总线:COUNTERBUS

名为increment_input的Inport块类似地配置为使用公共汽车对象命名INCREMENTBUS

日志信号数据

这些信号被标记为信号记录:

  • COUNTERBUS

  • INCREMENTBUS

  • OUTERDATA

  • INNERDATA

在模拟模型之后,日志信号可以在topOut变量。

topOut = 金宝appSimulink.SimulationData.Dataset 'topOut'与4个元素名称BlockPath ____________ ________________________________________ 1 [1x1信号]COUNTERBUS sldemo_mdlref_bus/Concatenate 2 [1x1信号]OUTERDATA sldemo_mdlref_bus/CounterA 3 [1x1信号]INCREMENTBUS sldemo_mdlref_bus/IncrementBusCreator 4 [1x1信号]INNERDATA…erA|sldemo_mdlref_counter_bus/COUNTER -使用花括号{}访问、修改或添加使用索引的元素。

该模型使用数据集信号测井格式。访问数据集为给定信号格式化记录数据,请使用getElement方法:

topOut.getElement(“COUNTERBUS”)
信号包:Si金宝appmulink. simulationdata . ans = Simulink. simulationdata . signal Package: Simulink. Simulink. ansSimulationData属性:名称:“COUNTERBUS”传播名:“BlockPath: [1x1 Simulink.SimulationData.]金宝appBlockPath] PortType: 'outport' PortIndex: 1值:[2x1 struct]

总线数据作为MATLAB®结构记录在字段:

topOut.getElement . values(“COUNTERBUS”)
Ans =带字段的2x1结构数组:数据限制

此结构包含MATLABtimeseries每个总线的对象:

topOut.getElement (COUNTERBUS) . values (1) . data
时间序列公共属性:名称:'data'时间:[301x1 double]时间信息:tsdata。timemetadata Data: [301x1 int32] DataInfo: tsdata.datametadata
topOut.getElement (COUNTERBUS) . values (2) . data
时间序列公共属性:名称:'data'时间:[301x1 double]时间信息:tsdata。timemetadata Data: [301x1 int32] DataInfo: tsdata.datametadata

方法绘制记录的数据情节功能:

topOut.getElement (OUTERDATA) .Values.plot ()

日志参考模型信号

要在引用的模型中记录信号,选择model块并单击测井信号模型块选项卡。

对于这个模型,日志记录模式设置为按照模型中指定的记录所有信号。模拟时记录的所有信号sldemo_mdlref_counter_bus作为一个顶模型也记录时,模拟它作为一个参考模型。更改这些信号的日志记录或记录信号的一个子集:

  1. 日志记录模式覆盖信号

  2. 模型层次结构窗格中,清除CounterA (sldemo_mdlref_counter_bus)复选框,以指示此模型不应使用按照模型中指定的记录所有信号设置。

  3. 在表格中,模拟顶模时选择要记录的信号。

  4. 要保存更改,请保存顶部模型。

加载数据

打开引用的模型sldemo_mdlref_counter_bus作为一个顶级模型点击作为超模开放徽章在模型块的左下角。

所引用的模型配置为通过根导入块读取记录的信号数据。要查看此配置,请打开“配置参数”对话框。在“Simul金宝appink工具条”中建模选项卡上,单击模型设置。在数据导入/导出选项卡,输入使用逗号分隔的列表指定日志数据topOut对于两个输入端口。的counter_input端口使用时间序列的数组结构来为COUNTERBUS加载数据increment_inputport使用时间序列结构为INCREMENTBUS加载数据。

  • topOut.getElement(“COUNTERBUS”)

  • topOut.getElement(“INCREMENTBUS”)

您可以配置输入字段,请单击连接输入按钮。根导入映射器工具打开。在本例中,该工具使用映射算法来设置输入基本工作区中记录数据的字段。

选择要导入的数据:

  1. 在根导入映射器中,单击从工作空间

  2. 选择记录的数据topOut并点击好吧

  3. 在弹出的对话框中指定文件名,单击保存

将数据加载到根输入映射器工具后,您可以确定要为其分配输入数据的根输入端口。金宝appSimulink根据以下标准之一匹配输入数据和输入端口:块名称、块路径、信号名称、端口顺序或自定义算法。因为topOut是使用来自模型的信号名称进行记录,映射准则的最佳选择是信号的名字。使用这个标准,Simulink尝试将输入数据金宝app变量名与输入信号的名称相匹配。

选择此选项:

  1. 在根导入映射器层次结构窗格中,选择场景数据集topOut

  2. 单击信号的名字下拉菜单中的单选按钮。

  3. 单击检查地图准备情况按钮箭头,然后单击映射所有

当映射数据时,Simulink根据输入金宝app数据评估输入端口以确定兼容性。根导入映射表用绿色复选标记、橙色警告三角形或红色错误感叹号反映此兼容性的状态。在本例中,表显示绿色状态,表示不存在兼容性问题。您可以使用输入数据到输入端口的映射来模拟模型。映射还设置了输入数据导入/导出选项卡中以逗号分隔的输入列表。要将更改应用到模型,请在Configuration Parameters对话框中单击应用

用导入的数据模拟模型

模拟sldemo_mdlref_counter_bus

经过模拟,范围从sldemo_mdlref_busOUTERDATA),sldemo_mdlref_counter_busINNERDATA)显示相同的痕迹。

在参考模型中输入范围的信号也被记录下来。记录的数据可以在MATLAB工作空间的变量下查看subOut。您可以验证数据在topOut.getElement(“OUTERDATA”)而且subOut.getElement(“INNERDATA”)是一样的。

另请参阅

相关的话题