《计算机仿真技术:Matlab Simulink仿真》由会员分享,可在线阅读,更多相关《计算机仿真技术:Matlab Simulink仿真(94页珍藏版)》请在金锄头文库上搜索。
1、Matlab Simulink仿真仿真1Simulink于20世纪90年代由Mathworks公司开发,是Matlab环境下对动态系统进行建模、仿真和分析的一个软件包Simu:系统仿真Link:系统连接在该软件环境下,用户可以在屏幕上调用现成的模块,并将它们适当连接起来以构成系统的模型,即所谓的可视化建模。建模以后,以该模型为对象运行Simulink中的仿真程序,可以对模型进行仿真,并可以随时观察仿真结果和干预仿真过程。2p1 Simulink操作基础p2 系统仿真模型p3 系统的仿真p4 使用命令操作对系统进行仿真p5 子系统及其封装技术p6 S函数的设计与应用31.1 Simulink简介
2、简介pSimulink既适合于线性系统,非线性系统,既适用于连续系统,也适合于离散系统和连续系统与离散混合系统,既适合于定常系统,也适用于时变系统。pSimulink提供用户图形用户界面。用户可以用鼠标操作,从模块库中调用标准模块,将它们适当地连接起来以构成动态系统模型,并且用各模块的参数对话框为系统中各模块设置模块。当各种模块的参数设置完成之后,即建立起该系统的模型。41.1 Simulink简介简介pSimulink模块库内容十分丰富,除包括输入信号源模块库(sources)、输出接收模块库(sinks)、连续系统模块库(continuous)、离散系统模块库(discrete)、数学运算
3、模块库(math operations)等许多模块外,用户还可以自定义和创建模块。p系统的模型建立以后,选择仿真参数和数值算法,便可以启动仿真程序对该系统进行仿真。p在仿真过程中,用户可以设置不同的输出方式来观察仿真结果。51.2 Simulink的启动与退出的启动与退出pSimulink不能独立运行,只能在Matlab环境下运行pSimulink的启动pSimulink的退出61.2 Simulink的启动与退出的启动与退出71.2 Simulink的启动与退出的启动与退出81.2 Simulink的启动与退出的启动与退出91.2 Simulink的启动与退出的启动与退出10p1 Simul
4、ink操作基础p2 系统仿真模型p3 系统的仿真p4 使用命令操作对系统进行仿真p5 子系统及其封装技术p6 S函数的设计与应用112.1 Simulink仿真模型概述仿真模型概述pSimulink仿真模型在视觉上表现为直观的方框图,其扩展名为.mdl,在数学上体现了一组微分方程或差分方程,在物理上模拟了物理器件构成的实际系统的动态特性p模块是构成系统仿真模型的基本单元。从宏观角度上看,simulink模型通常包含了3类模块:信源(source)、系统(system)和信宿(sink)。122.1 Simulink仿真模型概述仿真模型概述pSimulink的模块库提供了大量的模块132.2 模
5、块的编辑模块的编辑p添加模块p选取模块 单个模块、多个模块 p复制与删除模块p模块外形的调整 大小、方向(rotate block)、颜色(foreground color)、阴影(show drop shadow)p模块名的处理 隐藏(hide name)、修改模块名、修改字体(font)142.3 模块的连接模块的连接p连接两个模块 先移动光标到输出端,光标键头会变成十字形光标,这时按住鼠标左键,移动鼠标到另一个模块的输入端,当十字形光标出现重影时,释放鼠标左键就完成了连接152.3 模块的连接模块的连接p模块间连线的调整 调整模块间的连线位置可采用鼠标拖动操作来实 现 把一条直线分成斜线
6、段,先按住鼠标左键之前要先按下shift键,出现黑色小方块之后,拖曳小方块到目标位置后释放鼠标和shift键 162.3 模块的连接模块的连接p连线的分支 先连好一条线之后,把鼠标移到分支点的位置,先按下Ctrl键,然后按住鼠标拖动目标模块的输入端,释放鼠标和Ctrl键172.3 模块的连接模块的连接p标注连线p删除连线182.4 模块的参数和属性设置模块的参数和属性设置p模块的参数设置 双击要设置的模块或在模块上按鼠标的右键并在弹出的快捷菜单中选择相应模块的参数设置命令就会弹出模块参数对话框。 功能模块说明、模块参数设置 幅值、频率、相位、采样时间等192.4 模块的参数和属性设置模块的参数
7、和属性设置202.4 模块的参数和属性设置模块的参数和属性设置p模块的属性设置 模块上单击鼠标右键并在弹出的快捷菜单中选择Block Properties;或先选择要设置的模块,再在模型编辑窗口的Edit菜单中选择Block Properties212.4 模块的参数和属性设置模块的参数和属性设置pDescription:对该模块在模型中的用法进行说明pPriority: 规定该模块在模型中的相对于其他执行模块执行的优先顺序pTag: 用户为模块添加的文本格式的标记222.4 模块的参数和属性设置模块的参数和属性设置232.4 模块的参数和属性设置模块的参数和属性设置242.5 Simulin
8、k的几类基本模块的几类基本模块p输入源模块252.5 Simulink的几类基本模块的几类基本模块p接收模块262.5 Simulink的几类基本模块的几类基本模块p连续系统模块272.5 Simulink的几类基本模块的几类基本模块p离散系统模块282.5 Simulink的几类基本模块的几类基本模块p数学运算模块29p1 Simulink操作基础p2 系统仿真模型p3 系统的仿真p4 使用命令操作对系统进行仿真p5 子系统及其封装技术p6 S函数的设计与应用303.1 设置仿真参数设置仿真参数p打开系统仿真模型,从模型编辑窗口的simulink菜单中选择configuration para
9、meters命令,打开仿真参数对话框,在其中可以设置仿真参数。313.1 设置仿真参数设置仿真参数323.1 设置仿真参数设置仿真参数333.1 设置仿真参数设置仿真参数343.1 设置仿真参数设置仿真参数p从工作空间中导入数据(load from workspace)353.1 设置仿真参数设置仿真参数p从工作空间中导入数据矩阵形式t=0:0.1:10;u=sin(t),cos(t).*sin(t),exp(-2*t).*sin(t);363.1 设置仿真参数设置仿真参数373.1 设置仿真参数设置仿真参数包含时间数据的结构形式 两个名字不能改变的顶级成员:time和signals time
10、成员中包含一个列向量,表示仿真时间 signals成员中包含一个数组,数组中的每个元素对于一个输入端口,并且每个元素必须包含一个名字同样不能改变的values成员;values成员也包含一个列向量,对应于输入端口的输入数据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);383.1 设置仿真参数设置仿真参数p保存到工作空间 (save to workspace)矩阵形式包含时间数据的结构形式393.1 设置仿真参数设置仿真参数p
11、保存选项(save options)Format选项说明数据的保存格式,有矩阵、结构和包含时间的结构Limit data points to last用来限定保存到工作空间中的数据的最大长度Output options用来设置输出选项设置Refine output:使输出的数据曲线更加平滑Produce additional output:由用户指定产生输出的附加时刻Produce specified output only:仅仅提供在指定的时间点上的输出值403.1 设置仿真参数设置仿真参数pDiagnostics选项设置None:不做任何反应,在任何情况下都不影响程序运行Warning:提
12、示警告,但警告信息不影响程序的运行Error:提示错误,在提示错误后,运行中的程序将停止413.1 设置仿真参数设置仿真参数423.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析p从simulation中选择start菜单项或单击模型编辑窗口中的start simulation命令按钮,便可启动对当前模型的仿真。p3种方法观察仿真结果的变化轨迹把输出结果送给Scope模块或者XY Graph模块433.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析443.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析453.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析
13、把仿真结果送到输出端口并作为返回变量,然后利用Matlab命令绘制出该变量的变化曲线463.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析473.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析whos Name Size Bytes Class tout 51x1 408 double array yout 51x1 408 double arrayGrand total is 102 elements using 816 bytes483.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析p把输出结果送到To workspace模块,从而将结果直接存入工作空间493
14、.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析p方法一:采用Matlab函数模块建立M函数文件f.mFunction y=f(t)Y=5*t*t+16启动simulink并打开模型编辑窗口503.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析设置参数模块启动仿真513.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析p方法二:采用基本模块组合构建523.2 启动系统仿真与仿真结果分析启动系统仿真与仿真结果分析533.3 系统仿真实例系统仿真实例pSimulink进行系统仿真的步骤如下:建立系统仿真模型,包括添加模块、设置模块参数以及进行模块连接等操作设置仿真参数启
15、动仿真并分析仿真结果543.3 系统仿真实例系统仿真实例例:有初始状态为0的二阶微分方程 其中 是单位阶跃函数,试建立系统模型并仿真 方法一:用积分器直接构造求解微分方程的模型: 把原微分方程写为: 553.3 系统仿真实例系统仿真实例563.3 系统仿真实例系统仿真实例573.3 系统仿真实例系统仿真实例方法二:利用传递函数模块建模对方程 两边进行Laplace变换:经整理得传递函数583.3 系统仿真实例系统仿真实例593.3 系统仿真实例系统仿真实例方法三:利用状态方程模块建模令 , ,那么微分方程可写为:写成状态方程为:其中:603.3 系统仿真实例系统仿真实例613.3 系统仿真实例
16、系统仿真实例62p1 Simulink操作基础p2 系统仿真模型p3 系统的仿真p4 使用命令操作对系统进行仿真p5 子系统及其封装技术p6 S函数的设计与应用634.4 使用命令操作对系统进行仿真使用命令操作对系统进行仿真pSim函数Sim函数的作用是运行一个由simulink建立的模型,其调用格式为:t,x,y=sim(modname,timespan,options,data);t: 仿真的时间向量x: 状态模型的状态矩阵y: 仿真的输出矩阵,每一列对应一个输出端口的输出数据644.4 使用命令操作对系统进行仿真使用命令操作对系统进行仿真modname: 模型的名字,用单引号括起来tim
17、espan: 用于指定仿真时间区间:tfinal指定仿真停止时间,开始时间默认为0;tstart tfinal指定开始时间和停止时间;tstart outputtims tfinal指定开始时间、要输出的时间和停止时间options:由simset函数设置的仿真参数,数据格式为结构data:外部输入到输入端口的数据注意:上述参数只有modname是必须的654.4 使用命令操作对系统进行仿真使用命令操作对系统进行仿真t,x,y=sim(simul)whos Name Size Bytes Class t 52x1 416 double array x 52x3 1248 double arra
18、y y 52x2 832 double arrayGrand total is 312 elements using 2496 bytes664.4 使用命令操作对系统进行仿真使用命令操作对系统进行仿真pt,x,y=sim(simul,2,8)pt,x,y=sim(simul,2,4,6,8)674.4 使用命令操作对系统进行仿真使用命令操作对系统进行仿真pSimset函数Simset函数用来为sim函数建立或编辑仿真参数或规定算法,并把设置结果保存在一个结构变量中Options=simset(property,value,): 把property代表的参数赋值为value,结果保存在结构op
19、tions中Options=simset(old_opstruct,property,value,):把已有的结构old_opstruct中的参数property重新赋值为value,结果保存在新结构options中Options=simset(old_opstruct,new_opstruct):用结构new_opstruct的值代替已经存在的结构old_struct的值684.4 使用命令操作对系统进行仿真使用命令操作对系统进行仿真option=simset(outputvariables,x,outputpoints,all,finalstatename,data);t,x,y=sim(
20、simul,1,10,option) whos Name Size Bytes Class data 1x3 24 double array option 1x1 3612 struct array t 0x0 0 double array x 55x3 1320 double array y 0x0 0 double arrayGrand total is 205 elements using 4956 bytes694.4 使用命令操作对系统进行仿真使用命令操作对系统进行仿真option=simset(outputvariables,txy);t,x,y=sim(simul,2 4 6 8
21、,option)t = 2 4 6 8x = 0 0 0 0.1956 0.6051 -0.1413 -0.0950 0.4792 -0.6319 1.4455 1.5579 0.5658y = 0 0 0.6051 -0.1413 0.4792 -0.6319 1.5579 0.565870p1 Simulink操作基础p2 系统仿真模型p3 系统的仿真p4 使用命令操作对系统进行仿真p5 子系统及其封装技术p6 S函数的设计与应用715.1 子系统的建立子系统的建立p通过subsystem模块建立子系统先打开simulink模块库浏览器,新建一个仿真模型打开simulink模块库中的por
22、ts&subsystems模块库,将subsystem模块添加到模型编辑窗口汇总双击subsystem模块打开一个空白的subsystem窗口,将要组合的模块添加到该窗口中725.1 子系统的建立子系统的建立735.1 子系统的建立子系统的建立p通过已有的模块建立子系统先选择要建立的子系统的模块,不包括输入端口和输出端口选择模型编辑窗口edit菜单中的create subsystem命令,这样,子系统就建立好了。745.1 子系统的建立子系统的建立755.2 子系统的条件执行子系统的条件执行p使能子系统使能子系统表示子系统在由控制信号控制时,控制信号由负变正时子系统开始执行,直到控制信号再次变
23、为负时结束765.2 子系统的条件执行子系统的条件执行p建立使能子系统775.2 子系统的条件执行子系统的条件执行p利用使能子系统构成一个正弦半波整流器785.2 子系统的条件执行子系统的条件执行p触发子系统触发子系统是指当触发事件发生时开始执行子系统,触发子系统在每次触发结束到下次触发之前总是保持上一词的输出值,而不会重新设置初始输出值。触发形式以Trigger模块参数对话框中Trigger type下拉列表框选择。Rising(上跳沿触发):控制信号从负值或0上升到正值Falling(下跳沿触发):控制信号从正值或0下降到负值Either(上跳沿或下跳沿触发):控制信号满足上跳沿或下跳沿触
24、发Function-call(函数调用触发):表示子系统的触发由S函数的内部逻辑决定,与函数有关795.2 子系统的条件执行子系统的条件执行805.2 子系统的条件执行子系统的条件执行p利用触发子系统将一锯齿波转换成方波815.2 子系统的条件执行子系统的条件执行p使能加触发子系统把enable和trigger模块都加到子系统中,使能控制信号和触发控制信号共同作用子系统的执行,也就是前两种子系体的综合。该系统的行为方式与触发子系统相似,但只有当使能信号为正时,触发事件才起作用825.3 子系统的封装子系统的封装p所谓子系统封装,就是为子系统自定义对话框和图标,使子系统本身有一个独立的操作界面,
25、把子系统中的各模块的参数对话框结合成一个参数设置对话框,在使用时不必打开每个模块进行参数设置,这样使子系统的使用更加方便p子系统的封装:先选中所要封装的子系统,再选择模型编辑窗口edit菜单中的mask subsystem命令,这时出现封装编辑器mask editor对话框835.3 子系统的封装子系统的封装845.3 子系统的封装子系统的封装pIcon选项卡的参数设置主要用来建立封装图标,并且可以在封装图标中显示文本、图形、图像或传递函数。在封装图标中显示文本的函数有4个:disp、text、fprintf、port_label例:disp(My Subsystem);port_label(
26、input,1,IN1);port_label(output,1,OUT1);855.3 子系统的封装子系统的封装865.3 子系统的封装子系统的封装pplot(cos(0:0.1:2*pi),sin(0:0.1:2*pi)pimage(imread(C:Documents and SettingsAll UsersDocumentsMy Pictures示例图片Water lilies.jpg)875.3 子系统的封装子系统的封装pdpoly(0 0 1,1 2 1)pdroots(,1 -2 1,3)885.3 子系统的封装子系统的封装895.3 子系统的封装子系统的封装905.3 子系统的封装子系统的封装915.3 子系统的封装子系统的封装925.3 子系统的封装子系统的封装935.3 子系统的封装子系统的封装94