双容水箱液位模糊控制

合集下载

双容水箱模糊控制规则

双容水箱模糊控制规则

双容水箱模糊控制规则双容水箱模糊控制规则引言双容水箱是一种常见的水源供应系统,其通过两个容器间的自动切换来保证水源的持续供应。

在实际使用中,为了更好地控制水箱的切换和保障供水质量,需要采用模糊控制技术。

本文将对双容水箱模糊控制规则进行详细介绍。

一、双容水箱基本原理1.1 双容水箱结构双容水箱由两个相同的储水器和一个控制系统组成。

其中,每个储水器都有一个进口和一个出口,而控制系统则负责监测并调节两个储水器中的液位。

1.2 双容水箱工作原理当一个储水器中的液位下降到一定程度时,控制系统会自动切换到另一个储水器,并开启进口阀门将新鲜的自来水注入该储水器中。

同时,出口阀门会打开以保证该储水器中的液位不断上升。

二、模糊控制技术介绍2.1 模糊控制原理模糊控制是一种基于模糊逻辑理论的智能控制方法,其主要思想是将模糊的输入量通过一定的规则转化为模糊的输出量,从而实现对系统的控制。

2.2 模糊控制在双容水箱中的应用在双容水箱中,模糊控制可以通过对液位、进出水流量等参数进行监测和分析,从而实现对水箱切换和进出水阀门的精确控制。

三、双容水箱模糊控制规则3.1 液位监测规则液位监测是双容水箱模糊控制的基础。

在液位监测中,需要将液位高度转化为模糊变量,并根据不同的液位高度设置相应的隶属函数。

例如:- 高液位:隶属函数为“大”- 中等液位:隶属函数为“中”- 低液位:隶属函数为“小”3.2 切换规则当一个储水器中的液位下降到一定程度时,需要切换到另一个储水器。

此时,可以根据两个储水器中当前的液位高度以及进出水流量等参数来确定是否需要切换。

例如:- 当当前储水器中的液位低于“中”且另一个储水器中的液位高于“中”时,需要切换到另一个储水器。

- 当两个储水器中的液位都低于“小”时,需要启动进口阀门将新鲜的自来水注入当前储水器中。

3.3 进出水阀门控制规则进出水阀门控制是双容水箱模糊控制的核心。

在进出水阀门控制中,需要根据当前储水器的液位高度以及进出水流量等参数来精确控制进出水阀门的开关状态。

基于模糊PID的双容液位控制系统设计

基于模糊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引言:在工业生产过程控制中,液位控制系统是控制系统中非常重要的成员之一,液位控制质量水平也是影响连续过程系统的的重要因素,因此对液位控制系统的研究是非常重要的。

双容液体罐温度模糊控制系统设计

双容液体罐温度模糊控制系统设计

双容液体罐温度模糊控制系统设计
简介
本文档介绍了一种双容液体罐温度模糊控制系统的设计方案。

系统概述
该系统由温度传感器、控制芯片和执行机构组成。

温度传感器用于采集罐内温度数据,控制芯片根据传感器数据进行计算并控制执行机构调节罐内温度。

此外,该系统采用了模糊控制算法,能够自适应调节控制参数,提高温度控制精度和稳定性。

设计方案
硬件设计
系统硬件包括温度传感器和执行机构。

温度传感器选用高精度数字温度传感器,并通过IIC协议连接控制芯片。

执行机构采用PID控制器控制两路加热电路的开关,实现对罐内温度的调节。

软件设计
系统软件主要包括控制程序和模糊控制算法。

控制程序负责读取温度传感器数据并进行PID控制,调节加热器加热时间和功率。

模糊控制算法则基于传感器数据和控制器输出计算模糊控制参数,并根据参数自适应调整PID控制器参数。

通过这种方式,系统可以根据实时温度变化自适应调整控制参数,实现更加稳定和精确的温度控制。

总结
该温度模糊控制系统设计方案能够通过模糊控制算法自适应调整PID控制器参数,提高温度控制精度和稳定性。

同时,该系统硬件成本较低,适用于普通对温度要求较高的液体控制场景。

双容水箱的模糊PID控制

双容水箱的模糊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)五、插图。

模糊控制算法在水箱液位控制系统中的应用毕业论文

模糊控制算法在水箱液位控制系统中的应用毕业论文

