Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

模型接口上的非虚拟总线

模型引用边界是包含 Model 模块的模型与引用模型之间的边界。如果总线数据传递给 Model 模块,则该数据会跨过边界进入引用模型。Model 模块的总线数据输入必须与引用模型要求的总线数据一致。

对于跨模型引用边界的总线数据,需要决定使用虚拟总线还是非虚拟总线。使用虚拟总线可能比使用非虚拟总线更简单。但是,使用非虚拟总线将为代码生成提供明确定义的数据接口。要了解虚拟总线和非虚拟总线的区别,请参阅 合成信号的类型

提示

对于接口上的虚拟总线,请使用 In Bus ElementOut Bus Element 模块。这些模块支持多速率虚拟总线,并且不需要 Simulink.Bus 对象。

对于接口处的非虚拟总线,请使用 InportOutport 模块。

非虚拟总线的模型引用要求

如果您使用总线作为引用模型的输入或输出:

  • 只有一个非虚拟总线可以包含可变大小信号元素。

  • 对于代码生成,当使用非虚拟总线或使用 C++ 类接口的 “Default” 样式时,只能为引用模型配置 C++ 类接口的 “I/O arguments step method” 样式。

  • 对于代码生成,您只能在使用非虚拟总线时为引用模型配置函数原型控制。

具有根级 Inport 模块的非虚拟总线

要将总线从根级 Inport 模块传递给引用模型,请在 Inport 模块的 Block Parameters 对话框中执行以下操作:

  • Data type 参数设置为 “Bus: <object name>

  • <object name> 替换为定义 Inport 模块生成的总线的 Bus 对象的名称。

要从根级 Inport 模块输出非虚拟总线,请在 Inport 模块的 Block Parameters 对话框中选择 Output as nonvirtual bus

一个非虚拟总线中的所有信号必须具有相同的采样时间。有关详细信息,请参阅Modify Sample Times for Nonvirtual Buses

有关将数据导入根级 Inport 模块的信息,请参阅Load Bus Data to Root-Level Input Ports

具有根级 Outport 模块的非虚拟总线

要将总线传递给引用模型的根级 Outport 模块,请在 Outport 模块的 Block Parameters 对话框中执行以下操作:

  • Data type 设置为 “Bus: <object name>”。

  • <object name> 替换为定义 Outport 模块生成的总线的 Bus 对象的名称。

要从对应于根级 Outport 模块的端口输出非虚拟总线,请在 Outport 模块的 Block Parameters 对话框中选择 Output as nonvirtual bus in parent model

一个非虚拟总线中的所有信号必须具有相同的采样时间。有关详细信息,请参阅Modify Sample Times for Nonvirtual Buses

非虚拟总线的速率转换

要将多速率总线作为非虚拟总线传递给引用模型,请使用 Inport 模块。在父模型和引用模型中添加模块,如下所示:

  1. 在父模型中,通过插入 Rate Transition 模块,将多速率总线转换为单速率总线。Inport 模块只能将单速率非虚拟总线传递给引用模型。Rate Transition 模块必须在其 Block Parameters > Output port sample time 字段中指定速率,除非满足以下条件之一:

    • Configuration Parameters > Solver 窗格使用下列设置指定速率:

      • Periodic sample time constraint 参数设置为 “Specified”。

      • Sample time properties 参数包含指定的速率。

    • 接受引用模型中的非虚拟总线的 Inport 模块在其 Block Properties > Signal Attributes > Sample time 字段中指定速率。

  2. 在引用模型中,使用 Bus Selector 模块选出关注的信号,并使用 Rate Transition 模块将信号转换为所需的速率。

另请参阅

模块

相关主题