1第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(n0)disp('系统不稳定')elsedisp('系统稳定')2end系统的闭环极点为-2.0000+6.6332i-2.0000-6.6332i-2.0000系统稳定pzmap(num,den)例2:已知离散控制系统闭环脉冲传递函数8.036.046236.032)(23452345zzzzzzzzzzzG判别系统的稳定性。解:num=[2,3,-1,0.6,3,2];3den=[6,4,-1,0.6,3,0.8];[z,p]=tf2zp(num,den);ss=find(abs(p)1);n=length(ss);if(n0)disp('系统不稳定')elsedisp('系统稳定')end系统稳定z=-1.71190.7176+0.7483i0.7176-0.7483i-0.6116+0.4115i-0.6116-0.4115ip=0.5496+0.5842i0.5496-0.5842i-0.7332+0.3929i-0.7332-0.3929i-0.2995pzmap(num,den)42.利用特征值判断系统的稳定性状态空间描述下的系统稳定的充要条件是A的所有特征值均具有负实部。例3:已知系统的状态方程为:uxx222244675.025.075.125.1125.15.025.025.025.125.425.25.025.1525.2判断系统的稳定性。解: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);5r=roots(p)ss=find(real(r)0);n=length(ss);if(n0)disp('系统不稳定')elsedisp('系统稳定')end结果为:系统稳定rr=-1.5000-1.5000-0.5000+0.8660i-0.5000-0.8660i5.2控制系统的时域分析1.step函数的用法y=step(num,den,t):其中num,den分别为系统传函的分子和分母多项式系数,t为选定的仿真时间向量,一般可由t=0:step:final等步长产生。该函数返回值y为系统在仿真中所得输出组成的矩阵。[y,x,t]=step(num,den):时间向量t由系统模型特性自动生成,状态变量x返回为空矩阵。6[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)7impulse(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:系统的闭环传函如下:14.01)(2sssG试求其单位阶跃响应曲线。解:num=1;den=[1,0.4,1];t=0:0.1:40;step(num,den,t);gridonxlabel('t'),ylabel('y')title('阶跃响应')8可直接用num=1;den=[1,0.4,1];t=0:0.1:40;[y,x,t]=step(num,den,t);plot(t,y)例5:系统的闭环传函如下:14.01)(2sssG试求其单位斜坡输入响应曲线。num=1;den=[1,0.4,1];t=0:0.1:40;u=t;lsim(num,den,u,t)gridon9title('单位斜坡输入响应')xlabel('t'),ylabel('y')例6:反馈系统如下图(a)所示,其中1102)(2ssssG,系统输入信号如图(b)所示的三角波,试求取系统输出响应。解:num1=[12];den1=[1101];10[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:单位反馈系统如下图所示,其中sssG425)(2,试在同一坐标系下绘制输入信号为u1(t)=1+0.2sin(4t)和u2(t)=0.3t+0.3sin(5t)时系统的响应曲线y1(t),y2(t).11解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:在同一个坐标系中绘制典型二阶系统、具有零点的二阶系统和三阶系统的阶跃响应曲线,并比较它们的性能。系统的传函分别为:12)6.18.0)(6.18.0(2.3)(1jsjssG)133.0)(6.18.0)(6.18.0(2.3)(2sjsjssG)6.18.0)(6.18.0()133.0(2.3)(3jsjsssG解:法一: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)gridholdonstep(num2,den2)step(num3,den3)13法二: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我们还可以分析控制系统的一些动态性能指标,如最大超调量、峰值时间、上升时间、稳态值等等。考虑上面的例子:14155.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为对应的根轨16迹增益。此时可采用plot(R,’x’)绘制根轨迹图。在系统分析过程中,常常希望确定根轨迹上某一点处的增益值K,这时可利用MATLAB中rlocfind函数(在使用此函数之前要先得到系统的根轨迹),其调用格式为:[K,poles]=rlocfind(num,den)[K,poles]=rlocfind(A,B,C,D)此时会在屏幕上的图形中生成一个十字光标,使用鼠标移动至所希望的位置,然后单击鼠标左键即可得到该极点的位置坐标值poles及它所对应的增益K的值.例9:已知单位反馈系统的开环传函为:)14)(15.0()1()(ssssKsG使用MATLAB绘制系统的根轨迹。解:num=[11];den=conv([10],conv([0.51],[41]));rlocus(num,den)title('根轨迹图')17实际上有时我们只对根轨迹上的一部分取值范围感兴趣。K=0:0.05:80;18poles=rlocus(num,den,K);plot(poles)例10:已知开环传函为:)2)(1()(sssKsG绘制系统的根轨迹图,并分析系统稳定的K值范围。解:num=1;den=conv([10],conv([11],[12]));rlocus(num,den)19求根轨迹与虚轴的交点及临界根轨迹增益。[k,poles]=rlocfind(num,den)20k=6.0000poles=-3.00000.0000+1.4142i0.0000-1.4142i求分离点及对应的根轨迹增益。[k1,poles1]=rlocfind(num,den)k1=0.3849poles1=-2.1547-0.4239-0.421421稳定性分析:由图可知,闭环系统是条件稳定的。因为根轨迹与虚轴的交点处的增益为6,则当0K6时,系统稳定;当K6时,系统不稳定。因为根轨迹在实轴上的分离点处的增益为0.3849,则当0K0.3849时,系统为单调衰减稳定;当K0.3847时,系统为震荡衰减稳定。在系统运行过程中,条件稳定是危险的。一旦参数变化,则系统的稳定性可能会明显变坏。例11:已知随动系统结构如下图所示,被控对象和控制器的传递函数分别为:)1(10)(sssGp,ssGc1)(采用MATLAB绘制系统的根轨迹,并分析当0时,参数对系统性能的影响。解:系统的开环传函为:22)1()1(10)()()(ssssGsGsGpco闭环系统特征方程为:010102sss等效系统根轨迹方程为:0101012sss等效系统的开环传递函数为:1010