第七章-Simulink仿真
- 格式:pptx
- 大小:1.98 MB
- 文档页数:54
第七章 Simulink基础7.1 Simulink简介Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持连续、离散及两者混合的线性和非线性系统,也支持具有多种采样频率的系统。
在Simulink环境中,利用鼠标就可以在模型窗口中直观地“画”出系统模型,然后直接进行仿真。
它为用户提供了方框图进行建模的图形接口,采用这种结构画模型就像你用手和纸来画一样容易。
它与传统的仿真软件包微分方程和差分方程建模相比,具有更直观、方便、灵活的优点。
Simulink包含有Sinks(输出方式)、Source(输入源)、Linear(线性环节)、Nonlinear(非线性环节)、Connections(连接与接口)和Extra(其他环节)等子模型库,而且每个子模型库中包含有相应的功能模块,用户也可以定制和创建自己的模块。
用Simulink创建的模型可以具有递阶结构,因此用户可以采用从上到下或从下到上的结构创建模型。
用户可以从最高级开始观看模型,然后用鼠标双击其中的子系统模块,来查看其下一级的内容,以此类推,从而可以看到整个模型的细节,帮助用户理解模型的结构和各模块之间的相互关系。
在定义完一个模型后,用户可以通过Simulink的菜单或MATLAB的命令窗口键入命令来对它进行仿真。
菜单方式对于交互工作非常方便,而命令行方式对于运行一大类仿真非常有用。
采用Scope模块和其他的画图模块,在仿真进行的同时,就可观看到仿真结果。
除此之外,用户还可以在改变参数后迅速观看系统中发生的变化情况。
仿真的结果还可以存放到MATLAB的工作空间里做事后处理。
模型分析工具包括线性化和平衡点分析工具、MATLAB的许多基本工具箱及MATLAB的应用工具箱。
由于MATLAB和Simulink是集成在一起的,因此用户可以在这两种环境下对自己的模型进行仿真、分析和修改。
Simulink具有非常高的开放性,提倡将模型通过框图表示出来,或者将已有的模型添加组合到一起,或者将自己创建的模块添加到模型当中。
Simulink仿真教程D3)单击模块库浏览器的新建图标;4)选中模块库浏览器的【File : New Model】菜单项。
所打开的空白模型窗口如图所示。
1.1.2 建立Simulink仿真模型a)打开Simulink模型窗口(Untitled)b)选取模块或模块组在Simulink模型或模块库窗口内,用鼠标左键单击所需模块图标,图标四角出现黑色小方点,表明该模块已经选中。
c) 模块拷贝及删除在模块库中选中模块后,按住鼠标左键不放并移动鼠标至目标模型窗口指定位置,释放鼠标即完成模块拷贝。
模块的删除只需选定删除的模块,按Del键即可。
d)模块调整改变模块位置、大小;改变模块方向:使模块输入输出端口的方向改变。
选中模块后,选取菜单Format→RotateBlock,可使模块旋转900。
e)模块参数设置用鼠标双击指定模块图标,打开模块对话框,根据对话框栏目中提供的信息进行参数设置或修改。
例如双击模型窗口的传递函数模块,弹出图示对话框,在对话框中分别输入分子、分母多项式的系数,点击OK键,完成该模型的设置,如右下图所示:f)模块的连接模块之间的连接是用连接线将一个模块的输出端与另一模块的输入端连接起来;也可用分支线把一个模块的输出端与几个模块的输入端连接起来。
连接线生成是将鼠标置于某模块的输出端口(显一个十字光标) ,按下鼠标左键拖动鼠标置另一模块的输入端口即可。
分支线则是将鼠标置于分支点,按下鼠标右键,其余同上。
操作流程如下:g)模块文件的取名和保存选择模型窗口菜单File → Save as后弹出一个“Save as”对话框,填入模型文件名,按保存(s)即可。
[说明]➢模块的修改、调整、连接通常只能在仿真模型窗口中进行,不要直接对模块库中的模块进行修改或调整。
1.1.3 系统仿真运行1. Simulink模型窗口下仿真步骤a)打开Simulink仿真模型窗口,或打开指定的.mdl文件;b)设置仿真参数:在模型窗口选取菜单【Simulation: Parameters】,弹出“Simulation Parameters”对话框,设置仿真参数,然后按【OK】即可;[说明]若不设置仿真参数,则采用Simulink缺省设置.c)仿真运行和终止:在模型窗口选取菜单【Simulation: Start】,仿真开始,至设置的仿真终止时间,仿真结束。
simulink matlab 仿真环境教程Simulink 是面向框图的仿真软件。
演示一个Simulink 的简单程序【例1.1】创建一个正弦信号的仿真模型。
步骤如下:(1) 在MATLAB 的命令窗口运行simulink 命令,或单击工具栏中的图标,就可以打开Simulink 模块库浏览器(Simulink Library Browser) 窗口,如图1.1所示。
(2)单击工具栏上的图标或选择菜单“File ”——“New ”——“Model ”,新建一个名为“untitled ”的空白模型窗口。
(3) 在上图的右侧子模块窗口中,单击“Source ”子模块库前的“+”(或双击Source),或者直接在左侧模块和工具箱栏单击Simulink 下的Source 子模块库,便可看到各种输入源模块。
(4) 用鼠标单击所需要的输入信号源模块“Sine Wave ”(正弦信号),将其拖放到的空白模型窗口“untitled ”,则“Sine Wave ”模块就被添加到untitled 窗口;也可以用鼠标选中“Sine Wave ”模块,单击鼠标右键,在快捷菜单中选择“add to 'untitled'”命令,就可以将“Sine Wave ”模块添加到untitled 窗口,如图1.2所示。
图7.1 Simulink 界面(5) 用同样的方法打开接收模块库“Sinks ”,选择其中的“Scope ”模块(示波器)拖放到“untitled ”窗口中。
(6) 在“untitled ”窗口中,用鼠标指向“Sine Wave ”右侧的输出端,当光标变为十字符时,按住鼠标拖向“Scope ”模块的输入端,松开鼠标按键,就完成了两个模块间的信号线连接,一个简单模型已经建成。
如图1.3所示。
(7) 开始仿真,单击“untitled ”模型窗口中“开始仿真”图标,或者选择菜单“Simulink ”——“Start ”,则仿真开始。
1.变步长(Variable—Step)求解器可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情况下,具有状态的系统用的是ode45;没有状态的系统用的是discrete.1)ode45基于显式Runge—Kutta(4,5)公式,Dormand—Prince对.它是—个单步求解器(solver)。
也就是说它在计算y(tn)时,仅仅利用前一步的计算结果y(tn-1).对于大多数问题.在第一次仿真时、可用ode45试一下.2)ode23是基于显式Runge—Kutta(2,3).Bogackt和Shampine对.对于宽误差容限和存在轻微刚性的系统、它比ode45更有效一些.ode23也是单步求解器.3)odell3是变阶Adams-Bashforth—Moulton PECE求解器.在误差容限比较严时,它比ode45更有效.odell3是一个多步求解器,即为了计算当前的结果y(tn),不仅要知道前一步结果y(tn-1),还要知道前几步的结果y(tn-2),y(tn-3),…;4)odel5s是基于数值微分公式(NDFs)的变阶求解器.它与后向微分公式BDFs(也叫Gear方法)有联系.但比它更有效.ode15s是一个多步求解器,如果认为一个问题是刚性的,或者在用ode45s时仿真失败或不够有效时,可以试试odel5s。
odel5s是基于一到五阶的NDF公式的求解器.尽管公式的阶数越高结果越精确,但稳定性会差一些.如果模型是刚性的,并且要求有比较好的稳定性,应将最大的阶数减小到2.选择odel5s求解器时,对话框中会显示这一参数.可以用ode23求解器代替。
del5s,ode23是定步长、低阶求解器.5)ode23s是基于一个2阶改进的Rosenbrock公式.因为它是一个单步求解器,所以对于宽误差容限,它比odel5s更有效.对于一些用odel5s不是很有效的刚性问题,可以用它解决.6)ode23t是使用“自由”内插式梯形规则来实现的.如果问题是适度刚性,而且需要没有数字阻尼的结果,可采用该求解器.7)ode23tb是使用TR—BDF2来实现的,即基于隐式Runge—Kutta公式,其第一级是梯形规则步长和第二级是二阶反向微分公式.两级计算使用相同的迭代矩阵.与ode23s相似,对于宽误差容限,它比odtl5s更有效.8)discrete(变步长)是simulink在检测到模型中没有连续状态时所选择的一种求解器.2.定步长(Flxed—Step)求解器可以选择的定步长求解器有:ode5,ode4,ode3,ode2,ode1和discrete.1)ode5是ode45的一个定步长版本,基于Dormand—Prince公式.2)ode4是RK4,基于四阶Runge—Kutta公式.3) ode3是ode23的定步长版本,基于Bogacki-Sbampine公式.4) ode2是Heun方法,也叫作改进Euler公式.5) odel是Euler方法.6) discrete(定步长)是不执行积分的定步长求解器.它适用于没有状态的模型,以及对过零点检测和误差控制不重要的模型.3.诊断页(Diagnostics)可以通过选择Simulation Parameters对话框的Diagnostics标签来指明在仿真期间遇到一些事件或者条件时希望执行的动作.对于每一事件类型,可以选择是否需要提示消息,是警告消息还是错误消息.警告消息不会终止仿真,而错误消息则会中止仿真的运行.(1)一致性检查一致性检查是一个调试工具.用它可以验证Simulink的0DE 求解器所做的某些假设.它的主要用途是确保s函数遵循Simulink内建模块所遵循的规则.因为一致性检查会导致性能的大幅度下阵(高达40%),所以一般应将它设为关的状态.使用一致性检查可以验证s函数,并有助于确定导致意外仿真结果的原因.为了执行高效的积分运算,Simulink保存一些时间步的结果,并提供给下一时间步使用.例如,某一时间步结束的导数通常可以放下一时间步开始时再使用.求解器利用这一点可以防止多余的导数运算.一致性检查的另一个目的是保证当模块被以一个给定的t(时间)值调用时.它产生一常量输出.这对于刚性求解器(ode23s和odel5s)非常重要,因为当计算Jacobi行列式时.模块的输出函数可能会被以相同的t值调用多次.如果选择了一致性检查,Simulink 置新计算某些值,并将它们与保存在内存中的值进行比较,如果这些值有不相同的,将会产生一致性错误.Simulink比较下列量的计算值:1)输出;2)过零点3)导数;4)状态.(2)关闭过零点检测可以关闭一个仿真的过零点检测.对于一个有过零点的模型,关闭过零点检测会加快仿真的速度,但是可能影响仿真结果的精度.这一选项关闭那些本来就有过零点检测的模块的过零点检测.它不能关闭Hir crossing模块的过零点检测.(3)关闭优化I/O存储选择该选项,将导致Simulink为每个模块约I/()值分配单独的缓存,而不是重新利用援存.这样可以充分增加大模型仿真所需内存的数量.只有需要调试模型时才选择该选项.在下列情况下,应当关闭缓存再利用;1)调试一个C-MEX S-函数;2)使用浮点scope或display模块来察看调试模型中的信号.如果缓存再利用打开,并且试图使用浮点scope或display模块来显示缓存已被再利用的信号,将会打开一个错误对话框.(4)放松逻辑类型检验选择该选项,可使要求逻辑类型输入的模块接受双精度类型输入.这样可保证与Simulink 3版本之前的模型的兼容性.4.提高仿真性能和精度仿值性能相精度由多种因素决定,包括模型的设计和仿真参数的选择.求解器使用它们的缺省参数值可以使大多数模型的仿真比较精确有效,然而,对于一些模型如果调整求解器相仿真参数将会产生更好的结果.而且,如果对模型的性能比较熟悉,并且将这些信息提供给求解器,得到的仿真效果将会提高。