3.7 Simulink自定义功能模块

前面讲述了使用Simulink中现有的模块进行仿真,但在实际中,可能有些需要用到的模块在Simulink中没有,因此需要对Simulink的模块进行扩展,以适应特殊的仿真应用。

3.7.1 自定义功能模块的创建

Simulink提供了自定义功能模块,用户只要按照其规定要求定义一些模块,便可在Simulink仿真中调用和加以使用。自定义功能模块的创建有以下两种方法。

(1)一种方法是采用Signal&Systems模块库中的Subsystem功能模块,利用其编辑区设计组合新的功能模块。

基本操作:首先将Signal&Systems模块库中的Subsystem功能模块复制到打开的模型窗口中,然后双击Subsystem功能模块,进入自定义功能模块窗口,即可利用已有的基本功能模块设计出新的功能模块。

(2)另一种方法是将现有的多个功能模块组合起来,形成新的功能模块。

基本操作:在模型窗口中建立所定义功能模块的子模块。用鼠标将这些需要组合的功能模块选中,然后选择Edit菜单下的Create Subsystem即可。

对于很大的Simulink模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。

3.7.2 自定义功能模块的封装

上面提到的两种方法都只是创建一个功能模块而已,如果要命名该自定义功能模块、对功能模块进行说明、选定模块外观、设定输入数据窗口,则需要对其进行封装处理。

首先选中Subsystem功能模块,再打开Edit菜单中的Mask Subsystem进入mask的编辑窗口,可以看出有3个标签页。

  1. Icon标签页

它用于设定功能模块外观,最重要的部分是Drawing Commands,在该区域内可以用disp指令设定功能模块的文字名称,用plot指令画线,用dpoly指令画转换函数。

注意

尽管这些命令在名字上和以前讲的MATLAB函数相同,但它们在功能上却不完全相同,因此不能随便套用以前所讲的格式。

  • disp('text'):在功能模块上显示设定的文字内容。
  • disp('text1\ntext2'):分行显示文字text1和text2。
  • plot([x1 x2 … xn], [y1 y2 … yn]):在功能模块上画出由[x1 y1]经[x2 y2]经[x3 y3]…直到[xn, yn]为止的直线。功能模块的左下角会根据目前的坐标刻度被正规化为[0, 0],右上角则会依据目前的坐标刻度被正规化为[1, 1]。
  • dpoly(num, den):按s次数的降幂排序,在功能模块上显示连续的传递函数。
  • dpoly(num, den, 'z'):按z次数的降幂排序,在功能模块上显示离散的传递函数。

用户还可以设置一些参数来控制图标的属性,这些属性在Icon页右下端的下拉式列表中进行选择。

  • Icon frame:选择Visible则显示外框线;选择Invisible则隐藏外框线。
  • Icon Transparency:选择Opaque则隐藏输入/输出的标签;选择Transparent则显示输入/输出的标签。
  • Icon Rotation:旋转模块。
  • Drawing coordinate:画图时的坐标系。
  1. Initialization标签页

它用于设定输入数据窗口(Prompt List),它主要用来设计输入提示(prompt)以及对应的变量名称(variable)。在prompt栏上输入变量的含义,其内容会显示在输入提示中。variable是仿真要用到的变量,该变量的值一直存于mask workspace中,因此可以与其他程序相互传递。

如果配合在initialization commands内编辑程序,则可以发挥功能模块的功能来执行特定的操作。

(1)在prompt编辑框中输入文字,这些文字就会出现在prompt列表中;在variable列表中输入变量名称,则prompt中的文字对应该变量的说明。如果要增加新的项目,则可以单击边上的Add按钮。Up和Down按钮用于执行项目间的位置调整。

(2)Control type列表给用户提供选择设计的编辑区,选择Edit会出现供输入的空白区域,所输入的值代表对应的variable;Popup则为用户提供可选择的列表框,所选的值代表variable,此时在下面会出现Popup strings输入框,用来设计选择的内容,各值之间用逻辑或符号“|”隔开;若选择Checkbox则用于on与off的选择设定。

(3)Assignment属性用于配合Control type的不同选择来提供不同的变量值,变量值分为Evaluate和Literal两种,其含义如表3.1所示。

表3.1 Assignment属性的含义

076-1

  1. Documentation标签页

它用于设计该功能模块的文字说明,主要针对完成的功能模块来编写相应的说明文字和Help。

(1)在Block description中输入的文字,会出现在参数窗口的说明部分。

(2)在Block help中输入的文字会显示在单击参数窗口中的“Help”按钮后浏览器所加载的HTML文件中。

(3)在Mask type中输入的文字作为封装模块的标注性说明,在模型窗口下,将鼠标指向模块则会显示该文字。当然必须先在View菜单中选择Block Data Tips——Show Block Data Tips。