simulink子系统概述

子系统概述

子系统模块在Simulink中扮演着重要的角色,它能够将模块及其信号线整合为一个大型模块,将模型划分为内外两个层次。模块外部对内部细节进行了屏蔽,仅展示输入输出端口,而内部则是真正的逻辑结构所在。这种层次性设计带来了以下优势:

  1. 精简模型窗口中的模块数量,使模型外观结构更为清晰,显著增强了模型的可读性。
  2. 在简化模型外观结构图的基础上,保持了各模块之间的拓扑关系,使得特定功能的模块得以拥有一些独立的属性。
  3. 方便创建自定义子系统,以便在内部集成特定功能,实现更高的复用性。

子系统分类

在Simulink中,子系统可分为虚拟子系统与非虚拟子系统。非虚拟子系统进一步划分为原子子系统、受外部信号触发或外部信号使能的触发子系统与使能子系统。此外,还包括与流控制模块(如If、Switch、For、While)协同工作的动作子系统(Action Subsystem),以及同一时间仅能激活其中一个的多个子系统的可变子系统。

  1. 虚拟子系统
    虚拟子系统(Virtual Subsystem)在模型中提供图形化的层级展示,有助于简化模型外观,而不影响模型执行与代码生成。在模型执行过程中,Simulink会展开所有虚拟子系统,即在仿真执行前预先展开子系统,实际效果与未建立子系统时相同,因此称为虚拟子系统。
    在这里插入图片描述

  2. 非虚拟/原子子系统
    非虚拟/原子子系统(Nonvirtual/Atomic Subsystem)中的模块作为独立单元执行,Simulink中的任意模块均可置于原子子系统内,包括不同执行速率的模块。
    原子子系统确保内部模块时序统一,并为具备生成函数代码功能的模块提供支持,进而衍生出功能更为丰富的子系统模块。

条件子系统(Conditional Subsystem)

  1. 使能子系统(Enabled Subsystem)
    在驱动子系统使能端口输入信号大于零时执行。用户可在虚拟子系统内放置Enable模块创建使能子系统(虚拟子系统内放置Enable模块后将自动转换为原子子系统),并通过设置使能子系统内Enable端口模块的States when enabling参数配置子系统内模块状态。此外,如子系统内部存在Out模块,可利用Out输出模块的Output when disabled参数将使能子系统内各输出端口配置为保持最后一个有效采样时刻的输出或重置为初始值。
    在这里插入图片描述

  2. 触发子系统(Triggered Subsystem)
    在驱动子系统触发端口信号的上升沿或下降沿到来时才会执行,触发信号沿的方向由Trigger端口模块中的Trigger type参数决定。Simulink限制放置在触发子系统内的模块类型,这些模块不能各自指定采样时间,也就是说,子系统内的模块必须具有一1值的采样时间,即继承采样时间,因为触发子系统的执行具有非周期性,即子系统内模块的执行是不规则的。
    在这里插入图片描述

  3. 触发使能子系统(Enabled and Triggered Subsystem)
    在系统被使能且驱动子系统触发端口信号的上升沿或下降沿到来时才执行,触发边沿的方向由Trigger端口模块中的Trigger type参数决定。Simulink限制放置在触发使能子系统内的模块类型,这些模块不能各自指定采样时间,采样时间由此子系统模块统一设定。用户可以通过把Trigger端口模块和Enable模块放置在子系统内的方式来创建触发使能子系统。
    在这里插入图片描述

  4. 函数调用子系统(Function-Call Subsystem)
    实属于触发子系统,但根据其在嵌入式目标支持包TSP中的作用差异,将其单独列为一类。各种硬件的驱动模块库中提供的硬件中断调用模块,输出即为Function-Call信号,需要连接的就是函数调用子系统。函数调用子系统类似于用文本语言(如M语言)编写的S函数,只是通过Simulink模块实现。用户可以利用状态流图、函数调用生成器(Function-Call Generator)或S函数执行函数调用子系统。Simulink限制放置在函数调用子系统内的模块类型,这些模块不能分别指定采样时间,采样时间由此子系统模块统一设定。使用S函数的逻辑状态而非普通信号作为触发子系统的控制信号。在触发子系统中,触发模块Trigger的参数设置中选择Function-Call可以将由普通信号触发的触发子系统转换为函数调用子系统。
    在这里插入图片描述

