创建子系统
随着模型的大小和复杂性的增加,您可以通过将块分组到子系统中来简化它。子系统是一组分组为单个块的块子系统块。
使用子系统:
建立一个层次框图,其中子系统块在一个层上,组成子系统的块在另一个层上。
将功能相关的块放在一起。
有助于减少模型窗口中显示的块的数量。
建立一个输入和输出接口。
当您复制一个子系统时,该副本独立于源子系统。要跨模型或跨模型重用子系统的内容,请考虑被引用的子系统、被引用的模型或链接到自定义库中的块的子系统。有关更多信息,请参见在模型组件类型中进行选择.
类型的子系统
子系统可以是虚拟的,也可以是非虚拟的。一个虚拟子系统在模型中提供图形层次结构。一个nonvirtual子系统提供图形层次结构,并作为模型中的一个单元执行。
提示
对于控制器和其他独立组件,使用非虚拟子系统或引用模型在相关块周围定义硬边界。当您希望为组件生成代码时,预先定义硬边界可以避免昂贵的重构。
动态仿真模块®将非虚拟子系统分类为以下类型:
类型的子系统 | 描述 |
---|---|
原子子系统 | 作为单个单元执行的子系统。 |
启用子系统 | 由外部输入启用执行的子系统。 |
触发子系统 | 由外部输入触发执行的子系统。 |
函数调用子系统 | 执行由外部函数调用输入控制的子系统。 |
启用和触发子系统 | 由外部输入启动和触发执行的子系统。 |
消息触发子系统而且信息轮询子系统 | 由消息输入触发执行的子系统。 |
复位子系统 | 用外部触发器重置其块状态的子系统。 |
如果行动子系统 | 控件启用执行的子系统如果块。 |
开关案例动作子系统 | 控件控制其执行的子系统开关情况块。 |
而迭代器子系统 | 当逻辑条件为真时,在模拟时间步中重复执行的子系统。 |
对迭代器子系统 | 在模拟时间步长中重复执行指定次数迭代的子系统。 |
为每个子系统 | 在输入信号的每个元素或子数组上重复执行并连接结果的子系统。 |
创建子系统
要创建一个子系统,您可以:
在Simulink编辑器中,双击并开始输入子系统类型,然后从菜单中选择相应的块。
在Simulink Editor中,拖动选择框以概述您想要创建的子系统,然后选择子系统类型。
拖一个子系统从库浏览器的块。
复制并粘贴子系统从一个模型块。
当您从选择框中创建子系统时,选择可以为空,也可以在模型的一个区域中包含多个块。
从操作栏中,选择您想要创建的子系统类型。
当选择包含与输入和输出端口对应的块时,新的子系统包含这些块的副本。新的子系统不包含与控制端口对应的块的副本。
您可以在创建子系统后更改子系统的类型。
要使子系统作为一个单元执行,请单击子系统块。在子系统选项卡上,选择是原子子系统.
要使子系统有条件地执行,需要添加一个与控制端口对应的块。
要使子系统无条件执行,请删除与控制端口对应的块。
请注意
如果您不再希望使用某个子系统,您可以用它的内容替换该子系统。有关更多信息,请参见扩展子系统内容.
向子系统添加端口
的端口子系统块对应子系统内部的块。
例如,这个子系统块有两个输入端口和一个输出端口。
子系统包含两个轮廓尺寸块,三机一体
而且In2
,一个外港块,着干活
,对应于子系统块。
自动添加端口到子系统布洛克:
点击边缘的子系统块,然后选择要创建的端口类型。
拖一条线到边缘子系统块。
相应的端口块被添加到子系统中。
提示
自动创建端口后,端口标签在子系统块用于快速编辑。看到的,编辑子系统端口标签.
要手动添加端口,请双击打开子系统子系统块,然后将相应的块添加到子系统。
类型的港口 | 相应的块 |
---|---|
信号端口,输入 | 轮廓尺寸块 |
信号端口,输出 | 外港块 |
总线端口,输入 | 在公共汽车元素块 |
总线端口,输出 | 公共汽车元素块 |
控制端口,使 | 启用块 |
控制端口,引发 | 触发块 |
控制端口,函数调用 | 触发块与触发类型设置为函数调用 |
控制端口,重启 | 重置块 |
控制端口,行动 | 行动的港口块 |
连接端口 | 连接端口(Simscape)块 |
修改接口的端口位置子系统块,将端口拖动到控件任意一侧的新位置子系统块。
缺省情况下,Simulink为a的端口打上标签子系统块。指定Simulink如何标记子系统的端口。
选择子系统块。
在格式选项卡中,选择一个标签选项端口标签菜单。有关更多信息,请参见显示端口标签.
编辑子系统端口标签
你可以直接编辑这些子系统块上的端口标签:
常规的子系统
子系统和面具
不同的子系统
图子系统
编辑当前模型中子系统块上的端口标签:
指向端口标签。一个互动端口标签提示(端口标签周围的蓝框)出现。点击提示。
或者选择端口,按“”F2.球杆进入编辑模式。
上创建新端口子系统块使用自动端口创建也支持端口标签提示进行快速编辑。
一个端口选择器提示出现在端口标签提示的上方,以指示正在编辑的端口标签信息(端口块名称、信号名称、总线端口或连接端口)。对于信号端口,您可以从端口标签中编辑端口块名称和端口信号名称。要在值之间切换,请单击选择器提示中的各自图标或使用键盘快捷键Ctrl + 1, 2.
在端口标签提示中输入一个值,然后按下输入或Esc,或点击离开。
编辑端口标签后,Simulink会自动更新子系统中相关端口或信号的名称。
提示
在一个子系统块上连续编辑端口标签:
选择块上的一个端口。
编辑端口标签,按输入.此操作允许键盘选择端口。
使用上方向键或下方向键并按,可以选择相邻端口F2快速编辑。
该表根据子系统块上定义的端口标签的类型列出更新操作。
端口标签类型 行动 没有一个 编辑不支持。 港口图标 控件更新子系统中元素的名称图标显示端口参数。
例如,如果的值图标显示端口参数为
信号的名字
,则端口块上的图标和链接信号的名称都将更新。请注意
对于这种类型的端口标签,编辑后端口标签上显示的信息取决于使用选择器提示对标签执行的最终编辑:
如果初始端口标签显示端口块名称,而最后的编辑是在信号名称上,则图标显示参数的基础端口块自动更新为
信号的名字
.因此,在编辑之后,端口标签默认显示信号名称。如果初始端口标签显示端口信号名称,而最后的编辑是在端口块名称上,则图标显示参数的基础端口块自动更新为
端口号
.因此,在编辑之后,端口标签默认显示块名称。
端口块名称 更新子系统中端口的块名称。对于这种类型的端口标签,您只能使用端口选择器提示编辑端口块名称。 信号的名字 更新连接到端口的信号的名称。
请注意
的端口选择器提示图表块。
编辑端口标签子系统不支持带有掩码图标的块。
不支持从端口标签编辑端口号。您仍然可以使用端口标签提示编辑端口块名称和信号名称。
不支持从端口标签编辑传播信号的名称。您仍然可以使用端口标签提示编辑端口块名称和内部信号名称。单击提示时,端口信号名称字段为空,因为内部信号没有名称。
当所有这些条件都为真时,子系统端口标签显示传播信号的名称:
的值图标显示参数的基础端口块为
信号的名字
.子系统内部信号是连接的,但没有名称。
传播的信号有一个名称。
配置子系统
的名称子系统块,并像处理其他块一样修改该块。例如,你可以:
限制子系统访问
的读/写权限参数的子系统块控制子系统允许的访问级别。
请注意
限制读写访问并不能阻止修改访问限制。要隐藏专有信息,请考虑使用受保护的模型。有关更多信息,请参见探索受保护模型功能.
当子系统存储在自定义库中时,您可以使用读/写权限参数,以控制对该块的链接实例的访问。只要库链接保持完整,受限制的访问可以阻止人们查看或修改子系统的内容,同时仍然允许他们在模型中使用它。有关更多信息,请参见连接块.
另请参阅
Simulink.BlockDiagram.copyContentsToSubsystem