本科毕业设计 智能PID控制及其在温控系统中的应用_第1页
本科毕业设计 智能PID控制及其在温控系统中的应用_第2页
本科毕业设计 智能PID控制及其在温控系统中的应用_第3页
本科毕业设计 智能PID控制及其在温控系统中的应用_第4页
本科毕业设计 智能PID控制及其在温控系统中的应用_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业论文题目:智能PID控制及其在温控系统中的应用姓名:郑俊达学院:信息科学与技术学院系:电子工程系专业:电子信息工程年级:2005级学号:22220051204132指导教师(校内):杨涛职称:教授指导教师(校外):无职称:2009年5月28日智能PID控制器及其在原油井筒加热电源温度控制中的应用仿真研究摘要本文主要研究PID控制器的控制原理,模糊PID和动词PID控制器作为智能PID控制器,各有其特点。选择原油井筒加热电源作为控制对象,用Matlab仿真工具Simulink以及Matlab程序语言对各种PID控制进行仿真,对仿真结果进行比较分析。关键词PID控制器模糊PID控制计算动词PID控制温度控制系统Simulink仿真Matlab程序语言仿真IIntelligentPIDcontrollersandresearchontheSimulationoftheirapplicationstothetemperaturecontrolofoilcanisterheaterAbstractThisarticlefocusesonPIDcontroller,fuzzyPIDcontrollerandcomputationalverbPIDcontrolleraretwodifferentkindsofintelligentPIDcontrollers,bothofthemshowsomecharacteristics.Inthispaper,thecontrolplantwaschosenasanoilcanister,ofwhichthetemperaturewascontrolled.SimulationswereperformedbasedontwodifferentkindsofPIDcontrollers,byusingMatlabtoolSimulink,andMatlabprogramlanguage.ThesimulationresultsofdifferentkindsofPIDcontrollerswerecompared.KeyWordsPIDcontroller,fuzzyPIDcontrol,computationalverbPIDcontrol,temperature-control-system,SimulinkSimulation,MatlabprogramlanguageII目录摘要······································································································IAbstract·······································································································II引言······································································································VI1PID控制器··································································································11.1PID控制器的概念[1]··············································································11.1.1PID控制原理··············································································11.1.2PID三个环节的作用·····································································11.2PID控制器的种类················································································21.2.1传统PID控制器···········································································21.2.2智能PID控制器···········································································22模糊PID控制器····························································································32.1模糊控制规则[1]···················································································32.1.1控制原理···················································································32.1.2模糊规则···················································································32.2模糊控制规则的实现············································································42.2.1隶属度[1]···················································································42.2.2模糊推理[2]················································································52.3在Matlab中建立模糊判决器···································································62.3.1用FISEditor建立模糊判决器[3]·······················································62.3.2用Matlab程序生成模糊判决器[1]·····················································72.3.3模糊判决器的使用·······································································93动词PID控制器····························································································103.1动词控制规则·····················································································103.1.1模糊规则的动词化·······································································103.1.2动词规则[4]················································································103.2动词相似度························································································113.2.1基于进化函数的动词相似度的计算[4]···············································113.2.2简化的动词相似度[5]····································································12III厦门大学本科毕业设计(论文3.3动词控制规则的实现[4]··········································································144用Simulink进行PID控制仿真··········································································154.1采油油管加热电源简介[6]·······································································154.1.1背景·························································································154.1.2系统函数···················································································154.2Simulink简介[3]····················································································154.3传统PID控制Simulink仿真·····································································154.3.1建立系统模型·············································································154.3.2调试过程及结果··········································································164.4模糊PID控制Simulink仿真·····································································174.4.1建立系统模型·············································································174.4.2调试·························································································184.5关于动词PID控制Simulink仿真的一点说明················································184.6本章小结···························································································195用Matlab编写程序进行各种PID控制仿真···························································205.1仿真程序流程图··················································································205.2关键环节的算法··················································································215.2.1ode45求解微分方程[7]··································································215.2.2对延时的近似处理·······································································215.3传统PID控制仿真················································································225.3.1调整过程及结果··········································································225.3.2关于两种不同仿真方法的说明························································225.4模糊PID控制仿真················································································235.4.1模糊推理源代码分析····································································235.4.2参数调整及仿真结果····································································245.5动词PID控制仿真················································································255.5.1基于进化函数求相似度的动词PID控制的仿真调试······························255.5.2基于简化的动词相似度的控制仿真调试············································275.6小结·································································································29结论······································································································30致谢······································································································31IV参考文献····································································································32引言PID控制器以其结构简单、稳定性好、工作可靠、调整方便等优点被广泛应用于工业控制系统,但现代工业控制系统越来越复杂,被控对象往往表现出时滞、非线性、时变性,控制要求越来越高,传统的PID控制器难以满足现代工业控制的需求,智能型PID控制器呈现出广阔的发展空间。模糊PID控制器是模糊控制器和PID控制器的有效结合,它兼具模糊控制和PID控制的优点;动词PID控制器是在模糊PID控制器的基础上实现了控制规则“动词化”,对模糊PID控制进行了一些改进。目前动词PID控制器用于实际的工业控制系统还不多,本文的研究也仅处于软件仿真阶段。1PID控制器图1.1:PID控制器1.1PID控制器的概念[1]1.1.1PID控制原理PID控制器是一种线性闭环控制器,它根据给定输入值rin(t与实际输出值yout(t构成控制偏差error(t=rin(t−yout(t(1.1PID的控制信号u(t由errot(t及其对时间的积分、微分三部分联合作用产生:u(t=kp(error(t+1T1t0errot(tdt+TDderrot(tdt=kp(error(t+kit0errot(tdt+kdderrot(tdt(1.2PID控制器最终理想的控制效果是errot(t=0,即yout(t=rin(t。将控制器写成传递函数的形式:G(s=U(sE(s=kp(1+1TIs+TDs=kp+ki1s+kds(1.3式中,kp――比例系数,TI――积分时间常数,TD――微分时间常数;统一用比例系数表示,ki为积分比例系数,kd为微分比例系数:ki=kpTI,kd=kpTD(PID三个环节的作用比例、微分、积分各个环节的作用:(1kp:减小系统的误差,加快系统的响应速度。(2ki:消除系统的静态误差,决定积分作用的强弱。(3kd:抵制偏差信号的变化趋势,对偏差进行提前预报,减少调节时间。1.2PID控制器的种类PID控制器有传统PID控制器、模糊PID控制器、专家PID控制器、以及动词PID控制器等几类。1.2.1传统PID控制器PID控制器的参数整定是控制系统设计的核心。图1.1中的PID控制器表示的就是传统的PID控制器,其kp、ki、kd三个参数在控制过程中不会自动发生变化,操作人员只能根据控制对象的特性在系统开始工作时选择最优的三个参数。但仅靠一组参数还不能满足系统的要求,在控制过程中一般还要手动对参数进行修改,由此造成了极大的不方便。工业中实际应用的PID控制器不会只用传统的PID控制策略。1.2.2智能PID控制器模糊PID控制器、专家PID控制器、以及动词PID控制器都是智能PID控制器,它们在传统PID控制器的基础上实现了很多改进。模糊PID控制器和动词PID控制器都是PID参数自整定型控制器;而专家PID根据专家经验库,可能调整PID参数,或者直接影响输出电压u。本文主要对模糊PID控制器和动词PID控制器进行研究比较,详细介绍见后面的章节。2模糊PID控制器模糊PID控制器全称应该叫做“模糊参数自适应(自整定)PID控制器”。图2.1表示其系统组成。顾名思义,模糊PID控制器的三个参数是能够在线调整、实时改变的。这是模糊PID控制器在传统PID控制器的基础上实现的重大改进。图2.1:模糊PID控制器2.1模糊控制规则[1]2.1.1控制原理自适应控制应用现代控制理论,以对象特性为基础,在线辨识对象特征参数,实时改变控制策略。在控制过程中各种信号量不易定量表示,因此需要模糊理论来解决问题。自适应模糊PID控制器以误差e和误差变化ec作为输入,找到输出的三个PID参数与e和ec之间的模糊关系。在运行中不断检测e和ec,利用模糊控制规则在线对PID参数进行修改,以满足不同e和ec对控制参数的不同要求,而使被控对象有良好的动、静态性能。2.1.2模糊规则误差e、误差变化率ec,以及∆K的模糊子集均为{NB,NM,NS,ZO,PS,PM,PB},分别代表{负大、负中、负小、零、正小、正中、正大}。模糊控制规则具有如下形式:If(eisNBand(ecisNBthen(kpisPBand(kiisNBand(kdisPS。由于e和ec都有7个子集元素,总共有49种自由组合,因此模糊控制总共有49条这样形式的规则。kp、ki、kd三个参数整定的模糊控制规则表如表2.1。kp的模糊规则表ec∆KpNBNMNSZOPSPMPBNBZOZONMNMNMNBNBNMPSZONSNMNMNMNBNSPSPSZONSNSNMNMeZOPMPMPSZONSNMNMPSPMPMPMPSZONSNSPMPBPBPMPSPSZONSPBPBPBPMPMPSZOZOk的模糊规则表ec∆KiNBNMNSZOPSPMPBNBNBNBNMNMNSZOZONMNBNBNMNSNSZOZONSNBNMNSNSZOPSPSeZONMNMNSZOPSPMPMPSNMNSZOPSPSPMPBPMZOZOPSPSPMPBPBPBZOZOPSPMPMPBPBkd的模糊规则表ec∆KdNBNMNSZOPSPMPBNBPBPMPMPMPSPSPBNMPBNSPSPSPSPSPBNSZOZOZOZOZOZOZOeZOZONSNSNSNSNSZOPSZONSNMNMNSNSZOPMPSNSNBNMNMNSZOPBPSNSNBNBNBNMPS表2.1:模糊控制规则表2.2模糊控制规则的实现2.2.1隶属度[1]在模糊控制规则表中,各个元素子集都是用字母表示的,而在控制过程中,模糊判决器的输入和输出都是一些数值,因此需要在数值和各个语言变量之间建立联系。各个语言变量都表示一定的范围,这种范围的覆盖面可以用隶属度来表示。隶属度函数有多种形状,有正态分布的,有等腰梯形的,最常用的是三角形,如图2.2所示。每个语言变量表示的范围可能有所交叉,但除了几个特殊点,一个具体数值隶属于各个字母符号的程度是不一样的。图2.2:隶属度模糊合成推理根据隶属度和模糊控制规则来修正PID参数:kp=kp+{ei,eci}pki=ki+{ei,eci}ikd=kd+{ei,eci}d2.2.2模糊推理[2]模糊判决器读取e和ec的具体数值,进行模糊推理,然后输出三个K的具体数值,有很多算法。这里介绍一种强度转移法。所谓强度转移法,就是当控制系统有精确值输入时,精确值在条件语句的前件中所得到的语言变量转移到后件的语言变量值去,从而得到推理结果的过程。以kp的推理为例。步骤为:(1前件强度的求取为了简化而清晰地说明推理过程,我们假设误差e(k及其变化率ec(k分别最多对应2个语言变量值,设e(k的两个语言变量值为A1、A2,且对模糊变量A1、A2的隶属度为uA1(e、uA2(e,ec(k的两个语言变量值为B1、B2,且对这两个模糊变量的隶属度为uB1(ec、uB2(ec,控制规则如下:ife(kisA1andec(kisB1thenkpisC1ife(kisA1andec(kisB2thenkpisC2ife(kisA2andec(kisB1thenkpisC3ife(kisA2andec(kisB2thenkpisC4从以上4条规则中,可产生出模糊推理的前件强度为:u1=uA1(e∧uB1(ecu2=uA1(e∧uB2(ecu3=uA2(e∧uB1(ecu4=uA2(e∧uB2(ec(2后件强度的求取由于在强度转移法中,是把精确值对前件的作用强度转移到后件中去,并作为后件模糊量kpi的隶属度,因此,依前件强度可得后件强度为:uC1(kp1=u1uC2(kp2=u2uC3(kp3=u3uC4(kp4=u4(3精确值kp的求取根据kp的语言变量值和隶属度的解析表达式求出kp1、kp2、kp3、kp4。它们分别为C1、C2、C3和C4在隶属度为u1、u2、u3和u4时的推理结果元素,则利用重心法可求得:kp=u1×kp1+u2×kp2+u3×kp3+u4×kp4u1+u2+u3+u4(2.1当误差e(k和误差变化率ec(k具有多个语言变量值时,其推导过程与上述过程相似。模糊推理中,在求解前件强度和后件强度时,对e,ec以及PID三个参数的描述,都是用名词来表示。这些名词不能互相包含,因此模糊控制的49条规则各不相同,缺一不可。2.3在Matlab中建立模糊判决器2.3.1用FISEditor建立模糊判决器[3]在Matlab主窗口中输入fuzzy,弹出FISEditor,这是一个新建的空白的FIS,如图2.3所示。解模糊算法默认是Mamdani法,如果要改变算法,Matlab提供的另一种算法为Sugeno。在新建FIS时,点击File→NewFIS→Sugeno即可。点击Edit→Addvariable→input(或output,添加判决器的输入和输出,我们使用的模糊PID判决器是2个输入3个输出。把这5个变量(variable的名字(Name改成e、ec、kp、ki和kd。双击任一个variable,弹出MembershipFunctionEditor,可以设定这个variable的取值范围(range。如图2.4所示。新建的variable默认只有3个子集,在MembershipFunctionEditor中点击Edit→AddMFs,添加子集,加到7个。按照模糊隶属度设定每个子集的名字(Name、形状(Type和覆盖范围(Params。添加规则:在FISEditor中点击Edit→Rules,弹出RuleEditor。如图2.5所示。新建的模糊判决器有0条规则,按照模糊控制规则表,使用RuleEditor底部的“添加规则(Addrule”和“修改规则(Changerule”按钮设定模糊控制的49条规则。先添加条数,再按规则修改。最后将该FIS保存,在FISEditor中点击File→Export→ToDisk,保存为fuzzpid.fis。图2.3:FISEditor图2.4:MembershipFunctionEditor2.3.2用Matlab程序生成模糊判决器[1]用Matlab程序语言也能生成和上一节一模一样的fuzzpid.fis。a=newfis(’fuzzpid’;建立一个新的FIS,取名fuzzpid。escale=1;图2.5:RuleEditora=addvar(a,’input’,’e’,[-3*escale,3*escale];添加variablea=addmf(a,’input’,1,’NB’,’zmf’,[-3*escale,-1*escale];本行往下共7行分别添加MFsa=addmf(a,’input’,1,’NM’,’trimf’,[-3*escale,-2*escale,0];a=addmf(a,’input’,1,’NS’,’trimf’,[-3*escale,-1*escale,1*escale];a=addmf(a,’input’,1,’Z’,’trimf’,[-2*escale,0,2*escale];a=addmf(a,’input’,1,’PS’,’trimf’,[-1*escale,1*escale,3*escale];a=addmf(a,’input’,1,’PM’,’trimf’,[0,2*escale,3*escale];a=addmf(a,’input’,1,’PB’,’smf’,[1*escale,3*escale];这几行代码添加了e这个variable,作为input,range为[-3,3],e有7个子集,Name、Type和Params各不相同。ec、kp、ki、kd的添加方式完全类似,只需更改scale和input(output,“addmf(a,’input’,1……”中的“1”依次改为2、3、4、5。个人感觉这样子生成FIS比用FISEdit还快。FISEdit虽然有友好的用户界面,但每个variable、每个mfs、49条规则都要一一输入;而上述程序具有通用性,比如e的range变为[-30,30],只需要将escale赋值为10即可。ec、kp、ki、kd的scale的更改完全类似。rulelist=[1171511;1271311;……………厦门大学本科毕业设计(论文……………7617511;7717711];(↑总共49行a=addrule(a,rulelist;这几十行代码实现了49条模糊控制规则的添加。每一行代表一条规则,由前5个数字来完成对规则的描述。数值1~7按顺序代表从NB到PB7个子集,5个数字的位置对应e、ec、kp、ki、kd。比如,第一行前5个数字为:1-1-7-1-5,代表NB-NB-PB-NB-PS,其对应的模糊规则为:If(eisNBand(ecisNBthen(kpisPBand(kiisNBand(kdisPS。这个rulelist可以完全按照模糊控制规则,用数字代表7个字母符号列出来的。这个rulelist也是通用的。a=setfis(a,’DefuzzMethod’,’mom’;解模糊的算法设定为Mandani,也可以改为Sugeno。writefis(a,’fuzzpid’;a=readfis(’fuzzpid’;这样子就生成了一个和上一小节完全一模一样的fuzzpid.fis。2.3.3模糊判决器的使用这个模糊判决模块,可以作为一个模块嵌入到Simulink模型编辑窗口当中,在第4章中可以看到其用法。这个模块还能被Matlab编程语言调用,在第5章用Matlab程序进行模糊PID控制仿真的时候会用到。93动词PID控制器图3.1:动词PID控制器3.1动词控制规则3.1.1模糊规则的动词化动词PID控制器的系统组成大部分与模糊PID控制器相似,在控制规则方面,动词PID控制器相比模糊PID控制器做了改进。对e,ec以及PID三个参数的描述,由名词变成动词。动词反映的是参数的变化趋势,这样一来,不同的名词组合,可以用相同的动词来表示。计算动词规则是对模糊规则进行提取,浓缩。把相同的变化趋势合并,可以减少规则数目。通过简化,用7条计算动词规则就可以涵盖49条模糊控制规则,应用于控制系统的各个阶段。3.1.2动词规则[4]动词种类繁多,为了规范化,方便地描述计算动词规则,可以只用一个动词(become加名词和副词参数来替换所有动词。采用become[adverb](noun1,noun2的形式。比如“jump”可以表示成becomefast(current,biggerthancurrent,stayhigh可以表示成become(high,high等等。参数不一样,become所表示的动词效果就不一样。7条计算动词规则如下:其中Z、S、M、B分别代表zero、small、medium、big。(1If(|e|become(Z,Zthen(kpbecome(S,B,kibecome(B,S,kdbecome(S,B(2If(|e|become(B,Mthen(kpbecomefast(B,S,kibecomefast(B,S,kdbecomefast(S,B(3If(|e|become(M,Sthen(kpbecome(B,S,kibecome(B,S,kdbecome(S,B(4If(|e|become(S,Zthen(kpbecomeslow(B,S,kibecomeslow(B,S,kdbecomeslow(S,B(5If(|e|become(Z,Sthen(kpbecomeslow(S,B,kibecomeslow(S,B,kdbecomeslow(B,S(6If(|e|become(S,Mthen(kpbecome(S,B,kibecome(S,B,kdbecome(B,S(7If(|e|become(M,Bthen(kpbecomefast(S,B,kibecomefast(S,B,kdbecomefast(B,S103.2动词相似度在控制过程中,e的变化大部分时间并不是完全等同于上述的某一个规则中的前件条件;但反过来说,任一时刻,肯定能在上述七条规则的前件条件中中,找到一个和e的变化趋势最相似的become。用“动词相似度(similarities”来恒量各个动词之间的关系。动词相似度是一个数值,取值范围[0,1],相似度越接近1表示这两个动词相似的程度越大,相似度越接近0则表示越不相像。在动词控制规则里,可以把前件条件里的7个动词定义为7个标准动词,控制过程中观察到的动词都和这些标准动词做比较。动词推理的输出也定义成几个标准输出动词。3.2.1基于进化函数的动词相似度的计算[4]上一节提到,所有动词都可以用Become来进行规范化。在计算动词相似度之前,首先定义Become的进化函数:εbecome(state1,state2=µstate1(x(t,t∈[0,T2]=T−tTw,t∈[0,T2]µstate2(x(t,t∈(Tw,Tw]=tw,t∈(Tw,Tw](3.1其离散时间形式为(假设Tw=wTs:εbecome(state1,state2=w−kw,k∈[0,w2],w∈Zk,k∈(w,w],w∈Z(3.2become(state1,state2的时间跨度取Tw,x(t是观察到的波形,一个被观察的动词的进化函数:εobserved(τ=µstate1(x(τ,τ∈[t−Tw,t−T2]µstate2(x(τ,τ∈(t−Tw,t]未定义,τ∈其他(3.3t是当前时间,观察动词是从过去某个时间开始的。计算动词进化函数的构造需要依赖以下两个因素:名词中心和物理语义学的动词中心。现在来求“observed”这个动词和become(state1,state2的相似度,首先把become(state1,state2的开始时间定在(t−Tw时刻。求动词的相似度首先将Tw分成state1和state2两个区间,再按以下几个步骤进行运算。1在前半个区间求出a1和b1:a1T0εbecome(τ∧εobserved(t−Tw+τdτ,b1T0εbecome(τ∨εobserved(t−Tw+τdτ,(3.4112在后半个区间求出a2和b2:a2TwTεbecome(τ∧εobserved(t−Tw+τdτ,b2TwTεbecome(τ∨εobserved(t−Tw+τdτ,(3.53平衡因子ww=2min(a1b1+b2,a2b1+b2(3.64在整个Tw范围内求相似度:S(become,observed=a1+a2b1+b2w(3.7对观察到的动词取不同的隶属度,分两个区间分别与标准进化函数进行“∧”和“∨”运算,不同的计算动词规则的相似度的求取中,用来与标准进化函数进行“∧”和“∨”运算的被观察动词的进化函数是不一样的,运算的结果进行积分,积分相当于求面积。将两个窗口“∧”的面积相加,“∨”的面积也相加,相似度是“∧”的总面积与“∨”的总面积之比。这个比值越大,说明观察动词与标准动词的相似度越大。比如,取state1=big,state2=medium,把观察动词的µbig、µmedium与标准进化函数进行“∧”、“∨”、积分、加法、除法运算之后,比值与其他规则的计算结果相比最大,则说明被观察动词与become(big,medium最相似。3.2.2简化的动词相似度[5]一个动词可以表示成Become(offset,offset+∆x,即上一时刻位于offset位置,现在变化了∆x。一个观察到的动词与Become(offset,offset+∆x0求相似度,可分为两部分,一部分是变化趋势的相似度,另一部分是起始位置的相似度。变化趋势的相似度一个观察到的动词与“增大”这个动词的相似度可以表示成:S(∆x,∆0=11+e−K×∆x(3.8式中,∆x是一个运动对象相邻两个时间点上的位移差,即变化量;∆0是设定的一个标准变化量;K在计算中是一个常量,在不同的场合可以取不同的值。∆0取0.5,K取6时,画出不同的观察动词与"增大0.5"的相似度。如图3.2。这种动词相似度的求法适合于计算动词的(2~(7号控制规则,不同的规则对应不同的∆0和K,求“增大”的相似度时,K×∆x的前面需要一个负号,求“减小”的相似度时,不用负号。但这个算法不适合于求与“eBecome(Zero,Zero”的相似度,因为当estayZero时,其∆0为0,而在式3.8中,∆0是一个分母,所以与这条规则相对应的动词相似度的求解采用另外一种算法。S(∆x,stay0=21+eK×|∆x|(3.912−0.5−0.4−0.3−0.2−0.81δx1/(1+exp(−12δxSimilarities图3.2:动词与"增大0.5"的相似度K取5时,观察到的不同动词与"stayZero"的相似度如图3.3。−1−0.50.51δx2/(1+exp(5abs(δxSimilarities图3.3:动词与"stayZero"的相似度起始位置的相似度观察到的动词的起始位置为offsetobserved,定义标准动词的起始位置为offset0,计算起始位置的相似度我采用如下算法:Soffset=max(0,1−K∗(offsetobserved−offset0p(3.10p取正偶数。当K=10,p=2,offset0=0.8(假设起始位置为big时,画出不同的起始位置与起始位置为big的相似度。如图3.4。13厦门大学本科毕业设计(论文00.811.21.401Similarities图3.4:起始位置与big的相似度起始位置的相似度与模糊隶属度函数有相似之处。3.3动词控制规则的实现[4]计算动词规则的推理建立在动词相似度的基础上,在控制过程中,观察控制误差e的变化趋势,求出e和7个标准动词的相似度。控制器的输入和输出都是动词形式。控制规则是这样的:If(ebecome0iThen(∆kVi,输出的动词Vy是7个标准输出动词Vi(i=1~7以相似度为权的加权平均量。Vy=7i=1S(becomeobserved,become0i×Vii=1S(becomeobserved,become0i(3.11公式的形式与模糊推理强度转移法中重心法(式2.1的形式有相似之处。这种加权平均的算法符合控制需求,e的变化和哪个规则中的前件条件最相似,控制输出就和那个规则的K的变化最相近。在求出∆k之后,PID三个参数的修正方式为:Knext=Kcurrent+∆k。4用Simulink进行PID控制仿真4.1采油油管加热电源简介[6]4.1.1背景世界上稠油资源极为丰富,储量比普通原油储量还多,其分布也十分广泛,我国是世界闻名稠油田区之一。稠油的开采难度比普通原油大得多,有些稠油在油层基本不能流动。但稠油对温度很敏感,当温度降到一定值时,其粘度急剧上升,这个温度称为稠油的拐点温度。所以开采稠油时,要控制稠油的温度在其拐点温度之上,使其能在油层流动。采油油管变频加热电源,通过电容滤波三相整流电路,将交流电转换为直流电,再通过逆变电路将工频(50Hz变换为其他频率,然后由变压器输出到加热载体,对油层加热。4.1.2系统函数高凝油温度控制系统具有非线性、时变性、滞后性等特性。根据实际测量,被控对象近似为带纯滞后的二阶惯性环节。系统延迟时间为40秒,其传递函数为:G(s=e−40s400s2+58s+1(4.14.2Simulink简介[3]Simulink是个交互式动态系统建模、仿真和分析图形环境,是一个进行基于模型的嵌入式系统开发的基础开发环境。Simulink可以针对控制系统等进行系统建模、仿真、分析等工作。Simulink提供了一个建立控制系统方框图,并对系统进行模拟仿真的环境。在Mablab6.5的命令主窗口中单击File→New→Model,即可打开如图4.1所示的Simulink模型编辑窗口。在Simulink模型编辑窗口中单击View→Librarybrowser,即可打开如图4.2所示的Simulink库浏览窗口。根据控制系统的结构,用户可以从模型库中选择所需要的各种模块,按要求连接、修改各模块的参数,建立系统模型。4.3传统PID控制Simulink仿真4.3.1建立系统模型在模型库中,从Simulink库Continuous子库中选择Derivative、Integrator、TransferFcn、TransportDelay模块,从MathOperations子库中选择Gain、Sum模块,Sinks子库中选择Scope,Sources子库中选择Step,放到模型编辑窗口。各个模块的属性都可通过双击该模块进行更改。按图4.1:Simulink模型编辑窗口图4.2:Simulink库浏览器图4.1更改各模块属性,连线,就建立了一个传统PID控制系统模型。其中Step阶跃信号幅值为1,TransportDelay为40秒。在模型编辑器中选择“startsimulink”,就可以开始进行仿真。仿真波形可以双击scope进行观察。4.3.2调试过程及结果参数整定过程:(1令ki和kd为0,调整kp。若kp太小,则控制结果无法向原定的控制目标靠近,kp增大,响应曲线开始出现振荡。如果振荡的振幅呈增大趋势,系统将无法达到稳定。所以应该调整kp,使响应看起来是一条振幅越来越小的曲线。(2观察振荡趋向的平衡位置,ki为0时,一般会存在静态误差。ki从0开始增大,调整ki,使响应曲线保持在控制目标上下振荡。由于ki也加强了控制作用,所以kp应该基于第(1步调出的值再往小调。一般通过合适的ki把振荡的平衡位置修正之后,不必再调ki了。(3调整kd。kd能抑制响应曲线上下振荡的振幅,但kd过大,反而降低响应速度。最后对kp和ki进行联合微调。对式4.1所示的加热电源的温度的传统PID控制进行参数调整,我调整得效果最好的一组参数已标在图4.1中,即kp=1.1,ki=0.02,kd=20。温度变化波形如图4.3。大约320秒控制达到稳定,超调量23%。Simulink的Scope中的响应曲线原本是黑色背景,黄色曲线。为了便于浏览,本人做了一些反色的处理,后面的图4.5也进行了同样的处理,不再重复说明。图4.3:传统PID控制仿真4.4模糊PID控制Simulink仿真4.4.1建立系统模型模糊PID控制系统最核心的部分是模糊判决器,这个判决器可以作为一个模块放入到Simulink模型编辑器中,在Matlab主窗口中输入fuzzy,弹出FISEditor,点击File→Import→FromDisk,打开已建立的fuzzpid.fis,再点击File→Export→ToWorkspace,把这个判决器添加到工作空间。然后在Simulink模型编辑器中,按图4.4从库中选择模块,更改参数,连线,这样建立起模糊PID控制系统模型。从图中可以清楚地看出模糊控制对P、I、D三个参数的调整作用。比如PID控制中的微分环节的输出ud=(Kd0+∆kd×ec,而在这个系统模型中,ud=Kd0×ec+∆kd×ec,与PID控图4.4:模糊PID控制系统模型制理论是一致的。4.4.2调试模糊PID控制需要调整的参数包括PID三个初始值,以及模糊判决器2个输入3个输出的论域。传统PID调出的三个参数对模糊PID的三个初始参数有一定的参考价值。仿真的控制目标是1,故设置e和ec的论域均为[-1.5,1.5];模糊判决器的输出是∆K,是对三个初始参数进行调整,所以∆K的论域大小应该与对应的K数量级相当或较小。如果∆K论域数量级明显超过对应的K的初始值,那初始值的设定就没什么意义了。设置∆kp论域为[-0.15,0.15],∆ki论域为[-0.003,0.003],∆kd论域为[-6,6]。每次改变论域,模糊判决器就发生改变。在Matlab6.5中进行仿真时,每次都必须在FISEditor中重新打开这个模糊判决器,重新将其导入工作空间,Simulink才能使用最新修改的模糊判决器来进行仿真。这个系统的模糊PID控制的仿真结果,没有实现对传统PID控制的改进。本人尝试着对三个PID初始参数以及5个论域进行调整,但能得到的最佳组合就是上述的数值。按上述数值得到的仿真曲线与传统PID控制十分相似,超调和到达稳定的时间都差不多,如图4.5。4.5关于动词PID控制Simulink仿真的一点说明模糊控制理论已经问世数十年,在Matlab中已经集成了模糊判决器的模型,可以对模糊判决器进行修改,嵌入到Simulink模型编辑器中,进行模糊控制的仿真。动词PID控制器目前还厦门大学本科毕业设计(论文图4.5:模糊PID仿真结果未大面积推广,Matlab中没有相应的集成模块,因此没有进行动词PID控制的Simulink仿真。动词PID控制并不是无法用Simulink进行仿真,只是难度比较高,工作量比较大,本人没有进行研究,这里只简要介绍解决方法。Simulink模型编辑器里面除了可以放置Matlab已经定义的模块,还可以放置用户自定义的模块。在库浏览器Simulink库User-DefinedFunction子库中,选择S-Function,拖放到模型编辑器中。这是一个空白的模块,用户需要用Matlab程序语言编写一个文件,程序里面描述用户需要定义的模块的功能。比如,在程序中编写计算动词PID动词推理过程,然后保存为VerbPID.m。在Simulink模型编辑器中,双击S-Function模块,填写S-FunctionName为VerbPID.m。S-FunctionParameters的填写与m文件中的变量定义有关。写好动词推理S-Function程序,在模型编辑器中设置好S-Function模块的属性,就实现了动词推理算法嵌入到Simulink仿真中。4.6本章小结本章简要介绍了采油油管加热电源以及Simulink仿真软件。用Simulink对该加热电源的温度进行传统PID和模糊PID控制的仿真,由于动词PID推理模块嵌入到Simulink中工作量比较大,本章没有对其进行仿真,只是提出了一些解决思路。传统PID和模糊PID的仿真结果比较相似,模糊PID没有对传统PID控制效果进行明显的改良。5用Matlab编写程序进行各种PID控制仿真本章用Matlab编写程序,对控制对象进行传统PID、模糊PID、动词PID控制仿真。被控对象仍然是第4章所用过的采油油管加热电源[6]的温度。系统函数:G(s=e−40s400s2+58s+1(5.15.1仿真程序流程图三个Matlab仿真程序的结构组成都列于图5.1。程序开始设定控制目标r,对被控对象的图5.1:程序流程图输入信号u、以及kp、ki、kd三个参数进行初始化,然后进入循环。由u作用于被控对象,对象的输出为yout,控制误差e=r−yout,误差变化率ec用e的差分表示,误差的积累用e表示。如果是传统PID控制器,因为PID三个参数不变,所以直接用加法求出新的控制信号u,进行下一轮循环。智能PID控制器在求出e和ec之后,通过e和ec计算出∆kp、∆ki和∆kd,修正3个参数,然后再进行加法求出u,进入下一个循环。模糊PID控制和动词PID控制仿真程序的不同在于修正3个PID参数的过程。模糊PID控制器通过查找模糊规则表,然后K=K0+∆K;而动词规则分别求出e的动态与七个标准动词的相似度,∆k是七个输出动词在相似度上的加权平均,然后修正参数:Knext=Kcurrent+∆k.做完预设的循环次数后,每一仿真时刻的yout、kp、ki、kd都有记录下来,此时画出这四个变量随时间变化的曲线,以供研究比较。5.2关键环节的算法图5.1已经描述了仿真程序的大纲,其中一些加法、减法、乘法、累加的环节,非常容易理解。只有两个环节的算法比较复杂。一个是由e和ec怎样计算出∆kp、∆ki和∆kd。针对模糊和动词控制规则,有相应的计算方法,在前面已经介绍。另外一个比较复杂的环节是:如何由控制电压u得到输出yout。本文仿真通过用ode45求解微分方程的方法来完成。由于选取的控制对象具有时滞,在写微分方程时要对系统函数里时滞的部分进行近似,所以用到一个“PADE”指令,下面分别介绍。5.2.1ode45求解微分方程[7]仿真程序中ode45的用法如下:TSPAN=Ts*k:simuStep:Ts*(k+1;[t,x]=ode45(’dynsys’,TSPAN,x0;Ts是采样时间,simuStep=Ts/4;k是循环控制量,TSPAN把两次采样的时间间隔分成5个点。’dynsys’是一个文件名,dynsys.m文件里保存着描述被控对象特征的微分方程,这些微分方程以状态空间的形式给出,其中包含了输入u的影响。˙x=Ax+Bu(5.2x是状态向量(列向量。TSPAN是ode45解微分方程组的几个时间点,x0是第一个时间点上系统的状态向量。这样进行ode45运算的结果,产生了5个t和5个x。t是一维的,也就是5个时间点。x的维数与系统的阶数相当。系统的输出yout是x的几个分量以及输入u的线性组合。y=Cx+Du(5.3A,B,C,D是一些矩阵。在已知系统的传递函数的情况下,在Matlab主窗口中输入[A,B,C,D]=tf2ss([num],[den]即可得到这4个矩阵。[num]和[den]是系统函数的分子和分母。5.2.2对延时的近似处理对无时滞的系统进行仿真时,直接用tf2ss写出微分方程,再写进dynsys.m文件,在主程序里循环调用ode45函数即可进行仿真。本文选用的被控对象具有40秒的延迟。无法直接根据系统函数写出微分方程。我采用的解决方法是,先把e−τs用Matlab指令“[NUM,DEN]=PADE(τ,N“近似成一个N阶的不带指数的系统函数(N越大近似越精确。再和原来系统函数中非时滞的部分相乘,得到总的系统函数,然后用TF2SS写出微分方程。针对上面的系统,在Matlab中输入“[NUM,DEN]=PADE(40,1”得到NUM=[-10.05],DEN=[10.05],即e−40s用−s+0.05代替,则G(s≈−s+0.05s+0.05×1400s2+58s+1=−s+0.05400s3+78s2+3.9s+0.05(5.4在Matlab主窗口中输入[A,B,C,D]=tf2ss([-10.05],[400783.90.05]得到四个矩阵,写出微分方程:˙x1=−0.195×x1−0.00975×x2−0.000125×x3+u;˙x2=x1;˙x3=x2;dynsys.m文件如下:functionxdot=dynsys(t,xglobaluxdot=[-0.195*x(1-0.00975*x(2-0.000125*x(3+u;x(1;x(2;];系统的输出yout=−0.0025×x2+0.000125×x3体现在主程序中。5.3传统PID控制仿真5.3.1调整过程及结果仿真程序的编写遵循图5.1的上、中部分。设置PID三个参数,并进行调节。PID参数的选取,在第4.3.2小节已经提过。先令ki=0,kd=0,找到一个kp;然后ki从0开始增大,kp适当减小,ki增大到能消除静态误差就行了,不必一直调大。最后调kd,再对kp、kd进行联合调整。调节三个参数,观察在传统PID控制下误差e的变化情况。误差e的变化曲线有两种情况比较特殊,如图5.2所示。当Kp=1.5、Ki=0.02、Kd=30时,误差变化如虚线所示,超调较小,无振荡,但到达稳定的时间较长。Kp=1.8、Ki=0.02、Kd=27时,误差变化如实线所示,速度比较快,但超调较多,有一些振荡。而其他情况介于这两类特殊情况之间。本文后面要拿智能PID控制的效果来和传统PID控制做比较,为了统一标准,智能PID控制结果都和传统PID调出的第二种特殊情况来做对比。在响应时间差不多的情况下,看智能PID对超调和振荡的控制效果如何。在这里传统PID控制超调量为20%。5.3.2关于两种不同仿真方法的说明用编程语言仿真时得到的一组参数和用Simulink仿真时得到的一组参数有些差距。这个控制对象本身带有40秒的时滞,控制达到稳定需要几百秒的时间。程序是用循环来做的,我0100200300400500600−0.4−0.60.811.21.4e(t图5.2:传统PID控制误差e变化的两种典型情况选取Ts=1秒,k=0~599,仿真600秒就要600次循环。为了减少每次仿真程序运行的时间,只能这样。而Simulink里面计算精度比较高,取样时间不同导致两种仿真方法调试出来的参数不同,但在数量级上是一致的。误差最开始是1,图5.2中误差在开始仿真的一段时间里呈增大趋势并且超过1,这主要是写系统微分方程时对延时的近似处理所造成的,在实际的这个延时系统中,前40秒输出一直为0,Simulink的仿真曲线可以体现这一点。所以前40秒误差应该一直保持在1,才是符合实际的。延时的近似处理对前40秒造成的偏差较大,40秒之后与实际情况的差距较小。两种不同仿真方法导致参数调节、控制响应曲线的差异,在后文的仿真中同样存在,不再重复进行说明。5.4模糊PID控制仿真5.4.1模糊推理源代码分析模糊PID控制,首先设置一组初始PID参数。在仿真过程中,时时检测控制误差e(k及其变化率ec(k,保存到两个变量中。在每次循环里:e_1=e(k+1;ec_1=e(k+1-e(k;然后调用第2.3节建立的那个模糊判决器:k_pid=evalfis([e_1,ec_1],a;k_pid就是模糊判决器的输出,是一个三维的列向量,这三个数就是∆kp、∆ki和∆kd。然后对PID三个初始的参数进行修正。Kp=Kp0+k_pid(1;Ki=Ki0+k_pid(2;Kd=Kd0+k_pid(3;这样就完成了参数的自整定,因为程序是循环在执行的,所以参数的整定也是循环在做的。5.4.2参数调整及仿真结果参数的调整原则在4.4.2小节中已说明。我所调出的最好效果,其参数如下:Kp0=1.6;Ki0=0.02;Kd0=28;e和ec论域[-1.5,1.5],∆kp论域为[-0.09,0.09],∆ki论域为[-0.003,0.003],0100200300400500600−0.4−0.60.811.21.4图5.3:模糊PID控制与传统PID控制比较01002003004005006001.591.61.611.621.631.641.651.661.67kp(t01002003004005006000.01950.020.02050.0210.02150.022ki(t010020030040050060025.225.425.625.82626.226.426.626.82727.2kd(t图5.4:kp、ki、kd自适应曲线∆kd论域为[-3,3]。误差变化曲线如图5.3中实线所示。虚线是传统PID控制曲线,在此做个对比。从图中可以看出,在响应时间差不多的情况下,模糊PID比传统PID超调有所减小,超调量大概18%。kp、ki、kd的自整定曲线如图5.4。kp、ki、kd的自整定符合智能控制的要求,可变参数的PID控制要求在响应初期有较大的kp和ki,较小的kd,随着时间的进行,kp和ki减小,kd增大。这样实现的效果是:在控制误差大时,尽量加快响应速度;在控制误差小时,尽量减小超调。5.5动词PID控制仿真动词PID控制,动词规则的实现是建立在动词相似度的基础上,本文阐述了两种动词相似度的算法。因此动词PID控制的仿真程序中,观察误差e的变化趋势,求e的变化与7条规则前件条件的相似度的部分,有两种不同的程序代码。使用不同相似度算法的两个动词PID控制的仿真程序,分别进行调试。5.5.1基于进化函数求相似度的动词PID控制的仿真调试动词PID的仿真程序中,需要整定的参数更多了。同样要设置PID三个初始参数,还要设置参数调整的幅度:Kpscale、Kdscale和Kiscale。求相似度时要对一段时间内标准动词和观察动词的进化函数进行∧、∨运算并积分,由于仿真采用离散形式,所以一段时间的积分转换成几个点的累加,因此要设置累加的点的个数,在程序里建立一个变量mw=10。动词PID的参数整定与模糊PID不同,Knext=Kcurrent+∆K。为了避免能量过剩导致控制进入振荡的非稳定状态,还要设置PID三个参数变化的上下限。另外,∆K反映了K下一步的变化趋势,而在动词规则里,K的变化还有速度之差别,become[adverb](noun1,noun2中的adverb可以是slow或者fast,缺省是normally。所以再建立两个变量,beta_fast(biggerthan1和beta_slow(between(0,1,再根据需要进行调整,缺省的beta是1。还有一点需要说明的,由于ki和kp变化情况类似,和kd的变化趋势刚好相反。所以在仿真程序中,另外设置了一个Gi,令ki=kp2kd×Gi对ki的调整是通过调Gi来完成的,Gi和ki预变化的方向刚好相反。在离散的仿真程序中,“∧”运算用“min”运算来做,“∨”运算用“max”运算来做,前半个累加窗口是从(k-9到(k-5这5个点,后半个累加窗口是从(k-4到k这5个点。标准动词become的进化函数是一条折线,其离散形式为:εbecome=1−0.1×(k−(k−9,k∈Z,from(k−9to(k−50.5+0.1×(k−(k−4,k∈Z,from(k−4tok这种动词PID控制我能调出的最佳曲线如图5.5中实线所示,虚线是传统PID仿真曲线,在此做个对比。PID参数上下限Kpup=1.7,Kplow=1.3,Kdup=26,Kdlow=28,Gilow=5.5,Giup=6。初始参数Kp=Kpup,Kd=Kdlow,Gi=Gilow。PID参数调整的幅度Kpscale=0.2,100200300400500600−0.4−0.60.811.21.4e(t图5.5:动词PID控制与传统PID控制比较01002003004005006001.41.451.51.551.61.651.71.75Kp(t01002003004005006000.0120.0130.0140.0150.0160.0170.0180.0190.020.021Ki(t01002003004005006002626.226.426.626.82727.227.427.627.828Kd(t图5.6:kp、ki、kd自适应曲线Kdscale=1,Kiscale=1。K参数变化的速率beta_fast=2,beta_slow=0.5。从图5.5中看出,两种控制系统到达稳定时间差不多,动词PID控制超调比传统PID有所减小,大约17%,但平衡点附近振荡较大。kp、ki、kd自整定曲线如图5.6。ki和kd的变化趋势和模糊PID中相应参数的变化趋势是一样的。kp的变化趋势略有不同,由大变小,再变大。kp的变化不违背控制规律,因为kp变小的那段时间,刚好是控制误差e接近0,需要控制超调的时间。5.5.2基于简化的动词相似度的控制仿真调试简化的动词相似度,包含两个因素。需要分析一个运动轨迹位于哪里,变化趋势怎样。在程序中,我对七条动词相似度的定义如下:eold=e(k;delta(k+1=e(k+1-e(k;S7(k+1=1/(1+exp((-delta(k+1*6*max(0,1-4*(eold-0.5∧2;S6(k+1=1/(1+exp((-delta(k+1*9*max(0,1-25*(eold-0.2∧2;S5(k+1=1/(1+exp((-delta(k+1*18*max(0,1-80*(eold-0.05∧2;S4(k+1=1/(1+exp((delta(k+1*18*max(0,1-25*(eold-0.2∧2;S3(k+1=1/(1+exp((de

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论