双容水箱液位模糊控制
双容水箱模糊控制规则

双容水箱模糊控制规则双容水箱模糊控制规则引言双容水箱是一种常见的水源供应系统,其通过两个容器间的自动切换来保证水源的持续供应。
在实际使用中,为了更好地控制水箱的切换和保障供水质量,需要采用模糊控制技术。
本文将对双容水箱模糊控制规则进行详细介绍。
一、双容水箱基本原理1.1 双容水箱结构双容水箱由两个相同的储水器和一个控制系统组成。
其中,每个储水器都有一个进口和一个出口,而控制系统则负责监测并调节两个储水器中的液位。
1.2 双容水箱工作原理当一个储水器中的液位下降到一定程度时,控制系统会自动切换到另一个储水器,并开启进口阀门将新鲜的自来水注入该储水器中。
同时,出口阀门会打开以保证该储水器中的液位不断上升。
二、模糊控制技术介绍2.1 模糊控制原理模糊控制是一种基于模糊逻辑理论的智能控制方法,其主要思想是将模糊的输入量通过一定的规则转化为模糊的输出量,从而实现对系统的控制。
2.2 模糊控制在双容水箱中的应用在双容水箱中,模糊控制可以通过对液位、进出水流量等参数进行监测和分析,从而实现对水箱切换和进出水阀门的精确控制。
三、双容水箱模糊控制规则3.1 液位监测规则液位监测是双容水箱模糊控制的基础。
在液位监测中,需要将液位高度转化为模糊变量,并根据不同的液位高度设置相应的隶属函数。
例如:- 高液位:隶属函数为“大”- 中等液位:隶属函数为“中”- 低液位:隶属函数为“小”3.2 切换规则当一个储水器中的液位下降到一定程度时,需要切换到另一个储水器。
此时,可以根据两个储水器中当前的液位高度以及进出水流量等参数来确定是否需要切换。
例如:- 当当前储水器中的液位低于“中”且另一个储水器中的液位高于“中”时,需要切换到另一个储水器。
- 当两个储水器中的液位都低于“小”时,需要启动进口阀门将新鲜的自来水注入当前储水器中。
3.3 进出水阀门控制规则进出水阀门控制是双容水箱模糊控制的核心。
在进出水阀门控制中,需要根据当前储水器的液位高度以及进出水流量等参数来精确控制进出水阀门的开关状态。
基于模糊PID的双容液位控制系统设计

基于模糊 PID的双容液位控制系统设计摘要:针对双容液位控制系统的大滞后、非线性等特点,本文采用s7-1200作为控制器,运行SCL语言编写了模糊PID控制算法,采用MCGS设计了监控系统,实现了对双容液位的控制。
实验结果表明: 模糊PID 控制方法相比传统 PID 控制方法,有着更小的超调量和更快的调节时间,对双容液位控制系统得有良好的控制性能。
项目来源:广西高校中青年教师能力提升项目(2019KY1559)关键词:双容液位控制、模糊PID、PID 控制、MCGSAbstract: In view of the large lag and nonlinear characteristicsof the dual-volume liquid level control system, this paper uses s7-1200 as the controller, runs the SCL language to write the fuzzy PID control algorithm, uses MCGS to design the monitoring system, and realizes the dual-volume liquid level control system. bit control. The experimental results show that the fuzzy PID control method hassmaller overshoot and faster adjustment time than the traditional PID control method, and has good control performance for the dual-volume liquid level control system.Keywords: dual-volume liquid level control, fuzzy PID, PID control, MCGS引言:在工业生产过程控制中,液位控制系统是控制系统中非常重要的成员之一,液位控制质量水平也是影响连续过程系统的的重要因素,因此对液位控制系统的研究是非常重要的。
模糊控制在液位控制中的仿真应用设计

