6(II)-动态仿真集成环境-Simulink演示教学_第1页
6(II)-动态仿真集成环境-Simulink演示教学_第2页
6(II)-动态仿真集成环境-Simulink演示教学_第3页
6(II)-动态仿真集成环境-Simulink演示教学_第4页
6(II)-动态仿真集成环境-Simulink演示教学_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.3连续系统的数字仿真6.3.1利用Simulink菜单命令进行仿真6.3.2利用MATLAB的指令操作方式进行仿真6.3.3模块参数的动态交换9/26/202416.3.1仿真运行非常方便,直观;可以以示波器的方式进行仿真结果的输出与显示也可以将仿真结果保存到MATLAB工作空间的变量中,以待进一步处理。对框图模型本身和数值算法及参数的选择都可以很方便地进行修改和操作。启动仿真:按工具栏的启动图标仿真的终止或中断:按工具栏的终止图标,按暂停图标9/26/20242仿真参数的配置Simulation—configurationparameters仿真起始和终止时刻的设定;仿真步长的选择;仿真算法的选择;是否从外界获得数据;是否向外界输出数据9/26/202431解算器solverIsimulation—configurationparameters仿真时间设置(simulationtime):starttime缺省为0,stoptime:缺省10s解算器(solveroptions):type:变步长和定步长,缺省是变步长的ode45解算器仿真算法;solver选项:仿真算法变步长连续解算器:maxstepsize:设置最大仿真步长,minstepsize:设置最小仿真步长,initialstepsize:设置初始仿真步长,zerocrossingcontrol:进行系统状态变量不连续点的零穿越检查,relativetolerance设置相对误差容许限,absolutetolerance:设置绝对误差容许限9/26/20244解算器solverIII--定步长(fixed-step)解算器periodicsampletimeconstraint:规定由仿真模型定义的采样时间约束fixed-stepsize:设置定仿真步长的数值taskingmodeforperiodicsampletime:设置任务模式:单任务适用于具有相同采样速率的情况,多任务模式用于模型具有不同采样速率的情况;auto模式表示系统可根据模型中的采样速率是否相同,自动选择单或多任务模式。9/26/20246解算器算法及选择I--变步长算法ode45-基于龙格库塔法的四、五阶单步变步长算法,单步法,对大多数系统有效,最常用;ode23-基于龙格库塔法的二、三阶单步变步长算法,对宽误差限和存在轻微刚性的系统比oed45更有效一些;ode113-可变阶次的Adams-Bashforth-MoultonPECE多步算法,比ode45更适合于误差要求更严格的情况,适用于光滑、非线性、时间常数变化范围不大的系统;ode15s-可变阶次的数值微分公式多步算法,可以解算刚性问题或在用ode45时仿真失败或不够有效时采用;9/26/20247ode23s-基于修正的Rosenbrock公式单步算法,适用于误差容许范围较宽的情况,对于一些用ode15s不是很有效的刚性系统,可以有效解决;ode23t-基于梯形规则的一种自由插补实现算法,可以解算适度刚性且需要没有数字阻尼的结果问题;ode23tb-使用TR-BDF2来实现的,基于二阶隐式龙格库塔公式;discrete-不含积分运算的变步长算法,适用于纯离散系统,此时系统会自动选择该算法9/26/20248解算器算法及选择II--定步长算法ode5-定步长ode45算法;ode4-四阶龙格库塔法;ode3-定步长ode23算法;ode2-Henu方法,即改进欧拉法;ode1-即欧拉法,是一种最简单的算法,精度最低,仅用来验证结果;discrete(fixed-step)-不含积分运算的定步长算法,适用于纯离散系统,此时系统会自动选择该算法9/26/20249ⅲ仿真数据输入/输出Iloadfromworkspace:Input:从工作空间导入数据到输入模块(In)中,数据类型包括:数组、时间表达式、结构体和时间串如果simulink模型中使用了“输入模块”,就必须选中该模块并填写所导入数据的变量名;缺省变量名为[t,u],t为时间,u为时间对应的数值;9/26/202410ⅲ仿真数据输入/输出Iinitialstate:用于设置由input选项导入simulink模型输入模块In变量的初始值;选中此选项,无论建立该模型的积分模块设置过什么样的初始值,都可将MATLAB工作空间已存在的变量强制作为simulink模型“输入模块”变量的初始值;缺省名为xinitial9/26/202411例:从MATLAB工作空间导入数据应用实例e6_3.mdlt1=[0:0.01:10]';u1=[sin(t1),cos(t1)];x0=[2,2];然后设置loadfromworkspace9/26/202412ⅲ仿真数据输入/输出IISavetoworkspace:将仿真结果数据保存至MATLAB工作空间中;time:用于设置保存仿真运行时间的变量名;states:用于设置保存仿真运行的状态变量名;output:用于设置保存仿真运行的输出数据变量名;若使用了输出模块(out),则必须选中该选项,并填写变量名finalstate:用于设置保存仿真运行的最终状态变量名;9/26/202413ⅲ仿真数据输入/输出IIsaveoption:数据保存选项limitdatapointstolast:decimation:用于设置解点保存频度,每隔n-1个点保存一个点format:用于设置数据保存格式,数组array、结构体structure和时间结构体structurewithtimeoutputoption:用于设置产生附加输出信号数据,只适用于变步长解算器。refineoutput:平滑输出;produceadditionaloutput:修改时间步长平滑输出;producespecifiedoutputonly:在给定时间内产生输出9/26/202414FormatArray:将输出结果分别存储在savetoworkspace域中各编辑框命名的矩阵中,默认值分别为tout,xout,yout,xFinal,矩阵的每一列与模型的一个输出或状态对应,第一行与初始时间相对应。Structurewithtime:保存模型的结果到一个结构中,其名字由Savetoworkspace域中各编辑框命名的,有两个顶层字段:时间和信号。时间字段包含仿真时间向量,信号字段包含子结构数组,Structure:不保存仿真时间9/26/202415Refineoutput:这个选项可以理解成精细输出,其可以在refinefactor设置仿真时间步间插入的输出点数。精细输出只能在变步长模式中才能使用,并且在ode45效果最好Produceadditionaloutput:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的右边出现一个outputtimes编辑框,在这里用户指定额外的仿真输出点Producespecifiedoutputonly:simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出9/26/202416例:P145,例6-6负反馈阶跃输入模块的起始时间改为0;终止仿真时间改为20输出时间变量为t,输出变量为y,选择保存选项为矩阵的形式Arrayplot(t,y)e6_17.mdl9/26/202417例:P145,例6-7ToWorkspace是由接受模块库复制的,变量名分别改为y和t,并选择保存类型为列矩阵的形式Array负反馈阶跃输入模块的起始时间改为0;终止仿真时间改为20plot(t,y)e6_17_1.mdl9/26/202418例:P146,例6-8利用Simulink对以下系统进行仿真。当输入为正弦信号时,观测输出信号的变化。e6_5.mdl9/26/2024196.3.2利用MATLAB的指令操作方式进行仿真[t,x,y]=sim(‘model’,tf,options,ut)[t,x,y1,y2,…yn]=sim(‘model’,tf,options,ut)Model—模型文件名,必须指定,其余参数可默认;Tf—仿真时区,[0,tf]或[t0,tf]Options—可选仿真参数,用simset命令指定Ut—外部输入函数T—取积分值的时间点序列向量X—系统的状态序列矩阵Y—系统输出序列矩阵,每一列表示一个输出的时间序列9/26/2024206.3.3模块参数的动态互换在MATLAB工作空间中定义变量例6-11P148e6_6.mdl在工作空间中运行以下内容:A=[-0.300;2.9-0.62-2.3;02.30];b=[1;0;0];C=[110;1-31];d=[0;1];x0=[1;1;1];9/26/202421使用set_param()指令传递数据Set_param(Name,Parameter1,Value1,Parameter2,Value2,…)其中,Name是系统模块名,Parameter是待修改的参数名,Value是新指定值。例6-12,P150,e6_7.mdl,e6_8.mclearopen('e:\computersimulation\ch6\e6_7.mdl');set_param('e6_7/Gain','Gain','2');[t,x,y]=sim('e6_7',10);plot(t,y(:,1),':b',t,y(:,2),'-r');legend('y1','y2')9/26/202422几个例子①结构图数学模型例:三阶控制系统结构图如图所示,建立系统的simulink模型,并运行模型5/(s(s+1))(0.456s+1)/(0.114s+1)0.5-r(t)c(t)9/26/202423建立模型e6_2.mdl参数设置运行保存数据应用e6_2m.m9/26/202424②微分方程数学模型:例考虑如图所示的强制阻尼二阶系统。图中,小车受外力为F,小车位移为x。设小车质量m=5,弹簧弹性系数k=2,阻尼系数f=1。并设系统的初始状态为静止在平衡点处,即(0)=x(0)=0,外力函数为幅值等于1的阶跃量。仿真此小车系统的运动。mFkfx9/26/202425列写微分方程根据牛顿第二定律9/26/202426利用积分模块构建Simulink模型e6_4.mdl,e6_4m.m9/26/202427③非线性连续时间系统I—典型非线性模块的应用具有饱和非线性特性的控制系统如图所示,通过仿真研究K=15和K=5时系统的运动e6_satur.mdlK/s(0.1s+1)(0.2s+1)1k=29/26/202428④非线性连续时间系统II—任意函数模块及其应用Fcn模块MATLABFcn模块Look-uptable模块9/26/202429Fcn模块位于UserDefineFunction模块组中;Expression必须填写函数表达式,遵循以下规则:模块的输入可以是标量或向量,但输出必须是标量,标量输入用u作为变量名,向量输入用u(1),u(2)等向量作为元素名表达式符合C语言格式,执行的是标量运算,计算结果就是模块的输出表达式中引用的其它标量形式的参量必须存在于MATLAB工作空间中P157,例6-16,e6_18.mdl9/26/202430MATLABFcn模块位于UserDefineFunction模块组中;MATLABFcn填写函数表达式或函数文件名,遵循以下规则:模块的输入输出都可以是标量或向量;表达式的书写规则与Fcn模块相同,函数编写符合M函数文件基本结构及规则表达式或函数的输出必须与该模块的输出维数匹配,否则就会出现错误。9/26/202431lookuptable模块位于查表模块组中;有1维,2维,n维之分;可根据所给表格对输入进行插补或外推运算9/26/202432例:将上一个例子的饱和非线性用MATLABFcn函数模块实现编写bh.m文件并存放在与e6_9.mdl相同目录下,将该目录设置为当前路径9/26/202433例:汽车速度控制系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论