matlabsimulink子系统的封装_第1页
matlabsimulink子系统的封装_第2页
matlabsimulink子系统的封装_第3页
matlabsimulink子系统的封装_第4页
matlabsimulink子系统的封装_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、子系统的封装的意义 子系统封装技术可以让一个子系统有自己的特点。封装后的子系统可以有自己的图标、自己的参数和具有功能描述的控制对话框,甚至自己的help文档,同时参数的修改更为方便(不用深入子系统,只需在对话框中修改便可),内部结构也不易被修改。 封装技术的简要介绍封装是在Mask Editor中进行的。要打开Mask Editor,需要两步:选中要封装的子系统;选择菜单Edit->Edit Mask或者右键菜单中的Edit Mask。Mask Editor的样子如下: 图一 可见,Mask Editor中共有如下四个选项页:l Icon&Port,主要是对子系统的外观图标进行设

2、置;l Parameters,主要对封装子系统的参数进行设置。如果子系统中有一个或多个模块需要手动设置参数,那么在仿真之前需要进入到子系统里面去对这些模块分别进行参数设计,很麻烦。而用Mask Editor中的Parameters设置参数,使这些参数能够将参数值传入到subsystem的模块中去。这样就可以直接对subsystem进行参数设计,既明了又方便;l Initialization,提供了一个Matlab语言命令框,可以在其中写入一些程序,当子系统有被载入、改变参数或初始化等情况发生时,Simulink会自动执行这些程序。所以可以将一些仿真前需要对subsystem做的设置,以程序的形

3、式写入到编辑框内来实现;l Documentation,编辑子系统的描述和生成help文档。注意:左下角的Unmask按钮可以取消对subsystem的封装。 详细阐述 下面对这四个选项页进行详细阐述,由于Icon&Port和Documentation对subsystem的功能影响不是很大,故只做简要介绍,详细内容参考help文档。 Icon&port 如图一所示,该选项页有三部分:Options、Icon Drawing Commands和Examples of drawing commands。其中Icon Drawing Commands中可以编辑相应的绘图命令,所有支持

4、的命令的简单语法可在Examples of drawing commands中查看,具体用见相应的help文档。 Parameters 该选项页布局如下图所示: 图二 如上图所示,该选项页有两个设置栏Dialog Parameters和Options for selected parameter。在Dialog Parameters左侧有四个按钮,功能分别是增加参数、删除参数、上移和下移。 在Dialog Parameters面板中,每个参数有如下几个属性:l prompt,其实封装后subsystem对话框中显示的文本,起到一种提示作用;l Variable,在mask's work

5、space中存储参数值的变量名称。在封装的subsy内,可以把该variable当做参数的值来使用,所以允许用户通过对话框设置参数 。由于这是变量名,所以要遵守matlab关于变量命名的规则;l Type,编辑参数的空间的类型。在封装好的subsystem的对话框中,控件紧随参数的prompt显示。主要有三种类型Edit、Checkbox和Popup;l Evaluate,Simulink可以使用用户输入作为参数值,也可以把用户输入做个evaluation,使用其结果当做参数的值(默认情况下如此)。选中Evaluate,则会对用户输入做evaluation,然后将evaluation的结果赋值

6、给variable;不选中则不会evaluation,将会把表达式本身作为字符串值赋值给variable。选中Evaluate的效果依控件Type的不同而不同,后面会详细阐述;l tunable,选中tunable则参数在仿真时可以被修改,未选中则仿真时参数不能修改;l tab name,标签名字。不输入tab name,那么封装好的subsystem的对话框是在一个面板上的(没有标签),如果输入了文本,则对话框中参数会显示在不同的标签下; 控件类型:edit、checkbox和popup。l edit允许用户在一定区域输入参数的值;l checkbox允许用户在check box的选中与不选

7、中之间做出选择;l popup允许用户在一系列的可能值之中做出选择。 图三 edit类型的参数的值依赖于Evaluate的选择,具体关系如下表: Evaluate是否选中Edit控件参数值是输入表达式做evaluation后的结果否输入内容的文本字符串 举个例子:假如输入是2*5,则若选中Evaluate,参数值为2×5=10;若为选中Evaluate,则参数值为字符串"2*5"。 checkbox类型参数的值依赖于Evaluate的选择,具体关系如下表:是否选中Evaluate是否选中check boxCheck box参数值是是1否0否是'on'

8、;否'off' 然而help文档中的表是这样的,我感到是错误的:EvaluationCheck Box Parameter StateCheck Box Parameter ValueOnSelected1Cleared'on'OffSelected0Cleared'off' popup控件允许用户从一组可能的值中做出选择。可选择的可能值列表需要用户在Dialog Parameters中选中该参数,然后再Options for selected parameter中的popups标签中编辑可选择值的列表(但是要注意一个可选择值必须占单独的一行)。

9、具体的例子可见图一。具有popup类型控件变量的值依赖于pop-up list中选中的item和Evaluate是否被选中,具体见下表: 是否选中Evaluatepopup参数值是被选择项的索引值,第一项的索引值为1。例如如果选择了popup框中的第3个选项,则参数值为3否popup选项框中所选中的字符串,例如若果选中了popup框中的 red 项,则参数值为 'red' Options for selected parameter允许对Dialog Parameters中选定的参数设置其他的options。Show parameter:只有选中该项,此参数才会显示在已封装模块

