MATLAB实验.docx

上传人:b****3 文档编号:12650400 上传时间:2023-04-21 格式:DOCX 页数:22 大小:95.88KB
下载 相关 举报
MATLAB实验.docx_第1页
第1页 / 共22页
MATLAB实验.docx_第2页
第2页 / 共22页
MATLAB实验.docx_第3页
第3页 / 共22页
MATLAB实验.docx_第4页
第4页 / 共22页
MATLAB实验.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

MATLAB实验.docx

《MATLAB实验.docx》由会员分享,可在线阅读,更多相关《MATLAB实验.docx(22页珍藏版)》请在冰豆网上搜索。

MATLAB实验.docx

MATLAB实验

实验一

一、打开Matlab软件,点击

,进入simulinkLibraryBrowser,点击文件---新建----Model

选择建立如下simulink模型图。

修改单位阶跃模块的参数:

steptime:

0(阶跃信号起始时间为0时刻)这个值需要设置一下,其余的值都不用改动。

intitialvalue:

0(初值为0);Finalvalue:

1(终值为1);Sampletime:

0(采样时间)(这一项我没太弄明白,变了几个值,得到的结果没什么变化。

将求和模块改为+-;

将TransferFcn模块的参数设为num:

[10],den:

[0.020.310];

(2)simulation菜单star命令开始仿真;(也可使用那个小黑三角的图标工具)

(3)双击示波器模块观察波形;(可以使用Autoscale工具,就是那个像望远镜的图标,得到最佳观测效果)

二、选择建立如下simulink模型图。

(做书上P139页到145页即可)

最后生成

答案:

先画出simulink模型图,然后全选点击右键弹出菜单选CreateSubsystem,生成Subsystem模块,然后选中Subsystem功能模块,右键弹出菜单选中MaskSubsystem进入Mask编辑窗口,如下图将模块下Subsystem名字改为disk(‘PID’),点击OK生成PIDController。

实验二

1、时域分析

(1)根据下面传递函数模型:

绘制其单位阶跃响应曲线并在图上读标注出峰值,求出系统的性能指标。

答案:

程序shiyan3_1_1.m(本程序中用到了stepchar函数,需要按照书后附录D自己建立stepchar.m)

function[pos,tr,ts,tp]=stepchar(g0,delta)

[y,t]=step(g0);

figer=plot(t,y),gridon

[mp,ind]=max(y);

dimt=length(t);

yss=y(dimt);

pos=100*(mp-yss)/yss

tp=t(ind)

fori=1:

dimt

ify(i)>=yss

tr=t(i);

break;

end

end;

Tr=tr

fori=1:

length(y)

ify(i)<=(1-delta)*yss|y(i)>=(1+delta)*yss

ts=t(i);

end

end

Ts=ts

以下是主程序:

>>G=tf([52530],[16108]);

step(G)

[pos,tr,ts,tp]=stepchar(G,0.02)

figer=

1.9670e+003

pos=

7.5374

tp=

2.2086

Tr=

1.4356

Ts=

3.6994

(2)已知两个线性定常连续系统的传递函数分别为

,绘制它们的单位脉冲响应曲线。

答案:

程序(shiyan312.m)

g1=tf([124],[11054]);

g2=tf([32],[272]);

impulse(g1,g2)%脉冲响应曲线

运行结果:

(3)已知线性定常系统的状态空间模型和初始条件,绘制其零输入响应曲线。

答案:

%教材P184例题。

A=[-0.5572,-0.7814;0.7814,0];B=[0;0];C=[1.9691,6.4493];D=[0];

x0=[1;0];t=0:

0.1:

20;

initial(A,B,C,D,x0,t),gridon

2、频域分析设线性定常连续系统的传递函数分别为

,将它们的Bose图绘制在一张图中。

答案:

G1=tf([1],[51]);

G2=tf([0.3],[514]);

G3=tf([0.6],[11]);

bode(G1,'r-',G2,'b-',G3,'k:

')

运行结果:

3、根轨迹分析根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析系统稳定的K值范围。

答案:

sys=tf([1],conv([1,0],conv([11],[12])));

rlocus(sys)%P186

[K,ploes]=rlocfind(sys)

注:

根轨迹图出来后,用鼠标点击竖的虚线和根轨迹的相交点。

零极点在左平面时,系统稳定。

故系统稳定的K值范围是0-6。

selected_point=

0+1.4286i

K=

6.1227

ploes=

-3.0111

0.0055+1.4260i

0.0055-1.4260i

 

实验三控制系统分析

(2)

4、系统稳定性分析

(1)代数法稳定性判据:

(用求分母多项式的根和routh函数两种方法)

已知系统的开环传递函数为:

试对系统闭环判别其稳定性

答案:

要用routh函数,首先按照书后附录D建立routh.m如下

function[rtab,info]=routh0(den)

info=[];

vec1=den(1:

2:

length(den));nrT=length(vec1);

vec2=den(2:

2:

length(den)-1);

rtab=[vec1;vec2,zeros(1,nrT-length(vec2))];

fork=1:

length(den)-2,

alpha(k)=vec1

(1)/vec2

(1);

fori=1:

length(vec2),

a3(i)=rtab(k,i+1)-alpha(k)*rtab(k+1,i+1);

end

ifsum(abs(a3))==0

a3=polyder(vec2);

info=[info,'Allelementsinrow',...

int2str(k+2)'arezeros;'];

elseifabs(a3

(1))

a3

(1)=1e-6;

info=[info,'Replacedfirstelement;'];

end

rtab=[rtab;a3,zeros(1,nrT-length(a3))];

vec1=vec2;vec2=a3;

end

>>G=zpk([-2],[0,-1,-20],100)

Zero/pole/gain:

100(s+2)

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

s(s+1)(s+20)

>>Gclose=feedback(G,1)%单位负反馈,等同于feedback(G,1,-1)

Zero/pole/gain:

100(s+2)

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

(s+3.101)(s+5)(s+12.9)

>>G0=tf(Gclose)

Transferfunction:

100s+200

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

s^3+21s^2+120s+200

>>den=[121120200];

>>[rtab,msg]=routh(den)

rtab=1120

210

1200

00

msg=

Allelementsinrow4arezeros;

(2)根轨迹法判断系统稳定性:

已知一个单位负反馈系统开环传递函数为:

试在系统的闭环根轨迹图上选择一点,求出该点的增益及其系统的闭环极点位置,

并判断在该点系统闭环的稳定性。

num=[13];

den=conv(conv([10],[15]),conv([16],[122]));

G=tf(num,den);

rlocus(G)

[K,p]=rlocfind(G)

Selectapointinthegraphicswindow

selected_point=

-7.0912+3.6957i

K=

1.2158e+003

p=

-7.1115+3.6800i

-7.1115-3.6800i

2.0754+3.8890i

2.0754-3.8890i

-2.9277

再选一次:

Selectapointinthegraphicswindow

selected_point=

-0.2784+1.0248i

K=

15.9165

p=

-5.5352+0.2986i

-5.5352-0.2986i

-1.3640

-0.2828+1.0292i

-0.2828-1.0292i

(3)Bode图法判断系统稳定性:

已知两个单位负反馈系统的开环传递函数分别为:

用Bode图法判断系统闭环的稳定性。

num1=[2.7];den1=[1540];num2=[2.7];den2=[15-40];

g1=tf(num1,den1);g2=tf(num2,den2);

margin(g1),gridon

[Gm,Pm,Wcg,Wcp]=margin(g1)

Gm=7.4074

Pm=51.7321

Wcg=2.0000

Wcp=0.5783

>>[Gm,Pm,Wcg,Wcp]=margin(g2)

Gm=Inf

Pm=-58.0504

Wcg=NaN

Wcp=0.5346

5、系统能控性、能观性分析

已知连续系统的传递函数模型,

当α分别取-1,0,+1时,判别系统的能控性与能观性

当α等于-1时

num=[1-1];

den=[1102718];

[a,b,c,d]=tf2ss(num,den);

tc=ctrb(a,b)%求能控矩阵

rank(tc)%能控矩阵的秩

to=obsv(a,c)%求能观矩阵

rank(to)%能观矩阵的秩

执行结果:

tc=

1-1073

01-10

001

ans=

3

to=

01-1

1-10

-11-27-18

ans=

3

能观、能控矩阵都是满秩。

故能观又能控

(2)当α等于0时

num=[10];

den=[1102718];

[a,b,c,d]=tf2ss(num,den)

tc=ctrb(a,b)

rank(tc)

to=obsv(a,c)

rank(to)

执行结果:

tc=1-1073

01-10

001

ans=3

to=010

100

-10-27-18

ans=3

能观、能控矩阵都是满秩。

故能观又能控

(3)当α等于1时

num=[11];

den=[1102718];

[a,b,c,d]=tf2ss(num,den)

tc=ctrb(a,b)%求能控矩阵

rank(tc)%能控矩阵的秩

to=obsv(a,c)%求能观矩阵

rank(to)%能观矩阵的秩

执行结果:

tc=1-1073

01-10

001

ans=3

to=011

110

-9-27-18

ans=2

所以能控,不能观

实验三基于BODE图法的控制系统设计

1、已知单位负反馈控制系统的开环传递函数为:

设计超前校正装置,使校正后系统满足:

答案:

为留有裕量取

编写Matlab程序:

KK=100;wc=50;Pm=50;

ng0=KK*[1];dg0=conv([1,0],conv([0.01,1],[0.1,1]));

g0=tf(ng0,dg0);

t=[0:

0.001:

0.5];w=logspace(-1,3);

[ngc,dgc]=fg_lead_pm_wc(ng0,dg0,Pm,wc,w);

%[ngc,dgc]=fg_lead_pd(ng0,dg0,wc)

gc=tf(ngc,dgc),g0c=tf(g0*gc);

b1=feedback(g0,1);b2=feedback(g0c,1);

step(b1,'r--',b2,'b',t);gridon

Transferfunction:

0.08578s+1

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

0.002402s+1

figure,bode(g0,'r--',g0c,'b',w),gridon,

[pos,tr,ts,tp]=stepchar(b2,0.02)

[gm,pm,wcg,wcp]=margin(g0c),Km=20*log10(gm)

figer=352.0022

pos=24.9651

tp=0.0409

Tr=0.0289

Ts=0.0939

pos=24.9651

tr=0.0289

ts=0.0939

tp=0.0409

gm=5.8934

pm=44.3060

wcg=201.9342

wcp=69.6644

Km=15.4074

函数程序:

stepchar、fg_lead_pm_wc(带惯性环节的超前控制器)、fg_lead_pd(不带惯)见书后附录,需要同学们先编辑好保存成.m文件。

两个函数均可完成实验要求。

2、已知单位负反馈控制系统的开环传递函数为:

设计超前校正装置,使校正后系统满足:

答案:

为留有裕量取

编写matlab程序:

KK=100;Pm=40;wc=5;

ng0=KK*[1];dg0=conv([1,0],conv([0.1,1],[0.01,1]));g0=tf(ng0,dg0);

t=[0:

0.001:

2];w=logspace(-1,4);

[ngc,dgc]=fg_lag_wc(ng0,dg0,w,wc);

gc=tf(ngc,dgc),g0c=tf(g0*gc);

b1=feedback(g0,1);b2=feedback(g0c,1);

step(b1,'r--',b2,'b',t);axis([0,5,-1,1.8]);gridon

Transferfunction:

2s+1

-----------

35.73s+1

figure,bode(g0,'r--',g0c,'b',w);gridon,

[pos,tr,ts,tp]=stepchar(b2,0.02)

[gm,pm,wcg,wcp]=margin(g0c)

figer=352.0068

pos=16.6273

tp=0.5803

Tr=0.3869

Ts=2.9014

pos=16.6273

tr=0.3869

ts=2.9014

tp=0.5803

gm=18.6322

pm=55.0990

wcg=30.7909

wcp=5.0205

函数程序:

fg_lag_wc见书后附录。

stepchar.m

function[pos,tr,ts,tp]=stepchar(g0,delta)

[y,t]=step(g0);

[mp,ind]=max(y);

dimt=length(t);

yss=y(dimt);

pos=100*(mp-yss)/yss;

tp=t(ind);

fori=1:

dimt

ify(i)>=yss

tr=t(i);

break;

end

end;

fori=1:

length(y)

ify(i)<=(1-delta)*yss|y(i)>=(1+delta)*yss

ts=t(i);

end

end

fg_lead_pm_wc.m

function[ngc,dgc]=fg_lead_pm_wc(ng0,dg0,Pm,wc,w)

[mu,pu]=bode(ng0,dg0,w);

ngv=polyval(ng0,j*wc);dgv=polyval(dg0,j*wc);

g=ngv/dgv;%求原系统在期望的剪切频率处的频率响应数据G0(jwc)

theta=180*angle(g)/pi;%原系统在期望的剪切频率处的相角裕度,单位为度

alf=ceil(Pm-(theta+180)+5);%最大超前角

phi=(alf)*pi/180;

a=(1+sin(phi))/(1-sin(phi));

dbmu=20*log10(mu);

mm=-10*log10(a);

wgc=spline(dbmu,w,mm);

T=1/(wgc*sqrt(a));

ngc=[a*T,1];dgc=[T,1];

fg_lead_pd.m

function[ngc,dgc]=fg_lead_pd(ng0,dg0,wc)

ngv=polyval(ng0,j*wc);dgv=polyval(dg0,j*wc);

g=ngv/dgv;

mg0=abs(g);

t=sqrt(((1/mg0)^2-1)/(wc^2));%幅值相加为零

ngc=[t,1];dgc=[1];%Gc(s)=1+Ts

fg_lag_wc.m

function[ngc,dgc]=fg_lag_wc(ng0,dg0,w,wc)

ngv=polyval(ng0,j*wc);dgv=polyval(dg0,j*wc);

g=ngv/dgv;

alph=abs(1/g);T=10/(alph*wc);

ngc=[alph*T,1];dgc=[T,1];

3、已知控制系统方框图如图3-1所示。

图中:

试设计反馈校正环节Hc(s),以满足下列要求:

书上p225页例题

KK=50;bp=0.3;ts=2.5;delta=0.05;

ng0=[20];dg0=conv([1,0],conv([0.9,1],[0.007,1]));

g0=tf(ng0,dg0);

w=logspace(-4,3);t=[0:

0.1:

3];

[mag,phase]=bode(KK*g0,w);

[gm0,pm0,wg0,wc0]=margin(mag,phase,w),gm0=20*log10(gm0)

mr=0.6+2.5*bp'

wc=ceil((2+1.5*(mr-1)+2.5*(mr-1)^2)*pi/ts),h=(mr+1)/(mr-1)

w1=2*wc/(h+1),w2=h*w1

w1=wc/10;w2=9;

ng1=[1/w1,1];dg1=conv([1/w2,1],conv([1,0],[1,0]));

g1=tf(ng1,dg1);

g=polyval(ng1,j*wc)/polyval(dg1,j*wc);K=abs(1/g);

g1=tf(K*g1)

h=tf(dg1,ng1);Kh=1/K;h=tf(Kh*h)

g2=feedback(KK*g0,h);

b1=feedback(g0,1);b2=feedback(g2,1);

bode(KK*g0,'r--',g2,'b',h,'g',w);gridon

step(b1,'r--',b2,'b',t);gridon

[pos,tr,ts,tp]=stepchar(b2.delta)

实验五控制系统的PID设计和工程整定方法

编写一个Ziegler()函数如下:

function[Gc,Kp,Ti,Td,H]=Ziegler(key,vars)

Ti=[];Td=[];H=[];

iflength(vars)==3

K=vars

(1);Tc=vars

(2);N=vars(3);

ifkey==1,Kp=0.5*K;

elseifkey==2,Kp=0.4*K;Ti=0.85*Tc;

elseifkey==3,Kp=0.6*K;Ti=0.5*Tc;Td=0.125*Tc;

end

end

switchkey

case1

Gc=Kp;

case2

Gc=tf(Kp*[Ti,1],[Ti0]);

case3

num=[Kp*Ti*Td*(N+1)/N,Kp*(Ti+Td/N),Kp];

den=Ti*[Td/N,1,0];

Gc=tf(num,den);

end

调用函数Ziegler(),可设计各个控制器。

程序如下:

G=tf(10,[110355024]);

[Kc,pp,wg,wp]=margin(G);

Tc=2*pi/wg;

[Gc1,Kp1]=Ziegler(1,[Kc,Tc,10]);

disp('P控制器参数Kp1为:

')

Kp1

[Gc2,Kp2,Ti2]=Ziegler(2,[Kc,Tc,10]);

disp('PI控制器参数Kp2和Ti2为:

')

Kp2

Ti2

[Gc3,Kp3,Ti3,Td3]=Ziegler(3,[Kc,Tc,10]);

disp('PID控制器参数Kp3,Ti3和Td3为:

')

Kp3

Ti3

Td3

G_c1=feedback(G*Gc1,1);

G0=feedback(G,1);

G_c2=feedback(G*Gc2,1);

G_c3=feedback(G*Gc3,1);

step(G0,'.',G_c1,'r',G_c2,'g',G_c3,'b')

实验六基于SIMULINK的控制系统综合仿真

1、建立模型图:

(tu6_1)

运行matlab程序如下:

t=[0:

0.1:

9.9]';

fori=1:

6

ut=[t,i*ones(size(t))];

[tt,xx,yy]=sim('tu6_1',10,[],ut);

holdon;

plot(tt,yy);gridon

end

2、建立模型图:

(tu6_2)

运行matlab程序如下:

t=[0:

20:

2000]';

ut=[t,ones(size(t))];

[tt,xx,yy]=sim('tu6_2',2000,[],ut);

plot(tt,yy);gridon

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

当前位置:首页 > 法律文书 > 调解书

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

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