MATLAB程序设计课件第9章_第1页
MATLAB程序设计课件第9章_第2页
MATLAB程序设计课件第9章_第3页
MATLAB程序设计课件第9章_第4页
MATLAB程序设计课件第9章_第5页
已阅读5页,还剩401页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB程序设计及应用第9章MATLAB在工程中的应用

MATLAB程序设计及应用第9章MATLAB在工程中的应1第9章MATLAB在工程中的应用

cc由于MATLAB的使用非常方便,并且提供了数值计算、图形绘制、数据处理、图像处理等方面的强大功能,因此许多工程领域专家在MATLAB的基础上为他们擅长的领域写了一些专用的应用程序集,称之为工具箱(Toolbox)。第9章MATLAB在工程中的应用cc由于MAT2第9章MATLAB在工程中的应用

cc

MATLAB中含有丰富的专门用于控制系统分析与设计的函数,可以实现对线性系统的建模、时域或频域分析与设计,利用的是控制系统工具箱中的各种算法程序,而这些算法程序大部分都是M函数文件,可以直接调用。9.1MATLAB在自动控制中的应用第9章MATLAB在工程中的应用ccMATLA39.1MATLAB在自动控制中的应用

9.1.1控制系统数学模型及转换的MATLAB实现控制系统的数学模型通常是指动态数学模型。自动控制系统中最基本也是最重要的数学模型是微分方程,它反映了部件或系统的动态运行规律。应用拉氏变换将线性微分方程转化为传递函数,以及基于传递函数的图形化形式——系统结构图,都是自动控制系统的数学模型。MATLAB处理的是数组对象,而其控制系统工具箱处理的系统是线性时不变(LTI)系统。在MATLAB中,可以用4种数学模型表示自动控制系统,其中前3种是用数学表达式描述。每种数学模型都有连续时间系统和离散时间系统两个类别。MATLAB中的Simulink结构图是第4种数学模型。9.1MATLAB在自动控制中的应用9.1.14

9.1.1控制系统数学模型及转换的MATLAB实现

1.控制系统数学模型的MATLAB实现

LTI对象可以是连续时间系统,也可以是离散时间系统。连续时间系统一般是由微分方程来描述的。而线性系统又是以线性微分方程来描述的。假设系统的输入、输出信号分别为和,则系统的微分方程可写成 (9.1)其中,和为常数。9.1.1控制系统数学模型及转换的MATLAB实现5

9.1.1控制系统数学模型及转换的MATLAB实现

对应的传递函数定义为:在零初始条件下,系统输出量的拉氏变换与输入量的拉氏变换之比 (9.2)

对于离散时间系统,常常以定常系数线性差分方程来描述。单输入单输出(SISO)的LTI系统的差分方程为

(9.3)其中,和为常数。9.1.1控制系统数学模型及转换的MATLAB实现6

9.1.1控制系统数学模型及转换的MATLAB实现

对应的脉冲传递函数为 (9.4)

无论是连续时间系统还是离散时间系统,传递函数的分子、分母多项式均按‘s’或‘z’的降幂排列,都可以直接用分子、分母多项式系数构成的两个向量num和den表示系统,即 (9.5)9.1.1控制系统数学模型及转换的MATLAB实现7

9.1.1控制系统数学模型及转换的MATLAB实现在MATLAB中,分别用一维“行”数组(向量)表示完分子、分母多项式系数后,再利用控制系统工具箱的函数tf就可以用一个变量表示传递函数模型。tf函数的调用格式为 sys=tf(num,den) sys=tf(num,den,T)【说明】

在第1种格式中,输出宗量sys为连续时间系统的传递函数模型;输入宗量num和den分别为系统的分子与分母多项式系数向量。在第2种格式中,输出宗量sys为离散时间系统的脉冲传递函数模型;输入宗量num和den含义同上;T为采样周期,当T=-1或T=[]时,系统的采样周期未定义。9.1.1控制系统数学模型及转换的MATLAB实现8

9.1.1控制系统数学模型及转换的MATLAB实现需要注意的是:当多项式的某项系数为0时,千万不能忽略不写。如果忽略,多项式将降阶。

对于已知的传递函数模型,其分子与分母多项式系数向量可以分别用指令sys.num{1}和sys.den{1}求出。9.1.1控制系统数学模型及转换的MATLAB实现9

9.1.1控制系统数学模型及转换的MATLAB实现如果连续时间系统的传递函数用系统零点、极点和增益来表示,称为系统的零极点增益模型,即有

(9.6)其中,k为系统增益;-z1,-z2,…,-zm为系统零点;-p1,-p2,…,-pn为系统极点(下同)。

离散时间系统的脉冲传递函数也可用系统零点、极点和增益来表示,有

(9.7)9.1.1控制系统数学模型及转换的MATLAB实现10

9.1.1控制系统数学模型及转换的MATLAB实现

无论是连续时间系统还是离散时间系统,都可以直接用列向量z,p和k构成的向量组来表示,即有 (9.8)在MATLAB中,用函数zpk来建立控制系统的零极点增益模型。zpk函数的调用格式为 sys=zpk(z,p,k) sys=zpk(z,p,k,T)9.1.1控制系统数学模型及转换的MATLAB实现11

9.1.1控制系统数学模型及转换的MATLAB实现【说明】

第1种格式中,输出宗量sys为连续系统的零极点增益模型;输入宗量z,p和k分别为系统的零点、极点和增益。

第2种格式中,输出宗量sys为离散系统的零极点增益模型;输入宗量z,p和k含义同上;T为采样周期,当T=-1或T=[]时,系统的采样周期未定义。

对于已知的零极点增益模型,其零点与极点系数向量及增益可以分别用指令sys.z{1},sys.p{1}和sys.k求出。9.1.1控制系统数学模型及转换的MATLAB实现12

9.1.1控制系统数学模型及转换的MATLAB实现离散时间系统的脉冲传递函数模型还有一种以为因子的分子分母多项式的形式(即DSP形式),建立DSP形式脉冲传递函数模型的MATLAB函数为filt,其调用格式为 sys=filt(num,den) sys=filt(num,den,T)【说明】第1种格式用来建立一个采样周期未指定的DSP形式脉冲传递函数。第2种格式用来建立一个采样周期指定为T的DSP形式脉冲传递函数。9.1.1控制系统数学模型及转换的MATLAB实现13连续LTI系统的状态空间模型为

