重用文件中的模型组件
在处理大型模型时,您可以将其分成多个文件,以便团队成员可以同时开发不同的模型组件。您可以在一个模型和其他模型中多次重用这些组件。
模型、子系统和库文件为同一模型组件的多个实例提供了单一来源。要了解何时应使用每种组件化方法,请参阅基于组件的建模规范。
在此示例中,模型层次结构包含子系统、引用子系统和引用模型。引用的子系统和模型存储在单独的文件中。
名为 BasicModelingComponents
的模型在其顶层包含子系统。
topmdl = "BasicModelingComponents"; open_system(topmdl) set_param(topmdl,SimulationCommand="Update");
引用子系统
从顶层模型中,双击名为 Plant
的 Subsystem 模块。该子系统包含名为 MassSpringDamperLeft
和 MassSpringDamperRight
的子系统参考模块。
两个子系统参考模块引用一个名为 BasicModelingPlant.slx
的子系统文件。
refss = "BasicModelingPlant";
open_system(refss)
PreloadFcn
回调从名为 BasicModelingDataPlant.m
的脚本加载相关变量。
虽然您可以在库或子系统文件中定义子系统以供重用,但子系统文件可以更轻松地进行编辑。当您编辑引用的子系统时,更改将应用于子系统文件和引用子系统的所有实例。
引用模型
从顶层模型中,双击名为 Controller
的 Subsystem 模块。该子系统包含一个名为 Controller
的 Model 模块。
Model 模块引用名为 BasicModelingController.slx
的模型文件。
refmdl = "BasicModelingController";
open_system(refmdl)
PreloadFcn
回调从名为 BasicModelingDataController.m
的脚本加载相关变量。
控制器代码通常部署在嵌入式系统上,因此拥有独立的控制器模型很有用。
嵌入式处理器可能不支持控制器的默认属性。由于控制器模型可能用于为嵌入式处理器生成代码,因此这些约束适用于引用的控制器模型及其父模型的接口:
固定信号属性 - 为了要求模型接口处的总线共享相同的信号属性,总线对象在三组输入和输出端口处指定信号属性。
离散采样时间 - 为了指定离散采样时间,名为
BasicModelingController.slx
的模型文件指定离散执行域,名为BasicModelingDataController.m
的脚本指定离散 PID 控制器值。固定数据类型 - 为了应用嵌入式处理器所需的单精度数据类型,Data Type Conversion 模块在总线元素到达模型接口之前转换总线元素的数据类型。