吉林化工学院毕业设计模糊控制在液位控制中的仿真应用设计Simulation Design Based on Fuzzy Controller in Liquid LevelControl学生学号:09510441学生姓名:霍可栋专业班级:自动0904指导教师:吕春兰职称:副教授起止日期:2013.03.04~2013.06.23吉林化工学院Jilin Institute of Chemical Technology摘要本次设计主要论述了应用模糊控制理论控制水箱液位,详尽的介绍模糊控制理论的相关知识,提出水箱液位模糊控制的方案,建立基于水箱水位的数学模型并用MATLAB进行仿真设计。
首先根据双容水箱的系统结构,通过计算得到数学模型的传递函数;然后利用Matlab 工具箱设计模糊控制器,具体包括以下三步:(1)确定模糊控制器的结构;(2)输入输出的模糊化;(3)模糊推理决策算法设计;最后分别用常规PID控制与模糊控制对双容水箱系统仿真。
通过常规PID控制与模糊控制仿真结果的对比,我们能看出模糊控制较传统的PID控制来讲具有响应速度快、适应性较强,即鲁棒性好、超调量小稳定时间较长等优点,显示出很强的抗干扰性能。
关键词:水位控制;模糊控制器;模糊规则; FISAbstractThis paper is primarily on the applied fuzzy control theory control level in the reservoir system, first introduced in detail the fuzzy control theory of knowledge, and Then put forward to realize the control of the water level in the water tank scheme using fuzzy theory,finally simulation design of mathematical model of fuzzy controller with MATLAB based on the water tank water level .Firstly, according to the system structure of double tank, transfer function is obtained through the calculation of mathematical model. Then use the Matlab toolbox to design the fuzzy controller, including the following three steps: (1)Determine the structure of fuzzy controller;(2)Fuzzy input and output; (3)Design of fuzzy reasoning and decision algorithms. Finally, by using the MATLAB fuzzy logic toolbox and SIMULINK combination function,Compare the simulation result of conventional PID control and fuzzy control for dual-tank system.By contrast to conventional PID control and fuzzy control simulation results, we can see the fuzzy control over the conventional PID control with fast response, strong adaptability, robustness, and overshoot advantages of a small stable for a long time, showing the expected good steady performance.Key Words:Level control; Fuzzy controller; Fuzzy rules; FIS目录摘要 (I)Abstract (II)第一章绪论 (1)1.1 模糊控制水箱水位系统概述 (1)1.2 模糊控制理论简介 (1)1.2.1 模糊控制理论的产生、发展及现状 (1)1.2.2 模糊控制理论运用于水箱水位系统控制的意义 (2)1.3 仿真建模工具软件MATLAB/SIMULINK简介 (2)1.4 本文的主要任务及内容安排 (4)第二章模糊理论及模糊控制基础 (6)2.1模糊理论基础 (6)2.1.1 从经典集合到模糊集合的转变 (6)2.1.2 模糊集合的基本概念 (8)2.1.3 模糊集合的基本运算 (11)2.2 模糊控制的基础知识 (13)2.2.1 模糊控制的一般概念 (14)2.2.2 模糊控制的回顾和展望 (15)2.2.3 模糊控制系统的结构 (15)2.3 本章小结 (20)第三章水箱水位模糊控制器的建立 (22)3.1 双容水箱的动态分析与建模 (22)3.2Matlab下模糊控制器的设计 (24)3.2.1 确定模糊控制器的结构 (24)3.2.2 输入输出的模糊化 (25)3.2.3 模糊推理决策算法设计 (26)3.3 本章小结 (29)第四章利用MATLAB对水箱水位系统进行仿真建模 (30)4.1 水箱水位模糊推理系统(FIS)的建立 (30)4.2 模糊规则的建立 (32)4.3 对SIMULINK模型控制系统的构建 (35)4.4Matlab对水箱液位的仿真设计 (36)4.4.1 常规PID对液位模型的仿真 (36)4.4.2 模糊控制对液位模型的仿真 (37)4.4.3 混合式模糊控制对液位的仿真 (38)4.4.4 干扰后常规PID与模糊控制仿真对比 (39)4.5 本章小结 (40)结论 (42)参考文献 (43)致谢 (44)第一章绪论1.1 模糊控制水箱水位系统概述在能源、化工等多个领域中普遍存在着各类液位控制系统,各种控制方式在液位控制系统中也层出不穷,如较常用的浮子式、磁电式和接近开关式。
双容水箱的模糊PID控制

