MATLAB根轨迹绘制.docx
《MATLAB根轨迹绘制.docx》由会员分享,可在线阅读,更多相关《MATLAB根轨迹绘制.docx(42页珍藏版)》请在冰豆网上搜索。
![MATLAB根轨迹绘制.docx](https://file1.bdocx.com/fileroot1/2022-11/25/816eb0f3-7af8-4320-b333-13dc558dbdac/816eb0f3-7af8-4320-b333-13dc558dbdac1.gif)
MATLAB根轨迹绘制
控制系统的计算机辅助设计从成为一门专门的学科以来已有20多年的历史,它一直受到控制界的普遍重视,在其发展过程中出现了各种各样的实用工具和理论成果。
本论文借助于国际上流行的控制系统计算机辅助设计软件MATLAB6.5对连续控制系统进行分析,首先,以自动控制原理为基础,对连续控制系统进行分析和设计,主要是系统的传函,零极点和状态空间表达式之间的转换;然后进行连续控制系统辅助设计及编程,包括系统的单位脉冲,单位阶跃,零输入和任意输入下的响应,还有系统的频率响应和特性的分析,如Nyquist图,Bode图,Nichols图和根轨迹的绘制。
最后用GUI编制控制系统用户界面实现上述功能。
关键词:
连续控制系统;系统模型;时域回应;频域回应;根轨迹;GUI
Abstract
Controlthecalculatorassistanceofsystemadesignfrombecomeaspecializedacademicshavealreadythereisthehistoryformorethan20years,ithasbeensubjectedtoawidespreadvalueofcontroltheboundaryandappearedpracticaltoolandtheoriesresultofvariouseachkindinitthedevelopmenttheprocess.
ThisdisquisitionusesthesoftwarenamedMATLAB6.5editiontoanalysesthecontinuoussystem.Firstly,ittakesautomaticcontrolprincipleasfoundation,andcarryonanalysisanddesignthecontinuouscontrolsystem.ItmainlycontainTransferfunction,theconversionofzeroextremitiesandtheappearancespaceexpressiontypes;Thencarryoncontinuouscontrolsystemassistancedesignandplaitdistance,includetheunitpulseofsystem,theunitrankjump,zeroimportationwitharbitrarilyinputnextrespondto,returnsystematicfrequencytorespondtowiththeanalysisofthecharacteristic,likeNyquistdiagram,Bodediagram,drawofNicholsdiagramandroottrack.Finallydrawupcustomer'sinterfaceofthecontrolsystemtocarryouttheabove-mentionedfunctionwiththeGUI.
Keywords:
continuouscontrolsystem;system'smodel;timeresponse;frequencyresponse;rootlocus;GUI
第1章连续控制系统的计算机辅助设计和分析的概述1
1.1控制系统的数学模型与建立1
1.2控制系统的模型转换4
第2章基于MATLAB的连续控制系统的设计与分析6
2.1连续控制系统的时域分析6
2.2连续控制系统的频域分析11
2.3连续控制系统的根轨迹分析与设计16
第3章图形用户接口(GUI)制作25
3.1图形用户接口的创建概述25
3.2控制系统分析与设计的GUI33
3.3控制系统的综合分析与设计39
结论44
参考文献45
致谢46
第1章连续控制系统的计算机辅助设计和分析的概述
1.1控制系统的数学模型与建立
控制理论分析,设计控制系统的第一步是建立实际系统的数学模型.所谓数学模型就是根据系统运动过程的物理,化学等规律,所写出的描述系统运动规律,特性,输出与输入关系的数学表达式。
在控制系统中,常用的数学模型有微分方程模型,传递函数模型,状态空间模型以及零极点模型等。
在一些场合下需要用到其中一种模型,而在其他场合则可能又需要其他模型,所以掌握模型之间的转换很重要。
本章就控制系统常用的一些数学模型如微分方程模型、传递函数模型、状态空间模型和零极点模型的基本概念,包括模型的建立、转换作出说明,作为连续控制系统的计算机辅助设计的预备知识,为下面的设计及编程打下基础。
1.1.1系统的时域模型
连续时间系统用微分方程描述。
对于单输入单输出(SISO)系统数学模的一般形式为:
any(t)+an-1y(t)++a0y(t)=bmu(t)+bm-1u(t)++b0u(t)
其中,y和u分别为系统的输入与输出,ai与bi分别表示输入和输出各导
数项系数。
一、系统的传递函数模型
1、模型介绍
对于一个SISO连续系统,系统相应的微分方程如上式所示,对此微分方程作Laplace变换,则该连续系统的传递函数为
mm-1
Y(S)b1s+b2s++bm+1
G(S)==nn-1
U(S)a1s+a2s++ans+an+1
2、模型建立
在MATLAB中,用函数TF可以建立一个连续系统传递函数模型,其调用格式为
sys=tf(num,den)
其中,num为传递函数分子系统向量,den为传递函数分母系数向量。
3、程序举例连续系统的传递函数为
用MATLAB建立该系统传递函数模型和运行结果如下:
%MATLABPROGRAMnum=[1,2];den=[1,1,10];sys=tf(num,den)>>amp101Transferfunction:
s^2+s+10
若系统的输入和输出量不是一个,而是多个,则称多输入多输出系统(MIMO)。
和SISO系统类似,MIMO系统的数学模型形式也有微分方程,传递函数,矩阵状态空间和零极点。
二、系统的状态空间模型
1、模型介绍
LTI(线性时不变)系统总是能用一阶微分方程组来表示,写成矩阵或者说是状态空间的形式,这些方程可以表示为:
x(t)=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t)
用状态空间表示的系统在MATLAB中用(A,B,C,D)形式表示,A,B,C,D都是矩阵,并且被当作独立变量来对待。
状态空间描述是MATLAB中对LTI系统最为自然的一种模型描述方法其中u是nu维控制输入向量,x是nx维状态向量,y是ny维输出向量。
,而对多输入多输出MIMO系统而言,状态空间描述是唯一的模型描述方法。
2、模型建立:
在MATLAB中,用函数SS可以建立一个连续系统传递函数模型,其调用格式为
sys=ss(A,B,C,D)
其中A,B,C,D为系统状态方程系数矩阵。
3、程序举例
若给定系统的状态方程系数矩阵为
-404-139-150
A=100
010
用MATLAB建立系统的程序模型如下:
%MATLABPROGAM
a=[-40.4,-139,-150;1,0,0;0,1,0];
b=[1;0;0];c=[0,18,360];
d=0;sys=ss(a,b,c,d);
三、系统的零极点增益模型
1、模型介绍零极点模型实际上是传递函数模型的另一种形式,其方法是对原系统传递函数的分子和分母多项式进行分解,以获得系统的零极点表达形式。
对于SISO系统来说,其零极点模型如下:
m
i=1(s+zi)(s+z1)(s+z2)(s+zm)
(s+p)(s+p1)(s+p2)(s+pn)
式中,z(i=1,2,…,m)和p(i=1,2,…,n)分别为系统的零点和极点,K为系统增益。
2、模型建立
在MATLAB中,用函数SS可以建立一个连续系统传递函数模型,其调用格式为:
sys=zpk(Z,P,K)
其中Z,P,K分别为系统的零点向量、极点向量和增益。
3、程序举例
已知系统传函为
G(s)=
18(s+2)
(s+0.4)(s+15)(s+25)
用MATLAB建立系统模型程序和运行结果如下:
%MATLABPROGRAM
z=-2;
p=[-0.4,-15,-25];sys=zpk(z,p,18);
>>amp105
Zero/pole/gain:
(s+0.4)(s+15)(s+25)
1.2控制系统的模型转换
对系统的数学模型描述主要有微分方程模型,传递函数模型,状态空间模型和零极点模型等形式,而这些模型之间确实存在着内在的等效关系。
在一些场合下,需要用其中一种形式的模型,而在另一种场合下可能又需要另外形式的模型,所以模型之间的相互转换是十分重要的。
对于LIT系统,其状态空间模型由拉氏变换可得对应的传递函数模型为
H(s)=C(sI-A)-1B+D
因此,当已知系统的状态空间模型(A,B,C,D),经矩阵运算,可求得系统的传递函数G(s)。
在MATLAB中,用函数SS自动完成上面运算。
MATLAB提供了十分简单的模型转换方式。
函数tf,zpk,ss不仅用于系统模型的建立,也可用于模型形式之间的转换。
一、将非传递函数形式的系统模型sys转换成传递函数模型:
Newsys=tf(sys)
二、将非零极点增益形式的系统模型sys转换成零极点增益模型
Newsys=zpk(sys)
三、将非状态空间的系统模型sys转换成状态空间模型。
Newsys=ss(sys)
四、传递函数模型转换为状态空间模型:
[ABCD]=tf2ss(num,den)
五、传递函数模型转换成零极点模型
[z,p,k]=tf2zp(num,den)
六、状态空间模型装换为传递函数模型
[num,den]=ss2tf(A,B,C,D,iu)
系统的状态方程可以表示为:
x(t)=Ax(t)+Bu(t)
y(t)=Cx(t)+Du(t)
相应的传递函数为:
G(s)=CsI-AB+D
七、[例1.1]将系统G(z)=(0.04z+0.04)/(z^3-z^2+81z+0.9)转换为零极点增益形式,采样周期为0.01s。
用MATLAB编写程序和运行结果如下:
%MATLABPROGRAM1-1
num=[0.040.04];
den=[1-2810.9];sys-tf=tf(num,den,0.01)sys-zpk=zpk(sys-tf)
>>amp101
Transferfunction:
0.04z+0.04
z^3-2z^2+81z+0.9
Samplingtime:
0.01
Zero/pole/gain:
0.04(z+1)
(z=0.01111)(z^2-2.011z+81.02)
第2章基于MATLAB的连续控制系统的设计与分析
2.1连续控制系统的时域分析
系统的时间响应是指系统在输入信号或初始状态作用下,系统的输出随时间变化的情况。
系统的时间相应反映了系统的特征和性能,如系统的快速性,稳定性及阻尼性能等。
充分了解和分析系统的响应,以及与系统结构,参数之间关系,是我们设计和校正系统的基础。
在对控制系统进行时域分析时,通常使输入信号为单位阶跃函数或单位脉冲函数,由此求得系统的输出响应即控制系统的单位阶跃响应(step)和单位脉冲响应(impulse)。
MATLAB6.5提供了丰富的函数用以对连续控制系统进行时域分析,这些函数是:
1、单位阶跃响应函数step
2、单位脉冲响应函数impulse
3、零输入响应函数initial
4、任一输入下的仿真函数lsim
2.1.1连续控制系统的单位阶跃响应
函数STEP用来计算LIT的单位阶跃响应。
适用于连续时间系统,也适用于离散时间系统;适用于SISO系统,也可用于MIMO系统。
一、单位阶跃响应函数调用方式:
Step(sys)
Step(sys,Tfinal)Step(sys,T)Step(sys1,sys2,…,T)
其中,sys为系统模型;Tfinal为仿真终止时间;T为用户指定的仿真时间向量,Ts为采样周期,对于连续时间系统T=[To:
dt:
Tfinal],dt为连续系统离散化的采样周期,To为仿真开始时间。
二、程序举例
已知控制系统传递函数:
编程绘制其阶跃响应曲线。
程序如下:
num=1;
den=[1,2,8];
step(num,den)结果如图2-1-1所示
图2-1-1阶跃响应曲线
2.1.2连续控制系统的单位脉冲响应
函数IMPULSE用来计算LTI系统的单位脉冲响应。
它适用连续时间系统,也适用于离散时间系统;既适用于SISO系统,也适用于MIMO系统。
一、脉冲响应的调用格式:
Impulse(sys)
Impulse(sys,Tfinal)
Impulse(sys,T)Impulse(sys1,sys2,…,T)[Y,T]=impulse(sys)[Y,T,X]=impulse(sys)
、程序举例:
已知系统:
y=[0,1]x+[0]u
x=-12x+1u
-3-40编写程序绘制其单位脉冲响应曲线
程序如下所示:
a=[-1,2;-3,-4];b=[1;0];c=[0,1];d=0;impulse(a,b,c,d);结果如图2-1-2所示
图2-1-2单位脉冲响应曲线
2.1.3连续控制系统的零输入响应
函数INITIAL用来计算零输入条件下,初始状态Xo所引起的响应。
该函数仅适用于状态空间模型所描述的系统。
一、函数调用格式:
Initial(sys,X0)
Initial(sys,X0,Tfinal)
Initial(sys,X0,T)
Initial(sys1,sys2,…,X0,T)
[Y,T,X]=initial(sys,X0)其中x0为初始状态向量。
二、程序举例:
系统如下:
求初始状态:
x0=10时的零输入响应。
程序如下:
a=[-1,7;-22,-4];b=[1;0];
c=[0,1];
d=0;
x0=[1;0];initial(a,b,c,d,x0);
结果如图2-1-3所示
图2-1-3零输入响应
2.1.4连续控制系统在任一输入下的仿真函数信号发生器函数GENSIG用以产生周期输入信号供系统时间响应函数LSIM使用。
一、函数调用格式
[U,T]=gensig(Type,Tau)
[U,T]=gensig(Type,Tau,Tf,Ts)
其中,Type为信号模型,sin-正弦波,square-方波,pulse-周期脉冲波;Tau为信号周期;Tf为信号的时间区间;Ts为采样周期;U为信号值向量;T为和U对应的时间向量。
在大量的应用领域中,人们经常面临用一个解析函数描述数据(通常是测量值)的任务。
对这个问题有两种方法。
在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。
这里讨论的方法是曲线拟合或回归。
人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。
其中,t是采样时间向量,矩阵u的每一列表示一个输入,每一行对应一个采样时刻,因此它的列数应该与系统sys的输入个数相同,它的行数应该与向量t的长度相同。
任意输入响应函数LSIM是用来仿真系统对任意输入信号的响应,基本调用格式用来绘制任意输入响应图。
Lsim(sys,U,T)
其中,sys为仿真系统;U为输入信号向量;T为和输入U对应的时间向量。
对于状态空间模型,调用时可加入初始状态值X0,调用格式为:
Lsim(sys,U,T,X0)
绘制多个系统对同一个任意输入响应图的调用格式为
Lsim(sys1,sys2,…,U,T,X0)
返回响应数据但不绘制响应图的调用格式为
[Ys,Ts]=lsim(sys,U,T)
其中,Ys相应值向量;Ts为和Ys相对应的时间向量。
对于状态空间模型,另一个调用格式为
[Ys,Ts,Xs]=lsim(sys,U,T,X0)其中,Xs为仿真过程中系统状态的轨迹。
二、程序举例
计算一模型对三种不同输入信号的响应数据,并画图。
t=0:
0.01:
20;
s1=sin(t);
s2=randn(size(t));
[s3,tt]=gensig(‘square',10,20,0.01);
sys=tf(10,[1210]);
[y1,t1]=lsim(sys,s1,t);
[y2,t2]=lsim(sys,s2,t);
[y3,t3]=lsim(sys,s3,tt);
subplot(2,2,1),plot(t1,y1),title(‘Input:
SineSig')
subplot(2,2,2),plot(t3,y3),title(‘Input:
SquareSig')
subplot(2,1,2),plot(t2,y2),title(‘Input:
RandSig')
结果如图2-1-4所示
图2-1-4三种不同输入信号响应图
2.2连续控制系统的频域分析
系统的时域分析是分析系统的直接方法,比较直观,但离开计算机仿真,分析高阶系统是困难的。
系统频域分析是工程广为应用的系统分析和综合的间接方法。
频率分析不仅可以了解系统的频率特性,如截止频率、谐振频率等,而且可以间接了解系统时域特性,如快速性、稳定性等,因此,频率响应分析是分析和设计系统非常简便和可靠的方法。
2.2.1频率响应和频率特性根据频率响应的基本原理,若一个线性系统受到频率为w的正弦信号时,它的输出仍然为正弦信号,其幅值与输入信号成M(w)比例关系,而且输出与输入信号之间有一个相位差K(w)和M(w)是关于w的有理函数,这样就可以通过M(w)和K(w)来表示系统的特征。
选用MATLAB控制工具箱中的伯德响应、尼柯尔斯响应、奈奎斯特响应等分析函数可以得到带宽、增益、转折频率、闭环稳定性等系统特征。
一、一般概念频率响应是指系统对正弦输入的稳态响应。
考虑传递函数为G(s)的线性系统,若输入正弦信号
x(t)=Xsint
根据微分方程解的理论,系统的稳态输出仍然为与输入信号同频率的正弦信号,只是其幅值和相位发生了变化。
输出幅值正比于输入的幅值Xi,而且是输入正弦频率的函数。
输出的相位与Xi无关,只与输入信号产生一个相位差而且也是输入信号的函数。
即线性系统的稳态输出是:
x(t)=X()sin[t+()]
由此可知,输出信号与输入信号的幅值比是的函数,成为系统的幅频特性,记为A。
输出信号与输入信号的相位差也是的函数,记为系统的相频特性()。
幅频特性:
A()=x0()
x1()
相频特性:
()=()-()频率特性是指系统在正弦信号作用下,稳态输出与稳态输入之比对频率的关系特性,可表示为:
G(j)=x0(j)
xi(j)
MATLAB控制工具箱中,函数FREQRESP用于计算LTI系统的频率相应,它既适用于连续时间系统,也适用于离散时间系统。
函数调用格式为
H=freqresp(sys,w)其中,sys为系统模型;w为指定的实频率向量,单位为rad/s。
二、频率特性是传递函数的一种特殊形式任何线性连续时间系统的频率特性都可以由系统传递函数中的s以j代替而求的。
频率特性图标法在经典控制论中,常用图标法来描述系统的频率特性,他们是:
(1)幅相频特性Nyquist图,由0→表示极坐标上的G(j)的幅值
和相角的的关系。
(2)对数幅相特性---Bode图有两个图组成:
对数幅频特性图和对数相频设计图。
(3)对数幅相特性Nichols图,它是以为参变量来表示对数幅值和相
角。
MATLAB工具箱中的函数可以轻松实现绘制。
2.2.2Nyquist图的绘制
一、函数调用格式
频率特性G(j)是频率的复变函数,可以在复平面上用一个向量来表示。
该向量的幅值A()=G(j),相角()=G(j)。
当频率从0→变化时,G(j)矢端的轨迹即为频率特性。
因此,把频率特性在复平面上用极坐标表因此,把频率特性在复平面上用极坐标表示的几何图形,称为频率特性的极坐标图,或称Nyquist图。
MATLAB控制工具箱中有绘制Nyquist图的函数NYQUIST,调用格式为Nyquist(sys)Nyquist(sys,)
Nyquist(sys1,sys2,…,sysN)Nyquist(sys1,sus2,…,sysN,)[Re,Im,]=nyquist(sys)
其中sys为系统模型;为频率向量;Re为频率响应的实部;Im为频率响应虚部。
MATLAB中,频率范围可由两个函数给定:
logspace(,,N)产生频率在1和2之间N个对数分布频率点;linspace(1,2,N)产生频率在1和2之间N个线性分布的频率点;N可以缺省。
函数NYQUIST用于计算LTI系统的Nyquist频率响应。
调用时,若不包含左边输出变量,函数NYQUIST绘制系统的nyquist图;调用时,若包含左边输出变量,只输出变量的向量,这常用语分析系统频率特性。
此外,MATLAB控制工具箱中还有绘制Nichols图的函数NICHOLS,其调用格式为:
Nyquist(sys)Nyquist(sys,)Nyquist(sys1,sus2,…,sysN,)[mag,phase,]=nyquist(sys)
函数nichols(sys)用于计算LTI系统的频率响应并绘制Nichols图,分析系统的开环和死循环特性。
二、程序举例
2s2+5s+1绘制系统Gk(s)=2s+5s+1ks2+2s+3
的Nyquist图和Nichols图。
程序如下:
sys=tf([251],[12