扩展子系统内容
要将子系统的内容移动到包含子系统的系统中,您可以展开子系统。
例如,sldemo_enginewc
模型包括燃烧子系统。
在扩展了燃烧子系统之后,顶层的sldemo_enginewc
模型包括燃烧子系统的块和信号。扩展会移除子系统块和轮廓尺寸而且外港块。
为什么要扩展一个子系统?
如果您想通过将子系统的内容上移一级来平展模型层次结构,则扩展子系统。
在重构模型时,展开子系统是有用的。压平模型层次结构可能是最终结果,或者只是重构中的一个步骤。例如,您可以通过展开子系统将一组块拉到父系统中,取消选择您希望留在父系统中的块,然后从剩下的选定块中创建一个子系统。
您可以扩展哪些子系统?
您可以扩展未被屏蔽、链接或注释的虚拟子系统。如果您试图使用Simulink展开掩码、链接或注释子系统®编辑器中,一个消息给您一个选项,让Simulink修改子系统,以便您可以展开它。
的子系统 | 修改 |
---|---|
戴面具的子系统 |
删除所有屏蔽信息 |
图书馆的链接 |
打破了链接 |
注释掉子系统 |
取消子系统 |
您不能扩展这些子系统:
原子子系统
有条件的子系统
可配置子系统
不同的子系统
子系统的读/写权限参数设置为
只读的
或NoReadOrWrite
子系统和一个
InitFcn
,StartFcn
,PauseFcn
,ContinueFcn
,或StopFcn
回调具有链接需求的子系统(使用要求工具箱™软件)
扩大一个子系统
要以交互方式展开子系统,右键单击a子系统块,然后从上下文菜单中选择子系统与模型参考>扩展子系统.
要以编程方式扩展子系统,请使用Simulink.BlockDiagram.expandSubsystem
函数。
提示
子系统扩展应用于当前选择的子系统级别。Simulink不扩展嵌套子系统层次结构中的其他子系统。
为了在扩展嵌套子系统时提高可读性,可以从扩展您想要扩展的最高级别子系统开始,然后沿着您想要扩展的层次结构向下工作。
扩容结果
当你扩展一个子系统时,Simulink:
消除了子系统块
删除根轮廓尺寸、根外港, Simscape™连接端口子系统中的块
将前往子系统输入和输出端口的信号线直接连接到连接子系统的模型中块的端口
分布块和路由信号的可读性。
块路径
在展开的子系统中,块的路径会发生变化。在展开之后,更新依赖于您展开的子系统中块的分层路径的脚本和测试工具。
信号名称和属性
如果扩展一个子系统,在子系统的外部或内部缺少连接,Simulink将保留线路标签,但只使用其中一条线路的信号名称和属性。对应于:
作为子系统的输入端口,Simulink使用子系统所在系统中的信号的信号名称和属性
作为子系统的输出端口,Simulink使用来自子系统的信号名称和属性
显示层
块的显示层(换句话说,对于重叠块,哪些块出现在前面或后面)在展开后不会改变。前面的街区子系统块保持在展开内容的上方,块保持在展开内容的下方子系统块保留在展开的内容之下。
执行顺序和块优先级
当您编译一个模型时,Simulink会根据块执行的顺序对块进行排序。扩展一个子系统可能会改变块路径名,这在极少数情况下可能会影响块的执行顺序。
如果您通过在子系统中设置块优先级显式地设置块执行顺序,那么当您展开该子系统时,Simulink将删除这些块优先级设置。
数据存储
扩展一个包含其他子系统从中读取或写入的数据存储内存块的子系统,可以更改所需的数据存储写和读顺序。您可能需要重组您的模型。有关详细信息,请参见订购数据存储访问.