1、锅炉水位常规PID、神经网络PID模糊PID控制的仿真分析摘要本文首先分析了影响锅炉汽包水位的各种干扰因素,并对汽包的结构及水位的动、静态特性进行分析。介绍了常规的PID控制方式,由于锅炉汽包水位控制系统的调节器的输入端常加有不确定的输入量,极易引起水位控制产生偏差,所以本文提出了采用BP神经网络PID、模糊PID,来消除锅炉汽包水位偏差。并用MATLAB对BP神经网络PID、模糊PID、常规PID对锅炉汽包水位控制进行仿真,对比三种控制策略下的仿真曲线,仿真结果表明模糊PID、BP神经网络PID的响应速度快,调整时间少,抗干扰能力和鲁棒性更好,可以保证锅炉汽包水位的稳定。关键词:汽包水位、P
2、ID控制、模糊PID控制、BP神经网络PID控制、MATLABAbstractThis paper first analyzes the influence of boiler liquid level of interference factors, and drum water level dynamic and static characteristics are analyzed. This paper introduces the traditional PID control method, because the boiler drum water level control s
3、ystem often add some uncertain inputs, it easily cause water level control produces deviation. So this paper proposes using BP neural network PID, fuzzy PID, to eliminate the boiler drum water level deviation. With MATLAB on BP neural network PID, fuzzy PID simulation of boiler drum water level. And
4、 the conventional PID and fuzzy PID, BP neural network PID method to control the drum liquid level, compared to three control strategy simulation shows that fuzzy emulated images image, PID, BP neural network PID response speed, less response time, anti-jamming and robustness, can guarantee the stab
5、ility of the boiler liquid level.Keywords: the drum water level, PID control, fuzzy PID control, BP neural network PID control, MATLAB目录1、选题意义52、常用锅炉汽包水位方案及问题53、汽包水位控制的研究现状64、汽包水位系统的组成64.1汽包的作用74.2汽包水位系统75、汽包水位常规PID控制的仿真分析76、汽包水位神经网络PID控制的仿真分析97、汽包水位模糊PID控制的仿真分析128、常规PID、BP神经网络PID、模糊PID对锅炉水位的抗扰动仿真分析
6、178.1对锅炉汽包水位加阶跃扰动178.2对锅炉水位加白噪声扰动189、结论2010、参考文献2111、控制程序附录221、选题意义锅炉是一种既受压又直接受火的重要设备,是火力发电厂三大主机之一,而且还是轻工业生产过程中的热源和动力源,如为蒸馏、干燥蒸发等提供热能,为风机、泵类提供动力。一旦对锅炉生产操作不当,管理不善,往往会引起事故,工业锅炉中最常见的事故有:锅内缺水,锅炉超压,锅内满水,汽水共腾,炉管爆破,炉膛爆破,二次燃烧,锅炉灭火等,其中以锅炉缺水事故比例最高。这些事故中的大部分是由于锅炉水位控制不当引起的,由此可见锅炉汽包水位控制的重要性。汽包水位是机组运行的一个重要参数,它反映了
7、给水量与供汽量的动态平衡关系,保持水位在一定范围内是保证锅炉安全运行的首要条件。因为水位过高,会影响汽包内汽水分离,饱和水蒸气将带水过多,使过热器管壁结垢并损坏,同时使过热蒸汽的温度急剧下降。如果该带液蒸汽被用户用来带汽轮机,将会损坏汽轮机叶片;水位过低,由于汽包内的水量较少,而负荷很大时,水的汽化速度加快,若不及时加以控制,将使汽包内的水全部汽化,导致水冷壁烧坏,甚至引起爆炸3。因此必须对锅炉汽包水位进行严格控制。2、常用锅炉汽包水位方案及问题影响汽包水位的因素较多,主要参数是给水流量和蒸汽流量。锅炉运行中,负荷突然增大,汽包供汽量上升,致使汽包压力下降,加速了汽包内水的汽化过程,水中出现大
8、量汽泡,引起汽包水位上升。汽包中的水量非但没有增加,反而因供汽量上升而下降。这种因汽包负荷增大引起的水量减少,水位上升现象称之为“虚假水位” 1 。若采用单回路P ID控制方式控制汽包水位,出现“虚假水位”时,控制系统将会减少汽包进水流量,致使汽包中水量进一步减少。显然,单回路P ID控制方式难以适应汽包水位控制。为了克服“虚假水位”,常用的汽包水位控制系统采用双冲量或三冲量控制方式。三冲量控制系统是在单回路PID控制基础上,引入流量副回路及蒸汽流量前馈控制环节,而构成的汽包水位控制系统。三冲量分别是水位反馈信号、给水流量反馈信号和蒸汽流量前馈信号。这种系统以汽包水位、蒸汽流量和给水流量为冲量
9、来调节给水调节阀的开度,维持水位的稳定,通过对给水流量的调节,使汽包内部的物料达到动态平衡 2 。变化在允许范围之内,锅炉汽包水位对蒸气流量和给水流量变化的响应呈积极特性。但是在锅炉负荷(蒸气流量) 急剧增加时,汽包压力会因此降低,依靠炉水蓄热使蒸汽产量增加,造成所谓的“虚假水位”。如何克服“虚假水位”现象是汽包水位调节的关键。由于在不同阶段,汽包水位动态特性不断变化,使得采用单一结构和参数的三冲量控制方法达不到满意的控制效果。3、汽包水位控制的研究现状半个世纪之前,人们便对锅炉水位系统进行了许多深入的研究,采用了诸如PID控制、自适应控制、最优控制等控制方法,一直沿用到上世纪九十年代。199
10、5年,哈尔滨工程大学的夏国清等针对锅炉水位问题,提出了一种自学习模糊控制方法4,并进行仿真研究,仿真结果表明学习模糊控制有很强的抗干扰能力,另外,对汽包水位模型参数变化也不敏感。此后,越来越多的控制方法应用于汽包水位控制研究,如神经网络控制、神经网络PID控制、仿人控制等。从时间上看,汽包水位的控制经历了由传统的PID控制到更高级的智能控制的发展过程。在这个发展过程中,汽包水位的控制经历了经典控制策略到先进控制策略的发展历程。目前,国内外汽包水位控制策略采用较多的是三冲量控制、模糊控制、模糊PID控制。其中模糊控制主要是朝着智能化方向发展,表现在与神经网络、专家控制的结合,采用遗传算法对模糊控
11、制进行优化等,而自适应控制等在实际中应用的比较少5。4、汽包水位系统的组成汽包是汽水循环系统的核心环节,是锅炉水、汽系统的分界面,为负载提供蒸汽。下面对汽包水位系统的组成做了一个简单的介绍。4.1汽包的作用汽包是锅炉的主要受压部件,是汽水分离过程的核心部件,其作用主要有:(1)汽包与下降管、上升管连接组成自然循环回路,同时汽包又接受省煤器来的给水,还向过热器输送饱和蒸汽,所以汽包是锅炉内加热、蒸发、过热这三个过程的连接枢纽,保证锅炉正常的水循环;(2)汽包中装有汽水分离装置、蒸汽冲洗装置、连续排污装置、炉内加药装置等以改善蒸汽品质;(3)汽包中存有一定的水量,因而有一定的储热能力,可以缓和汽压
12、的变化速度,提高运行的安全性;(4)汽包上有压力表、水位计、事故放水、安全阀等设备,保证锅炉安全运行。4.2汽包水位系统锅炉汽包水位系统如图1所示,主要由汽包、给水调节阀、省煤器、下降管、下联箱、水冷壁和过热器组成。 图1汽包水位系统结构图给水泵送出的水经过省煤器提高温度后进入汽包,汽包中的水沿着下降管进入下联箱,再向上进入水冷壁,在水冷壁中被加热成饱和蒸汽与水的混合物一起进入汽包。在汽包内汽水混合物被分离成饱和水和饱和蒸汽,饱和水继续参与循环,饱和蒸气则由汽包上部进入过热器被进一步加热,这就是锅炉汽水循环的过程。5、汽包水位常规PID控制的仿真分析在控制领域,PID控制器是最早出现的控制器类
13、型。在控制理论和技术飞速发展的今天,虽然涌现出了许多新的控制方法,但PID仍因其结构简单、参数整定方便等优点而得到了最广泛的应用。在实际的工业过程控制系统中,95%以上的控制回路都具有PID结构6。1)连续PID控制器的最一般形式为: (5.1)2)连续PID控制器的Laplace变换形式可以写成: (5.2)根据(5.1)构造的PID控制器结构如图2所示:图2 PID控制结构其中Kp、Ki、Kd,是PID控制器三个可调参数,分别是对系统误差及其积分与微分的加权,控制器通过这样的加权计算出控制信号,驱动受控对象模型。如果控制器设计得当,则控制信号将能使得误差按减小的方向变化,以达到控制的要求。
14、3)锅炉汽包水位的传递函数为: (5.3)4)汽包水位常规PID控制系统仿真曲线图3 汽包水位的常规PID控制控制曲线PID控制器参数整定为Kp=5,Ki=0.02,Kd=3。从图3中可以看出,虽然系统输出没有超调能够达到给定值,但是系统的响应速度比较慢,调节时间较长,还需进一步改善系统的参数,来提高系统的响应速度,减少系统的调整时间。6、汽包水位神经网络PID控制的仿真分析BP神经网络结构如图4所示,由输入层、隐含层和输出层三层网络构成。图4 BP神经网络结构图输出层神经元的输出状态对应于PID控制器的三个可调参数Kp、Ki、Kd,神经网络通过自学习来调整权系数,使得神经网络的输出对应于某种
15、最优控制律下的PI控制7。这里考虑采用增量式PID控制器: (6.1)输入层的输出为: (6.2)隐含层的输入输出为: (6.3)输出层的输入输出为: (6.4)由于输出层3个神经元的输出正好对应PID的三个参数,所以 (6.5)上面几个式子中,M和Q分别为输入层和隐含层神经元的节点数,Wij和Wki分别为隐含层和输出层的加权系数,f(.)和g(.)分别为隐含层神经元和输出层神经元的激活函数。BP神经网络采用误差的反向传播来修正权值,使性能指标: 最小。按照梯度下降法可得权系数的修正算法分别为7。输出层: (6.6)隐含层: (6.7)锅炉汽包水位的传递函数为: (6.8)三层BP网络各层加权
16、系数的初值取区间-0.5,+0.5上的随机数,选定学习速率为0.09,惯性系数为0.25。1)汽包水位BP神经网络PID控制系统仿真曲线图5 汽包水位的神经网络PID控制控制曲线2)汽包水位常规PID控制与BP神经网络PID控制仿真曲线图6 汽包水位的常规PID控制与BP神经网络PID控制仿真曲线从图5、图6的仿真曲线可以看出,神经网络PID的响应速度比常规PID控制要快,而且系统的调整时间很短,能很快达到给定值,系统输出没有超调,并且误差减小的速度也比常规PID快,因此说明神经网络PID的控制效果要优于常规PID控制。7、汽包水位模糊PID控制的仿真分析模糊PID控制器打破传统PID控制器三
17、个参数Kp,Ki,Kd,一旦整定便固定的控制思想,提出了可以根据跟踪误差信号等信息改变PID控制器参数的方法,利用模糊控制规则在线对PID参数进行修改,这就构成了模糊PID控制器8。模糊PID控制系统结构图如图7所示。 图7 模糊自适应控制系统结构锅炉汽包传递函数为: (7.1)将系统误差e和误差变化率ec变化范围定义为模糊集上的论域,即e/ec=-5,-4,-3,-2,-1,0,1,2,3,4,5,其模糊子集为e/ec=NB,NM,NS,ZO,PS,PM,PB控制系统按照如下公式实现PID参数自调整: (7.2)表1 Kp的模糊规则e/ecNBNMNSZOPSPMPBNBPBPBPMPMPS
18、ZOZONMPBPBPMPSPSZONSNSPMPMPMPSZONSNSZOPMPMPSZONSNMNMPSPSPSZONSNSNMNMPMPSZONSNMNMNMNBPBZOZONMNMNMNBNB表2 Ki的模糊规则e/ecNBNMNSZOPSPMPBNBNBNBNMNMNSZOZONMNBNBNMNSNSZOZONSNBNMNSNSZOPSPSZONMNMNSZOPSPMPMPSNMNSZOPSPSPMPBPMZOZOPSPSPMPBPBPBZOZOPSPMPMPBPB表3 Kd的模糊规则e/ecNBNMNSZOPSPMPBNBPSNSNBNBNBNMPSNMPSNSNBNMNMNSZO
19、NSZONSNMNMNSNSZOZOZONSNSNSNSNSZOPSZOZOZOZOZOZOZOPMPBNSPSPSPSPSPBPBPBPMPMPMPSPSPB在线运行过程中,控制系统通过对模糊规则的结果处理、查表和运算,完成对PID参数的在线调整。1)汽包水位模糊PID控制系统仿真曲线图8 汽包水位的模糊PID控制控制曲线2) 汽包水位常规PID控制与模糊PID控制仿真曲线图9 汽包水位常规PID控制与模糊PID控制仿真曲线3) 汽包水位模糊PID控制与BP神经网络PID控制仿真曲线图10 汽包水位模糊PID控制与BP神经网络PID控制仿真曲线4) 汽包水位常规PID控制、模糊PID控制、B
20、P神经网络PID控制的仿真曲线图11 汽包水位常规PID控制、模糊PID控制、BP神经网络PID控制的仿真曲线从图9、图10、图11的仿真曲线可以看出,神经网络PID和模糊PID的响应速度比常规PID控制快,而且系统的调整时间很短,没有超调。神经网络PID与模糊PID的控制效果相同,都能在极短的时间内,消除偏差,快速地克服偏差的影响,改善了系统动态特性,因此说明神经网络PID和模糊PID对锅炉汽包水位的控制效果要优于常规PID控制。8、常规PID、BP神经网络PID、模糊PID对锅炉水位的抗扰动仿真分析8.1对锅炉汽包水位加阶跃扰动1) 常规PID与模糊PID的抗干扰控制曲线 图12 常规PI
21、D与模糊PID的抗扰控制曲线2) 常规PID与BP神经网络PID的抗干扰控制曲线图13 常规PID与BP神经网络PID的抗扰控制曲线通过对比图12和图13的仿真曲线,可以看到常规PID的抗阶跃扰动的速度要慢于BP神经网络PID和模糊PID,而且调整时间也长,因此说明BP神经网络PID和模糊PID对锅炉汽包水位的抗干阶跃扰动要优于常规PID控制。8.2对锅炉水位加白噪声扰动对锅炉汽包水位加方差为0.05的白噪声干扰,图14为常规PID和BP神经网络PID的控制效果对比,图15为常规PID和模糊PID控制效果对比。1) 常规PID与BP神经网络PID的抗干扰控制曲线 图14 常规PID和BP神经网
22、络PID抗扰动控制效果2) 常规PID与模糊PID的抗干扰控制曲线 图15 常规PID和模糊PID抗扰动控制效果从图14和图15的仿真曲线可以看到,常规PID虽然能克服汽包水位的干扰,但是其反应速度不如BP神经网络PID和模糊PID快,而且抗干扰的调整时间也长。因此说明BP神经网络PID和模糊PID对锅炉汽包水位控制的抗干扰性要优于常规PID控制。9、结论通过对比常规PID、模糊PID和BP神经网络PID方法去控制汽包液位的仿真曲线,表明模糊PID、BP神经网络PID的响应速度快,调整时间少,抗干扰能力和鲁棒性更好,可以保证锅炉汽包水位的稳定。所以本文提出了采用BP神经网络PID、模糊PID控
23、制锅炉汽包水位是可行的,控制系统对生产负荷的变化具有一定的自适应能力,提高了系统的工作效率,其控制效果较为理想。10、参考文献1张松兰,何坚强,李先锋.锅炉汽包水位控制策略研究J.自动化与仪器仪表,2008(6):1-32王晋一.自然循环锅炉汽包水位的变化及控制J.东北电力技术,2003(10):32-343陈鸿伟,许振宇,杨博,李丰,顾舒.锅炉汽包水位影响因素分析J.电站系统工程,2007,23(2):32-334夏国清,付明玉,边信黔,林孝工.自学习模糊控制器在锅炉水位控制中的应用J.船舶工程,1995,(6):48-505周佳,曹小玲,刘永文.锅炉汽包水位控制策略的现状分析J.锅炉技术,
24、2005,36(3):5-106吴伟,晏梦云,魏航信.基于神经网络的PID控制及其仿真J.现代电子技术,2009,(10):143-1457李广军,张晶,曾安平.基于BP神经网络的PID控制器研究J.计算机仿真,2009,26(9):128-1318孙丰雷,隋江华,张文孝.船用锅炉水位模糊自适应PID控制仿真J.中国水运,2009,9(11):100-10111、控制程序附录注:将原来的锅炉汽包水位转换为离散模型进行仿真,采样周期为20,模型为: y(k)=0.5134*y_1+0.0146*u_11)常规PID对水箱液位的控制程序ts=20;u_1=0;u_2=0;u_3=0;u_4=0;y
25、_1=0;y_2=0;y_3=0;y_4=0;error_1=0;error_2=0;ei=0;for k=1:1:2000 time(k)=k*ts; yout(k)=0.5134*y_1+0.0146*u_1; rin(k)=10; error(k)=rin(k)-yout(k); ei=ei+error(k)*ts; kp=7;ki=0.02;kd=3; u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei; u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_4=y_3;y_3=y_2;y_2=y_1;y_1=yout(k)
26、; error_2=error_1; error_1=error(k);endfigure(1); subplot(211); plot(rin,r);hold on;plot(yout,b:);axis(0 2000 0 15);xlabel(步数);ylabel(液位给定r及输出y); legend(液位给定,常规PID);subplot(212); plot(error,g); xlabel(步数);ylabel(误差e(k));legend(误差);2) BP神经网络PIDclear all; close all;xite=0.09; alfa=0.25; err_goal=0.001
27、;IN=4;m=6;Out=3; %NN Structure wi=0.5*rands(m,IN);%输入权值wi1=wi;wi2=wi; wi3=wi; wo=0.5*rands(Out,m);%输出权值 wo1=wo;wo2=wo;wo3=wo; u1=0;u2=0;u3=0;u4=0;u5=0; y1=0;y2=0;y3=0; Oh=zeros(m,1); %Output from NN middle layer I=Oh; %Input to NN middle layer e2=0;e1=0; for k=1:1:2000 r(k)=10; yout(k)=0.5134*y1+0.0
28、146*u1; e(k)=r(k)-yout(k); xi=r(k),yout(k),e(k),u1;%网络输入 x(1)=e(k)-e1; x(2)=e(k); x(3)=e(k)-2*e1+e2; epid=x(1);x(2);x(3); I=xi*wi; for j=1:1:m Oh(j)=(exp(I(j)-exp(-I(j)/(exp(I(j)+exp(-I(j); end K=wo*Oh; %Output Layer for l=1:1:Out K(l)=exp(K(l)/(exp(K(l)+exp(-K(l); %Getting kp,ki,kd end kp(k)=K(1);k
29、i(k)=K(2);kd(k)=K(3); Kpid=kp(k),ki(k),kd(k); du(k)=Kpid*epid; u(k)=u1+du(k); dyu(k)=sign(yout(k)-y1)/(u(k)-u1+0.0001); %Output layer for j=1:1:Out dK(j)=2/(exp(K(j)+exp(-K(j)2; end for l=1:1:Out delta3(l)=e(k)*dyu(k)*epid(l)*dK(l); end for l=1:1:Out for i=1:1:m dwo=xite*delta3(l)*Oh(i)-alfa*(wo1-wo
30、2); end end wo=wo1+dwo-alfa*(wo1-wo2); %Hidden layer for i=1:1:m dO(i)=4/(exp(I(i)+exp(-I(i)2; end segma=delta3*wo; for i=1:1:m delta2(i)=dO(i)*segma(i); end dwi=xite*delta2*xi; wi=wi1+dwi-alfa*(wi1-wi2); %Parameters Update u5=u4;u4=u3;u3=u2;u2=u1;u1=u(k); y3=y2;y2=y1;y1=yout(k); wo3=wo2; wo2=wo1; w
31、o1=wo; wi3=wi2; wi2=wi1; wi1=wi; e2=e1; e1=e(k);end figure(1); subplot(211); plot(r,r);hold on;plot(yout,b:);axis(0 2000 0 15);xlabel(步数);ylabel(液位给定r及输出y); legend(液位给定,BP神经网络PID);subplot(212); plot(e,g); xlabel(步数);ylabel(误差e(k));legend(误差);3)模糊PIDclear all; a=newfis(fuzzpid); a=addvar(a,input,e,-3
32、,3); a=addmf(a,input,1,NB,zmf,-3,-1); a=addmf(a,input,1,NM,trimf,-3,-2,0); a=addmf(a,input,1,NS,trimf,-3,-1,1); a=addmf(a,input,1,Z,trimf,-2,0,2); a=addmf(a,input,1,PB,trimf,-1,1,3); a=addmf(a,input,1,PM,trimf,0,2,3); a=addmf(a,input,1,PB,smf,1,3); a=addvar(a,input,ec,-3,3); a=addmf(a,input,2,NB,zmf
33、,-3,-1); a=addmf(a,input,2,NM,trimf,-3,-2,0); a=addmf(a,input,2,NS,trimf,-3,-1,1); a=addmf(a,input,2,Z,trimf,-2,0,2); a=addmf(a,input,2,PB,trimf,-1,1,3); a=addmf(a,input,2,PM,trimf,0,2,3); a=addmf(a,input,2,PB,smf,1,3); a=addvar(a,output,kp,-0.3,0.3); a=addmf(a,output,1,NB,zmf,-0.3,-0.1); a=addmf(a,
34、output,1,NM,trimf,-0.3,-0.2,0); a=addmf(a,output,1,NS,trimf,-0.3,-0.1,0.1); a=addmf(a,output,1,Z,trimf,-0.2,0,0.2); a=addmf(a,output,1,PB,trimf,-0.1,0.1,0.3); a=addmf(a,output,1,PM,trimf,0,0.2,0.3); a=addmf(a,output,1,PB,smf,0.1,0.3); a=addvar(a,output,ki,-0.06,0.06); a=addmf(a,output,2,NB,zmf,-0.06
35、,-0.02); a=addmf(a,output,2,NM,trimf,-0.06,-0.04,0); a=addmf(a,output,2,NS,trimf,-0.06,-0.02,0.02); a=addmf(a,output,2,Z,trimf,-0.04,0,0.04); a=addmf(a,output,2,PB,trimf,-0.02,0.02,0.06); a=addmf(a,output,2,PM,trimf,0,0.04,0.06); a=addmf(a,output,2,PB,smf,0.02,0.06); a=addvar(a,output,kd,-3,3); a=ad
36、dmf(a,output,3,NB,zmf,-3,-1); a=addmf(a,output,3,NM,trimf,-3,-2,0); a=addmf(a,output,3,NS,trimf,-3,-1,1); a=addmf(a,output,3,Z,trimf,-2,0,2); a=addmf(a,output,3,PB,trimf,-1,1,3); a=addmf(a,output,3,PM,trimf,0,2,3); a=addmf(a,output,3,PB,smf,1,3); rulelist=1 1 7 1 5 1 1;1 2 7 1 3 1 1;1 3 6 2 1 1 1;1
37、4 5 2 1 1 1;1 5 5 3 1 1 1;1 6 4 4 2 1 1;1 7 4 4 5 1 1; 2 1 7 1 5 1 1;2 2 7 1 3 1 1;2 3 6 2 1 1 1;2 4 5 3 2 1 1;2 5 5 3 2 1 1;2 6 4 4 3 1 1;2 7 3 4 4 1 1; 3 1 6 1 4 1 1;3 2 6 2 3 1 1;3 3 6 3 2 1 1;3 4 5 3 2 1 1;3 5 4 4 3 1 1;3 6 3 5 3 1 1;3 7 3 5 4 1 1; 4 1 6 2 4 1 1;4 2 6 2 3 1 1;4 3 5 3 3 1 1;4 4 4
38、 4 3 1 1;4 5 3 5 3 1 1;4 6 2 6 3 1 1;4 7 2 6 4 1 1; 5 1 5 2 4 1 1;5 2 5 3 4 1 1;5 3 4 4 4 1 1;5 4 3 5 4 1 1;5 5 3 5 4 1 1;5 6 2 6 4 1 1;5 7 2 7 4 1 1; 6 1 5 4 7 1 1;6 2 4 4 5 1 1;6 3 3 5 5 1 1;6 4 2 5 5 1 1;6 5 2 6 5 1 1;6 6 2 7 5 1 1;6 7 1 7 7 1 1; 7 1 4 4 7 1 1;7 2 4 4 6 1 1;7 3 2 5 6 1 1;7 4 2 6
39、6 1 1;7 5 2 6 5 1 1;7 6 1 7 5 1 1;7 7 1 7 7 1 1; a=addrule(a,rulelist); a=setfis(a,DefuzzMethod,centroid); writefis(a,fuzzpid); a=readfis(fuzzpid); %PID Controller u_1=0.0;y_1=0.0;x=0,0,0; error_1=0; e_1=0.0;ec_1=0.0; kp0=10; kd0=0.05; ki0=1; for k=1:1:2000 r(k)=10; k_pid=evalfis(e_1,ec_1,a); kp(k)=
40、kp0+k_pid(1); ki(k)=ki0+k_pid(2); kd(k)=kd0+k_pid(3); u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3); y(k)=0.5134*y_1+0.0146*u_1; error(k)=r(k)-y(k); u_2=u_1;u_1=u(k); y_1=y(k); x(1)=error(k); %Calculating P x(2)=error(k)-error_1;%Calculating D x(3)=x(3)+error(k); %Calculation I e_1=x(1); ec_1=x(2); error_2=error_1; error_1=error(k); end figure(1); subplot(211); plot(r,r);hold on;plot(y,b:);axis(0 2000 0 15);xlabel(步数);ylabel(液位给定r及输出y); legend(液位给定,模糊PID);subplot(212); plot(error,g); xlabel(步数);ylabel(误差e(k));legend(误差);25
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922