ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:955.27KB ,
资源ID:8869144      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8869144.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MATLABSimulink基础.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MATLABSimulink基础.docx

1、MATLABSimulink基础ROBOT VISION Matlab Simulink 基础 1 Simulink简介 Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持连续、离散及两者混合的线性和非线性系统,也支持具有多种采样频率的系统。在Simulink环境中,利用鼠标就可以在模型窗口中直观地“画”出系统模型,然后直接进行仿真。它为用户提供了方框图进行建模的图形接口,采用这种结构画模型就像你用手和纸来画一样容易。它与传统的仿真软件包微分方程和差分方程建模相比,具有更直观、方便、灵活的优点。Simulink包含有Sinks(输出方式)、Source(输入源)、Line

2、ar(线性环节)、Nonlinear(非线性环节)、Connections(连接与接口)和Extra(其他环节)等子模型库,而且每个子模型库中包含有相应的功能模块,用户也可以定制和创建自己的模块。 用Simulink创建的模型可以具有递阶结构,因此用户可以采用从上到下或从下到上的结构创建模型。用户可以从最高级开始观看模型,然后用鼠标双击其中的子系统模块,来查看其下一级的内容,以此类推,从而可以看到整个模型的细节,帮助用户理解模型的结构和各模块之间的相互关系。在定义完一个模型后,用户可以通过Simulink的菜单或MATLAB的命令窗口键入命令来对它进行仿真。菜单方式对于交互工作非常方便,而命令

3、行方式对于运行一大类仿真非常有用。采用Scope模块和其他的画图模块,在仿真进行的同时,就可观看到仿真结果。除此之外,用户还可以在改变参数后迅速观看系统中发生的变化情况。仿真的结果还可以存放到MATLAB的工作空间里做事后处理。 模型分析工具包括线性化和平衡点分析工具、MATLAB的许多基本工具箱及MATLAB的应用工具箱。由于MATLAB和Simulink是集成在一起的,因此用户可以在这两种环境下对自己的模型进行仿真、分析和修改。 Simulink具有非常高的开放性,提倡将模型通过框图表示出来,或者将已有的模型添加组合到一起,或者将自己创建的模块添加到模型当中。Simulink具有较高的交互

4、性,允许随意修改模块参数,并且可以直接无缝地使用MATLAB的所有分析工具。对最后得到的结果可进行分析,并能够将结果可视化显示。 Simulink非常实用,应用领域很广,可使用的领域包括航空航天、电子、力学、数学、通信、影视和控制等。世界各地的工程师都在利用它来对实际问题进行建模、分析和解决。 2 Simulink的基本操作 2.1 Simulink的运行 运行Simulink 有三种方式: 在MATLAB的命令窗口直接键入“Simulink”并回车; 单击MATLAB工具条上的Simulink 图标; 在MATLAB菜单上选 FileNewModel。 运行后会显示图2.1所示的Simuli

5、nk模块库浏览器,单击工具条左边建立新模型的快捷方式,则显示如图2.2所示的新建模型窗口,在模型窗口中用户便可通过选择模块库中的仿真模块,建立自己的仿真模型,并进行动态仿真。 图2.1 Simulink模块库浏览器图2.2 新建模型窗口 2.2 常用的标准模块 附录C以表格的形式给出Simulink几个基本模块库中的模块功能简介,表格中的模块名和模块库中的模块图标下的名称一致。打开模块库(图标)窗口的方法非常简单,以连续系统模块库(continuous)为例,在Simulink模块库浏览窗口中选中Simulink,然后单击Simulink旁边的小加号或者双击鼠标左键,这时就会出现如图2.3所示

6、Simulink基本库窗口,并选择Continuous模块库的图标双击即可进入如图2.4所示的连续系统模块库,可选择相应的模块图标拖至编辑窗口即可。 图2.3 Simulink模型库窗口 图2.4 continuous模块库 2.3 模块的操作图2.5 选取模块 1、 模块的选取 当选取单个模块时,只要用鼠标在模块上单击即可,此时模块的角上出现黑色小方块。选取多个模块时,选取拖拽鼠标的方式把要选择的模块全部包围即可,若所有被选取的模块都出现小黑方块,则表示模块被选中,如图2.5所示。 2、 模块的复制、剪切、删除、移动 应用【Edit】【copy】/【cut】/【paste】/【clear】可