10、的对话框中。如果不想改参数出现在对话框中(比如此参数是由其他参数设定的),则需要取消该项;Enable parameter:选中该项,参数可以编辑,否则,参数将不能由用户编辑;Popups:只有当Dialog Parameters中选中的参数是popup类型时,才有此项。此处编辑popup的可能值列表,每行一项;Callback:在此处编辑想让Simulink在改变参数时执行的matlab代码(例如一选中某个checkbox,就激活一个edit field)。 注意:在callback中不要试图改变subsystem中的内容,否则可能在模型update或者simulation时出错。改变sub

11、system中的内容可以再Initialization中进行。 Initialization 该选项卡的界面如下: 图四 当打开model时,所有可视的masked模块的Initialization中的语句执行。初始不可视的模块的Initialization的语句只有在打开包含它们的model或者subsystem时菜执行。 当你没有使用图示的方法加载模块进内存时,Initialization语句不会执行。 在下面的情况下,模型中所有masked模块的Initialization语句都执行:Update the diagram(不知道这个是个什么情况);Start simulation;Sta

12、rt code generation。 在下面的情况下,单个模块的Initialization语句会执行:使用Mask Editor或者set_param改变mask的任何一个参数(例如MaskDisplay 和 MaskInitialization );改变masked block的外观,例如旋转模块或改变模块大小;通过对话框或set_param改变模块的mask参数值;在不同的model或同一个model内复制masked block。 在界面的左侧有dialog variables的列表,在右侧的Initialization commands可以使用双击dialog variables中

13、的变量,可以重新编辑变量的名称。 在Initialization commands中可以使用有效地matlab表达式、matlab函数、脚本、运算符和dialog variables列表中的变量。这些代码是在mask workspace中运行的,而不是在base workspace。在语句的末尾加分号(;)可以防止在Command Window中输出结果。 在界面的下面有一个Allow library block to modify its contents的checkbox。该参数只有在库(library,而非model)中subsystem封装时才有效(图四中该选项是disable的)。选

14、中该选项允许Initialization commands中的语句增加或删除subsystem中的内容(模块等东西),设置参数。否则,无论用何种方式,当一个masked library block改变其内容时都会报错。 注意:Initialization commands也有如下限制:不要用initialization command创建其显示依赖于其他控件设置的mask dialog(例如一选中某个checkbox,就激活一个edit field)。这种功能用callback实现; 在initialization commands中的变量不要以L_和M_开头,以防出现意外结果。由于此种前缀的

15、变量名是内部使用的,所以要保留;Avoid using set_param commands to set parameters of blocks residing in masked subsystems that reside in the masked subsystem being initialized。我觉得就是不要用set_param命令给嵌套在深层的subsystem参数设置参数。 Documentation Documentation的界面如下: 图五l Mask type:出现在对话框的block classification。当出现在对话框时,后面总是有"(m

16、ask)"后缀。该区域可以输入任意合法的matlab字符,但不能输入line break;l Mask description:此处文本出现在对话框中描述模块功能。这里可以输入line break(使用enter或return键);Mask help:此处的内容将在点击help按钮时起作用,可以在其中输入下面三种内容:URL specification;web或eval命令;文本或者html文本。三者的对应关系如下图所示: 图六12.5 子系统及其封装技术12.5.1 子系统的建立建立子系统有两种方法:通过Subsystem模块建立子系统和通过已有的模块建立子系统。两者的区别是:前者

17、先建立子系统,再为其添加功能模块;后者先选择模块,再建立子系统。1通过Subsystem模块建立子系统操作步骤为:(1) 先打开Simulink模块库浏览器,新建一个仿真模型。(2) 打开Simulink模块库中的Ports & Subsystems模块库,将Subsystem模块添加到模型编辑窗口中。(3) 双击Subsystem模块打开一个空白的Subsystem窗口,将要组合的模块添加到该窗口中,另外还要根据需要添加输入模块和输出模块,表示子系统的输入端口和输出端口。这样,一个子系统就建好了。2通过已有的模块建立子系统操作步骤为:(1) 先选择要建立子系统的模块,不包括输入端口和

18、输出端口。(2) 选择模型编辑窗口Edit菜单中的Create Subsystem 命令,这样,子系统就建好了。在这种情况下,系统会自动把输入模块和输出模块添加到子系统中,并把原来的模块变为子系统的图标。例12-5 PID控制器是在自动控制中经常使用的模块,试建立PID控制器的模型并建立子系统。步骤如下:(1) 先建立PID控制器的模型。(2) 建立子系统。12.5.2 子系统的条件执行1使能子系统建立使能子系统的方法是:打开Simulink模块库中的Ports & Subsystems模块库,将Enable模块复制到子系统模型中,则系统的图标发生了变化。例12-6 利用使能子系统构成

19、一个正弦半波整流器。操作步骤如下:(1) 打开Simulink模块库浏览器并新建一个仿真模型。(2) 将Sine Wave、Enabled Subsystem、Scope 3个模块拖至新打开的模型编辑窗口,连接各模块并存盘。其中使能信号端接Sine Wave模块。为了便于比较,除显示半波整流波形外,还显示正弦波,故在示波器属性窗口将Number of axes设置为2。使能子系统建立好后,可对Enable模块进行参数设置。(3) 选择Simulink菜单中的Start命令,就可看到半波整流波形和正弦波形。2触发子系统触发子系统是指当触发事件发生时开始执行子系统。与使能子系统相类似,触发子系统的建立要把Ports & Subsystems模块库中的Trigger模块添加到子系统中或直接选择Triggered Subsystem模块来建立触发子系统。例12-7 利用触发子系统将一锯齿波转换成方波。操作步骤如下:(1) 用Signal Generator、Triggered Subsystem和Scope

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论