控制系统仿真实验报告
学 院:信息科学与工程学院
班 级:
姓 名:
学 号:
目录
实验一 MATLAB语言编程... 2
一、实验目的... 2
二、具体实验内容、步骤、要求... 2
三、实验心得: 5
实验二 数值积分算法练习与函数调用... 6
一、实验目的... 6
二、实验题目... 6
三、实验心得: 13
实验三 控制工具箱与SIMULINK软件应用... 14
一、实验目的... 14
二、实验预习要求... 14
三、学会调出、运行已由SIMULINK建立的仿真模型... 14
四、实验心得: 16
实验四 数字控制系统仿真与综合应用... 17
一、实验目的... 17
二、实验内容... 17
四、实验心得: 20
总结:... 21
实验一 MATLAB语言编程
一、实验目的
1、熟悉Matlab语言及其环境,掌握编程方法。
2、要求认真听取实验指导老师讲解与演示。
二、具体实验内容、步骤、要求
1、运行交互式学习软件,学习MATLAB语言;
2、在MATLAB的命令窗口下键入如下命令:
INTRO(注意:intro 为一个用MATLAB语言编写的幻灯片程序,主要演示常用的MATLAB语句运行结果。)
然后,根据现实出来的幻灯片右面按钮进行操作,可按START——NEXT——NEXT按钮一步步运行,观察。
3、自编程序并完成上机编辑,调试,运行,存盘:
(1)用MATLAB命令完成矩阵的各种运算,例如:
求出下列运算结果,并上机验证。
解:实验程序如下:
function chengxu1
A=[11 12 13 14;21 22 23 24;31 32 33 34;41 42 43 44];
a1=A(:,1)
a2=A(2,:)
a3=A(1:2,2:3)
a4=A(2:3,2:3)
a5=A(:,1:2)
a6=A(2:3)
a7=A(:)
a8=A(:,:)
a9=ones(2,2)
a10=eye(2)
实验结果如下:
(1) A(:,1)= (2) A(2,:)=
(3) A(1:2,2:3)= (4) A(2:3,2:3)=
(5) A(:,1:2)= (6) A(2:3)=
(7) A(:)= (8) A(:,:)=
(9) ones(2,2)= (10) eye(2)=
(2)、绘制数学函数的图形,例如:
y(t)=1-2e-tsin(t) (0<=t<=8) 理解数组运算与矩阵运算功能。
解:根据题意编写MATLAB程序如下:
%绘图程序如下:
t=0:0.01:8;
y=1-2*exp(1)-t.*sin(t)
plot(t,y)
绘制函数图形如下图所示:
三、实验心得:
通过本次实验,熟悉了解了MATLAB的一些基本操作,对MATLAB的基本运算---单元矩阵,有了详细的了解,可以实现矩阵的快速构造,为之后的实验打下良好的基础。
同时,也熟悉了MATLAB的基本数组运算及画图功能,同样为之后对控制系统的仿真打下基础,对于相关函数模型图形的绘制有很大的帮助。
实验二 数值积分算法练习与函数调用
一、实验目的
1、理解数值积分法,熟练掌握MATLAB的函数调用。
二、实验题目
1、用Eular法求解初值问题的数值解:
设方程如下:
取步长,上机编写程序求出数值解。
解:用MATLAB编程求解如下:
%用Euler法求初值问题的数值解
function FZSYZ1
t0=0;
tf=1;
x0=1;
h1=0.1;
t=[t0:h1:tf];
n=length(t);
u=x0;
uu(1)=u;
for i=2:n
du=u-2*t(i-1)/u;
u=du*h1+u;
uu(i)=u;
end
uu
plot(t,uu)
得到的结果如下图所示:
2、编写MATLAB程序求解下列方程的数值解:
解:用MATLAB编程求解如下:
%用ode23法求初值问题的数值解
function xdot=fun21(t,x)
xdot=x-t^2;
function fzsy22
t0=0;tf=3;tol=1e-6;
x0=1;trace=1;
[t,x]=ode23('fun21',t0,tf,x0,tol,trace);
plot(t,x)
得到的实验结果如下图所示
3、试将(2-2)方程改为用Eular编程求解试比较用ode23求解结果
解:用MATLAB编程求解如下:
%改用Euler法求初值问题的数值解
function FZSYZ1
t0=0;
tf=3;
x0=1;
h1=0.1;
t=[t0:h1:tf];
n=length(t);
u=x0;
uu(1)=u;
for i=2:n
du=u-(t(i-1))^2;
u=du*h1+u;
uu(i)=u;
end
uu
plot(t,uu)
得到的实验结果如下图所示
4、试将(2-1)方程改为用ode23算法调用函数求解,并试比较结果。
解:用MATLAB编程求解如下:
function xdot=fun21(t,x)
xdot=x-2*t./x;
function fzsy22
t0=0;tf=1;tol=1e-6;
x0=1;trace=1;
[t,x]=ode23('fun21',t0,tf,x0,tol,trace);
plot(t,x)
得到的实验结果如下图所示:
5、利用ode23或ode45求解线性时不变系统微分方程,并绘制出曲线,式中
解:用MATLAB编程求解如下:
function xdot=fun21(t,x)
A=[-0.5 1;-1 -0.5];
xdot=A*x;
function fzsy22
t0=0;tf=4;tol=1e-6;
x0=[0;1];trace=1;
[t,x]=ode23('fun21',t0,tf,x0,tol,trace);
plot(t,x)
得到的实验结果如下图所示:
6、求出与的单位阶跃响应,并分别求出状态空间模型。
解:(1)的状态空间模型求解如下:
function lab2
b1=[2];
a1=[1 2 1];
sys=tf(b1,a1);
step(sys);
[A1,B1,C1,D1] = tf2ss(b1,a1)
求解可得:
实验仿真结果如下图所示:
(2) 的状态空间模型求解如下:
function lab2
b1=[1];
a1=[2 3 3 1];
sys=tf(b1,a1);
step(sys);
[A1,B1,C1,D1] = tf2ss(b1,a1)
求解可得:
实验仿真结果如下图所示:
7、选做题一:已知系统传递函数为,求对应的零极点模型,绘制系统阶跃响应。
解:由MATLAB编程求解如下:
function lab2
b1=[200 400];
a1=[1 11 52 42];
step(b1,a1);
[z,p,k] = tf2zp(b1,a1)
有上述程序求解可得:
实验仿真结果如下图所示:
三、实验心得:
通过本次实验,熟悉了解了MATLAB在自动控制当中的应用,了解了相关的传递函数及其操作,对于控制系统的建模有打好了基础。
同时,学习了基本的输入函数,并求出对应的响应,对于实际中相关系统的分析有很大的帮助。
同时,也巩固了MATLAB的画图功能,同样为之后对控制系统的仿真打下基础,对于相关传递函数图形的绘制有很大的帮助。
实验三 控制工具箱与SIMULINK软件应用
一、实验目的
1、熟悉工具箱及其使用,进行系统仿真分析,通过仿真对系统进行校正校验。
二、实验预习要求
2、必须先复习教材及上课介绍的有关控制工具箱命令与SIMULINK仿真工具的使用,并对实验题目作好准备。
三、学会调出、运行已由SIMULINK建立的仿真模型
1、仿真模型如下:
仿真图形如下:
2、仿真模型如下:
仿真图形如下:
四、实验心得:
通过本次试验,熟悉了解了MATLAB中SIMULINK的应用,特别是在自动控制系统建模中,它非常的简便易操作,相比输入语句的建模来说,它形象而快速,不仅便于理解和分析,而且大大提高了仿真速度。
同时,也巩固了MATLAB的画图功能,同样为之后对控制系统的仿真打下基础,对于相关传递函数图形的绘制有很大的帮助。
实验四 数字控制系统仿真与综合应用
一、实验目的
1、掌握用于离散系统的Matlab命令及数字控制系统仿真系统方法。应用仿真对系统的设计进行分析比较。
二、实验内容
1、实验题目与要求
若,若使用零阶保持器将G(s)转换成G(z)。采用周期T=0.1s,用仿真方法得出G(s)与G(z)的阶跃响应图并进行比较。
解:将连续系统的传递函数用下面的零阶保持器法转换成离散系统传递函数程序清单如下:
function lab41
nc=10;dc=[1,7,10];ts=0.1;i=[0:35];time=i*ts;
[n_zoh,d_zoh]=c2dm(nc,dc,ts);
yc=step(nc,dc,time);
y_zoh=dstep(n_zoh,d_zoh,36);
[xx,yy]=stairs(time,y_zoh);
plot(time,yc,'r'),hold
plot(xx,yy,'b'),hold;grid
end
程序结果如下:
实验仿真结果如下图所示:
2、仿真研究与系统分析:
,采样周期T=0.2s
1、采用零阶保持器,将W1(s)转换为W1(z),串接一个计算机调节模型D(z)组成一个典型的数字反馈系统,当采用最少拍设计原则设计出来的。
分别用仿真算法得到系统在单位阶跃输入作用下的响应,系统在单位速度输入是的输出响应。
解:(1)首先将W1(s)转换为W1(z),采样周期T=0.2s,程序清单如下:
function lab42
num=[10];den=[0.005 0.15 1 0];
ts=0.2;[nc,dc]=c2dm(num,den,ts)
实验结果如下:
(2)运行如下仿真程序可得结果如下:
3、思考题
解:(1)将被控对象的传递函数G(s)离散化的程序如下:
%将G(s)离散化的程序如下:
function lab43
num=[10];den=[1 1 0];
ts=1;[nc,dc]=c2dm(num,den,ts)
实验结果如下:
则离散化后的传递函数
(2)运行如下仿真程序可得结果如下:
四、实验心得:
通过本次试验,熟悉了解了MATLAB的在自动控制当中的应用,了解了相关的函数及操作,熟悉SIMULINK的操作,对于控制系统的建模有很大的帮助。
同时,学习了基本的输入函数,并求出对应的响应,对于实际中相关系统的分析有很大的帮助。
同时,也学习了MATLAB的画图功能,同样为之后对控制系统的仿真打下基础,对于相关传递函数图形的绘制有很大的帮助。
总结:
总之,本次实验使我对MATLAB在控制系统中的建模有了初步的了解,起到了入门的作用,我也体会到了MATLAB在自动控制分析中的重要作用,日后在实践中我会继续学习并熟练使用MATLAB这个软件,辅助自己的学习和研究。
最后,感谢成老师的悉心指导!