第5章 控制系统计算机辅助分析.docx
《第5章 控制系统计算机辅助分析.docx》由会员分享,可在线阅读,更多相关《第5章 控制系统计算机辅助分析.docx(29页珍藏版)》请在冰豆网上搜索。
第5章控制系统计算机辅助分析
第5章控制系统计算机辅助分析
5.1控制系统的稳定性分析
1.利用闭环极点判断系统的稳定性
例1:
已知控制系统结构图如下图所示:
求取系统的闭环极点,并判别闭环系统的稳定性。
解:
>>num1=30;den1=[0.5,1];
>>num2=conv(0.2,[1,2]);den2=conv([10],[0.25,1]);
>>[numa,dena]=series(num1,den1,num2,den2);
>>[num,den]=cloop(numa,dena);
>>p=roots(den);
>>disp('系统的闭环极点为'),disp(p)
>>ss=find(real(p)>0);n=length(ss);
>>if(n>0)
disp('系统不稳定')
elsedisp('系统稳定')
end
系统的闭环极点为
-2.0000+6.6332i
-2.0000-6.6332i
-2.0000
系统稳定
pzmap(num,den)
例2:
已知离散控制系统闭环脉冲传递函数
判别系统的稳定性。
解:
>>num=[2,3,-1,0.6,3,2];
>>den=[6,4,-1,0.6,3,0.8];
>>[z,p]=tf2zp(num,den);
>>ss=find(abs(p)>1);n=length(ss);
>>if(n>0)
disp('系统不稳定')
elsedisp('系统稳定')
end
系统稳定
z=
-1.7119
0.7176+0.7483i
0.7176-0.7483i
-0.6116+0.4115i
-0.6116-0.4115i
p=
0.5496+0.5842i
0.5496-0.5842i
-0.7332+0.3929i
-0.7332-0.3929i
-0.2995
>>pzmap(num,den)
2.利用特征值判断系统的稳定性
状态空间描述下的系统稳定的充要条件是A的所有特征值均具有负实部。
例3:
已知系统的状态方程为:
判断系统的稳定性。
解:
A=[2.25-5-1.25-0.5;2.25-4.25-1.25-0.25;
0.25-0.5-1.25-1;1.25-1.75-0.25-0.75];
p=poly(A);
r=roots(p)
ss=find(real(r)>0);n=length(ss);
if(n>0)
disp('系统不稳定')
elsedisp('系统稳定')
end
结果为:
系统稳定
>>r
r=
-1.5000
-1.5000
-0.5000+0.8660i
-0.5000-0.8660i
5.2控制系统的时域分析
1.step函数的用法
y=step(num,den,t):
其中num,den分别为系统传函的分子和分母多项式系数,t为选定的仿真时间向量,一般可由t=0:
step:
final等步长产生。
该函数返回值y为系统在仿真中所得输出组成的矩阵。
[y,x,t]=step(num,den):
时间向量t由系统模型特性自动生成,状态变量x返回为空矩阵。
[y,x,t]=step(A,B,C,D,iu):
其中A、B、C、D分别为系统的状态空间系数阵,iu用来指定输入变量的序号,x为系统返回的状态轨迹。
如果对具体的响应值不感兴趣,而只想绘制系统的阶跃响应曲线,则可采用以下格式进行调用。
step(num,den)
step(num,den,t)
step(A,B,C,D,iu,t)
step(A,B,C,D,iu)
即前三种格式只返回变量值,而不画图;而后四种格式则只画图。
另外step函数可同时绘制出多个系统的阶跃响应曲线(此时可仿照plot函数的格式),如:
step(G1,’-r’,G2,’b*’,G3,’r’)
2.impulse函数的用法
impulse函数的调用格式与step函数相类似。
y=impulse(num,den,t)
[y,x,t]=impulse(num,den)
[y,x,t]=impulse(A,B,C,D,iu,t)
impulse(num,den)
impulse(num,den,t)
impulse(A,B,C,D,iu,t)
impulse(A,B,C,D,iu)
3.lsim函数的用法
impluse函数的调用格式与step、impluse函数相类似,所不同的是必须提供相关输入信号的特征。
lsim(G,u,t)%仅给出一种常用格式
4.initial函数的用法
在状态空间表达式的状态变量初始值给定时对其进行求解---即零输入响应。
例4:
系统的闭环传函如下:
试求其单位阶跃响应曲线。
解:
>>num=1;den=[1,0.4,1];
>>t=0:
0.1:
40;
>>step(num,den,t);
>>gridon
>>xlabel('t'),ylabel('y')
>>title('阶跃响应')
可直接用
>>num=1;den=[1,0.4,1];
>>t=0:
0.1:
40;
>>[y,x,t]=step(num,den,t);
>>plot(t,y)
例5:
系统的闭环传函如下:
试求其单位斜坡输入响应曲线。
>>num=1;den=[1,0.4,1];
>>t=0:
0.1:
40;
>>u=t;
>>lsim(num,den,u,t)
>>gridon
>>title('单位斜坡输入响应')
>>xlabel('t'),ylabel('y')
例6:
反馈系统如下图(a)所示,其中
,系统输入信号如图(b)所示的三角波,试求取系统输出响应。
解:
>>num1=[12];den1=[1101];
>>[num,den]=cloop(num1,den1);
>>u1=[0:
0.1:
1];
>>u2=[0.9:
-0.1:
-1];
>>u3=[-0.9:
0.1:
0];
>>t=0:
0.1:
4;
>>u=[u1,u2,u3];
>>lsim(num,den,u,t)
例7:
单位反馈系统如下图所示,其中
,试在同一坐标系下绘制输入信号为u1(t)=1+0.2sin(4t)和u2(t)=0.3t+0.3sin(5t)时系统的响应曲线y1(t),y2(t).
解
>>num1=25;den1=[140];
>>[num,den]=cloop(num1,den1);
>>t=0:
0.1:
5;
>>u1=1+0.2*sin(4*t);
>>u2=0.3*t+0.3*sin(5*t);
>>y1=lsim(num,den,u1,t);
>>y2=lsim(num,den,u2,t);
>>plot(t,y1,'r',t,y2)
>>grid
例8:
在同一个坐标系中绘制典型二阶系统、具有零点的二阶系统和三阶系统的阶跃响应曲线,并比较它们的性能。
系统的传函分别为:
解:
法一:
>>num1=3.2;
>>den1=conv([1,0.8+1.6j],[1,0.8-1.6j]);
>>num2=num1;den2=conv(den1,[0.33,1]);
>>num3=conv(num1,[0.33,1]);
>>den3=den1;
>>step(num1,den1)
>>grid
>>holdon
>>step(num2,den2)
>>step(num3,den3)
法二:
>>num1=3.2;
>>den1=conv([1,0.8+1.6j],[1,0.8-1.6j]);
>>num2=num1;den2=conv(den1,[0.33,1]);
>>num3=conv(num1,[0.33,1]);
>>den3=den1;
>>sys1=tf(num1,den1);
>>sys2=tf(num2,den2);
>>sys3=tf(num3,den3);
>>step(sys1,sys2,sys3)
>>grid
我们还可以分析控制系统的一些动态性能指标,如最大超调量、峰值时间、上升时间、稳态值等等。
考虑上面的例子:
5.3根轨迹分析方法
所谓根轨迹,是指当开环系统的某一参数从0变化到无穷大时,闭环系统的特征方程的根在s平面上所形成的轨迹(一般地,将这一参数选作开环系统的增益K)。
控制系统的根轨迹分析就是利用根轨迹图分析系统性能及参数变化对系统性能的影响。
MATLAB采用rlocus函数来绘制根轨迹。
其调用格式为:
rlocus(num,den)
rlocus(num,den,K)%用指定的K绘制根轨迹
rlocus(A,B,C,D)
rlocus(A,B,C,D,K)%用指定的K绘制根轨迹
若要返回变量值,则
[R,K]=rlocus(num,den)
[R,K]=rlocus(num,den,K)
[R,K]=rlocus(A,B,C,D)
[R,K]=rlocus(A,B,C,D,K)
其中,R为系统的闭环极点列向量,K为对应的根轨迹增益。
此时可采用plot(R,’x’)绘制根轨迹图。
在系统分析过程中,常常希望确定根轨迹上某一点处的增益值K,这时可利用MATLAB中rlocfind函数(在使用此函数之前要先得到系统的根轨迹),其调用格式为:
[K,poles]=rlocfind(num,den)
[K,poles]=rlocfind(A,B,C,D)
此时会在屏幕上的图形中生成一个十字光标,使用鼠标移动至所希望的位置,然后单击鼠标左键即可得到该极点的位置坐标值poles及它所对应的增益K的值.
例9:
已知单位反馈系统的开环传函为:
使用MATLAB绘制系统的根轨迹。
解:
>>num=[11];
>>den=conv([10],conv([0.51],[41]));
>>rlocus(num,den)
>>title('根轨迹图')
实际上有时我们只对根轨迹上的一部分取值范围感兴趣。
>>K=0:
0.05:
80;
>>poles=rlocus(num,den,K);
>>plot(poles)
例10:
已知开环传函为:
绘制系统的根轨迹图,并分析系统稳定的K值范围。
解:
>>num=1;
>>den=conv([10],conv([11],[12]));
>>rlocus(num,den)
求根轨迹与虚轴的交点及临界根轨迹增益。
>>[k,poles]=rlocfind(num,den)
k=
6.0000
poles=
-3.0000
0.0000+1.4142i
0.0000-1.4142i
求分离点及对应的根轨迹增益。
>>[k1,poles1]=rlocfind(num,den)
k1=
0.3849
poles1=
-2.1547
-0.4239
-0.4214
稳定性分析:
由图可知,闭环系统是条件稳定的。
因为根轨迹与虚轴的交点处的增益为6,则当06时,系统不稳定。
因为根轨迹在实轴上的分离点处的增益为0.3849,则当00.3847时,系统为震荡衰减稳定。
在系统运行过程中,条件稳定是危险的。
一旦参数变化,则系统的稳定性可能会明显变坏。
例11:
已知随动系统结构如下图所示,被控对象和控制器的传递函数分别为:
,
采用MATLAB绘制系统的根轨迹,并分析当
时,参数
对系统性能的影响。
解:
系统的开环传函为:
闭环系统特征方程为:
等效系统根轨迹方程为:
等效系统的开环传递函数为:
其中,
。
>>num=[1,0];
>>den=[1,1,10];
>>rlocus(num,den)
从图可以看出,只要
,则该系统是稳定的。
求取分离点。
>>[taod,sd]=fld(num,den)
taod=
0.5325
sd=
-3.1623
当
时,特征根为共轭复数,系统欠阻尼,系统为震荡衰减稳定;当
时,系统临界阻尼,此时有两个相等的实根;当
时,系统过阻尼,系统为单调衰减稳定。
%求分离点的子函数
function[k,sd]=fld(num,den)
dnum=polyder(num);
dden=polyder(den);
d1=conv(num,dden);d2=conv(dnum,den);
pp=d1-d2;%A’(s)B(s)-A(s)B’(s)
s=[];
s=roots(pp);
kk=-polyval(den,s)./polyval(num,s);%带入特征方程验证
ll=length(kk);
kn=(kk>0);
k=[];sd=[];
fori=1:
ll
ifkn(i)==1
n0=i;
k=kk(n0)/10%
=K/10
sd=s(n0)
end
end
可以对图形绘制栅格线,如:
>>sgrid%grid
栅格线由等阻尼系数和等自然频率线构成,阻尼系数ξ的范围为0-1。
5.4控制系统的频域分析
频域分析法是应用频率特性研究控制系统的一种经典方法。
控制系统的频率特性反映的是系统对正弦输入信号的响应性能。
频域分析法的特点是可以根据开环频率特性来分析闭环系统的性能,从频率响应中可获取带宽、转折频率和闭环系统稳定性等系统特征.
1.频率特性
频率特性是指系统在正弦信号作用下,系统的频率响应特性,用G(jw)表示。
稳态输出与输入信号的振幅之比A(w)称为幅频特性;稳态输出与输入信号的初始相位之差φ(w)称为相频特性。
频率特性也可以用复数的代数形式表示为:
其中,
为
的实部,称为实部特性,
为
的虚部,称为虚部特性。
显然:
2.常用的几种开环频率特性图
(1)恩奎斯特—Nyquist图(极坐标,幅相特性图)
它是以频率w为参数量,以复平面上的向量表示
的方法。
利用开环系统的Nyquist图,可判断闭环系统的稳定性。
Nyquist稳定判据:
当w从-∞到+∞变化时,Nyquist曲线逆时针包围(-1,j0)点的次数N,等于系统开环传函位于右半s平面的极点数P,即N=P,则闭环系统稳定,否则闭环系统不稳定。
使用Nyquist稳定判据需注意几点问题:
●右半s平面不包括虚轴
●N是指Nyquist曲线逆时针和顺时针方向包围(-1,j0)点的代数和。
●若Nyquist曲线正好穿过(-1,j0)点,表明系统有位于虚轴上的极点,系统处于临界稳定状态(工程认为这种系统是不能正常工作的)。
●若开环系统中含有积分环节(即有开环0极点),应在Nyquist曲线补画上的一段曲线,补充的一段通常是以
为起点,
为终点,圆心在坐标原点,半径为无穷大的n个半圆(n为积分环节的个数)。
●上述Nyquist稳定判据是在开环传函无零极点对消的情况下进行的,若存在零极点对消的情况,那么只有在用Nyquist稳定判据判定系统稳定,且被消去的极点也是稳定的,此时闭环系统才是稳定的。
MATLAB采用nyquist函数来绘制幅相特性曲线,其常用调用格式为:
nyquist(num,den)
nyquist(num,den,w)%用指定的w绘制根轨迹
nyquist(A,B,C,D)
nyquist(A,B,C,D,w)%多输入系统为nyquist(A,B,C,D,iu,w)
若要返回变量值,则:
[Re,Im]=nyquist(num,den)
[Re,Im,w]=nyquist(num,den)
[Re,Im]=nyquist(num,den,w)
[Re,Im,w]=nyquist(num,den,w)
[Re,Im]=nyquist(A,B,C,D)
[Re,Im,w]=nyquist(A,B,C,D)
[Re,Im]=nyquist(A,B,C,D,w)
[Re,Im,w]=nyquist(A,B,C,D,w)
其中,Re,Im,w分别为频率特性的实部向量、虚部向量和对应的频率向量。
有了这些值就可以使用命令plot(Re,Im)直接绘制系统的Nyquist图。
例12:
已知系统的开环传递函数为:
绘制Nyquist图,并判断闭环系统的稳定性。
解:
>>num=0.5;den=[1,2,1,0.5];
>>nyquist(num,den)
因为Nyquist曲线没有包围(-1,j0)点,则N=0
>>roots(den)
ans=
-1.5652
-0.2174+0.5217i
-0.2174-0.5217i
可知,P=0,即P=N,所以该系统是闭环稳定的。
例13:
已知系统的开环传递函数为:
绘制Nyquist图,并判断闭环系统的稳定性。
解:
>>k=50;z=[];p=[-5,2];
>>[num,den]=zp2tf(z,p,k);
>>nyquist(num,den)
由图可知Nyquist曲线逆时针包围(-1,j0)点1次,N=1,而P=1,所以闭环系统稳定。
(2)Bode图(对数频率特性图)
Bode图由对数幅频特性和相频特性两条曲线组成。
对数幅频特性是频率
MATLAB采用bode函数来绘制幅相特性曲线,其调用格式与nyquist相类似。
例:
已知系统的开环传递函数为:
其中,wn=0.7,试分别绘制
=0.1,0.4,1.0,1.6,2.0时的Bode图。
解:
>>w=logspace(-1,1);
>>wn=0.7;
>>zeta=[0.2,0.4,0.8,1.0,1.6];
>>fori=1:
5
sys=tf([wn*wn],[1,2*zeta(i)*wn,wn*wn]);
bode(sys,w);
holdon
end
>>grid
例14:
已知系统的开环传递函数为:
绘制其Bode图。
解:
>>num=1;den=poly([0,-1,2]);
>>w=logspace(-1,1,100);
>>[m,p]=bode(num,den,w);
>>subplot(211)
>>semilogx(w,20*log10(m))
>>grid
>>title('对数幅频特性曲线')
>>xlabel('\omega(1/s)')
>>ylabel('L(\omega)(db)')
>>subplot(212)
>>semilogx(w,p)
>>grid
>>title('对数相频特性曲线')
>>xlabel('\omega(1/s)')
>>ylabel('\phi(\omega)(deg)')