7、对选取的模块进行复制,剪切,粘贴,删除等操作,如果要在同一窗口移动模块,则在模块选中的基础上,用鼠标进行拖拽并放在合适的位置。 3、 模块的连接 (1) 连接两个模块:从一个模块的输出端连到另一个模块的输入端。如果两个模块不在同一水平线上,连线是折线,若用斜线表示则需在连接时按住【Shift】。 (2) 在连线之间插入:把模块用鼠标拖到连线上,然后释放鼠标即可。 (3) 连线的分支:当我们需要把一个信号输送给不同的模块时,连线要采用分支结构,其操作步骤是:先连好一条线,把鼠标移到支线的起点,并按下【Ctrl】,再将鼠标拖至目标模块的输入端即可。 4、 模块参数的设置 Simulink中几乎所有

8、模块的参数(Parameters)都允许用户进行设置,只要双击要设置的模块或在模块上按鼠标右键并在弹出的菜单中选择【Block Parameters】就会显示参数设置对话框。 例2.1 已知单位负反馈二阶系统的开环传递函数为试绘制单位阶跃响应的Simulink结构图。 解:1、利用Simulink的Library窗口中的【File】|【New】,打开一个新的工作空间; 2、分别从信号源库(Sourse)、输出方式库(Sink)、数学运算库(Math)、连续系统库(Continuous)中,用鼠标把阶跃信号发生器(Step)、示波器(Scope)、传递函数(Transfer Fcn)、相加器(S

9、um)四个标准功能模块选中,并将其拖至工作平台; 3、按要求先将前向通道连接好,然后把相加器(Sum)的另一个端口与传递函数和示波器间的线段相连,形成闭环反馈; 4、双击阶跃信号发生器,打开其属性设置对话框,并将其设置为单位阶跃信号,如图2.6所示,同理,将相加器设置为“+-”,使传递函数的Numerator设置为“10”,Denominator设置为“1 4.47 0”; 图2.6 模块参数设置对话框 5、绘制成功后,如图2.7所示,并命名后存盘。 图2.7 二阶系统Simulink结构图 5、 模块外形的调整 (1) 改变模块的大小:选定模块,用鼠标点住其周围的四个黑方块中的任意一个拖动,

10、这时会出现一个虚线的矩形表示新模块的位置,到需要的位置后释放鼠标即可。 (2) 调整模块的方向:选定模块,选择菜单【Formt】|【Rotate Block 】使模块旋转90,【Flip Block】使模块旋转180。(3) 给模块加阴影:选定模块,选择菜单【Formt】|【Show Drop Shadow】使模块产生阴影效果。 6、 模块名的处理 (1) 模块名的显示与消隐:选定模块,选择菜单【Format】|【Filp Name】使模块名被隐藏,同时【Show Name】会使隐藏的模块名显示出来。 (2) 修改模块名:用鼠标左键单击模块名的区域,使光标处于编辑状态,此时便可对模块名进行任意

11、的修改。同时选定模块,选择菜单 【Format】|【Font】可弹出字体对话框,用户可对模块名和模块图标中的字体进行设置。 例2.2 将图2.7所示的结构图进行模块处理。 解: 1. 对模块名进行修改,如单击传递函数模块标题“Transfer Fcn”,将其原字符删除,并输入汉字“传递函数”,同理将其他模块也改为汉字标题; 2. 将相加器的标题移至其顶部; 3. 选中“传递函数”模块,并选择菜单【Formt】|【Show Drop Shadow】并将其设置为阴影; 4. 将模块全部选中,选择菜单【Format】|【Font】通过字体对话框将所有字体设置为“宋体”,如图2.8所示。 图2.8 二

12、阶系统模型 3 系统仿真及参数设置 在Simulink中建立起系统模型框图后,运行菜单【Simulation】|【Start】就可以用Simulink对模型进行动态仿真。一般在仿真运行前需要对仿真参数进行设置,运行菜单【Simulation】|【Parameters】完成设置,如图3.1所示。 图3.1 仿真参数设置对话框 3.1 算法设置 在Solver里需要设置仿真起始和终止时间、选择合适的解法(Solver)并指定参数、设置一些输出选择。 1 设置起始时间和终止时间(Simulation time) 【Simulation】|【Start time】设置起始时间,而【Stop time】