模糊控制算法在水箱液位控制系统中的应用毕业论文目录摘要 (I)ABSTRACT...................................................... I I 1 绪论. (1)1.1课题研究的背景与意义 (1)1.2模糊控制产生的背景与意义 (1)1.3液位控制系统研究的意义 (2)1.4本论文研究的主要容 (3)2 液位控制系统的分析与建模 (4)2.1引言 (4)2.2液位控制系统控制对象及控制策略 (5)2.3被控对象的分析与建模 (6)2.4本章小结 (8)3 控制算法研究 (9)3.1模糊控制算法 (9)3.1.1 模糊控制的产生及发展 (9)3.1.2 模糊控制的特点 (10)3.1.3 模糊控制的基本概念 (10)3.1.4 模糊控制的基本理论 (14)3.2本章小结 (18)4 模糊控制算法在水箱液位控制中的应用 (19)4.1PID控制在双容水箱液位控制系统中的仿真研究 (19)4.1.1 PID控制算法 (19)4.1.2 PID参数对系统性能的影响 (21)4.1.3 PID参数的整定方法 (21)4.2模糊自整定PID在双容水箱液位系统中的应用 (25)4.2.1 模糊PID控制器的设计 (25)4.2.2 模糊控制部分 (25)4.3仿真结果与分析 (29)结论 (31)致谢 (32)参考文献 (33)1 绪论1.1 课题研究的背景与意义随着工业生产的飞速发展,人们对控制系统的控制精度、响应速度、系统稳定性与适应能力的要求越来越高。

而实际工业生产过程中的被控对象往往具有非线性、时延的特点,应用常规的控制手段难以达到理想的控制效果,研究对非线性、时延对象的先进控制策略,提高系统的控制水平,具有重要的实际意义。

本文所提及的液位控制系统是一种可以模拟多种对象特性的实验装置。

该装置是进行控制理论与控制工程教学、实验和研究的理想平台,可以方便的构成多阶系统对象,用户既可通过经典的PID控制器设计与调试,完成经典控制教学实验,也可通过模糊逻辑控制器的设计与调试,进行智能控制教学实验与研究。

模糊控制算法在水箱液位控制系统中的应用

模糊控制算法在水箱液位控制系统中的应用

模糊控制算法在水箱液位控制系统中的应用模糊控制算法在水箱液位控制系统中的应用摘要液位控制是工业控制中的一个重要问题,针对液位控制过程中存在时变、非线性等特点,为适应复杂系统的控制要求,人们研制了种类繁多的先进的智能控制器,模糊PID控制器便是其中之一。

模糊PID控制结合了PID控制算法和模糊控制算法的优点,可以在线实现PID参数的调整,使控制系统的响应速度快,过渡过程时间大大缩短,超调量减少,振荡次数少,具有较强的鲁棒性和稳定性,在模糊控制中扮演着十分重要的角色。

本文介绍了模糊PID控制在双容水箱的液位控制系统中的应用。

首先建立了液位控制系统数学模型,介绍了PID控制、模糊控制以及模糊PID的基本原理,然后利用MATLAB软件给出了设计结果,仿真结果验证了设计方法的有效性。

关键词:液位控制;模糊PID控制;仿真Application of fuzzy control algorithm in the tank liquid level control systemAbstractLiquid level control is an important problem in industrial control, for level control in big delay, time-varying and nonlinear characteristic, in order to adapt to complex system control requirements, people developed a wide range of advanced intelligent controller, fuzzy PID controller is one of them. Fuzzy PID control combined with PID control algorithm and the advantage of fuzzy control method, can realize adjustment of PID parameters online, and make the control system response speed, greatly shorten the transition time, overshoot less, fewer oscillations, has strong robustness and stability, and plays an important role in fuzzy control. This paper introduces the fuzzy PID control in the application of the double let water tank liquid level control system. Liquid level control system mathematical model is established first, and introduces the PID control, fuzzy control and the basic principle of fuzzy PID, and design result given by using MATLAB software, the simulation results verify the validity of the proposed design method.Keywords:liquid level control;fuzzy PID control;simulation目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1课题研究的背景与意义 (1)1.2模糊控制产生的背景与意义 (1)1.3液位控制系统研究的意义 (2)1.4本论文研究的主要内容 (3)2 液位控制系统的分析与建模 (4)2.1引言 (4)2.2液位控制系统控制对象及控制策略 (5)2.3被控对象的分析与建模 (6)2.4本章小结 (8)3 控制算法研究 (9)3.1模糊控制算法 (9)3.1.1 模糊控制的产生及发展 (9)3.1.2 模糊控制的特点 (10)3.1.3 模糊控制的基本概念 (10)3.1.4 模糊控制的基本理论 (14)3.2本章小结 (19)4 模糊控制算法在水箱液位控制中的应用 (20)4.1PID控制在双容水箱液位控制系统中的仿真研究 (20)4.1.1 PID控制算法 (20)4.1.2 PID参数对系统性能的影响 (22)4.1.3 PID参数的整定方法 (22)模糊自整定PID在双容水箱液位系统中的应用 (26)模糊PID控制器的设计 (26)模糊控制部分 (27)4.3仿真结果与分析 (31)结论 (34)致谢 (35)参考文献 (36)1 绪论课题研究的背景与意义随着工业生产的飞速发展,人们对控制系统的控制精度、响应速度、系统稳定性与适应能力的要求越来越高。

