第一部分MATLAB软件平台及编程Simulink建模与仿真基础1.1Simulink简介Simulink是一个用来建模、仿真和分析动态系统的软件包。它基于MATLAB的框图设计环境,支持线性系统和非线性系统,可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的可视的图形用户接口(GUI),用户可以在这个可视窗口中通过单击和拖动鼠标操作来完成系统建模。利用这个接口,用户可以像用笔在草纸上绘制模型一样,只要构建出系统的方块图即可。这与以前的仿真软件包要求解算微分方程和编写算法语言程序不同,它提供的是一种更快捷、更直接明了的方式,而且用户可以立即看到系统的仿真结果。Simulink中包括了许多实现不同功能的模块库。在Simulink6.6中共有16个模块库,这些模块库把各种功能不同的模块分类存放,如Sources(输入源模块库)、Sinks(输出模块库)、MathOperations(数学模块库)以及线性模块和非线性模块等各种组件模块库。用户也可以自定义和创建自己的模块。利用这些模块,用户可以创建层级式的系统模型,可以自上而下或自下而上地阅读模型,也就是说,用户可以浏览最顶层的系统,然后用鼠标双击模型中的子系统模块,打开并查看该子系统模型。这不仅方便了工程人员的设计,而且可以使自己的模型方块图功能更清晰,结构更合理。创建了系统模型后,用户可以利用Simulink菜单或在MATLAB命令窗口中键入命令的方式选择不同的积分方法来仿真系统模型。对于交互式的仿真过程,使用菜单是非常方便的,但要运行大量的仿真,使用命令行方法则更为有效。例如,执行蒙特卡洛仿真或想要扫描某一范围的参数值时,可以在命令行中输入变参数值,观察参数值改变后的系统输出。此外,利用示波器模块或其他的显示模块,用户可以在仿真运行的同时观察仿真结果,而且可以在仿真运行期间改变仿真参数,并同时观察改变后的仿真结果。最后的结果数据可以输出到MATLAB工作区进行后续处理,或利用命令行命令在图形窗口中绘制仿真曲线。Simulink中的模型分析工具包括线性化工具和调整工具,这可以从MATLAB命令行获取。MATLAB及其工具箱内还有许多其他的适用于不同工程领域的分析工具。由于MATLAB和Simulink是集成在一起的,因此无论何时用户都可以在这两个环境中仿真、分析和修改模型。Simulink系统建模的主要特性如下:框图式建模。Simulink提供了一个图形化的建模环境,通过鼠标单击和拖拉操作Simulink模块,用户可以在图形化的可视环境中进行框图式建模。支持非线性系统。支持混合系统仿真,即系统中包含连续采样时间和离散采样时间的系统。支持多速率系统仿真,即系统中存在以不同速率运行的组件。Simulink建立的系统模型可以是层级模型,因此用户可以采用自下而上或自上而下的方式建立模型,并一层一层地查看各级模型。用户可以根据需要建立自定义子系统,并把自定义子系统内的模块进行封装,封装后的自定义子系统具有与Simulink内嵌模块同样的属性,并可由用户设置模块的属性参数。所有的自定义子系统均可在系统模型中使用。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、模块操作模块操作包括对象的选定、模块的复制、模块的移动、模块的删除、改变模块大小、模块的翻转和模块名的编辑等。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、离散系统仿真离散系统的仿真过程与连续系统的仿真过程基本一样,只是选择的模块为离散系统模块,设置的参数也需根据离散系统设置。子系统与封装1、建立子系统子系统类似于编程语言中的子函数,可以使模型模块化,可读性更强,更容易调试和维护。建立子系统有两种方法:★在模型中新建子系统★在已有的子系统基础上建立Simulink子系统子系统创建与封装在建立的Simulink系统模型比较大或很复杂时,可将一些模块组合成子系统,这样可使①模型得到简化,便于连线;②可提高效率,便于调试;③可生成层次化的模型图表,用户可采取自上而下或自下而上的设计方法。将一个创建好的子系统进行封装,也就是使子系统象一个模块一样,例如可以有自己的参数设置对话框,自己的模块图标等。这样就使子系统使用起来非常方便。子系统与封装(1)在模型中新建子系统步骤:A、打开或者新建一个模型,建立各模块并连接。B、用鼠标拖出一个虚线框将需要建立子系统的部分框起来,在菜单中选择“Edit”“Createsubsystem”,这时原虚线框中的部分被一个模块代替。C、重命名子系统及输入、输出端口。子系统与封装(1)在模型中新建子系统例如:原系统创建子系统后修改子系统名及输入输出名后子系统与封装(2)在已有的子系统基础上建立步骤:A、将已有的子系统复制到新窗口。B、双击打开子系统模型窗口,重新放置模块,建立连接和输入输出端口。C、将子系统与其他模块连接。D、修改子系统名和其他参数。子系统与封装(2)在已有的子系统基础上建立例如:将前面建立的SubSys_1子系统复制到新窗口建立的子系统如下图所示:输出端口增加的新模块输入端口子系统与封装2、条件执行子系统系统中的某些模块需要在满足一定条件时才执行,使用条件执行子系统就可以使子系统的执行由控制信号的值来控制。条件执行子系统有3种:★使能子系统★触发子系统★使能触发子系统子系统与封装(1)使能子系统当控制信号从负数向正数变化大于0时执行,而当控制信号变为负数时停止执行。控制信号可以是标量也可以是向量,如果是向量,只要向量中任何一个元素大于0时,子系统都执行。子系统与封装(2)触发子系统当触发事件发生时开始执行。触发事件包括:★上升沿★下降沿★上升沿和下降沿★函数内部逻辑子系统与封装(3)使能触发子系统由控制信号和触发事件同时决定子系统的执行。当触发事件发生后,Simulink检查使能信号是否大于0,大于0就开始执行。子系统与封装3、子系统的封装子系统在设置时需要打开其中的每个模块分别设置参数,而没有基于整体的独立操作界面,使子系统的应用受到限制。因此,采用封装可以为具有一个模块以上的子系统定制对话框和图标,使其具有良好的用户界面。子系统与封装3、子系统的封装封装子系统的步骤:(1)选中子系统双击打开,给需要进行赋值的参数指定一个变量名;(2)选择菜单”Edit””Masksubsystem”,出现封装对话框;(3)在封装对话框中设置参数,包括Icon,Parameters,Initialization和Do