2.2 子系统的制作与封装
实际建模过程中,常常会遇到一些难以在一张模型图中画出来的较为复杂系统。这时候就需要将大系统中的一些具有独立功能的部分封装起来,形成一些所谓的子系统,然后再利用这些子系统来构成整个系统。
1.子系统的制作
Simulink提供了两种构建系统的方法,一种是使用Simulink/Ports&;Subsystems库中的“Subsystem”模块,另一种是使用快捷菜单命令“CreateSubsystem”。比较方便的是
快捷命令法,其方法如图2 29所示。图2 29(a)中虚线框表示的便是待要制作成子系统的模块集合。用鼠标框选这个模块集合,如图2 29(b)使用右键打开快捷菜单并选用
“CreateSubsystem”命令,框选中的模块集合便会被制作成图2 29(c)所示的样子,这
就是子系统。如果需要对子系统的内容进行修改,再双击子系统图标即可打开它,修改完毕后关掉窗口即可。
图229 子系统的制作
2.子系统的封装
通过上面图229所示的例子可以看到,通过系统分层和建立子系统可以相当方便地构建大型复杂系统,并且这些子系统还可以反复利用。然而,上例中子系统模型还存在一些缺点:修改内部模块参数不方便,需要打开子系统找到对应的模块后再行修改。为此,Simulink提供了所谓的模块封装技术。对子系统封装以后的模块与Simulink模块库所提供的模块一样,子系统模块内部的参数可以显示于一个对话框,并可在这个对话框中对显示的参数进行输入和修改。
封装一个子系统也相当简单,选中该子系统图标,选择“Edit|MaskSubsystem”菜单命令,然后在所弹出的对话框中对封装进行设计即可。
例如上述图2 29,假如子系统中三角波模块设置如图2 30(a)所示,现欲将其设置成图2 30(b)所示的样子,目的是想将来用户双击子系统模块图标时能打开一个参数设置对话框,然后由用户在那个对话框中对三角波的参数赋予实际值。
图230 三角波参数的设置
为了达到上述目的,就要使用Simulink的封装机制。
首先,如图231所示,先选中待封装子系统,用鼠标右键打开快捷菜单,在菜单中
选用“MaskSubsystem”命令,然后在随后打开的,如图2 31(b)所示的封装设计对
话框中选择“Parameters”选项卡,按下参数插入按钮,就可以在参数表中定义参数了。参数定义无误后,确认即可。
图231 子系统的封装
一个功能模块集封装成子系统后,再用鼠标双击它,打开的就不再是子系统的内容栏,而只是允许用户修改的一个参数设置对话框,如图2 32(a)所示。这就是封装的含义和意义。如果用户还需要观察和修改内部模块结构,那么就使用快捷菜单中的命令
“LookUnderMask”来打开它,如图2 32(b)所示。
图232 封装后的子系统
至于封装的其他功能和选项请读者自行参阅其他更详细的 Matlab使用说明。同时,Simulink允许构造多层子系统,在子系统中还包含若干下层子系统。