您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第7讲-Simulink工具箱
MATLAB/Simulink设计湖南大学电气与信息工程学院计算机仿真技术第7讲MATLAB/Simulink设计7.1Simulink简介7.2模块库及简单建模7.3仿真运行及参数调整7.4子系统7.5S函数1.Simulink简介•Simulink中的“Simu”一词表示可用于计算机仿真,而“Link”一词表示它能进行系统连接,即把一系列模块连接起来,构成复杂的系统模型。•Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。它让用户把精力从编程转向模型的构造.使用Simulink来建模、分析和仿真各种动态系统(包括连续系统、离散系统和混合系统),将是一件非常轻松的事情。•利用Simulink进行系统的建模仿真,其最大的优点是易学、易用,并能依托MATLAB提供的丰富的仿真资源。•近几年来,在学术界和工业领域,Simulink已经成为动态系统建模和仿真领域中应用最为广泛的软件之一。Simulink可以很方便地创建和维护一个完整地模块,评估不同地算法和结构,并验证系统的性能。由于Simulink是采用模块组合方式来建模,从而可以使得用户能够快速、准确地创建动态系统的计算机仿真模型,特别是对复杂的不确定非线性系统,更为方便。•Simulink模型可以用来模拟线性和非线性、连续和离散或者两者的混合系统,也就是说它可以用来模拟几乎所有可能遇到动态系统。另外Simulink还提供一套图形动画的处理方法,使用户可以方便的观察到仿真的整个过程。•Simulink没有单独的语言,但是它提供了S函数规则。所谓的S函数可以是一个M函数文件、FORTRAN程序、C或C++语言程序等,通过特殊的语法规则使之能够被Simulink模型或模块调用。S函数使Simulink更加充实、完备,具有更强的处理能力。•提供了仿真库的扩充和定制机制–Simulink的开放式结构允许用户扩展仿真环境的功能:采用MATLAB、FORTRAN和C代码生成自定义模块库,并拥有自己的图标和界面。•与MATLAB工具箱的集成–由于Simulink可以直接利用MATLAB的诸多资源与功能,因而用户可以直接在Simulink下完成诸如数据分析、过程自动化、优化参数等工作。Simulink应用领域simulink在matlab家族中的位置ToolboxesMATLABcompilerBlocksetsimulinkRTWStateflowcoderSimulink的启动主要有以下两种方法:–在MATLAB的命令窗口中输入simulink,结果是在桌面上出现一个SimulinkLibraryBrowser的窗口。–单击MATLAB主窗口的快捷按钮,打开SimulinkLibraryBrowser窗口。matlab函数仿真与simulink仿真的区别1、数据流仿真按照数据流的顺序,依次执行,即处理的数据首先通过一个运算阶后在激活下一个运算阶。例如:m=16;n=15;k=11;fc=10000;fd=1000;fs=100000;msg=randint(k*100,1);code=encode(msg,n,k,'bch');modu=dmod(code,fc,fd,fs,'qask',m);modu_noise=modu+randn(length(modu),1);demo=ddemod(modu_noise,fc,fd,fs,'qask',m);msg_r=decode(demo,n,k,'bch');rate=biterr(msg,msg_r);2、时间流仿真所有模块在同一时间步长上同时执行。信号发生差错控制编码数字调制差错控制译码信宿时间数据Simulink模型窗口的建立在Simulink中打开一个空白的模型窗口的方法:•选中Simulink菜单系统中的File|New|Model菜单项后,会生成一个Simulink窗口;•单击Simulink工具栏中的“新建模型”图标;•在MATLAB的命令窗口中选择File|New|NewModel菜单项;2.模块库及简单建模第七章Simulink建模和仿真7.1Simulink的概述和基本操作图7.1.1Simulink模型元素关联图源模块显示模块系统模块7.1.2基本操作一、模型基本结构一个典型的Simulink模型包括如下三种类型的元素:①信号源模块②被模拟的系统模块③输出显示模块如图7.1.1所示说明了这三种元素之间的典型关系。系统模块作为中心模块是Simulink仿真建模所要解决的主要部分;信号源为系统的输入,它包括常数信号源函数信号发生器(如正弦和阶跃函数波等)和用户自己在Matlab中创建的自定义信号或Matlab工作间中三种。输出模块主要在Sinks库中。第七章Simulink建模和仿真7.1Simulink的概述和基本操作•Simulink模型并不一定要包含全部的三种元素,在实际应用中通常可以缺少其中的一个或两个。例如,若要模拟一个系统偏离平衡位置后的恢复行为,就可以建立一个没有输入而只有系统模块加一个显示模块的模型。在某种情况下,也可以建立一个只有源模块和显示模块的系统。若需要一个由几个函数复合的特殊信号,则可以使用源模块生成信号并将其送入Matlab工作间或文件中。二、仿真运行原理Simulink仿真包括两个阶段;初始化阶段和模型执行阶段(1)模块初始化在初始化阶段主要完成以下工作:①模型参数传给Matlab进行估值,得到的数值结果将作为模型的实际参数;②展开模型的各个层次,每一个非条件执行的子系统被它所包含的模块所代替;第七章Simulink建模和仿真7.1Simulink的概述和基本操作③模型中的模块按更新的次序进行排序。排序算法产生一个列表以确保具有代数环的模块在产生它的驱动输入的模块被更新后才更新。当然,这一步要先检测出模型中存在的代数环。④决定模型中有无显示设定的信号属性,例如名称、数据类型、数值类型以及大小等,并且检查每个模块是否能够接受连接到它输入端的信号。Simulink使用属性传递的过程来确定未被设定的属性,这个过程将源信号的属性传递到它所驱动的模块的输入信号;⑤决定所有无显示设定采样时间的模块的采样时间;⑥分配和初始化用于存储每个模块的状态和输入当前值的存储空间。完成这些工作后就可以进行仿真了。2)模型执行一般模型是使用数值积分来进行仿真的。所运用的仿真解法器(仿真算法)依赖于模型提供它的连续状态微分能力。计算微分可以分两步进行:第七章Simulink建模和仿真7.1Simulink的概述和基本操作①首先,按照排序所决定的次序计算每个模块的输出。•②然后,根据当前时刻的输入和状态来决定状态的微分;得到微分向量后再把它返回给解法器;后者用来计算下一个采样点的状态向量。一旦新的状态向量计算完毕,被采样的数据源模块和接受模块才被更新。•在仿真开始时模型设定待仿真系统的初始状态和输出。在每一个时间步中,Simulink计算系统的输入、状态和输出,并更新模型来反映计算出的值。在仿真结束时,模型得出系统的输入、状态和输出。•在每个时间步中,Simulink所采取的动作依次为:•①按排列好的次序更新模型中模块的输出。Simulink通过调用模块的输出函数计算模块的输出。Simulink只把当前值、模块的输入以及状态量传给这些函数计算模块的输出。对于离散系统,Simulink只有在当前时间是模块采样时间的整数倍时,才会更新模块的输出。第七章Simulink建模和仿真7.1Simulink的概述和基本操作•②按排列好的次序更新模型中模块的状态,Simulink计算一个模块的离散状态的方法时调用模块的离散状态更新函数。而对于连续状态,则对连续状态的微分(在模块可调用的函数里,有一个用于计算连续微分的函数)进行数值积分来获得当前的连续状态。•③检查模块连续状态的不连续点。Simulink使用过零检测来检测连续状态的不连续点。•④计算下一个仿真时间步的时间。这是通过调用模块获得下一个采样时间函数来完成的。•(3)定模块更新次序•在仿真中,Simulink更新状态和输出都要根据事先确定的模块更新次序,而更新次序对方针结果的有效性来说非常关键。特别当模块的输出是当前输入值的函数时,这个模块必须在驱动它的模块被更新之后才能被更新,否则,模块的输出将没有意义。第七章Simulink建模和仿真7.1Simulink的概述和基本操作•注意:不要把模块保存到模块文件的次序与仿真过程模块被更新的次序相混淆。Simulink在模块初始化时以将模块排好正确的次序。•为了建立有效的更新次序,Simulink根据输入和输出的关系将模块分类。其中,当前输出依赖于当前输入的模块称为直接馈入模块,所有其他的模块都称为非虚拟模块。直接馈入模块的例子有Gain、Product和Sum模块;非直接馈入模块的例子有Integrator模块(它的输出只依赖于它的状态),Constant模块(没有输入)和Memory模块(它的输出只依赖于前一个模块的输入)。•基于上述分类,Simulink使用下面两个基本规则对模块进行排序:•①每个模块必须在它驱动的所有模块更新之前被更新。这条规则确保了模块被更新时输入有效。•②若非直接馈入模块在直接馈入模块之前更新,则它们的更新次序可以是任意的。这条规则允许Simulink在排序过程中忽略非虚拟模块。•另外一个约束模块更新次序的因素是用户给模块设定优先级,Simulink在低优先级模块之前更新高优先级模块。SIMULINK模型•外表:直观的方框图•文件:MDL文件•数学:微分方程或差分方程•行为:模拟物理过程的动态性状Simulink动态仿真Simulink基本操作利用Simulink进行系统仿真的步骤是:①启动Simulink,打开Simulink模块库②打开空白模型窗口;③建立Simulink仿真模型;④设置仿真参数,进行仿真;⑤输出仿真结果。Simulink仿真过程1.初始化阶段①对模型的参数进行估计,得到它们实际计算的值。②展开模型的各个层次;③按照更新的次序对模型进行排序;④确定那些显式化的信号属性,并检查每个模块是否能够接受连接它们输入端的信号;⑤确定所有非显式的信号采样时间模块的采样时间;⑥分配和初始化存储空间,以便存储每个模块的状态和当前值的输出。2.模型执行阶段模型仿真是通过数值积分来进行完成的,计算数值积分可以采用以下两步来进行:①按照秩序计算每个模块的积分;②根据当前输入和状态来决定状态的微分,得到微分矢量,然后把它返回给解法器,以计算下一个采样点的状态矢量。在每一个时间步中,Simulink依次解决下列问题:·按照秩序更新模块的输出;·按照秩序更新模块的状态;·检查模块连续状态的不连续点;·计算下一个仿真时间步的时间。Simulink的模块库•Simulink的模块库能够对系统模块进行有效的管理与组织可以直接将模块库中的模块拖动或者拷贝到用户的系统模型中以构建动态系统模型。模块搜索模块描述系统模块系统模块库Simulink公共模块库Simulink中最为基础、最为通用的模块库,它可以被应用到不同的专业领域中。Simulink模块库按功能分为以下16类子模块库:•(1)CommonlyUsedBlocks:仿真常用模块库•(2)Continuous:连续系统模块库•(3)Discontinuities:非线性系统模块库•(4)Discrete:离散系统模块库•(5)LogicandBitOperations:逻辑运算和位运算模块库•(6)LookupTables:查找表模块库•(7)MathOperations:数学运算模块库•(8)ModelVerification:模型验证模块库•(9)Model-WideUtilities:进行模型扩充的实用模块库•(10)Ports&Subsystems:端口和子系统模块库•(11)SignalsAttributes:信号属性模块库•(12)SignalsRouting:提供用于输入、输出和控制的相关信号及相关处理的模块库•(13)S
本文标题:第7讲-Simulink工具箱
链接地址:https://www.777doc.com/doc-5094225 .html