第9章MATLAB环境下的仿真.ppt_第1页
第9章MATLAB环境下的仿真.ppt_第2页
第9章MATLAB环境下的仿真.ppt_第3页
第9章MATLAB环境下的仿真.ppt_第4页
第9章MATLAB环境下的仿真.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 MATLAB环境下的仿真软件Simulink,9.1 Simulink的基本操作 9.2 Simulink的几类基本模块 9.3 仿真模型参数的设置 9.4 子系统的建立与封装 9.5 在命令窗口中创建模型 9.6 S-函数的设计和应用 9.7 仿真系统的线性化分析,9.1 Simulink的基本操作,9.1.1 Simulink的启动与退出 1. Simulink的启动 启动Simulink的方法有3种: (1)在MATLAB的命令窗口直接键入Simulink。 (2)单击MATLAB命令窗口工具栏上的Simulink模块库浏览器命令按钮。 (3)在MATLAB命令窗口File菜单中

2、选择New菜单项下的Model命令。 2. Simulink的退出 为了退出Simulink,只要关闭所有模型窗口和Simulink模块库窗口即可。,模 块 库 浏 览 器,模 型 窗 口,9.1.2 Simulink模块的操作 模块是建立simulink模型的基本单元。 用鼠标将模块拖到模型窗口,再用适当的方式把各 种模块连接在一起就能够建立动态系统的模型。 1. 选取模块 (单击) 2. 复制与删除模块(选中,ctrl+c / ctrl+x) 3. 模块的参数和属性设置(双击/右击) 4. 模块外形的调整 5. 模块名的处理 6. 模块的连接 7. 在连线上反映信息,9.2 Simulin