双容水箱液位模糊串级控制系统的设计与MATLAB仿真薛松柏11.宿迁学院机电工程系,09自动化1班,20090704140摘要:液位控制是工业控制中的一个重要问题,针对液位控制过程中存在大滞后、时变、非线性的特点,为适应复杂系统的控制要求,人们研制了种类繁多的先进的智能控制器,模糊PID 控制器便是其中之一。
模糊PID控制结合了PID控制算法和模糊控制方法的优点,可以在线实现PID参数的调整,使控制系统的响应速度快,过渡过程时间大大缩短,超调量减少,振荡次数少,具有较强的鲁棒性和稳定性,在模糊控制中扮演着十分重要的角色。
本文先对双容水箱进行数学建模,将模糊控制和PID控制相结合,设计出了双容水箱液位模糊PID串级控制系统。
然后参照经验选取了合适的模糊控制规则和隶属度函数,设计了模糊控制器,建立了模糊控制表,供在线模糊控制查询使用。
最后应用MATLAB对双容水箱液位控制对象的常规PID串级控制系统和模糊PID串级控制系统进行了仿真比较,说明了模糊PID串级控制系统相对于常规PID串级控制系统,对于此设计具有明显的优越性。
关键字:PID控制;模糊控制;模糊PID串级控制;MATLAB仿真0 引言双容水箱液位控制系统,由于阀门的非线性、传输管道的纯滞后,用常规的PID控制不能取得满意的控制效果,而且双容水箱理论上的数学模型是很难建立的,所以用常规的PID控制更难取得满意的控制效果。
为此将模糊控制引入到双容水箱液位控制系统中来,根据人工控制的经验总结模糊控制的规律,用模糊控制和PID控制对双容水箱进行串级控制,可以取得满意的控制效果。
本文设计了双容水箱液位的模糊PID串级控制,用模糊控制和PID控制组成的双容水箱液位串级控制系统通过控制双容水箱的下液位,改善其控制性能,并借助MATLAB进行仿真,比较常规PID串级控制和模糊PID串级控制的性能。
1 双容水箱液位系统的组成双容水箱串级液位控制系统结构图如图 2.1所示。
模糊控制水箱液位调节

实验二:模糊控制水箱液位调节一实验目的1.掌握模糊控制的原理2.加强模糊控制在实践中的应用二实验器材装有Matlab软件PC电脑一台三实验原理模糊控制的基本原理:它的核心部分为模糊控制器,模糊控制器的控制规律由有计算机程序实现。
详见P32(模糊控制原理)。
四原代码clear allclose allq1=0; %定义第一个水箱的入水量q2=0; %定义第一个水箱的出水量q3=0; %定义第二个水箱的出水量q4=0; %定义第三个水箱的出水量b=1.4; %定义第一个水箱入水量的控制系数a1=8.6; %定义第一个水箱出水量的控制系数a2=8.6; %定义第一个水箱出水量的控制系数h1=100; %定义第一个水箱中水的初始高度h2=100; %定义第二个水箱中水的初始高度h3=100; %定义第三个水箱中水的初始高度v=119; %定义sin函数的系数s=190; %定义水箱底面积k=10; %定义开关控制量e=0; %定义误差e_1=0;ec=0;H=130; %定义第三个水箱的期望高度e=H-h1;a=newfis('fuzz'); %误差函数a=addvar(a,'input','e',[-25,25]);a=addmf(a,'input',1,'NB','zmf',[-25,-10]);a=addmf(a,'input',1,'PS','trimf',[-25,-10,0]);a=addmf(a,'input',1,'Z','trimf',[-10,0,10]);a=addmf(a,'input',1,'PS','trimf',[0,10,25]);a=addmf(a,'input',1,'PB','smf',[10,25]);a=addvar(a,'output','u',[0,100]); %控制量输出函数a=addmf(a,'output',1,'NB','zmf',[0,30]);a=addmf(a,'output',1,'NS','trimf',[0,30,50]);a=addmf(a,'output',1,'Z','trimf',[30,50,70]);a=addmf(a,'output',1,'PS','trimf',[50,70,100]);a=addmf(a,'output',1,'PB','smf',[70,100]);rulelist=[1 1 1 1;2 2 1 1;3 3 1 1;4 4 1 1;5 5 1 1];a = addrule(a, rulelist);for i=1:1:8000tt(i)=i; %时间轴q1=b*k; %第一个水箱的进水量q2=a1*sqrt(h1); %第一个水箱的出水量h1=h1+(q1-q2)/s; %第一个水箱中水的高度q3=a2*sqrt(h2); %第二个水箱的进水量h2=h2+(q2-q3)/4; %第二个水箱中水的高度q4=v*abs(sin(2.3*pi*i+0.35)); %第二个谁想的出水量h3=h3+(q3-q4)/s; %第三个水箱中的高度hh(i)=h3;k=evalfis(e,a);e=H-h3;endplot(tt,hh)五、插图。
【毕业论文】模糊PID控制技术在双容水箱液位控制中的应用与研究