动作子系统(Action Subsystem)

具有使能子系统和函数调用子系统的交叉特性,便于习惯于编程语言的开发者使用流控制方法。作为原子子系统,内部各个模块的采样时间不能再划分,共同遵循统一设定。
子系统必须具有相同的采样时间。用户可以通过在子系统内放置Action端
口模块的方式来创建Action子系统,子系统图标会自动反映执行Action子系统的模块类型,
即4种流控制类型:If模块、While模块、For模块或Switch Case模块。
在这里插入图片描述
上图展示了While子系统的图标,该子系统可在Simuklink的Ports & Subsystems模块库中创建,以实现类似C语言的循环控制流语句。在Simulink中,While控制流语句会在每个采样时刻反复执行While子系统中的内容,即原子子系统中的内容,直至满足While Iterator模块设定的条件。此外,对于每一次While Iterator模块的迭代,While子系统中所有模块的更新方法和输出方法都将执行一次。
需注意的是,Simulink在每个步长内执行While子系统的迭代过程中,仿真时间并不会增加。然而,所有While子系统中的模块会将每次迭代视为一个采样时间进行处理。因此,在带有状态的模块中,其输出取决于上一时刻的输入,这种模块的输出反映了while循环中上一次迭代的输入值,而非上一个仿真时间步的输入值。假设在While子系统中存在一个Unit Delay模块,其输出的是在while循环中上一次迭代的输入值,而非上一个仿真时间步的输入值。
While Iterator模块可实现类似C语言的while或do-while循环,作为While子系统内部的控制器模块。根据while loop type设置的不同选项,端口输入个数有所差异,如图所示。
在这里插入图片描述

选择子系统(Selectable Subsystem)

  1. 可变子系统(Variant Subsystem)
    可变子系统内部包括多个子系统,当某条件成立时执行与之相应的子系统。每个子系统匹配一个变量的值,每次仿真时根据这个变量的值决定内部哪一个子系统处于激活状态。
    在这里插入图片描述
    在可变子系统中,多个子系统(称为child子系统)被封装在内,其输入和输出端口无需进行连线。每个child子系统均对应一个变量或表达式。当某个child子系统的变量或表达式值为真时,该子系统将被激活。Simulink的采样时刻到来时,至多只有一个child子系统会被激活。可通过变量控制特定child子系统的执行。
    打开可变子系统的模块参数设置,如图所示:
    在这里插入图片描述

    左侧按列排列4个按钮,第一个按钮用来在可变子系统内建立child子系统,第二个按钮用来编辑激活child子系统的条件,第三个按钮用来打开选中的child子系统,第四个按钮用来更新信息列表。按钮列右侧是一个列表框,包含名称、变体控制项表达式、条件三个选项。用来控制子系统的休眠与激活。当当前子系统被激活时,模块为明亮状态,否则显示为灰暗状态。

  2. 可配置子系统(Configurable Subsystem)(在2021b以后的版本中将会弃用 Configurable Subsystem 模块。)
    用来代表用户自定义库中的任意模块,只能在用户自定义库中使用,动态表示自定义库中的某一个模块。
    可配置子系统的创建步骤如下:
    ① 如图4.2-35所示,在Simulink下单击“File→New→Library”,创建一个新的库。
    ② 将当前设计中需要构造子系统的模块或子系统作为组件加入新建的库中,单击保存。
    ③ 从“Simulink/Ports&.Subsystems/Configurable Subsystem”库中找到Configurable Subsystem模块,将其加入当前库。需要的话可以修改名字,然后保存当前库文件。
    ④ 双击“Configurable Subsystem”模块,出现GUI界面,其中“List of block choices”栏列
    出了新创建库中的所有组件,用户只需手动选择子系统的内部模块。单击保存即可完成可配
    置子系统的创建。
    ⑤在simulink模型中添加“Configurable Subsystem”模块,右击可配置子系统,选中“Block Choice”,选择子系统中的某个模块作为当前设计中的有效模块即可完成自定义库的调用。

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘蓝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值