二容水箱模糊控制系统设计

二容水箱模糊控制系统设计

摘要在工业过程控制中,被控对象通常具有纯滞后、时变性、非线性以及存在种类繁多的干扰,采用常规的PID控制方法,难以获得满意的动、静态性能。

模糊控制作为智能控制领域的一个分支,由于其本质是非线性控制和自适应控制,对于参数时变,纯滞后和不精确模型等复杂控制系统,具有较强的鲁棒性。

本文针对典型的二阶惯性纯滞后系统,设计研究了模糊控制和常规PID的复合控制、PID参数的模糊自整定控制和PID-模糊Smith控制三种智能控制方法。

计算机仿真结果表明:这三种智能控制在二阶滞后系统中的控制效果均优于传统的PID控制效果,能够改善系统的动、静态特性,使控制系统的鲁棒性和抗干扰性得到显著提高。

论文最后通过建立系统的组态工程,将模糊控制方法应用到二容水箱液位控制系统,给出了系统的硬件设计结构,开发了组态画面,并且根据模糊PID控制规则编制了模糊控制程序。

试验结果验证了模糊控制算法的有效性,表明模糊控制在控制性能上优于传统的PID控制。

关键词:纯滞后;模糊控制;鲁棒性;参数自整定;二容水箱AbstractIn the industrial process control, the control objects usually own the time delay, nonlinear, time-vary characteristic accompanied with diverse interferences. So, it is hard to acquire satisfying static and dynamic characteristics by using common PID control. fuzzy control, as a branch of intelligent control field, is adapted to complicated systems with the characteristic of parameter time-vary, model mismatch and time delay, due to its essence of nonlinear and adaptive control and strong robustness.For the system of representative two steps time-delay, fuzzy-PID hybrid control,fuzzy PID control with parameters self-tuning and PID fuzzy Smith complex control are studied in this paper. The simulation shows that the control effects of the above three intelligent control are better than traditional PID control, and the dynamic and steady characteristics are improved. In addition, the robustness and anti-interference are advanced.By means of building a configurative project, the fuzzy control strategy is applied to the two-container water tank, and a set of completed hardware and structure diagram is provided. What’s more, the program is designed according to fuzzy PID control rule. The experiment shows that the arithmetic of fuzzy control is efficient and the capability of fuzzy control is superior to the traditional PID control.Keywords: pure time-delay; fuzzy control; robustness; parameter auto-tuning; two-container water tank目录摘要 (I)Abstract ........................................................................................................................................................... I I 1. 绪论 .. (1)1.1 引言 (1)1.2 复杂工业过程控制所面临的问题 (1)1.3 国内外模糊控制的现状与展望 (2)1.3.1模糊控制的现状 (2)1.3.2 模糊控制展望 (3)1.3本课题研究的目的及意义 (3)本章小结 (4)2. 模糊控制理论 (5)2.1模糊控制概论 (5)2.2模糊控制器的基本原理 (5)2.2.1 模糊控制器的基本设计方法 (6)2.2.2 模糊控制算法 (10)2.2.3控制规则自调整模糊控制器基本原理 (12)本章小结 (14)3. 模糊PID控制方法的研究 (15)3.1 模糊控制器和常规PID的复合控制 (16)3.1.1系统仿真实验 (17)3.2 常规PID参数的模糊自整定控制 (18)3.2.1 PID控制器参数自整定原则 (19)3.2.2 各变量隶属度函数的确定 (21)3.2.3系统仿真实验 (22)本章小结 (23)4. PID-模糊Smith智能控制方法的研究 (24)4.1施密斯(Smith)预估控制 (24)4.2 PID-模糊Smith预估控制 (25)4.2.1模糊Smith控制 (25)4.2.2模糊Smith及PID的复合控制 (26)4.3系统仿真实验 (26)本章小结 (28)5. 模糊控制技术在二容水箱液位控制系统中的应用 (29)5.1 二容水箱液位控制系统结构组成 (29)5.1.1 系统硬件结构 (29)5.1.2 系统硬件组成 (29)5.1.3 MCGS通用监控系统组态软件 (30)5.2二容水箱液位特性测试 (32)5.2.1原理说明 (32)5.2.2 测试内容与步骤 (33)5.2.3 测试曲线及其数学模型 (34)5.3组态界面开发与系统试验 (37)5.3.1组态界面的开发 (37)5.3.2 MCGS脚本程序 (38)5.3.4系统试验结果及分析 (39)5.4 本章小结 (40)总结 .............................................................................................................................. 错误!未定义书签。

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