13、设置终止时间,单位为“秒”。 2 算法设置(Solver option) (1) 算法类型设置 仿真的主要过程一般是求解常微分方程组,【Solver option】|【Type】用来选择仿真算法的类型是变化的还是固定的。 变步长解法可以在仿真过程中根据要求调整运算步长,在采用变步长解法时,应该先指定一个容许误差限(【Relative tolerance】或【Absolute tolerance】),使得当误差超过误差限时自动修正仿真步长,【Max step size】用于设置最大步长,在缺省情况下为“auto”,并按下式计算最大步长: 最大步长=(终止时间-起始时间)/50。 (2) 仿真算法

14、设置 离散模型:对变步长和定步长解法均采用discrete(no continuous state)。 连续模型:可采用变步长和定步长解法。 变步长解法有:ode45、ode23、ode113、ode15s、ode23s、ode23t,ode23st ode45:四阶/五阶Runge-Kutta算法,属单步解法; ode23:二阶/三阶Runge-Kutta算法,属单步解法; ode113:可变阶次的Adams-Bashforth-Moulton PECE算法,属于多步解法; ode15s:可变阶次的数值微分公式算法,属于多步解法; ode23s:基于修正的Rosenbrock公式,属单步解法

15、。 定步长解法有:ode4、ode5、ode3、ode2、ode1 ode5:定步长的ode45解法; ode4:四阶Runge-Kutta算法; ode3:定步长ode23算法; ode2:Henu方法,即改进的欧拉法。 ode1:欧拉法。 3 设置输出选项图3.2 二阶系统的仿真曲线 对同样的信号,选择不同的输出选项,则得到输出设备上的信号是不完全一样的。要根据需要选择合适的输出选项以达到满意的输出效果。 对于例2.2,首先运行菜单【Simulation】|【Parameters】,进行系统的仿真参数设置,如仿真时间为2秒,仿真算法选择定步长的四阶龙格库塔法,然后运行菜单【Simulati

16、on】|【Start】进行系统仿真,最后双击示波器,得到系统的仿真曲线如图3.2所示。 3.2 工作空间设置 工作空间设置(Workspace I/O)窗口如图3.3所示,可以设置Simulink和当前工作空间的数据输入、输出。通过设置,可以从工作空间输入数据、初始化状态模块,也可以把仿真结果、状态变量、时间数据保存到当前工作空间。图3.3 设置Workspace I/O 窗口 1、从工作空间读入数据(Load from workspace) Simulink通过设置模型的输入端口,实现在仿真过程中从工作空间读入数据,常用的输入端口模块为信号与系统模块库(Signals & Systems)中

17、的In1模块,其参数设置如图3.4所示。 图3.4 输入参数设置对话框 设置的方法是选中Input前的复选框,并在后面的编辑框键入输入数据的变量名,并可以用命令窗口或M文件编辑器输入数据。Simulink根据输入端口参数中设置的采样时间读取输入数据。 2、保存数据到工作空间(Save to workspace) 可以选择保存的选项有:时间、端口输出、状态、最终状态。选中选项前面的复选框并在选项后面的编辑框输入变量名,就会把相应数据保存到指定的变量中。常用的输出模块为信号与系统模块库(Signals & Systems)中的Out1模块和输出方式库(Sink)中的To Workspace模块。

18、3、初始化状态模块 状态模块初始化的方法有两种:使用模块本身的参数设置和从工作空间读入。用于初始化的变量中的元素个数要和状态模块数目一致,而且当从工作空间载入数据时,模块本身的参数设置初始值无效。 4 Simulink模块库 4.1 信号源模块库 图4.1 Sources模块库信号源模块库(Sources)见图4.1,主要包括如下模块: 输入端口模块(In1):用来反映整个系统的输入端子。 常数模块(Constant):可以产生一个常数值,一般用做给定输入。 信号发生器(Signal Generator):可以产生正弦波、方波、锯齿波、随机信号等波形信号,用户可以自由地调整信号的幅值及相位。

19、时钟(Clock):生成当前仿真时钟,以秒为单位,在记录数据序列或与时间相关的指标中需要此模块。 读文件模块(From File)和读工作空间模块(From Workspace):允许从文件或MATLAB工作空间中读取信号作为输入信号。 阶跃信号模块(Step):生成一个按给定的时间开始的阶跃信号,信号的初始值和终值均可自由设定。常用来仿真系统的阶跃响应,也可用来仿真定时的开关动作。 其他类型的信号输入模块:带宽限幅白噪声(Band-Limited White Noise),斜坡输入(Ramp),脉冲信号(Pulse Generator),正弦信号(Sine Wave)等。 4.2 连续系统模

