控制工程基础上机练习指导Word文档格式.docx
《控制工程基础上机练习指导Word文档格式.docx》由会员分享,可在线阅读,更多相关《控制工程基础上机练习指导Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
系统的结构有多种表达方式(如零、极点模式等)。
对一阶系统也可进行上面的操作,但其只有一个参数。
示例:
得结果如下:
练习二利用简单程序熟悉阻尼系数变化对二阶系统脉冲响应的影响
一、任务:
对典型二阶系统
1、已知
,绘出
0.4,0.7,1时;
连续系统的脉冲响应曲线;
2、绘制当采样周期
时,离散系统的脉冲响应曲线。
二、对所用编程语句的简单说明:
✧clear:
清除内存变量和函数;
clf:
清除图对象;
✧zeta=[0.1:
0.3:
1]:
zeta=
,从0开始,增量为0.3,到1;
✧[num,den]=ord2(
z):
定义二阶系统参数;
s=tf(num,den):
建立二阶连续系统;
✧Sd=c2d(S,
):
建立以
为采样周期的采样系统;
✧figure
(1),impulse(S,2),holdon:
作图1,时间为2的脉冲响应,并保持该曲线;
✧figure
(2),impulse(Sd,2),holdon:
作图2,采样系统的脉冲响应,并保持该曲线;
二、建立Matlab程序1.m(file→new→M→file→);
或者直接在commandwindow中运行。
clear,clf
wn=10,Ts=0.1
forzeta=[0.1:
1]
[num,den]=ord2(wn,zeta);
s=tf(num,den);
sd=c2d(s,Ts)
figure
(1),impulse(s,2),holdon
figure
(2),impulse(sd,2),holdon
end
holdoff
得到两个图像,也可以把两个图像画在一起。
分别改变
和
值,然后运行以上程序。
第二部分系统的频率响应
一、控制工具箱中的频域分析函数
bode(sys);
[mag,phase,w]=bode(sys):
绘制bode图;
fres=evalfr(sys,f):
计算系统单个复频率点的频率响应;
H=freqresp(sys,w):
计算系统在给定实频率区间的频率响应;
[Gm,Pm,wcg,wcp]=margin(sys):
计算系统的增益和相位裕度;
ngrid:
Nichols网格图绘制;
nichols(sys):
Nichols图绘制;
nyquist(sys):
Nyquist图绘制;
Sigma(sys):
系统奇异值bode图绘制(鲁棒控制中);
二、练习示例
例1:
对练习二中的二阶系统,分别求连续、离散两种情况下系统的bode图。
新建x2.m文件如下:
clear,clf,wn=10;
forzeta=[0.1:
s1=tf(num,den);
sd1=c2d(s1,0.1);
figure
(1),bode(s1),holdon
figure
(2),bode(sd1),holdon
另外,在图2后还可加以下语句:
figure(3),ngrid(s1),holdon//得s1的Nichols网格图%
figure(3),nyquist(s1),holdon//得s1的nyquist图%
figure(3),nichols(s1),holdon//得s1的Nichols图%
例2:
利用计算机CAD方法作出下面系统的伯德图,分析系统各环节伯德图及其叠加后的总伯德图:
标准化得:
程序x3.m如下:
clear,clf
g0=tf(24,1);
g1=tf([0.25,0.5],1);
g2=tf(1,[5,2]);
g3=tf(1,[0.05,2]);
g=tf(conv(24,[0.25,0.5]),conv([5,2],[0.05,2]));
w=logspace(0,3);
holdon;
figure
(1);
bode(g0,'
k-'
);
bode(g1,'
k.'
bode(g2,'
k+'
bode(g3,'
k--'
bode(g,'
k*'
xlabel('
w(rad/s)'
'
Fontsize'
12);
ylabel('
Φ(w)L(w)'
练习三高阶系统时间响应的计算机求解
例:
某系统的传递函数为
,求其单位阶跃响应。
程序x4.m如下:
bm=[6,1,6,10];
as=[1,2,3,1,1];
g=tf(bm,as);
step(g);
Xlabel('
时间t'
FontSize'
12)
Ylabel('
响应y'
第三部分nyquist曲线及其稳定判据
设系统开环传递函数为:
1、此开环系统有一极点位于复平面右半平面(s=1.2),故系统不稳定。
画出其nyquist图、开环脉冲响应曲线、bode图及闭环脉冲响应图。
2、给系统加上一个零点(s+0.5)后,重复以上步骤,并对修正前后两系统特性进行比较。
先建模,得系统s1。
bode图可用简略图的对数频率特性图margin代替。
其闭环系统模型sb1可用反馈系统函数feedback得到,即sb1=feedback(s1,1)。
程序x5.m如下:
clear,
s1=zpk([],[-6,-1,1.2],50);
//传递函数的零、极点增益模式,括号内依次为零点、极点、增益
figure
(1)//以下为图1,含4张子图(subplot)
subplot(2,2,1);
nyquist(s1),grid//绘制开环系统nyquist图,grid:
带网络
sb1=feedback(s1,1)//求对应的闭环系统
subplot(2,2,2);
impulse(s1),grid//绘制s1的单位脉冲(impulse)响应曲线图
subplot(2,2,3);
margin(s1),grid//绘制s1的bode图
subplot(2,2,4);
impulse(sb1),grid//绘制对应闭环系统nyquist图
s2=zpk([-0.5],[-6,-1,1.2],50);
//加零点后传递函数的零、极点增益模式
figure
(2)//以下为图2
nyquist(s2),grid
sb2=feedback(s2,1)
impulse(s2),grid
margin(s2),grid
impulse(sb2),grid
s=5/s(s+2)(s+0.5)
nyquist(s)
G=zpk([],[0,-2],50)
nyquist(G)
G=tf(50,[12.510]);
num=[50];
den=[12.510]
nyquist(num,den)
G=zpk([-0.05],[0,0,0,-0.5],100)
教材第4章P136例5:
G=zpk([-0.05],[0,0,-0.5],100)
G=zpk([-0.05],[0,-0.5],1)
G=zpk([-0.05],[0,-0.5],0.1)
G=zpk([-0.02],[0,-1],50)
G=zpk([-0.02],[0,-1],0.2)
G=zpk([-0.02],[0,-0.5],0.2)
G=zpk([-0.5],[0,-0.05],1)
G=zpk([-0.5],[0,-0.05],0.1)
G=zpk([-0.5],[0,-0.05],0.02)
G=zpk([-0.05],[-0.5],100)
G=zpk([-0.5],[0,0,-0.05],1)
结果分析:
1、在matlab界面右侧commandwindow中给出了s1、s2的闭环零、极点增益模式:
,
。
sb1因含实部大于0的极点而不稳定;
sb2极点均小于零因而是稳定的,从第4子图可验证。
2、由nyquist稳定养据,若开环系统有一极点位于复平面右半部分,则其开环nyquist图逆时针绕(-1,j0)点一圈时,对应的闭环系统是稳定了,系统s1之nyquist图是顺时针绕的,故不稳定,而系统s2则是稳定的。
例2、设控制系统的开环传递函数为:
,试求当k=10和k=100是时系统的相角储备和幅值储备,并分析影响系统稳定性的主要因素。
从课程学习知,影响系统稳定性的主要因素有4:
系统开环增益(降低时可提高系统的相对稳定性);
积分环节(系统型次越高越不易稳定);
系统固有频率和阻尼比(对高阶系统,系统固有频率越高,阻尼比越大,系统稳定性储备越大);
延时环节和非最小相位环节。
程序x6.m如下:
gh=tf(conv(10,[1,0]),conv([1,1],[1,5]));
sys=feedback(gh,1);
z=[zero(sys)]
p=[pole(sys)]
ii=find(real(p)>
0),n1=length(ii);
ij=find(real(z)>
0),n2=length(ij);
if(n1>
0),disp('
系统不稳定!
'
...
else,disp('
系统稳定!
if(n2>
系统不是最小相位系统!
系统是最小相位系统!
margin(gh);
[Gm,Pm,Wcg,Wcp]=margin(gh);
PGm=num2str(20*log10(Gm));
PPm=num2str(Gm);
Gms=char('
系统的幅值裕量为'
PGm);
Pms=char('
系统的相位裕量为'
PPm);
disp(Gms);
disp(Pms)
改变k=100,重复以上程序。
第四部分控制系统的校正
一、上机内容
1、利用课本上所学方法,对不稳定或稳定性裕量不满足要求的系统进行校正,并分别绘制系统在校正前后的N氏图、bode图。
2、验证教材中例题或作业题中的结论。
二、练习下面的内容
1、例1:
对开环系统
,分别求其连续、离散系统在开环、闭环情况下的频率特性及稳定性。
所用新函数如下:
✧damp(s):
求极点
✧[Gm,Pm,Wcg,Wcp]=margin(s):
判定系统的稳定性裕度,返回对应的幅值、相位裕量和交界/剪切频率值。
程序x7.m如下:
clear
Ts=0.1
s=zpk(-6,[0,-1,-10,-10],200)//建立开环系统模型s
sd=c2d(s,Ts)//对开环系统模型s以采样频率Ts离散化得系统sd
sb=feedback(s,1)//得闭环系统sb
sbd=feedback(sd,1)//对闭环系统模型sb以采样频率Ts离散化得系统sbd
figure
(1),bode(s,’--’,sb,’.-’)
figure
(2),bode(sd,’--’,sbd,’.-’)
damp(sb)
damp(sbd)
[Gm,Pm,Wcg,Wcp]=margin(s)
[Gmd,Pm,dWcgd,Wcpd]=margin(sd)
结论分析:
本题中的连续系统是稳定的,但裕量较小;
对应的离散系统是不稳定的,因其根的模大于1。
2、例2:
对开环不稳定系统
,画出其N氏图并判其闭环系统稳定性。
在加一零点(s+0.5)后画出其N氏图并判其闭环系统稳定性。
程序x8.m如下:
//传递函数的零、极点增益模式
figure
(1)//以下为图1
[Gm,Pm,Wcg,Wcp]=margin(s1)
[Gm,Pm,Wcg,Wcp]=margin(s2)
从系统脉冲响应或N氏图可知系统s1不稳定,s2稳定。
本程序用带返回值的margin()函数可给出结论。
3、例3:
对系统进行相位校正
⑴采用bode图对系统进行超前校正
见教材第183页的单位反馈系统,开环传函为
所采用的校正环节为
分别绘制校正前后开环系统N氏图、bode图、稳定性图,给出稳定性表示值,并利用单位脉冲响应进行稳定性验证。
校正前后传递函数分析:
先对原开环系统传函进行标准化:
校正后有
程序x9.m如下:
s1=zpk([],[0,-2],40);
sb1=feedback(s1,1)
figure
(1)
nyquist(s1),grid
bode(s1),grid
margin(s1),grid
impulse(sb1),grid
s2=zpk([-1/0.23],[0,-1/0.055,-2],1840/11);
figure
(2)
bode(s2),grid
从figure
(1)可知,校正前系统开环稳定,介相位裕量小(18º
);
经校正后的figure
(2)上,相位裕量为50.5º
加大了带宽,也加快了系统的响应速度(figure
(1)中单位脉冲响应在t=4s时接近稳定,而figure
(2)中单位脉冲响应的过渡时间约为0.7s)。
同时,由于系统的型次和增益都没有改变,所以稳态精度提高较少,
⑵采用bode图对系统进行相位滞后校正(见教材)
为减少系统稳态误差而又不影响其稳定性和响应的快速性,只要加大低频段的增益即可,为此可采用相位滞后校正。
对第186页所示系统,确定开环增益K后,系统开环传递函数标准化后为:
所设计的校正环节为:
,则校正后的传递函数为:
同⑴采用bode图对系统进行超前校正,编写程序example4,分别用下面的系统模型代替example3中相应语句,并对照教材分析所得结果。
s1=zpk([],[0,-1,-2],10);
s2=zpk([-0.1],[0,-1,-2,-0.01],1);
⑶采用bode图对系统进行相位超前-滞后校正(见教材)
采用相位超前-滞后校正可综合相位超前校正和相位滞后两者的特点,可同时改善系统的动态性能和稳态性能。
校正前系统传递函数为
同⑴采用bode图对系统进行超前校正类似,编写程序example5,分别用下面的系统模型代替example3中相应语句,并对照教材分析所得结果。
s1=zpk([],[0,-1,-2],20);
s2=zpk([-1/6.67,-1/1.43],[0,-1,-2,-1/66.7,-1/0.143],10*6.67*1.43/0.5/66.7/0.143);
figure
(1)
nyquist(s1),grid
sb1=feedback(s1,1)
impulse(s1),grid
margin(s1),grid
impulse(sb1),grid
figure
(2)
s1=zpk(-6,[0,-1,-10,-10],200)
sd1=c2d(s1,Ts)
sbd1=feedback(sd1,1)
figure
(1),bode(s1,’--’,sb1,’.-’)
figure
(2),bode(sd1,’--’,sbd1,’.-’)
damp(sb1)
damp(sbd1)
[Gmd,Pm,dWcgd,Wcpd]=margin(sd1)
g0=tf(1,[1,1]);
g1=tf(1,[3,1]);
step(g0,'
step(g1,'
s=zpk([],[0,-2,-20],2000);
nyquist(s),grid
sb=feedback(s,1)
step(sb),grid
margin(s),grid
impulse(sb),grid