MATLAB15.1SIMULINK简介一、什么是SIMULINK?二、SIMULINK的启动三、SIMULINK的模块库介绍四、SIMULINK简单模型的建立MATLAB2一、什么是SIMULINK?SIMULINK是实现动态系统建模、仿真和综合分析的集成软件包,与用户交互的接口是基于Windows的模型化图形输入。模型化图形输入:指SIMULINK提供了一些按功能分类的基本的系统模块,通过调用、连接这些基本模块,就可以构成所需要的系统模型,从而进行仿真与分析。优点:用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。MATLAB3SIMULINK模型的含义:视觉上,直观的方框图;文件上,扩展名为MDL的ASCII代码;数学上,一组微分方程或差分方程;行为上,模拟物理器件构成的实际系统的动态特性。SIMULINK模型的一般组件:可处理的系统:线性、非线性系统;离散、连续及混合系统,单任务、多任务离散事件系统可加载的工具包:通信、控制、信号处理、DSP、电力系统等信源系统信宿MATLAB4二、SIMULINK的启动1、在MATLAB命令窗口中输入simulink打开SimulinkLibraryBrowser窗口,窗口中列出了按功能分类的各种模块的名称。2、在MATLAB命令窗口中输入simulink3打开Library:simulink3的Simulink模块库窗口。MATLAB5三、SIMULINK的模块库介绍SIMILINK模块库按功能进行分类:CommonlyUsedBlocks(常用模块库)Continuous(连续模块库)Discontinuities(非线性模块库)Discrete(离散模块库)MathOperation(数学模块库)Sources(输入源模块库)Sinks(接收器模块库)……MATLAB6四、SIMULINK简单模型的建立例.exp5_1.mdl(1)新建模型窗口(2)将功能模块由模块库窗口复制到模型窗口,并设置参数(3)对模块进行连接,从而构成需要的系统模型MATLAB75.2SIMULINK功能模块的处理一、模块的基本操作二、信号线的操作MATLAB8一、模块的基本操作功能模块的基本操作,包括模块的移动、复制、删除、转向、改变大小、模块命名、颜色设定、参数设定、属性设定、模块输入输出信号等。模块库中的模块可以直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。MATLAB9二、信号线的操作1)改变粗细2)设定标签3)线的折弯4)分支SIMULINK模型的构建是通过用线将各种功能模块连接而构成的。可以对线做如下操作:MATLAB105.3SIMULINK仿真的运行一、仿真的配置二、仿真的启动MATLAB11一、仿真的配置选择Simulation菜单下的ConfigurationParameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。I.Solver页:设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。II.DataImport/Export页:管理模型从MATLAB工作空间的输入和对它的输出。III.Diagnostics页:选择Simulink在仿真中显示的警告信息的等级。MATLAB121、Solver页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。1)仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示。2)解法器的选择:可供选择的解法器类型有Variable-step(变步长)和Fixed-step(固定步长)方式。3)步长参数(变步长模式)a)Maximumstepsize(最大步长):缺省值为“仿真时间/50”。b)Initialstepsize(初始步长):一般建议使用“auto”即可。MATLAB134)仿真精度的定义(变步长模式)a)Relativetolerance(相对误差):指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。b)Absolutetolerance(绝对误差):表示在状态值接近零时的允许误差。当为auto时,初始绝对误差为1e-6。MATLAB142、DataImport/Export页主要设置SIMULINK与MATLAB工作空间交换数值的有关选项。1)Loadfromworkspace:从MATLAB工作空间获取时间和输入变量2)Savetoworkspace:设置存往MATLAB工作空间的变量类型和变量名。3)Saveoption:设置存往工作空间的有关选项。3、Diagnostics页仿真中异常情况的诊断MATLAB15二、启动仿真选择Simulink菜单下的start选项来启动仿真。利用MATLAB指令启动仿真1.sim函数[t,x,y]=sim(‘modelname’)利用对话框参数进行仿真,返回输出矩阵[t,x,y]=sim(‘modelname’,timespan,options,ut)利用输入参数进行仿真,返回输出矩阵[t,x,y1,y2,…,yn]=sim(‘modelname’,timespan,options,ut)利用输入参数进行仿真,返回逐个输出MATLAB16参数说明:t:返回仿真的时间向量;x:返回仿真的状态矩阵;y:返回仿真的输出矩阵;timespan:时间带宽,指定仿真的时间区间;options:matlab中特有的一种数据结构;ut:赋给仿真对象的输入口模块的量MATLAB172.simset函数options=simset(param,value,…)把param参数赋值为value,结果保存在options中options=simset(old_opstruct,param,value,…)把存储为old_opstruct的参数param赋值为value,结果保存在options中options=simset(old_opstruct,new_opstruct)用new_opstruct的值代替old_opstruct的值simset不带参数显示所有的参数名和它们可能的值MATLAB183.simget函数struct=simget(‘modelname’)获取模型当前的仿真参数设置(构架)value=simget(‘modelname’,param)获取指定参数的值MATLAB195.4SIMULINKS函数的设计一、S函数概述二、用M文件表述的S函数三、M文件S函数的模块化MATLAB20一、S函数概述S函数是系统函数(SystemFunction)的简称,具有固定的程序编写格式,用户可直接用M函数文件编写S函数,也可由C、C++、Fortran或Ada等源码文件经编译后生成MEX文件。S函数提供了扩展Simulink模块库的有力工具,它最广泛的用途是定制用户自己的Simulink模块。它的形式十分通用,能够支持连续系统、离散系统和混合系统。S函数的仿真过程可概括为几个方面:模块初始化、计算模块导数、更新模块离散状态、计算模块输出、计算下一个采样时间点、仿真结束。MATLAB21二、用M文件表述的S函数1、S函数的模板程序:sfuntmp1.m(Matlab软件根目录下toolbox/simulink/blocks/)function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case2,sys=mdlUpdate(t,x,u);case3,sys=mdlOutput(t,x,u);case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);otherwiseerror([‘Unhandledflag=’,num2str(flag)]);endMATLAB22注意:模板文件只是Simulink为方便用户而提供的一种参考格式,并不是编写S函数的语法要求,用户完全可以改变子函数的名称,或者直接把代码写在主函数里,但使用模板文件的好处是比较方便,而且条理清晰。MATLAB23三、M文件S函数的模块化在动态系统设计、仿真与分析中,用户可以使用User-DefinedFunctions模块库中的S-function模块来调用S函数。S-function模块是一个单输入单输出的系统模块,如果有多个输入与多个输出信号,则可以使用Mux模块与Demux模块对信号进行组合和分离操作。用任何一种方式创建的S函数文件,再经S函数模块(S-function)处理后,将转变为用户创建的Simulink模块。另外,用户可以使用Simulink的子系统封装功能对S函数进行封装,以增强系统模型的可读性。MATLAB24例:利用M文件S函数实现以下连续系统的状态方程式中,xAxBuyCxDu2.2551.250.52.254.251.250.250.250.51.2511.251.750.250.75A46242202B00010202C0000D1)用模板文件编写S函数,取名为xiu_fun.m;2)用S-function模块构造系统。MATLAB255.3SIMULINK自定义功能模块一、自定义功能模块的方法二、自定义功能模块的封装MATLAB26一、自定义功能模块的方法(1)采用Signal&Systems模块库中的Subsystem功能模块,利用其编辑区设计组合新的功能模块;A.将模块库中的Subsystem功能模块复制到打开的模型窗口中。B.双击Subsystem功能模块,进入自定义功能模块窗口,从而可以利用已有的基本功能模块设计出新的功能模块。MATLAB27(2)将现有的多个功能模块组合起来,形成新的功能模块。对于很大的SIMULINK模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。A.在模型窗口中建立所定义功能模块的子模块。B.用鼠标将这些需要组合的功能模块框住,然后选择Edit菜单下的CreateSubsystem即可。MATLAB28三、自定义功能模块的封装exp5_7.mdlexp5_8.mdlexp5_9.mdlexp5_10.mdl首先选中Subsystem功能模块,再打开Edit菜单中的MaskSubsystem进入mask的编辑窗口,可以看出有3个标签页。1)Icon:设定功能模块的外观。2)Initialization:设定输入数据窗口(PromptList)。3)Documentation:设计该功能模块的文字说明。MATLAB29用户还可以设置一些参数来控制图标的属性,这些属性在Icon页左侧的下拉式列表中进行选择。a)Iconframe:Visible显示外框线;Invisible:隐藏外框线。b)IconTransparency:Opaque隐藏输入输出的标签;Transparent:显示输入输出的标签。c)IconRotation:旋转模块。d)Drawingcoordinate:画图时的坐标系。MATLAB302、Initialization标签页主要是设计输入提示(prompt)以及对应的变量名称(variable)。若配合在initializationcommands内编辑程序,可以发挥功能模块的功能来执行特定的操作。a)在prompt编辑框中输入文字,这些文字就会出现在prompt列表中;在variable列表中输入变量名称,则prompt中的文字对应该变量的说明。如果要增加新的项目,可以点击边上的Add键。Up和Down按钮用于执行项目间的位置调