20、块库 连续系统模块库(Continuous)见图4.2,主要包括如下模块: 图4.2 Continuous模块库 积分器(Integrator):对输入(向量或标量)进行积分,用户可以设定初始条件。 微分器(Derivative):将输入端的信号经过一阶数值微分,在输出端输出,在实际应用中应该尽量避免使用该模块。 传递函数(Transfer Fcn):使用分子、分母多项式的形式给出系统的传递函数模型,分母的阶次必须大于或等于分子的阶次。 状态空间(State-Space):使用A、B、C、D矩阵形式表示系统的状态空间模型,并可以给出初值。 零极点(Zero-Pole):用指定的零、极点建立连续

21、系统模型。 时间延迟(Transport Delay):将输入信号延迟指定的时间后,再传输给输出信号,用户可自行设置延迟时间。 4.3 离散系统模块库 离散系统模块库(Discrete)见图4.3,主要包括如下模块: 零阶保持器(Zero-Order Hold):在一个计算步长内将输出的值保持在同一个值上。 一阶保持器(First-Order Hold):依照一阶插值的方法计算一个步长后的输出值。 离散传递函数(Discrete Transfer Fcn):与连续传递函数结构相同,可设置采样时间。 离散状态空间(Discrete State-Space):与连续状态空间结构相同,可设置采样时间

22、。 离散积分器(Discrete-Time Integrator):实现离散的欧拉积分,可以设置初值和采样时间。 离散滤波器(Discrete Filter):实现IIR和FIR滤波器。 图4.3 Discrete模块库 4.4 数学运算模块库 图4.4 Math Operations模块库 数学运算模块库(Math Operations)见图4.4,主要包括如下模块: 增益(Gain):输出为输入与增益的乘积。 加法模块(Sum):对输入进行求代数和,在组建反馈控制系统方框图时必须采用此模块,反馈的极性(+或-)可自行设置。 数字逻辑模块:逻辑运算模块(Logical Operator),组

23、合逻辑模块(Combinatorial Logic)和位逻辑运算模块(Bitwise Logical Operator),可以用这些模块很容易地组建数字逻辑电路。 数学函数模块:绝对值函数(Abs),三角函数(Trigonometric),数学运算函数(Math Function),复数的实部、虚部提取函数(Complex to Real-Imag),取整函数(Rounding Function)等。 4.5 输出模块库 输出模块库(Sinks) 见图4.5,主要包括如下模块: 输出端口模块(Out1):表示整个系统的输出端,系统直接仿真时该输出将自动在MATLAB工作空间中生成变量。 示波器

24、(Scope):显示数据随时间变化的过程和结果。 x-y示波器(XY Graph):将两路输入信号分别作为示波器的两个坐标轴,并将信号的轨迹显示出来。 写文件模块(To File)和工作空间写入模块(To Workspace):将输出信号写到文件或工作空间中。 数字显示模块(Display):将输出信号以数字的形式显示出来。 仿真终止模块(Stop Simulation):强行终止正在进行的仿真过程。 图4.5 Sinks模块库 4.6 非线性系统模块库 非线性系统模块库(Discontinuities)见图4.6,主要包括如下模块: 黏性摩擦(Coulomb & Viscous Fricti

25、on):在原点不连续,在原点外具有线性增益。 滞环非线性模块(Backlash):该模块具有滞环非线性特性。 死区非线性模块(Dead Zone):该模块具有死区非线性特性。 饱和非线性模块(Saturation):该模块具有饱和非线性特性。 图4.6 Discontinuities模块库 5 Simulink子系统 5.1 Simulink子系统简介 Simulink提供的子系统功能可以大大地增强Simulink系统框图的可读性,可以不必了解系统中每个模块的功能就能够了解整个系统的框架。子系统可以理解为一种“容器”,我们可以将一组相关的模块封装到子系统模块中,并且等效于原系统模块群的功能,而

26、对其中的模块我们可以暂时不去了解。组合后的子系统可以进行类似模块的设置,在模型的仿真过程中可作为一个模块。建立子系统有以下两种方法: 1、 在已有的系统模型中建立子系统 设已有Simulink模型图如图5.1所示,选择需要封装的模块区域(用Shift键和鼠标左键配合可以达到同样的目的),框选如图5.2所示区域,然后右击,弹出浮动菜单,选择【Creat Subsystem】,如图5.3所示。创建子系统的结果如图5.4所示。然后双击Subsystem模块,弹出子模块如图5.5所示。 图5.1 简单的Simulink模型 图5.2 框选需要封装的模块 图5.3 快捷菜单 图5.4 创建子系统后的模型

