#自动控制原理大.docx
《#自动控制原理大.docx》由会员分享,可在线阅读,更多相关《#自动控制原理大.docx(36页珍藏版)》请在冰豆网上搜索。
#自动控制原理大
第1章绪论
一、例题
[例1]线性系统的建模仿真:
①开环控制系统;②闭环控制系统。
解①开环控制系统
运行后可得下图:
②闭环控制系统
运行后得下图:
[例2]非线性系统的建模仿真:
①开环控制系统;②闭环控制系统。
、
解①开环控制系统
运行后得下图:
②闭环控制系统
运行后得下图:
二、仿真
下图为在Simulink工具里面的搭建的仿真模块,实现控制的稳定性。
图1.1控制系统结构模型图
对模型中的数据进行合理的设计,运行图形如下:
图1.2控制系统结构波形图
分析:
由图示结果看出较为稳定,超调量小,调节时间也很短。
在t=0.2s时基本达到稳定。
第2章自动控制系统的数学模型
一、例题
[例12]两个子系统为
将两个系统按并联方式连接,可输入:
num1=3。
den1=[1,4]。
num2=[2,4]。
den2=[1,2,3]。
[num,den]=parallel(num1,den1,num2,den2>
则得
num=
051825
den=
161112
因此
[例13]两个子系统为
将两个系统按反馈方式连接,可输入
numg=[251]。
deng=[123]。
numh=[510]。
denh=[110]。
[num,den]=feedback(numg,deng,numh,denh>
则得
num=
2255110
den=
11577840
因此闭环系统的传递函数为
二、仿真
系统1为:
,系统2为
求按串联、并联、正反馈、负反馈连接时的系统状态方程及系统1按单位负反馈连接时的状态方程。
编写程序如下:
clc
a1=[01。
-1-2]。
b1=[0。
1]。
c1=[13]。
d1=[1]。
a2=[01。
-1-3]。
b2=[0。
1]。
c2=[14]。
d2=[0]。
[a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2>%串联连接
[a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2>%并联连接
[a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,+1>%正反馈连接
[a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2>%负反馈连接
[a,b,c,d]=cloop(a1,b1,c1,d1>%单位负反馈连接
运行结果如下<仅列出串联连接的结果):
串联连接
a=b=
01000
-1-3131
00010
00-1-21
c=
1400
d=
0
分析:
可见在MATLAB中,可以用程序建立各种数学模型,而且可以进行各类数学模型见的转换,因此利用MATLAB建立数学模型应用较为广泛。
第3章时域分析法
要判断系统的稳定性,只需要确定系统闭环极点在s平面上的分布。
利用MATLAB命令可以快速求出闭环系统零极点并绘制其零极点图,也可以方便绘出系统的时间响应曲线。
因此,利用MATLAB可以可以方便、快捷地对控制系统进行时域分析。
[例18]已知连续系统的传递函数为
要求:
①求出该系统的零、极点及增益。
②绘出起零、极点图,判断系统稳定性。
解可执行如下程序:
%Thisprogramcreatesatransferfunctionandthenfinds/displaysitspoles、zerosand%gain
num=[3,2,5,4,6]。
den=[1,3,4,2,7,2]。
[z,p,k]=tf2zp(num,den>。
pzmap(num,den>。
title('Polesandzerosmap'>
程序执行结果如下:
z=0.4019+101965ip=-1.7680+1.2673i
0.4019-101965i1.7680-1.2673i
-0.7352+0.8455i0.4176+1.1130i
-0.7352-0.8455i0.4176-1.1130i
-0.2991
K=3
同时屏幕上显示系统的零极点分布图<如图所示)
分析:
无论是从所求的系统零、极点,还是绘制出的零、极点图,都可以看到系统中有两个极点位于s的右半平面,因此,该系统不稳定。
[例19]已知典型二阶系统的传递函数为
式中
=6,绘图系统在
=0.1,0.2,……,1.0,2.0时的单位阶跃响应。
解可执行如下程序:
%Thisprogramplotsacurveofstepresponse
wn=6。
kosi=[0.1,0.2,1.0,2.0]。
figure(1>
holdon
forkos=kosi
num=wn.^2。
den=[1,2*kos*wn,wn.^2]。
step(num,den>
end
title('StepResponse'>
holdoff
从图中可以看出,在过阻尼和临界阻尼曲线中,临界阻尼的响应具有最短的上升时间,响应速度最快;在欠阻尼的的响应曲线中,阻尼系数越小,超调量越大,上升时间越短。
[例20]已知三阶系统的传递函数为
绘制系统的单位阶跃响应和单位脉冲响应曲线。
解可执行如下程序:
%Thisprogramplotsacurveofstepresponseandstepimpulseforthreeorder%system
clf
num=[100200]。
den=[11.4100.44100.04]。
h=tf(num,den>。
[y,t,x]=step(h>
[y1,t1,x1]=impulse(h>
subplot(211>,plot(t,y>
title('StepResponse'>
xlabel('time'>,ylabel('amplitude'>
subplot(212>,plot(t1,y1>
title('impulseresponse'>
xlabel('time'>,ylabel('amplitude'>
第4章根轨迹法
一、例题
[例9]已知单位反馈系统的开环传递函数为
试在系统的闭环的根轨迹图上选择一点,求出该点的增益K及其系统的闭环极点位置,并判定在该点系统的闭环稳定性。
解调用rlocfind(>函数,Matlab程序为:
num=[13]。
den=conv(conv(conv([10],[15]>,[16]>,[122]>。
sys=tf(num,den>。
rlocus(sys>
[k,poles]=rlocfind(sys>
title('根轨迹分析'>
xlabel('实轴'>
ylabel('虚轴'>
执行程序后用光标在根轨迹图上选一点,可得到相应的该点的系统的增益和其闭环极点:
k=
82.3756
poles=
-5.6903+1.2000i
-5.6903-1.2000i
-2.2680
0.3243+1.7654i
0.3243-1.7654i
二,仿真
例1.某开环系统传递函数如
,要求绘制系统的闭环根轨迹,分析其稳定性,并绘制出当k=55和k=56时系统的闭环冲激响应。
解:
可执行如下程序:
clc
numo=[12]。
den=[143]。
deno=conv(den,den>。
figure(1>
k=0:
0.1:
150。
rlocus(numo,deno,k>
title('rootlocus'>
[p,z]=pzmap(numo,deno>。
[k,p1]=rlocfind(numo,deno>。
%求出系统临界稳定增益
k
figure(2>%验证系统的稳定性
subplot(211>
k=55。
num2=k*[12]。
den=[143]。
den2=conv(den,den>。
[numc,denc]=cloop(num2,den2,-1>。
impulse(numc,denc>
title('impulseresponsek=55'>。
subplot(212>
k=56。
num3=k*[12]。
den=[143]。
den3=conv(den,den>。
[numcc,dencc]=cloop(num3,den3,-1>。
impulse(numcc,dencc>
title('impulseresponsek=56'>。
程序执行结果如下图所示:
运行后系统的闭环根轨迹如图4.1所示:
图4.1.闭环系统根轨迹图
执行程序后,用光标在根轨迹图上选一点,可得相应的该点的系统增益。
如:
selected_point=0.1789-3.4627ik=72.2648
selected_point=-0.1836+2.7795ik=39.5736
<注:
运行了两次,选取了两个不同的值。
K=72.2648时系统不稳定;k=39.5736时,系统稳定)
同时,通过绘制k=55和k=56系统的闭环冲激响应曲线,验证其稳定性。
所得图如下:
图4.2.系统的闭环冲激响应曲线
分析:
当k=55时,系统根轨迹处于s左半平面,即其所有闭环极点的实部均为负值,所以在该点处,闭环系统是稳定的,如图4.2上所示。
当k=56时,系统根轨迹处于s右半平面,其闭环极点的实部有正值,所以在该点处,闭环系统是不稳定的,如图4.2下所示。
第5章频域分析法
[例11]有一个二阶系统,其自然频率
=1,阻尼因子
=0.2,要绘制出系统的幅频和相频曲线,可输入:
[a,b,c,d]=ord(1,0.2>。
bode(a,b,c,d>。
title('BodePlot'>
执行后得到下图:
[例12]典型二阶系统:
绘制出
取不同值时的Bode图。
解取
=6,
取[0.1:
1.0]时二阶系统的Bode图可直接采用Bode得到。
MATLAB程序为
%Example5.1
%
wn=6。
kosi=[0.1:
1.0]。
w=logspace(-1,1,100>。
figure(1>
num=[wn.^2]。
forkos=kosi
den=[12*kos*wnwn.^2]。
[mag,pha,w1]=bode(num,den,w>。
subplot(2,1,1>。
holdon
semilogx(w1,mag>。
subplot(2,1,2>。
holdon
semilogx(w1,pha>。
end
subplot(2,1,1>。
gridon
title('BodePlot'>。
xlabel('Frequency(rad/sec>'>。
ylabel('GaindB'>。
subplot(2,1,2>。
gridon
xlabel('Frequency(rad/sec>'>。
ylabel('Phasedeg'>。
holdoff
执行后得下图:
[例13]有系统:
绘制出系统的Bode图。
解MATLAB程序为:
%Example5.2
%
k=100。
z=[-4]。
p=[0-0.5-50-50]。
[num,den]=zp2tf(z,p,k>。
bode(num,den>。
title('BodePlot'>
执行后得下图:
[例14]有二阶系统:
现要得到系统的Nyquist曲线,可输入:
num=[251]。
den=[123]。
nyquist(num,den>。
title('NyquistPlot'>
执行后可得到下图:
因为曲线没有包围-1+j0点且p=0,所以G(s>单位负反馈构成的闭环系统稳定。
[例15]开环系统:
解MATLAB程序为:
%Example5.3
%
k=50。
z=[]。
p=[-52]。
[num,den]=zp2tf(z,p,k>。
figure(1>
nyquist(num,den>
title('NyquistPlot'>。
figure(2>
[num1,den1]=cloop(num,den>。
impulse(num1,den1>。
title('ImpulseResponse'>
执行后得下图:
从图中可以看出,系统Nyquist曲线按逆时针方向包围(-1,j0>点1圈,而开环系统包含右半S平面上的1个极点,因此闭环系统稳定。
[例16]开环系统:
绘制系统的Nyquist曲线,判断闭环系统稳定性,绘制出闭环系统的单位冲激响应。
解MATLAB程序为:
%Example5.4
%
k=50。
z=[]。
p=[-1-52]。
[num,den]=zp2tf(z,p,k>。
figure(1>
nyquist(num,den>
title('NyquistPlot'>。
figure(2>
[num1,den1]=cloop(num,den>。
impulse(num1,den1>。
title('ImpulseResponse'>
执行后得下图:
第6章控制系统的综合与校正
[6.12]设单位反馈系统的开环传递函数为:
使用Bode设计法设计滞后超前校正装置,使校正后的系统能满足如下的性能指标:
1在单位斜坡信号作用下,系统的速度误差系数
。
2系统校正后的剪切频率
。
3系统校正后相角稳定裕度
。
4校正后系统时域性能指标:
。
MATLAB命令:
k0=30。
n1=1。
d1=conv(conv([10],[0.11]>,[0.21]>。
[mag,phase,w]=bode(k0*n1,d1>。
figure(1>。
margin(mag,phase,w>。
holdon
figure(2>。
s1=tf(k0*n1,d1>。
sys=feedback(s1,1>。
step(sys>
执行后得到:
(1>未校正系统的BODE图:
(2>未校正系统的阶跃响应曲线:
%求滞后校正器的传递函数:
MATLAB命令:
wc=1.5。
k0=40。
n1=1。
d1=conv(conv([10],[11]>,[14]>。
beta=9.5。
T=1/(0.1*wc>。
betat=beta*T。
Gc1=tf([T1],[betat1]>
执行后所得结果:
Transferfunction:
6.667s+1
63.33s+1
%求超前校正器的传递函数:
MATLAB命令:
n1=conv([040],[6.6671]>。
d1=conv(conv(conv([10],[11]>,[14]>,[63.331]>。
sope=tf(n1,d1>。
wc=1.5。
num=sope.num{1}。
den=sope.den{1}。
na=polyval(num,j*wc>。
da=polyval(den,j*wc>。
g=na/da。
g1=abs(g>。
h=20*log10(g1>。
a=10^(h/10>。
wm=wc。
T=1/(wm*(a>^(1/2>>。
alphat=a*T。
Gc=tf([T1],[alphat1]>
执行后所得结果:
Transferfunction:
1.82s+1
0.2442s+1
%校验:
MATLAB命令:
n1=40。
d1=conv(conv([10],[11]>,[14]>。
s1=tf(n1,d1>。
s2=tf([6.6671],[63.331]>。
s3=tf([1.821],[0.24421]>。
sope=s1*s2*s3。
[mag,phase,w]=bode(sope>。
margin(mag,phase,w>
执行后所得结果<校正后的系统Bode图)为:
%校验后性能指标及阶跃响应:
MATLAB命令:
globalyt。
k0=30。
n1=40。
d1=conv(conv([10],[11]>,[1,4]>。
s1=tf(n1,d1>。
s2=tf([6.6671],[63.331]>。
s3=tf([1.821],[0.24421]>。
sope=s1*s2*s3。
sys=feedback(sope,1>。
step(sys>
[y,t]=step(sys>。
运行后,得到校正后的单位阶跃响应曲线如图示:
第7章离散控制系统
一、例题
[例21]某二阶系统:
要求其阶跃响应,可输入:
num=[2-3.41.5]。
den=[1-1.60.8]。
dstep(num,den>
title('DiscreteStepResponse'>
执行后可得下图:
[例23]有系统:
可输入:
num=[2-3.41.5]。
den=[1-1.60.8]。
axis('square'>
zgrid('new'>
rlocus(num,den>。
title('RootLocus'>
执行后可得下图:
[例24]已知离散系统:
,绘制出系统的Nyquist曲线,判别闭环系统的稳定性,并绘制出闭环系统的单位冲激响应。
解MATLAB程序如下:
num=0.692。
den=[1,-1.758,0.375]。
[z,p,k]=tf2zp(num,den>。
p
figure(1>
dnyquist(num,den,0.1>
title('离散Nyquist曲线图'>。
xlabel('实数轴'>。
ylabel('虚数轴'>。
figure(2>
[num1,den1]=cloop(num,den>。
dimpulse(num1,den1>。
title('离散冲激响应'>。
xlabel('时间'>。
ylabel('振幅'>。
运行程序可得下图:
p=
1.5096
0.2484
由仿真图可知该离散系统是发散的。
二、仿真
例1.已知一个离散系统如图所示,其中采样周期TS=1s.,对象模型
,零阶保持器
,试求开环增益的稳定范围。
图7.1系统模型图
解:
执行如下程序:
num=1。
den=[110]。
sys=tf(num,den>。
%连续系统传递函数
c2d(sys,1>%离散系统传递函数
运行结果如下:
Transferfunction:
0.3679z+0.2642
--------------------------------
z^2-1.368z+0.3679
Samplingtime:
1
继续编写程序,求取该离散系统的根轨迹图:
num=[0.36790.2642]。
den=[1-1.3680.3679]。
G=tf(num,den,-1>。
rlocus(G>
[k,poles]=rlocfind(G>
运行结果如下:
用鼠标单击根轨迹与单位圆的交点,可以得到交点的极点坐标以及交点处的开环增益K值,如图7.2所示。
运行程序如下:
selected_point=1.0118-0.0047iselected_point=-0.7227+0.0047i
k=0.0127k=778.5564
poles=poles=
0.9873-284.3382
0.3761-0.7247
selected_point=0.2536-0.9643i
k=2.3513
poles=
0.2515+0.9622i
0.2515-0.9622i
图7.2离散系统的根轨迹图
分析:
在程序运行中选取了三个点,极点、零点以及根轨迹与单位园的交点,可得在整个根轨迹图中,k=0~778.5564。
在离散系统根轨迹图上,虚线表示的是单位元,由理论分析可知,系统闭环传递函数的所有极点位于z平面的单位圆内时,该离散系统是稳定的。
从根轨迹的分布图上可以看出,当0令k=1,编写程序,还可以求得该离散系统的单位冲激响应曲线,进一步验证该离散系统是否稳定。
程序如下:
num=[0.36790.2642]。
den=[1-1.3680.3679]。
[num1,den1]=cloop(num,den>。
dimpulse(num1,den1>
运行程序,得到离散闭环系统的单位冲激响应如图7.3,可见该离散系统在k=1时是稳定的。
第8章控制系统状态空间分析与综合
[例19]已知线性定常系统如图所示:
试求系统的的状态方程,选择正定的实对称矩阵Q后计算李雅普诺
夫方程的解并利用李雅普诺夫函数确定系统的稳定性。
解选择正定的实对称矩阵
编写如下程序:
n1=5。
d1=[11]。
s1=tf(n1,d1>。
n2=1。
d2=[12]。
s2=tf(n2,d2>。
n3=1。
d3=[10]。
s3=tf(n3,d3>。
s123=s1*s2*s3。
sys=feedback(s123,1>。
[ABCD]=tf2ss(sys.num{1},sys,den{1}>。
[ABCD]=tf2ss(sys.num{1},sys.den{1}>。
q=[100。
010。
001]。
ifdet(A>~=0
p=lyap(A,q>
det1=det(p(1,1>>
det2=det(p(1:
2,1:
2>>
detp=det(p>
end
程序运行结果为:
p=
23.0000-0.5000-13.5000
-0.500013.5000-0.5000
-13.5000-0.50008.2000
det1=
23.0000
det2=
310.2500
detp=
71.1750
因为
故有:
是负定的。
从运行结果可以看出:
对各阶主子行列式第9章非线性控制系统
[例19]试用描述函数法分析下图非线性系统的稳定性:
解程序如下:
k=input('k='>
num=[000k]。
den=[1650]。
w=0.1:
0.1:
100。
[re,im,w]=nyquist(num,den,w>。
v=[-44,-55]。
axis(v>。
plot(re,im>。
title('Curvesof-1/N(X>andG(jw>'>。