ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:94.41KB ,
资源ID:4568309      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4568309.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(双容水箱液位模糊控制教学内容.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

双容水箱液位模糊控制教学内容.docx

1、双容水箱液位模糊控制教学内容双容水箱液位模糊控制一、实验目的 熟悉双容液位控制系统的组成原理。通过实验进一步掌握模糊控制原理及模糊控制规则的生成。 了解量化因子和比例因子对控制效果的影响。掌握解模糊方法及实现。二、实验设备 实验对双象为TKGK-1双容液位系统TKGK-1型实验装置:GK-06、GK-07-2万用表一只计算机系统三、实验原理图1 双容水箱液位模糊控制系统方框图图1为双容水箱液位控制系统。控制的目的是使下水箱的液位等于给定值,并能克服来自系统内部和外部扰动的影响。双容水箱液位系统如图2,该被控对象具有非线性和时滞性,建立精确的数学模型比较困难;模糊控制不仅可以避开复杂的数学模型,

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=,将其转换

3、成若干等级的离散论域,如七个等级为负大,负中,负小,零,正小,正中,正大,简写为NB,NM,NS,O,PS,PM,PB。确定模糊子集的隶属函数曲线。一般常采用三角形、梯形和正态分布等几种曲线。然后由隶属函数曲线得出模糊变量E、EC、U的赋值表。 根据经验,E模糊子集的隶数度函数取正态分布曲线,则赋值表见表一:表一:变量E隶属函数赋值表 E -6-5-4-3-2-10123456NBNMNSOPSPMPB1.00.3000000.70.60.100000.41.00.200000.20.60.500000.10.31.00.100000.10.50.40.100000.21.00.200000.

4、10.40.50.100000.11.00.30.100000.50.60.200000.21.00.400000.10.60.7000000.31.0模糊控制规则:模糊控制规则是操作经验和专家知识的总结,是进行模糊推理的依据。在设计模糊控制规则时,必须考虑控制规则的完备性、交叉性和一致性。既保证对于任意给定的输入,均有相应的控制规则起作用;控制器的输出值总是由数条控制规则来决定;控制规则中不存在相互矛盾的规则。在总结专家经验和过程知识的基础上,可以得到如表二的控制规则表: 模糊推理:模糊推理是模糊控制器的核心,模糊控制系统目前常采用的有:CRI推理的查表法、CRI推理的解析法、Mamdani

5、直接推理法、后件函数法等。本实验可采用Mamdani直接推理法。Mamdani推理法是先求出模糊关系R,再根据输入求出控制量,把控制量清晰化,可得控制查询表.本试验设计了容量为77条控制规则表,这个规则表可以用27条模糊条件语句来描述: 如:if El=NB and Ef=NB then U=PS,对应的模糊关系:R1=A1B1C5根据Ri(i=1,2,27)可以得到综合模糊矩阵R。如下计算模糊关系矩阵R:R=R1R2R27 E和EC对应的模糊变量为和,此时可由下式求出:U*=( A* B*)R 式中: 表示求合成运算.解模糊:可采用常用的重心法进行解模糊运算。表二 控制规则表 NBNMNSO

6、PSPMPBNBNMNSOPSPMPBPSNSNMNBNBNBNBPSPSNSNMNMNBNBPSPSONSNSNMNMPSPSOOONSNSPMPMPSPSONSNSPBPMPMPMPSPSNSPBPBPMPMPMPSNS四、实验步骤 1. 按图1连成控制系统图。其中被控对象为下水箱,被控制量为液位高度,控制器由计算机系统组成,接口的驱动已在“计算机控制系统”试验中完成,这里不再赘述。 2.启动工艺流程并开启相关仪器,调整传感器输出的零点与增益。 3.运行模糊控制程序,并输入参数,记录试验数据和控制曲线。 4.修改模糊控制规则,重复步骤3。 5.待系统稳定后,加手动扰动,观察系统的动态变化,

7、并记录结果。 五、实验报告要求 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

8、#include bios.h int sampt,key,v; static float cy600,cx600,cs6; float datain,u,u1,e2,xset,i,Ku; time_t start,end; unsigned char dat6,data_in54; unsigned char stat,data,data1; int i1,j1; main( ) int j,m,ntr,T,NUM; float adin( ),fuzzycontrol(),max,tr,t0; void daout( ),wct( ),wtp( ),wait( ); int gdriver

9、,gmode,kk; float x1,x2,x3; char *t=sampled value:,seted value:; char *tt1=L,t; gdriver=VGA; gmode=VGAHI; initgraph(&gdriver,&gmode,d:tc); wait(); /*com init*/ outportb(0x3fb,0x80); /*SETB 0x3fb.7=1*/ outportb(0x3f8,0x0C); /* LSB=0CH BPS=9600*/ outportb(0x3f9,0x00); /* MSB=00H*/ outportb(0x3fb,0x03);

10、 /* 8DATA 1STOP NO*/ outportb(0x3fc,0x03); /*SETB DTR=0 RTS=0*/ outportb(0x3f9,0x00); /*SET IE=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);

11、 data=inportb(0x3f8); if(data!=0x35) goto star; 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(Please Input.n); printf(nSampt(3,4,5,6)=); scanf(%d,&sampt); printf(nXset=); scanf(%f,&xs

12、et); 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,t1); outtextxy(410,40,t0); line(37,85,40,80); line(

13、43,85,40,80); line(585,287,590,290); line(585,293,590,290); for (j=1;j9;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(2

14、5,70,tt10); outtextxy(590,290,tt11); 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,5

15、00.,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=2) if(cyimax) max=cyi; wtp(max=,max,5,25); if(ntr=0) if(cyi=xset) tr=i*sampt; wtp(tr=,tr,25,25); ntr=1; if(kbhit()!=0) key=bioskey(0); key=(key8)&0xff; if(key=44) goto loop2; loop1

16、: end=time(NULL); if(difftime(end,start)sampt) goto loop1; getch();loop2: daout(0); outportb(0x3fc,0x01); closegraph(); exit(0); float adin ( ) b_d: while(!(0x20&inportb(0x3fd)=0x20); outportb(0x3f8,0x62); while(!(inportb(0x3fd)&0x01); data=inportb(0x3f8); for(i1=0;i15;i1+) for(j1=0;j14;j1+) while(!

17、(inportb(0x3fd)&0x01); data_ini1j1=inportb(0x3f8); for(i1=0;i15;i1+) for(j1=0;j12) e2=2; if(e21) Xec=1; if(Xec255.0) Yu=255.0; if(Yu-255.0) Yu=-255.0; /*printf(Yu=%f,Yu);*/ /*Yu=abs(Yu)*/; return(Yu); void daout(x) int x; int x1,x2,x3; c_d: x1=(int)(x/100.0); x2=(int)(x-x1*100)/10.0); x3=(int)(x-x1*

18、100-x2*10); dat0=x1;dat1=x2;dat2=x3; dat3=0;dat4=0;dat5=0; for(i1=0;i16;i1+) dati1=dati1+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;i16;i1+

