第6章 MATLAB在系统校正中的应用.docx
《第6章 MATLAB在系统校正中的应用.docx》由会员分享,可在线阅读,更多相关《第6章 MATLAB在系统校正中的应用.docx(13页珍藏版)》请在冰豆网上搜索。
第6章MATLAB在系统校正中的应用
第6章MATLAB在系统校正中的应用
频域法串联校正的MATLAB方法
利用MATLAB可以方便的画出Bode图并求出幅值裕量和相角裕量。
将MATLAB应用到经典理论的校正方法中,可以方便的校验系统校正前后的性能指标。
通过反复试探不同校正参数对应的不同性能指标,能够设计出最佳的校正装置。
例6.1给定系统如图6-1所示,试设计一个串联校正装置,使系统满足幅值裕量大于10分贝,相位裕量≥45o
图6-1校正前系统
解:
为了满足上述要求,我们试探地采用超前校正装置Gc(s),使系统变为图6-2的结构。
图6-2校正后系统
我们可以首先用下面地MATLAB语句得出原系统的幅值裕量与相位裕量。
>>G=tf(100,[0.04,1,0]);
[Gw,Pw,Wcg,Wcp]=margin(G);
在命令窗口中显示如下结果
w= Pw=
Inf 28.0243
Wcg= Wcp=
Inf 46.9701
可以看出,这个系统有无穷大的幅值裕量,并且其相位裕量
=28o,幅值穿越频率Wcp=47rad/sec。
引入一个串联超前校正装置:
我们可以通过下面的MATLAB语句得出校正前后系统的Bode图如图6-3,校正前后系统的阶跃响应图如图6-4。
其中
、
、ts1分别为校正前系统的幅值穿越频率、相角裕量、调节时间,
2、
、ts2分别为校正后系统的幅值穿越频率、相角裕量、调节时间。
>>G1=tf(100,[0.04,1,0]);%校正前模型
G2=tf(100*[0.025,1],conv([0.04,1,0],[0.01,1]))%校正后模型
%画伯德图,校正前用实线,校正后用短划线。
bode(G1)
hold
bode(G2,′--′)
%画时域响应图,校正前用实线,校正后用短划线。
figure
G1_c=feedback(G1,1)
G2_c=feedback(G2,1)
step(G1_c)
hold
step(G2_c,′--′)
图6-3校正前后系统的Bode图
图6-4校正前后系统的阶跃响应图
可以看出,在这样的控制器下,校正后系统的相位裕量由
增加到48o,调节时间由0.28s减少到0.08s。
系统的性能有了明显的提高,满足了设计要求。
例6.2对于一结构如图6-5所示的系统,给定固有部分的传递函数Gg(s)和性能指标要求,试设计串联校正装置K(s)。
设
1.若要求开环比例系数K≥1001/秒,相角裕量γ≥30ºº,ωc≥451/秒。
2.若要求开环比例系数K≥1001/秒,相角裕量γ≥40º,ωc=51/秒。
3.若要求开环比例系数K≥1001/秒,相角裕量γ≥40º,ωc≥201/秒,分别设计校正装置,并比较它们的作用效果。
图6-5
对于1,需进行超前校正,这里给出一个参考的K(s)=(0.05s+1)/(0.005s+1),于是系统的开环传递函数为
闭环传递函数为
其单位阶跃响应的实现为:
num=[1000,00020,000,000];
den=[131023,0001200,00020,000,000];
t=xx:
xx:
xx;(起始时间,步长,终止时间)
c=step(num,den,t);
plot(t,c);
xlabel(’t-sec.’),ylabel(’c(t)’),grid,pause
对于2需进行滞后校正,这里给出一参考的
仿照上述,可求出系统的阶跃响应。
对于3,需进行滞后超前校正,这里给出一参考的
同理可得到系统的阶跃响应。
比较上述三种不同的校正装置K(s)所产生的不同效果,可以看出三种校正方式的作用。
这里需要特别指出阶跃响应的起始时间,步长及终止时间的给定问题。
起始时间通常给0,终止时间要根据系统的过渡过程时间的长短来给定。
我们可按估计过渡过程时间的经验公式
ts≈(4~9)/ωc
给定此值:
如2,ωc=51/秒,则过渡过程时间大约在0.8~1.8秒之间,于是终止时间可给2秒,我们希望在0至2秒内显示出20个点,则步长为0.1秒。
若已知系统的ωc,建议步长按1/(2ωc)给定。
对ωc未知,也不便估计过渡过程时间的系统只好用试探法,待曲线显示出以后再调整步长和终止时间。
图6-6为系统固有部分的频率特性图(幅频特性和相频特性)可以看出该系统已接近临界稳定状态了。
图6-7至图6-10分别表示不加校正,加超前校正,加滞后校正,和加滞后超前校正的系统阶跃响应。
图6-6
num=100;
den=conv([1,0],conv([0.1,1],[0.01,1]));
bode(num,den)
图6-7
numo=100;
deno=conv([1,0],conv([0.1,1],[0.01,1]));
t=0:
0.01:
2;
numc=numo;
denc=[zeros(1,length(deno)-length(numo)),numo]+deno;
c=step(numc,denc,t);
plot(t,c)
xlabel('t-sec'),ylabel('c(t)'),grid,pause
图6-8
numo=conv(100,[0.05,1]);
deno=conv([0.005,1],conv([1,0],conv([0.1,1],[0.01,1])));
t=0:
0.01:
2;
numc=numo;
denc=[zeros(1,length(deno)-length(numo)),numo]+deno;
c=step(numc,denc,t);
plot(t,c)
xlabel('t-sec'),ylabel('c(t)'),grid,pause
图6-9
numo=conv(100,[0.5,1]);
deno=conv([10,1],conv([1,0],conv([0.1,1],[0.01,1])));
t=0:
0.01:
2;
numc=numo;
denc=[zeros(1,length(deno)-length(numo)),numo]+deno;
c=step(numc,denc,t);
plot(t,c)
xlabel('t-sec'),ylabel('c(t)'),grid,pause
图6-10
numo=conv(conv([0.25,1],[0.1,1]),[100]);
deno=conv(conv([1.25,1],[0.02,1]),conv([1,0],conv([0.1,1],[0.01,1])));
t=0:
0.01:
2;
numc=numo;
denc=[zeros(1,length(deno)-length(numo)),numo]+deno;
c=step(numc,denc,t);
plot(t,c)
xlabel('t-sec'),ylabel('c(t)'),grid,pause
例6.3已知单位负反馈系统的开环传递函数为
,试设计串联滞后校正装置,使系统指标满足单位斜坡输入信号时稳态误差
,相位裕度
。
MATLAB语句为:
num=100;
den=conv([10],[0.041]);
[Gm,Pm,Wcg,Wcp]=margin(num,den);
symswcl
wcl=solve(‘180-90-360*atan(0.04*wc1)/(2*pi)-50=0’)
g=wcl*sqrt(1+(0.04*wc1)^2)
alph=100/g
T=1/(0.1*wcl)
alph*T
num=100*[T1]
den=conv([10],conv([0.041],[1.74081]))
margin(num,den);
kv=100
ess=1/kv
经检验
,相位裕度
,全部满足要求。
例6.4设开环传递函数为
,单位斜坡输入
,产生的稳态误差
,校正后的相位裕度
,截止频率
,试校正系统。
MATLAB语句为:
num=16;
den=conv([10],[11]);
den=conv(den,[0.011]);
[mag,phase,w]=bode(num,den);
margin(num,den)
上图是校正前系统的BODE图,可以看出不满足要求,需要校正,系统中频段以斜率-40db/dec穿过0db线,故选用超前网络校正。
[gm,pm,wcp,wcg]=margin(mag,phase,w)
faim=45-pm+10;
alph=(1+sin(faim*2*pi/360))/(1-sin(faim*2*pi/360))
j=sqrt(alph)
wc2=sqrt(16*j)
T=1/(wc2*j)
num=16*[0.0718*5.28041]
den=conv(den,[0.07181])
[mag,phase,w]=bode(num,den)
margin(num,den)
上图是校正后系统的BODE图,校正后的相位裕度
,可以看出满足要求.
相位裕度增加,截止频率增加,对应的超调量减少,调节时间减少。
下面编一个程序予以验证。
num1=16;
den11=conv([10],[11]);
den1=conv(den11,[0.011])
[numa,dena]=cloop(num1,den1,-1);
step(numa,dena,'k')
num2=16*[0.0718*5.28041];
den2=conv(den1,[0.07181]);
[numb,denb]=cloop(num2,den2,-1);
holdon
step(numb,denb,'k-')
gtext('校正前')
gtext('校正后')