欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    命令行仿真技术.ppt

    • 资源ID:6409990       资源大小:5.33MB        全文页数:128页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    命令行仿真技术.ppt

    第8章 Simulink命令行仿真技术,8.1 使用命令行方式建立系统模型8.2 回顾与复习:Simulink与MATLAB的接口 8.3 使用命令行方式进行动态系统仿真8.4 使用MATLAB脚本分析动态系统8.5 其 它 内 容,8.1 使用命令行方式建立系统模型,除了使用Simulink的图形建模方式建立动态系统模型之外,用户也可以使用命令行方式进行系统建模,然后再进行动态系统的仿真与分析。在进一步介绍使用命令行进行动态系统的仿真技术之前,首先简单介绍一下使用命令行的方式建立系统模型的相关知识。Simulink中建立系统模型的命令如表8.1所示。,表8.1 系统模型建立命令,使用上面的命令便可以生成和编辑动态系统的Simulink模型,由于使用命令行方式建立的Simulink系统模型与使用图形建模方式建立的系统模型没有什么大的分别,因此这里仅简单介绍各个命令的使用,而不再给出使用这些命令所建立的系统模型框图。1.new_system 1)使用语法 new_system(sys),2)功能描述 使用给定的名称建立一个新的Simulink系统模型。如果sys为一个路径,则新建立的系统为在此路径中指定的系统模型下的一个子系统。注意,new_system命令并不打开系统模型窗口。3)举例new_system(mysys)%建立名为mysys的系统模型new_system(vdp/mysys)%建立系统模型vdp下的子系统mysys,2.open_system 1)使用语法open_system(sys)open_system(blk)open_system(blk,force)2)功能描述 打开一个已存在的Simulink系统模型。,open_system(sys):打开名为sys的系统模型窗口或子系统模型窗口。注意,这里sys使用的是MATLAB中标准路径名(绝对路径名或相对于已经打开的系统模型的相对路径名)。open_system(blk):打开与指定模块blk相关的对话框。open_system(blk,force):打开封装后的子系统,这里blk为封装子系统模块的路径名。这个命令与图形建模方式中的Look under mask菜单功能一致。,3)举例open_system(controller)%打开名为controller的系统模型open_system(controller/Gain)%打开controller模型下的增益模块Gain的对话框 3.save_system 1)使用语法save_system save_system(sys)save_system(sys,newname),2)功能描述 保存一个Simulink系统模型。save_system:使用当前名称保存当前顶层的系统模型。save_system(sys):保存已经打开的系统模型,与save_system功能类似。save_system(sys,newname):使用新的名称newname保存当前已经打开的系统模型。,3)举例save_system%保存当前的系统模型save_system(vdp)%保存系统模型vdpsave_system(vdp,myvdp)%保存系统模型vdp,模型文件名为myvdp,4.close_system,bdclose 1)使用语法close_systemclose_system(sys)close_system(sys,saveflag)close_system(sys,newname)close_system(blk)bdclose;bdclose(sys);bdclose(all),2)功能描述关闭一个Simulink系统模型。close_system:关闭当前系统或子系统模型窗口。如果顶层系统模型被改变,系统会提示是否保存系统模型。close_system(sys):关闭指定的系统或子系统模型窗口。close_system(sys,saveflag):关闭指定的顶层系统模型窗口并且从内存中清除。saveflag为0表示不保存系统模型,为1表示使用当前名称保存系统模型。,3)举例close_system%关闭当前系统close_system(engine,1)%保存当前系统模型engine(使用当前系统名称),然后再关闭系统close_system(engine/Combustion/Unit Delay)%关闭系统模型engine下的Combustion 子系统中Unit Delay模块的对话框,5.find_system 1)使用语法 find_system(sys,c1,cv1,c2,cv2,.p1,v1,p2,v2,.)2)功能描述 查找由sys指定的系统模型、模块、连线及注释等等,并返回相应的路径名与操作句柄。由于使用此命令涉及较多的参数设置,因此这里不再赘述,用户可以查看Simulink的联机帮助系统中Simulink目录下的Using SimulinkModel Construction CommandsIntroduction中的find_system命令的帮助即可。,6.add_block1)使用语法add_block(src,dest)add_block(src,dest,parameter1,value1,.)2)功能描述在系统模型中加入指定模块。add_block(src,dest):拷贝模块src为dest(使用路径名表示),从而可以从Simulink的模块库中复制模块至指定系统模型中,且模块dest参数与src完全一致。add_block(src,dest_obj,parameter1,value1,.):功能与上述命令类似,但是需要设置给定模块的参数parameter1,value1为参数值。,3)举例add_block(simulink3/Sinks/Scope,engine/timing/Scope1)%从Simulink的模块库Sinks中复制Scope模块至系统模型engine中子系统timing中,其名称%为Scope17.delete_block1)使用语法delete_block(blk)2)功能描述从系统模型中删除指定模块。delete_block(blk):从系统模型中删除指定的系统模块blk。3)举例delete_block(vdp/Out1)%从vdp模型中删除模块Out1,8.replace_block 1)使用语法replace_block(sys,blk1,blk2,noprompt)replace_block(sys,Parameter,value,blk,.)2)功能描述 替代系统模型中的指定模块。replace_block(sys,blk1,blk2):在系统模型sys使用模块blk2取代所有的模块blk1。如果blk2为Simulink的内置模块,则只需要给出模块的名称即可,如果为其它的模块,必须给出所有的参数。如果省略noprompt,Simulink会显示取代模块对话框。,replace_block(sys,Parameter,value,.,blk):取代模型sys中具有特定取值的所有模块blk。Parameter为模块参数,value为模块参数取值。3)举例 replace_block(vdp,Gain,Integrator,noprompt)%使用积分模块Integrator取代系统模型vdp中所有的增益模块Gain,并且不显示取代对话框,9.add_line、delete_line 1)使用语法 h=add_line(sys,oport,iport)h=add_line(sys,oport,iport,autorouting,on)delete_line(sys,oport,iport)2)功能描述 在系统模型中加入或删除指定连线。add_line(sys,oport,iport):在系统模型sys中给定模块的输出端口与指定模块的输入端口之间加入直线。oport与iport分别为输出端口与输入端口(包括模块的名称、模块端口编号)。,add_line(sys,oport,iport,autorouting,on):与add_line(sys,oport,iport)命令类似,只是加入的连线方式可以由autorouting的状态控制:on表示连线环绕模块,而off表示连线为直线(缺省状态)。delete_line(sys,oport,iport):删除由给定模块的输出端口oport至指定模块的输入端口iport之间的连线。,3)举例add_line(mymodel,Sine Wave/1,Mux/1)%在系统模型mymodel中加入由正弦模块Sine Wave的输出至信号组合模块Mux第一个输入间%的连线delete_line(mymodel,Sine Wave/1,Mux/1)%删除系统模型mymodel中由正弦模块Sine Wave的输出至信号组合模块Mux第一个输入间的%连线,10.set_param和get_param 1)使用语法set_param(obj,parameter1,value1,parameter2,value2,.)get_param(obj,parameter)get_param(objects,parameter)get_param(handle,parameter)get_param(0,parameter)get_param(obj,ObjectParameters)get_param(obj,DialogParameters),2)功能描述 设置与获得系统模型以及模块参数。set_param(obj,parameter1,value1,parameter2,value2,.):其中obj表示系统模型或其中的系统模块的路径,或者取值为0;给指定的参数设置合适的值,取值为0表示给指定的参数设置为缺省值。在仿真过程中,使用此命令可以在MATLAB的工作空间中改变这些参数的取值,从而可以更新系统在不同的参数下运行仿真。,get_param(obj,parameter):返回指定参数取值。其中obj为系统模型或系统模型中的系统模块。get_param(objects,parameter):返回多个模块指定参数的取值,其中 objects 表示模块的细胞矩阵(Cell)。get_param(handle,parameter):返回句柄值为handle的对象的指定参数的取值。get_param(0,parameter):返回Simulink当前的仿真参数或默认模型、模块的指定参数的取值。,get_param(obj,ObjectParameters):返回描述某一对象参数取值的结构体。其中返回到结构体中具有相应的参数名称的每一个参数域分别包括参数名称(如Gain)、数据类型,如string以及参数属性如read-only等。get_param(obj,DialogParameters):返回指定模块对话框中所包含的参数名称的细胞矩阵。由于参数选项很多,这里不再赘述,读者可以参考Simulink帮助中的Model and BlockParameters中的详细介绍。,3)举例set_param(vdp,Solver,ode15s,StopTime,3000)%设置系统模型vdp的求解器为ode15s,仿真结%束时间为3000 sset_param(vdp/Mu,Gain,1000)%设置系统模型vdp中模块Mu中的增益模块Gain的取值为1000set_param(vdp/Fcn,Position,50 100 110 120)%设置系统模型vdp中的Fcn模块的位置为,set_param(mymodel/Zero-Pole,Zeros,2 4,Poles,1 2 3)%设置系统模型mymodel中零极点模块Zero-Pole的零点Zeros取值为2 4,而极点Poles取值为%1 2 3get_param(Mysys/Subsys/Inertia,Gain)%获得系统模型Mysys中子系统Subsys中的Inertia模块的增益值。其结果如下(假设此系统模型%以存在)ans=,1.0000e-006p=get_param(untitled/Sine Wave,DialogParameters)%获得系统模型untitled下正弦信号模块Sine Wave的参数设置对话框中所包含的参数名称,%结果如下p=Amplitude FrequencyPhaseSampleTime,11.gcb、gcs以及gcbh1)使用语法gcbgcb(sys)gcsgcbhbdrootbdroot(obj),2)功能描述gcb:返回当前系统模型中当前模块的路径名。gcb(sys):返回指定系统模型中当前模块的路径名。gcs:获得当前系统模型的路径名。gcbh:返回当前系统模型中当前模块的操作句柄。bdroot:返回顶层系统模型的名称。bdroot(obj):返回包含指定对象名称的顶层系统的名称,其中obj为系统或模块的路径名。,12.simulink 1)使用语法 simulink 2)功能描述 打开Simulink的模块库浏览器。使用命令行方式建立的动态系统模型与使用Simulink图形建模方式所建立的系统模型完全一致,然而,仅仅使用命令行方式建立系统模型是一件麻烦且低效的方法。,8.2 回顾与复习:Simulink与 MATLAB的接口,先建立一个非常简单的动态系统,其功能如下:(1)系统的输入为一单位幅值、单位频率的正弦信号。(2)系统的输出信号为输入信号的积分。其要求是:(1)系统的输入信号由MATLAB工作空间中的变量提供,时间范围为0至10 s。(2)使用MATLAB绘制原始输入信号与系统运算结果的曲线。,从动态系统的功能与其要求可知,建立此动态系统的模型需要以下一些模块:(1)Sources模块库中的In1模块:表示系统的输入。(2)Sinks模块库中的Out1模块:表示系统的输出。(3)Continuous模块库中的Integrator模块:积分运算器。其中In1(Inport)模块与Out1(Outport)模块都是虚模块,它们仅仅表示将信号传入或传出子系统。,图8.1 简单动态系统模型框图,图8.2 Workspace I/O 设置,然后在MATLAB工作空间中定义输入变量sim_input如下:t=0:0.1:10;%表示输入信号的时间范围 u=sin(t);%产生输入正弦信号 sim_input=t,u;%传递至Simulink系统模型的变量接下来,采用默认的系统仿真参数并运行系统仿真。最后使用MATLAB命令绘制出原始输入信号与系统运算结果,如下所示:plot(t,u,tout,yout,-)%绘制系统输入信号与仿真结果,如图8.3所示.,图8.3 系统原始输入与运算结果曲线,8.3 使用命令行方式进行动态系统仿真,8.3.1 使用sim命令进行动态系统仿真 1.使用语法 t,x,y=sim(model,timespan,options,ut)t,x,y1,y2,.,yn=sim(model,timespan,options,ut);以上是完整的语法格式,实际使用中可以省略其中的某些参数设置而采用默认参数进行仿真。,2.功能描述 对指定的系统模型按照给定的仿真参数与模型参数进行系统仿真。仿真所使用的参数包括所有使用仿真参数对话框的设置、MATLAB工作空间的输入输出选项卡中的设置以及采用命令行方式设置的仿真参数与系统模块参数。,除参数model外,其它的仿真参数设置均可以取值为空矩阵,此时sim命令对没有设置的仿真参数使用默认的参数值进行仿真。默认的参数值由系统模型框图所决定。用户可以使用sim命令的options参数对可选参数进行设置,这样设置的仿真参数将覆盖模型默认的参数。如果用户对连续系统进行仿真,必须设置合适的仿真求解器,因为默认的仿真求解器为变步长离散求解器(Variable Step Discrete Solver)。可以使用simset命令进行设置(后面将简单介绍simset命令的使用)。,3.参数说明(1)model:需要进行仿真的系统模型框图名称。(2)timespan:系统仿真时间范围(起始时间至终止时间),可以为如下的形式:tFinal:设置仿真终止时间。仿真起始时间默认为0。tStart tFinal:设置仿真起始时间(tStart)与终止时间(tFinal)。tStart OutputTimes tFinal:设置仿真起始时间(tStart)与终止时间(tFinal),并且设置仿真返回的时间向量tStart OutputTimes tFinal,其中tStart、OutputTimes、tFinal必须按照升序排列。,(3)options:由simset命令所设置的除仿真时间外的仿真参数(为一结构体变量)。(4)ut:表示系统模型顶层的外部可选输入。ut可以是MATLAB函数。可以使用多个外部输入ut1、ut2。(5)t:返回系统仿真时间向量。(6)x:返回系统仿真状态变量矩阵。首先是连续状态,然后是离散状态。(7)y:返回系统仿真的输出矩阵。按照顶层输出Outport模块的顺序输出,如果输出信号为向量输出,则输出信号具有与此向量相同的维数。(8)y1,.,yn:返回多个系统仿真的输出。,8.3.2 举例之一:简单仿真 在8.2节中以动态系统command_in_out为例,对Simulink与MATLAB接口设计作了简单的回顾与复习。Simulink系统模型的输入信号为MATLAB工作空间中的变量,同时仿真结果也被输出到MATLAB工作空间中。但在进行系统仿真时,并没有使用命令行方式。实际上用户也可以使用命令行方式对此系统模型进行仿真,在仿真之前,首先使用仿真参数设置对话框设置参数。然后在MATLAB命令窗口中键入如下命令进行系统模型的仿真,并绘制此系统的输入信号与仿真结果:,t=0:0.1:10;u=sin(t);sim_input=t,u;tout,x,yout=sim(command_in_out);%使用命令行sim进行系统仿真,仿真参数采用与8.2节中相同的仿真参数 plot(t,u,tout,yout,-),在对动态系统command_in_out进行仿真时,必须先打开此系统模型并且设置合适的仿真参数。sim命令的参数为模型的名称(由不带扩展名.mdl的系统模型文件名构成)。为突出sim命令的作用,这里仍使用Simulink的仿真参数设置对话框对仿真参数设置,至于使用simset命令设置仿真参数将在后面进行介绍。使用sim命令进行系统仿真前后MATLAB工作空间中的变量列表如图8.4所示。,图8.4中左侧为使用sim命令进行仿真之前的MATLAB工作空间变量列表(其中sim_input为系统模型的输入信号、t为输入信号的时间范围、u为输入信号的取值);右侧为使用sim命令进行仿真之后的工作空间变量列表(其中tout为输出时间变量、x为输出系统状态变量、yout为系统运算结果;如果在系统模型的顶层没有Outport模块,则输出yout为空)。从图中可以明显看出,动态系统的仿真结果(包括输出时间向量、系统状态与运算结果)被输出到了MATLAB工作空间中。此外,由plot所绘制的图形也与8.2节中的绘制结果完全一致,这里不再给出。,图8.4 系统仿真前后MATLAB工作空间变量列表,8.3.3举例之二:仿真时间设置 在前面已经对sim命令中的仿真时间参数timespan设置做了介绍。timespan具有三种使用形式,根据不同动态系统仿真的不同要求,用户可以选择使用如下所示的不同形式进行系统仿真:t,x,y=sim(model,tFinal)t,x,y=sim(model,tStart tFinal)t,x,y=sim(model,tStart outputTimes tFinal),仍以前面的动态系统command_in_out为例说明使用命令行方式时如何对系统仿真时间进行设置。首先打开系统模型command_in_out,然后仍然使用Simulink仿真参数设置对话框对系统的仿真参数进行设置,其设置与8.2节中所使用的参数完全一致。为了使用户对使用命令行方式设置系统仿真时间范围有一个直观的了解,这里使用四组不同的仿真时间对此系统进行仿真,并绘制系统输入信号与系统运算结果关系图以作比较。在MATLAB命令窗口中运行如下的命令:,t=0:0.1:10;u=sin(t);sim_input=t,u;tout1,x1,yout1=sim(command_in_out,5);%系统仿真时间范围为0至5 s,输出时间向量tout1由Simulink的求解器步长变化决定 tout2,x2,yout2=sim(command_in_out,1 8);%系统仿真时间范围为1至8 s,输出时间向量tout1同样由Simulink的求解器步长变化决定 tout3,x3,yout3=sim(command_in_out,1:8);,%系统仿真时间范围为1至8 s,并且每隔1 s输出一次,即输出时间变量为%1 2 3 4 5 6 7 8 tout4,x4,yout4=sim(command_in_out,1:0.2:8);%系统仿真时间范围为1至8 s,并且每隔0.2 s输出一次,即输出时间变量为%1 1.2%1.4 7.6 7.8 8 subplot(2,2,1)plot(t,u,tout1,yout1,.);subplot(2,2,2),plot(t,u,tout2,yout2,.);subplot(2,2,3)plot(t,u,tout3,yout3,.);subplot(2,2,4)plot(t,u,tout4,yout4,.);%在同一幅图中绘制系统command_in_out的输入信号以及在不同仿真时间范围上的系统运算结%果,其结果如图8.5所示,图8.5 在不同仿真时间设置下的系统仿真结果比较,图8.6 系统仿真返回的时间向量输出,8.3.4 举例之三:外部输入变量设置 前面对动态系统command_in_out进行仿真时,通过设置Simulink仿真参数设置对话框中Workspace I/O中的外部变量输入,以使系统在仿真过程中从MATLAB的工作空间中获取输入信号sim_input。除了使用这种方法从MATLAB工作空间中获得系统输入信号之外,用户还可以通过使用sim命令中的ut参数来设置系统的外部输入信号。下面介绍如何使用ut参数设置外部输入信号。,1.ut参数的生成 用户可以使用命令 t,x,y=sim(model,timespan,options,ut)对动态系统进行仿真并且从MATLAB工作空间中输入变量。其中ut为一个具有两列的矩阵,第一列表示外部输入信号的时刻,第二列表示与给定时刻相应的信号取值。使用矩阵ut能够为系统模型最顶层的Inport模块提供外部输入,并将自动覆盖Simulink仿真参数设置对话框中Workspace I/O中的设置。此外,当输入信号中存在着陡沿边缘时,必须在同一时刻处定义不同的信号取值。例如,对于图8.7所示的一个类似于方波的信号。产生此输入信号的MATLAB命令为ut=0 1;10 1;10-1;20-1;20 1;30 1;30-1;40-1;40 1;50 1,2.应用举例 仍以动态系统command_in_out为例说明如何使用sim命令的参数ut从MATLAB工作空间中获得输入信号。在MATLAB命令窗口中键入如下的命令:t=0:0.1:10;u=sin(t);sim_input=t,u;tout1,x1,yout1=sim(command_in_out,10);%使用Simulink仿真参数对话框中的Workspace I/O从MATLAB工作空间中获得输入信号u=cos(t);,ut=t,u;%改变系统输入信号tout2,x2,yout2=sim(command_in_out,10,ut);%使用sim命令的ut参数获得系统输入信号,ut的使用会覆盖由Workspace I/O的系统输入设置,%这一点可以在下面的系统仿真结果图形中反映出来subplot(1,2,1);plot(tout1,yout1);subplot(1,2,2);plot(tout2,yout2);%绘制系统在不同输入信号下的响应曲线,如图8.8所示,图8.7 类方波信号,图8.8 系统在不同输入下的响应曲线,8.3.5 simset与simget命令的使用 前面介绍使用sim命令进行动态系统仿真时,除了对系统仿真时间与系统输入的设置之外,其它所有的仿真参数均是由Simulink的仿真参数设置对话框所设置的。用户也可以使用simset对系统仿真参数进行设置,然后再使用命令行方式对系统进行仿真分析,如下所示:t,x,y=sim(model,timespan,options,ut);,其中options为仿真选项结构体变量(不包括系统仿真时间),使用simset命令可以对此结构体变量进行设置。注意,这里所谓的仿真选项指的就是Simulink仿真参数设置对话框Simulation parameters中所设置的参数。为了使用户对options系统仿真选项有一个总体的了解,首先使用simget命令获得表示系统仿真参数的结构体变量,如下所示:options=simget(command_in_out)%获得已经打开的系统模型command_in_out的仿真参数选项options=,AbsTol:auto Debug:off Decimation:1 DstWorkspace:current FinalStateName:FixedStep:auto InitialState:InitialStep:auto MaxOrder:5 SaveFormat:Array MaxDataPoints:1000,MaxStep:auto MinStep:OutputPoints:all OutputVariables:ty Refine:1 RelTol:0.0010 Solver:ode45 SrcWorkspace:base Trace:ZeroCross:on,1.simset命令使用介绍 1)使用语法options=simset(property,value,.);options=simset(old_opstruct,property,value,.);options=simset(old_opstruct,new_opstruct);simset,2)功能描述 使用simset命令会产生一结构体变量options,此变量中的各个数据用来设置系统仿真参数。对于没有进行设置的系统仿真参数,Simulink会使用相应的缺省值。options=simset(property,value,.):设置指定的仿真参数选项值。其中property为指定的仿真参数,value为指定的取值。options=simset(old_opstruct,property,value,.):修改仿真参数结构体变量中已经存在的指定仿真参数选项。其中old_opstruct表示已经存在的结构体。,options=simset(old_opstruct,new_opstruct):合并已经存在的两个仿真参数结构体变量,并且使用new_opstruct中的域值覆盖old_opstruct中具有相同域名的域值。simset:显示所有的仿真参数选项及其可能的取值。,3)仿真参数选项介绍 使用simset命令可以设置除仿真时间外的所有系统仿真 参数选项,下面对最常用的仿真参数选项及其取值作一个简单的介绍。(1)AbsTol:取值为一标量,缺省值为1e6,表示绝对误差限。仅用于变步长求解器。(2)Decimation:取值为一正整数,缺省值为1,表示系统仿真结果返回数据点的间隔(值为1,表示每一仿真结果数据均返回到相应的变量中;值为2,表示仿真结果每隔一个数据点返回到相应的变量中,依次类推)。,(3)FixedStep:取值为正值标量,表示定步长求解器的步长。如果对离散系统进行仿真,其缺省取值为离散系统的采样时间;如果对连续系统进行仿真,其缺省取值为仿真时间范围的1/50。(4)InitialState:取值为一向量,缺省值为空向量,表示系统的初始状态。如果系统中同时存在连续状态与离散状态,则此向量中先是连续状态的初始值,然后是离散状态的初始值。初始状态的设置会覆盖系统模型中所默认的状态初始值。,(5)InitialStep:取值为一正标量,缺省值为auto,表示系统仿真时的初始步长(估计值),仅用于变步长求解器;在仿真时求解器首先使用估计的步长,缺省情况下由求解器决定初始仿真步长。(6)MaxStep:取值为一正值标量,缺省值为auto,表示系统仿真的最大步长。仅用于变步长求解器,缺省情况下最大仿真步长为仿真时间范围的1/50。,(7)RelTol:取值为一正值标量,缺省值为1e3,表示相对误差限。仅用于变步长求解器。(8)Solver:表示Simulink仿真求解器,其取值为如下由“|”隔开的字符串:VariableStepDiscrete|ode45|ode23|ode113|ode15s|ode23s|FixedStepDiscrete|ode5|ode4|ode3|ode2|ode1。在缺省值为变步长连续求解器,运算方法为ode45(Dormand-Prince)。,(9)ZeroCross:表示仿真过程中的过零检测,取值为on或off,缺省值为on。仅用于变步长求解器。on表示对系统的模块进行过零检测,off表示不进行过零检测。4)应用举例myoptionssimset(ZeroCross,off);%关闭系统仿真过零检测tout,x,yout=sim(command_in_out,10,myoptions);%使用myoptions仿真参数选项进行系统仿真,2.simget命令的使用介绍1)使用语法struct=simget(model)value=simget(model,property)value=simget(OptionStructure,property),2)功能描述simget命令用来获得指定系统模型的仿真参数设置。struct=simget(model):获得指定系统模型model的所有仿真参数设置结构体变量。value=simget(model,property):获得指定系统模型model中指定仿真参数property的取值。value=simget(OptionStructure,property):获得系统仿真长参数选项中指定的仿真参数的取值。,8.3.6 simplot命令的使用 在观测动态系统仿真结果时,Sinks模块库中的Scope模块是最常用的模块之一。它可以使用户在类似示波器的图形界面中观测系统仿真结果的输出,而非使用诸如plot绘制系统的输出。使用Scope最重要的优点是可以通过对Scope模块的操作,对系统输出进行方便的观测,这一点是plot等命令所不及的。在使用命令行方式对动态系统进行仿真时,可以使用simplot命令绘制与使用与Scope模块相类似的图形。下面介绍simplot命令的功能与使用。,1.使用语法 simplot(data);simplot(time,data);2.功能描述 simplot命令用来输出动态系统的仿真结果,且其输出图形与Scope模块的输出类似。3.参数说明 data:动态系统仿真结果的输出数据(一般由Outport模块、To Workspace模块等产生的输出)。其数据类型可以为矩阵、向量或是结构体等。time:动态系统仿真结果的输出时间向量。当系统输出数据为带有时间向量的结构体变量时,此参数被忽略。,4.举例 仍以前面的command_in_out为例说明simplot的使用(设系统仿真结果已经存在)。在MATLAB命令窗口中键入如下命令:simplot(tout2,yout2)%使用simplot绘制系统仿真结果,如图8.9所示,图8.9 使用simplot命令绘制系统仿真结果,8.4 使用MATLAB脚本分析动态系统,8.4.1 蹦极跳的安全性分析 在第5章中曾给出蹦极跳连续系统模型:其中为蹦极者的质量,为重力加速度,为物体的位置,与表示空气的阻力,而,图8.10 蹦极跳系统模型框图,下面使用命令行方式对此系统在不同的弹性常数下进行仿真分析,以求出符合安全要求的弹性绳索的最小弹性常数。编写MATLAB脚本文件bungee_jumping_cmd.m,求取最小弹性常数,程序如下所示:m=70;g=10;a1=1;%使用MATLAB工作空间中变量设置a2=1;%系统模型中模块的参数for k=20:50%在一定的范围内试验弹性常数,t,x,y=sim(bungee_jumping_command,0 100);%使用不同的弹性常数进行系统仿真 if min(y)0%如果仿真结果输出数据的最小值大于0,break;%则说明此弹性常数符合安全要求,跳出循环 endend,disp(The minimum safe k is:,num2str(k)%显示最小安全弹性常数dis=min(y);%求取蹦极者与地面之间的最小距离disp(The minimum distance between jumper and ground is:,num2str(dis)simplot(t,y)%绘制最小安全弹性常数下系统的仿真结果,在运行此MATLAB脚本文件求取最小安全弹性常数之前,必须正确设置蹦极者的初始位置与初始速度(用户可以参考第5章中相应的参数设置,这里不再赘述)。然后再运行此脚本文件,以求取最小安全弹性常数和在此弹性常数下蹦极者与地面之间的最小距离,并且显示在此弹性常数下的蹦极跳系统动态过程。其中最小安全弹性常数、蹦极者与地面之间的最小距离在MATLAB命令窗口中显示如下:The minimum safe k is:27The minimum distance between jumper and ground is:0.87934,在最小安全弹性常数为27的情况下,体重为70 kg的蹦极者与地面之间的最小距离不足1 m。图8.11所示为此系统的动态过程。,图8.11 最小安全弹性常数下的系统动态过程,8.4.2行驶控制系统中控制器的调节 第5章中的行驶控制系统给出了系统综合设计仿真的一个简单实例。汽车行驶控制系统的基本目的是控制汽车的速度变化,使汽车的速度在合适的时间之内加速到指定的速度。由第5章中的介绍可知,汽车行驶控制系统由如下三部分所构成:(1)速度操纵机构的位置变换器。(2)行驶控制器。(3)汽车动力系统。,其中最为重要的部分为行驶控制器,行驶控制器是一个典型的PID反馈控制器。现要求使用命令行方式对行驶控制系统中的行驶控制器中比例调节的性能进行定性的分析。已知行驶控制器中PID控制器的I(积分)、D(微分)参数如下取值分别为I=0.01、D=1。P(比例)的取值由MATLAB脚本文件所决定(以分析不同P值下行驶控制器的性能)。为了对行驶控制器中比例调节的性能进行定性的分析,需要对第5章的行驶控制系统模型做一些改变,如下所示:,(1)将行驶控制器子系统中的比例增益的取值改为p。(2)在系统模型的最顶层加入一个Outport模块输出仿真结果。图8.12所示为修改后的汽车行驶控制系统的系统模型框图。,图8.12 修改后的汽车行驶控制系统模型,然后编写MATLAB脚本文件cruise_system_cmd.m对行驶控制系统在不同的比例调节器取值下进行仿真,并绘制出不同取值下系统仿真结果以对比例调节性能进行分析。其要求如下:(1)编写一个for循环改变p的值,取值范围为0到25,间隔为5。(2)在同一幅图中作出不同p值下系统的仿

    注意事项

    本文(命令行仿真技术.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开