




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、把你想要封装的部分用鼠标框选,选中后点右键里面有create subsystem ,就可以建立子模块了另一种方法simulink如何构建及封装子系统今天在用 dsp-builder 做 fir 滤波器的时候遇到一些难题。下图所示的是在simulink中设计的一个个位阶数fir 模型这里可以看到一个问题, 如果设计的滤波器的阶数比较大的时候,就不好全部方便的显示所有部分。 其实只要把相关部分打包一下就可以了。以下是网上搜到的一篇很有指导意义的文章。绝大多数的程序设计语言都有使用子程序的功能。在fortran 里有subroutine子程序和 function子程序; c语言中的子程序被称为“函数
2、”;matlab 的子程序称为函数式m文件。 sinlulilnk也提供了类似的功能子程序。随着模型越来越大、越来越复杂,人们很难轻易的读懂它们。在这种情况下,子系统通过把大的模型分割成几个小的模型系统以使得整个系统模型更简捷、可读性更高,而且这种操作并不复杂。举一个简单的例子,考虑在例1 中提到的汽车模型,其simulink模型图见图 7.5.1 。图 7.5.1 比例速度控制的汽车模型整个模型包括两个主要部分:发动机动力系统和控制系统。但是在模型图中哪些模块代表发动机动力系统,那些模块代表控制系统并不明确。在图7.5.2 中,将模型的这两个部分转化为子系统。经过转化后,主模型图中的结构就变
3、得很明了了,只是两个子系统的具体结构被隐藏起来了,双击子系统模块,则会在一个新的窗口中显示子系统的模块图。如图所示。图 7.5.2 子模块化了的汽车模型子系统的另外一个重要的功能是把反复使用的模块组压缩成子系统后重复使用。在本例中,如果要比较在同一控制系统控制下不同发动机的工作效率,只需要替换新的发动机子系统而不是重建一个新的系统。这样的控制系统就可以反复利用。注意: 这种做法不仅节省了建模时间,而且可以保证在多次建模中不会因失误而在控制子系统中出现差错,这在大型的复杂系统建模中是非常重要的。创建 simulink子系统共有两种方法:一种办法是对已存在的模型的某些部分或全部使用菜单命令【edi
4、t/create subsystem】进行压缩转化,使之成为子系统;另一种方法是使用connections 模块库中的 subsystem模块直接创建子系统。下面分别介绍这两种方法。 (a) 控制子系统 (b) 发动机动力子系统图 7.5.3 子系统分解一、压缩子系统把已经存在的 simulink模型中的某个部分或全部压缩成子系统的操作如下:步骤一:首先使用范围框将要压缩成子系统的部分选中,包括模块和信号线,如图7.5.4所示。图 7.5.4 选中要压缩的模块注意: 在这种情况下只能用范围框,而不能用shift逐个选定。为了能使范围框框住所有需要的模块,重新安排模块的位置常常似乎是必要的。步骤
5、二:在模块窗口菜单选项中选择【editcreat subsystem】,simulink将会用一个子系统模块代替被选中的模块组,如图7.5.5 所示。图 7.5.5 压缩后的模型图步骤三:子系统模块将有一个默认输入端口和输出端口。输入端口和输出端口的默认名分别为 in1 和 out1。调整子系统和模型窗口的大小使之美观,如图 7.5.6所示。图 7.5.6 压缩后的模型图若想查看子系统内容或对子系统进行再编辑,可以双击子系统模块,则会出现一个显示子系统内容的新窗口。在窗口内, 除了原始的模块外, simulink自动添加了输入模块和输出模块,分别代表子系统的输入端口和输出端口。改变它们的标签会
6、使子系统的输入输出端口的标签也随着变化。特别注意: 菜单命令【 edit/creat subsystem】没有相反的操作命令。也就是说一旦将一组模块压缩成子系统,就没有直接还原的处理方法了(undo除外)。因此一个理想的处理方法是在压缩子系统之前先把模型保存一下,作为备份。二、子系统模块在创建模型的时候,如果需要一个子系统,也可以直接在子系统窗口中创建。这样就省去了上面的压缩子系统和重新安排窗口的步骤。要使用子系统模块创建新的子系统,先从signals & systems模块库中拖一个子系统模块到模型窗口中。双击子系统模块,就会出现一个子系统编辑窗口。注意: 在信号输入端口要使用一个输
7、入模块,在信号输出端口要使用一个输出模块。子系统创建完毕后, 关闭子系统窗口。 关闭子系统窗口之前不需要做任何保存操作。子系统作为模型的一部分,当模型被保存时,子系统会自动保存。例 7.5.1 模拟如图所示的弹簧质量系统的运动状态。单个小车系统的运动方程如下:(7.5.1)图 7.5.7 弹簧质量系统先建立如图 7.5.8 所示的单个小车系统的子系统。图 7.5.8 单个小车系统使用子系统模块创建如图7.5.9 所示的子系统,此子系统用来模拟一个小车的运动。子系统的输入为小车的左距x(n-1) 和右距 x(n+1), 输出为小车的当前位置 x(n).子系统完成之后,关闭子系统窗口。复制两次此子
8、系统模块,并如图7.5.10所示链接起来。图 7.5.9 小车 1 的子系统模型图 使用子系统的三小车模型为了可以对每个小车的参数进行赋值,要做以下设置: 对小车 1,将标签为 leftspring的增益模块的增益系数设置为k1,标签为rightspring 的增益模块的增益系数设置为k2,标签为 1/mass 的增益模块的增益系数设置为 1/m1。设置速度积分模块的初始值为0,位置积分模块的初始值为1。 对小车 2,将标签为 leftspring 的增益模块的增益系数设置为k2,标签为rightspring 的增益模块的增益系数设置为k3,标签为 1/mass 的增益模块的增益系数设置为 1
9、/m2。设置速度积分模块的初始值为0,位置积分模块的初始值为1。 对小车 3,将标签为 leftspring的增益模块的增益系数设置为k3,标签为rightspring 的增益模块的增益系数设置为k4,标签为 1/mass 的增益模块的增益系数设置为 1/m3。设置速度积分模块的初始值为0,位置积分模块的初始值为1。此时就可以很方便地使用matlab 变量对弹簧常数 k1,k2,k3和小车质量m1,m2,m3进行赋值。这里使用了一个名为set_k_m 的 m文件对它进行赋值,如下所示:&set the spring constants and block mass valuesk1=1
10、;k2=2;k3=4;m1=1;m2=3;m3=2;仿真开始之前在 matlab 命令窗口中运行此m文件。然后,指定示波器模块把显示数据保存到工作间中,并设置仿真的起始时间(starttime )为 0,终止时间( stoptime)为 100。仿真结束后,在 matlab 窗口中把所得到的小车3 的显示数据绘制成图。7.5.2子系统的封装封装技术是将 simulink子系统“包装”成一个模块,并可以如同使用simulink 内部模块一样使用的技术。每个封装模块都可以有一个自定义的图标用来设定参数的对话框,参数设定方法也与simulink 模块库中的内部模块完全相同。为了更好的理解封装的含义,
11、 见图 7.5.10 所示的模型。此模型与例中的模型完全等价,但它要更容易使用。双击spring-mass1 模块可以打开该模块属性的对话框。 与例中打开每个模块去修改参数不同,这里可以直接在此对话框中输入参数。对话框的结构与形式都和“原装”的模型毫无两样。本节将主要以此弹簧质量系统为例来详细介绍创建一个封装模块的步骤。创建一个封装模块的主要步骤分为三步: 创建一个子系统; 选中子系统,选择模型窗口菜单中的【editmask subsystem】选项生成封装模块; 使用封装编辑器设置封装文本、对话框和图标。一、子系统到封装模块的转换当按照上节中介绍的方法创建以弹簧质量子系统模块之后( 如图7.
12、5.10 所示) ,将其复制到一个新的窗口中,如图所示。选中此模块,在窗口的菜单中执行【 editmask subsystem 】指令,弹出如图所示的一个封装编辑对话框。该对话框有三个选项卡。下面分别讨论这三个选项卡的功能和使用。图 7.5.11 将子系统复制到新窗口图 封装编辑对话框(1) 文本页 documentation图 7.5.13 是编辑器的文本页。它也包括三个区域,每个区域都为一个自由区,既可填写也可以不填写。mask type :该区内容将作为模块的类型显示在封装模块的对话框中。block description:此区中的内容将显示在封装模块对话框的上部,它的位置在后面的图中可
13、能看得更清楚。 其内容脑壳描述模块的功用的简短语句或其它关于使用此模块的注意事项等。block help :当对话框中的【 help 】按钮按下时, matlab 的帮助系统将显示此区中的内容,其内容应当包括使用此模块的详细说明。(2) 初始化页 initialization初始化页是用来设置封装模块参数项的,如图7.5.14 所示。此页也包括三个区域。上区为 mask type 区。此封装类型区与文本页中的封装类型区是等同的,可以在任意一页中定义或改变封装类型。中区是用来设置封装模块对话框中的输入变量项目,如输入变量或操作选择等等。此区包括一个滚动项目列表、一套“加入”、“删除”和“移动”按
14、钮,以及 5 个设置项目属性的编辑区。 底区为 initialization commands ,在此区中可以输入matlab 语句,如定义变量、初始变量值等等。封装子系统与非封装子系统的一个重要的区别在于模块对话框中变量的作用范围。非封装子系统模块中的变量可以直接在matlab 工作间中赋值。而封装子系统的模块则不能。封装子系统有一个独立于matlab 工作间及其它子系统的内部存储空间、这个特点可以防止模块变量与其它工作间中无关变量的冲突。因此,在封装模块中用到的变量要在封装编辑器对话区或初始命令区中设置。图 7.5.13 封装编辑器的文本页图 封装编辑器的初始化页(3) 图标页 icon编
15、辑器的图标页如图7.5.12 所示,它是用来给封装模块设计自定义图标的。此页分 6 个区。顶区的【 mask type 】同其它两页中的【 mask type 】是等同的。【 deawing commands 】区是以 matlab 语句来绘制图标的编辑区。其余的4个区是用来指定图标的属性, 理解了图标的这些属性再来分析图标的绘制命令是很容易的。icon fram: 第一个属性为图标框选项,他由一个下拉菜单组成,分别有可见、不可见选项。所谓的图标框即图标的边界线。 icon transparency :第二个属性为图标的透明度选项,也是由一个下拉菜单组成,有两个选项,透明和不透明。 icon rotation:第三个选项为图标旋转选项, 其下拉菜单选项为固定和旋转。这个选项决定了当执行【formatflip block 】或【 formalrotate block 】指令时的图标形状。 drawing cooedenates:最后一个区是图形坐标区,用来设置绘图的比例。它有三个选项:pixed:用来设置绘图系为绝对坐标系,其效果为当模块图调整大小时,图标不随其大小的改变而改变。 此参数下的坐标系应为象素点坐标,图标的左下角为坐标系的原点。 autoscale :该选项使得图标图形恰好充满整个模块。 norma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025园林绿化工程承包合同
- 合伙协议书工商注册
- 2025年03月四川省第二地质大队考核公开招聘11人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月四川天府新区“蓉漂人才荟”事业单位(13人)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 矫味剂项目风险评估报告
- 甘肃省武威第九中学2024-2025学年初三下学期第三次月考:英语试题含答案
- 井冈山大学《广播电视新闻采写(B)》2023-2024学年第二学期期末试卷
- 广西艺术学院《阿拉伯语笔译二》2023-2024学年第二学期期末试卷
- 贵州省遵义汇川区六校联考2025年初三下学期初联考化学试题含解析
- 宁波城市职业技术学院《海外汉学与中国现代作家研究》2023-2024学年第二学期期末试卷
- 篮球比赛记录表
- 消防安全评定等级
- 危险品安全教育培训总结报告
- 2024年晋中职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 小班健康《保护鼻子》课件
- 《测绘管理法律与法规》课件-测绘法律法规
- 2023全新混凝土罐车运输安全协议
- (完整版)光电子学第2章-介质波导与光纤
- 公路工程安全生产检查记录表
- 2022年贵阳市贵安新区招聘幼儿园雇员教师考试真题
- 2023年06月湖南长沙市望城区卫生健康系统招考聘用86人笔试题库含答案详解
评论
0/150
提交评论