19、) while(!(0x20&inportb(0x3fd)=0x20); outportb(0x3f8,dati1); while(!(inportb(0x3fd)&0x01); data=inportb(0x3f8); if(data!=0x64) exit(1); void wct(b,xx,x2,y2) int b,x2,y2; float xx; char mb25; setcolor(1); gcvt(xx,b,mb2); settextjustify(0,2); settextstyle(0,0,1); outtextxy(x2,y2,mb2); void wtp(xc,xt,x1

20、,y1) char xc ; float xt; int x1,y1; textcolor(9); gotoxy(x1,y1); textcolor(1); printf(%s%7.2f,xc,xt); void wait() int i,j; printf(nn Please Wait For 1 minute !n); setbkcolor(3); setcolor(4); setfillstyle(SOLID_FILL,4); for(i=0;i361;i+) pieslice(300,200,0,i,80); delay(10); setcolor(14); setfillstyle(SOLID_FILL,14); for(i=91;i181;i+) pieslice(300,200,90,i,80); delay(50); setcolor(1); setfillstyle(SOLID_FILL,1); for(i=181;i271;i+) pieslice(300,200,180,i,80); delay(50); setcolor(2); setfillstyle(SOLID_FILL,2); for(i=271;i361;i+) pieslice(300,200,270,i,80); delay(50); delay(200); cleardevice();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1