控制系统仿真实验报告二.docx
- 文档编号:28129142
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:13
- 大小:134.64KB
控制系统仿真实验报告二.docx
《控制系统仿真实验报告二.docx》由会员分享,可在线阅读,更多相关《控制系统仿真实验报告二.docx(13页珍藏版)》请在冰豆网上搜索。
控制系统仿真实验报告二
控制系统仿真技术实验报告二
专业班级:
######姓名:
#####学号:
########
实验二面向结构图的仿真
1、线性模型仿真
1、取Kp=1.78,Ti=85s,T=10s,δH2s=H2set_percent=80,δQd=0,tend=700.进行仿真实验,绘制响应曲线。
clc
clearall
A=2;
ku=0.1/0.5;
H10=1.5;
H20=1.4;
alpha12=0.25/sqrt(H10);
alpha2=0.25/sqrt(H20);
R12=2*sqrt(H10)/alpha12;
R2=2*sqrt(H20)/alpha2;
H1SpanLo=0;
H2SpanLo=0;
H1SpanHi=2.52;
H2SpanHi=2.52;
Kp=1.78;
Ti=85;
R12*A
R12
ad=1/(A*R12);
a1=1/(A*R12);
a2=1/(A*R2);
Kc=Kp/Ti;
bc=Ti;
Kd=1/A;
K1=ku/A;
K2=1/(A*R12);
uc
(1)=0;ud
(1)=0;u1
(1)=0;u2
(1)=0;
xc
(1)=0;xd
(1)=0;x1
(1)=0;x2
(1)=0;
yd
(1)=0;yc
(1)=0;y1
(1)=0;y2
(1)=0;
nCounter=70;
T=10;
k=1;
deltaQd=0;
H20_percent=(H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100;
H2=80;
tend=nCounter*T;
fort=T:
T:
tend
k=k+1;
uc(k)=(H2-(y2(k-1)+H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100)/100;
ud(k)=deltaQd;
u1(k)=yc(k-1);
u2(k)=y1(k-1);
xc(k)=xc(k-1)+Kc*T*uc(k-1);
yc(k)=xc(k)+bc*Kc*uc(k);
xd(k)=exp(-ad*T)*xd(k-1)+Kd/ad*(1-exp(-ad*T))*ud(k);
yd(k)=xd(k);
x1(k)=exp(-a1*T)*x1(k-1)+K1/a1*(1-exp(-a1*T))*u1(k);
y1(k)=x1(k);
x2(k)=exp(-a2*T)*x2(k-1)+K2/a2*(1-exp(-a2*T))*u2(k);
y2(k)=x2(k);
End
Hlevel(:
1)=(y1+H10-H1SpanLo)/(H1SpanHi-H1SpanLo)*100;
Hlevel(:
2)=(y2+H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100;
yc=(yc+0.5)*100;
y2sp=H2*ones(size(y1'));
yv=yc;
textPositionH1=max(Hlevel(:
1));
textPositionH2=max(Hlevel(:
2));
H2Steady=Hlevel(size(Hlevel(:
1),1),1)*ones(size(y1'));
xmax=max(0:
T:
tend);
xmin=0;
ymax=110;
ymin=50;
scrsz=get(0,'ScreenSize');
gca=figure('Position',[510scrsz(3)-10scrsz(4)-90]);
set(gca,'Color','w');
plot(0:
T:
tend,Hlevel(:
1),'r','LineWidth',2)
holdon
plot(0:
T:
tend,Hlevel(:
2),'b','LineWidth',2)
holdon
plot(0:
T:
tend,yv,'k','LineWidth',2)
holdon
plot(0:
T:
tend,y2sp,'g','LineWidth',2)
holdon
plot(0:
T:
tend,H2Steady,'y','LineWidth',2)
line([tend/2tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/10
(ymax-ymin)/2+ymin-(ymax-ymin)/10],'Color','r','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/10,'第1个水箱的液
位H1','FontSize',16)
line([tend/2tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/6
(ymax-ymin)/2+ymin-(ymax-ymin)/6],'Color','b','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/6,'第2个水箱的
液位H2','FontSize',16)
line([tend/2tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/4.2
(ymax-ymin)/2+ymin-(ymax-ymin)/4.2],'Color','g','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/4.2,'第2个水箱
的液位给定值','FontSize',16)
line([tend/2tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/3.2
(ymax-ymin)/2+ymin-(ymax-ymin)/3.2],'Color','k','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/3.2,'阀位变化情况','FontSize',16)
axis([xminxmaxyminymax]);
text(tend/5,ymax+1.5,'实验二不考虑阀位饱和特性时的控制效果
','FontSize',22)
Grid
%holdoff
2、用MATLAB求出从输入到输出的传递函数,并将其用c2d函数,利用双线性变换法转换为离散模型。
再用dstep()函数求离散模型的阶跃响应,阶跃幅值为3。
clc
clearall
%%%%%%%%%%%%%%%%%%%%%定义参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A=2;%水箱横截面积
ku=0.1/0.5;%阀门流量系数
H10=1.5;%水箱1的平衡高度
H20=1.4;%水箱2的平衡高度
alpha12=0.25/sqrt(H10);%水箱1流向水箱2流量系数
alpha2=0.25/sqrt(H20);%水箱2流出水流量系数
R12=2*sqrt(H10)/alpha12;%线性化数学模型中的参数
R2=2*sqrt(H20)/alpha2;%线性化数学模型中的参数
H1SpanLo=0;%水箱1量程下限
H2SpanLo=0;%水箱2量程下限
H1SpanHi=2.52;%水箱1量程上限
H2SpanHi=2.52;%水箱2量程上限
Kp=1.78;%PI控制器比例系数
Ti=85;%PI控制器积分时间常数
R12*A
R12
Kc=Kp/Ti;%式(4)中参数
bc=Ti;%式(4)中参数
Kd=1/A;%式(5)中参数
ad=1/(A*R12);%式(5)中参数
a1=1/(A*R12);%式(6)中参数
K1=ku/A;%式(6)中参数
a2=1/(A*R2);%式(7)中参数
K2=1/(A*R12);%式(7)中参数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
numc=[Kc*bc,Kc];
denc=[1,0];
numd=[Kd]
dend=[1,ad]
num1=[K1]
den1=[1,a1]
num2=[K2]
den2=[1,a2]
Gc=tf(numc,denc);
G1=tf(num1,den1);
G2=tf(num2,den2);
Sysq=Gc*G1*G2;
SysG=feedback(Sysq,1);
GG=c2d(SysG,10,'tustin');
dstep(3*GG.num{1},GG.den{1});
2、含有非线性环节的控制系统仿真
取Kp=1.78,Ti=85s,T=10s,δH2s=H2set_percent=80,δQd=0,tend=700.进行仿真实验,绘制响应曲线。
clc
clearall
A=2;
ku=0.1/0.5;
H10=1.5;
H20=1.4;
alpha12=0.25/sqrt(H10);
alpha2=0.25/sqrt(H20);
R12=2*sqrt(H10)/alpha12;
R2=2*sqrt(H20)/alpha2;
H1SpanLo=0;
H2SpanLo=0;
H1SpanHi=2.52;
H2SpanHi=2.52;
Kp=3.91/2.2;;
Ti=0.85*100;
ad=1/(A*R12);
a1=1/(A*R12);
a2=1/(A*R2);
Kc=Kp/Ti;
bc=Ti;
Kd=1/A;
K1=ku/A;
K2=1/(A*R12);
uc
(1)=0;uv
(1)=0;ud
(1)=0;u1
(1)=0;u2
(1)=0;
xc
(1)=0;xv
(1)=0;xd
(1)=0;x1
(1)=0;x2
(1)=0;
yc
(1)=0;yv
(1)=0;yd
(1)=0;y1
(1)=0;y2
(1)=0;
nCounter=70;
T=10;
k=1;
deltaQd=0;
c=0.5;
H20_percent=(H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100;
H2set_percent=82;
tend=nCounter*T;
fort=T:
T:
tend
k=k+1;
uc(k)=(H2set_percent-(y2(k-1)+H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100)/100;
uv(k)=yc(k-1);
ud(k)=deltaQd;
ifuv(k)>c
yv(k)=c;
end
ifuv(k)<-c
yv(k)=0;
end
ifuv(k)<=c&uv(k)>=-c
yv(k)=uv(k);
end
u1(k)=yv(k);
u2(k)=y1(k-1);
xc(k)=xc(k-1)+Kc*T*uc(k-1);
yc(k)=xc(k)+bc*Kc*uc(k);
xd(k)=exp(-ad*T)*xd(k-1)+Kd/ad*(1-exp(-ad*T))*ud(k);
yd(k)=xd(k);
x1(k)=exp(-a1*T)*x1(k-1)+K1/a1*(1-exp(-a1*T))*u1(k);
y1(k)=x1(k);
x2(k)=exp(-a2*T)*x2(k-1)+K2/a2*(1-exp(-a2*T))*u2(k);
y2(k)=x2(k);
End
Hlevel(:
1)=(y1+H10-H1SpanLo)/(H1SpanHi-H1SpanLo)*100;
Hlevel(:
2)=(y2+H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100;
yv=(yv+0.5)*100;
y2sp=H2set_percent*ones(size(y1'));
textPositionH1=max(Hlevel(:
1));
textPositionH2=max(Hlevel(:
2));
H2Steady=Hlevel(size(Hlevel(:
1),1),1)*ones(size(y1'));
xmax=max(0:
T:
tend);
xmin=0;
ymax=110;
ymin=50;
scrsz=get(0,'ScreenSize');
gca=figure('Position',[510scrsz(3)-10scrsz(4)-90])
set(gca,'Color','w');
plot(0:
T:
tend,Hlevel(:
1),'r','LineWidth',2)
holdon
plot(0:
T:
tend,Hlevel(:
2),'b','LineWidth',2)
holdon
plot(0:
T:
tend,yv,'k','LineWidth',2)
holdon
plot(0:
T:
tend,y2sp,'g','LineWidth',2)
holdon
plot(0:
T:
tend,H2Steady,'y','LineWidth',2)
line([tend/2tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/10
(ymax-ymin)/2+ymin-(ymax-ymin)/10],'Color','r','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/10,'第1个水箱的液
位H1','FontSize',16)
line([tend/2tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/6
(ymax-ymin)/2+ymin-(ymax-ymin)/6],'Color','b','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/6,'第2个水箱的液
位H2','FontSize',16)
line([tend/2tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/4.2
(ymax-ymin)/2+ymin-(ymax-ymin)/4.2],'Color','g','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/4.2,'第2个水箱的
液位给定值','FontSize',16)
line([tend/2tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/3.2
(ymax-ymin)/2+ymin-(ymax-ymin)/3.2],'Color','k','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/3.2,'阀位变化情况
','FontSize',16)
axis([xminxmaxyminymax]);
text(tend/5,ymax+1.5,'实验三考虑阀位饱和特性时的控制效果',
'FontSize',22)
Grid
%holdoff
三、思考与总结
1、在未考虑调节阀饱和特性时,讨论一下两个水箱液位的变化情况,工业上是否允许?
讨论阀位的变化情况,工业上是否能实现?
答:
在未考虑调节阀饱和特性时,两个水箱的液位在阀位一开始大开时,H1,H2液位上升迅速,很快就达到预期值。
但是其控制不能在工业上实现,没有实际可行度。
除此之外,阀位有其本身的最大最小的限制,在仿真中出现的超过100%的情况在现实生活中不可能出现,因此这一部分对应的控制效果在工业上不能实现。
2、与实验三相比,考虑调节阀饱和特性前后,响应有何不同?
答:
与实验三相比,调节饱和特性阀前后调进行对比,H1 、H2的液位在考虑饱和特性之后,响应曲线比不考虑的时候略微平缓一些。
3、实验心得
答:
通过本实验,我基本掌握理解了控制系统闭环的仿真技术以及MATLAB中c2d函数的用法;对面向结构图的离散相似法的原理和程序结构以及双线性变换的原理有了进一步的掌握和了解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制系统 仿真 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)