(9.9)其中,u(t)是系统控制输入向量;x(t)是系统状态向量;y(t)是系统输出向量;A为系统矩阵(或称状态矩阵);B为控制矩阵(或称输入矩阵);C为输出矩阵(或称观测矩阵);D为输入输出矩阵(或称直接传输矩阵)。

9.1.1控制系统数学模型及转换的MATLAB实现连续LTI系统的状态空间模型为9.1.1控14

9.1.1控制系统数学模型及转换的MATLAB实现离散时间系统的状态空间模型为

(9.10)其中,u(k)、x(k)和y(k)分别是离散时间系统的控制输入向量、系统状态向量和系统输出向量;A,B,C和D的含义同上;k表示采样点。

连续时间系统和离散时间系统的状态空间模型都可以直接用二维数组(即矩阵)组表示。9.1.1控制系统数学模型及转换的MATLAB实现15

9.1.1控制系统数学模型及转换的MATLAB实现在MATLAB中,用函数ss来建立控制系统的状态空间模型。ss函数的调用格式为 sys=ss(A,B,C,D) sys=ss(A,B,C,D,T)【说明】

第1种格式中,输出宗量sys为连续时间系统的状态空间模型。

第2种格式中,输出宗量sys为离散时间系统的状态空间模型;T为采样周期,当T=-1或T=[]时,系统的采样周期未定义。

对于已知的状态空间模型,其参数矩阵A,B,C和D可以分别用指令sys.a,sys.b,sys.c和sys.d求出。9.1.1控制系统数学模型及转换的MATLAB实现16

9.1.1控制系统数学模型及转换的MATLAB实现【例9.1】将传递函数模型输入到MATLAB工作空间。编写M脚本文件exam9_1.m如下:%exam9_1clearnum=[12,24,12,20];den=[2,4,6,2,2];sys=tf(num,den) %获得系统的数学模型9.1.1控制系统数学模型及转换的MATLAB实现17

9.1.1控制系统数学模型及转换的MATLAB实现exam9_1.m的运行结果【说明】

运行该程序后,在MATLAB的工作空间中可以看到一个变量,其值为一个1×1的传递函数。9.1.1控制系统数学模型及转换的MATLAB实现18

9.1.1控制系统数学模型及转换的MATLAB实现%exam9_2clearnum=[1.6,-5.8,3.9];den=[1,-0.7,2.4];sys=tf(num,den,0.1)sys1=filt(num,den,0.1)【例9.2】已知二阶离散时间系统的脉冲传递函数为

试求采样周期时,系统脉冲传递函数的DSP形式。编写M脚本文件exam9_2.m如下:9.1.1控制系统数学模型及转换的MATLAB实现19

9.1.1控制系统数学模型及转换的MATLAB实现exam9_2.m的运行结果9.1.1控制系统数学模型及转换的MATLAB实现20

9.1.1控制系统数学模型及转换的MATLAB实现%exam9_3clearp=[-1;-2;-3;-4];%注意应使用列向量z=[-5;-2+2i;-2-2i];sys=zpk(z,p,6)【例9.3】将零极点增益模型输入到MATLAB工作空间。编写M脚本文件exam9_3.m如下:9.1.1控制系统数学模型及转换的MATLAB实现21

9.1.1控制系统数学模型及转换的MATLAB实现exam9_3.m的运行结果【说明】

在MATLAB的零极点增益模型显示中,如果有复数零极点存在,则用二阶多项式来表示两个因式,而不直接展开成一阶复数因式。9.1.1控制系统数学模型及转换的MATLAB实现22

9.1.1控制系统数学模型及转换的MATLAB实现

不一定非要有用数学表达式描述的数学模型,才能对系统进行研究。MATLAB中特有的另外一种数学模型就是Simulink模型窗(叫做“untitled”窗)里的动态结构图。只要在Simulink工作窗里,按其规则(参见第8章)画出动态结构图,就是对系统建立了数学模型。再按规则将结构图的参数用实际系统的数据进行设置,就可以直接、方便地对系统进行各种仿真。9.1.1控制系统数学模型及转换的MATLAB实现23

9.1.1控制系统数学模型及转换的MATLAB实现

2.LTI对象模型之间的相互转换LTI对象模型之间的相互转换是指连续时间系统(或离散时间系统)的传递函数模型、零极点增益模型和状态空间模型之间的相互转换。直接应用函数tf,zpk和ss即可以完成。需要指出的是,此类转换从理论上讲是不存在转换误差的。9.1.1控制系统数学模型及转换的MATLAB实现24

9.1.1控制系统数学模型及转换的MATLAB实现【例9.4】已知系统的状态空间模型求其等效的传递函数模型和零极点增益模型。编写M脚本文件exam9_4.m如下:9.1.1控制系统数学模型及转换的MATLAB实现25%exam9_4clearA=[0.3,0.1,0.05;1,0.1,0;1.5,8.9,0.05];B=[2;0;4];C=[1,2,3];D=0;sys_ss=ss(A,B,C,D);sys_tf=tf(sys_ss)sys_zpk=zpk(sys_tf)exam9_4.m的运行结果

9.1.1控制系统数学模型及转换的MATLAB实现即传递函数模型为%exam9_4exam9_4.m的运行结果9.126

9.1.1控制系统数学模型及转换的MATLAB实现

3.连续时间模型与离散时间模型之间的相互转换MATLAB的控制系统工具箱还提供实现连续时间系统和离散时间系统之间相互转换的函数。这些函数对于传递函数模型、零极点增益模型和状态空间模型均适用。需要指出的是,此类转换从理论上讲是存在转换误差的。

9.1.1控制系统数学模型及转换的MATLAB实现27

9.1.1控制系统数学模型及转换的MATLAB实现如果有连续时间系统模型sysc,将其转换为离散时间系统模型的指令格式为 sysd=c2d(sysc,T,‘method’)【说明】

