双容水箱液位模糊控制教学内容.docx
- 文档编号:4568309
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:14
- 大小:94.41KB
双容水箱液位模糊控制教学内容.docx
《双容水箱液位模糊控制教学内容.docx》由会员分享,可在线阅读,更多相关《双容水箱液位模糊控制教学内容.docx(14页珍藏版)》请在冰豆网上搜索。
双容水箱液位模糊控制教学内容
双容水箱液位模糊控制
一、实验目的
熟悉双容液位控制系统的组成原理。
通过实验进一步掌握模糊控制原理及模糊控制规则的生成。
了解量化因子和比例因子对控制效果的影响。
掌握解模糊方法及实现。
二、实验设备
实验对双象为TKGK-1双容液位系统
TKGK-1型实验装置:
GK-06、GK-07-2
万用表一只
计算机系统
三、实验原理
图1双容水箱液位模糊控制系统方框图
图1为双容水箱液位控制系统。
控制的目的是使下水箱的液位等于给定值,并能克服来自系统内部和外部扰动的影响。
双容水箱液位系统如图2,该被控对象具有非线性和时滞性,建立精确的数学模型比较困难;模糊控制不仅可以避开复杂的数学模型,通常还能得到比较好性能指标。
模糊控制器的结构图如图3。
模糊控制器的输入为误差和误差变化率:
误差e=r-y,误差变化率ec=de/dt,其中r和y分别为液位的给定值和测量值。
把误差和误差变化率的精确值进行模糊化变成模糊量E和EC,从而得到误差E和误差变化率EC的模糊语言集合,然后由E和EC模糊语言的的子集和模糊控制规则R(模糊关系矩阵)根据合成推理规则进行模糊决策,这样就可以得到模糊控制向量U,最后再把模糊量解模糊转换为精确量u,再经D/A转换为模拟量去控制执行机构动作。
图3模糊控制器组成原理图
模糊量化:
根据精确量实际变化范围[a,b],合理选择模糊变量的论域为[-n,n],通过量化因子k=
,将其转换成若干等级的离散论域,如七个等级为{负大,负中,负小,零,正小,正中,正大},简写为{NB,NM,NS,O,PS,PM,PB}。
确定模糊子集的隶属函数曲线。
一般常采用三角形、梯形和正态分布等几种曲线。
然后由隶属函数曲线得出模糊变量E、EC、U的赋值表。
根据经验,E模糊子集的隶数度函数取正态分布曲线,则赋值表见表一:
表一:
变量E隶属函数赋值表
E
-6
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
NB
NM
NS
O
PS
PM
PB
1.0
0.3
0
0
0
0
0
0.7
0.6
0.1
0
0
0
0
0.4
1.0
0.2
0
0
0
0
0.2
0.6
0.5
0
0
0
0
0.1
0.3
1.0
0.1
0
0
0
0
0.1
0.5
0.4
0.1
0
0
0
0
0.2
1.0
0.2
0
0
0
0
0.1
0.4
0.5
0.1
0
0
0
0
0.1
1.0
0.3
0.1
0
0
0
0
0.5
0.6
0.2
0
0
0
0
0.2
1.0
0.4
0
0
0
0
0.1
0.6
0.7
0
0
0
0
0
0.3
1.0
模糊控制规则:
模糊控制规则是操作经验和专家知识的总结,是进行模糊推理的依据。
在设计模糊控制规则时,必须考虑控制规则的完备性、交叉性和一致性。
既保证对于任意给定的输入,均有相应的控制规则起作用;控制器的输出值总是由数条控制规则来决定;控制规则中不存在相互矛盾的规则。
在总结专家经验和过程知识的基础上,可以得到如表二的控制规则表:
模糊推理:
模糊推理是模糊控制器的核心,模糊控制系统目前常采用的有:
CRI推理的查表法、CRI推理的解析法、Mamdani直接推理法、后件函数法等。
本实验可采用Mamdani直接推理法。
Mamdani推理法是先求出模糊关系R,再根据输入求出控制量,把控制量清晰化,可得控制查询表.
本试验设计了容量为7×7条控制规则表,这个规则表可以用27条模糊条件语句来描述:
如:
ifEl=NBandEf=NBthenU=PS,对应的模糊关系:
R1=A1×B1×C5
根据Ri(i=1,2,…27)可以得到综合模糊矩阵R。
如下计算模糊关系矩阵R:
R=R1∪R2∪…R27
E和EC对应的模糊变量为和,此时可由下式求出:
U*=(A*×B*)
R
式中:
——表示求合成运算.
解模糊:
可采用常用的重心法进行解模糊运算。
表二控制规则表
NB
NM
NS
O
PS
PM
PB
NB
NM
NS
O
PS
PM
PB
PS
NS
NM
NB
NB
NB
NB
PS
PS
NS
NM
NM
NB
NB
PS
PS
O
NS
NS
NM
NM
PS
PS
O
O
O
NS
NS
PM
PM
PS
PS
O
NS
NS
PB
PM
PM
PM
PS
PS
NS
PB
PB
PM
PM
PM
PS
NS
四、实验步骤
1.按图1连成控制系统图。
其中被控对象为下水箱,被控制量为液位高度,控制器由计算机系统组成,接口的驱动已在“计算机控制系统”试验中完成,这里不再赘述。
2.启动工艺流程并开启相关仪器,调整传感器输出的零点与增益。
3.运行模糊控制程序,并输入参数,记录试验数据和控制曲线。
4.修改模糊控制规则,重复步骤3。
5.待系统稳定后,加手动扰动,观察系统的动态变化,并记录结果。
五、实验报告要求
1.给出模糊控制器的设计过程和程序清单
2.建立EC的隶数度函数赋值表
3.建立控制查询表
4.记录试验数据和曲线
5.分析试验结果
六、思考题
1.如果输入变量离散论域分为五个等级,对计算和控制效果有什么影响?
2.模糊控制达到稳态后,静差是否为零?
为什么?
附:
双容水箱液位模糊控制的C语言程序
#include"graphics.h"
#include"conio.h"
#include"math.h"
#include"time.h"
#include"stddef.h"
#include"dos.h"
#include"stdio.h"
#include"process.h"
#include"bios.h"
intsampt,key,v;
staticfloatcy[600],cx[600],cs[6];
floatdatain,u,u1,e2,xset,i,Ku;
time_tstart,end;
unsignedchardat[6],data_in[5][4];
unsignedcharstat,data,data1;
inti1,j1;
main()
{
intj,m,ntr,T,NUM;
floatadin(),fuzzycontrol(),max,tr,t0;
voiddaout(),wct(),wtp(),wait();
intgdriver,gmode,kk;
floatx1,x2,x3;
char*t[]={"sampledvalue:
","setedvalue:
"};
char*tt1[]={"L","t"};
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver,&gmode,"d:
\\tc");
wait();
/*cominit*/
outportb(0x3fb,0x80);/*SETB0x3fb.7=1*/
outportb(0x3f8,0x0C);/*LSB=0CHBPS=9600*/
outportb(0x3f9,0x00);/*MSB=00H*/
outportb(0x3fb,0x03);/*8DATA1STOPNO*/
outportb(0x3fc,0x03);/*SETBDTR=0RTS=0*/
outportb(0x3f9,0x00);/*SETIE=0*/
star:
inportb(0x3f8);
while(!
((0x20&inportb(0x3fd))==0x20));
f_f5:
while(!
((0x20&inportb(0x3fd))==0x20));
outportb(0x3f8,0x66);
while(!
(inportb(0x3fd)&0x01));
data1=inportb(0x3f8);
while(!
(inportb(0x3fd)&0x01));
data=inportb(0x3f8);
if(data!
=0x35)
{gotostar;}
a_d:
while(!
((0x20&inportb(0x3fd))==0x20));
outportb(0x3f8,0x61);
while(!
(inportb(0x3fd)&0x01));
data=inportb(0x3f8);
if(data!
=0x64)
{exit
(1);}
adin();
daout(0);
printf("PleaseInput...\n");
printf("\nSampt(3,4,5,6)=");
scanf("%d",&sampt);
printf("\nXset=");
scanf("%f",&xset);
printf("\nKu=");
scanf("%f",&Ku);
NUM=500;
setviewport(0,0,640,350,0);
clearviewport();
setbkcolor(3);
setcolor
(1);
cleardevice();
settextjustify(LEFT_TEXT,TOP_TEXT);
settextstyle(1,0,2);
settextjustify(0,2);
settextstyle(0,0,1);
outtextxy(410,20,t[1]);
outtextxy(410,40,t[0]);
line(37,85,40,80);
line(43,85,40,80);
line(585,287,590,290);
line(585,293,590,290);
for(j=1;j<9;j++)
{line(40,290-j*25,45,290-j*25);
line(40+j*50,285,40+j*50,290);
}
line(490,285,490,290);
line(540,285,540,290);
setlinestyle(0,0,3);
line(40,80,40,295);
line(35,290,590,290);
settextjustify(0,2);
settextstyle(1,0,1);
outtextxy(25,70,tt1[0]);
outtextxy(590,290,tt1[1]);
setcolor(4);
setlinestyle(0,0,1);
line(536,48,558,48);
wct(3,200.,14,88);
wct(3,150.,14,138);
wct(3,100.,14,188);
wct(3,xset*10.,14,288-(int)(xset*10.));
wct(3,50.,14,238);
wct(3,100.,135,300);
wct(3,200.,235,300);
wct(3,300.,335,300);
wct(3,400.,435,300);
wct(3,500.,535,300);
wtp("Xset=",xset,5,23);
wtp("Ku=",Ku,25,23);
/*wtp("I=",ki,45,23);
wtp("D=",kd,60,23);*/
max=0.0;ntr=0;
for(i=0;i {cx[i]=xset; start=time(NULL); t0=i*sampt; x1=adin(); x2=adin(); x3=adin(); cy[i]=(x1+x2+x3)/3; e2=xset-cy[i]; u=fuzzycontrol(e2); daout((int)(u)); putpixel(42+i,290-cx[i]*10,62); putpixel(42+i,290-cy[i]*10,4); putpixel(42+i,290-u*0.29,1); wtp("cy[i]=",cy[i],5,21); wtp("Time=",t0,60,21); wtp("u=",u,45,21); wtp("Num=",i+1.0,25,21); if(i>=2) {if(cy[i]>max)max=cy[i]; wtp("max=",max,5,25); } if(ntr==0) {if(cy[i]>=xset) {tr=i*sampt; wtp("tr=",tr,25,25); ntr=1; } } if(kbhit()! =0) {key=bioskey(0); key=(key>>8)&0xff; if(key==44)gotoloop2; } loop1: end=time(NULL); if((difftime(end,start)) } getch(); loop2: daout(0); outportb(0x3fc,0x01); closegraph(); exit(0); } floatadin() { b_d: while(! ((0x20&inportb(0x3fd))==0x20)); outportb(0x3f8,0x62); while(! (inportb(0x3fd)&0x01)); data=inportb(0x3f8); for(i1=0;i1<5;i1++) {for(j1=0;j1<4;j1++) {while(! (inportb(0x3fd)&0x01)); data_in[i1][j1]=inportb(0x3f8); } } for(i1=0;i1<5;i1++) {for(j1=0;j1<4;j1++) {data_in[i1][j1]=data_in[i1][j1]-0x30;} } if(data! =0x64) {gotob_d;} datain=data_in[0][0]*10+data_in[0][1]+data_in[0][2]*0.1+data_in[0][3]*0.01; return(datain); } floatfuzzycontrol(e2) floate2; { floatXec,Yu,e20,Ke,Kec; intE,EC,U,a[13][13]; intm0=6,n=6; intout[13][13]={ {7,7,7,6,5,4,4,4,4,4,4,4,4}, {7,6,6,5,4,4,4,4,4,4,4,4,4}, {7,6,5,4,4,4,4,4,4,4,4,4,4}, {6,5,4,4,4,4,4,2,2,2,2,2,2}, {5,4,4,4,4,4,4,2,0,0,0,0,0}, {4,4,4,2,2,2,2,2,0,1,1,1,1}, {4,4,4,2,0,0,0,0,0,-1,1,1,1}, {2,2,2,2,0,1,1,1,1,1,1,1,1}, {0,0,0,0,0,-1,1,1,1,1,1,1,0}, {1,1,1,2,2,2,2,2,2,2,2,2,-2}, {1,1,1,2,2,2,2,2,2,2,2,-2,-2}, {4,4,4,4,4,4,4,4,4,0,-2,-2,-2}, {4,4,4,4,4,4,4,4,0,-2,-2,-2,-2}}; e20=xset-cy[i-1]; Xec=(e2-e20)/sampt; Ke=n/2; Kec=m0/1; if(e2>2)e2=2; if(e2<-2)e2=-2; if(Xec>1)Xec=1; if(Xec<-1)Xec=-1; E=Ke*e2; EC=Kec*Xec; U=out[E+6][EC+6]; /*printf("U=%d",U);*/ Yu=Ku*U; if(Yu>255.0)Yu=255.0; if(Yu<-255.0)Yu=-255.0; /*printf("Yu=%f",Yu);*/ /*Yu=abs(Yu)*/; return(Yu); } voiddaout(x) intx; {intx1,x2,x3; c_d: x1=(int)(x/100.0); x2=(int)((x-x1*100)/10.0); x3=(int)(x-x1*100-x2*10); dat[0]=x1;dat[1]=x2;dat[2]=x3; dat[3]=0;dat[4]=0;dat[5]=0; for(i1=0;i1<6;i1++) {dat[i1]=dat[i1]+0x30;} while(! ((0x20&inportb(0x3fd))==0x20)); outportb(0x3f8,0x63); while(! (inportb(0x3fd)&0x01)); data=inportb(0x3f8); if(data! =0x64) {exit (1);} while(! ((0x20&inportb(0x3fd))==0x20)); outportb(0x3f8,0x64); for(i1=0;i1<6;i1++) { while(! ((0x20&inportb(0x3fd))==0x20)); outportb(0x3f8,dat[i1]); } while(! (inportb(0x3fd)&0x01)); data=inportb(0x3f8); if(data! =0x64) {exit (1);} } voidwct(b,xx,x2,y2) intb,x2,y2; floatxx; {charmb2[5]; setcolor (1); gcvt(xx,b,mb2); settextjustify(0,2); settextstyle(0,0,1); outtextxy(x2,y2,mb2); } voidwtp(xc,xt,x1,y1) charxc[]; floatxt; intx1,y1; {textcolor(9); gotoxy(x1,y1); textcolor (1); printf("%s%7.2f",xc,xt); } voidwait() {inti,j; printf("\n\nPleaseWaitFor1minute! ! ! \n"); setbkcolor(3); setcolor(4); setfillstyle(SOLID_FILL,4); for(i=0;i<361;i++) {pieslice(300,200,0,i,80); delay(10);} setcolor(14); setfillstyle(SOLID_FILL,14); for(i=91;i<181;i++) {pieslice(300,200,90,i,80); delay(50);} setcolor (1); setfillstyle(SOLID_FILL,1); for(i=181;i<271;i++) {pieslice(300,200,180,i,80); delay(50);} setcolor (2); setfillstyle(SOLID_FILL,2); for(i=271;i<361;i++) {pieslice(300,200,270,i,80); delay(50);} delay(200); cleardevice(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水箱 模糊 控制 教学内容