主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

重用文件中的模型组件

在处理大型模型时,您可以将其分成多个文件,以便团队成员可以同时开发不同的模型组件。您可以在一个模型和其他模型中多次重用这些组件。

模型、子系统和库文件为同一模型组件的多个实例提供了单一来源。要了解何时应使用每种组件化方法,请参阅基于组件的建模规范

在此示例中,模型层次结构包含子系统、引用子系统和引用模型。引用的子系统和模型存储在单独的文件中。

名为 BasicModelingComponents 的模型在其顶层包含子系统。

topmdl = "BasicModelingComponents";
open_system(topmdl)
set_param(topmdl,SimulationCommand="Update");

Top level of model with Subsystem blocks

引用子系统

从顶层模型中,双击名为 Plant 的 Subsystem 模块。该子系统包含名为 MassSpringDamperLeftMassSpringDamperRight 的子系统参考模块。

Plant subsystem with two Subsystem Reference blocks

两个子系统参考模块引用一个名为 BasicModelingPlant.slx 的子系统文件。

refss = "BasicModelingPlant";
open_system(refss)

Referenced subsystem opened separately

PreloadFcn 回调从名为 BasicModelingDataPlant.m 的脚本加载相关变量。

虽然您可以在库或子系统文件中定义子系统以供重用,但子系统文件可以更轻松地进行编辑。当您编辑引用的子系统时,更改将应用于子系统文件和引用子系统的所有实例。

引用模型

从顶层模型中,双击名为 Controller 的 Subsystem 模块。该子系统包含一个名为 Controller 的 Model 模块。

Controller subsystem with a Model block

Model 模块引用名为 BasicModelingController.slx 的模型文件。

refmdl = "BasicModelingController";
open_system(refmdl)

Referenced model opened separately

PreloadFcn 回调从名为 BasicModelingDataController.m 的脚本加载相关变量。

控制器代码通常部署在嵌入式系统上,因此拥有独立的控制器模型很有用。

嵌入式处理器可能不支持控制器的默认属性。由于控制器模型可能用于为嵌入式处理器生成代码,因此这些约束适用于引用的控制器模型及其父模型的接口:

  • 固定信号属性 - 为了要求模型接口处的总线共享相同的信号属性,总线对象在三组输入和输出端口处指定信号属性。

  • 离散采样时间 - 为了指定离散采样时间,名为 BasicModelingController.slx 的模型文件指定离散执行域,名为 BasicModelingDataController.m 的脚本指定离散 PID 控制器值。

  • 固定数据类型 - 为了应用嵌入式处理器所需的单精度数据类型,Data Type Conversion 模块在总线元素到达模型接口之前转换总线元素的数据类型。

另请参阅

主题