输出宗量sysd为转换后离散时间模型对象;输入宗量sysc为连续时间模型对象;T为采样周期,单位为sec;method用来指定离散化采用的方法(缺省时,method=zoh): zoh 采用零阶保持器; foh 采用一阶保持器; imp 采用脉冲响应不变法; tustin采用双线性变换法(Tustin法) prewarp 采用改进的Tustin法; matched 采用SISO系统的零极点根匹配法。9.1.1控制系统数学模型及转换的MATLAB实现28

9.1.1控制系统数学模型及转换的MATLAB实现如果有离散时间系统模型sysd,将其转换为连续时间系统模型的指令格式为 sysc=d2c(sysd,‘method’)【说明】

输出宗量sysc为转换后连续时间模型对象;输入宗量sysd为离散时间模型对象;method用来指定离散化采用的方法(缺省时,method=zoh): zoh 采用零阶保持器; tustin 采用双线性变换法(Tustin法) prewarp 采用改进的Tustin法; matched 采用SISO系统的零极点根匹配法。在该函数调用中无需再申明采样周期信息,因为该信息已包含在离散模型sysd中。9.1.1控制系统数学模型及转换的MATLAB实现29

9.1.1控制系统数学模型及转换的MATLAB实现

【例9.5】已知连续系统的传递函数模型为试分别对系统采用零阶保持器和双线性变换法求其离散化状态空间模型(设采样周期T=1sec)。编写M脚本文件exam9_5.m如下:9.1.1控制系统数学模型及转换的MATLAB实现30%exam9_5clearnum=[1];den=[1,3,2];sys_continuous=tf(num,den);t=1;%将连续传递函数转换成脉冲传递函数(zoh)disp('DiscreteSystem--usingc2dwithzoh')sys_discrete_zoh=c2d(sys_continuous,t);%将脉冲传递函数转换成状态空间模型sys_zoh=ss(sys_discrete_zoh)%采用双线性变换法

disp('DiscreteSystem--usingc2dwithtustin')sys_discrete_tustin=c2d(sys_continuous,t,'tustin');sys_tustin=ss(sys_discrete_tustin)

9.1.1控制系统数学模型及转换的MATLAB实现%exam9_59.1.1控制系统数学模型及转换31

9.1.1控制系统数学模型及转换的MATLAB实现exam9_5.m的运行结果(上半部)DiscreteSystem--usingc2dwithzoha=x1x2x10.5032-0.1991x20.250b=u1x10.5x20c=x1x2y10.39960.588d=u1y10Samplingtime:1Discrete-timemodel.9.1.1控制系统数学模型及转换的MATLAB实现32

9.1.1控制系统数学模型及转换的MATLAB实现exam9_5.m的运行结果(下半部)DiscreteSystem--usingc2dwithtustina=x1x2x10.33330x210b=u1x10.5x20c=x1x2y10.38890.1667d=u1y10.08333Samplingtime:1Discrete-timemodel.9.1.1控制系统数学模型及转换的MATLAB实现33

9.1.1控制系统数学模型及转换的MATLAB实现即采用零阶保持器和双线性变换法的离散化状态空间模型分别为9.1.1控制系统数学模型及转换的MATLAB实现34

9.1.1控制系统数学模型及转换的MATLAB实现

4.环节方框图模型的化简

自动控制系统是由被控对象与控制装置组成的,即系统有多个环节,每个环节又是由多个元件构成的。环节在MATLAB中又叫做模块。自动控制的对象可以是一个元件,一个环节,也可以是一个模块,一个装置,甚至是一个系统。这要根据讨论问题的实际情况来确定。系统方框图的化简同样适用于环节的、模块的、装置的方框图模型的化简。9.1.1控制系统数学模型及转换的MATLAB实现35

9.1.1控制系统数学模型及转换的MATLAB实现

环节串联是指一个环节的输出为相邻的下一个环节的输入,其余依此类推(图9.1为两个环节串联)。将串联的多个环节的传递函数方框依次串联画出即成为系统方框图模型。控制系统的环节串联及其化简就是模块方框图模型的串联及其化简。图9.1

当n个模块方框图模型sys1,sys2,…,sysn串联连接时,其等效的方框图模型为:sys=sys1*sys2*…*sysn。9.1.1控制系统数学模型及转换的MATLAB实现36

9.1.1控制系统数学模型及转换的MATLAB实现

当n个模块方框图模型sys1,sys2,…,sysn并联连接时,其等效的方框图模型为:sys=sys1±sys2±…±sysn(取“+”或“-”由系统结构图决定)。

环节并联是指多个环节的输入信号相同,所有环节输出的代数和为其总输出。两个环节的并联如图9.2所示。图9.29.1.1控制系统数学模型及转换的MATLAB实现37

9.1.1控制系统数学模型及转换的MATLAB实现

MATLAB中的函数feedback可以将两个环节反馈连接后求其等效传递函数。feedback函数的调用格式为 sys=feedback(sys1,sys2,sign)【说明】feedback函数将两个环节按反馈方式连接起来;sys1为图9.3中的G(s);sys2为H(s)(单位反馈时,sys2=1,且不能省略);sign是反馈极性(缺省时,默认为负反馈,即sign=-1)。

两个环节的反馈连接如图9.3所示。

图9.39.1.1控制系统数学模型及转换的MATLAB实现38

9.1.1控制系统数学模型及转换的MATLAB实现

【例9.6】图9.4是晶闸管—直流电机转速负反馈单闭环调速系统的系统方框图,求系统的闭环传递函数。图9.4编写M脚本文件exam9_6.m如下:9.1.1控制系统数学模型及转换的MATLAB实现39

9.1.1控制系统数学模型及转换的MATLAB实现%exam9_6clearn1=[1];d1=[0.017,1];s1=tf(n1,d1);n2=[1];d2=[0.075,0];s2=tf(n2,d2);s=s1*s2;sys1=feedback(s,1);%求小闭环的传递函数n3=[0.049,1];d3=[0.088,0];s3=tf(n3,d3);n4=[44];d4=[0.00167,1];s4=tf(n4,d4);n5=1;d5=0.01925;s5=tf(n5,d5);%比例环节也要写成分子、分母多项式形式n6=0.01178;d6=1;s6=tf(n6,d6);sysq=sys1*s3*s4*s5;sys=feedback(sysq,s6)9.1.1控制系统数学模型及转换的MATLAB实现40

