自控实验仿真部分(7)

  • 格式:doc
  • 大小:567.50 KB
  • 文档页数:18

应用MATLAB 处理系统数学模型1模型建立对简单系统的建摸可直接采用基本模型—传递函数。

但实际中经常遇到几个简单系统组合成为一个复杂系统。

常见形式为,并联、串联、闭环及反馈等连接。

并联将两个系统按并联方式连接,在MATLAB 中可用parallel 函数实现。

例1两个子系统为43)(1+=s s G 3242)(22+++=s s s s G将两个系统按并联方式连接,可输入 num1=3; den1=[1,4]; num2=[2,4]; den2=[1,2,3];[num ,den]=parallel (num1,den1,num2,den2) 则得num= 0 5 18 25 den= 1 6 11 12 因此1211625185)()()(23221+++++=+=s s s s s s G s G s G串联将两个系统按串联方式连接,在MATLAB 中可用series 函数实现。

例如[num ,dem]=series (num1,den1,num2,den2)可得到串联连接的传递函数形式)(2)(1)(2)(1)()()()(21s den s den s num s num s G s G s den s num ==1.闭环将系统通过正负反馈连接成闭环系统,在MATLAB 中可用cloop 函数实现。

例如[numc ,demc]=cloop (num ,den ,sign )表示由传递函数表示的开环传递函数构成闭环系统。

当sign=1时采用正反馈;当sign=-1时采用负反馈;sign 缺省时,默认为负反馈。

)()()()(1)()()(s num s den s num s G s G s denc s numc == 2.反馈将两个系统按反馈方式连接成闭环系统,在MATLAB 中可用feedback 函数实现。

例2-两个子系统为32152)(22++++=s s s s s G10)2(5)(++=s s s H将两个系统按反馈方式连接,可输入 numg=[2 5 1]; deng=[1 2 3]; numh=[5 10]; denh=[1 10];[num ,den]=feedback (numg ,deng ,numh ,denh ) 执行后得num= 2 25 51 10 den= 11 57 78 40因此,闭环系统的传递函数为 407857111051252)()()(2323++++++==s s s s s s s den s num s G c2 MATLAB在时域分析中的应用2.1 时域分析中常用的MATLAB函数1.step()函数求取系统阶跃响应若已知控制系统的传递函数错误!未找到引用源。

,则step 函数的调用格式有如下几种:step(num,den)时间向量t的范围自动设定,即显示求取结果窗口中的时间轴长度由系统自动设定,单位阶跃响应曲线随即绘出。

step(num,den,t)通过调整t的取值来调节所要求取结果中时间向量的范围。

[y, x]=step(num,den)返回的变量y为输出向量,x为状态向量。

F=step(G)仿真结果将随着向量F返回MATLAB 工作区。

如果要查看响应曲线,可以通过plot( )函数来实现。

2. impulse( )求控制系统的单位脉冲响应impulse(num,den)num 和den 分别为系统传递函数描述中的分子和分母多项式系数,时间向量t 的范围自动设定,单位脉冲响应曲线随即绘出impulse(num,den,t)num 和den 分别为系统传递函数描述中的分子和分母多项式系数,时间向量t 的范围可以由人工给定,例如,t=0:1:10。

3.lsim()求任意输入下的响应lsim(sys,u,t)sys是控制系统模型,u任意的输入函数。

4.feedback()求典型反馈系统传递函数典型反馈系统如图3-34所示,图3-34 典型反馈系统feedback()函数求反馈系统闭环传递函数,调用格式为G=feedback(G1,G2,sign)其中变量sign 用来表示反馈类型,除非明确指出sign=1,否则默认状态或令sign= -1,均表示系统为负反馈系统。

5.roots()函数求解系统的特征根roots()函数调用格式为R=roots(den)。

其功能是求解多项式的根,其中,den 为多项式系数向量,R 为系统计算后返回的根。

6.pzmap()函数绘制控制系统零极点图pzmap()函数是用来绘制控制系统零极点的函数,按绘制零极点形式的不同,其调用格式有以下两种。

[p,z] = pzmap(num,den)其功能是在复平面内绘制出以传递函数表示的系统零极点图。

[p,z] = pzmap(p,z)其功能是在复平面内绘制零极点图,其中列向量p 为极点位置,列向量z 为零点位置。

7. 求取系统稳态值的dcgain( )函数对应于三种误差系数,可以分别调用如下格式Kp=dcgain(num,den); %求位置误差系数Kv=dcgain([num 0] ,den); %求速度误差系数Ka=dcgain([num 0 0] ,den); %求加速度误差系数2.2 时域分析中的应用例3-14 已知控制系统的传递函数为试用step( )函数求其阶跃响应。

解编写MATLAB程序如下:num=[0 0 20];den=[1 3 20]; %确定传递函数step(num,den); %求取阶跃响应grid %在结果图中绘制网格标线title('Unit-Step Response of G(s)=20/(s^2+3s+20)')%在结果曲线中加题注。

运行后,弹出系统的响应曲线如图3-35 所示。

图3-35阶跃响应曲线例1已知控制系统的传递函数为试用impulse ( )函数求其脉冲响应解编写MATLAB程序如下:num=[0 0 20];den=[1 3 20]; %确定传递函数impulse(num,den); %求取脉冲响应grid; %在结果图中绘制网格标线title('Unit-impulse Response of G(s)=25/(s^2+4s+25)') %在结果曲线中加题注运行后,弹出系统的响应曲线如图3-36 所示。

图3-36 脉冲响应曲线例2已知控制系统的传递函数为求响应中的峰值时间、上升时间和超调量。

解编写MATLAB程序如下:G=tf(20,[1,3,20]);[a,t]=step(G);[A, T]=max(a); %通过最大值函数求取峰值点的幅值A、时间Ttp=t(T); %将T 值提取出来赋给峰值时间tpB=dcgain(G); %求稳态值,并赋给变量BOS=100*(A-B)/B; %求超调量OS(overshoot)n=1;while a(n)<0.1*Bn=n+1;endm=1;while a(m)<0.9*Bm=m+1;endtr=t(m)-t(n);运行上述程序后,得峰值时间为1.3252s,超调量为14%,上升时间为0.62577。

例3单位反馈控制系统中,反馈处取负号,前向通路两个传递函数分别为求系统总的传递函数。

解编写MATLAB程序如下:G1=tf([1,2],[1,2,1,1]);G2=tf(1,[1,1]);G=feedback(G1,G2,-1)程序执行结果为:Transfer function:s^2+3s+2------------------s^4+3s^3+3s^2+3s+3例4设系统的开环传递函数试判断其作为前向通路所构成的单位负反馈闭环系统的稳定性。

解编写MATLAB程序如下:n1= [100 200 ];d1= conv ( [1 0 ], conv ( [1 1 ], [1 20 ]) ) ;sys1= tf (n1, d1) ;sys= feedback (sys1, 1) ;roots(sys.den{1})程序执行结果为:ans =-12.8990-5.0000-3.1010计算数据表明闭环系统的三个特征根的实部均为负值,题目中描述的单位负反馈闭环系统是稳定的。

例5设线性定常系统的传递函数为试分析系统的稳定性。

解编写MATLAB程序如下:num=[2 3 10];den=[10 3 1];[p, z]= pzmap(num,den)程序执行结果为:p =-0.1500+0.2784i-0.1500-0.2784iz=-0.7500+2.1065i-0.7500-2.1065i可见,系统稳定。

例6 已知单位反馈系统开环传递函数为试求其在输入错误!未找到引用源。

作用下系统的稳态误差。

解编写MATLAB程序如下:clearclcRp=3;Rv=2;Ra=1;num=[50];den=conv([1 3 0],[0 5]);GH=tf(num,den);Kp=dcgain(GH)Kv=dcgain([num 0],den)Ka=dcgain([num 0 0],den)Ess=Ra/(1+Kp)+Rv/Kv+Ra/Ka程序执行结果为:Kp =InfKv =3.3333Ka =Ess =Inf例7对于图3-37(a)所示的系统:(1)求系统单位阶跃响应的超调量和调节时间。

(2)当系统加入如图3-37(b)所示的校正环节后,再分别求超调量和调节时间。

3-37 控制系统结构图解(1)先求校正前的系统性能,编写MATLAB程序如下:G1=tf(10,[1,1,0]);G=feedback(G1,1,-1); %建立系统闭环传递函数G[a,t]=step(G); %求系统的单位阶跃响应,并将时间-幅值读出[A, T]=max(a); %通过最大值函数求峰值点的幅值A、时间Ttp=t(T); %将T 值提取出来赋给峰值时间tpB=dcgain(G); %求稳态值,并赋给变量BOS=100*(A-B)/B; %求超调量OS(overshoot)m=length(a);while(m>0)if(abs(a(m)-B)>0.02*B)m=m-1;break;elsem=m-1;endendts=t(m+1); %求调节时间程序执行后,得校正前的超调量为60.4%,上升时间为7.2s。

(2)对于校正后的系统,编写MATLAB程序如下:sys1=tf([1]);sys2=tf([0.35,0],[1]);G1= parallel(sys1,sys2); %建立校正环节传递函数G1G2=tf(10,[1,1,0]);G3=series(G1,G2); %建立前向通路传递函数G=feedback(G3,1,-1); %建立系统闭环传递函数G[a,t]=step(G); %求取系统的单位阶跃响应,并将时间-幅值读出[A, T]=max(a); %通过最大值函数求取峰值点的幅值A、时间T tp=t(T); %将T 值提取出来赋给峰值时间tpB=dcgain(G); %求稳态值,并赋给变量BOS=100*(A-B)/B; %求超调量OS (overshoot )m=length(a);while(m>0)if(abs(a(m)-B)>0.02*B)m=m-1;break;elsem=m-1;endendts=t(m+1); %求调节时间程序执行后,得校正后的系统超调量为12.5%,调节时间为1.57s 。