双容水箱液位模糊控制一、实验目的熟悉双容液位控制系统的组成原理。

通过实验进一步掌握模糊控制原理及模糊控制规则的生成。

了解量化因子和比例因子对控制效果的影响。

掌握解模糊方法及实现。

二、实验设备实验对双象为TKGK-1双容液位系统TKGK-1 型实验装置:GK-06、GK-07-2万用表一只计算机系统三、实验原理图1双容水箱液位模糊控制系统方框图图1为双容水箱液位控制系统。

控制的目的是使下水箱的液位等于给定值,并能克服来自系统内部和外部扰动的影响。

双容水箱液位系统如图2,该被控对象具有非线性和时滞性,建立精确的数学模型比较困难;模糊控制不仅可以避开复杂的数学模型,通常还能得到比较好性能指标。

模糊控制器的结构图如图3。

模糊控制器的输入为误差和误差变化率:误差e=r-y,误差变化率ec=de/dt ,其糊语言集合,然后由E和EC模糊语言的的子集和模糊控制规则R (模糊关系矩阵)根据合成推理规则进行模糊决策,这样就可以得到模糊控制向量U,最后再把模糊量解模糊转换为精确量u ,再经D/A转换为模拟量去控制执行机构动作。

图3模糊控制器组成原理图模糊量化:根据精确量实际变化范围[a,b],合理选择模糊变量的论域为[-n,n],通过量化因子k=&-企,将其转换成若干等级的离散论域,如七个等级为{负大,负中,负小,零,正小,正中,正大},简写为{NB,NM,NS,O,PS,PM,PB}确定模糊子集的隶属函数曲线。

一般常采用三角形、梯形和正态分布等几种曲线。

然后由隶属函数曲线得出模糊变量E、EG U的赋值表。

根据经验,E模糊子集的隶数度函数取正态分布曲线,则赋值表见表模糊控制规则:模糊控制规则是操作经验和专家知识的总结,是进行模糊推理的依据。

在设计模糊控制规则时,必须考虑控制规则的完备性、交叉性和一致性。

既保证对于任意给定的输入,均有相应的控制规则起作用;控制器的输出值总是由数条控制规则来决定;控制规则中不存在相互矛盾的规则。

在总结专家经验和过程知识的基础上,可以得到如表二的控制规则表:模糊推理:模糊推理是模糊控制器的核心,模糊控制系统目前常采用的有:CRI推理的查表法、CRI推理的解析法、Mamdani直接推理法、后件函数法等。

本实验可采用Mamdani直接推理法。

Mamdani推理法是先求出模糊关系R,再根据输入求出控制量,把控制量清晰化,可得控制查询表.本试验设计了容量为7X 7条控制规则表,这个规则表可以用27条模糊条件语句来描述:如:if El=NB and Ef=NB then U=PS,对应的模糊关系:R1=A1X BIX C5根据Ri(i=1,2,…27)可以得到综合模糊矩阵R。

如下计算模糊关系矩阵R:R=R1U R2U ・ R27E和EC对应的模糊变量为和,此时可由下式求出:U*=( A* X B*沪R式中:——表示求合成运算.解模糊:可采用常用的重心法进行解模糊运算。

四、实验步骤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); /*SETBDTR=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();}。

相关文档
最新文档