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