摘 要双容水箱液位控制系统具有过程控制中动态过程的一般特点:大惯性、大时延、非线性,难以对其进行精确的控制,从而使其成为过程控制教学、试验和研究的理想实验平台。
因此,双容水箱液位控制系统在耦合非线性系统的监控和故障诊断算法的研究中得到了广泛的关注。
本课题首先分析了双容水箱液位控制系统工艺流程,在MPCE-1000实验系统上模拟双容水箱系统的基础上推导双容水箱的数学模型并在Simulink上进行仿真。
由于双容水箱是一个典型的非线性时变多变量耦合系统,用常规的控制手段很难实现理想的控制效果。
因此,引入模糊控制技术,将模糊控制与传统的PID控制结合,设计出模糊PID控制器,并进行Simulink仿真。
仿真结果表明,模糊PID控制器的控制效果比常规PID控制器的控制效果理想。
关键词:双容水箱,模糊PID,液位控制AbstractTwo-capacity water tank level control system is in the process control dynamic process of the general characteristics: large inertia, the time delay, non-linear, not their precise control, thereby making it a teaching process control, testing and research of the ideal experimental plat form . Therefore, the dual-capacity water tank level control system in the coupled non-linear system monitoring and fault diagnosis method in the study received widespread attention.The first issue of a dual-capacity water tank level control system and its mathematical modeling process.In experiments on MPCE-1000the basis of dual-capacity water tanks derived a mathematical model and simulation in Simulink on.Because of the capacity of water tanks is a typical multi-variable nonlinear time-varying coupling system,using conventional means of control difficult to achieve the desired effect of control.Therefore,the introduction of fuzzy control technology,fuzzy control with the traditional combination of PID control,designed fuzzy PID controller,and Simulink simulation.Key words:Two-capacity water tanks, fuzzy PID, Level Control第一章 前 言 (1)1.1 研究背景及意义 (1)1.1.1 选题背景 (1)1.1.2 研究意义 (2)1.2 本文的主要研究内容 (3)第二章 模糊PID控制与MPCE1000试验系统简介 (4)2.1 改善模糊控制系统的稳态性能 (4)2.1.1 FuzzyPID混合控制器 (4)2.1.2比例模糊PI控制器 (5)2.2 MPCE1000试验系统 (6)2.2.1 小型流程设备台 (6)2.2.2动态数字模型 (6)2.2.3 硬件自动测试 (6)第三章 模糊控制理论基础 (7)3.1 双容水箱液位控制系统的数学建模 (7)3.2 模糊自动控制的基本思想 (8)3.3 模糊控制特点 (10)3.4 模糊控制系统的组成 (11)3.5 模糊控制系统的设计 (12)3.5.1模糊控制器的设计原则 (12)3.5.2 模糊控制器的常规设计方法 (13)3.5.3模糊控制器组成 (14)3.6 模糊控制与PID 算法的结合 (16)第四章 双容水箱液位控制系统的仿真研究 (19)4.1 MATLAB 简介 (19)4.1.1 模糊逻辑工具箱 (19)4.1.2 SIMULINK 工具箱 (19)4.1.3 MATLAB 在模糊控制仿真中的应用 (19)4.2 模糊PID 双容水箱液位控制的仿真 (20)4.2.1 模糊控制器的simulink 仿真 (20)4.2.2 双容水箱液位控制的模糊PID 仿真 (33)4.3 对比与结论 (33)第五章 结论与展望 (35)5.1 研究工作总结 (35)5.2 展望 (35)参 考 文 献 (37)致 谢 (38)第一章 前 言1.1 研究背景及意义1.1.1 选题背景双容水箱液位的控制作为过程控制的典型代表是众多过程控制学者研究的热点之一。
过程控制实验装置的双容液位控制系统设计

