第一部分MATLAB软件平台及编程五、Simulink建模与仿真基础Simulink简介Simulink是Matlab的仿真工具箱,可以用来对动态系统进行建模、仿真和分析,支持连续的、离散的以及线性的和非线性的系统。具有以下特点:★用绘制方框图代替编写程序,结构和流程清晰;★智能化地建立和运行仿真,仿真精细、贴近实际;★适应面广。包括线性、非线性系统;连续、离散及混合系统;单任务、多任务离散时间系统。Simulink文件操作Simulink模型的文件为MDL模型文件,扩展名为.mdl,以ASCII码形式存储。1、新建文件新建仿真模型文件主要有以下几种方式:★在Matlab命令窗口选择“File”“New”“Model”★在命令窗口运行simulink命令,在弹出的模块库浏览器窗口中选择“File”“New”“Model”★在Simulink模型窗口中选择“File”“New”“Model”2、打开文件打开仿真模型文件主要有以下几种方式:★在Matlab命令窗口输入不加扩展名的文件名★在Matlab命令窗口选择“File”“Open”★在Simulink模块库浏览器窗口选择“File”“Open”★在Simulink模型窗口选择“File”“Open”Simulink模型库浏览器模型库浏览器窗口打开方式有两种:1、在命令窗口输入“simulink”命令2、通过图标Matlabsimulink所用的所有模块都在模型库中,通过模型库浏览器可找到所需要的模块,然后将其拖动到模型中。模型库浏览器窗口如下:Simulink模型窗口Simulink模型窗口由菜单栏、工具栏、模型浏览器、模型框图窗口及状态栏组成。Simulink模型创建Simulink模型是由模块和信号线连接构成的方框图,创建模型就是绘制方框图。1、模块操作模块操作包括对象的选定、模块的复制、模块的移动、模块的删除、改变模块大小、模块的翻转和模块名的编辑等。详细介绍见《Matlab实用教程》郑阿奇主编,电子工业出版社2、信号线操作◆模块间连线:先将光标指向一个模块的输出端,待光标变成十字后按下鼠标左键拖动,直到另一模块的输入端。◆信号线分支:将光标指向信号线的分支点上,按住鼠标右键,光标变为十字,拖动鼠标直到分支线的终点,释放鼠标。◆信号线文本注释,在信号线中插入模块,略……虚线,因为终端没有连接到模块Simulink基本模块1、基本模块Simulink模块库包含各种功能模块,如:放大器、微分器、积分器、各种信号源等。Simulink基本模块Simulink基本模块库主要有:连续模块库离散模块库函数与表格模块库数学模块库信号输出模块信号源模块库……等简要介绍以下三个:(1)输入信号源(Sources)信号源模块库用来为模型提供输入信号,没有输入口,至少有一个输出口,如:LFM信号直流信号带限白噪声时钟信号(2)接收模块(Sinks)接收端模块用来接收信号,如:示波器终结器输出模块输入不为0时终止仿真(3)连续系统模块(continuous)连续系统模块用来构成连续系统的环节,如:积分器二阶积分器微分器定积分器2、模块参数设置打开参数设置对话框:双击模块或者右键选择“BlockParameters”,比如正弦信号源,可以设置幅度、频率、初相等。3、模块属性设置打开属性设置对话框:右键选择“BlockProperties”,可以设置模块的优先级、标记、调用函数等。系统仿真与分析1、仿真设置Simulink的模型实际上是定义了仿真系统的微分或差分方程组,而仿真则是用数值解算法来求解方程。仿真设置包括对仿真的起始和结束时间、仿真步长、仿真解法、输出模式,以及是否从工作空间装载数据或保存数据到工作空间等进行设置。打开仿真设置对话框:在模型窗口选择“Simulation”“ConfigurationParameters”仿真设置对话框如下:起始和结束时间起始和结束时间数据装载或保存2、连续系统仿真举例说明:建立二阶系统的仿真模型,传递函数为。方法:输入信号源使用阶跃信号,系统使用开环传递函数,接收模块使用示波器来构成模型。21+0.6ss21+0.6ss步骤:(1)先将需要的模块放入模型窗口,如:在“Sources”库中选“step”模块,在“Continuous”库中选“TransferFcn”模块,在“MathOperations”库中选“Sum”模块,在“Sinks”库选择“Scope”模块。步骤:(2)连接各模块,从信号线引出分支点,构成闭环系统。信号线步骤:(3)设置模块参数:通过双击模块或弹出菜单,可打开该模块的属性对话框,可设置参数。如:Sum:“Iconshape”设置为“rectangular”,“Listofsigns”设置为“|+-”。TransferFcn:分母多项式“Denominator”设置为“[10.60]”。Step:“Steptime”设置为0。设置传递函数步骤:(4)添加信号线文本注释双击信号线,出现编辑框,在编辑框内输入文本。文本注释步骤:(5)仿真并分析仿真运行:单击工具栏的“Startsimulation”按钮,开始仿真,在示波器上显示出阶跃响应。纵坐标及标题修改:例如右击示波器的坐标框,选择“Axesproperties”,将y坐标的“Y-min”改为0,“Y-max”改为2,“Title”改为“二阶系统时域响应”。Y轴变化更改标题步骤:设置仿真时间:在模型窗口,选择“Simulation”“Configurationparameters”,在“Solver”页将“Stoptime”设置为20,然后单击“Startsimulation”按钮。时间增加到20s3、离散系统仿真离散系统的仿真过程与连续系统的仿真过程基本一样,只是选择的模块为离散系统模块,设置的参数也需根据离散系统设置。参见《Matlab实用教程》郑阿奇主编Simulink子系统创建与封装当建立的Simulink系统模型比较大或很复杂时,可将一些模块组合成子系统,这样可使①模型得到简化,便于连线;②可提高效率,便于调试;③可生成层次化的模型图表,用户可采取自上而下或自下而上的设计方法。将一个创建好的子系统进行封装,即使子系统象一个模块,可以有自己的参数设置对话框,自己的模块图标等,使用起来非常方便。Simulink子系统子系统建立与封装1、建立子系统子系统类似于编程语言中的子函数,可以使模型模块化,可读性更强,更容易调试和维护。建立子系统有两种方法:★在模型中新建子系统★在已有的子系统基础上建立(1)在模型中新建子系统步骤:A、打开模型或者新建模型窗口,建立各模块并连接。B、用鼠标拖出一个虚线框将需要建立子系统的部分框起来,在菜单中选择“Edit”“Createsubsystem”,这时原虚线框中的部分被一个模块代替。C、重命名子系统及输入、输出端口(双基子系统修改端口名)。举例:原系统创建子系统后修改子系统名及输入输出名后(2)在已有的子系统基础上建立步骤:A、将已有的子系统复制到新窗口。B、在新窗口中放置其他模块,建立连接和输入输出端口。C、将子系统与其他模块连接。D、修改子系统名和其他参数。举例:将前面建立的SubSys_1子系统复制到新窗口建立的子系统如下图所示:输出端口增加的新模块输入端口2、条件执行子系统系统中的某些模块需要在满足一定条件时才执行,使用条件执行子系统就可使子系统的执行由控制信号的值来控制。条件执行子系统有3种:★使能子系统★触发子系统★使能触发子系统(1)使能子系统当控制信号从负数向正数变化大于0时执行,而当控制信号变为负数时停止执行。控制信号可以是标量也可以是向量,如果是向量,只要向量中任何一个元素大于0时,子系统都执行。(2)触发子系统当触发事件发生时开始执行。触发事件包括:★上升沿★下降沿★上升沿和下降沿★函数内部逻辑(3)使能触发子系统由控制信号和触发事件同时决定子系统的执行。当触发事件发生后,Simulink检查使能信号是否大于0,大于0就开始执行。3、子系统的封装子系统在设置时需要打开其中的每个模块分别设置参数,而没有基于整体的独立操作界面,使子系统的应用受到限制。采用封装可以为具有一个模块以上的子系统定制对话框和图标,使其具有良好的用户界面。子系统的封装步骤(自学):(1)选中子系统双击打开,给需要进行赋值的参数指定一个变量名;(2)选择菜单”Edit””Masksubsystem”,出现封装对话框;(3)在封装对话框中设置参数,包括Icon,Parameters,Initialization和Documentation。用Matlab命令创建和运行Simulink模型1、创建模型创建新模型:new_system打开模型:open_system保存模型:save_system添加模块:add_block添加信号线:add_line模型属性的获得:simget设置模型属性:set_param设置模块和信号线属性:set_param删除模块:delete_block删除信号线:delete_line如:new_system('mymodel','Model');%创建一个名为mymodel的新模型open_system('mymodel');%打开名为mymodel的模型,并显示在模型窗口用Matlab命令创建和运行Simulink模型2、运行模型sim命令如:sim('step_response')Demo打开Demo:HelpDemos,可提供程序、图形显示、simulink等各种实例Demo点击一个选项后出现如下图,再点击Runthisdemo,将播放演示示例,可以通过实例自学MatlabSimulink的DemoMATLAB提供了丰富的Simulink应用实例——Demo。打开MATLAB按左下角start选择simulink选择demodemo实例的打开:Simulink的Demo点击此处打开demo搜索该模型名称,在matlab中打开Simulink的Demosldemo_hydcyl.mdlSimulink的Demosldemo_foucault_vr.mdlSimulink的Demosldemo_doublebounce.mdlSimulink的Demosldemo_radar_eml.mdl