MatLab 课件第10章

上传人:gu****n 文档编号:243554232 上传时间:2024-09-25 格式:PPT 页数:35 大小:400KB
返回 下载 相关 举报
MatLab 课件第10章_第1页
第1页 / 共35页
MatLab 课件第10章_第2页
第2页 / 共35页
MatLab 课件第10章_第3页
第3页 / 共35页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,*,第,10,章,Simulink,仿真环境,Simulink,是一个以,MATLAB,为基础的软件包,用于对动态系统进行建模和仿真。,【,本章学习目标,】,熟悉,Simulink,的操作环境。, 掌握绘制系统模型的方法。, 掌握子系统模块的建立与封装技术。, 了解,S,函数的功能与设计方法。,10.1,初识,Simulink,一个简单的仿真实例,在,MATLAB,的命令窗口输入,Simulink,,或单击,MATLAB,主窗口工具栏上的“,Simulink,”,命令按钮即可启动,Simulink,。,Simulink,启动后会显示如图,10.1,所示的,Simulink,模块库浏览器(,Simulink,Library Browser,)窗口。,1,模型元素,一个典型的,Simulinnk,模型包括以下,3,种元素。,信号源(,Source,),被模拟的系统模块,信号输出(,Sink,),2,仿真步骤,(,1,)建立系统仿真模型,包括添加模块、设置模块参数、进行模块连接等操作。,(,2,)设置仿真参数。,(,3,)启动仿真并分析仿真结果。,3,仿真实例,【,例,10.1,】,利用,Simulink,仿真曲线。,正弦信号由信号源模块库(,Sources,)中的,Sine Wave,模块提供,求和用数学运算模块库(,Math Operations,)中的数学函数模块(,Add,)产生,再用信号输出模块库(,Sinks,)中的示波器模块(,Scope,)输出波形,(,1,)打开一个名为,untitled,的模型编辑窗口,(,2,)将所需模块添加到模型中。,(,3,)用连线将各个模块连接起来组成系统仿真模型,(,4,)设置模块参数并连接各个模块组成仿真模型。,模型建好后,将模型以模型文件的格式(扩展名为,.,mdl,)存盘。,(,5,)设置系统仿真参数。,(,6,)仿真操作。,10.2,仿真模型的建立,10.2.1,Simulink,的基本模块,模块是构成系统仿真模型的基本单元。构建系统仿真模型主要涉及,Simulink,模块的操作。,基本模块库,专业模块库,10.2.2,模块操作,1,添加与删除模块,2,选取模块,3,复制模块,4,模块外形的调整,5,模块名的处理,10.2.3,模块的连接,1,连接两个模块,2,模块间连线的调整,3,连线的分支,4,标注连线,10.3,系统的仿真与分析,10.2.4,模块的参数和属性设置,1,模块的参数设置,2,模块的属性设置,Description,:对该模块在模型中的用法进行说明。,Priority,:规定该模块在模型中相对于其他模块执行的优先顺序。,Tag,:用户为模块添加的文本格式的标记。,“,Block Annotation”,选项卡中指定在该模块的图标下显示模块的哪个参数。“,Callbacks”,选项卡中指定当对该模块实施某种操作时需要执行的,MATLAB,命令或程序。,10.3.1,设置仿真参数,打开系统仿真模型,从模型编辑窗口的“,Simulation”,菜单中选择“,Configuration Parameters”,命令,打开一个仿真参数对话框,在其中可以设置仿真参数。在此对话框中,仿真参数设置被分为,8,类。,Solver,类:用于设置仿真起始和停止时间,选择微分方程求解算法并为其规定参数,以及选择某些输出选项。,Data Import/Export,类:用于管理工作空间数据的导入和导出。,Optimization,类:用于设置仿真优化模式。,Diagnostics,类:用于设置在仿真过程中出现各类错误时发出警告的等级。,Hardware Implementation,类:用于设置实现仿真的硬件。,Model Referencing,类:用于设置参考模型。,Simulation Target,类:用于设置仿真模型目标。,HDL Coder,类:用于设置通过自动代码生成技术将设计算法生成,HDL,代码的方法,1,Solver,类设置,(,1,)设置仿真起始和停止时间(,Simulink,time,),(,2,)仿真算法的选择(,Solver options,),在“,Type”,编辑框中设定算法类别:固定步长(,Fixed-step,)和变步长(,Variable-step,)算法,在“,Solver”,编辑框中选择具体算法。,2,Data Import/Export,类设置, 矩阵形式。,MATLAB,把矩阵的第一列默认为时间向量,后面的每一列对应每一个输入端口,矩阵的第一行表示某一时刻各输入端口的输入状态。另外,也可以把矩阵分开来表示,即,MATLAB,默认的表示方法,t,,,u,,其中,t,是一维时间列向量,表示仿真时间,,u,是和,t,长度相等的,n,维列向量(,n,表示输入端口的数量),表示状态值。例如,在命令窗口中定义,t,和,u,:,t=(0:0.1:10);,u=,sin(t),cos(t,).*sin(t),exp(-2*t).*,sin(t,);, 包含时间数据的结构形式。结构变量包含若干个成员,对结构成员的引用格式为:结构变量名,.,成员名。在结构中必须有成员:,time,和,signals,。在,time,成员中包含一个列向量,表示仿真时间;在,signals,成员中包含一个数组,数组中的每个元素对应一个输入端口,并且每个元素必须包含一个名字同样不能改变的,values,成员,,values,成员也包含一个列向量,对应于输入端口的输入数据。例如,对于上例,若改为包含数据的结构输入,则命令格式如下:,t=(0:0.1:10);,A.time,=t;,A.signals(1).values=,sin(t,);,A.signals(2).values=,cos(t,).*,sin(t,);,A.signals(3).values=exp(-2*t).*,sin(t,);,(,2,)保存到工作空间(,Save to workspace,),在,Save to workspace,栏中,可以选择的选项有:,Time,(时钟)、,States,(状态)、,Output,(输出端口)、,Final state,(最终状态)和,Signal logging,(信号)。同载入数据的形式一样,保存数据也有矩阵、结构和包含时间数据的结构,3,种形式,(,3,)保存选项(,Save options,),在保存选项栏中的“,Format”,下拉列表中有矩阵、结构和包含时间的结构,3,种选择。“,Limit data points to last”,用来限定保存到工作空间中的数据的最大长度。,输出选项(,Output options,)有:,Refine output,(细化输出),Produce additional output,(产生附加输出),Produce specified output only,(仅在指定的时刻产生输出),10.3.2,仿真结果分析,为了观察仿真结果的变化轨迹可以采用,3,种方法。,(,1,)把输出结果送给,Scope,模块或者,XY Graph,模块。,Scope,模块显示系统输出量对于仿真时间的变化曲线,,XY Graph,模块显示送到该模块上的两个信号中的一个对另一个的变化关系。,(,2,)把仿真结果送到输出端口并作为返回变量,然后使用,MATLAB,命令画出该变量的变化曲线。,(,3,)把输出结果送到,To Workspace,模块,从而将结果直接存入工作空间,然后用,MATLAB,命令画出该变量的变化曲线。,【,例,10.2,】,利用,Simulink,仿真求,I,=,首先打开一个模型编辑窗口,将所需模块添加到模型中。,设置模块参数并连接各个模块组成仿真模型。,设置系统仿真停止时间为,2s,。单击模型编辑窗口中的,Start simulation,按钮或选择模型编辑窗口,Simulation,菜单中的,Start,命令开始系统仿真。系统仿真结束后,显示模块,Display,,显示仿真结果为,4,。,10.3.3,系统仿真实例,【,例,10.3,】,有初始状态为,0,的二阶微分方程,y,+1.5,y,+10,y,=2,u,(,t,)+10,u,(,t,),,其中,u,(,t,),是单位阶跃函数,试建立系统模型并仿真。,方法,1,:用微分,/,积分器直接构造求解微分方程的模型。,把原微分方程改写为,y,=2,u, (,t,)+10,u,(,t,)1.5,y,10,y,u,经微分作用得,u,,,y,经积分作用得,y,,,y,再经积分模块作用就得,y,,而,u,、,u,、,y,和,y,经代数运算又产生,y,,据此可以建立系统模型并仿真。,(,1,)利用,Simulink,模块库中的基本模块建立系统模型,(,2,)设置系统仿真参数。在模型编辑窗口的,Simulation stop time,栏把仿真的停止时间设置为,5,。,(,3,)仿真操作。,10.4,子系统与封装,子系统把功能上有关的一些模块集中到一起保存,能够完成几个模块的功能。,10.4.1,子系统的建立,1,通过,Subsystem,模块建立子系统,新建一个仿真模型,打开,Simulink,模块库中的,Ports & Subsystems,模块库,将,Subsystem,模块添加到模型编辑窗口中。双击,Subsystem,模块打开一个,Subsystem,窗口,窗口中已经自动添加了一个输入模块和输出模块(表示子系统的输入端口和输出端口)。将要组合的模块插入到输入模块和输出模块中间,一个子系统就建好了。若双击该,Subsystem,模块,则打开原来的子系统内部结构窗口。,2,通过已有的模块建立子系统,先选择要建立子系统的模块,不包括输入端口和输出端口。选择模型编辑窗口,Edit,菜单中的,Create Subsystem,命令,这样,子系统就建好了,原来的模块变为子系统的图标。,先建立,PID,控制器的模型,选中模型中所有模块,使用模型编辑窗口,Edit,菜单中的,Create Subsystem,命令建立子系统,模型将被一个,Subsystem,模块取代,10.4.2,子系统的条件执行,子系统的执行可以由输入信号来控制,用于控制子系统执行的信号称为控制信号,而由控制信号控制的子系统称为条件执行子系统。,条件执行子系统分为,1,使能子系统,使能子系统表示子系统在由控制信号控制时,控制信号由负变正时子系统开始执行,直到控制信号再次变为负时结束。控制信号可以是标量也可以是向量。,建立使能子系统的方法是:打开,Simulink,模块库中的,Ports & Subsystems,模块库,将,Enable,模块复制到子系统模型中,则系统的图标发生了变化。,2,触发子系统,图,10.27 Trigger,模块参数对话框,触发子系统是指当触发事件发生时开始执行子系统。与使能子系统相类似,触发子系统的建立要把,Ports & Subsystems,模块库中的,Trigger,模块添加到子系统中或直接选择,Triggered Subsystem,模块来建立触发子系统。,触发形式由,Trigger,模块参数对话框(见图,10.27,)中“,Trigger type”,下拉列表中选择。,(,1,),rising,(上跳沿触发),(,2,),falling,(下跳沿触发),(,3,),either,(上跳沿或下跳沿触发),(,4,),funtion,-call,(函数调用触发):,【,例,10.6,】,利用触发子系统将一锯齿波转换成方波。,用,Signal Generator,、,Triggered Subsystem,和,Scope,模块构成如图,10.28,所示的子系统。,触发事件形式为“,either”,触发信号端接锯齿波,3,使能加触发子系统,所谓使能加触发子系统就是把,Enable,和,Tirgger,模块都加到子系统中,使能控制信号和触发控制信号共同作用子系统的执行,也就是前两种子系统的综合。该系统的行为方式与触发子系统相似,但只有当使能信号为正时,触发事件才起作用。,10.4.3,子系统的封装,所谓子系统的封装(,Masking,),就是为子系统定制对话框和图标,使子系统本身有一个独立的操作界面,把子系统中的各模块的参数对话框合成一个参数设置对话框,在使用时不必打开每个模块进行参数设置。,选中所要封装的子系统,再选择模型编辑窗口,Edit,菜单中的“,Mask Subsystem”,命令,这时将出现封装编辑器(,Mask Editor,)对话框。,1,Icon,选项卡的参数设置,主要设置封装模块的图标。,(,1,)“,Drawing commands”,编辑框,该编辑框主要用来建立封装图标,并且可以在封装图标中显示文本、图形、图像或传递函数。, 显示文本。在封装图标中显示文本的函数有,4,个:,disp,、,text,、,fprintf,和,port_,lable,。, 显示传递函数。在图标中显示传递函数使用,dpoly,函数,显示零极点模型的传递函数使用,droots,函数,(,2,)设置封装图标特性,在,Drawing commands,编辑框左边的下拉式列表中,可以分别对图标的各种特性进行设置。,Frame,设置图标的边框。,Transparency,设置图标的透明度。,Rotation,设置图标是否跟模块一起翻转。,Units,设置在“,Drawing commands”,编辑框中使用命令“,plot”,和“,text”,时的坐标系。,2,Parameters,选项卡的参数设置,Parameters,选项卡主要用来确定被封装子系统的内部变量和对话框中输入量之间的联系。,“,Prompt”,和“,Variable”,编辑框分别用来指定用户需要设置的变量提示符和变量名。,“,Type”,下拉式列表框用于指定控件类型,即控制封装后的子系统参数设置对话框所提供的设置参数的方式,提供的控件类型有“,Edit”,、“,Checkbox”,和“,Popup”,。,3,Initialization,选项卡的参数设置,Initialization,选项卡用于设置初始化命令。初始化命令的设置在对话框左边的“,Initialization commands”,编辑框内进行。初始化命令主要用来定义封装子系统的变量。,初始化的命令由,MATLAB,中的表达式组成,其中包括,MATLAB,函数、操作符和封装子系统工作区中定义的变量。,对于封装工作区定义的变量,通过初始化命令和模块的参数相联系,也就是说模块的参数在获取数据时,先读取封装工作区的变量值,再通过初始化命令来取值。,4,Documentation,选项卡的参数设置,图,10.33 PID,控制器子系统参数对话框,Documentation,选项卡用于设置封装类型、描述文本和帮助文本。,“,Mask type”,编辑框用于表示封装的类型,“,Block description”,编辑框中设置的内容将显示在封装模块参数对话框的上部。,10.5 S,函数的设计与应用,S,函数用于开发新的,Simulink,通用功能模块,是一种对模块库进行扩展的工具。,S,函数称为系统函数(,System Function,),采用非图形化的方式描述功能块。,10.5.1,用,MATLAB,语言编写,S,函数,1,主程序,S,函数主程序的引导语句为,function sys,x0,str,ts=,fname(t, x, u, flag),其中,fname,是,S,函数的函数名,,t,、,x,、,u,、,flag,分别为仿真时间、状态向量、输入向量和子程序调用标志。,flag,控制在仿真的各阶段调用,S,函数的哪一个子程序,其含义和有关信息如表,10.1,所示。,Simulink,每次调用,S,函数时,必须给出这,4,个参数。,sys,、,x0,、,str,和,ts,是,S,函数的返回参数。,2,子程序,S,函数,M,文件共有,6,个子程序,供,Simulink,在仿真的不同阶段调用,这些子程序的前辍为,mdl,。每一次调用,S,函数时,都要给出一个,flag,值,实际执行,S,函数中与该,flag,值对应的那个子程序。,Simulink,在仿真的不同阶段,需要调用,S,函数中不同的子程序。,(,1,)初始化子程序,mdlInitializeSizes,子程序,mdlInitializeSizes,定义,S,函数参数,如采样时间、输入量、输出量、状态变量的个数以及其他特征。,(,2,)其他子程序,状态的动态更新使用,mdlDerivatives,和,mdlUpdate,两个子程序,前者用于连续模块的状态更新,后者用于离散状态的更新。,模块输出信号的计算使用,mdlOutputs,子程序,系统的输出仍由,sys,变量返回,10.5.2 S,函数的应用,【,例,10.7,】,采用,S,函数实现,y,=,k,(1+,x,),,即把一个输入信号加,1,后放大,k,倍。,(,1,)编写,S,函数,%S,函数,timek.m,,其输出是输入加,1,的,k,倍,function sys,x0,str,ts=timek(t,x,u,flag,k),switch flag,case 0,sys,x0,str,ts=,mdlInitializeSizes,; %,初始化,case 3,sys=,mdlOutputs(t,x,u,k,); %,计算输出量,case 1,2,4,9,sys=;,otherwise %,出错处理,error(Unhandled,Flag, num2str(flag);,end,%,mdlInitializeSizes,:当,flag,为,0,时进行整个系统的初始化,function sys,x0,str,ts=,mdlInitializeSizes,(),%,调用函数,simsizes,以创建结构,sizes,sizes=,simsizes,;,%,用初始化信息填充结构,sizes,sizes.NumContStates,=0; %,无连续状态,sizes.NumDiscStates,=0; %,无离散状态,sizes.NumOutputs,=1; %,有一个输出量,sizes.NumInputs,=1; %,有一个输入信号,sizes.DirFeedthrough,=1; %,输出量中含有输入量,sizes.NumSampleTimes,=1; %,单个采样周期,%,根据上面的设置设定系统初始化参数,sys=,simsizes(sizes,);,%,给其他返回参数赋值,x0=; %,设置初始状态为零状态,str,=; %,将,str,变量设置为空字符串,ts,=-1,0; %,假定继承输入信号的采样周期,%,mdlOutputs,:当,flag,值为,3,时,计算输出量,function sys=,mdlOutputs(t,x,u,k,),sys = k*(1+u);,(,2,)模块的封装与测试,将该程序以文件名,timek.m,存盘。图,10.34 S,函数仿真模型, 建立,S-Function,模块和编写的,S,函数文件之间的联系。,构建如图,10.34,所示的仿真模型。,设置,S-Function,模块的参数对话框:在,S-function name,文本框中填写,S,函数名“,timek,”,,在“,S-function parameters”,文本框中填入附加参数“,k”,。, 封装,设置,S,函数模块参数,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!