您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > simulink动态系统建模仿真 第8章
第8章使用命令行仿真第8章使用命令行仿真8.1通过命令行仿真8.2模型线性化8.3寻找平衡点8.4编写模型和模块的回调函数第8章使用命令行仿真8.1通过命令行仿真对于Simulink中的模型,如果不想在ConfigurationParameters对话框内指定仿真算法和仿真参数,用户还可以在MATLABCommandWindow窗口内键入仿真命令,直接设置仿真参数来运行仿真,或者通过编写并运行一个脚本来运行仿真,这样就可以重复运行仿真,而不需要一次又一次地启动仿真模型。而且,如果用户想要改变模型中的参数并比较因参数的改变而产生的不同结果,那么通过一个for循环来自动修改参数就非常方便了。除此之外,命令行仿真在对系统施加不同的输入、比较不同系统的结果差异、加快仿真速度方面也具有优势。因此,利用命令行进行仿真具有以下特点:第8章使用命令行仿真自动重复运行仿真;自动调整参数;分析和比较不同输入下的响应;快速仿真。在命令行中可以用sim、simset和set_param等命令控制模型仿真的执行。第8章使用命令行仿真8.1.1基本命令行语法——sim命令1.命令描述sim命令用来仿真动态系统。sim命令的完整语法结构如下:[t,x,y]=sim(model,timespan,options,ut);[t,x,y1,y2,…,yn]=sim(model,timespan,options,ut);第8章使用命令行仿真在这个命令中,只有model变量是必须输入的,它是模型的名称。其他的变量如果不指定,则也可以在ConfigurationParameters对话框内设置,用户可以把这些变量指定为空矩阵([])。对于未指定的变量及指定为空矩阵的变量,sim命令会使用缺省值仿真,缺省值就是由Simulink为模型指定的参数值。如果用sim命令指定了这些变量值,则这些数值会替代模型中的参数值。第8章使用命令行仿真sim命令返回三个输出参数,它们是时间t、状态x和输出y。输出通过模型最顶层的Outport模块得到,如果模型的最顶层没有Outport模块,则输出向量为空;如果有多个输出端口,则用户可以选择将输出保存在不同的变量中。此外,如果想要仿真一个连续系统,则必须用simset命令指定算法参数,对于纯离散系统模型,算法的缺省值为VariableStepDiscrete。第8章使用命令行仿真2.参数说明表8-1sim命令中各变量的说明变量说明t返回仿真的时间向量x返回仿真的状态矩阵,该矩阵由连续状态和离散状态组成y返回仿真的输出矩阵,每一列按端口序列顺序指定Outport模块的输出,如果任一个Outport模块都有一个向量输入,则其输出矩阵也会有适当的列数y1,y2,…,yn模型中有n个Outport模块,每个yi返回对应Outport模块的输出model模型方块图的名称timespan仿真的起始时间和终止时间options可选择的仿真参数,它是一个结构,指定包括算法名称和误差容限在内的其他仿真参数。这个变量可以用simset命令中的options结构定义ut在最顶层模型中与Inport模块连接的外部输入,ut可以是用字符串表示的MATLAB函数,该函数会在每个仿真时间步上指定u=UT(t)第8章使用命令行仿真3.示例例8-1输入和输出端口。要求在MATLAB工作区中生成一个10秒的正弦波信号,并利用Simulink对其积分,然后用MATLAB绘制出原始信号和仿真结果曲线。首先,用一个Inport模块、一个Outport模块和一个Integrator模块建立系统,需要注意的是,Inport和Outport模块都是纯虚模块,仅起到将信号传入或传出子系统的作用,当在最顶层的系统中使用这两个模块时,可以通过它们将结果记录到MATLAB工作区中,如图8-1所示。第8章使用命令行仿真图8-1第8章使用命令行仿真定义模型的名称为in_out,选择模型窗口中Simulation菜单下的ConfigurationParameters命令,在打开的ConfigurationParameters对话框中选择DataImport/Export选项,在右侧的Loadfromworkspace选项区中选择Input复选项,并定义外部输入变量的名称为sim_input;在Savetoworkspace选项区中选择Time复选项,定义输出时间变量的名为称tout,选择Output复选项,定义输出变量的名称为yout,如图8-2所示。第8章使用命令行仿真图8-2第8章使用命令行仿真图8-3第8章使用命令行仿真在MATLAB命令行中输入下列命令来仿真模型in_out:t=0:0.1:10;u=sin(t);sim_input=[t',u'];sim('in_out')%以缺省参数仿真模型plot(t,u,tout,yout,'--')第8章使用命令行仿真在MATLAB图形窗口中绘制出的曲线如图8-3所示。下面分别说明使用sim命令仿真模型时的参数设置方式。(1)命令行仿真——时间设置。sim命令中的第二个可选参数timespan为时间,它指定了仿真的起始时间和终止时间。其具体设置方式如下:tFinal:指定终止时间,起始时间为0;[tStarttFinal]:指定起始时间和终止时间;第8章使用命令行仿真[tStartOutputTimestFinal]:指定起始时间和终止时间,以及在t时刻返回的时间点数。通常,t包括较多的时间点,OutputTimes等于ConfigurationParameters对话框中Outputoptions选项中选择的Produceadditionaloutput数。对于单速率离散系统,OutputTimes指定的附加输出点数必须是基本采样步长的整数倍,因此这样的系统必须用表达式的形式指定附加输出点:Ts*[整数向量],这里Ts是基本采样步长,但不能使用如下形式的表达式:0:Ts:N*Ts。第8章使用命令行仿真下面的命令是以不同的时间参数设置方式仿真in_out模型:[t,x,y]=sim('in_out',5);%仿真模型5秒[t,x,y]=sim('in_out',[1035]);%仿真模型从10秒到35秒[t,x,y]=sim('in_out',0:4);%仿真模型4秒,每隔1秒输出一次第8章使用命令行仿真(2)命令行仿真——输入设置。sim命令中的变量ut用来为系统提供一个外部输入,此时需要在系统的最顶层包含一个Inport输入模块。可以用in_out模型例程中的方式定义模型的输入信号,也就是用第一列代表时间,第二列对应于不同输入时间的输入信号值。但是,如果信号中存在陡沿,则应在相同的时刻定义两次输入值。例如,假设有一个方波扰动信号,可以输入:ut=[01;101;10–1;20–1;201;301;30–1;40–1;401;501];sim('in_out',50,[],ut);用plot(ut(:,1),ut(:,2))命令绘制的输入信号曲线如图8-4所示;用plot(ut(:,1),ut(:,2),tout,yout,'--')命令绘制的输入和输出曲线如图8-5所示。第8章使用命令行仿真图8-4第8章使用命令行仿真图8-5第8章使用命令行仿真例8-2蹦极的安全性。假设,当我们使用给定的参数仿真蹦极系统时,身体有可能撞到地面上。现在我们想选择一个安全的绳索,编写一个脚本来尝试不同的弹性常数,得到保证90公斤重的身体安全的最小弹性常数值。首先,在蹦极模型中添加一个Outport模块,如图8-6所示,将模型文件保存为bungee_cmd;然后编写一个脚本文件用来试验不同的k值,当距地面的距离为正时停止仿真。脚本文件bungeescript如下:第8章使用命令行仿真fork=1:50;[t,x,y]=sim('bungee_cmd');ifmin(y)0breakendenddisp(['Theminimumsafekis:',num2str(k)])第8章使用命令行仿真图8-6第8章使用命令行仿真在MATLAB命令行运行脚本文件后,结果为:Theminimumsafekis:37。例8-3控制器的调节。打开控制器模型,修改控制器,将比例增益作为MATLAB工作区中的一个变量,编写一个脚本文件,试验不同比例增益的不同值(0,5,10,15,20,25)对输入的影响,并将结果利用不同的子图绘制在同一个图形窗口中。首先将模型中的比例增益模块的值改为P,在模型的最顶层加入一个Outport模块,如图8-7所示。第8章使用命令行仿真图8-7第8章使用命令行仿真在脚本文件中编写一个for循环以改变P值,从0到25间隔为5。在同一个坐标上画图时,使用holdon命令来保留原有的曲线运动,或者在使用子图时通过P值得到子图序号。脚本文件cruisescript如下:forP=0:5:25[t,x,y]=sim('cruise_command');subplot(3,2,P/5+1)plot(t,y)ylabel(['P=',num2str(P)])end第8章使用命令行仿真图8-8第8章使用命令行仿真8.1.2设置仿真参数——simset命令用户可以用不同的仿真选项进行仿真,这些选项就是在ConfigurationParameters对话框中各选项页内定义的参数。如果要使用sim命令在MATLAB工作区中运行模型,则可以用simset命令来指定仿真模型时的仿真选项。需要注意的是,模型的名称不能作为simset的参数,换言之,即使在simset命令中指定模型的名称,模型也不会受到影响。第8章使用命令行仿真1.命令描述simset命令用来为sim命令创建或编辑仿真参数和算法属性,这个命令的语法结构如下:options=simset(param,value,…);options=simset(old_opstruct,param,value,…);options=simset(old_opstruct,new_opstruct);simset第8章使用命令行仿真simset命令可创建并返回sim命令中options参数要求的结构,这个结构指定了由sim命令执行仿真时需要的仿真参数值,而且这个结构中设置的参数值也只适用于由sim命令执行的模型仿真。用户利用模型窗口中ConfigurationParameters对话框或set_param命令设置的仿真参数是不变值,但这个结构中的参数值可以取代这些不变值。第8章使用命令行仿真在simset命令中,用户可以成对输入参数值,例如,'Debug','on'。仿真参数和算法属性都可以有指定的值,所有未指定的参数和属性均使用缺省值。若要唯一地标识命令中的参数或属性,则可以用前导字符。此外,参数或属性名称不分大小写。options=simset(param,value,…)命令用于返回一个结构,结构中包含为参数设置的参数值,未指定数值的参数使用缺省值。options=simset(old_opstruct,param,value,…)命令用于修改原有的old_opstruct结构中的参数值。用户可以使用这个命令形式替换原来模型中已设置的仿真参数值,可以先用simget命令获得模型中的设置值,然后利用simset命令更改指定参数的参数值。第8章使用命令行仿真options=simset(old_opstruct,new_opstruct)命令用于把两个已存在的结构—old_opstruct和new_opstruct结合到options结构中,在new_opstruct中定义的任何属性都会覆盖old_opstruct中定义的同名属性。不带有输入变量的simset命令可以显示simset命令指定的所有参数名及其参数值,用户不能用get_param和set_param命令获得或设置这些属性和参数的值。如果在simset命令中同一个参数被设置了两次,那么最后设置的参数值有效。例如,simset
本文标题:simulink动态系统建模仿真 第8章
链接地址:https://www.777doc.com/doc-3194675 .html