资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
九、simulink 子系统技术(一) 、回顾 子系统的建立方法有如下两种:(1) 在已有的系统模型中建立子系统:首先框选待封装的区域,即在模型编辑器背景中单击鼠标左键并拖动,选中需要放置到子系统中的模块与信号(或在按下Shift 键的同时,用鼠标左键单击所需模块) ;然后选择 Edit 菜单下的 Create Subsystem,即可建立子系统。如图所示。 (2) 建立空的子系统:使用Subsystems 模块库中的模块建立子系统。这样建立的子系统内容为空,然后双击子系统对其进行编辑。如图所示。 子系统操作在生成子系统之后,用户可以对子系统进行各种与系统模块相类似的操作,这时子系统相当于具有一定功能的系统模块。例如,子系统的命名、子系统视图的修改、子系统的显示颜色等等。框 选 模 块 , 选 择 Edit菜 单 中的 Creat Subsytem 左 键 双 击 子 系 统 显 示 其 内 容 用 鼠 标 左 键 双 击 子 系 统 显 示 其 内 容使 用 多 个 Outport模 块 ,即 Out1模 块 以 产 生 多 个输 出 信 号 左 键 双 击 Subsytem以 编 辑 子 系 统 使 用 鼠 标 左 键 双 击ubsyte以 编 辑 子 系 统(二) 、Simulink 高级子系统技术子系统最基本得应用是将一组相关得模块封装到一个单一的模块中,以利于用户建立和分析系统模型。上面所举的例子中得子系统都可以看作是具有一定输入输出得单个模块,其输出直接依赖于输入得信号。但是有些情况下,只有满足一定条件时子系统才能被执行,也就是说子系统得执行依赖于其他喜好,这个信号称为控制信号,它从子系统单独得端口即控制端口输入。这样得子系统称为条件执行子系统。条件执行子系统的执行受到控制信号的控制,根据控制信号对条件子系统执行的控制方式的不同,可以将条件执行子系统划分为如下的几种基本类型。(1) 使能子系统:是指当控制信号的值为正时,子系统开始执行。(2) 触发子系统:是指当控制信号的符号发生改变时(也就是控制信号发生过零时) ,子系统开始执行。触发子系统的触发执行有三种形式: 控制信号上升沿触发:控制信号具有上升沿形式。 控制信号下降沿触发:控制信号具有下降沿形式。 控制信号的双边沿触发:控制信号在上升沿或下降沿时触发子系统。(3) 函数调用子系统:这时条件子系统是在用户自定义的 S-函数中发出函数调用时开始执行。有关 S-函数的概念将在后续章节中介绍。1、 条件执行子系统模块在进一步介绍条件执行子系统之前,首先介绍如何建立条件执行子系统(如图所示) 。其中需要使用 Subsystems 模块库中的 Enabled Subsystem(使能子系统)模块、TriggeredSubsystem(触发子系统)模块及 Enabled and Triggered Subsystem(使能触发子系统)模块。 图中仅是给出建立条件执行子系统的方法,因此并没有给出执行系统所需的使能信号源与触发信号源(如图椭圆曲线所示,使能输入端与触发输入端采用不同的信号标志) 。如果此时用户运行此系统进行仿真,MATLAB 命令窗口中会给出输入端口没有信号连接的警告,而且系统的输出均为 0。 2、使能子系统得建立与仿真所谓的使能子系统,是指只有当子系统的使能信号输入为正时,子系统才开始执行。【例 1】 使能子系统的建立与仿真。按照上面的方法建立如图所示的动态系统模型。在此系统模型中,存在由方波信号驱动的使能子系统。当控制信号(即系统模型中的方波信号)为正时开始执行子系统。下图所示为使能子系统的结构以及相应的使能状态设置。 此系统模型中各模块的参数设置如下:(1) 系统输入为采用默认设置的正弦信号(即单位幅值,单位频率的单位正弦信号) 。 (2) 使能子系统的控制信号源,使用 Sources 模块库中的 Pulse Generator 脉冲信号发生器所产生的方波信号。其设置为:脉冲周期(Period)为 5 s,其余采用默认设置。(3) 系统输出 Scope 模块参数设置,如图所示。系统仿真参数设置如下:(1) 仿真时间:设置仿真时间范围为 0 至 20 s。(2) 求解器设置:采用默认设置,即连续变步长,具有过零检测能力的求解器。从图中可以明显看出,只有在控制信号为正时,使能子系统才输出。 3、触发子系统所谓的触发子系统指的是只有在控制信号的符号发生改变的情况下(也就是控制信号出现过零事件时) ,子系统才开始执行。如前所述,根据控制信号符号改变方式的不同可以分为:(1) 上升沿触发子系统。系统在控制信号出现上升沿时开始执行。(2) 下降沿触发子系统。系统在控制信号出现下降沿时开始执行。(3) 双边沿(上升沿或下降沿)触发子系统。系统在控制信号出现任何过零时开始执行。【例 2】 触发子系统的建立与仿真分析。 在这个例子中,存在着三个使用不同触发方式的触发子系统,分别是上升沿触发、下降沿触发以及双边沿触发。图所示为此系统的系统模型。模块参数设置如下:(1) 系统输入正弦信号,其模块参数除频率选择为 8 rad/sec 外,其余采用默认的参数。(2) 系统触发控制信号为方波信号,使用 Sources 模块库中的信号发生器 Signal Generator 模块生成方波信号,其参数设置为:波形 waveform 为方波 square,幅值为 0.5,频率为 1 Hz。(3) 系统输出 Scope 模块。在 Scope 模块参数设置中,设置其坐标轴数目为 4,以使用 4 个示波器同时显示 4 组信号。其方法与使能子系统中一样,这里不再赘述。(4) 各触发子系统参数设置如图中所示。分别设置其触发方式为 Rising、Falling 及 Either 即可。系统仿真参数设置如下:(1) 仿真时间范围 0 至 8 s。(2) 采用变步长连续求解器,最大步长为 0.01,以避免信号的不连续。运行此系统进行仿真,仿真结果如图所示。其中第一个示波器输出为系统输入正弦。注意:对于触发子系统而言,它们都具有零阶保持的特性,即:输出结果保持不变。也就是,对于触发子系统而言,系统在触发信号控制下开始执行的时刻,系统由输入产生相应的输出:当触发信号离开过零时,系统的输出保持在原来的输出值,并不发生变化。4、 触发使能子系统在介绍条件执行子系统时已经提到,对于某些条件执行子系统而言,其控制信号可能不止一个。在很多情况下,条件执行子系统同时具有触发控制信号与使能控制信号,这样的条件执行子系统一般称之为触发使能子系统。顾名思义,触发使能子系统指的是子系统的执行受到触发信号与使能信号的共同控制,也就是说,只有当触发条件与使能条件均满足的情况下,子系统才开始执行。触发使能子系统的工作原理如图所示。 是 触 发 事 件 不 执 行 子 系 统使 能 输 入 信号 0?执 行 子 系 统 一 次 否5、 其它子系统介绍在 Simulink Block Library 中的 Subsystems 子系统模块库中除了前面所介绍的通用子系统、触发子系统、使能子系统之外,Simulink 还提供了许多其它的条件执行子系统。图所示为 Subsystems 模块库中的所有子系统模块。在此对其进行简单的介绍。(1) 可配置子系统(Configurable Subsystem):用来代表用户自定义库中的任意模块,只能在用户自定义库中使用。 (2) 函数调用子系统(Function-Call Subsystem):使用 S-函数的逻辑状态而非普通的信号作为触发子系统的控制信号。函数调用子系统属于触发子系统,在触发子系统中触发模块 Trigger 的参数设置中选择 Function-Call可以将由普通信号触发的触发子系统转换为函数调用子系统,如图所示。 函 数 调 用 子 系 统 For循 环 子 系 统 While循 环 子 系 统 选 择 执 行 子 系 统 表 达 式 执 行子 系 统 可 配 置 子 系 统 触 发 端 口 类型 设 置 为 函数 调 用 (3) For循环子系统(For Iterator Subsystem):For 循环子系统的目的是在一个仿真时间步长之内循环执行子系统。 (4) While循环子系统( While Iterator Subsystem):与 For 循环子系统相类似,While 循环子系统同样可以在一个仿真时间步长内循环执行子系统,但是其执行必须满足一定的条件。 (5) 选择执行子系统( Switch Case Action Subsystem):在某些情况下,系统对于输入的不同取值,分别执行不同的功能。 (6) 表达式执行子系统(If Action Subsystem):为了与前面的条件执行子系统相区别,这里我们称 If Action Subsystem 为表达式执行子系统。此子系统的执行依赖于逻辑表达式的取值,这与 C 语言中的 If Else 语句类似。需要注意的是,表达式执行子系统必须同时使用 If 模块与 If Action Subsystem 模块(均在 Subsystems 模块库中)。(三) 、Simulink 的子系统封装技术1 如何封装子系统 建立子系统指的是将具有一定功能的一组模块“容纳” 在一个子系统之中,使用单一图形方式的子系统模块来表示一组模块,从而增强系统模型的可读性,在动态系统进行仿真时需要对子系统中各个模块的参数分别进行设置 封装子系统指的是将已经建立好的具有一定功能的子系统进行封装,封装的目的在于生成用户自定义的模块,此模块与子系统的功能完全一致。 封装子系统具有如下特点:(1) 自定义子系统模块及其图标。(2) 用户双击封装后的图标时显示子系统参数设置对话框。(3) 用户自定义子系统模块的帮助文档。(4) 封装后的子系统模块拥有自己的工作区。因此,使用封装子系统技术具有以下优点:(1) 向子系统模块中传递参数,屏蔽用户不需要看到的细节。(2) “隐藏 ”子系统模块中不需要过多展现的内容。(3) 保护子系统模块中的内容,防止模块实现被随意篡改。 【例 3】 以第 5 章中人口动态变化的非线性离散模型为例说明子系统的封装技术。解:封装子系统的基本过程如下:(1) 打开人口动态变化的非线性离散模型框图。(2) 生成需要进行封装的子系统。(3) 选择需要封装的子系统,单击鼠标右键选择 Mask subsystem,或使用 Edit 菜单项中的相应命令进行子系统封装。封装子系统的基本流程图如图所示,图中上方为系统原始模型框图,中间为使用子系统的系统模型框图。 人 口 动 态变 化 的 非 线性 离 散 模 型 生 成 包 含所 选 模 块 组的 子 系 统选 择 需 要 封 装 的子 系 统 , 单 击 鼠 标右 键 选 择 Masksubytem或 是 使用 Edi菜 单 项 中 的相 应 命 令 以 封 装子 系 统选 择 需 要 封 装 的子 系 统 , 单 击 鼠标 右 键 选 择s或 使用 菜 单 项 中 的相 应 命 令 以 封 装子 系 统2 封装编辑器之图标编辑对话框当选择 Mask subsystem 菜单命令进行子系统封装时,将出现如图所示的封装编辑器并显示图标编辑对话框。使用此编辑器可以对封装后的子系统进行各种编辑。这里首先介绍图标编辑对话框的功能与使用。在默认情况下,封装子系统不使用图标。但友好的子系统图标可使子系统的功能一目了然。为了增强封装子系统的界面友好性,用户可以自定义子系统模块的图标。只需在图标编辑对话框中的子系统模块图标绘制命令栏(Drawing Commands)中使用 MATLAB 中相应的命令便可绘制模块图标,并可设置不同的参数控制图标界面的显示。下面逐一介绍各对话框的使用。(1). 封装类型(Mask Type)封
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号