ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:321.52KB ,
资源ID:1161508      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1161508.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(系统仿真的MATLAB实现.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

系统仿真的MATLAB实现.docx

1、系统仿真的MATLAB实现第七章 系统仿真的MATLAB实现由于计算机技术的高速发展,我们可以借助计算机完成系统的数字仿真。综前所述,数字仿真实质上是根据被研究的真实系统的模型,利用计算机进行实验研究的一种方法。仿真的主要过程是:建立模型、仿真运行和分析研究仿真结果。仿真运行就是借助一定的算法,获得系统的有关信息。MATLAB是一种面向科学与工程计算的高级语言,它集科学计算、自动控制、信号处理、神经网络和图像处理等学科的处理功能于一体,具有极高的编程效率。MATLAB是一个高度集成的系统,MATLAB提供的Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持线性和非线性系统

2、,能够在连续时间域、离散时间域或者两者的混合时间域里进行建模,它同样支持具有多种采样速率的系统。在过去几年里,Simulink已经成为数学和工业应用中对动态系统进行建模时使用得最为广泛的软件包。 MATLAB仿真有两种途径:(1)MATLAB可以在SIMULINK窗口上进行面向系统结构方框图的系统仿真;(2)用户可以在MATLAB的COMMAND窗口下,用运行m文件,调用指令和各种用于系统仿真的函数,进行系统仿真。这两种方式可解决任意复杂系统的动态仿真问题,前者编辑灵活,而后者直观性强,实现可视化编辑。 下面介绍在MATLAB上实现几类基本仿真。7.1 计算机仿真的步骤在学习计算机仿真以前,让

3、我们先总结一下计算机仿真的步骤。计算机仿真,概括地说是一个“建模实验分析”的过程,即仿真不单纯是对模型的实验,还包括从建模到实验再到分析的全过程。因此进行一次完整的计算机仿真应包括以下步骤:(1)列举并列项目每一项研究都应从说明问题开始,问题由决策者提供或由熟悉问题的分析者 提供。(2)设置目标及完整的项目计划目标表示仿真要回答的问题、系统方案的说明。项目计划包括人数、研究费用以及每一阶段工作所需时间。(3)建立模型和收集数据模型和实际系统没有必要一一对应,模型只需描述实际系统的本质或者描述系统中所研究部分的本质。因此,最好从简单的模型开始,然后进一步建立更复杂的模型。 (4)编制程序和验证利

4、用数学公式、逻辑公式和算法等来表示实际系统的内部状态和输入/输出的关系。建模者必须决定是采用通用语言如MATLAB、FORTRAN、C还是专用仿真语言来编制程序。在本教材中,我们选择的是MATLAB和其动态仿真工具Simulink。(5)确认确认指确定模型是否精确地代表实际系统。它不是一次完成,而是比较模型和实际系统特性的差异,不断对模型进行校正的迭代过程。(6)实验设计 确定仿真的方案、初始化周期的长度、仿真运行的长度以及每次运行的重复 次数。 (7)生产性运行和分析 通常用于估计被仿真系统设计的性能量度。利用理论定性分析、经验定性分析或系统历史数据定量分析来检验模型的正确性,利用灵敏度分析

5、等手段来检验模型的稳定性。 (8)文件清单和报表结果 (9)实现图7.1是计算机仿真的程序图。 图7.1 计算机仿真程序流图7.2 基于数值积分法的连续系统仿真7.2.1 数值积分法的MATLAB实现MATLAB的工具箱提供了各种数值积分方法函数,这些函数是ODE23、ODE45、ODE113和ODE15s。这些函数均是m文件,还有一个函数是ode1.C,是直接用C语言编写的。 函数ode23( )是用Runge-Kutta法求解微分方程。它是一种采用三阶积分算法、二阶误差估计、变积分步长的低阶积分算法,调用格式为T, Y = ode23 ( F, TSPAN, YO, OPTIONS )其中

6、,F为系统模型文件名,模型为y = f( t, y )形式;TSPAN = To TFINAL 为积分计算时间,初值为To,终值为TFINAL;YO为系统输出初始值;OPTIONS选项积分计算相对允差 RelTol 和绝对允差 AbsTol,当缺省时, Reltol1e-3, AbsTol1e-6T为计算点时间向量,Y为微分方程的解。函数ode45( )也是用Runge-Kutta法求解微分方程,它是变步长的一种中等阶次积分算法,调用格式为T, Y = ode45 ( F , TSPAN, YO, OPTIONS )各项含义同上。函数ode113( )是变阶的Adams-Bashforth-M

7、oulton,用变阶方法解微分方程,采用多步法,调用格式为T, Y = ode113 ( F, TSPAN, YO, OPTIONS )各项含义同上。函数odel5s( )采用改进的Gear法解微分方程,调用格式为 T, Y = odel5s ( F, TSPAN, YO, OPTIONS )各项含义同上。MATLAB还提供了解微分方程函数ode23s。函数ode1.C是用Euler法求解微分方程。在SIMULINK中,系统仿真有变步距和固定步距两种工作方式。在变步距仿真中,可选用ode45、ode23、ode113、ose15s和ode23s。在固定步距仿真中,可选用材ode5、ode4、o

8、de3、ode2和ode1。ode5是5阶Runge-Kutta法,ode4是4阶Runge-Kutta法,odel是Euler法。【例7.1】求微分方程。用MATLAB编写程序:建立一个m函数文件dfun.mfuncion ydhfn ( t,x ) ysqrt ( 3*x )5 ; 在MATLAB COMMAND窗口下运行 % MATLAB PROGRAM 7-1 t, x ode23 ( dfun,0 l0,1) ; Plot ( t,x ) ;7.2.2 基于数值积分法的连续系统的数字仿真对于一个n阶微分方程表示的连续系统,也可以用具有n个状态变量的状态空间表达式来描述:状态方程实际上

9、是n个一阶微分方程组成的方程组。如果应用四阶Runge-Kutta法进行仿真计算。则该式可以改写为式中,K1,K2,K3,K4均为n维列向量。系统输出为ykCXkDU( tk )类似地,可将各种数值积分方法用于连续系统的仿真中。【例7.2】用MATLAB编写图7.2所示液压控制系统的仿真程序。图7.2 系统方框图用MATLAB编写仿真程序,采用四阶Runge-Kutta法:% MATLAB PROGRAM 7-2% * Input system data * %调入数据文件hynat;% Input system function; %调入系统模型ypfun1 = valve ;ypfun =

10、 hysys ;% Initialization %初始化yref = 5000; % Referent value of system outputx0 = 0 0; % Initial value of servo valvey0 = 0 0 0; % Initial value of hydraulic cylinderu0 = 0; t0 = 0; % Start time of simulation tfinal = 1; % End time of simulationtsamp = 0.01; % Sample periodh = 0.001; % Simulation step

11、 sizeY1imit = 512;Ilimit = 40;max_epoch = fix ( tfinal / h )1;t = t0;u1 = u0;x = x0;y = y0;tout = zeros ( max_epoch, 1 );uout = zeros ( max_epoch, 1);yd = zeros ( max_epoch, 1 );yout = zeros ( max_epoch, legth ( y ) );i = 1;tout ( i ) = t;uout ( i ) = 1;yd ( i ) = Kf * y ( l );yout ( i, : ) = y;% Th

12、e main loop for i = 1 : max_epoch% Compute output of valvesvl = feval ( ypfun1, t, u, x, av, bv );sv2 = fcval (ypfun1, t+h/2, u, x+h*sv1/2, av, hv ); %模块valve仿真sv3 = feval (ypfun1, t+h/2, u, x+h*sv2/2, av, hv );sv4 = feval (ypfun1, t+h, u, x+h*sv3, av, hv);x = x+h*(svl+2*sv2+2*sv3+sv4)/6;vo = cv*x;

13、% Compute output of cylinderxl = feval (ypfun, t, vo, y, a, b);s2 = feval (ypfun, t+h/2, vo, y+h*s1/2, a, h); %模块hysya 仿真s3 = feval (ypfun, t+h/2, vo, y+h*s2/2, a, b);s4 = feval (ypfun, t+h u, vo, y+h*s3, a, b);y = y+h* (sl+2*s2+2*s3+s4)/6;i=i+lt=t+h;tout(i) =t;uout(i) =u;yd(i)=Kf*y(l);yout(i, :) =

14、y;% Discrete control process %离散控制量计算if abs (round (t/tsamp)-t/tsamp)Ylimitxl=ylimit ;else if ulIlimitx4=Ilimit;else if u4Ilimitx4=Ilimit;else x4 =u4;end endu = Kq*x4;end % for discrete section end % for main loop% save data to file %存储仿真数据hout = tout uout yout;save hout.dat hout -ascii;plot (tout, yd, y);gird;m 函数文件 valve .mfunction xd = valve (t, u, x, av, bv) xd = av*x+hv*u;m 函数文件hysys. Mfunction yd=hysys(t, u, y, a, b) yd = a* y+h*u 上例的仿真结果如图7.3所示。图7.3 例7.2系统仿真结果7.3 基于离散相似法的连续系

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1