实验二、面向结构图的仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二、面向结构图的仿真
一、实验过程
1.线性系统仿真
(1)定义参数并为参数赋值,求解Kc、bc、Kd 、ad 、a1 、K1、a2 、K2等参数;
(2)为uc(1)、ud(1)、u1(1)、u2(1)、xc(1)、xd(1)、x1(1)、x2(1)、yd(1)、yc(1)、y1(1)、y2(1)参数赋值为0;
(3)迭代求解uc(k)、ud(k)、xc(k)、xd(k)等输入输出变量;
(4)将液位高度转换为转换为百分比高度;
(5)绘制响应曲线;
(6)用MATLAB 求出从输入到输出的传递函数,并将其用c2d 函数,利用双线性变换法转换为离散模型,再用dstep()函数求离散模型的阶跃响应,阶跃幅值为3。

2.含有非线性环节的控制系统仿真
非线性环节控制系统与线性控制系统实验方法相同,但离散化模型存在不同,同时需要增加饱和环节判断。

二、实验程序
1、线性系统仿真
clc
clear all
%%%%%%%%%%%%%%%%%%%%%定义参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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控制器积分时间常数
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)中参数%%%%%%%%%%%%%%%%%%%%%%%%%%%赋初值%%%%%%%%%%%%%%%%%%%%%%%%%
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;
k=2;
Qd=0; %干扰流量
H20_percent=(H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100;
H2=80;
tend = 700; %总长
T=10;
%%%%%%%%%%%%%%%%%%%迭代求解输入输出变量%%%%%%%%%%%%%%%%%%%%%
for t=T:T:tend
uc(k)= (H2 - (y2(k-1)+H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100)/100; ud(k)=Qd;
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);
k=k+1; %递增
end
%%%%%%%%%%%%%%%%%%%转换为百分比高度%%%%%%%%%%%%%%%%%%%%%%%
Hlevel(:,1)=(y1+H10-H1SpanLo)/(H1SpanHi-H1SpanLo)*100;
Hlevel(:,2)=(y2+H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100;
yc=(yc+0.5)*100;
H2setpoint=H2*ones(size(y1')); %%%%%%%%%%%%%%%%%%%%%%%%%%%%绘图%%%%%%%%%%%%%%%%%%%%%%%%%% textPositionH1=max(Hlevel(:,1));
textPositionH2=max(Hlevel(:,2));
H2Steady=Hlevel(size(Hlevel(:,1),1),1)*ones(size(y1'));
scrsz = get(0,'ScreenSize');
gca=figure('Position',[5 10 scrsz(3)-10 scrsz(4)-90]);
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,yc,'k','LineWidth',2)
hold on
plot(0:T:tend,H2setpoint,'g','LineWidth',2)
hold on
plot(0:T:tend,H2Steady,'y','LineWidth',2)
line([500 525],[105 105],'Color','r','LineWidth',6)
text(525,105,' 第1个水箱的液位H1','FontSize',16)
line([500 525],[101 101],'Color','b','LineWidth',6)
text(525,101,' 第2个水箱的液位H2','FontSize',16)
line([500 525],[97 97],'Color','g','LineWidth',6)
text(525,97,' 第2个水箱的液位给定值','FontSize',16)
line([500 525],[93 93],'Color','k','LineWidth',6)
text(525,93,' 阀位变化情况','FontSize',16)
axis([0 700 50 110]);
text(145,112,' 实验二不考虑阀位饱和特性时的控制效果','FontSize',22) grid
2、线性系统仿真(采用c2d函数)
clc
clear all
%%%%%%%%%%%%%%%%%%%%%定义参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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流出水流量系数
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控制器积分时间常数
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});
3、含有非线性环节的控制系统仿真
clc
clear all
%%%%%%%%%%%%%%%%%%%%%定义参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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; %线性化数学模型中的参数
H1SpanLo=0; %水箱1量程下限
H2SpanLo=0; %水箱2量程下限
H1SpanHi=2.52; %水箱1量程上限
H2SpanHi=2.52; %水箱2量程上限
Kp=1.78; %PI控制器比例系数
Ti=85; %PI控制器积分时间常数
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)中参数%%%%%%%%%%%%%%%%%%%%%%%%%%%赋初值%%%%%%%%%%%%%%%%%%%%%%%%%A=2; 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=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;
yc=(yc+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'));
scrsz = get(0,'ScreenSize');
gca=figure('Position',[5 10 scrsz(3)-10 scrsz(4)-90])
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([500 525],[105 105],'Color','r','LineWidth',6)
text(525,105,' 第1个水箱的液位H1','FontSize',16)
line([500 525],[101 101],'Color','b','LineWidth',6)
text(525,101,' 第2个水箱的液位H2','FontSize',16)
line([500 525],[97 97],'Color','g','LineWidth',6)
text(525,97,' 第2个水箱的液位给定值','FontSize',16)
line([500 525],[93 93],'Color','k','LineWidth',6)
text(525,93,' 阀位变化情况','FontSize',16)
axis([0 700 50 110]);
text(145,112,' 实验三考虑阀位饱和特性时的控制效果','FontSize',22) grid
三、实验分析
离散模型的阶跃响应
四、实验思考
1.在未考虑调节阀饱和特性时,讨论一下两个水箱液位的变化情况,工业上是否允许?讨论阀位的变化情况,工业上是否能实现?
2.实验三与实验二相比,考虑调节阀饱和特性前后,响应有何不同?
五、实验总结。

相关文档
最新文档