控制系统仿真实验二报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二面向结构图的仿真
四思考题
(1)在未考虑调节阀饱和特性时,讨论一下两个水箱液位的变化情况,工业上是否允许讨论阀位的变化情况,工业上是否能实现
答:在一开始阀位大开,H1,H2液位上升迅速,很快就达到预期值。
但显然不能在工业上实现。
阀位有其本身的最大最小的限制,在仿真中出现的超过100%的情况在现实生活中不可能出现,因此这一部分对应的控制效果也是无效的。
(2)与实验三相比,考虑调节阀饱和特性前后,响应有何不同
答:H1 H2的液位在考虑饱和特性之后,响应曲线比不考虑的时候略微平缓一些。
第一部分线性系统仿真
一实验目的
1.掌握理解控制系统闭环仿真技术。
2.掌握理解面向结构图的离散相似法的原理和程序结构。
3.掌握MATLAB 中C2D 函数的用法,掌握双线性变换的原理。
二实验内容
根据上面的各式,编写仿真程序,实现无扰动时给定值阶跃仿真实验
1. 取K P= ,T i = 85 s T = 10s,ΔH2 S =H2set_ percent = 80, ΔQ d = 0,
tend = 700,进行仿真实验,绘制响应曲线。
clc
clear all
A=2;
ku=;
H10=;
H20=;
alpha12 = sqrt(H10);
alpha2 = sqrt(H20);
R12=2*sqrt(H10)/alpha12;
R2=2*sqrt(H20)/alpha2;
H1SpanLo=0;
H2SpanLo=0;
H1SpanHi=;
H2SpanHi=;
Kp=;
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;
for t=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+*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',[5 10 scrsz(3)-10 scrsz(4)-90]);
%gca=figure('Position',[5 10 scrsz(3)/2 scrsz(4)/])
set(gca,'Color','w');
plot(0:T:tend,Hlevel(:,1),'r','LineWidth',2)
hold on
plot(0:T:tend,Hlevel(:,2),'b','LineWidth',2)
hold on
plot(0:T:tend,yv,'k','LineWidth',2)
hold on
plot(0:T:tend,y2sp,'g','LineWidth',2)
hold on
plot(0:T:tend,H2Steady,'y','LineWidth',2)
line([tend/2 tend/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,' 第一个水箱的液位H1','FontSize',16) line([tend/2 tend/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,' 第二个水箱的液位H2','FontSize',16) line([tend/2 tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/
(ymax-ymin)/2+ymin-(ymax-ymin)/],'Color','g','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/,' 第二个水箱的液位给定值','FontSize',16) line([tend/2 tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/
(ymax-ymin)/2+ymin-(ymax-ymin)/],'Color','k','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/,'阀位变化情况','FontSize',16)
axis([xmin xmax ymin ymax]);
text(tend/5,ymax+,' 实验二不考虑阀位饱和特性时的控制效果','FontSize',22)
grid
2. 用MATLAB 求出从输入到输出的传递函数,并将其用c2d 函数,利用双线性变换法转换为离散模型,再用dstep()函数求离散模型的阶跃响应,阶跃幅值为3。
clc
clear all
A=2;
ku=;
H10=;
H20=;
alpha12 = sqrt(H10);
alpha2 = sqrt(H20);
R12=2*sqrt(H10)/alpha12;
R2=2*sqrt(H20)/alpha2;
H1SpanLo=0;
H2SpanLo=0;
H1SpanHi=;
H2SpanHi=;
Kp=;
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);
numc=[Kc*bc,Kc];% 用 MATLAB 求出从输入到输出的传递函数, denc=[1]; 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’);% 用c2d 函数,利用双线性变换法转 换为离散模型
dstep(3*{1},{1});%用dstep()函数求离散模型的阶跃响应,阶跃幅值为3 结果
0510152025
0.06
0.080.10.120.140.160.18
0.20.220.24Step Response
Time (seconds)
A m p l i t u d e
三实验报告
实验完成后,要写出实验报告,内容包括:
1.实验步骤及说明;
2.实验所用的仿真程序清单,以及程序结构的简单说明;
第二部分含有非线性环节的控制系统仿真
一实验目的
4.掌握理解控制系统闭环仿真技术。
5.掌握理解面向结构图的离散相似法的原理和程序结构。
6.掌握理含有非线性环节的控制系统的仿真方法。
二实验内容
根据上面的各式,编写仿真程序,实现无扰动时给定值阶跃仿真实验
1. 取K P= ,T i = 85 s T = 10s,ΔH2 S =H2set_ percent = 80, ΔQ d = 0,tend = 700,进行仿真实验,绘制响应曲线。
clc
clear all
A=2;
ku=;
H10=;
H20=;
alpha12 = sqrt(H10);
alpha2 = sqrt(H20);
R12=2*sqrt(H10)/alpha12;
R2=2*sqrt(H20)/alpha2;
H1SpanLo=0;
H2SpanLo=0;
H1SpanHi=;
H2SpanHi=;
Kp=;;
Ti=*100;
%Kp=;
%Ti=999999;
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=;
H20_percent=(H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100;
H2set_percent=80;
tend = nCounter*T;
for t=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;
if uv(k)>c
yv(k)=c;
end
if uv(k)<-c
yv(k)=0;
end
if uv(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+*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',[5 10 scrsz(3)-10 scrsz(4)-90])
%gca=figure('Position',[5 10 scrsz(3)/2 scrsz(4)/])
set(gca,'Color','w');
plot(0:T:tend,Hlevel(:,1),'r','LineWidth',2)
hold on
plot(0:T:tend,Hlevel(:,2),'b','LineWidth',2)
hold on
plot(0:T:tend,yv,'k','LineWidth',2)
hold on
plot(0:T:tend,y2sp,'g','LineWidth',2)
hold on
plot(0:T:tend,H2Steady,'y','LineWidth',2)
line([tend/2 tend/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,' 第一个水箱的液位H1','FontSize',16) line([tend/2 tend/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,' 第二个水箱的液位H2','FontSize',16) line([tend/2 tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/
(ymax-ymin)/2+ymin-(ymax-ymin)/],'Color','g','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/,' 第二个水箱的液位给定值','FontSize',16) line([tend/2 tend/2+27],[(ymax-ymin)/2+ymin-(ymax-ymin)/
(ymax-ymin)/2+ymin-(ymax-ymin)/],'Color','k','LineWidth',6)
text(tend/2+27,(ymax-ymin)/2+ymin-(ymax-ymin)/,'阀位变化情况',16)
axis([xmin xmax ymin ymax]);
text(tend/5,ymax+,'实验三考虑阀位饱和特性时的控制效果','FontSize',22)
grid
四实验报告
实验完成后,要写出实验报告,内容包括:
1.实验步骤及说明;
3.实验所用的仿真程序清单,以及程序结构的简单说明;。