自动控制原理matlab仿真实验实验严进宁.docx
《自动控制原理matlab仿真实验实验严进宁.docx》由会员分享,可在线阅读,更多相关《自动控制原理matlab仿真实验实验严进宁.docx(37页珍藏版)》请在冰豆网上搜索。
![自动控制原理matlab仿真实验实验严进宁.docx](https://file1.bdocx.com/fileroot1/2022-12/10/84f5304e-5011-4e28-bd9b-fceb20eb2235/84f5304e-5011-4e28-bd9b-fceb20eb22351.gif)
自动控制原理matlab仿真实验实验严进宁
实验一系统的数学模型
一、实验目的和任务
1、 学会使用MATLAB的命令;
2、 掌握MATLAB有关传递函数求取及其零、极点计算的函数。
3、 掌握用MATLAB 求取系统的数学模型
二、实验仪器、设备及材料
1、 计算机 2、 MATLAB软件
三、实验原理
1、 MATLAB软件的使用
2、 使用MATLAB软件在计算机上求取系统的传递函数
四、实验报告要求
1、将各实验内容的要求写入实验报告。
2、写出要求的实验程序。
3、记录各命令运行后的结果
五、实验内容
例1-3、设置传递函数
,时间延迟常数
方式1:
set(G,'ioDelay',4)%为系统的ioDelay属性设定值
G%显示传递函数
解:
该传递函数模型可以通过下面的语句输入到MATLAB工作空间为:
>>num=6*[1,5];
den=conv([1,3,1],[1,3,1]);
G=tf(num,den);
set(G,'ioDelay',4)
G
运行结果为:
Transferfunction:
6s+30
exp(-4*s)*------------------------------
s^4+6s^3+11s^2+6s+1
例1-4、已知传递函数
,提取系统的分子和分母多项式(实验)
解:
提取系统的分子和分母多项式程序为:
>>num=6*[1,5];
den=conv([1,3,1],[1,3,1]);
G=tf(num,den)
[numden]=tfdata(G,'v')
运行结果为:
Transferfunction:
6s+30
------------------------------
s^4+6s^3+11s^2+6s+1
num=
000630
den=
161161
例1-5例1-5 某系统的零极点模型为:
方法2:
利用算子(实验)
>>s=zpk('s')
G=6*(s+5)^2/((s+1)*(s+2)*(s+2+2)*(s+2-2))
运行结果为:
Zero/pole/gain:
6(s+5)^2
-------------------
s(s+1)(s+2)(s+4)
例1-7已知系统传递函数
,求零极点及增益,并绘制系统零极点分布图。
(实验)
(1)零极点及增益:
〉〉num=[1,4,11];
den=conv([1,6,3],[1,2,0]);
G=tf(num,den)
[z,p,k]=zpkdata(G,'V')
运行结果为:
Transferfunction:
s^2+4s+11
--------------------------
s^4+8s^3+15s^2+6s
z=
+
-
p=
0
k=
1
(2)系统零极点分布图:
〉〉num=[1,4,11];
den=conv([1,6,3],[1,2,0]);
G=tf(num,den)
pzmap(G)
Transferfunction:
s^2+4s+11
--------------------------
s^4+8s^3+15s^2+6s
例1-11 给定零极点模型:
用MATLAB命令得出其等效的零极点传递函数模型。
输入程序的过程中要注意大小写。
〉〉den1=conv([132j],[13-2j]);
den2=conv(den1,[1]);
G=tf(conv([12],[17]),conv([10],den2))
运行结果为:
G=
s^2+9s+14
-----------------------------------------------
s^6+s^5+18s^4+s^3+4s^2+6s
实验内容:
1、特征多项式的建立与特征根的求取在命令窗口依次运行下面命令,并记录各命令运行后结果
>>p=[1,3,0,4]
p=
1304
>>r=roots(p)
r=
+
-
>>p=poly(r)
p=
2、求单位反馈系统的传递函数:
输入运行命令:
>>numg=[1];deng=[500,0,0];
numc=[1,1];denc=[1,2];
[num1,den1]=series(numg,deng,numc,denc);
[num,den]=cloop(num,den,-1);
printsys(num,den)
运行结果:
num/den=
s+1
----------------------------
500s^3+1000s^2+4s+4
3、传递函数零、极点的求取
在命令窗口依次运行下面命令,并记录各命令运行后结果:
>>num1=[6,0,1];
den1=[1,3,3,1];
z=roots(num1)
z=
0+
0-
>>p=roots(den1)
p=
+
-
>>n1=[1,1];n2=[1,2];d1=[1,2*i];d2=[1,-2*i];d3=[1,3];
num2=conv(n1,n2)
num2=
132
>>den2=conv(d1,conv(d2,d3))
den2=
13412
>>printsys(num2,den2)
num/den=
s^2+3s+2
----------------------
s^3+3s^2+4s+12
>>num=conv(num1,den2);
den=conv(den1,num2);
printsys(num,den)
num/den=
6s^5+18s^4+25s^3+75s^2+4s+12
-------------------------------------------
s^5+6s^4+14s^3+16s^2+9s+2
>>pzmap(num,den),title('零极点图')
4、求反馈联接系统的传递函数:
在命令窗口依次运行下面命令,并记录各命令运行后结果:
>>numg=[1];deng=[500,0,0];numc=[1,1];denc=[1,2];
numh=[1,1];denh=[1,2];
[num,den]=feedback(numg,deng,numh,denh)
运行结果:
num=
0012
den=
500100011
>>printsys(num,den)
num/den=
s+2
---------------------------
500s^3+1000s^2+s+1
5、自行利用MATLAB命令求取以下系统传递函数,并记录下结果。
>>G1=tf(2,[110]);
G2=tf([12],[13]);
Gp=feedback(G1,G2,1);
G3=tf(10,[11]);
Gs=series(G3,Gp);
H=tf([50],[168]);
Gc=feedback(Gs,H,-1)
Transferfunction:
20s^3+180s^2+520s+480
-----------------------------------------------------
s^6+11s^5+43s^4+67s^3+118s^2+252s-32
实验二、典型环节的MATLAB仿真
一、实验目的:
1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。
2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。
3.定性了解各参数变化对典型环节动态特性的影响
二、 实验内容:
按下列各典型环节的传递函数,建立相应的SIMULINK仿真模型,观察并记录其单位阶跃响应波形。
(1)比例环节G1(s)=1和G1(s)=2;
Simulink图形实现:
示波器显示结果:
(2)惯性环节G1(s)=1/s+1和G2(s)=1/+1
Simulink图形实现:
示波器显示结果:
(3)积分环节G1(s)=1/s
Simulink图形实现:
示波器显示结果:
(4)微分环节G1(s)=s
Simulink图形实现:
示波器显示结果:
(5)比例+微分环节(PD)
1)、G1(s)=s+2
Simulink图形实现:
示波器显示结果:
2)、G2(s)=s+1
Simulink图形实现:
示波器显示结果:
(6)比例+积分环节
1)、G1
(1)=1+1/s
Simulink图形实现:
和
示波器显示结果:
1)G2(s)=1+1/2s
Simulink图形实现:
示波器显示结果:
实验三、控制系统的时域分析
一、实验目的
学习利用MATLAB进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性。
二、实验内容
(一)稳定性
1.系统传函为
,试判断其稳定性
>>roots([1,4,25])
运行结果:
ans=
+
-
特征方程的根都具有负实部,因而该系统为稳定的。
2.用Matlab判断
的稳定性
>>roots([1,7,3,5,2])
运行结果:
ans=
+
+
-
+
特征方程的根不是全部都具有负实根,因而该系统是不稳定的。
(二)阶跃响应
1.二阶系统
1)键入程序,观察并记录单位阶跃响应曲线如图14所示。
>>G=tf([0,0,10],[1,2,10]);
t=0:
:
5;
c=step(G,t);
plot(t,c)
Css=dcgain(G)
Css=
1
图14MATLAB绘制的响应曲线
2)计算系统的闭环根、阻尼比、无阻尼振荡频率,并记录
>>num=[10];
den=[1,2,10];
G=tf(num,den);
roots(den)
wn=sqrt(num)
znb=2/(2*wn)
ans=
+
-
wn=
znb=
3)记录实际测取的峰值大小、峰值时间及过渡过程时间,并填表:
相关理论知识可填下表:
=
>>num=[10];
den=[1,2,10];
G=tf(num,den);
step(num,den);
grid
[y,t]=step(G);
[Y,k]=max(y);
cmax=Y
tp=t(k);
i=length(t);
C=dcgain(G);
while(y(i)>*C)&(y(i)<*C)
i=i-1;
end
time2=t(i)
while(y(i)>*C)&(y(i)<*C)
i=i-1;
end
time5=t(i)
cmax=
time2=
time5=
实际值
理论值
峰值Cmax
峰值时间tp
过渡时间
ts
4)修改参数,分别实现
和
的响应曲线,并记录
>>wn=sqrt(10);
znb=1;
num=[wn^2];
den=[1,2*znb*wn,wn^2]
G=tf(num,den);
step(G)
holdon
znb=2;
den=[1,2*znb*wn,wn^2]
G=tf(num,den);
step(G)
grid
title
den=
den=
(三)系统动态特性分析
用Matlab求二阶系统
和
的峰值时间
上升时间
调整时间
超调量
。
1.二阶系统
>>G=tf([120],[1,12,120]);
[y,t]=step(G);
[Y,K]=max(y);
tp=t(K)
c=dcgain(G);
n=1;
whiley(n)n=n+1;
end
tr=t(n)
i=length(t);
while(y(i)>*c)&(y(i)<*c)
i=i-1;
end
ts=t(i)
ct1=(Y-c)/c*100%
结果:
tp=
tr=
ts=
ct1=
2.二阶系统
>>G=tf([],[1]);
[y,t]=step(G);
[Y,k]=max(y);
tp=t(k)
C=dcgain(G);
n=1;
whiley(n)n=n+1;
end
tr=t(n)
i=length(t);
while(y(i)>*C)&(y(i)<*C)
i=i-1;
end
ts=t(i)
ct1=(Y-c)/c*100
显示结果:
tp=
tr=
ts=
+003
ct1=
实验四、控制系统的根轨迹分析
一、实验目的
1.利用计算机完成控制系统的根轨迹作图
2.了解控制系统根轨迹图的一般规律
3.利用根轨迹图进行系统分析
二、实验内容
1-1.
>>G=tf(1,[conv([1,2,2],[1,6,13]),0]);
rlocus(G);
grid
title('RootLocusPlotofG(s)=K/[s(s+2s+2)(s^2+6s+13)]')
[K,P]=rlocfind(G)
Selectapointinthegraphicswindow
结果显示:
selected_point=+
K=
P=
+
-
+
-
所以K的取值范围是:
01-2.
>>s=tf('s');
G=(s+12)/((s+1)*(s^2+12*s+100)*(s+10));
rlocus(G)
grid
title('G(s)=K(s+12)/[(s+10)(s^2+12*s+100)(s+10)]的根轨迹曲线')
[K,P]=rlocfind(G)
Selectapointinthegraphicswindow
selected_point=
+
K=
+003
P=
+
+
-
所以K值的取值范围是:
01-3.
>>s=tf('s');
G=+1)/(s**s+1)**s^2+*s+1));
rlocus(G)
grid
title('G(s)=K+1)/[s+1)^2++1)]的根轨迹曲线')
[K,P]=rlocfind(G)
Selectapointinthegraphicswindow
selected_point=
+
K=
P=
+
-
+
-
所以K值的取值范围是:
0>>s=tf('s');
G=(s^2+2*s+4)/(s*(s+4)*(s+6)*(s^2+4*s+1));
G1=feedback(G,1);
rlocus(G1);
grid
title('RootLocusPlotofG(s)=K(s^2+2*s+4)/(s*(s+4)*(s+6)*(s^2+4s+1))')
[K,P]=rlocfind(G1)
Selectapointinthegraphicswindow
selected_point=
+
K=
P=
+
-
+
-
实验六、控制系统的频率分析
一、实验目的
1.利用计算机作出开环系统的波特图
2.观察记录控制系统的开环频率特性
3.控制系统的开环频率特性分析
二、实验内容
1.用Matlab作Bode图.要求:
画出对应Bode图,并加标题.
(1)
>>num=[25];
den=[1,4,25];
bode(num,den)
grid
title('BodeDiagramofG(s)=25/(s^2+4*s+25)')
显示伯德图如下所示:
(2)
>>num=9*[1,,1];
den=conv([1,0],[1,,9]);
bode(num,den)
grid
title('BodeDiagramofG(s)=9*(s^2+*s+1)/(s*(s^2+*s+9)')
显示伯德图如下所示:
2.某开环传函为:
,试绘制系统的Nyquist曲线,并判断闭环系统稳定性,最后求出闭环系统的单位脉冲响应。
(1)系统的Nyquist曲线
>>num=[50];
den=conv([1,5],[1,-2]);
nyquist(num,den)
grid
title('NyquistPlotofG(s)=50/[(s+5)*s-2]')
显示奈氏图如下所示:
2)判断闭环系统稳定性及单位脉冲响应
>>num=[50];
den=conv([15],[1-2]);
G=tf(num,den);
G1=feedback(G,1);
figure;
nyquist(num,den)
%v=[-2,2,-2,2];
%axis(v)
grid
title('′NyquistPlotofG(s)=50/(s+5)*(s-2)')
figure;
impulse(G1)
显示结果:
3.已知系统结构图如图所示:
其中:
(1)
(2)
要求:
(a)作波特图,并将曲线保持进行比较
>>Gc1=tf([1],[1]);
Gc2=tf([1],[110]);
G=tf([1],[110]);
G11=series(Gc1,G);
G22=series(Gc2,G);
sys1=feedback(G11,1,-1);
sys2=feedback(G22,1,-1);
bode(sys1,sys2);
gridon;
title('波特图')
(b)分别计算两个系统的稳定裕度值,然后作性能比较
(1)
>>G1=tf([1],[1]);
G3=tf([1],[110]);
Ga=series(G1,G3);
sys1=feedback(Ga,1,-1);
bode(sys1);
margin(sys1);
[Gm,Pm,Wcq,Wcp]=margin(sys1)
grid
title('lige')
Gm=
Inf
Pm=
90
Wcq=
Inf
Wcp=
(2)
>>num=[1];
den=conv([10],[11]);
G2=tf(num,den);
G3=tf([1],[110]);
Gb=series(G2,G3);
sys2=feedback(Gb,1,-1);
bode(sys2);
margin(sys2);
[Gm,Pm,Wcq,Wcp]=margin(sys2)
grid
title('lige')
gridon
Warning:
Theclosed-loopsystemisunstable.
In(line25)
InDynamicSystem/margin(line65)
Gm=
Inf
Pm=
Wcq=
NaN
Wcp=
(b)输入命令:
>>num=[1];
den=conv([1,0],[1,1]);
G1=tf(num,den);
G2=tf(1,1);
G3=series(G1,G2);
G=feedback(G3,1);
[Gm,Pm,Wcg,Wcp]=margin(G)
显示结果:
Gm=Inf
Pm=90
Wcg=Inf
Wcp=
实验七、数字PID控制
一、实验目的
1.了解PID控制器中P、I、D三种基本控制作用对控制系统性能的影响。
2.进行PID控制器参数工程整定技能训练。
二、实验内容
(a)
(b)
(c)