3、k的几类基本模块,1.在simulink模块库浏览器窗口选中模块对象,单击右键,则会出现基本库窗口。 Simulink5.0 常用的基本模块库有: (1)连续系统模块库(Continuous) (2)非线性模块库(Discontinuities) (3)离散系统模块库(Discrete) (4)插值表模块库(Look-up Tables) (5)数学运算模块库(Math Operation) (6)端口和子系统模块库(Ports 2. simset函数 (设置或编辑仿真参数,即options项, 并把设置结果保存在一个特殊的结构变量中) 它有如下4种用法: (1)options=simset(

4、property,value,) (2)options=simset(old_opstruct,property,value,) (3)options=simset(old_opstruct,new_opstruct) (4)simset,例9.1 对图示的正弦波信号经传递函数后的信号, 在MATLAB命令窗口输入命令进行仿真。 t,x,y=sim(f901);,t,x,y=sim(f901,2,8);,例9.2对图所示的仿真模型为例,说明simset函数的用法。 (1)在命令窗口输入命令: option=simset(OutputVariables,x,OutputPoints,all,Fi

5、nalstateName,date); t,x,y=sim(f901,1,10,option) (2)在命令窗口中输入命令: option1=simset(OutputVariables,txy,OutputPoints,all); t,x,y=sim(f901,2,4,6,8,option1),3. simget函数 (获得模型仿真参数的设置值) 该函数有如下3种用法: (1)struct=simget(model) (2)value=simget(model,property) (3)value=simget(OptionStructure,property) 4. set_param函数

6、 (包括设置仿真开始、暂停、 终止进程参数项) (1)设置仿真参数 调用格式为:set_param(model,property,value,) (2)控制仿真进程 调用格式为: set_param(model,SimulationCommand,cmd),例9.3 假设从实际应用领域(力学、电学、生态或社会)中,抽象出有初始状态为0的二阶微分方程x+0.2x+0.4x=0.2u (t), u(t)是单位阶跃函数。用积分器直接构造求解微分方程的模型exm1.mdl。 步骤如下: (1) 改写微分方程。把原方程改写为: x=0.2u(t)-0.2x-0.4x (2) 利用Simulink模块库中

7、的标准模块构作模型。 (3) 仿真操作。 (4) 保存在MATLAB工作空间中的数据。,例9.4利用传递函数模块建模。 步骤如下: (1)根据系统传递函数构造系统模型 (2)仿真操作。 例9.5 利用状态方程模块建模。 步骤如下: (1)利用构造仿真模型 (2)仿真,9.4 子系统的建立与封装,9.4.1 子系统的建立 1. 通过Subsystem模块建立子系统 操作步骤为: (1)先打开Simulink模块库浏览器,新建一个仿真模型。 (2)打开Simulink模块库中的Ports step(a,b,c,d),Kpi=1,Kpi=3,9.5 在命令窗口中创建模型,9.5.1 构造模型的命令

8、9.5.2 设置参数,9.6 S-函数的设计和应用,9.6.1 S-函数概述 系统函数(System Function),是对动态系统的程 序描述。 9.6.2 用M文件编写S-函数 (1)MATLAB为用户提供了一个模板,只要在必要的子程序里编写代码并输入参数就可以了。 (在ToolboxsimulinkblockSfuntmpl.m文件中提供 了模板程序) (2)从User-Defined Functions 子库里把S-Function系统的功能模块复制过来,输入程序的文件名,以供调用。,例9.9 利用M文件来写一个限幅积分器的S-函数,并借助S-函数 模块来调用此文件。 操作步骤如下:

9、 (1)根据数学模型,编写S-函数sfun99.m。 function sys, x0, str, ts = sfun99(t, x, u, flag, lb, ub, xi) switch flag, case 0, sys, x0, srt, ts = mdlInitializeSizes(xi); case 1, sys = mdlDerivatives(t, x, u, lb, ub); case 2 , sys = mdlUpdate(t, x, u); case 3, sys = mdlOutputs(t, x, u); case 4, sys = mdlGetTimeOfNext

10、VarHit(t, x, u); case 9, sys = mdlTerminate (t , x , u); otherwise error ( Unhandled flag = ,num2str ( flag) ); end,function sys,x0,str,ts=mdlInitializeSizes(xi) sizes =simsizes; sizes.NumContStates=1; sizes.NumDiscStates=0; sizes.NumOutputs=1; sizes.NumInputs=1; sizes.DirFeedthrough=0; sizes.NumSam

11、pleTimes=1; sys=simsizes(sizes); xo=xi; str= ; ts=0, 0; function sys=mdlDerivatives(t,x,u,lb,ub) if(x=ub end,function sys=mdlUpdae(t,x,u) sys= ; function sys=mdlOutputs(t,x,u) sys=x; function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime=1;% Example,set the next hit to be one second later sys=t+ samp

12、leTime; function sys=mdlTerminate(t,x,u) sys = ;,(2)完成S-函数的编写后,接着建立 Simulink模型,将 功能模块S-function复制到设计区域,打开其参数页, 输入S-函数的文件名sfun99.m和S-函数的参数lb、ub、xi。 (3)编写主程序。 clear; lb=-0.5; ub=0.5; xi=0; sim(sfun99); (4)在命令窗口运行主程序,并双击示波器,即可查看到输入波形及限幅积分的结果。,9.7 仿真系统的线性化分析,实际工程中,理想的线性系统是不存在的,绝大多数元器件都是非线性的。 线性化就是对一个非线性

13、系统的模型找出其稳定的平衡点,如果在工作过程中,代表系统属性的各物理量只在该平衡点附近产生微小的变化,非线性模型就能够以此平衡点为基础,表示成一个线性模型。这样关于线性系统的理论就可适用于该模型。 模型线性化包括连续系统与离散系统两类线性化模型。,9.7.1 连续系统的线性化 线性化分析函数 linmod 或 linmod2 用来提取非线性系统的近似线性模型,也可以用来获取线性系统的数学模型。linmod函数的调用格式为: A,B,C,D=linmod (sys) A,B,C,D=linmod (sys, x ,u) A,B,C,D=linmod (sys, x, u, para) 9.7.2

14、 离散系统的线性化 dlinmod 能够以任意给定的采样时间对离散系统、多速率系统以及连续和离散混合系统进行线性化。除了第2个选项需要插入采样时间来对系统线性化外,dlinmod的调用格式和linmod是相同的: A,B,C,D=dlinmod (sys, Ts, x ,u),9.7.3 平衡分析 在给定输入、输出及状态条件下,Simulink提供的函 数trim可以用来确定系统的稳态平衡点。 其调用格式为: x,u,y,dx=trim(sys) x,u,y,dx=trim(sys,x0,u0,y0,ix,iu,iy) 其中x, u, y, dx分别代表状态向量、输入向量、输出 向量和状态向量

15、的导数。sys是模型名。x0,u0,y0分别 为状态向量x、输入向量u和输出向量y的初始猜测值, 它们的输入格式必须是列向量形式。ix是向量,它的 元素是那些在寻找过程中,要求保持其值固定不变 (等于初始猜测值)的那些状态变量的序号。iu、iy与ix 类似,分别适用于u和y。,例9.10 求双环调速的电流环系统模型的线性模型,(1)建立电流环模型,如图所示; (2)线性状态空间模型描述; (3)求该线性系统的闭环传递函数; (4)求系统的阶跃响应。,实 例 分 析,a,b,c,d=linmod(f910) a = 1.0e+004 * -0.0078 0 0 0 1.7964 0.0014 -

16、0.0500 0 0 0 0 0 -0.0500 0 0 0 -0.0500 0.0500 0 0 0 -0.0160 0.0160 0.0025 -0.0599 b = 0 0 1.0000 0 0 c = 195.3125 0 0 0 0 d = 0,num,den=ss2tf(a,b,c,d); sys=tf(num,den) 执行结果: Transfer function: 4.547e-013 s4 + 5.821e-010 s3 + 5.614e008 s2 + 3.245e011 s + 2.193e013 - s5 + 1677 s4 + 9.737e005 s3 + 2.56

17、4e008 s2 + 3.506e010 s + 1.579e012,step(sys),例9.11 求离散系统的线性模型与时域响应。 解: (1)建立离散系统模型,如图所示; (2)线性模型描述; (3)求系统的阶跃响应。,a,b,c,d=dlinmod(f911,0.1) 执行结果: a = 0.9985 -0.0800 0.1861 0.9055 b = 0.0876 -0.0985 c = 0.7000 0.0600 d = 0,num1=0.7 0.06;den1=1 -1.2 0.37;num2=1;den2=1; num,den=feedback(num1,den1,num2,den2); dstep(num,den),例9.12 求非线性系统的线性模型、平衡工作点、 时域响应。 解: (1)建立非线性系统模型,如图所示; (2)线性模型描述; (3)求

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论