27、 图5.5 子系统模型图 子系统的功能就是把相关模块集中起来,并没有删除。系统的结构仍然没有改变。 2、 在已有的系统模型中新建子系统 简单建立模型如图5.6所示,双击Subsystem模块,在弹出的窗口中建立如图5.7所示模型。 图5.6 含有子系统的模型 图5.7 子系统模型结构这两种创建子系统最后实现的是一模一样的功能,只不过操作顺序不同。前者是先将这个结构搭建起来,然后将相关的模块封装起来;后者则是先做一个封装容器,然后在封装容器中添加模块。 对于一个相对简单的模型我们采用第一种,这种操作一般不会出错,能够顺利搭建模型。而对于非常复杂的系统,我们事先将模型分成若干个子系统,然后再采用第

28、二种方法进行建模。 在使用Simulink子系统建立模型时,有如下几个常用的操作: 1. 子系统命名:命名方法与模块命名方法类似,是用有代表意义的文字来对子系统进行命名,有利于增强模块的可读性。 2. 子系统编辑:用鼠标双击子系统模块图标,打开子系统并对其进行编辑。 3. 子系统的输入:使用Souces模块库中的Input输入模块,即In1模块,作为子系统的输入端口。 4. 子系统的输出:使用Sinks模块库中的Output输出模块,即Out1模块,作为子系统的输出端口。 5.2 Simulink高级子系统应用 子系统的最基本目的就是将一组相关的模块包含到一个模块库中,用以简化系统,使得系统的

29、分析更加容易。例如在一个控制系统中,受控系统就可以视为一个子系统,控制器也可以作为一个子系统。从前面的介绍可以发现。这些子系统就如其他一般模块一样,都是具有特定输入输出的模块。对于子系统输入的信号,会产生一个特定的输出信号。但是对于某些特殊的情况,并不是对所有的输入信号都要产生输出信号,只有在某些特定的条件下才会产生输出信号,这就需要输入一个控制信号,控制信号由子系统模块的特定端口输入,这样的子系统称为条件执行子系统。在条件子系统中,输入信号取决于输入信号和控制信号。 根据不同的控制信号,可将条件执行子系统分为如下几类: 1. 触发子系统:在控制信号满足某种变化要求的瞬间可以触发(激活)子系统

30、,然后保持子系统的输出状态,等待下一个触发信号,它允许用户自己设置在控制信号的上升沿、下降沿或控制信号变化时触发子系统。具体有以下形式: (1) 控制信号上升沿触发:子系统在控制信号上升的时候执行。 (2) 控制信号下降沿触发:子系统在控制信号下降的时候执行。 (3) 控制信号的双边沿触发:子系统在控制信号符号发生变化时就执行。 2. 使能子系统:控制信号分成“允许”和“禁止”两种,在允许信号控制下,可以执行子系统中的模块,否则将禁止其功能。为保证整个系统的连贯性,在禁止状态下子系统仍然有输出信号,用户可以选择继续保持禁止前的信号,或复位子系统,强制使其输出零信号。 3. 使能触发子系统:在使

31、能状态下被触发时将激活该子系统,否则将禁止子系统。 5.3 封装子系统 在这里要分清楚封装子系统和建立子系统是两个不同的概念,分别介绍如下: 建立子系统是将一组完成相关功能的模块包含到一个子系统当中,用一个模块来表示,主要是为了简化Simulink模型,增强Simulink模型的可读性,便于我们仿真和分析。在仿真前,需要打开子系统模型窗口,对其中的每个模块分别进行参数设置。虽然增加了Simulink模型的可读性,但并没有简化模型的参数设置。当模型中用到多个这样的子系统,但是每个子系统中模块的参数设置都不相同时,这就显得很不方便。而且容易出错。 为了解决简单建立子系统的不足,我们可以对子系统进行封装。将完成特定功能的相关模块集合到一起,对其中经常要设置的参数设置为变量,然后封装,使得其中变量可以在封装系统的参数设置对话框中统一进行设置,这就大大简化了参数的设置,而且不容易出错,这非常有利于进行复杂的大系统仿真。 封装后的子系统可以作为用户的自定义模块,作为普通模块一样添加到Simulin

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1