自动控制控制系统时域呼应的仿真及分析.docx
《自动控制控制系统时域呼应的仿真及分析.docx》由会员分享,可在线阅读,更多相关《自动控制控制系统时域呼应的仿真及分析.docx(15页珍藏版)》请在冰豆网上搜索。
自动控制控制系统时域呼应的仿真及分析
2014-2015学年第1学期
院别:
控制工程学院
课程名称:
自动控制原理
实验名称:
控制系统时域响应的仿真及分析
实验教室:
指导教师:
郭德全
小组成员(姓名,学号):
实验日期:
2014年10月11日
评分:
一、实验目的:
1、学习并掌握利用MATLAB编程平台进行控制系统传递函数仿真的方法。
2、通过仿真实验研究并总结MATLAB的一些基本操作。
3、练习课本书上第二章与第三章中的计算机仿真部分。
二、实验任务及要求:
实验任务:
熟悉一些MATLAB在控制系统中的基本运用。
测试以下内容:
1.例2.15传递函数,利用MATLAB,计算G(s)的零点和极点、H(s)的特征方程以及商G(s)/H(s),在复平面上得到G(s)/H(s)的零-极点图。
2.例2.16串联联接的框图,熟悉series,parallel,feedback等函数
3.例2.19多回路化简,例2.20电力牵引电机控制。
4.例4.2速度控制系统,
5.例4.3隧道钻机
根据实验结果,总结各自的响应规律。
实验要求:
以上仿真及图形绘制全部采用MATLAB平台编程完成。
三、涉及实验的相关情况介绍(包含实验软件、实验设备、实验方案设计等情况):
本次试验采用matlab软件仿真,所有试验均为书面例子,即验证性试验。
熟悉matlab的各个命令,,学会利用matlab计算机辅助设备仿真。
四、实验结果(含实验仿真程序、仿真曲线、数据记录表格及实验规律分析与总结等,可附页):
(实验一)例2.15
G(s)的零点和极点:
H(s)的特征方程:
z=num/den=
0+0.4082is^2+3s+2
0-0.4082i----------------------
s^3+3s^2+4s+12
G(s)/H(s)的商:
num/den=
6s^5+18s^4+25s^3+75s^2+4s+12
-------------------------------------------
s^5+6s^4+14s^3+16s^2+9s+2
复平面上G(s)/H(s)的零-极点图:
代码如下:
numg=[601];deng=[1331];
z=roots(numg)
n1=[11];n2=[12];d1=[12*i];d2=[1-2*i];d3=[13];
numh=conv(n1,n2);denh=conv(d1,conv(d2,d3));
printsys(numh,denh)
num=conv(numg,denh);den=conv(deng,numh);
printsys(num,den)
pzmap(num,den)
title('Pole-ZeroMap')
(实验二)例2.16
简化框图串联:
(series)简化框图并联:
(parallel)
num/den=num/den=
s+1500s^3+500s^2+s+2
--------------------------------------------
500s^3+1000s^2500s^3+1000s^2
简化框图计算闭环传递函数一(cloop):
简化框图计算闭环传递函数二:
(feedback)
num/den=num/den=
s+1s+2
------------------------------------------------------
500s^3+1000s^2+s+1500s^3+1000s^2+s+1
代码如下:
numg=[1];deng=[50000];
numh=[11];denh=[12];
[num,den]=series(numg,deng,numh,denh);
printsys(num,den)
[nump,denp]=parallel(numg,deng,numh,denh);
printsys(nump,denp)
[numc,denc]=cloop(num,den,-1);
printsys(numc,denc)
[numf,denf]=feedback(numg,deng,numh,denh,-1);
printsys(numf,denf)
(实验三)例2.19
多回路闭环传递函数化简:
num/den=
s^5+4s^4+6s^3+6s^2+5s+2
----------------------------------------------------------------
12s^6+205s^5+1066s^4+2517s^3+3128s^2+2196s+712
代码如下:
n1=[1];d1=[110];
n2=[1];d2=[11];
n3=[101];d3=[144];
n4=[11];d4=[16];
nh1=[11];dh1=[12];
nh2=[2];dh2=[1];
nh3=[1];dh3=[1];
ng1=conv(nh2,d4);dg1=conv(dh2,n4);
[ng2,dg2]=series(n3,d3,n4,d4);
[ng3,dg3]=feedback(ng2,dg2,nh1,dh1,+1);
[ng4,dg4]=series(n2,d2,ng3,dg3);
[ng5,dg5]=feedback(ng4,dg4,ng1,dg1);
[ng6,dg6]=series(n1,d1,ng5,dg5);
[num,den]=cloop(ng6,dg6,-1);
printsys(num,den)
零—极点对消:
(minreal)
num/den=
0.083333s^4+0.25s^3+0.25s^2+0.25s+0.16667
--------------------------------------------------------------
s^5+16.0833s^4+72.75s^3+137s^2+123.6667s+59.3333
代码如下:
deng=[122051066251731282196712];
[num,den]=minreal(numg,deng);
1pole-zero(s)cancelled
printsys(num,den)
(实验三)例2.20
电力牵引电机控制传递函数化简:
num/den=
5400
---------------
20.5s+5421.5
系统阶跃step响应:
代码如下:
n1=[10];d1=[11];
n2=[1];d2=[20.5];
n3=[540];d3=[1];
n4=[0.1];d4=[1];
[num1,den1]=series(n1,d1,n2,d2);
[num2,den2]=feedback(num1,den1,n4,d4,-1);
printsys(num2,den2)
[num3,den3]=series(n3,d3,num2,den2);
[num,den]=cloop(num3,den3,-1);
printsys(num,den)
num=[5400];
den=[22.55402];
t=[0:
0.005:
3];
[y,x,t]=step(num,den,t);
plot(t,y),grid
xlabel('Time[sec]')
ylabel('Wheelvelocity')
(实验四)例4.2速度控制系统
速度控制系统传递函数:
(开环)系统稳态误差Yo:
(开环)
num/den=ans=
-1-0.6666
---------
2s+1.5
开环系统在输入Va(s)=0,对阶跃干扰的响应曲线:
在输入为零的(即预期输出响应为零)的情况下,干扰响应的终值就是系统的稳态误差。
代码如下:
Ra=1;Km=10;J=2;b=0.5;Kb=0.1;
num1=[1];den1=[J,b];num2=[Km*Kb/Ra];den2=[1];
[num,den]=feedback(num1,den1,num2,den2);
%
num=-num;
printsys(num,den)
%
[yo,x,t]=step(num,den);
plot(t,yo),grid
xlabel('time[sec]'),ylabel('speed')
title('Open-loopDisturbanceStepResponse')
%
yo(length(t))
速度控制系统传递函数:
(闭环)速度控制系统稳态误差Yc之比:
(闭环)
num/den=ans=
-1-0.0018
-----------
2s+541.5
闭环系统对阶跃干扰的响应曲线:
由上图分析可知,引入负反馈已明显减小了干扰对输出的影响。
这说明闭环反馈系统具有噪声抑制特性。
代码如下:
Ra=1;Km=10;J=2;b=0.5;Kb=0.1;Ka=54;Kt=1;
num1=[1];den1=[J,b];num2=[Ka*Kt];den2=[1];
num3=[Kb];den3=[1];num4=[Km/Ra];den4=[1];
[num5,den5]=parallel(num2,den2,num3,den3);
[num6,den6]=series(num5,den5,num4,den4);
[num,den]=feedback(num1,den1,num6,den6);
%
num=-num;
printsys(num,den)
%
[yc,x,t]=step(num,den);
plot(t,yc),grid
xlabel('time[sec]'),ylabel('speed[rad/sec]')
title('Close-loopDisturbanceStepResponse')
%
yc(length(t))
(实验五)例4.3英吉利海峡海底隧道钻机
系统的传递函数:
(增益K=100)系统的传递函数:
(增益K=20)
num/den=num/den=
11s+10011s+20
-------------------------------
s^2+12s+100s^2+12s+20
增益K对瞬态响应的影响:
(阶跃输入)
由图可看出,在相同条件下,随着K值的减小,超调量也将减小,而调节时间将增大。
代码如下:
numg=[1];deng=[110];
K1=100;K2=20;
num1=[11K1];num2=[11K2];den=[01];
%
[n1,d1]=series(num1,den,numg,deng);
[n2,d2]=series(num2,den,numg,deng);
[n3,d3]=cloop(n1,d1);
[n4,d4]=cloop(n2,d2);
%
t=[0:
0.01:
2.0];
[y1,x,t]=step(n3,d3,t);[y2,x,t]=step(n4,d4,t);
subplot(211),plot(t,y1),title('StepResponseforK=100')
xlabel('time[sec]'),ylabel('y(t)'),grid
subplot(212),plot(t,y2),title('StepResponseforK=20')
xlabel('time[sec]'),ylabel('y(t)'),grid
增益K对瞬态响应的影响:
(阶跃干扰)
增加K值将减小单位阶跃干扰的稳态响应Y(t)的幅值。
代码如下:
numg=[1];deng=[110];
K1=100;K2=20;
num1=[11K1];num2=[11K2];den=[01];
%
[n1,d1]=feedback(numg,deng,num1,den);
[n2,d2]=feedback(numg,deng,num2,den);
%
t=[0:
0.01:
2.5];
[y1,x,t]=step(n1,d1,t);[y2,x,t]=step(n2,d2,t);
subplot(211),plot(t,y1),title('DisturbanceResponseforK=100')
xlabel('time[sec]'),ylabel('y(t)'),grid
subplot(212),plot(t,y2),title('DisturbanceResponseforK=20')
xlabel('time[sec]'),ylabel('y(t)'),grid
系统灵敏度与增益K:
num/den=
s(s+1)
----------------
s(s+12)+K
对象变化时系统的灵敏度:
由上面实验可知,减小K值可以减小超调量,增加K值可以更好地抑制噪声。
系统灵敏度和近似灵敏度相差不大。
但超出一定量后,近似灵敏度将不再适用。
代码如下:
K=20;
num=[110];den=[112K];
w=logspace(-1,3,200);s=w*i;
n=s.^2+s;d=s.^2+12*s+K;S=n./d;
n2=s;d2=K;S2=n2./d2;
%
subplot(211);plot(real(S),imag(S))
title('SystemSensitivitytoPlantVariations')
text('Interpreter','latex','String',...
'$$S(s)=\frac{s(s+1)}{s^2+12s+K}$$','Position',[.2.4],'FontSize',12)
xlabel('Real(S)'),ylabel('imag(S)'),grid
subplot(212),loglog(w,abs(S),w,abs(S2))
text('Interpreter','latex','String',...
'$$S(s)\approx\frac{s}{K}$$','Position',[10^250],'FontSize',12)
xlabel('w[rad/sec]'),ylabel('Abs(S)'),grid
五、实验总结:
(含建议、收获等)
本次试验让我进一步学习到matlab的相关知识,掌握了一些matlab的基本用法,比如series,parallel,cloop,feedback,minreal,\frac.\approx等命令的用法,学会了利用计算机仿真来进行自动控制实验的对比。
只有试验过,才会体会到matlab数学、设计、仿真、编程等功能的强大。
通过它我开始了解到自动控制这门课程的趣味所在。
虽然在学习过程中我遇到了很多的不懂,比如在仿真过程中,很多命令不会用,也不知道正确的书写格式,导致仿真瘫痪。
但是不断的钻研和请教让我发现,原来自动控制也可以不用想象中的那么无聊乏味,也让我认识到matlab也不是想象中那么神秘。
我相信在以后的学习中它会帮助我建立起对自动控制的喜爱。