摘要双容水箱液位控制系统广泛应用于食品生产、工业化工等各个领域。
双容液位控制系统具有非时变、滞后等特点,根据这一特点,分别应用了PID控制、模糊控制等控制策略。
基于对过程控制实验装置的了解,建立了过程实验装置与西门子PLC的硬件连接。
然后,基于PLC实现了过程实验装置双容液位控制系统的设计,并对实验结果进行了对比分析。
在此基础上,基于OPC接口技术,建立西门子PLC与MATLAB 软件的数据通讯。
进而,采用模糊控制算法应用MATLAB软件中的模糊控制工具箱,实现了对过程实验装置双容液位的控制。
最后,对实验结果进行了对比分析,得出了模糊控制算法在双容液位控制系统中应用的优点。
关键词:双容液位;PLC;PID控制;模糊控制Process control device of Liquid Level Control System DesignABSTRACTTwin-tank water level control system is widely used in various fields such as food production, industrial chemicals. Liquid Level control system with a non-time-varying characteristics of the lag, according to this feature, each application of the PID control, fuzzy control and other control strategies.Based on the process control device of understanding, the course of the experiment apparatus connected to a Siemens PLC hardware. Then, based on PLC achieved during experimental apparatus Liquid Level Control System, and the experimental results were compared and analyzed. On this basis, based on the OPC interface technology, establish data communication Siemens PLC with MATLAB software. Furthermore, the use of the experimental device for Liquid Level Process Control Fuzzy Control MATLAB software fuzzy control toolbox achieved. Finally, the experimental results were compared and analyzed, we obtained advantages of fuzzy control algorithm in Liquid Level Control System.Key Words:Liquid Level; PLC; PID Control; Fuzzy Control目录摘要 (I)ABSTRACT (II)第1章绪论 (1)1.1选题的背景及意义 (1)1.2国内外研究现状 (2)1.2.1过程控制系统研究现状 (2)1.2.2双容液位控制概论 (3)1.2.3模糊控制研究现状 (4)1.3本文研究内容 (5)第2章过程实验装置的双容液位系统 (6)2.1装置介绍 (6)2.2对象特性分析 (9)2.3控制需求分析 (9)第3章过程实验装置的双容液位控制系统设计 (11)3.1 控制系统设计 (11)3.2 基于PLC的双容液位控制 (12)3.2.1PLC控制程序 (13)3.2.2PID参数整定 (15)3.2.3 传递函数的求解与OPC的连接 (15)3.3 实验结果分析 (22)3.4小结 (25)第4章基于PID的Matlab和模糊控制仿真 (27)4.1数据通讯系统 (27)4.2基于 PID控制器的模糊控制系统设计 (29)4.2.1模糊控制器的编写 (29)4.2.2模糊控制器的编写 (30)4.2.3模糊控制仿真设计 (37)4.3实验结果对比分析 (40)第5章总结 (44)参考文献 (45)附录A 附录内容名称 (46)致谢 (49)第1章绪论1.1选题的背景及意义双容水箱在工业生产过程中极其常见,是工业生产常用的控制设备之一。
双容水箱液位模糊串级控制系统的设计

