实验8simulink仿真.docVIP

  • 29
  • 0
  • 约2.08千字
  • 约 9页
  • 2016-10-05 发布于重庆
  • 举报
实验8simulink仿真

实验8 simulink仿真 一、实验目的 1、掌握通过模块实现simulink仿真; 2、掌握子系统的创建与封装方法; 3、掌握利用s-function实现简单系统的仿真。 二、实验内容 1、设方程 (1)假设r =1,d=0.5,a=0.1,b=0.02,x(0)=25,y(0)=2,通过直接连接simulink模块的方法仿真x(t)、y(t)以及y(x)的图像。 (2)以a、b、d、r为参数,采用创建子系统与封装的方法实现(1)仿真。 (3)利用s-function实现(1)的仿真。 解(:建立框图如图 设置从工作区间输入xInitial= [25 2]’; 仿真结束时间为20,其他默认 XY Graph设置:xmin=0,xmax=100,ymin=0,ymax=30 运行simulink仿真: (2)创建子系统 如图选中模块,创建子系统 创建后为 在Model Explorer中查看并修改参数 运行如图: (3)s-Function模块 s函数、 function [sys,x0,str,ts,simStateCompliance] = sfuntmpl(t,x,u,flag) switch flag, case 0, [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise DAStudio.error(Simulink:blocks:unhandledFlag, num2str(flag)); end function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 2; sizes.NumDiscStates = 0; sizes.NumOutputs = 2; sizes.NumInputs = 0; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = [25;2]; ts = [0 0]; str = []; simStateCompliance = UnknownSimState; function sys=mdlDerivatives(t,x,u) sys =[x(1)*(1-0.1*x(2));x(2)*(-0.5+0.02*x(1))]; function sys=mdlUpdate(t,x,u) sys =[]; function sys=mdlOutputs(t,x,u) sys =[x(1);x(2)]; function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; sys = t + sampleTime; function sys=mdlTerminate(t,x,u) sys = []; 仿真如图 2、利用simulink仿真求积分的值。 ::的结果为 3、建立下面两个框图的控制系统simulink模型,绘制在阶跃step函数输入下的输出曲线。 (1)假设step函数参数设为:step time=1,initial time=0,final value=2,sample time=0。 解: (2)假设step函数参数设为:step time=0.1,initial time=0,final value=1,sample time=0。初始条件为:y(0)=2,y’(0)=1。 解:如图 4、用simulink建立下面时变系统模型: 假设初始条件为,,请仿真的输出结果。 解:的部分函数如下:function sys=mdlDerivatives(t,x,u) sys =[-sin(t) t;-1 exp(-5*t)]*[x

文档评论(0)

1亿VIP精品文档

相关文档