软件开发工具——Simulink子系统介绍
北冥有鱼
|
2019.12.30
|
0
+关注

1. 子系统概述

子系统将模块及其信号线组合为一个大的模块,划分为上层及内部两个层次,在上层屏蔽内部结构,仅将输入/输出个数表现在外,内部是真正的逻辑结构。这种层次性划分有如下优点:

1)减少了模型窗口中显示的模块数目,使模型外观结构更清晰,增强了模型的可读性。

2)在简化模型外观结构图的基础上,保持了各模块之间的拓扑关系,使得特定功能的模块可以拥有一些独立的属性。

3)可以建立自定义子系统,方便在内部集成某种功能,进行复用。

子系统的模块框图如图所示。

Simulink根据仿真特性将模块的属性分为两种:虚拟模块和非虚拟模块。将基本模块组成子系统时需考虑基本模块的类型划分,需要区分这两种类别的模块:非虚拟模块在仿真过程中起实际的作用对其进行编辑或者增加除操作,会影响到模型的运行和改变模型的结果;虚拟模块在仿真的过程中不起实际作用,主要是为了从图框上进行程序的层次划分以及保持模型的图形界面的整洁性等作用。还有一些模块在某些特定条件下为非虚拟模块,有些条件下为虚拟模块,可以称之为条件虚拟模块。了解虚拟模块和非虚拟模块是非常必要的,这两者的区别在生成代码时可以直观地看到(虚拟子系统不会生成用户指定的函数体而是直接将模块生成的代码内联)。另外,子系统是否是虚拟模块对于模型的各个模块的执行顺序有着直接的影响。

2. 模型的运行顺序

Simulink模型的计算顺序是基于时间采样和信号流向的,即按照时间的顺序执行。每一个采样点时间,模型中所有模块的状态和输入/输出值都要计算并更新一下,每个模块的输出值都通过信号连接传递给下一个模块的输入。系统采样时间由解算器类型和步长共同决定,并且作为 Simulink模型仿真的最小粒度。当系统采样时刻到来时,每个模块再根据自身所设定的采样时间方式决定是否在当前这个采样时刻进行计算。允许用户设定采样时间的模块在其参数对话框中都提供 Sample Time这个属性。对于模块的 Sample Time属性,常用的值有以下几组:

-1:继承输入信号采样时间,若没有输入信号,继承父层模型采样时间;如果模块无输入信号且本身处于顶层模型中,则继承系统解算器的步长。

0:连续采样时间。

非零正数:离散采样时间

Inf:无穷大采样时间,即不采样,如常数模块。

子系统的入口采用Inport模块,同其输出连接的模块(非虚拟模块)往往是第一个需要计算的。当存在多个输入端口时,按照输入端口的编号从小到大顺序执行,再顺次更新这个模块的输出信号所连接的模块。如果这个模块的输入端口有多个,那么需要所有输入端口的数据全部准备完毕后,再计算多输入模块的状态量和输出量。如下图所示。

精选留言
延伸阅读
更多报告干货
写留言
1616
阅读
收藏
回到顶部