加热炉燃烧模糊控制系统的设计与应用.docx
《加热炉燃烧模糊控制系统的设计与应用.docx》由会员分享,可在线阅读,更多相关《加热炉燃烧模糊控制系统的设计与应用.docx(17页珍藏版)》请在冰豆网上搜索。
![加热炉燃烧模糊控制系统的设计与应用.docx](https://file1.bdocx.com/fileroot1/2022-12/7/898fa162-8cb7-4c57-9d9e-7e9c73ef34c3/898fa162-8cb7-4c57-9d9e-7e9c73ef34c31.gif)
加热炉燃烧模糊控制系统的设计与应用
加热炉燃烧模糊控制系统的设计与应用
(电控学院测控0902班李园0906070204)
摘要:
针对加热炉煤气,空气流量计的不准确,煤气发热值不真实等各种现状,设计一种基于专家经验的模糊控制程序,通过调节煤气空气调节阀,烟道闸板阀的开度来控制加热温度,并把加热温度稳定在尽可能小的设定值+20℃之内,达到均匀加热,降低燃耗和氧化烧损、减少待温时间和提高产能的目的。
关键词:
加热炉燃烧模糊控制
Thefuzzycontrolsystemdesignandapplicationheatingfurnaceburning
(ElectricalandcontrolengineeringAcademy
Measurementandcontroltechnologyinclass0902
LiYuan0906070204)
Abstract:
Accordingtothevariouskindsofpresentsituationthatisinaccuracyoftheheatingfurnaceandtheairflowandgascalorificvalueisnotrealandsoon,wedesignakindoffuzzycontrolbasedonexpertexperienceprogram,whichcontrolthetemperatureoftheheatingandsteadyingthetemperatureofheatingassmallaspossibleinthesettingvaluewithin+20℃throughadjustingthegasairregulatorandthefluedampervalve’sopeningtoheatevenly,reducefuelconsumptionloseoxygenation,spendlesstimeandincreasetemperaturecapacity.
Keywords:
theheatingfurnaceburning;fuzzycontrol
1模糊控制的简介
1.1模糊控制原理
1.1.1模糊控制的产生
在自动控制技术产生之前,人们在生产过程中只能采用手动控制方式。
手动控制过程分别是由人的眼-脑-手来完成的。
后来,由于科学技术的进步,人们逐渐采用各种测量装置(如传感器)代替人眼,完成对被控制量的观测任务;利用各种控制器(如PID调节器)取代人脑的作用,实现比较、综合被控制量与给定量之间的偏差,控制器所给出的输出信号相当于手动控制过程中人脑的决策;使用各种执行机构(如电动机)对被控对象施加某种控制作用,这就起到了手动控制中手的调整作用。
上述由测量装置、控制器、被控对象及执行机构组成的自动测控系统,就是人们所熟知的常规负反馈控制系统。
常规控制首先要建立精确数学模型,但是对一些复杂的工业过程,建立精确的数学模型是非常困难的,或者是根本不可能的。
于是常规控制技术在这里就遇到了不可逾越的障碍。
但是,熟练的技术操作人员,通过感官系统进行现场观察,再根据自己的经验就能很容易地实现这类控制过程,于是就产生了一个问题,能否把人的操作经验总结为若干条控制规则,并设计一个装置去执行这些规则,从而对系统进行有效的控制呢?
答案是肯定的。
这种装置就是模糊控制器。
与传统的PID控制相比,模糊控制有其明显的优越性:
1.由于模糊控制实质上是用计算机去执行操作人员的控制策略,因而可以避开复杂的数学模型。
2.对于非线性,大滞后及带有随机干扰的复杂工业对象,由于数学模型难以建立,因而传统的PID控制也就失效,而对这样的系统,设计一个模糊控制器,却没有多大困难。
实践结果表明,在两种系统均调到最佳状态下,当工作条件大幅度变化时,经典的PID控制难以进行调整,而模糊控制对过程参数改变不灵敏,在所有工作所有工作点上都能做到较稳定的控制,这说明模糊控制本质上是非线性的,并且对于对象的参数变化适应性强,即所谓的“鲁棒性”较好。
1.1.2模糊控制系统的组成
模糊控制属于计算机数字控制的一种形式,通常由5个部分组成,其系统框图如图6-17所示。
1.1.3模糊控制器的组成及各部分的工作原理
模糊控制器主要包括输入量模糊化接口、知识库、推理机、输出清晰化接口四个部分,如图6-18所示。
1)模糊化接口
模糊控制器的输入变量(通常为偏差和偏差的变化率)的实际变化范围叫做这些变量的基本论域,显然基本论域内的量为精确量,当计算机实现模糊控制算法进行模糊控制时,每次采样得到的被控制量需经计算机计算,以便得到模糊控制器的输入变量。
为了进行模糊化处理,必须将输入变量从基本论域转换到相应的模糊集论域。
设输入变量的基本论域为[-x,x],输入变量的模糊集论域为{-n,-n+1,…,0,…,n-1,n},即可以给出精确量模糊化的量化因子
k=n/x(6-43)
把输入变量乘以量化因子,就能实现输入变量从基本论域到模糊集论域的转换。
通常,习惯上把输入变量的模糊集论域设定为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},把在这区间的连续量模糊化为7档:
“正大”(PB)——多数取+6附近;
“正中”(PM)——多数取+4附近;
“正小”(PS)——多数取+2附近;
“零”(0)——多数取0附近;
“负小”(NS)——多数取-2附近;
“负中”(NM)——多数取-4附近;
“负大”(NB)——多数取-6附近。
这7档对应着7个模糊子集
2)知识库
①数据库:
存放所有输入输出变量的全部模糊子集的隶属度矢量值,若论域为连续域,则为隶属度函数。
对于以上例子,须将表6-7中内容存放于数据库,在规则推理的模糊关系方程求解过程中,向推理机提供数据。
②规则库:
用来存放全部模糊控制规则,在推理时为“推理机”提供控制规则。
模糊控制器的规则是基于专家知识或手动操作熟练人员长期积累的经验,它是按人的直觉推理的一种语言表示形式。
模糊规则通常由一系列的关系词连接而成,如if—then,else,also,end,or等,关系词必须经过“翻译”才能将模糊规则数值化。
3)推理机
推理机在模糊控制器中的功能是:
根据输入的模糊量和知识库(数据库、规则库)完成模糊推理,并求解模糊关系方程,从而获得模糊控制量。
例如,若已知偏差E和偏差的变化率EC的模糊集,则控制量的模糊集U可由模糊推理的合成算法获得,即式中,×—模糊直积运算;·—模糊合成运算;—模糊关系。
4)清晰化接口
通过推理机进行模糊决策所得到的输出是模糊量,而被控对象只能接受一个控制量,因此要进行控制必须经过清晰化接口将模糊量转换为精确量。
将模糊量转换为精确量通常采用以下三种方法:
①最大隶属度判决法:
若对应的模糊决策的模糊集中,元素u*∈U,且满足
则取u*(精确量)作为输出控制量。
u*就是该模糊子集中隶属度最大的那个元素。
如果这样的隶属度最大点u*不唯一,就取它们的平均值作为执行量。
②加权平均判决法:
该方法的输出量u*的值由下式来决定
③取中位数法:
在最大隶属度判决法中,只考虑了最大隶属数,而忽略了其它信息的影响。
中位数判决法是将隶属函数曲线与横坐标所围成的面积平均分成两部分,以分界点所对应的论域元素作为判决输出。
2加热温度模糊控制设计原理和过程
2.1基本原理:
总结专家技术人员及优秀操作工人的现场经验;参照模糊控制结构选取误差及误差变化率作为输入,这样既可克服一维模糊控制动态性能欠佳的不足,又能避免由于维数过高而使控制规则过于复杂,实现较困难的缺点;在上述基础上将误差、误差变化率的模糊量经合成算法,推得模糊规则表;模糊控制规则自适应修正。
加热温度设三档来控制,均热段分别是1250±10℃、1230±10℃、1210±10℃;加热段分别是1230±10℃、1190±10℃、1150±10℃,预热段暂不作特定要求,档位的选择由毛轧主电机实际电流作为主要依据,若电流在额定电流范围内,则尽可能选择较低温度档位,若因炉膛压力过高而引起炉尾冒火,则也应选择低温档位。
2.2系统的模糊设计
以均热段为例:
冷风阀和煤气调节阀,err_T=pv-sv,简写为E,误差变化率表示为EC。
温度的控制精度目标为±10℃。
E模糊变量的集合范围为{NB,NM,NS,ZO,PS,PM,PB};EC模糊变量的集合范围为{NB,NS,ZO,PS,PB}。
据现场所采集的数据,发现三段的温度变化曲线不完全相同,所以分别定义E,EC的取值范围。
分析发现均热段的温度曲线较其它两段平稳,采样控制周期暂定为10s。
根据温度的控制精度目标为±10℃,均热段E模糊变量各变量的取值为:
E≤-7.5℃∈NB;-7.5℃<E≤-5℃∈NM;-5℃<E-2.5℃∈NS;-2.5℃<E≤2.5℃∈ZO;2.5℃<E≤5℃∈PS;5℃<E≤7.5℃∈PM;7.5℃<E∈PB。
根据现场所收集的均热段数据ECmin=-0.49℃/s,ECmax=0.79℃/s.均热段EC模糊变量各变量的取值为:
EC≤-0.28∈NB;-0.28<EC≤-0.06∈NS;-0.06<EC≤0.36∈ZO;0.36<EC≤0.58∈PS;0.58<EC∈PB。
煤气阀门控制△U模糊变量的集合范围为{NB,NM,NS,ZO,PS,PM,PB},对应的阀门变化开度为{-3%,-2%,-1%,0%,1%,2%,3%}。
温度模糊控制规则如表一所示
表一温度模糊控制表
EC
△U
E
NB
NS
Z0
PS
PB
NB
PB
PB
PB
PM
PS
NM
PB
PB
PM
PS
Z0
NS
PB
PM
PS
Z0
NS
Z0
PM
PS
Z0
NS
NM
PS
PS
Z0
NS
NM
NB
PM
Z0
NS
NM
NB
NB
PB
NS
NM
NB
NB
NB
设计一个模糊器,满足如下条件:
输入误差E:
-7.5-7.5范围内分为7个论域:
NBNMNSZ0PSPMPB;隶属度函数满足高斯分布;输入误差变化率Ec:
-0.28-0.58范围内分为5个论域:
NBNSZ0PSPB;隶属度函数满足高斯分布;模糊推理过程:
output=(输入隶属度函数值+输入误差的隶属度函数值)/2*输出论域的中心值。
控制规则:
%%iferrorinputisNBanderrorinputrateisNB,thenoutputisPB;
%%iferrorinputisNBanderrorinputrateisNS,thenoutputisPB;
%%iferrorinputisNBanderrorinputrateisZ0,thenoutputisPB;
%%iferrorinputisNBanderrorinputrateisPS,thenoutputisPM;
%%iferrorinputisNBanderrorinputrateisPB,thenoutputisPS;
%%iferrorinputisNManderrorinputrateisNB,thenoutputisPB;
%%iferrorinputisNManderrorinputrateisNS,thenoutputisPB;
%%iferrorinputisNManderrorinputrateisZ0,thenoutputisPM;
%%iferrorinputisNManderrorinputrateisPS,thenoutputisPS;
%%iferrorinputisNManderrorinputrateisPB,thenoutputisZ0;
%%iferrorinputisNSanderrorinputrateisNB,thenoutputisPB;
%%iferrorinputisNSanderrorinputrateisNS,thenoutputisPM;
%%iferrorinputisNSanderrorinputrateisZ0,thenoutputisPS;
%%iferrorinputisNSanderrorinputrateisPS,thenoutputisZ0;
%%iferrorinputisNSanderrorinputrateisPB,thenoutputisNS;
%%iferrorinputisZ0anderrorinputrateisNB,thenoutputisPM;
%%iferrorinputisZ0anderrorinputrateisNS,thenoutputisPS;
%%iferrorinputisZ0anderrorinputrateisZ0,thenoutputisZ0;
%%iferrorinputisZ0anderrorinputrateisPS,thenoutputisNS;
%%iferrorinputisZ0anderrorinputrateisPB,thenoutputisNM;
%%iferrorinputisPSanderrorinputrateisNB,thenoutputisPS;
%%iferrorinputisPSanderrorinputrateisNS,thenoutputisZ0;
%%iferrorinputisPSanderrorinputrateisZ0,thenoutputisNS;
%%iferrorinputisPSanderrorinputrateisPS,thenoutputisNM;
%%iferrorinputisPSanderrorinputrateisPB,thenoutputisNB;
%%iferrorinputisPManderrorinputrateisNB,thenoutputisZ0;
%%iferrorinputisPManderrorinputrateisNS,thenoutputisNS;
%%iferrorinputisPManderrorinputrateisZ0,thenoutputisNM;
%%iferrorinputisPManderrorinputrateisPS,thenoutputisNB;
%%iferrorinputisPManderrorinputrateisPB,thenoutputisNB;
%%iferrorinputisPBanderrorinputrateisNB,thenoutputisNS;
%%iferrorinputisPBanderrorinputrateisNS,thenoutputisNM;
%%iferrorinputisPBanderrorinputrateisZ0,thenoutputisNB;
%%iferrorinputisPBanderrorinputrateisPS,thenoutputisNB;
%%iferrorinputisPBanderrorinputrateisPB,thenoutputisNB;
1.输入误差为:
程序为:
x1=(-7.5:
0.1:
7.5)';
y0=gaussmf(x1,[1-7.5]);
y1=gaussmf(x1,[1-5]);
y2=gaussmf(x1,[1-2.5]);
y3=gaussmf(x1,[10]);
y4=gaussmf(x1,[12.5]);
y5=gaussmf(x1,[15]);
y6=gaussmf(x1,[17.5]);
plot(x1,[y0y1y2y3y4y5y6]);
2.输入误差的变化率为:
程序为:
X2=(-0.28:
0.1:
0.58)';
y0=gaussmf(x2,[0.5-0.28]);
y1=gaussmf(x2,[0.5-0.06]);
y2=gaussmf(x2,[0.50.15]);
y3=gaussmf(x2,[0.50.36]);
y4=gaussmf(x2,[0.50.58]);
plot(x2,[y0y1y2y3y4]);
3.程序为:
x1=-7.5;
x2=-0.28;
%defineinputtypeinfuzzyzone
y0=gaussmf(x1,[1-7.5]);
y1=gaussmf(x1,[1-5]);
y2=gaussmf(x1,[1-2.5]);
y3=gaussmf(x1,[10]);
y4=gaussmf(x1,[12.5]);
y5=gaussmf(x1,[15]);
y6=gaussmf(x1,[17.5]);
a=[y0y1y2y3y4y5y6];
b=max(a);
%caculateinputinfuzzyzone,getinput_typeandinput_authorityvalue
ifx1<=7.5&x1>=-7.5
ifb==a
(1)
type='NB';
authorityvalue=y0;
elseifb==a
(2)
type='NM';
authorityvalue=y1;
elseifb==a(3)
type='NS';
authorityvalue=y2;
elseifb==a(4)
type='Z0';
authorityvalue=y3;
elseifb==a(5)
type='PS';
authorityvalue=y4;
elseifb==a(6)
type='PM';
authorityvalue=y5;
elseifb==a(7)
type='PB';
authorityvalue=y6;
end
else
ifx1>7.5
type='PB';
authorityvalue=1;
elseifx1<-7.5
type='NB';
authorityvalue=1;
end
end
type
authorityvalue
%errorcalculate.
ey0=gaussmf(x2,[0.5-0.28]);
ey1=gaussmf(x2,[0.5-0.06]);
ey2=gaussmf(x2,[0.50.15]);
ey3=gaussmf(x2,[0.50.36]);
ey4=gaussmf(x2,[0.50.58]);
a=[ey0ey1ey2ey3ey4];
b=max(a);
%caculateinputinfuzzyzone,getinput_typeandinput_authorityvalue
ifx2<=0.58&x2>=-0.28
ifb==a
(1)
etype='NB';
eauthorityvalue=y0;
elseifb==a
(2)
etype='NS';
eauthorityvalue=y1;
elseifb==a(3)
etype='Z0';
eauthorityvalue=y2;
elseifb==a(4)
etype='PS';
eauthorityvalue=y3;
elseifb==a(5)
etype='PB';
eauthorityvalue=y4;
end
else
ifx2>0.58
etype='PB';
eauthorityvalue=1;
elseifx2<-0.28
etype='NB';
eauthorityvalue=1;
end
end
etype
eauthorityvalue
%caculateoutputby
iftype=='NB'&etype=='NB'
out=(authorityvalue+eauthorityvalue)/2*(0.03);
%ifinputisNBanderrorinputisNB,thenoutputisPB;
elseiftype=='NB'&etype=='NS'
out=(authorityvalue+eauthorityvalue)/2*(0.03);
%ifinputisNBanderrorinputisNS,thenoutputisPB;
elseiftype=='NB'&etype=='Z0'
out=(authorityvalue+eauthorityvalue)/2*(0.03);
%ifinputisNBanderrorinputisZ0,thenoutputisPB;
elseiftype=='NB'&etype=='PS'
out=(authorityvalue+eauthorityvalue)/2*0.02;
%ifinputisNBanderrorinputisPS,thenoutputisPM;
elseiftype=='NB'&etype=='PB'
out=(authorityvalue+eauthorityvalue)/2*0.01;
%ifinputisNBanderrorinputisPB,thenoutputisPS;
elseifty