控制系统计算机仿真上机报告.docx

上传人:b****5 文档编号:3562040 上传时间:2022-11-23 格式:DOCX 页数:20 大小:105.29KB
下载 相关 举报
控制系统计算机仿真上机报告.docx_第1页
第1页 / 共20页
控制系统计算机仿真上机报告.docx_第2页
第2页 / 共20页
控制系统计算机仿真上机报告.docx_第3页
第3页 / 共20页
控制系统计算机仿真上机报告.docx_第4页
第4页 / 共20页
控制系统计算机仿真上机报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

控制系统计算机仿真上机报告.docx

《控制系统计算机仿真上机报告.docx》由会员分享,可在线阅读,更多相关《控制系统计算机仿真上机报告.docx(20页珍藏版)》请在冰豆网上搜索。

控制系统计算机仿真上机报告.docx

控制系统计算机仿真上机报告

******理工大学

 

《控制系统计算机仿真》上机报告

 

院系:

班级:

姓名:

学号:

时间:

年月日

 

2-2用MATLAB语言求下列系统的状态方程、传递函数、零极点增益和部分分式形式的模型参数,并分别写出其相应的数学模型表达式:

(1)

(2)

解:

(1)源程序:

num=[172424];

den=[110355024];

G=tf(num,den)

[Z,P,K]=tf2zp(num,den)

[A,B,C,D]=tf2ss(num,den)

[R,P,H]=residue(num,den)

结果:

Transferfunction:

s^3+7s^2+24s+24

---------------------------------

s^4+10s^3+35s^2+50s+24

Z=

-2.7306+2.8531i

-2.7306-2.8531i

-1.5388

P=

-4.0000

-3.0000

-2.0000

-1.0000

K=

1

A=

-10-35-50-24

1000

0100

0010

B=

1

0

0

0

C=

172424

D=

0

R=

4.0000

-6.0000

2.0000

1.0000

P=

-4.0000

-3.0000

-2.0000

-1.0000

H=

[]

(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]

B=[4;2;2;0]

C=[0202]

D=[0]

[num,den]=ss2tf(A,B,C,D)

[Z,P,K]=tf2zp(num,den)

[R,P,H]=residue(num,den)

结果:

A=

2.2500-5.0000-1.2500-0.5000

2.2500-4.2500-1.2500-0.2500

0.2500-0.5000-1.2500-1.0000

1.2500-1.7500-0.2500-0.7500

B=

4

2

2

0

C=

0202

D=

0

num=

04.000014.000022.000015.0000

den=

1.00004.00006.25005.25002.2500

Z=

-1.0000+1.2247i

-1.0000-1.2247i

-1.5000

P=

-1.5000

-1.5000

-0.5000+0.8660i

-0.5000-0.8660i

K=

4.0000

R=

4.0000

0.0000

0.0000-2.3094i

0.0000+2.3094i

P=

-1.5000

-1.5000

-0.5000+0.8660i

-0.5000-0.8660i

H=

[]

 

2-3用殴拉法求下列系统的输出响应

上,

时的数值解。

要求保留4位小数,并将结果以图形的方式与真解

比较。

解:

源程序:

t=0:

0.1:

1;

h=0.1;

y

(1)=1;

fori=1:

1:

10;

y(i+1)=y(i)+h*(-2*y(i));

Y=[y,y(i)]

end

plot(t,y,'r*');

holdon

m=exp(-2*t);

plot(t,m)

结果:

Y=

Columns1through8

1.00000.80000.64000.51200.40960.32770.26210.2097

Columns9through12

0.16780.13420.10740.1342

分析:

经由图像比较,用欧拉法求得的解与真值

大体一致。

2-5用四阶龙格-库塔梯形法求解2-3的数值解,并通过与真值及殴拉法的比较,分析其精度。

解:

源程序:

t=0:

0.1:

1;

h=0.1;

y

(1)=1;

fori=1:

1:

10;

k1=-2*(y(i));

k2=-2*(y(i)+h/2*k1);

k3=-2*(y(i)+h/2*k2);

k4=-2*(y(i)+h*k3);

y(i+1)=y(i)+h/6*(k1+2*k2+2*k3+k4);

Y=[y,y(i)]

end

plot(t,y,'r*');

holdon

m=exp(-2*t);

plot(t,m)

结果:

Y=

Columns1through8

1.00000.81870.67030.54880.44930.36790.30120.2466

Columns9through12

0.20190.16530.13530.1653

分析:

经由图像比较,用四阶龙格-库塔梯形法求解题2-3的数值解与真值

一致,比用欧拉法求得的解更接近于真值。

4-2设典型闭环结构控制系统如下图所示,当阶跃输入幅值

时,用sp4_1.m求取输出y(t)的响应。

解:

源程序:

b=[1.875e+6,1.562e+6];

a=[1,54,204.2,213.8,63.5];

X0=[0,0,0,0];

V=0.002;

n=4;

T0=0;

Tf=10;h=0.01;R=20;

b=b/a

(1);a=a/a

(1);A=a(2:

5);

A=[rot90(rot90(eye(3,4)));-fliplr(A)];