第2 5卷 第 5期 21 0 2年 9月 文 章 编 号 :10 — 6 3 (0 2 5 1 6 0 0 2 6 7 2 1 )0 — 3 — 3
D v lp n & In v t n o a hn r e eo me t n o ai f c ie y& E e t c l r d cs o M lcr a o u t i P
ce s ,f p t o c s u b ro m e ite a to e tbl .Thstx r t tr tnk t ar n mahe tc r ae l o c n u sn m e ft sl l,h ve asr ng r sa it a i t i y i e tpemiswae a o c ry o t mais mod lt h e o t e
A b ta t sr c :The mit I c to o bne D o c n r lclu ae w a nd fim est o to he a v ntg eho .te se d t a sy P D onr lc m i d PI t o to ac lt v a an s o c n rlt d a a e ofm t d h p e h t
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
双容水箱液位模糊控制一、实验目的熟悉双容液位控制系统的组成原理。
通过实验进一步掌握模糊控制原理及模糊控制规则的生成。
了解量化因子和比例因子对控制效果的影响。
掌握解模糊方法及实现。
二、实验设备实验对双象为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 6NBNMNSOPSPMPB1.00.30.70.60.10.41.00.20.20.60.50.10.31.00.10.10.50.40.10.21.00.20.10.40.50.10.11.00.30.10.50.60.20.21.00.40.10.60.70.31.0模糊控制规则:模糊控制规则是操作经验和专家知识的总结,是进行模糊推理的依据。
在设计模糊控制规则时,必须考虑控制规则的完备性、交叉性和一致性。
既保证对于任意给定的输入,均有相应的控制规则起作用;控制器的输出值总是由数条控制规则来决定;控制规则中不存在相互矛盾的规则。
在总结专家经验和过程知识的基础上,可以得到如表二的控制规则表:模糊推理:模糊推理是模糊控制器的核心,模糊控制系统目前常采用的有:CRI推理的查表法、CRI推理的解析法、Mamdani直接推理法、后件函数法等。
本实验可采用Mamdani 直接推理法。
Mamdani推理法是先求出模糊关系R,再根据输入求出控制量,把控制量清晰化,可得控制查询表.本试验设计了容量为7×7条控制规则表,这个规则表可以用27条模糊条件语句来描述:如:if El=NB and Ef=NB then U=PS,对应的模糊关系:R1=A1×B1×C5根据Ri(i=1,2,…27)可以得到综合模糊矩阵R。
如下计算模糊关系矩阵R:R=R1∪R2∪…R27E和EC对应的模糊变量为和,此时可由下式求出:U*=( A* ×B*)R式中:——表示求合成运算.解模糊:可采用常用的重心法进行解模糊运算。
表二控制规则表NB NM NS O PS PM PBNB NM NS O PS PM PB PSNSNMNBNBNBNBPSPSNSNMNMNBNBPSPSONSNSNMNMPSPSOOONSNSPMPMPSPSONSNSPBPMPMPMPSPSNSPBPBPMPMPMPSNS四、实验步骤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"int sampt,key,v;static float cy[600],cx[600],cs[6];float datain,u,u1,e2,xset,i,Ku;time_t start,end;unsigned char dat[6],data_in[5][4];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,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();/* init*/outportb(0x3fb,0x80); /*SETB 0x3fb.7=1*/outportb(0x3f8,0x0C); /* LSB=0CH BPS=9600*/outportb(0x3f9,0x00); /* MSB=00H*/outportb(0x3fb,0x03); /* 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));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",&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<NUM;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) goto loop2;}loop1: 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;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){ goto b_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);}float fuzzycontrol(e2)float e2;{float Xec,Yu,e20,Ke,Kec;int E,EC,U,a[13][13];int m0=6,n=6;int out[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);}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*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);}}void wct(b,xx,x2,y2)int b,x2,y2;float xx;{char mb2[5];setcolor(1);gcvt(xx,b,mb2);settextjustify(0,2);settextstyle(0,0,1);outtextxy(x2,y2,mb2);}void wtp(xc,xt,x1,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("\n\n Please Wait For 1 minute !!!\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();}。