9.1.1控制系统数学模型及转换的MATLAB实现exam9_6.m的运行结果9.1.1控制系统数学模型及转换的MATLAB实现41

9.1.1控制系统数学模型及转换的MATLAB实现5.利用Simulink模型求取系统的数学模型将Simulink模型和编程相结合,可以直接求出系统的数学模型。

【例9.7】对于图9.4晶闸管—直流电机转速负反馈单闭环调速系统的系统方框图,利用Simulink模型求其闭环传递函数。图9.49.1.1控制系统数学模型及转换的MATLAB实现42

9.1.1控制系统数学模型及转换的MATLAB实现(1)建模的基本思路本例的系统数学模型是通过形象直观的方框图和各环节的传递函数给出的。这特别便于用Simulink的传递函数模块建模。(2)构造“用于系统传递函数计算”的Simulink模型根据题给方框图和各环节的具体传递函数构造Simulink模型(exam9_7_mdl.mdl),如图9.5所示。图9.59.1.1控制系统数学模型及转换的MATLAB实现43

9.1.1控制系统数学模型及转换的MATLAB实现(3)系统传递函数的获取编写M脚本文件exam9_7.m如下:%exam9_7clear[A,B,C,D]=linmod2('exam9_7_mdl');%从Simulink模型得到状态空间模型sys_tf=tf(ss(A,B,C,D))%将状态空间模型转化为传递函数模型9.1.1控制系统数学模型及转换的MATLAB实现44

9.1.1控制系统数学模型及转换的MATLAB实现exam9_7.m的运行结果9.1.1控制系统数学模型及转换的MATLAB实现45

9.1.1控制系统数学模型及转换的MATLAB实现【说明】

函数linmod2用于获取系统的线性化模型。本例获得的传递函数模型不一定是状态空间模型的最小实现。如果要得到最小实现的传递函数模型,则最后一条指令应改为:

sys_tf=tf(minreal(ss(A,B,C,D)))其中,函数minreal用于去除相消零极点对应的状态变量。本例所得结果与【例9.6】所得的计算结果在形式上不一样。这是因为MATLAB自动对分母多项式的最高项系数进行了“标幺化”处理。事实上,如果将【例9.6】所得的计算结果的各项系数同时除以3.607e-9,则与本例结果完全相同。9.1.1控制系统数学模型及转换的MATLAB实现469.1MATLAB在自动控制中的应用

9.1.2控制系统时域响应的MATLAB实现控制系统时域响应的MATLAB数值解方法有两种:一种是在MATLAB的函数方式下进行;另一种是利用Simulink动态结构图进行时域仿真(参见第8章)。1.线性系统的阶跃响应和脉冲响应利用MATLAB所提供的求取系统的单位阶跃响应函数step和dstep,单位脉冲响应函数impulse和dimpulse,可以求出其对应的响应。9.1MATLAB在自动控制中的应用9.1.247

9.1.2控制系统时域响应的MATLAB实现

step函数的调用格式为 step(sys) step(sys,t) [y,t]=step(sys) [y,t,x]=step(sys)【说明】

LTI对象的sys可以是由函数tf,zpk和ss中任何一个建立的连续时间系统模型。9.1.2控制系统时域响应的MATLAB实现48

9.1.2控制系统时域响应的MATLAB实现

第1种格式为无输出宗量的格式,函数在当前图形窗中直接绘制出系统的单位阶跃响应曲线。第2种格式用于计算系统的单位阶跃响应并绘制出对应的曲线。其中,t可以指定为一个仿真终止时间,此时t为一标量;也可以设置为一个时间向量(例如,用指令t=0:dt:Tfinal);函数中的t也可以没有。对于离散系统阶跃响应函数dstep,时间间隔dt必须与采样周期匹配。第3种格式为带有输出宗量引用的函数,计算系统单位阶跃响应的输出数据,而不绘制曲线。输出宗量y为系统的响应向量,t为取积分值的时间向量。9.1.2控制系统时域响应的MATLAB实现第49

9.1.2控制系统时域响应的MATLAB实现第4种格式为带有输出宗量引用的函数,计算系统单位阶跃响应的输出数据,而不绘制曲线。输出宗量y为系统的响应向量,t为取积分值的时间向量,x为系统的状态轨迹数据。需要注意的是:输出宗量[y,t,x]三个元素的顺序不能错。这种格式通常用于以函数ss建立的系统模型。如果想同时绘制出多个系统的阶跃响应曲线,则可以仿照plot指令给出系统阶跃响应指令,例如,step(sys1,'-',sys2,'-.',sys3,':r')。上述4种格式离散系统阶跃响应函数dstep同样适用。单位脉冲响应函数impulse和dimpulse的调用格式相同。9.1.2控制系统时域响应的MATLAB实现第50

9.1.2控制系统时域响应的MATLAB实现

【例9.8】单位反馈系统前向通道的传递函数为试作出其单位阶跃响应曲线。编写M脚本文件exam9_8.m如下:%exam9_8clearsys_tf=tf(80,[1,2,0]);closys=feedback(sys_tf,1);step(closys)9.1.2控制系统时域响应的MATLAB实现51

9.1.2控制系统时域响应的MATLAB实现exam9_8.m的运行结果图9.6(a)9.1.2控制系统时域响应的MATLAB实现exa52

9.1.2控制系统时域响应的MATLAB实现图9.6(b)exam9_8.m的运行结果

在自动绘制的系统单位阶跃响应曲线上,若单击曲线上的某点,可以显示出该点对应的时间信息和相应的幅值信息,如图9.6(b)所示。通过这样的方法就可以很容易地分析系统阶跃响应的情况。9.1.2控制系统时域响应的MATLAB实现图9.53