B=[zeros(1,3),1]';

m1=length(b);

C=[fliplr(b),zeros(1,4-m1)];

Ab=A-B*C*V;

X=X0';y=0;t=T0;

N=round(Tf-T0)/h;

fori=1:

N;

K1=Ab*X+B*R

K2=Ab*(X+h*K1/2)+B*R;

K3=Ab*(X+h*K2/2)+B*R;

K4=Ab*(X+h*K3)+B*R;

X=X+h*(K1+2*K2+2*K3+K4)/6;

y=[y,C*X];

t=[t,t(i)+h];

end

[t',y']

plot(t,y)

b=[1.875e+6,1.562e+6];

a=[1,54,204.2,213.8,63.5];

X0=[0,0,0,0];

V=0.002;

n=4;

T0=0;

Tf=10;h=0.01;R=20;

b=b/a

(1);a=a/a

(1);A=a(2:

5);

A=[rot90(rot90(eye(3,4)));-fliplr(A)];

B=[zeros(1,3),1]';

m1=length(b);

C=[fliplr(b),zeros(1,4-m1)];

Ab=A-B*C*V;

X=X0';y=0;t=T0;

N=round(Tf-T0)/h;

fori=1:

N;

K1=Ab*X+B*R

K2=Ab*(X+h*K1/2)+B*R;

K3=Ab*(X+h*K2/2)+B*R;

K4=Ab*(X+h*K3)+B*R;

X=X+h*(K1+2*K2+2*K3+K4)/6;

y=[y,C*X];

t=[t,t(i)+h];

end

[t',y']

plot(t,y)

结果:

分析:

由结论及图形反映了开环放大洗漱K与反馈系数V对结果的影响,K值增大会使系统震荡加剧,甚至可能造成不稳定。

4-5下图中,若各环节传递函数已知为:

,,

,但

;试列写链接矩阵W、W0和非零元素阵WIJ,将程序sp4_2完善后,应用此程序求输出

的响应曲线。

 

解:

源程序:

P=[1,0.01,1,0;

0,0.085,1,0.017;

0,0.051,1,0.15;

1,0.15,0.21,0;

1,0.01,0.1,0;

1,0.01,0.0044,0;

];

WIJ=[101;

211;

26-1;

321;

35-1;

431;

44-0.212;

541;

641

];

n=6;

Y0=1;

Yt0=[000000];

h=0.01;

L1=10;

T0=0;

Tf=40;

nout=5;

A=diag(P(:

1));B=diag(P(:

2));

C=diag(P(:

3));D=diag(P(:

4));

m=length(WIJ(:

1));

W0=zeros(n,1);W=zeros(n,n);

fork=1:

m

if(WIJ(k,2)==0);W0(WIJ(k,1))=WIJ(k,3);

elseW(WIJ(k,1),WIJ(k,2))=WIJ(k,3);

end;

end;

Q=B-D*W;Qn=inv(Q);

R=C*W-A;V1=C*W0;

Ab=Qn*R;b1=Qn*V1;

Y=Yt0';y=Y(nout);t=T0;

N=round(Tf-T0)/(h*L1);

fori=1:

N

forj=1:

L1;

K1=Ab*Y+b1*Y0

K2=Ab*(Y+h*K1/2)+b1*Y0

K3=Ab*(Y+h*K2/2)+b1*Y0

K4=Ab*(Y+h*K3)+b1*Y0

Y=Y+h*(K1+2*K2+2*K3+K4)/6;

end

y=[y,Y(nout)];

t=[t,t(i)+h*L1];

end

[t',y']

plot(t,y)

结果:

4-7用离散相似法仿真程序sp4_3.m重求上题输出

的数据与曲线,并与四阶龙格-库塔法比较精度。

解:

源程序:

P=[1,0.01,1,0;0,0.085,1,0.17;0,0.051,1,0.15;1,0.15,0.21,0;1,0.01,0.1,0;1,0.01,0.0044,0];

W=[000000;10000-1;0100-10;001-0.21200;000100;000100];

W0=[1;0;0;0;0;0];

n=6;

Y0=1;

Yt0=[000000];

h=0.01;

L1=10;

T0=0;

Tf=40;

nout=4;

A=diag(P(:

1));B=diag(P(:

2));

C=diag(P(:

3));D=diag(P(:

4));

fori=1:

6

if(A(i,i)==0);

FI(i,i)=1;

FIM(i,i)=h*C(i,i)/B(i,i);

FIJ(i,i)=h*h*C(i,i)/B(i,i)/2;

FIC(i,i)=1;FID(i,i)=0;

if(D(i,i)~=0);

FID(i,i)=D(i,i)/B(i,i);

else

end

else

FI(i,i)=exp(-h*A(i,i)/B(i,i));

FIM(i,i)=(1-FI(i,i))*C(i,i)/A(i,i);

FIJ(i,i)=h*C(i,i)/A(i,i)-FIM(i,i)*B(i,i)/A(i,i);

FIC(i,i)=1;FID(i,i)=0;

if(D(i,i)~=0);

