资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第五章 matlabsimulink下数学模型的建立,计算机仿真的一般过程,仿真问题和仿真目的描述,确定仿真方案,系统描述,建立系统数学模型,建立仿真数学模型,编写仿真程序,验证模型,是否符合要求,进行仿真研究,修改方案,修改模型,修改程序,是否符合要求,是否符合要求,是否符合要求,2,SIMULINK,是,MATLAB,软件的扩展,它是实现动态系统建模和仿真的一个软件包,其文件类型为,.mdl,,它与,MATLAB,语言的主要区别在于,其与用户交互接口是基于,Windows,的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。,所谓模型化图形输入是指,SIMULINK,提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以,.mdl,文件进行存取),进而进行仿真与分析。,SIMULINK,的最新版本是,SIMULINK4.0,(包含在,MATLAB6.0,以上版本),,MATLAB5.3,里的版本为,3.0,版,它们的变化不大。,一、什么是,SIMULINK,5.1 Simulink,模块库简介,3,二、,SIMULINK,的启动,1,、在,MATLAB,命令窗口中输入,simulink,结果是在桌面上出现一个称为,Simulink Library Browser,的窗口,在这个窗口中列出了按功能分类的各种模块的名称。,当然用户也可以通过,MATLAB,主窗口的快捷按钮来打开,Simulink Library Browser,窗口。,4,标题栏,菜单栏,5,SIMILINK,模块库简介:,Continuous,(连续模块),Discrete,(离散模块),Function&Tables,(函数和平台模块),Math,(数学模块),Nonlinear,(非线性模块),Signals&Systems,(信号和系统模块),Sinks,(接收器模块),Sources,(输入源模块),6,1,、连续模块(,Continuous,),continuous.mdl,Integrator,:输入信号积分,Derivative,:输入信号微分,State-Space,:线性状态空间系统模型,Transfer-Fcn,:线性传递函数模型,Zero-Pole,:以零极点表示的传递函数模型,Memory,:存储上一时刻的状态值,Transport Delay,:输入信号延时一个固定时间再输出,Variable Transport Delay,:输入信号延时一个可变时间再输出,7,大家应该也有点累了,稍作休息,大家有疑问的,可以询问和交流,8,2,、,Math,(数学模块),math.mdl,Sum,:加减运算,Product,:乘运算,Dot Product,:点乘运算,Gain,:比例运算,MinMax,:最值运算,Abs,:取绝对值,Sign,:符号函数,Math Function,:包括指数函数、对数函数、求平方、开根号等常用数学函数,Trigonometric Function,:三角函数,包括正弦、余弦、正切等,9,3,、,Sources,(,输入源模块),sources.mdl,Constant,:常数信号。,Clock,:时钟信号。,From Workspace,:来自,MATLAB,的工作空间。,From),:来自数据文件。,Pulse Generator,:脉冲发生器。,Repeating Sequence,:重复信号。,Signal Generator,:信号发生器,可以产生正弦、方波、锯齿波及随意波。,Sine Wave,:正弦波信号。,Step,:阶跃波信号。,10,4,、,Sinks,(,接收器模块),sinks.mdl,Scope,:示波器。,XY Graph,:显示二维图形。,To Workspace,:将输出写入,MATLAB,的工作空间。,To),:将输出写入数据文件。,11,5,、,Signal&Systems,(信号和系统模块),sigsys.mdl,In1,:输入端。,Out1,:输出端。,Mux,:将多个单一输入转化为一个复合输出。,Demux,:将一个复合输入转化为多个单一输出。,Ground,:连接到没有连接到的输入端。,Terminator,:连接到没有连接到的输出端。,SubSystem,:建立新的封装(,Mask,)功能模块,12,6.Logical Operator,:逻辑运算,Relational Operator,:关系运算,Complex to Magnitude-Angle,:由复数输入转为幅值和相角输出,Magnitude-Angle to Complex,:由幅值和相角输入合成复数输出,Complex to Real-Imag,:由复数输入转为实部和虚部输出,Real-Imag to Complex,:由实部和虚部输入合成复数输出,13,4.2 Simulink,模型建立,14,新建模型窗口,15,各模块的连线:,两种不同的连线方法,(,1,),默认,(,2,)折线,16,模块的选取:单个模块、多模块,17,模块处理:旋转、命名、隐藏名字等操作。,在编辑窗口中,format,菜单下对模块处理,或单击模块右键快捷菜单,format,命令下进行处理,18,19,模块参数修正:,仿真参数模块中默认的传递函数为:,20,三,.SIMULINK,仿真的运行,一、设置仿真参数和选择解法器,设置仿真参数和选择解法器,选择,Simulation,菜单下的,Parameters,命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。,Solver,页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。,Workspace I/O,页,作用是管理模型从,MATLAB,工作空间的输入和对它的输出。,Diagnostics,页,允许用户选择,Simulink,在仿真中显示的警告信息的等级。,构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析。,21,仿真参数的设定:,路径:仿真菜单栏中,simulation,22,解算器参数的设置(,Solver,),23,1,、,Solver,页,此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。,仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如,10,秒的仿真时间,如果采样步长定为,0.1,,则需要执行,100,步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为,0,,而结束时间视不同的因素而选择。总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。,仿真步长模式:用户在,Type,后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有,Variable-step,(变步长)和,Fixed-step,(固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法。,24,变步长模式解法器有:,ode45,,,ode23,,,ode113,,,ode15s,,,ode23s,,,ode23t,,,ode23tb,和,discrete,。,ode45,:缺省值,四,/,五阶龙格库塔法,适用于大多数连续或离散系统,但不适用于刚性(,stiff,)系统。它是单步解法器,也就是,在计算,y(tn,),时,它仅需要最近处理时刻的结果,y(tn-1),。一般来说,面对一个仿真问题最好是首先试试,ode45,。,ode23,:二,/,三阶龙格库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比,ode45,更有效。也是一个单步解法器。,ode113,:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比,ode45,有效。,ode113,是一种多步解法器,也就是在计算当前时刻输出时,它需要以前多个时刻的解。,ode15s,:是一种基于数字微分公式的解法器(,NDFs,)。也是一种多步解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用,ode45,,或者即使使用效果也不好,就可以用,ode15s,。,25,ode23s,:它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于,ode15s,。它能解决某些,ode15s,所不能有效解决的,stiff,问题。,ode23t,:是梯形规则的一种自由插值实现。这种解法器适用于求解适度,stiff,的问题而用户又需要一个无数字振荡的解法器的情况。,ode23tb,:是,TR-BDF2,的一种实现,,TR-BDF2,是具有两个阶段的隐式龙格库塔公式。,discrtet,:当,Simulink,检查到模型没有连续状态时使用它。,26,仿真数据的输入输出设置(,Workspace I/O,),27,仿真中异常情况的诊断(,Diagnostics,),28,5.4,线性系统数学模型,一,.,线性系统,K,为系统增益,,z,i,为零点,,p,j,为极点,在,MATLAB,中零极点增益模型用,z,p,K,矢量组表示。即:,z=z1,z2,zm,p=p1,p2,.,pn,K=k,函数,tf,2,zp(),可以用来求传递函数的零极点和增益。,29,Matlab,工具箱中定义了几个常用的线性模型对象,,tf,()表示传递函数模型,,ss,()表示状态方程模型,,zpk,(),表示零极点模型,零极点增益模型:,num=1,11,30,0;,den=1,9,45,87,50;z,p,k=zpk(num,den),z=,0,-6,-5,p=,-3.0000+4.0000i,-3.0000-4.0000i,-2.0000,-1.0000,k=,1,结果表达式:,30,31,控制系统常用到并联系统,这时就要对系统函数进行分解,使其表现为一些基本控制单元的和的形式。,函数,r,p,k=residue(num,den),对两个多项式的比进行部分展开,以及把传函分解为微分单元的形式。,向量,num,和,den,是按,s,的降幂排列的多项式系数。部分分式展开后,余数返回到向量,r,,极点返回到列向量,p,,常数项返回到,k,。,num,den=residue(r,p,k),可以将部分分式转化为多项式比,p(s)/q(s),。,32,部分分式展开:,num=2,0,9,1;,den=1,1,4,4;r,p,k=residue(num,den),p=,0.0000+2.0000i,0.0000-2.0000i,-1.0000,k=,2,r=,0.0000-0.2500i,0.0000+0.2500i,-2.0000,结果表达式:,33,例:假设从实际自然界(力学、电学、生态等)或社会中,抽象出有初始状态为,0,的二阶微分方程 ,是单位阶跃函数。本例演示如何用积分器直接构搭求解该微分方程的模型。,34,习题,35,36,
展开阅读全文