资源描述:
《simulink动态系统建模仿真 第8章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章使用命令行仿真8.1通过命令行仿真8.2模型线性化8.3寻找平衡点8.4编写模型和模块的回调函数8.1通过命令行仿真对于Simulink中的模型,如果不想在ConfigurationParameters对话框内指定仿真算法和仿真参数,用户还可以在MATLABCommandWindow窗口内键入仿真命令,直接设置仿真参数来运行仿真,或者通过编写并运行一个脚本来运行仿真,这样就可以重复运行仿真,而不需要一次又一次地启动仿真模型。而且,如果用户想要改变模型中的参数并比较因参数的改变而产生的不同结果,那么通过一个for循环来自动修改参数就非常方便了。除此之外,命令行仿真在对系统施加
2、不同的输入、比较不同系统的结果差异、加快仿真速度方面也具有优势。因此,利用命令行进行仿真具有以下特点:自动重复运行仿真; 自动调整参数; 分析和比较不同输入下的响应; 快速仿真。 在命令行中可以用sim、simset和set_param等命令控制模型仿真的执行。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);在这个命令中,只有mode
3、l变量是必须输入的,它是模型的名称。其他的变量如果不指定,则也可以在ConfigurationParameters对话框内设置,用户可以把这些变量指定为空矩阵([])。对于未指定的变量及指定为空矩阵的变量,sim命令会使用缺省值仿真,缺省值就是由Simulink为模型指定的参数值。如果用sim命令指定了这些变量值,则这些数值会替代模型中的参数值。sim命令返回三个输出参数,它们是时间t、状态x和输出y。输出通过模型最顶层的Outport模块得到,如果模型的最顶层没有Outport模块,则输出向量为空;如果有多个输出端口,则用户可以选择将输出保存在不同的变量中。 此外,如果想要
4、仿真一个连续系统,则必须用simset命令指定算法参数,对于纯离散系统模型,算法的缺省值为VariableStepDiscrete。2.参数说明3.示例 例8-1输入和输出端口。要求在MATLAB工作区中生成一个10秒的正弦波信号,并利用Simulink对其积分,然后用MATLAB绘制出原始信号和仿真结果曲线。 首先,用一个Inport模块、一个Outport模块和一个Integrator模块建立系统,需要注意的是,Inport和Outport模块都是纯虚模块,仅起到将信号传入或传出子系统的作用,当在最顶层的系统中使用这两个模块时,可以通过它们将结果记录到MATLAB工作
5、区中,如图8-1所示。图8-1定义模型的名称为in_out,选择模型窗口中Simulation菜单下的ConfigurationParameters命令,在打开的ConfigurationParameters对话框中选择DataImport/Export选项,在右侧的Loadfromworkspace选项区中选择Input复选项,并定义外部输入变量的名称为sim_input;在Savetoworkspace选项区中选择Time复选项,定义输出时间变量的名为称tout,选择Output复选项,定义输出变量的名称为yout,如图8-2所示。图8-2图8-3在MATLAB命令行中输入下
6、列命令来仿真模型in_out:>>t=0:0.1:10;u=sin(t);>>sim_input=[t',u'];>>sim('in_out')%以缺省参数仿真模型>>plot(t,u,tout,yout,'--')在MATLAB图形窗口中绘制出的曲线如图8-3所示。 下面分别说明使用sim命令仿真模型时的参数设置方式。(1)命令行仿真——时间设置。sim命令中的第二个可选参数timespan为时间,它指定了仿真的起始时间和终止时间。其具体设置方式如下:tFinal:指定终止时间,起始时间为0;[tStarttFinal]:指定起始时间和终止时间;[tStartOutputT
7、imestFinal]:指定起始时间和终止时间,以及在t时刻返回的时间点数。通常,t包括较多的时间点,OutputTimes等于ConfigurationParameters对话框中Outputoptions选项中选择的Produceadditionaloutput数。对于单速率离散系统,OutputTimes指定的附加输出点数必须是基本采样步长的整数倍,因此这样的系统必须用表达式的形式指定附加输出点:Ts*[整数向量],这里Ts是基本采样步长,但不能使用如下形式的表达式:0:T