FIC(i,i)=C(i,i)/D(i,i)-A(i,i)/B(i,i);

FID(i,i)=D(i,i)/B(i,i);

else

end

end

end

Y=zeros(6,1);X=Y;y=0;Uk=zeros(6,1);Ub=Uk;

t=T0:

h*L1:

Tf;N=length(t);

fork=1:

N-1

forl=1:

L1

Ub=Uk;

Uk=W*Y+W0*Y0;

Udot=(Uk-Ub)/h;

Uf=2*Uk-Ub;

X=FI'*X+FIM'*Uk+FIJ'*Udot;

Y=FIC'*X+FID'*Uf;

end

y=[y,Y(nout)];

end

plot(t,y,'r*')

结果:

分析:

用离散相似法与四阶龙格—库塔法比较来看,两者精度很接近,并且与四阶龙格-库塔法相比,离散相似法更容易推广到解决非线性系统的仿真问题。

4-8求下图非线性系统的输出响应y(t),并与无非线性环节情况进行比较。

 

解:

源程序:

主程序:

P=[0.110.51;01200;2110;10110];

WIJ=[101;14-1;211;321;431];

Z=[0000];S=[0000];

h=0.01;

L1=25;

n=4;

T0=0;

Tf=20;

nout=4;

Y0=10;

sp4_4;

plot(t,y,'r')

holdon

Z=[4000];S=[5000];

sp4_4;

plot(t,y,'g')

子程序sp4_4.m文件:

A=diag(P(:

1));B=diag(P(:

2));

C=diag(P(:

3));D=diag(P(:

4));

m=length(WIJ(:

1));

W0=zeros(n,1);W=zeros(n,n);

fork=1:

m

if(WIJ(k,2)==0);W0(WIJ(k,1))=WIJ(k,3);

elseW(WIJ(k,1),WIJ(k,2))=WIJ(k,3);

end;

end;

fori=1:

n

if(A(i,i)==0);

FI(i,i)=1;

FIM(i,i)=h*C(i,i)/B(i,i);

FIJ(i,i)=h*h*C(i,i)/B(i,i)/2;

FIC(i,i)=1;FID(i,i)=0;

if(D(i,i)~=0);

FID(i,i)=D(i,i)/B(i,i);

else

end

else

FI(i,i)=exp(-h*A(i,i)/B(i,i));

FIM(i,i)=(1-FI(i,i))*C(i,i)/A(i,i);

FIJ(i,i)=h*C(i,i)/A(i,i)-FIM(i,i)*B(i,i)/A(i,i);

FIC(i,i)=1;FID(i,i)=0;

if(D(i,i)~=0);

FIC(i,i)=C(i,i)/D(i,i)-A(i,i)/B(i,i);

FID(i,i)=D(i,i)/B(i,i);

else

end

end

end

Y=zeros(n,1);X=Y;y=0;Uk=zeros(n,1);Ubb=Uk;

t=T0:

h*L1:

Tf;N=length(t);

fork=1:

N-1

fori=1:

L1

Ub=Uk;

Uk=W*Y+W0*Y0;

fori=1:

n

if(Z(i)~=0)

if(Z(i)==1)

Uk(i,i)=satu(Uk(i,i),S(i));

end

if(Z(i)==2)

Uk(i,i)=dead(Uk(i,i),S(i));

end

if(Z(i)==3)

[Uk(i,i),Ubb(i,i)]=backlash(Ubb(i,i),Uk(i,i),Ub(i,i),S(i));

end

end

end

Udot=(Uk-Ub)/h;

Uf=2*Uk-Ub;

X=FI'*X+FIM'*Uk+FIJ'*Udot;

Yb=Y;

Y=FIC'*X+FID'*Uf;

fori=1:

n

if(Z(i)~=0)

if(Z(i)==4)

Y(i,i)=satu(Y(i,i),S(i));

end

if(Z(i)==5)

Y(i,i)=dead(Y(i,i),S(i));

end

if(Z(i)==6)

[Y(i,i),Ubb(i,i)]=backlash(Ubb(i,i),Y(i,i),Yb(i,i),S(i));

end

end

end

end

y=[y,Y(nout)];

end

backlash函数:

function[Uc,Ubb]=backlash(Urb,Ur,Ucb,S1)

if(Ur>Urb)

if((Ur-S1)>=Ucb)

Uc=Ur-S1;

elseUc=Ucb;

end

elseif(Ur

if((Ur+S1)<=Ucb)

Uc=Ur+S1;

elseUc=Ucb;

end

elseUc=Ucb;

end

end

Ubb=Ur;

Satu函数:

functionUc=satu(Ur,S1)

if(abs(Ur)>=S1)

if(Ur>0)

Uc=S1;

elseUc=-S1;

end

elseUc=Ur;

end

dead函数:

functionUc=dead(Ur,S1)

if(abs(Ur)>=S1)

if(Ur>0)

Uc=Ur-S1;

elseUc=Ur+S1;

end

elseUc=0;

end

结果:

分析:

仿真结果显示滞环非线性缓解N对线性系统输出响应的影响,N值越大,滞后越明显。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1