9.1.2控制系统时域响应的MATLAB实现exam9_8.m的运行结果图9.7线性系统的阶跃响应通常采用一些定量的性能指标来描述,如系统的超调量、上升时间、调节时间等。在MATLAB自动绘制的阶跃响应曲线中,如果想要得出这些性能指标,只需在得到的图上右击鼠标键,则将得出如图9.7所示的菜单。点击Characteristics(特征)项,从中选取合适的分析内容,就可以得出系统的阶跃响应指标,如图9.7所示。若想获得某个性能指标的具体值,单击曲线上的对应点即可。9.1.2控制系统时域响应的MATLAB实现exa54

9.1.2控制系统时域响应的MATLAB实现

值得一提的是:step函数中的上升时间(RiseTime)不是一般自控原理的教科书中提到的“阶跃响应曲线第1次达到稳态值的时间”,而是“阶跃响应曲线从稳态值的10%上升到稳态值的90%所需的时间”。9.1.2控制系统时域响应的MATLAB实现55

9.1.2控制系统时域响应的MATLAB实现2.线性系统的零输入响应零输入响应是系统初始状态引发的动态过程。此时,系统无输入信号作用,响应只与系统的初始状态、结构及参数有关。零输入响应函数initial的调用格式为 initial(sys,x0) initial(sys,x0,t) [y,t]=initial(sys,x0) [y,t,x]=initial(sys,x0)【说明】x0为初始状态;sys必须是状态空间模型;其余均与step函数完全一致。离散时间系统零输入响应函数dinitial调用格式基本相同。9.1.2控制系统时域响应的MATLAB实现56

9.1.2控制系统时域响应的MATLAB实现

【例9.9】系统模型如图9.4所示,绘制初始状态为x0=[1,0,0,0]T时的输入响应曲线。编写M脚本文件exam9_9.m如下:%exam9_9clear[A,B,C,D]=linmod2('exam9_7_mdl');x0=[1,0,0,0]';initial(ss(A,B,C,D),x0)9.1.2控制系统时域响应的MATLAB实现57图9.8

9.1.2控制系统时域响应的MATLAB实现exam9_9.m的运行结果图9.89.1.2控制系统时域响应的MATLAB58

9.1.2控制系统时域响应的MATLAB实现3.任意输入下系统的响应

如果输入信号由其它数学模型描述,或输入信号的数学模型未知,则需要借助于函数lsim和dlsim来绘制系统的时域响应曲线。lsim函数的调用格式与step等函数的调用格式相类似。所不同的是,需要提供有关输入信号的函数值。lsim函数的调用格式为 lsim(sys,u,t) lsim(sys,u,t,x0) [y]=lsim(sys,u,t) [y,t,x]=lsim(sys,u,t,x0)【说明】u和t用于描述输入信号,u中的点对应于各个时间点处的输入信号值。离散时间系统任意输入响应函数dlsim的调用格式基本相同。9.1.2控制系统时域响应的MATLAB实现59

9.1.2控制系统时域响应的MATLAB实现

【例9.10】某二阶系统的数学模型为试绘制系统对99点随机噪声的响应曲线。编写M脚本文件exam9_10.m如下:%exam9_10clearnum=[2,-6.8,3.6];den=[3,-4.3,1.75];u=rand(99,1);dlsim(num,den,u); %在dlsim函数中直接使用系统模型参数title('随机噪声响应')xlabel('时间');ylabel('振幅');grid9.1.2控制系统时域响应的MATLAB实现60图9.9

9.1.2控制系统时域响应的MATLAB实现exam9_10.m的运行结果图9.99.1.2控制系统时域响应的MATLAB619.1MATLAB在自动控制中的应用

9.1.3控制系统稳定性分析的MATLAB实现在自动控制系统特性分析中,系统的稳定性是最重要的指标。如果系统稳定,则可以进一步分析系统的其它性能;反之,系统不能直接应用,需要引入控制器来使得系统稳定。对系统稳定性的分析通常是通过代数稳定性判据、根轨迹图和频率特性图来进行的。对于后两种方法,MATLAB提供便捷的作图和分析结果;对于第一种方法,MATLAB则是通过求出系统特征值的数值解而完全取代了传统的代数稳定性判据。9.1MATLAB在自动控制中的应用9.1.362

9.1.3控制系统稳定性分析的MATLAB实现1.线性系统特征根的求取

MATLAB中与求取系统特征根相关的常用函数的调用格式为 p=eig(sys) pzmap(sys) pole(sys) zero(sys)【说明】LTI对象的sys可以是由函数tf,zpk和ss中任何一个建立的系统模型,且无论系统是连续的还是离散的。第1种格式返回系统的全部特征根。第2种格式用图形的方式绘制出系统所有零极点在s平面(或z平面)上的位置。9.1.3控制系统稳定性分析的MATLAB实现63

第3种格式求出系统的所有极点。第4种格式求出系统的所有零点。【例9.11】假设离散时间系统(采样周期T

=0.1sec)的被控对象和控制器的模型分别为 ,试分析单位反馈下闭环系统的稳定性。编写M脚本文件exam9_11.m如下:

9.1.3控制系统稳定性分析的MATLAB实现第3种格式求出系统的所有极点。【例9.11】假64

9.1.3控制系统稳定性分析的MATLAB实现%exam9_11clearnum1=[6,-0.6,-0.12];den1=[1,-1,0.25,0.25,-0.125];h=tf(num1,den1,0.1);num2=[0.3,-0.3*0.6];den2=[1,0.8];g=tf(num2,den2,0.1);sys=h*g;closys=feedback(sys,1);abs(eig(closys)')%求出系统特征值的模pzmap(closys)9.1.3控制系统稳定性分析的MATLAB实现%65

9.1.3控制系统稳定性分析的MATLAB实现exam9_11的运行结果图9.10

由于前两个特征根的模均大于1,所以判定闭环系统是不稳定的。这一点从图9.10也可看出(系统存在单位圆外的极点)。9.1.3控制系统稳定性分析的MATLAB实现66

9.1.3控制系统稳定性分析的MATLAB实现2.根轨迹分析的MATLAB实现根轨迹绘制的基本思路是:假设单变量系统的开环传递函数为G(s),且设控制器的增益为K,整个控制系统是由单位负反馈构成的闭环系统,闭环系统的特征根可以由下列方程求出

(9.11)从而化为多项式方程求根的问题。对于指定的K值,可以求出闭环系统的一组特征根。改变K的值可能得出另外的一组根。对K的不同取值,则可以绘制出每个特征根变化的曲线,即系统的根轨迹。9.1.3控制系统稳定性分析的MATLAB实现67

9.1.3控制系统稳定性分析的MATLAB实现

MATLAB中提供了函数rlocus,可以直接用于系统的根轨迹绘制。rlocus函数的调用方法类似于step函数,常用的调用格式为 rlocus(sys) rlocus(sys,k) [r,k]=rlocus(sys)【说明】

第1种格式不输出宗量,自动绘制根轨迹曲线。第2种格式是根据给定的增益向量绘制根轨迹曲线。第3种格式输出增益和对应的闭环特征根。可以同时绘制出若干个系统的根轨迹。例如,rlocus(sys1,'-',sys2,'-.',sys3,':r')。上述3种格式对连续时间系统和离散时间系统均适用。9.1.3控制系统稳定性分析的MATLAB实现68

9.1.3控制系统稳定性分析的MATLAB实现绘制出系统的根轨迹曲线后,利用grid指令将在根轨迹曲线上叠印出等阻尼线和等自然频率线,根据等阻尼线可以进行基于根轨迹的系统设计。

【例9.12】假设系统的开环传递函数为试绘制系统的根轨迹曲线,并判断系统的稳定性与增益的关系。编写M脚本文件exam9_12.m如下:%exam9_12clearnum=[1,4,8];den=[1,18,120.5,357.5,478.5,306];sys=tf(num,den);rlocus(sys)9.1.3控制系统稳定性分析的MATLAB实现69

9.1.3控制系统稳定性分析的MATLAB实现exam9_12的运行结果(图9.11)

单击根轨迹上的点,可以显示出该点处的增益值和其它相关信息。从图9.11可以看出,该系统是条件稳定的。单击根轨迹与虚轴相交的点,可以得出该点处增益的临界值约为779。可见,若系统的增益K>779,闭环系统不稳定。9.1.3控制系统稳定性分析的MATLAB实现70

9.1.3控制系统稳定性分析的MATLAB实现

前面介绍的都是绘制的负反馈系统的根轨迹曲线,而使用指令rlocus(-sys)可以直接绘制出正反馈系统的根轨迹曲线(即所谓“广义根轨迹”)。9.1.3控制系统稳定性分析的MATLAB实现71

9.1.3控制系统稳定性分析的MATLAB实现3.频域分析的MATLAB实现

频域分析中主要用到两种曲线(或叫图):Nyquist图和Bode图。它们就是频域分析的两种工具。Nyquist图主要用于频域稳定性分析;Bode图可以用于分析系统的幅值稳定裕度、相位稳定裕度、截止频率、-180°穿越频率、带宽、扰动抑止及其稳定性等,因而在频域分析中有着重要的地位。

MATLAB控制系统工具箱中提供了函数nyquist,可以直接绘制系统的Nyquist图。该函数常用的调用格式为 nyquist(sys) nyquist(sys,w) [re,im,w]=nyquist(sys)9.1.3控制系统稳定性分析的MATLAB实现72

9.1.3控制系统稳定性分析的MATLAB实现【说明】

LTI对象的sys可以是由函数tf、zpk、ss中任何一个建立的系统模型,且无论系统是连续的还是离散的。第1种格式不输出宗量,而自动绘制Nyquist曲线(默认的频率ω的范围为0→+∞,并且利用对称性画出了ω从-∞→0曲线的镜像)。第2种格式是根据给定的频率点绘制Nyquist曲线。如果要定义频率范围,w必须是[wmin,wmax]格式;如果定义的是频率点,则必须是由所需要频率点频率构成的向量。第3种格式计算系统在频率w处的频率响应输出数据,而不绘制曲线。输出宗量re为频率响应的实部;im为频率响应的虚部;w是频率点。可以同时绘制出若干个系统的Nyquist曲线。例如,nyquist(sys1,'-',sys2,'-.',sys3,':r')。9.1.3控制系统稳定性分析的MATLAB实现【说73

9.1.3控制系统稳定性分析的MATLAB实现

绘制出系统的Nyquist曲线后,利用grid指令将在Nyquist图上叠印出等M圆。【例9.13】假设系统的开环传递函数为试绘制其Nyquist图,并判断闭环系统的稳定性。编写M脚本文件exam9_13.m如下:9.1.3控制系统稳定性分析的MATLAB实现74

9.1.3控制系统稳定性分析的MATLAB实现%exam9_13clearn1=2.7778;d1=[1,0];s1=tf(n1,d1);n2=[1];d2=[1,2,1];s2=tf(n2,d2);n3=[1,0.192,1.92];d3=[1,0.384,2.56];s3=tf(n3,d3);sys=s1*s2*s3;nyquist(sys)%为观察(-1,j0)点附近Nyquist曲线走向,调整坐标范围axis([-2.5,0,-1.5,1.5])grid9.1.3控制系统稳定性分析的MATLAB实现%75

9.1.3控制系统稳定性分析的MATLAB实现exam9_13的运行结果(图9.12)

单击Nyquist曲线上的点,则可以显示出在该点处频率、实部和虚部等信息,如图9.12所示。这种获得附加信息的方法对后面介绍的函数bode和margin同样适用。从图9.12可以看出,尽管曲线的走向比较复杂,但整个Nyquist曲线并不包围(-1,j0)点;同时,由于开环系统不含有不稳定的极点,所以根据控制理论中的Nyquist判据可以断定:闭环系统是稳定的。9.1.3控制系统稳定性分析的MATLAB实现76

9.1.3控制系统稳定性分析的MATLAB实现MATLAB控制系统工具箱中提供的函数bode,可以直接绘制系统的Bode图。该函数常用的调用格式为 bode(sys) bode(sys,w) [mag,phase,w]=bode(sys)【说明】

该函数的使用类似于函数nyquist。第3种格式的输出宗量mag为频率响应的幅值A(ω);phase为频率响应的相位φ

(ω);w是频率点。9.1.3控制系统稳定性分析的MATLAB实现77

9.1.3控制系统稳定性分析的MATLAB实现【例9.14】续【例9.13】,试绘制系统的Bode图,并判断闭环系统的稳定性。编写M脚本文件exam9_14.m如下:%exam9_14clearn1=2.7778;d1=[1,0];s1=tf(n1,d1);n2=[1];d2=[1,2,1];s2=tf(n2,d2);n3=[1,0.192,1.92];d3=[1,0.384,2.56];s3=tf(n3,d3);sys=s1*s2*s3;bode(sys,{0.1,10})%绘制ω从0.1→10的Bode图,注意格式grid9.1.3控制系统稳定性分析的MATLAB实现78

9.1.3控制系统稳定性分析的MATLAB实现exam9_14的运行结果和系统的单位阶跃响应(图9.13)点击Bode图上对数频率特性曲线在0dB处的点,并查出对应频率点处的相位值(约为-178°)。可见:闭环系统是稳定的,但由于稳定裕度太小,其阶跃响应的振荡是很剧烈的。9.1.3控制系统稳定性分析的MATLAB实现79

9.1.3控制系统稳定性分析的MATLAB实现图9.14

在得到的Bode图上右击鼠标键,则将得到如图9.14所示的菜单。选择Characteristics项,从中选取合适的分析内容则得到如图9.14所示的Bode图。这个功能对函数nyquist也适用。9.1.3控制系统稳定性分析的MATLAB实现图980

9.1.3控制系统稳定性分析的MATLAB实现

基于频域分析的稳定裕度是衡量系统稳定情况的有效的定量指标。MATLAB控制系统工具箱中提供了函数margin,可以直接用于系统的幅值和相位稳定裕度的求取。该函数常用的调用格式为 margin(sys) [gm,Pm,wg,wc]=margin(sys)【说明】

第1种格式无输出宗量,自动绘制系统的Bode图,并在图上标出系统的对数幅值稳定裕度值Gm、相位稳定裕度值Pm、-180°穿越频率和截止频率。若某个稳定裕度为无穷大,则显示Inf(下同)。第2种格式不绘制系统的Bode图,输出宗量为系统的幅值稳定裕度值gm、相位稳定裕度值Pm、截止频率和-180°穿越频率。幅值稳定裕度值gm与对数幅值稳定裕度Gm之间的关系为9.1.3控制系统稳定性分析的MATLAB实现81

9.1.3控制系统稳定性分析的MATLAB实现

【例9.15】续【例9.14】,试确定系统的稳定裕度。编写M脚本文件exam9_15.m如下:%exam9_15clearn1=2.7778;d1=[1,0];s1=tf(n1,d1);n2=[1];d2=[1,2,1];s2=tf(n2,d2);n3=[1,0.192,1.92];d3=[1,0.384,2.56];s3=tf(n3,d3);sys=s1*s2*s3;[gm,Pm,wg,wc]=margin(sys)margin(sys)9.1.3控制系统稳定性分析的MATLAB实现82

9.1.3控制系统稳定性分析的MATLAB实现exam9_15的运行结果(图9.15)gm=1.1050Pm=2.0985wg=0.9621wc=0.9261

系统的幅值稳定裕度为1.1050(对应的对数幅值稳定裕度为20*lg(1.1050)=0.8669dB),频率(即-180°穿越频率)为0.9621rad/sec;相位稳定裕度为2.0985°,频率(即截止频率)为0.9261rad/sec。由于稳定裕度较小,闭环系统的阶跃响应将有剧烈振荡。9.1.3控制系统稳定性分析的MATLAB实现839.1MATLAB在自动控制中的应用

9.1.4经典控制的MATLAB辅助设计简介在经典控制理论中,所谓系统设计,就是在给定的性能指标条件下,对于给定的对象模型,确定一个能够完成给定任务的控制器(常称为校正器或者补偿器),即确定控制器的结构和参数。控制系统的设计又叫做控制系统的校正或者控制系统的校正设计。控制系统的校正设计的方法很多,利用MATLAB的控制系统工具箱中的众多函数,可以大大地减少计算和绘制图形的工作量,达到事半功倍的效果。9.1MATLAB在自动控制中的应用9.1.484

9.1.4经典控制的MATLAB辅助设计简介

【例9.16】已知单位反馈系统的被控对象为试设计串联校正器,使得:①在单位斜坡信号的作用下,系统的速度误差系数Kv≥30sec-1;

②系统校正后的截止频率ωc≥2.3rad/sec;③系统校正后的相位稳定裕度Pm>40°。9.1.4经典控制的MATLAB辅助设计简介85

9.1.4经典控制的MATLAB辅助设计简介

采用Bode图法设计串联校正器。

(1)确定K0被控对象为I型系统,单位斜坡响应的速度误差系数 Kv

=K=K0≥30sec-1其中,K0是系统的开环增益。取K0=30sec-1,则被控对象的传递函数为9.1.4经典控制的MATLAB辅助设计简介86

9.1.4经典控制的MATLAB辅助设计简介(2)作原系统的Bode图和阶跃响应曲线,检查是否满足要求编写M脚本文件exam9_16_1.m如下:%exam9_16_1cleark0=30;z=[];p=[0;-10;-5];sys0=zpk(z,p,k0*10*5);figure(1);margin(sys0);grid %函数figure用来创建图形窗口figure(2);step(feedback(sys0,1)),grid9.1.4经典控制的MATLAB辅助设计简介87

9.1.4经典控制的MATLAB辅助设计简介exam9_16_1的运行结果(图9.16)9.1.4经典控制的MATLAB辅助设计简介e88

9.1.4经典控制的MATLAB辅助设计简介从图9.16可以看出,未校正系统的频域性能指标为: 对数幅值稳定裕度Gm0=-6.02dB-180°穿越频率ωg0=7.07rad/sec

相位稳定裕度Pm0=-17.2°

截止频率ωc0=9.77rad/sec对数幅值稳定裕度和相位稳定裕度均为负值,这样的系统根本无法工作。系统必须进行校正。9.1.4经典控制的MATLAB辅助设计简介89

9.1.4经典控制的MATLAB辅助设计简介(3)求校正器的传递函数由于给定的开环截止频率ωc≥2.3rad/sec,远小于ωc0=9.77rad/sec,可以通过压缩频带宽度来改善相位裕度,因此采用串联滞后校正是合理的。令校正器的传递函数为显然,应有β>1。9.1.4经典控制的MATLAB辅助设计简介90

9.1.4经典控制的MATLAB辅助设计简介

①确定新的开环截止频率ωc希望的相位稳定裕度Pm>40°,所以根据滞后校正的设计方法,应有其中,(2°~5°)是附加相位补偿角。取其等于5°,则有于是,有9.1.4经典控制的MATLAB辅助设计简介91

9.1.4经典控制的MATLAB辅助设计简介

从图9.16(a)的对数相频特性图上可以取得对应于-135°的ω为2.77rad/sec,即有。9.1.4经典控制的MATLAB辅助设计简介92

9.1.4经典控制的MATLAB辅助设计简介

②计算高频衰减率β从图9.16(a)的对数幅频特性图上可以取得对应于的L为19.2dB,于是,有从而9.1.4经典控制的MATLAB辅助设计简介93

9.1.4经典控制的MATLAB辅助设计简介③计算两个转折频率ω1和ω2所以,校正器的传递函数为校正后的开环传递函数为9.1.4经典控制的MATLAB辅助设计简介94

9.1.4经典控制的MATLAB辅助设计简介(4)校验系统校正后的频域性能是否满足要求编写M脚本文件exam9_16_2.m如下:%exam9_16_2clear,clck0=30;z=[];p=[0,-10,-5];sys0=zpk(z,p,k0*10*5);n=[3.6,1];d=[32.9,1];sys1=tf(n,d);sys=tf(sys0)*sys1;figure(1);margin(sys);grid figure(2);step(feedback(sys,1)),grid9.1.4经典控制的MATLAB辅助设计简介95

9.1.4经典控制的MATLAB辅助设计简介exam9_16_2的运行结果(图9.17)9.1.4经典控制的MATLAB辅助设计简介e96

9.1.4经典控制的MATLAB辅助设计简介从图9.17可以看出,校正后系统的频率性能指标为:

对数幅值稳定裕度Gm=12.5dB-180°穿越频率ωg=6.8rad/sec

相位稳定裕度Pm=40.3° 截止频率ωc=2.78rad/sec显然,系统校正后的相位稳定裕度和截止频率均满足给定的要求。9.1.4经典控制的MATLAB辅助设计简介979.1MATLAB在自动控制中的应用

9.1.5现代控制的MATLAB辅助设计简介现代控制理论的基本设计方法是状态反馈控制器设计,包括状态反馈增益矩阵的设计和状态观测器增益矩阵的设计,如图9.18所示。图9.189.1MATLAB在自动控制中的应用9.1.598

9.1.5现代控制的MATLAB辅助设计简介

开环系统的状态空间模型为

(9.12)由图9.18,将代入上式中,则在状态反馈增益矩阵K下,闭环系统的状态空间模型可写为 (9.13)如果开环系统完全可控,则选择合适的K矩阵,可以将闭环系统矩阵(A-BK)的特征值配置到任意地方(当然,还要满足共轭复数的约束)。

9.1.5现代控制的MATLAB辅助设计简介99

9.1.5现代控制的MATLAB辅助设计简介在极点配置过程中,假设了系统的所有状态都可被量测并用于反馈。然而在实际情况中,并非所有状态都可被直接量测,这就需要对不可直接量测的状态进行估计。对不可量测的状态进行估计称为状态观测,观测状态变量的装置(或计算机程序)称为状态观测器。根据现代控制理论,状态观测器满足的误差状态方程为 (9.14)其中,。只要开环系统是完全可观的,可以将矩阵(A-LC)的特征值配置到任意地方,从而可以使观测出的状态可以逼近原系统的状态(只要将该矩阵的特征值全部配置在左半s平面上)。9.1.5现代控制的MATLAB辅助设计简介100

9.1.5现代控制的MATLAB辅助设计简介将(9.12)式代入(9.14)式,并将观测出的状态作为输出反馈量,则得观测器满足的状态空间模型为 (9.15)

令则有

(9.16)9.1.5现代控制的MATLAB辅助设计简介101

9.1.5现代控制的MATLAB辅助设计简介

MATLAB的控制系统工具箱提供了一系列函数,可用于状态反馈控制器的辅助设计。它们常用的调用格式为 ctrb(sys) obsv(sys) K=place(A,B,p) L=place(A',C',p)【说明】

以上函数要求对象模型sys为状态空间模型。第1种格式求出系统的可控性矩阵。第2种格式求出系统的可观性矩阵。第3种格式求出状态反馈增益矩阵。A为系统的状态矩阵;B为系统的输入矩阵;p为指定的闭环系统极点;输出宗量K为状态反馈增益矩阵。9.1.5现代控制的MATLAB辅助设计简介102

9.1.5现代控制的MATLAB辅助设计简介

第4种格式求出状态观测器增益矩阵。A'为系统的状态矩阵A的转置;C'为系统的观测矩阵C的转置;p为指定的闭环系统极点;输出宗量L为状态观测器增益矩阵。【例9.17】已知某控制系统的开环传递函数为试判断系统的可控性并求状态反馈增益矩阵K,使得系统的闭环极点为:,。在系统的闭环极点不变的情况下,计算状态观测器增益矩阵L。以状态反馈和状态观测器构成闭环回路完成单位阶跃仿真。9.1.5现代控制的MATLAB辅助设计简介103

9.1.5现代控制的MATLAB辅助设计简介

(1)判别系统的可控性并求出状态反馈增益矩阵K编写M脚本文件exam9_17_1.m如下:%exam9_17_1cleark=10;z=[];p=[-1;-2;-3];s=zpk(z,p,k);sys=ss(s);A=sys.a;B=sys.b;C=sys

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论