1. 虚拟子系统
虚拟子系统在模型中提供了图形化的层级显示,可简化模型外观,不影响模型的执行和代码生成。在模型执行期间,Simulink展开所有的虚拟子系统,即在执行仿真之前就展开子系统,实际上同没有建立子系统时的效果一样,所以称为虚拟子系统。
2. 非虚拟子系统
非虚拟原子子系统内的模块作为一个单元执行,Simulink中的任何模块都可以放在原子子系统内,包括不同执行速率的模块。用户可以右击虚拟子系统模块,在弹出的菜单中选择 Block Parameter项,在打开的参数对话框中匀选 Treat as atomic unit选项来创建原子子系统,如下图所示。
、
原子子系统统一了内部模块时序,并提供生成函数代码功能的模块,衍生出一些功能更丰富的子系统模块。
3. 常用子系统介绍
3.1 使能子系统( Enabled Subsystem)
在驱动子系统使能端口的输入信号大于零时执行使能子系统。用户可以通过在拟子系统内放置 Enable模块的方式来创建使能子系统(虚拟子系统内部放置 Enable模块之后自动转换为原子子系统),并通过设置使能子系统内 Enable端口模块中的 States when enabling参数配置子系统内的模块状态。此外,如果子系统内部存在Out模块,利用Out输出模块的Output when disabled参数可把使能子系统内每个输出端口配置为保持最后一有效采样时的输出或复位为初始值。
3.2 触发子系统( Triggered Subsystem)
触发子系统只有在驱动子系统触发端口的信号的上升沿或下降沿到来时才会执行,触发信号沿的方向由 Trigger端口模块中的 Trigger type参数决定。 Simulink限制放置在触发子系统内的模块类型,这些模块不能各自指定采样时间,也就是说,子系统内的模块必须具有-1值的采样时间,即继承采样时间,因为触发子系统的执行具有非周期性,即子系统内模块的执行是不规则的。
3.3 触发使能子系统( Enabled and Triggered Subsystem)
触发使能子系统在系统被使能且驱动子系统触发端口的信号的上升沿或下降沿到来时才执行,触发边沿的方向由 Trigger端口模块中的 Trigger type参数决定。 Simulink限制放置在触发使能子系统内的模块类型,这些模块不能各自指定采样时间,采样时间由此子系统模块统一设定。用户可以通过把 Trigger端口模块和 Enable模块放置在子系统内的方式来创建触发使能子系统。
3.4 函数调用子系统( Function-Call Subsystem)
函数调用子系统类似于用文本语言(如M语言)编写的S函数,只不过是通过 Simulink模块实现的。用户可以利用状态流图、函数调用生成器( Function Call Generator)或S函数执行函数调用子系统。 Simulink限制放置在函数调用子系统内的模块类型,这些模块不能分別指定采样时间,采样时间由此子系统模块统一设定。使用S函数的逻辑状态面非普通的信号作为触发子系统的控制信号・函数调用子系统属于触发子系统・在触发子系统中触发模块Trigger的参数设置中这择 Function-Call可以将由普通信号触发的触发子系统转换为函数调用子系统。