《Simulink工具箱》PPT课件.ppt_第1页
《Simulink工具箱》PPT课件.ppt_第2页
《Simulink工具箱》PPT课件.ppt_第3页
《Simulink工具箱》PPT课件.ppt_第4页
《Simulink工具箱》PPT课件.ppt_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

MATLAB/Simulink设计,计算机仿真技术,第7讲 MATLAB/Simulink设计,7.1 Simulink简介,7.2 模块库及简单建模,7.3 仿真运行及参数调整,7.4 子系统,7.5 S函数,1. Simulink简介,Simulink 中的“Simu”一词表示可用于计算机仿真,而“Link”一词表示它能进行系统连接,即把一系列模块连接起来,构成复杂的系统模型。 Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。它让用户把精力从编程转向模型的构造.使用Simulink来建模、分析和仿真各种动态系统(包括连续系统、离散系统和混合系统),将是一件非常轻松的事情。 利用Simulink进行系统的建模仿真,其最大的优点是易学、易用,并能依托MATLAB提供的丰富的仿真资源。,近几年来,在学术界和工业领域,Simulink已经成为动态系统建模和仿真领域中应用最为广泛的软件之一。Simulink可以很方便地创建和维护一个完整地模块,评估不同地算法和结构,并验证系统的性能。由于Simulink是采用模块组合方式来建模,从而可以使得用户能够快速、准确地创建动态系统的计算机仿真模型,特别是对复杂的不确定非线性系统,更为方便。 Simulink模型可以用来模拟线性和非线性、连续和离散或者两者的混合系统,也就是说它可以用来模拟几乎所有可能遇到动态系统。另外Simulink还提供一套图形动画的处理方法,使用户可以方便的观察到仿真的整个过程。 Simulink没有单独的语言,但是它提供了S函数规则。所谓的S函数可以是一个M函数文件、FORTRAN程序、C或C+语言程序等,通过特殊的语法规则使之能够被Simulink模型或模块调用。S函数使Simulink更加充实、完备,具有更强的处理能力。,提供了仿真库的扩充和定制机制 Simulink的开放式结构允许用户扩展仿真环境的功能:采用MATLAB、FORTRAN和C代码生成自定义模块库,并拥有自己的图标和界面。 与MATLAB工具箱的集成 由于Simulink可以直接利用MATLAB的诸多资源与功能,因而用户可以直接在 Simulink下完成诸如数据分析、过程自动化、优化参数等工作。,Simulink应用领域,simulink在matlab家族中的位置,coder,Simulink的启动主要有以下两种方法: 在MATLAB的命令窗口中输入simulink,结果是在桌面上出现一个Simulink Library Browser的窗口。 单击MATLAB主窗口的快捷按钮 ,打开Simulink Library Browser窗口 。,matlab函数仿真与simulink仿真的区别 1、数据流仿真 按照数据流的顺序,依次执行,即处理的数据首先通过一个运算阶后在激活下一个运算阶。 例如:m=16; n=15; k=11; fc=10000; fd=1000; fs=100000; msg=randint(k*100,1); code=encode(msg,n,k,bch); modu=dmod(code,fc,fd,fs,qask,m); modu_noise=modu+randn(length(modu),1); demo=ddemod(modu_noise,fc,fd,fs,qask,m); msg_r=decode(demo,n,k,bch); rate=biterr(msg,msg_r);,2、时间流仿真 所有模块在同一时间步长上同时执行。,Simulink模型窗口的建立,在Simulink中打开一个空白的模型窗口的方法: 选中Simulink菜单系统中的File | New | Model菜单项后,会生成一个Simulink窗口; 单击Simulink工具栏中的“新建模型”图标; 在MATLAB的命令窗口中选择File | New | New Model菜单项;,2.模块库及简单建模,第七章 Simulink建模和仿真 7.1 Simulink的概述和基本操作,图7.1.1 Simulink模型元素关联图,7.1.2 基本操作 一、模型基本结构 一个典型的Simulink模型包括如下三种类型的元素: 信号源模块 被模拟的系统模块 输出显示模块 如图7.1.1所示说明了这三种元素之间的典型关系。系统模块作为中心模块是Simulink仿真建模所要解决的主要部分;信号源为系统的输入,它包括常数信号源函数信号发生器(如正弦和阶跃函数波等)和用户自己在Matlab中创建的自定义信号或Matlab工作间中三种。输出模块主要在Sinks库中。,第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作,Simulink模型并不一定要包含全部的三种元素,在实际应用中通常可以缺少其中的一个或两个。例如,若要模拟一个系统偏离平衡位置后的恢复行为,就可以建立一个没有输入而只有系统模块加一个显示模块的模型。在某种情况下,也可以建立一个只有源模块和显示模块的系统。若需要一个由几个函数复合的特殊信号,则可以使用源模块生成信号并将其送入Matlab工作间或文件中。 二、仿真运行原理 Simulink仿真包括两个阶段;初始化阶段和模型执行阶段 (1) 模块初始化 在初始化阶段主要完成以下工作: 模型参数传给Matlab进行估值,得到的数值结果将作为模型的实际参数; 展开模型的各个层次,每一个非条件执行的子系统被它所包含的模块所代替;,第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作, 模型中的模块按更新的次序进行排序。排序算法产生一个列表以确保具有代数环的模块在产生它的驱动输入的模块被更新后才更新。当然,这一步要先检测出模型中存在的代数环。 决定模型中有无显示设定的信号属性,例如名称、数据类型、数值类型以及大小等,并且检查每个模块是否能够接受连接到它输入端的信号。Simulink使用属性传递的过程来确定未被设定的属性,这个过程将源信号的属性传递到它所驱动的模块的输入信号; 决定所有无显示设定采样时间的模块的采样时间; 分配和初始化用于存储每个模块的状态和输入当前值的存储空间。 完成这些工作后就可以进行仿真了。 2) 模型执行 一般模型是使用数值积分来进行仿真的。所运用的仿真解法器(仿真算法)依赖于模型提供它的连续状态微分能力。计算微分可以分两步进行:,第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作, 首先,按照排序所决定的次序计算每个模块的输出。 然后,根据当前时刻的输入和状态来决定状态的微分;得到微分向量后再把它返回给解法器;后者用来计算下一个采样点的状态向量。一旦新的状态向量计算完毕,被采样的数据源模块和接受模块才被更新。 在仿真开始时模型设定待仿真系统的初始状态和输出。在每一个时间步中,Simulink计算系统的输入、状态和输出,并更新模型来反映计算出的值。在仿真结束时,模型得出系统的输入、状态和输出。 在每个时间步中,Simulink所采取的动作依次为: 按排列好的次序更新模型中模块的输出。Simulink通过调用模块的输出函数计算模块的输出。Simulink只把当前值、模块的输入以及状态量传给这些函数计算模块的输出。对于离散系统,Simulink只有在当前时间是模块采样时间的整数倍时,才会更新模块的输出。,第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作, 按排列好的次序更新模型中模块的状态,Simulink计算一个模块的离散状态的方法时调用模块的离散状态更新函数。而对于连续状态,则对连续状态的微分(在模块可调用的函数里,有一个用于计算连续微分的函数)进行数值积分来获得当前的连续状态。 检查模块连续状态的不连续点。Simulink使用过零检测来检测连续状态的不连续点。 计算下一个仿真时间步的时间。这是通过调用模块获得下一个采样时间函数来完成的。 (3) 定模块更新次序 在仿真中,Simulink更新状态和输出都要根据事先确定的模块更新次序,而更新次序对方针结果的有效性来说非常关键。特别当模块的输出是当前输入值的函数时,这个模块必须在驱动它的模块被更新之后才能被更新,否则,模块的输出将没有意义。,第七章Simulink建模和仿真 7.1 Simulink的概述和基本操作,注意:不要把模块保存到模块文件的次序与仿真过程模块被更新的次序相混淆。Simulink在模块初始化时以将模块排好正确的次序。 为了建立有效的更新次序,Simulink根据输入和输出的关系将模块分类。其中,当前输出依赖于当前输入的模块称为直接馈入模块,所有其他的模块都称为非虚拟模块。直接馈入模块的例子有Gain、Product和Sum模块;非直接馈入模块的例子有Integrator模块(它的输出只依赖于它的状态),Constant模块(没有输入)和Memory模块(它的输出只依赖于前一个模块的输入)。 基于上述分类,Simulink使用下面两个基本规则对模块进行排序: 每个模块必须在它驱动的所有模块更新之前被更新。这条规则确保了模块被更新时输入有效。 若非直接馈入模块在直接馈入模块之前更新,则它们的更新次序可以是任意的。这条规则允许Simulink在排序过程中忽略非虚拟模块。 另外一个约束模块更新次序的因素是用户给模块设定优先级,Simulink在低优先级模块之前更新高优先级模块。,SIMULINK模型,外表:直观的方框图 文件:MDL文件 数学:微分方程或差分方程 行为:模拟物理过程的动态性状,Simulink动态仿真,Simulink 基本操作 利用Simulink进行系统仿真的步骤是: 启动Simulink,打开Simulink模块库 打开空白模型窗口; 建立Simulink仿真模型; 设置仿真参数,进行仿真; 输出仿真结果。,Simulink仿真过程 1初始化阶段 对模型的参数进行估计,得到它们实际计算的值。 展开模型的各个层次; 按照更新的次序对模型进行排序; 确定那些显式化的信号属性,并检查每个模块是否能够接受连接它们输入端的信号; 确定所有非显式的信号采样时间模块的采样时间; 分配和初始化存储空间,以便存储每个模块的状态和当前值的输出。,2模型执行阶段 模型仿真是通过数值积分来进行完成的,计算数值积分可以采用以下两步来进行: 按照秩序计算每个模块的积分; 根据当前输入和状态来决定状态的微分,得到微分矢量,然后把它返回给解法器,以计算下一个采样点的状态矢量。在每一个时间步中,Simulink依次解决下列问题: 按照秩序更新模块的输出; 按照秩序更新模块的状态; 检查模块连续状态的不连续点; 计算下一个仿真时间步的时间。,Simulink的模块库,Simulink的模块库能够对系统模块进行有效的管理与组织可以直接将模块库中的模块拖动或者拷贝到用户的系统模型中以构建动态系统模型。,Simulink公共模块库,Simulink中最为基础、最为通用的模块库,它可以被应用到不同的专业领域中。 Simulink模块库按功能分为以下16类子模块库: (1)Commonly Used Blocks:仿真常用模块库 (2)Continuous:连续系统模块库 (3)Discontinuities:非线性系统模块库 (4)Discrete:离散系统模块库 (5)Logic and Bit Operations:逻辑运算和位运算模块库 (6)Lookup Tables:查找表模块库 (7)Math Operations:数学运算模块库 (8)Model Verification:模型验证模块库 (9)Model-Wide Utilities:进行模型扩充的实用模块库 (10)Ports & Subsystems:端口和子系统模块库 (11)Signals Attributes:信号属性模块库 (12)Signals Routing:提供用于输入、输出和控制的相关信号及相关处理的模块库 (13)Sinks:仿真接收模块库 (14)Sources:仿真输入源模块库 (15)User-defined Functions:用户自定义函数模块库 (16)Additional Math &Discrete:附加的数学和离散模块库,Simulink的部分专业模块库,信源模块(Source),有限带宽白噪声 输出频率随时间线性变换的正弦信号 输出当前仿真时间 常数输入 以固定速率输出当前仿真时间 从matlab工作空间中输入数据 从.mat文件中输入数据 接地信号 为子系统或其它模型提供输入端口,输入脉冲信号 输入斜坡信号 输入服从高斯分布的随机信号 输入周期信号 信号发生器 信号产生 正弦信号初始器 输入阶跃信号 输入服从高斯分布的随机信号,信宿模块(Sinks),以数值形式显示输入信号 悬浮信号显示器 为子系统或模型提供输出端口 信号显示器 当输入非零时停止仿真 中断输出信号 将仿真数据写入.mat文件 将仿真数据输出到matlab工作空间 使用matlab图形显示器,连续信号数值积分 输入信号连续时间积分 线性连续系统的状态空间描述 线性连续系统传递函数描述 对输入信号进行固定时间延迟 对输入信号进行可变时间延迟 线性连续系统的零极点模型,连续模块库(Continuous),离散模块库(Discrete),线性离散系统的传递函数描述 线性离散系统的零极点模型描述 线性离散系统的滤波器描述 线性离散系统的状态空间描述 离散时间积分器 离散信号的一阶保持器 单步积分延迟,输出为前一输入 单位延迟 离散信号的零阶保持器,非连续系统模块库(Discontinuities),死区间歇 库仑粘贴信号 死区信号 双输出选择器(手动) 多端口输出选择器 量化器 信号上升、下降速率控制器 信号延迟器 饱和信号 三路选择器(根据输入2控制输出),数学运算模块库(Math operations),求信号绝对值 输出强制系统输入为零的代数状态 按位逻辑运算 逻辑真值查找 输出输入复数的幅值与相位 输出系统输入的的实部或需部 点乘运算 信号增益 信号逻辑运算 幅值与相位转化为复数形式 特定的一些数学函数,矩阵增益 求输入的最小、大值 乘法或除法器 从输入实部与虚部构造复数 关系运算器 求整运算器 符号运算 渐变增益 对输入求和或差 三角与双曲函数,信号路由(Signal Routing),Goto模块标记控制器 将信号与特定的偏移值比较 初始化信号 矩阵串联器 合并输入信号为一个输出 模块控制信息 信号组合器 信号探测器 信号维数改变器 选择或重组信号 信号属性修改 输入信号宽度,对信号进行分配 由输入产生总线信号 总线信号选择器 用户定义的数据存储区 从数据存储区中读取数据 向数据存储区写数据 数据类型选择器 信号分解器 从goto模块中获得信号 函数调用发生器 向goto模块传递信号,Signal Attributes (信号属性),端口及子系统库(Ports and Subsystems),可配置子系统 原子子系统 使能子系统 使能触发 For循环 函数调用 If条件,条件执行子系统 子系统输入 子系统输出 通用子系统 Switch-case子系统 Switch-case动作子系统 上升沿触发 触发子系统 当型循环子系统,表数据选择器(从表中选择数据) 对输入信号进行内插运算 输入信号的一维线性内插 输入信号的二维线性内插 输入信号的n维线性内插 查找输入信号所在范围,查表模块库(Look-Up Table),求取输入信号的数学函数值 M函数(对输入进行运算输出结果) S-函数模块 S-函数生成器,用户定义函数模块(User-Defined Functions),Logic and Bit Operations(逻辑和位操作模块),Model Verification (模型检测)),Model-Wide Utilities (模型扩充),对Simulink库浏览器的基本操作有:,(1) 使用鼠标左键单击系统模块库,如果模块库为多层结构,则单击“+”号载入库。 (2) 使用鼠标右键单击系统模块库,可在单独的窗口打开库。 (3) 使用鼠标左键单击系统模块,在模块描述栏中显示此模块的描述。 (4) 使用鼠标右键单击系统模块,可以得到:系统模块的帮助信息; 将系统模块插入到系统模型中; 查看系统模块的参数设置; 以及回到系统模块的上一层库。,此外还可以进行以下操作: (1) 使用鼠标左键选择并拖动系统模块,并将其拷贝到系统模型中。 (2) 在模块搜索栏中搜索所需的系统模块。,相关操作:,模块库 Sine Wave来自sources; Gain来自Math Operations;Scope来自Sinks 连接方法 (1)拖动对应端口进行连接 (2)单击起始模块后,按Ctrl键再单击目标模块 模块复制 传统方式Ctrl+C/Ctrl+V、或Ctrl键再拖动模块 模块插入 对于单输入单输出模块,只需将这个模块移到线上就可以自动连接。,SIMULINK模型,外表:直观的方框图 文件:MDL文件 数学:微分方程或差分方程 行为:模拟物理过程的动态性状,建立私有模块库,步骤: 1)在simulink中执行ile/new/library 2)将用户定义的模块或是其它模块库中的模块移动到新的模块库中。 3)保存新的模块库,模块的基本操作,1模块选取 (1)选取单个模块; (2)选取多个模块; 2模块复制 (1)在同一窗口内复制 (2)在不同的窗口之间复制 3模块删除 选中模块,按Delete键即可。 删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,再按Delete键; 4模块外形的调整 (1)改变大小 (2)转向 (3)给模块加阴影 5模块名的处理 (1)是否显示模块名 (2)修改模块名 (3)改变模块名的位置 6模块颜色设定 【Format】菜单中的【Foreground Color】可以改变模块的前景颜色,【Background Color】可以改变模块的背景颜色,而模型窗口的颜色可以通过【Screen Color】来改变。 7模块属性设定 选中模块,打开【Edit】【Block Properties】可以对模块进行属性设定,包括对Description、Priority、Tag、Open function、Attributes format string等属性的设定。,连线操作,1模块间连线 在模块间连线,有以下几种情况: (1)连接两个模块 (2)模块间连线的调整 (3)在连线之间插入模块 (4)连线的分支 2在连线上标示信息 在连线上标示的信息包括表示向量、显示数据类型和标记等。 (1)标示向量 (2)显示数据类型 (3)信号标记,信号组合 在利用Simulink进行系统仿真时,在很多情况下,需要将系统中某些模块的输出信号(一般为标量)组合成一个向量信号,并将得到的信号作为另外一个模块的输入。,来自Signal Routing的Bus Creator,简单建模:,支持向量显示,Mux,支持标量扩展,插入模块,49,例1 动态画圆: (1) ; (用正弦波发生器Sine Wave) 双击图标出现相应的模块参数框, 可在其中设置参数. Sine Wave中Phase(相位)为pi/2, 实际为cos t; Sine Wave1中Phase为0.,50,(2) ; (用正弦波发生器Sine Wave和积分器Integrator) Sine Wave中Phase(相位)为pi/2, 实际为cos t; Integrator中Initial condition(初始值)为0. XY Graph中, x的范围为1.51.5, y的范围为1.21.2.,51,(3) (用状态空间State-Space) State-Space中, A=0,1;1,0, B=0;0, C=1,0;0,1, D=0;0. Initial conditions为1;0. 双击XY Graph图标, 可定x的范围为1.51.5, y的范围为1.21.2. Scope的y刻度可右击示波器刻度区出现对话框, 进入Axes Propeties窗口确定.,52,显示结果如下:,积分模块应用:复位积分,负变正时 强迫清零,微分方程,构造微分方程求解模型,Simulink仿真举例(续),3. 仿真运行及参数调整,系统模块参数设置与系统仿真参数设置 双击系统模块,打开系统模块的参数设置对话框。 在参数设置对话框中设置合适的模块参数。 设置合适的系统仿真参数以进行动态系统的仿真 在Simulation菜单的Simulation parameters.子菜单中进行设置,如仿真时间等 运行仿真 单击系统模型编辑器上的Play图标(黑色三角)或选择Simulation菜单下的Start便可以对系统进行仿真分析。 仿真结束后双击Scope模块以显示系统仿真的输出结果,图2.11 Simulink设置窗口,仿真解法,变步长解法,定步长解法,discrere:针对无连续状态系统的特殊解法 ode45:基于Dormand-Prince 4-5阶的Runge-Kutta公式 ode23:基于Bogachi-Shampine 2-3阶的Runge-Kutta公式 ode113:变阶次Adams-Bashforth-Moulton解法 ode15s :刚性系统的变阶次多步解法 ode23s :刚性系统的固定阶次单步解法,discrere:针对无连续状态系统的特殊解法 ode5: ode45确定步长的函数解法 ode4:使用固定步长的经典4阶的Runge-Kutta公式的函数解法 ode3: ode25的确定步长的函数解法 ode2 :使用固定步长的经典2阶的Runge-Kutta公式的函数解法 ode1 :固定步长的Euler解法,仿真器参数设置,仿真器参数设置可用于选择仿真开始时间、仿真结束时间、解法器及输出项等。对于一般的仿真,使用默认设置即可。 1仿真时间(Simulation time)设置 需要设置的有仿真开始时间(Start time)和仿真结束时间(Stop time)。 2仿真步长模式设置 可供选择的有“Variable-step”(变步长)和“Fixed-step”(固定步长)方式。 3解法器设置 用户在“Solver”后面的下拉选项中可以选择变步长模式解法器或固定步长模式解法器。变步长模式解法器有:discrete、ode45、ode23、ode113、ode15s、ode23s、ode23t和ode23tb。 4变步长的参数设置 对于变步长模式,用户常用的设置有:最大和最小步长参数、相对误差和绝对误差、初始步长以及过零控制。默认情况下,步长自动确定,用auto值表示。 5固定步长的参数设置 对于固定步长模式,用户常用的设置有:(1)Multitasking模式;(2)Singletasking模式;(3)Auto模式,工作空间数据导入/导出设置,工作空间数据导入/导出(Data Import/Export)设置主要在Simulink与MATLAB工作空间交换数值时进行有关选项设置,可以设置以下三个选择项。 (1)Load from workspace:选中前面的复选框即可从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。 (2)Save to workspace:用来设置保存在MATLAB工作空间的变量类型和变量名。 (3)Save options:用来设置存往工作空间的有关选项。,Scope高级使用技术,Scope模块的General选项卡,Scope模块的Data history选项卡,使用命令操作对系统进行仿真,支持命令窗口运行仿真的函数有4个,即sim、simset、simget和set_param。 (1)sim函数 sim函数的作用是运行一个由Simulink建立的模型, 其调用格式为: t, x, y =sim(modname,timespan,options,ut);,其中, t为返回的仿真时间向量; x为返回的状态矩阵; y为返回的输出矩阵; modname为系统Simulink模型文件名; timespan为仿真时间; options为仿真参数选择项,由simset设置; ut为选择外部产生输入,ut=T,u1,u2,un。,说明 上述参数中,若省略timespan,options,ut则由框图模型的对话框Simulation Parameters设置仿真参数。,(2)simset函数 simset 函数用来为sim函数建立或编辑仿真参数或规定算法,并把设置结果保存在一个结构变量中。它有如下4种用法: (a) options=simset(property,value,):把property代表的参数赋值为value,结果保存在结构options中。 (b) options=simset(old_opstruct,property,value,):把已有的结构old_opstruct(由simset产生)中的参数property重新赋值为value,结果保存在新结构options中。 (c) options=simset(old_opstruct,new_opstruct):用结构new_opstruct的值替代已经存在的结构old_opstruct的值。 (d) simset:显示所有的参数名和它们可能的值。,(3) simget函数 simget函数用来获得模型的参数设置值。如果参数值是用一个变量名定义的,simget返回的也是该变量的值而不是变量名。如果该变量在工作空间中不存在(即变量未被赋值),则Simulink给出一个出错信息。该函数有如下3种用法: (a) struct=simget(modname):返回指定模型model的参数设置的options结构。 (b) value=simget(modname,property):返回指定模型model的参数property的值。 (c) value=simget(options,property):获取options结构中的参数property的值。如果在该结构中未指定该参数,则返回一个空阵。 用户只需输入能够唯一识别它的那个参数名称的前几个字符即可,对参数名称中字母的大小写不作区别。,(4) set_param函数 set_param函数的功能很多,这里只介绍如何用set_param函数设置Simulink仿真参数以及如何开始、暂停、终止仿真进程或者更新显示一个仿真模型。 (a) 设置仿真参数 调用格式为: set_param(modname,property,value,) 其中modname为设置的模型名,property为要设置的参数,value是设置值。这里设置的参数可以有很多种,而且和用simset设置的内容不尽相同,相关参数的设置可以参考有关资料。 (b) 控制仿真进程 调用格式为: set_param(modname,SimulationCommand,cmd) 其中mode为仿真模型名称,而cmd是控制仿真进程的各个命令,包括start、stop、pause、comtinue或update。 在使用这两个函数的时候,需要注意必须先把模型打开。,Simulink与Matlab的接口,由MATLAB工作空间变量设置系统模块参数 模块参数可以是常量也可以工作空间变量 直接使用MATLAB工作空间中的变量设置模块参数。 使用变量的表达式设置模块参数。 例如,如果a是定义在MATLAB中的变量,则表达式a、a2+5、exp(a)等均可以作为系统模块的参数,将信号输出到MATLAB工作空间中 使用示波器模块Scope的输出信号,可以使用户对输出的信号进行简单的定性分析。 使用Sinks模块库中的To Workspace 模块,可以轻易地将信号输出到MATLAB工作空间中。信号输出的名称在To Workspace模块的对话框中设置,此对话框还可以设置输出数据的点数、输出的间隔,以及输出数据的类型等。其中输出类型有三种形式:数组、结构以及带有时间变量的结构。仿真结束或暂停时信号被输出到工作空间中。,使用工作空间变量作为系统输入信号 Simulink与MATLAB的数据交互是相互的,除了可以将信号输出到MATLAB工作空间中之外,用户还可以使用MATLAB工作空间中的变量作为系统模型的输入信号。使用Sources模块库中的From Workspace模块可以将MATLAB工作空间中的变量作为系统模型的输入信号。此变量的格式如下所示: t=0:0.1:10; x=sin(t); input=t,x; 系统输入信号input的作用相当于Sources模块中的Sine Wave模块,向量与矩阵 Simulink所使用的信号可以是标量也能够传递和使用向量信号。例如,向量增益可以作用在一个标量信号上,产生一个向量输出。 Simulink 最重要的特性就是支持矩阵形式的信号,它可以区分行和列向量并传递矩阵。通过对模块做适当的配置,可以使模块能够接受矩阵作为模块参数。,MATLAB Function与Function模块 除了使用上述的方式进行Simulink与MATLAB之间的数据交互,用户还可以使用Functions and Tables 模块库中的 Function模块(简称为Fcn模块)或Functions and Tables 模块库中的MATLAB Function模块(简称为MATLAB Fcn模块)进行彼此间的数据交互。 Fcn模块一般用来实现简单的函数关系,在Fcn模块中: (1) 输入总是表示成u,u可以是一个向量。 (2)可以使用 C 语言表达式,例如sin(u1)+cos(u2)。 (3) 输出永远为一个标量。,(2) 可以使用 C 语言表达式,例如sin(u1)+cos(u2)。 (3) 输出永远为一个标量。 MATLAB Fcn一般用来调用MATLAB函数来实现一定的功能,在MATLAB Fcn模块中: (1) 所要调用的函数只能有一个输出(可以是一个向量)。 (2) 单输入函数只需使用函数名,多输入函数输入需要引用相应的元素,如mean、sqrt、myfunc(u(1),u(2)。 (3) 在每个仿真步长内都需要调用MATLAB解释器。 使用Fcn模块与MATLAB Fcn模块进行Simulink与MATLAB之间的数据交互。,使用Fcn与MATLAB Fcn模块进行数据交互,4.子系统,建立子系统有助于简化系统结构,提高系统设计的层次性。 一、子系统的概念 是系统构成的一部分,表现形式为具有几个输入输出端口的模块,内部结构在系统中不表现出来。 二、子系统分类 无条件子系统 条件执行子系统 1、使能子系统 2、触发子系统 3、函数调用子系统,在已有的系统模型中建立子系统: 首先框选待封装的区域,即在模型编辑器背景中单击鼠标左键并拖动,选中需要放置到子系统中的模块与信号(或在按下Shift键的同时,用鼠标左键单击所需模块);然后选择Edit菜单下的Create Subsystem,即可建立子系统。 建立空的子系统: Subsystems模块库中的模块建立子系统。这样建立的子系统内容为空,然后双击子系统对其进行编辑。,子系统操作 在生成子系统之后,用户可以对子系统进行各种与系统模块相类似的操作,这时子系统相当于具有一定功能的系统模块。例如,子系统的命名、子系统视图的修改、子系统的显示颜色等等。当然子系统也有其特有的操作,如子系统的显示(用鼠标左键双击子系统模块即可打开子系统)、子系统的封装等等。,Inport输入模块与Outport输出模块 在系统模型中建立子系统时,Simulink会自动生成Inport模块(Sources模块库中的In1模块)与Outport模块(Sinks模块库中的Out1模块)。Inport模块作为子系统的输入端口,Outport作为子系统的输出端口,它们被用来完成子系统和主系统之间的通讯。 Inport和Outport用来对信号进行传递,不改变信号的任何属性;另外,信号标签可以越过它们进行传递。如果需要建立多输入多输出的子系统,则需要使用多个Inport模块与Outport模块,而且最好使用合适的名称对Inport模块与Outport模块进行命名。,三、子系统的封装 封装子系统的特点: 1)自定义系统模块及图表 2)用户双击子系统图表将弹出参数设置框 3)可自定义子系统的帮助文件 4)拥有自己的工作区 使用子系统封装技术的优点: 1)向子系统模块中传递参数 2)“隐藏”子系统中不需要过多展现的内容 3)保护子系统中的内容,防止模块实现被随意篡改。,提示对话框 该编辑器分为四页(MATLAB6.5版): Icon(图标)页 Parameters(参数页) Initialiation(初始化)页 Documentation(文档)页 其中对于子系统封装最关键的是Parameters项,用于设置参数变量及其类型等。,子系统的封装 Parameters页,Add,Delete,Up,Down,提示符,变量名,直接输入变量名,变量的类型为数值,变量的数值可在线调节,假定子系统(Nonlinear system)的参数变量名已由封装编辑器全部输入。双击该子系统图标,即弹出如图所示子系统的参数设置框图。如图所示逐栏输入与变量所对应的参数,即完成对该子系统的参数设置。,1)图表显示界面控制参数 icon frame:设置图表边框为可见或不可见 icon transparency:设置图表为透明或不透明 icon rotation:设置图表为固定或可旋转显示 drawing coordinates:设置图表绘制命令所使用的坐标系单位 2)图表绘制命令栏,2、封装编辑器之参数设置对话框,参数设置控制,参数描述,参数对应变量,参数设置列表,1)参数控制设置 2)参数描述:对模块输入的参数作简单的说明 3)参数对应变量:键入的参数值将传递给封装后的子系统工作空间中相对应的变量,因此要求此处的变量名应和子系统中所使用的变量具有相同的名称 4)参数设置描述 control type:edit:需要用户键入参数值 checkbox:复选框 popup:参数选项(用|隔开) assignment:参数分配类型(evaluate:求值字符串 literal:普通文字),3、封装编辑器之初始化设置对话框,初始化命令,initialization commands(初始化命令栏) 一般为matlab命令,在此可定义封装后子系统工作空间中的各种变量,这些变量可以被封装子系统模块图标绘制命令、其它初始化命令或子系统中的模块使用。 当出现以下情况时,初始化命令被执行: 模型文件被载入 框图被更新或模块被旋转 绘制封装子系统模块图标时,4、封装编辑器之文档对话框,封装类型,帮助,封装描述,PID控制模块的实现,目的:建立一个通用PID控制模块,通过设置比例、积分、微分的参数直接实现PID控制。,1. 利用SIMULINK基本模块构造仿真模型实现PID控制。,PID控制模块的实现,2. 选中控制算法各模块后,建立子系统并对其进行封装,设定相应的三个参数及模型描述。,PID控制模块的实现,3. PID控制模块的实际使用。 双击该模块,直接设置三个参数值既可实现PID控制算法。,PID控制模块的实现,4. 为了便于在其他仿真模型中应用该模块,可以把我们建立的PID控制模块填加到系统模型库中。以后使用时就可直接调用。 打开Matlab6p1ToolboxSimulinkBlockssimulink3.mdl 进入其中的连续模块中,把PID控制模块复制到该模块中。注意:复制前先去掉模块的锁定状态。,条件子系统 使能子系统 该子系统当使能端控制信号为正时,系统处于“允许”状态,否则为“禁止”状态。“使能”控制信号可以为标量,也可以为向量。当为标量信号时,只要该信号大于零,子系统就开始执行;当为向量信号时,只要其中一个信号大于零,也“使能”子系统。,【例】积分分离式PID控制器。这种PID控制器可以让控制器中的积分项在系统响应进入稳态时投入运行,以提高稳态精度;而在系统响应处于瞬态过程时,将积分项断开以改善系统动态响应质量。积分分离式PID控制器建立如图所示:,使能模块的控制信号为delta与abs(e)的差值。delta为一很小的正数,当偏差e的绝对值小于delta时,控制器的积分项才投入使用,从而实现了控制器中的积分项的分离控制。,条件子系统 触发子系统 触发子系统只在触发事件发生的时刻执行。所谓触发事件也就是触发子系统的控制信号,一个触发子系统只能有一个控制信号,在Simulink中称之为触发输入。,(a) 触发子系统模块,(b) 触发子系统模型,触发事件有4种类型,即上升沿触发、下降沿触发、跳变触发和回调函数触发。双击触发子系统中的触发器模块(Trigger),在弹出的对话框中可选择触发类型。,触发子系统应用的一个示例。触发器设为下降沿触发,正弦输入经触发控制后,成为阶梯波,如图所示。,系统仅在脉冲信号的下降沿导通,并保持导通时刻的输入值至下一个脉冲下降沿。,back,4.Simulink仿真举例 1.求解微分方程,初始条件,4.Simulink仿真举例,4.Simulink仿真举例,4.Simulink仿真举例 2.当电源电压 V时,求解表达式y(t)的波形: ,其中y(0)=1。要求交mdl文件及仿真结果的截图。,悬吊式起重机动力学仿真 悬吊式起重机动力学Simulink仿真 为便于建模,将起重机动力学方程改写为:,4.Simulink仿真举例 2.当电源电压 V时,求解表达式y(t)的波形: ,其中y(0)=1。要求交mdl文件及仿真结果的截图。,4.Simulink仿真举例,4.Simulink仿真举例,4.Simulink仿真举例 1. 悬吊式起重机动力学仿真 悬吊式起重机动力学方程,由(2)、(3)式去掉P,则有,悬吊式起重机动力学Simulink仿真 在运行仿真模型前,须先计算出k1、k2和lmp。设mt =50kg,mp=270kg,l=4m,c=20N/ms,在MATLAB指令窗输入以下指令,l=4; c=20; mp=270; mt=50; I=mp*l2; %计算吊重转动惯量 lmp=l*mp; k1=1/(mt+mp); k2=mp*l/(I+mp*l2);,悬吊式起重机动力学Simulink仿真 设置仿真时间为200s,启动Simulink仿真,则由小车位移示波器和吊重摆角示波器,可观察到系统在初始状态x(0)=0, ,(0)=0.01rad/s, 作用下x、 的变化过程曲线:,悬吊式起重机小车位移,悬吊式起重机吊重摆角,四、SIMULINK的仿真实例,双环调速的电流环系统: 建立以上系统模型后,设置仿真时间为1S,运行仿真后,观察示波器的输出,例:,SIMULINK的仿真实例(二),系统传递函数如图:求系统单位负反馈闭环单位阶跃响应,要求通过调节器的作用使系统满足超调量20%,上升时间3s,调节时间10s的要求。,示例:,SIMULINK的仿真实例(二),加入比例控制,P=3,可见上升时间加快,超调量增大,稳态误差减小,但仍然存在稳态误差。加入积分环节,结果稳态误差基本为零,但超调量较大,需要调整这两个参数以获得更好效果。Ti=9.1s,P=0.5时,曲线如下图。上升时间为1.81s,调节时间为4.62s,超调量3.23%。,5 S函数,S函数是扩展Simulink功能的强有力工具,它使用户可以利用MATLAB、C语言、C+语言等程序创建自己定义的Simulink模块。C,C+,Ada,and Fortan S-Functions需要编译为Mex文件,就和其它MEX文件一样,Simulink可以随时动态的调用这些文件。 S函数使用的是一种比较特殊的调用格式,可以和Simulink求解器交互式操作。S-Functions功能非常全面,适用于连续、离散以及混合系统。 S函数允许用户向模型中添加自己

温馨提示

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

评论

0/150

提交评论