第7章Simulink仿真环境7.1Simulink的概述7.2Simulink的工作环境7.3建立模型7.4Simulink的应用实例7.5模型的调试7.6子系统与封装7.7S函数的设计与应用7.1Simulink的概述1.Simulink的特点(1)设计简单,系统结构使用方框图绘制;(2)分析直观,用户不需要考虑系统模块内部,只要考虑系统中各模块的输入输出;(3)仿真快速、准确,智能化地建立各环节的方程,自动地在给定精度要求下以最快速度仿真,还可以交互式地进行仿真。输出(y)状态(x)输入(u)7.2Simulink的工作环境在MATLAB的命令窗口输入“simulink”,或单击工具栏中的图标,就可以打开Simulink模块库浏览器(SimulinkLibraryBrowser)窗口。7.2.1一个简单的Simulink实例例7-1将一个阶跃输入信号送到积分环节,并将积分后的信号送到示波器显示。1.创建空白模型2.添加模块3.添加连接4.仿真5.保存模型7.2.2Simulink的模型窗口Simulink模型的创建和仿真都是在模型窗口中进行的,模型窗口包括菜单、工具栏、模型设计区和状态栏。模型窗口中的模型设计区用来创建和修改模型。7.2.3Simulink的工作原理仿真包括以下几个步骤。(1)模型编译(2)连接(3)仿真执行一般仿真模型都采用数值积分来仿真的,相邻两个时间点的长度为步长,步长的大小取决于求解器的类型。7.2.4Simulink的模块库Simulink的模块库浏览器提供了各种基本模块,并将它们按照应用领域和功能进行分类以方便用户查找。7.3建立模型7.3.1创建模型1.模块的操作(1)改变大小(2)移动(3)复制(4)模块的翻转(5)修改模块名(7)模块名的翻转(6)模块名的显示和隐藏2.信号线的操作(1)信号线的分支(2)信号线的折线(3)信号线的文本注释(4)信号线与模块分离练习7.3.2仿真参数的设置图1.仿真器参数设置(Solver)(1)仿真时间(Simulationtime)仿真的起始时间(Starttime):默认为0,单位为秒。(2)仿真步长模式(Solveroptions)(3)Solver“Solver”:设置仿真解法的具体算法类型。变步长的算法有discrete、ode45、ode23、ode113、ode15s、ode23s、ode23t和ode23tb,默认使用ode45。2.工作空间数据输入输出的设置(DataImport/Outport)(1)从工作空间装载数据(Loadfromworkspace)(2)保存数据到工作空间(Savetoworkspace)(3)变量保存设置(Saveoptions)7.3.3常用模块的设置打开参数设置对话框的方法有:双击模块;或者用鼠标右键单击模块,在快捷菜单中选择“BlockParameters…”,各模块的参数对话框最上面都显示了模块的功能。1.阶跃信号模块(Step)2.正弦信号模块(SineWave)3.从工作空间获取数据(Fromworkspace)和从文件获取数据(Fromfile)Fromworkspace和Fromfile分别是从工作空间和MAT文件输入数据,都在“Sources”子模块库中。4.求和模块(Sum)Sum模块用来计算信号的和,是“MathOperations”子模块库中的。5.传递函数(Transferfunction)和零极点传递函数(Zero-Pole)例7-3创建一个单位负反馈的二阶系统,输入为阶跃信号,将输出送到示波器显示。6.增益(Gain)Gain模块是将信号放大K倍,是“MathOperations”子模块库中的。7.输出到文件(ToFile)和输出到工作空间(ToWorkspace)8.示波器(Scope)示波器的主要参数有:Numberofaxes:示波器的输入端口个数,默认值为1表示只有一个输入;Timerange:设置显示信号范围,默认auto为仿真时间范围,如果信号实际持续时间超过该范围,则超出范围的信号在示波器中不显示;Limitdatapointstolast:表示缓冲区接收数据的长度,默认为5000,示波器的缓冲区可接收30个信号,数据长度为5000,如果数据长度超出,则最早的历史数据会被清除。Savedatatoworkspace:把示波器缓冲区中保存的数据以矩阵或结构数组的形式送到工作空间,在下面两栏设置变量名“Variablename”和数据类型“Format”。9.模块的属性设置(1)“General”选项卡(2)“BlockAnnotation”选项卡(3)调用函数(Callbacks)7.3.4仿真结构参数化例7-4续将单位负反馈二阶系统的参数使用变量表示,变量的值存放在“ex7_4_1.m”文件中。模块参数的三个变量在“ex7_4_1.m”文件中设置,则文件内容如下:%ex7_4_1设置参数T1,T2,KT1=1;T2=2;K=-1;7.3.5使用命令创建和运行Simulink模型1.使用命令创建Simulink模型new_system('newmodel',option)%创建新模型(2)模块和信号线函数add_block('源模块名','属性名1',属性值1,'属性名2',属性值2,…)add_line('模块名','起始模块名/输出端口号','终止模块名/输入端口号')(3)设置属性set_param('对象名','参数名1',参数值1,'参数名2',参数值2,…)练习例7-5使用命令创建一个反馈系统的Simulink模型。%创建新模型new_system('ex7_5')%创建模型open_system(‘ex7_5’)%设置模型窗口大小set_param(‘ex7_5’,‘location’,[100,100,500,400])%添加模块add_block('built-in/SineWave',…'ex7_5/sin','position',[40,80,80,120])……%设置模块参数set_param('ex7_5/sin','Amplitude','10')……%添加信号线add_line('ex7_5','sin/1','sum/1')……add_line('ex7_5',[300,100;300,180;105,180;115,105])2.使用命令运行仿真启动模型的仿真可以使用sim函数来完成。[t,x,y]=sim('model',timespan,options,ut)%利用输入参数进行仿真说明:'model'为模型名,其余参数都可以省略;timespan是仿真时间区间,可以使用[t0,tf]设置仿真起始时间和终止时间;options参数为模型仿真的相关参数;ut为模型的外部输入向量;t为仿真时间列向量,x为状态变量构成的矩阵,y为输出信号构成的矩阵。7.4Simulink的应用实例7.4.1Simulink在电路中的应用实例例7-6根据电路桥电路创建一个Simulink模型,求电路中的电流,电路如图7-30所示,已知电阻R=5Ω,Ra=25Ω,Rb=100Ω,Rc=125Ω,Rd=100Ω,Re=37.5Ω,求当直流电源为40V时电路中的电流。40VRRaRbRcRdRe7.4.2Simulink在数字电路中的应用实例例7-7创建一个Simulink模型实现三-八译码器的仿真。7.4.3Simulink在控制系统中的应用实例例7-8创建一个Simulink模型使用PID控制器控制三阶系统,查看其输出响应。练习7.5模型的调试7.5.1Simulink调试器1.调试器窗口的选项卡“BreakPoints”:用于设置断点,使仿真运行到断点就停止;“SimulationLoop”:包含Method、Breakpoints和ID三列内容,用于显示各仿真步以及正在运行的相关信息;“Outputs”:用于显示调试结果,包括调试命令提示、当前运行模块的输入、输出和模块的状态;“SortedList”:用于显示被调试的模块列表,该列表按模块执行的顺序排列;“Status”:用于显示调试器各种选项设置的值以及其他状态信息。7.5.2在调试器窗口中调试模型1.单步运行2.设置断点(1)无条件断点(2)有条件断点(4)取消断点(3)在某个仿真时刻设置断点7.6子系统与封装7.6.1创建子系统1.在模型中新建子系统(1)将模型中需要创建成子系统的模块都选中;(2)选择菜单“Edit”→“Createsubsystem”,将选中的模块用“Subsystem”模块代替;(3)修改子系统名,新建的子系统名默认为“Subsystem”;(4)修改输入输出端口名,新建子系统中的输入端口默认名为“In1”、“In2”…,输出端口名为“Out1”、“Out2”…,可以修改端口名称。2.在已有的子系统基础上创建7.6.2封装子系统1.封装子系统的步骤(1)选择需要封装的子系统并双击打开,将需要设置的模块参数设置为变量;(2)选择菜单“Edit”→“Masksubsystem”,打开封装对话框,设置“Icon”、“Parameters”、“Initialization”和“Documentation”等各种参数;(3)保存设置。2.封装对话框在封装对话框中设置封装子系统的外观、输入参数、初始值和文字说明,封装对话框中有“Icon”、“Parameters”、“Initialization”和“Documentation”四个选项卡。7.6.3定义自己的模块库创建模块库的方法是在Simulink环境中,选择菜单“File”→“New”→“Library”,则会出现空白的模块库窗口,将模块复制到模块库窗口中,并将模块库保存为.mdl文件。7.7S函数的设计与应用7.7.1S函数简介S函数模块在“User-DefinedFunctions”子模块库中,通过“S-Function”模块创建包含S函数的Simulink模型。在“S-Functionname:”中必须填写不带扩展名的S函数文件名,“S-Functionparameters:”中填写模块的参数。练习模块名的修改是______A.在参数设置对话框中实现B.在模块旁双击鼠标后出现的编辑框中实现C.在模块的下面或旁边的编辑框中D.在模块的属性窗口中设置C练习运行以下命令,则实现的功能是______add_line('exe1',[300,0;300,80;150,80])A.添加一条直线B.添加一条有一个转折的折线C.添加一条有两个转折的折线D.添加一条从左到右的折线B练习创建一个具有延迟环节e-τs的单位反馈系统,开环传递函数为,当输入阶跃信号时,查看延迟环节的时间参数τ对系统输出响应的影响。τsesG(s)1201