计算机辅助控制综合实验报告.docx
《计算机辅助控制综合实验报告.docx》由会员分享,可在线阅读,更多相关《计算机辅助控制综合实验报告.docx(24页珍藏版)》请在冰点文库上搜索。
计算机辅助控制综合实验报告
控制系统计算机辅助设计
综合实验指导
实验名称:
连续与离散系统校正实验,系统可控性与可观性实验,系统的simulink仿真实验
实验任务书
1.有一个单位负反馈控制系统,如果控制对象的传递函数为
设计要求:
①相角裕度≥45°;
②当系统的输入信号是单位斜坡信号时,稳态误差ess≤0.04。
③要求绘制出校正后系统和未校正系统的Bode图及其闭环系统的单位阶跃响应曲线,并进行对比。
2.有一个单位负反馈控制系统,如果控制对象的传递函数为:
试设计一个串联滞后校正装置。
设计要求:
①相角裕度≥45°;
②当系统的输入信号是单位斜坡信号时,稳态误差ess≤0.04。
③要求绘制出校正后系统和未校正系统的Bode图及其闭环系统的单位阶跃响应曲线,并进行对比。
3.有一个单位负反馈控制系统,如果控制对象的传递函数为
试设计一个串联超前滞后校正装置,设计要求:
①相角裕度≥45°;
②当系统的输入信号是单位斜坡信号时,稳态误差ess≤0.04。
③要求绘制出校正后系统和未校正系统的Bode图及其闭环系统的单位阶跃响应曲线,并进行对比。
4.系统结构图如图所示,其中,采样周期Ts=0.01s,被控对象
,
为零阶保持器。
用W变换法设计一超前校正装置D(z),使系统相位裕度γ≥50°,校验设计后系统的性能指标。
5.系统结构图如图所示,其中,采样周期Ts=0.01s,被控对象
,
为零阶保持器。
用W变换法设计一超前校正装置D(z),使系统相位裕度γ≥50°,校验设计后系统的性能指标。
6.已知系统状态空间方程:
,
。
对系统进行可控性|、可观性分析以及极点配置控制器的设计。
实验要求:
(1)判别系统的可控性,求解系统的变换矩阵
。
(2)如果系统完全可控,导出系统的第一可控标准型。
(3)判断系统的可观测性,求解系统的变换矩阵
(4)如果系统完全可观测,导出系统的第一可观测标准型。
(5)确定状态反馈矩阵K,使系统的闭环极点配置在
位置上,并绘制出配置后系统单位阶跃时间响应曲线。
7.建立如图所示双闭环计算机控制直流调速系统的simulink模型。
仿真观测转速和电流跟踪特性等性能指标,调整数字PI调节器参数,以满足系统的性能指标要求。
8.有限拍随动系统的设计:
1)某一离散控制系统的被控队形的传递函数为:
,保持器为零阶保持器,采样周期
试设计单位速度输入时的有限拍控制器。
2)某一离散控制系统的被控队形的传递函数为:
,保持器为零阶保持器,采样周期
试设计单位速度输入时的有限拍无纹波控制器。
9.用函数调用的方法,求出
,要求写出脚本式M文件和函数式M文件
10.找出101——n之间的满足
(1)它是完全平方数;
(2)在满足完全平方数的前提下,有两位数字相同。
统计满足条件的数的个数。
11通过键盘输入一个整数,将该数变成按相反顺序的数,例如12345变成54321
1.num=25;den=conv([1,0],conv([0.25,1],[0.0125,1]));
G=tf(num,den);
[Gm,Pm,Wcg,Wcp]=margin(G);
Pm(γ)
w=0.1:
0.1:
10000;
[mag,phase]=bode(G,w);magdb=20*log10(mag);
phim1=45;deta=10;
phim=phim1-Pm+deta;bita=(1-sin(phim*pi/180))/(1+sin(phim*pi/180));n=find(magdb+10*log10(1/bita)<=0.0001);
magdb+10*log10(1/bita)<=0.0001
wc=n
(1);
w1=(wc/10)*sqrt(bita);w2=(wc/10)/sqrt(bita);
numc=[1/w1,1];denc=[1/w2,1];
Gc=tf(numc,denc);
GmdB=20*log10(Gm);GcG=Gc*G;[Gmc,Pmc,wcgc,wcpc]=margin(GcG);
GmcdB=20*log10(Gmc);
disp('未校正系统的开环传递函数和频域响应参数:
h,γ,wc')
G,[GmdB,Pm,Wcp],
disp('校正装置传递函数和校正后系统开环传递函数')
Gc,GcG,
disp('校正后系统的频域响应参数:
h,γ,wc')
[GmcdB,Pmc,wcpc],
disp('校正装置的参数T和β值:
T,β')
T=1/w1;[T,bita],
bode(G,GcG);figure
(2);margin(GcG)
未校正系统的开环传递函数和频域响应参数:
h,γ,wc
Transferfunction:
25
-----------------------------
0.003125s^3+0.2625s^2+s
ans=
10.526815.85789.5715
校正装置传递函数和校正后系统开环传递函数
Transferfunction:
0.1481s+1
-------------
0.03348s+1
Transferfunction:
3.703s+25
-------------------------------------------
0.0001046s^4+0.01191s^3+0.296s^2+s
校正后系统的频域响应参数:
h,γ,wc
ans=
16.201045.023914.0770
校正装置的参数T和β值:
T,β
ans=
0.14810.2261
2.num=25;den=conv([1,0],[0.25,1]);
den=conv(den,[0.125,1]);
G=tf(num,den);
gamma_cas=50;delta=6;
gamma_l=gamma_cas+delta;
w=0.01:
0.01:
1000;
[mag,phase]=bode(G,w);
n=find(180+phase-(gamma_l)<=0.1);
wgamma_l=n
(1)/100;
[mag,phase]=bode(G,wgamma_l);
rr=-20*log10(mag);beta=10^(rr/20);
w2=wgamma_l/10;w1=beta*w2;
numc=[1/w2,1];denc=[1/w1,1];
Gc=tf(numc,denc)
GcG=Gc*G
bode(G,GcG),figure
(2),margin(GcG),beta
Transferfunction:
6.061s+1
-----------
83.14s+1
Transferfunction:
151.5s+25
-------------------------------------
2.598s^4+31.21s^3+83.51s^2+s
beta=
0.0729
3.num=100;den=conv([1,0],[1,4]);
G=tf(num,den);
[h,gamma,wg,wc]=margin(G);h=20*log10(h);
w=0.001:
0.001:
100;
[mag,phase]=bode(G,w);
disp('未校正系统的参数:
h,wc,γ');
[h,wc,gamma],
gamma1=45;delta=6;
phim=gamma1-gamma+delta;alpha=(1+sin(phim*pi/180))/(1-sin(phim*pi/180));
magdb=20*log10(mag);
n=find(magdb+10*log10(alpha)<=0.0001);
wc=n
(1);wcc=wc/1000;
w3=wcc/sqrt(alpha);w4=sqrt(alpha)*wcc;
numc1=[1/w3,1];denc1=[1/w4,1];
Gc1=tf(numc1,denc1);
w1=wcc/10;w2=w1/alpha;
numc2=[1/w1,1];denc2=[1/w2,1];
Gc2=tf(numc2,denc2);
Gc12=Gc1*Gc2;
GcG=Gc12*G;
[Gmc,Pmc,wcgc,wcpc]=margin(GcG);
GmcdB=20*log10(Gmc);
disp('超前校正部分的传递函数'),Gc1,
disp('滞后校正部分的传递函数'),Gc2,
disp('串联超前-滞后校正网络的传递函数'),Gc12,
disp('校正后系统的开环传递函数'),GcG,
disp('校正后系统的性能参数:
h,wc,γ及α值'),[GmcdB,wcpc,Pmc,alpha],
bode(G,GcG)
未校正系统的参数:
h,wc,γ
ans=
Inf9.608122.6028
超前校正部分的传递函数
Transferfunction:
0.1326s+1
-------------
0.04714s+1
滞后校正部分的传递函数
Transferfunction:
0.7907s+1
------------
2.225s+1
串联超前-滞后校正网络的传递函数
Transferfunction:
0.1049s^2+0.9233s+1
-------------------------
0.1049s^2+2.272s+1
校正后系统的开环传递函数
Transferfunction:
10.49s^2+92.33s+100
----------------------------------------
0.1049s^4+2.691s^3+10.09s^2+4s
校正后系统的性能参数:
h,wc,γ及α值
ans=
Inf6.124348.66362.8137
4.num=1;den=[110];gsys=tf(num,den);dsysg=c2d(gsys,2,'zoh')
dsysg=0.01*dsysg;sysw=d2c(dsysg,'tustin');
margin(sysw);[Gm,Pm,Wcg,Wcp]=margin(sysw)
G=sysw;gamma_cas=40;delta=6;
gamma_l=gamma_cas+delta;
w=0.01:
0.01:
1000;
[mag,phase]=bode(G,w);
n=find(180+phase-(gamma_l)<=0.1);
wgamma_l=n
(1)/100;
[mag,phase]=bode(G,wgamma_l);
rr=-20*log10(mag);beta=10^(rr/20);
w2=wgamma_l/10;w1=beta*w2;
numc=[1/w2,1];denc=[1/w1,1];
disp('控制器W传递函数');Gc=tf(numc,denc)
disp('校正后系统的开环W传递函数');GcG=Gc*G
margin(GcG)
运行结果:
Gm=2.0033e+004
Pm=Inf
Wcg=14.1539
Wcp=NaN
控制器W传递函数
Transferfunction:
10.42s+1
-------------
0.07828s+1
校正后系统的开环W传递函数
Transferfunction:
-4.34e-009s^3-0.00052s^2+0.1041s+0.01
----------------------------------------------
0.07828s^3+1.078s^2+s+1.11e-013
5.num=1;den=[110];gsys=tf(num,den);dsysg=c2d(gsys,2,'zoh')
dsysg=0.01*dsysg;sysw=d2c(dsysg,'tustin');
margin(sysw);[Gm,Pm,Wcg,Wcp]=margin(sysw)
G=sysw;gamma_cas=40;delta=6;
gamma_l=gamma_cas+delta;
w=0.01:
0.01:
1000;
[mag,phase]=bode(G,w);
n=find(180+phase-(gamma_l)<=0.1);
wgamma_l=n
(1)/100;
[mag,phase]=bode(G,wgamma_l);
rr=-20*log10(mag);beta=10^(rr/20);
w2=wgamma_l/10;w1=beta*w2;
numc=[1/w2,1];denc=[1/w1,1];
disp('控制器W传递函数');Gc=tf(numc,denc)
disp('校正后系统的开环W传递函数');GcG=Gc*G
margin(GcG)
运行结果:
Gm=2.0033e+004
Pm=Inf
Wcg=14.1539
Wcp=NaN
控制器W传递函数
Transferfunction:
10.42s+1
-------------
0.07828s+1
校正后系统的开环W传递函数
Transferfunction:
-4.34e-009s^3-0.00052s^2+0.1041s+0.01
----------------------------------------------
0.07828s^3+1.078s^2+s+1.11e-013
6.A=[100;02-2;-1-10]
B=[2;0;1]
C=[120]
D=[0]
n=length(A);
Q=ctrb(A,B);
m=rank(Q);
ifm==n
Ac1=inv(Q)*A*Q;
Bc1=inv(Q)*B;Cc1=C*Q;
disp('Systemiscontrollable.');
disp('SystemFirstControllableCanonnicalFormis:
');Ac1,Bc1,Cc1
disp('TheTransformationMartrixis:
');Q
else
disp('systemstateVariablecannotbetotallycontrolled');
disp('TherankofSystemControllableMartixis:
');m
end
n=length(A);
Q=obsv(A,C);
m=rank(Q);
ifm==n
P=inv(Q);Ao1=inv(P)*A*P;Bo1=inv(P)*B;Co1=C*P;
disp('SystemisObservable.');
disp('SystemFirstObservableCanonnicalFormis:
');Ao1,Bo1,Co1
disp('TheTransformationMartrixis:
');P
else
disp('systemstateVariablecannotbetotallyObserved');
disp('TherankofSystemObservableMartixis:
');m
end
disp('原系统的极点为');p=eig(A)'
P=[-2,-3.4+sqrt(5.92),-3.4-sqrt(5.92)];
K=place(A,B,P)
disp('配置后系统的极点为');p=eig(A-B*K)'
disp('极点配置后的闭环系统为')
sysnew=ss(A-B*K,B,C,D)
step(sysnew/dcgain(sysnew))
Systemiscontrollable.
TheTransformationMartrixis:
Q=
222
0-20
1-20
SystemFirstControllableCanonnicalFormis:
Ac1=
00-2
100
013
Bc1=
1
0
0
Cc1=
2-22
SystemisObservable.
TheTransformationMartrixis:
P=
-2.0000-2.00001.0000
1.50001.0000-0.5000
1.00000.2500-0.2500
SystemFirstObservableCanonnicalFormis:
Ao1=
0.00001.0000-0.0000
-0.0000-0.00001.0000
-2.0000-0.00003.0000
Bo1=
2.0000
-2.0000
2.0000
Co1=
1.000000
原系统的极点为
p=
-0.73212.73211.0000
K=
86.6000220.6800-161.4000
配置后系统的极点为
p=
-5.8331-2.0000-0.9669
极点配置后的闭环系统为
a=
x1x2x3
x1-172.2-441.4322.8
x202-2
x3-87.6-221.7161.4
b=
u1
x12
x20
x31
c=
x1x2x3
y1120
d=
u1
y10
Continuous-timemodel.
7.
8.1)symssTKztk
Gs=(1/s)*K/s/(s+3);
ft=ilaplace(Gs);ftt=subs(ft,t,k*T);
GoGpZ=(1-z^-1)*ztrans(ftt);GoGpZ=simplify(GoGpZ);
Ez=(1-z^-1)^2;
Dcz=(1-Ez)/(Ez*GoGpZ);Dcz=simplify(Dcz);
Dcz=subs(Dcz,T,0.5);Dcz=subs(Dcz,K,5);
[dnum,dden]=numden(Dcz);
dnum=sym2poly(dnum);dden=sym2poly(dden);
disp('单位速度输入时的有限拍控制器Dc(z)=');
[zpk]=tf2zp(dnum,dden);Dcz=zpk(z,p,k)
disp('系统脉冲传递函数D(z)=C(z)/R(z)');
Dz=1-Ez;Dz=simplify(Dz)
单位速度输入时的有限拍控制器?
Dc(z)=
Zero/pole/gain:
4.9784(s-0.5)(s-0.2231)
-------------------------
(s-1)(s+0.6115)
系统脉冲传递函数D(z)=C(z)/R(z)
Dz=
(2*z-1)/z^2
2)symssTKzt
Gs=(1/s)*K/s/(s+3);
ft=ilaplace(Gs);ftt=subs(ft,t,t*T);
GoGpZ=(1-z^-1)*ztrans(ftt);GoGpZ=simplify(GoGpZ);
GoGpZ=subs(GoGpZ,T,0.5);GoGpZ=subs(GoGpZ,K,5);
[dnum,dden]=numden(GoGpZ);
dnum=sym2poly(dnum);dden=sym2poly(dden);
disp('广义对象的z传递函数GoGp(z)=');
[zpk]=tf2zp(dnum,dden);GoGpZ=zpk(z,p,k,0.1)
广义对象的z传递函数GoGp(z)=
Zero/pole/gain:
0.40174(z+0.6115)
------------------
(z-1)(z-0.2231)
Samplingtime:
0.1
9.脚本式s=0;
n=input('n=');
fori=1:
n
s=s+fact(i);
end
函数式functionp=fact(intn)
p=1;
fori=1:
n
p=p*i;
end
end
10.count=0;
n=input('n=');
fori=101:
n
m=floor(sqrt(i));
ifm*m==i;
ifrem(i,10)==rem(floor(i/10),10)|rem(i,10)==floor(i/100)|rem(floor(i/10),10)==floor(i/100);
count=count+1;
end
end
end
count
11.s=0;
n=input('n=');
whilen~=0
s=s*10+rem(n,10);
n=floor(n/10);
end
fprintf('按逆序后的数为%d',s);