动力工程计算机控制matlab上机作业.doc
2-----12题已知系统如图所示。已知控制器为,对象特性为,)718.0)(136543.0)(1zzzD)1(0)sG采用零阶保持器,单位阶跃输入,采样周期1秒。(1)求出系统的闭环Z传递函数Gc(z)、误差Z传递函数E(z)、控制命令Z传递函数U(z)和输出的Z变换Y(z);(2)编程上机,算出y(kT)(k=0,1,···,20),画出响应曲线,求出超调量p、过渡时间ts;Matlab程序如下:>>Ts=1;z=0;p=1;k=1;>>Rz=zpk(z,p,k,Ts)%按零点、极点、比例系数生成R(z)表达式(注意含采样周期Ts)>>z=[];p=[0-1];k=10;>>Gs=zpk(z,p,k);%按零点、极点、比例系数生成G(s)表达式>>Gd=c2d(Gs,Ts, zoh )%将G(s)按H0(s)离散化>>z=[0.50.368];p=[1-0.718];k=0.543;>>Dd=zpk(z,p,k,Ts)%按零点、极点、比例系数生成D(z)表达式(注意含采样周期Ts)>>G0d=Dd*Gd>>Gcd=feedback(G0d,1)%按单位负反馈生成闭环传递函数Gc(z)表达式>>Yz=Rz*Gcd>>[ykt]=step(Gcd,0:1:20)%求Gc(z)对阶跃输入的响应,即y(kT)yk=01.99761.00390.99781.00110.99921.00060.99961.00030.99981.00020.99991.00010.99991.00001.00001.00001.00001.00001.00001.0000t=01234567891011121314151617181920>>pp=spline(t,yk);>>yy=ppval(pp,linspace(0,20));>>plot(linspace(0,20),yy, b );>>holdon>>xlabel( t );ylabel( y );>>Ez=1/(1+G0d)>>[ekt]=step(Ez,0:1:20)%求E(z)对阶跃输入的响应ek=1.0000-0.9976-0.00390.0022-0.00110.0008-0.00060.0004-0.00030.0002-0.00020.0001-0.00010.0001-0.00000.0000-0.00000.0000-0.00000.0000-0.0000t=01234567891011121314151617181920>>Uz=Dd/(1+G0d)>>[ukt]=step(Uz,0:1:20)%求U(z)对阶跃输入的响应uk=0.5430-0.85990.7153-0.51230.3671-0.26310.1886-0.13510.0968-0.06940.0497-0.03560.0255-0.01830.0131-0.00940.0067-0.00480.0035-0.00250.0018t=01234567891011121314151617181920>>pp=spline(t,uk);>>yy=ppval(pp,linspace(0,20));>>plot(linspace(0,20),yy, b );>>holdon>>Ez=1/(1+G0d>>[ekt]=step(Ez,0:1:20)%求E(z)对阶跃输入的响应ek=1.0000-0.9976-0.00390.0022-0.00110.0008-0.00060.0004-0.00030.0002-0.00020.0001-0.00010.0001-0.00000.0000-0.00000.0000-0.00000.0000-0.0000t=01234567891011121314151617181920>>pp=spline(t,ek);>>yy=ppval(pp,linspace(0,20));>>plot(linspace(0,20),yy, b );>>[ykmaxtp]=max(yk);>>tp=tp-1>>ykp=ykmax-1>>r=21;while(yk(r)>0.98>>ts=r+1>>gtext( y(kT) );gtext( e(kT) );gtext( u(kT) )>>grid;>>title( StepResponse );Sinmulink图:波形图: