实验8 simulink仿真
一、实验目的
1、掌握通过模块实现simulink仿真; 2、掌握子系统的创建与封装方法;
3、掌握利用s-function实现简单系统的仿真。
二、实验内容
x(ray)x1、设方程
y(dbx)y(1)假设r =1,d=,a=,b=,x(0)=25,y(0)=2,通过直接连接simulink模块的方法仿真x(t)、y(t)以及y(x)的图像。
(2)以a、b、d、r为参数,采用创建子系统与封装的方法实现(1)仿真。 子系统结构:
子系统内部:
封装编辑:
参数设置:
结果同上。
(3)利用s-function实现(1)的仿真。 模型建立如图:
function [sys,x0,str,ts] = fun(t,x,u,flag) switch flag, case 0,
[sys,x0,str,ts]=mdlInitializeSizes; case 1,
sys=mdlDerivatives(t,x,u); case 2,
sys=mdlUpdate(t,x,u); sys=[]; case 3,
sys=mdlOutputs(t,x,u); case 4,
sys=mdlGetTimeOfNextVarHit(t,x,u); sys=[]; case 9,
sys=mdlTerminate(t,x,u); sys=[]; otherwise
error(['Unhandled flag = ',num2str(flag)]); end
function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; = 2; = 0; = 2; = 0; = 0; = 1;
sys = simsizes(sizes); x0 = [25;2]; str = []; ts = [0 0];
function sys=mdlDerivatives(t,x,u) sys=[x(1)**x(2));x(2)*+*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仿真求积分1011dx的值。 1x
3、建立下面两个框图的控制系统simulink模型,绘制在阶跃step函数输入下的输出曲线。
(1)假设step函数参数设为:step time=1,initial time=0,final value=2,sample time=0。
(1)
(2)假设step函数参数设为:step time=,initial time=0,final value=1,sample time=0。初始条件为:y(0)=2,y’(0)=1。
(2)
4、用simulink建立下面时变系统模型:
1sinttx1xx1e5tx 22y12x1假设初始条件为x1(0)2,x2(0)0,请仿真1的输出y225x2结果。