022525-毕业论文基于matlab的智能PID控制器的设计与仿真_第1页
022525-毕业论文基于matlab的智能PID控制器的设计与仿真_第2页
022525-毕业论文基于matlab的智能PID控制器的设计与仿真_第3页
022525-毕业论文基于matlab的智能PID控制器的设计与仿真_第4页
022525-毕业论文基于matlab的智能PID控制器的设计与仿真_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

引言PID控制器以其结构简单稳定性好工作可靠调整方便等优点被广泛应用于工业控制系统但现代工业控制系统越来越复杂被控对象往往表现出时滞非线性时变性控制要求越来越高传统的PID控制器难以满足现代工业控制的需求智能型PID控制器呈现出广阔的发展空模糊PID控制器是模糊控制器和PID控制器的有效结合它兼具模糊控制和PID控制的优点动词PID控制器是在模糊PID控制器的基础上实现了控制规动词,对模糊PID控制进行了一些改目前动词PID控制器用于实际的工业控制系统还不多本文的研究也仅处于软件仿真阶。1.PID控制器1.1PID控制器的概念[1]1.1.1 PID控制原理PID控制器是一种线性闭环控制器它根据给定输入值rin(t)与实际输出值yout(t)构成控制偏差(1.1)PID的控制信号u(t)由errot(t)及其对时间的积分微分三部分联合作用产生:(1.2)PID控制器最终理想的控制效果是errot(t)=0即yout(t)=rin(t将控制器写成传递函数的形式: (1.3)式中kp――比例系数TI――积分时间常数TD――微分时间常数统一用比例系数表示ki为积分比例系数kd为微分比例系数:1.1.2 PID三个环节的作用比例微分积分各个环节的作用:(1)kp减小系统的误差加快系统的响应速。(2)ki消除系统的静态误差决定积分作用的强。(3)kd抵制偏差信号的变化趋势对偏差进行提前预报减少调节时。1.2 PID控制器的种类PID控制器有传统PID控制器模糊PID控制器专家PID控制器以及动词PID控制器等几。1.2.1 传统PID控制器PID控制器的参数整定是控制系统设计的核图1.1中的PID控制器表示的就是传统PID控制器其kpkikd三个参数在控制过程中不会自动发生变化操作人员只能根据控制对象的特性在系统开始工作时选择最优的三个参但仅靠一组参数还不能满足系统的要求在控制过程中一般还要手动对参数进行修改由此造成了极大的不方工业中实际应用的PID控制器不会只用传统的PID控制策。1.2.2 智能PID控制器模糊PID控制器专家PID控制器以及动词PID控制器都是智能PID控制器它们在传统PID控制器的基础上实现了很多改模糊PID控制器和动词PID控制器都是PID参数自整定型控制器而专家PID根据专家经验库可能调整PID参数或者直接影响输出电压本文主要对模糊PID控制器和动词PID控制器进行研究比较详细介绍见后面的章。2.模糊PID控制器模糊PID控制器全称应该叫模糊参数自适自整PID控制图2.1表示其系统组顾名思义模糊PID控制器的三个参数是能够在线调整实时改变这是模糊PID控制器在传统PID控制器的基础上实现的重大改。2.1 模糊控制规则[1]2.1.1 控制原理自适应控制应用现代控制理论以对象特性为基础在线辨识对象特征参数实时改变控制策在控制过程中各种信号量不易定量表示因此需要模糊理论来解决问自适应模糊PID控制器以误差e和误差变化ec作为输入找到输出的三个PID参数与e和ec之间的模糊关在运行中不断检测e和ec利用模糊控制规则在线对PID参数进行修改以满足不同e和ec对控制参数的不同要求而使被控对象有良好的动静态性。2.1.2 模糊规则误差e误差变化率ec以及∆K的模糊子集均为{N,NM,N,Z,P,PM,PB}分别代表{负大负中负小零正小正中正大模糊控制规则具有如下形式:If(eisNB)and(ecisNB)then(kpisPB)and(kiisNB)and(kdisPS由于e和ec都有7个子集元素总共有49种自由组合因此模糊控制总共有49条这样形式的规kpkikd三个参数整定的模糊控制规则表如表2.。kp的模糊控制规则表∆KpecNBNMNSZOPSPMPBeNBZOZONMNMNMNBNBNMPSZONSNMNMNMNBNSPSPSZONSNSNMNMZOPMPMPSZONSNMNMPSPMPMPMPSZONSNSPMPBPBPMPSPSZONSPBPBPBPMPMPSZOZOki的模糊控制规则表∆KiecNBNMNSZOPSPMPBeNBNBNBNMNMNSZOZONMNBNBNMNSNSZOZONSNBNMNSNSZOPSPSZONMNMNSZOPSPMPMPSNMNSZOPSPSPMPBPMZOZOPSPSPMPBPBPBZOZOPSPMPMPBPBkd的模糊控制规则表∆KdecNBNMNSZOPSPMPBeNBPBPMPMPMPSPSPBNMPBNSPSPSPSPSPBNSZOZOZOZOZOZOZOZOZONSNSNSNSNSZOPSZONSNMNMNSNSZOPMPSNSNBNMNMNSZOPBPSNSNBNBNBNMPS表2.1:模糊控制规则表2.2 模糊控制规则的实现2.2.1 隶属度[1]在模糊控制规则表中各个元素子集都是用字母表示的而在控制过程中模糊判决器的输入和输出都是一些数值因此需要在数值和各个语言变量之间建立联各个语言变量都表示一定的范围这种范围的覆盖面可以用隶属度来表隶属度函数有多种形状有正态分布的有等腰梯形的最常用的是三角形如图2.2所每个语言变量表示的范围可能有所交叉但除了几个特殊点一个具体数值隶属于各个字母符号的程度是不一样。图2.2:隶属度模糊合成推理根据隶属度和模糊控制规则来修正PID参数:2.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)的两个语言变量值为B1B2且对这两个模糊变量的隶属度为uB1(ec)uB2(ec)控制规则如下:ife(k)isA1andec(k)isB1thenkpisC1ife(k)isA1andec(k)isB2thenkpisC2ife(k)isA2andec(k)isB1thenkpisC3ife(k)isA2andec(k)isB2thenkpisC4从以上4条规则中可产生出模糊推理的前件强度为:u1=uA1(e)∧uB1(ec)u2=uA1(e)∧uB2(ec)u3=uA2(e)∧uB1(ec)u4=uA2(e)∧uB2(ec)后件强度的求取由于在强度转移法中是把精确值对前件的作用强度转移到后件中去并作为后件模糊量kpi的隶属度因此依前件强度可得后件强度为:uC1(kp1)=u1uC2(kp2)=u2uC3(kp3)=u3uC4(kp4)=u4(3)精确值kp的求取:根据kp的语言变量值和隶属度的解析表达式求出kp1kp2kp3kp4它们分别为C1C2C3和C4在隶属度为u1u2u3和u4时的推理结果元素则利用重心法可求得:(2.1)当误差e(k)和误差变化率ec(k)具有多个语言变量值时,其推导过程与上述过程相似。模糊推理中,在求解前件强度和后件强度时,对e,ec以及PID三个参数的描述,都是用名词来表示。这些名词不能互相包含,因此模糊控制的49条规则各不相同,缺一不可。3 动词PID控制器3.1动词控制规则3.1.1模糊规则的动词化动词PID控制器的系统组成大部分与模糊PID控制器相似在控制规则方面动词PID控制器相比模糊PID控制器做了改对eec以及PID三个参数的描述由名词变成动动词反映的是参数的变化趋势这样一来不同的名词组合可以用相同的动词来表计算动词规则是对模糊规则进行提取浓把相同的变化趋势合并可以减少规则数通过简化,用7条计算动词规则就可以涵盖49条模糊控制规则应用于控制系统的各个阶。3.1.2动词规则[4]动词种类繁多为了规范化方便地描述计算动词规则可以只用一个动词(become)加名词和副词参数来替换所有动采用become[aderb](noun1,noun2)的形比jum可以表示成becomeast(current,biggerthancurrent)styhigh可以表示成become(high,high)等参数不一样become所表示的动词效果就不一。7条计算动词规则如下其中ZSMB分别代表erosmallmediumbi。(1)If(|e|become(Z,Z))then(kpbecome(,B)kibecome(,S)kdbecome(,B))(2)If(|e|become(,M))then(kpbecomeast(,S)kibecomeast(,S)kdbecomeast(,B))(3)If(|e|become(M,S))then(kpbecome(,S)kibecome(,S)kdbecome(,B))(4)If(|e|become(,Z))then(kpbecomeslw(,S)kibecomeslw(,S)kdbecomeslw(,B))(5)If(|e|become(Z,S))then(kpbecomeslw(,B)kibecomeslw(,B)kdbecomeslw(,S))(6)If(|e|become(,M))then(kpbecome(,B)kibecome(,B)kdbecome(,S))(7)If(|e|become(M,B))then(kpbecomeast(,B)kibecomeast(,B)kdbecomeast(,S))3.2 动词相似度在控制过程中e的变化大部分时间并不是完全等同于上述的某一个规则中的前件条件;但反过来说任一时刻肯定能在上述七条规则的前件条件中中找到一个和e的变化趋势最相似的becom。动词相似度(similarities来恒量各个动词之间的关动词相似度是一个数值取值范围[0,1]相似度越接近1表示这两个动词相似的程度越大相似度越接近0则表示越不相。在动词控制规则里可以把前件条件里的7个动词定义为7个标准动词控制过程中观察到的动词都和这些标准动词做比动词推理的输出也定义成几个标准输出动。3.2.1 基于进化函数的动词相似度的计算[4]上一节提到所有动词都可以用Become来进行规范在计算动词相似度之前首先定义Become的进化函数:(3.1)其离散时间形式为(假设Tw=wTs):(3.2)become(state1,state2)的时间跨度取Twx(t)是观察到的波形一个被观察的动词的进化函数:(3.3)t是当前时间观察动词是从过去某个时间开始计算动词进化函数的构造需要依赖以下两个因素名词中心和物理语义学的动词中现在来obsere这个动词和become(state1,state2)的相似度首先把become(state1,state2)的开始时间定在(t−Tw)时求动词的相似度首先将Tw分成state1和state2两个区间再按以下几个步骤进行运。1)在前半个区间求出a1和b1(3.4)在后半个区间求出a2和b2:(3.5)3)平衡因子e(3.6)4)在整个Tw范围内求相似度:(3.7)对观察到的动词取不同的隶属度分两个区间分别与标准进化函数进运算,不同的计算动词规则的相似度的求取中用来与标准进化函数进运算的被观察动词的进化函数是不一样的运算的结果进行积分积分相当于求面将两个窗的面积相加,“面积也相加相似度的总面积的总面积之这个比值越大,说明观察动词与标准动词的相似度越比如取state1=bigstate2=medium把观察动词的µbigµmedium与标准进化函数进积分加法除法运算之后比值与其他规则的计算结果相比最大则说明被观察动词与become(big,medium)最相。3.2.2 简化的动词相似度[5]一个动词可以表示成Become(offset,offset+),即上一时刻位于offset位置,现在变化了。一个观察到的动词与Become(offset,offset+)求相似度,可分为两部分,一部分是变化趋势的相似度,另一部分是起始位置的相似度。3.2.2.1变化趋势的相似度一个观察到的动词增这个动词的相似度可以表示成:(3.8)式中∆x是一个运动对象相邻两个时间点上的位移差即变化量∆0是设定的一个标准变化量K在计算中是一个常量在不同的场合可以取不同的∆0取0.5K取6时画出不同的观察动词与"增大0.5"的相似如图3.。这种动词相似度的求法适合于计算动词的(2)~(7)号控制规则不同的规则对应不同的∆0和K增的相似度时K×∆x的前面需要一个负号减的相似度时不用负但这个算法不适合于求eBecome(Zer,Zero的相似度因为当estyZero时,其∆0为0而在式3.8中∆0是一个分母所以与这条规则相对应的动词相似度的求解采用另外一种算。(3.9)图3.2:动词与"增大0.5"的相似度K取5时观察到的不同动词与"styZero"的相似度如图3.。图3.3:动词与"styZero"的相似度3.2.2.2起始位置的相似度观察到的动词的起始位置为offsetobserved定义标准动词的起始位置为offset0计算起始位置的相似度我采用如下算法: (3.10)p取正偶当K=10p=2offset0=0.8(假设起始位置为big)时画出不同的起始位置与起始位置为big的相似如图3.。图3.4:起始位置与big的相似度起始位置的相似度与模糊隶属度函数有相似之。3.3 动词控制规则的实现[4]计算动词规则的推理建立在动词相似度的基础上在控制过程中观察控制误差e的变化趋势求出e和7个标准动词的相似控制器的输入和输出都是动词形控制规则是这样的If(ebecome0i)Then(∆kVi)输出的动词Vy是7个标准输出动词Vi(i=1~7)以相似度为权的加权平均。(3.11)公式的形式与模糊推理强度转移法中重心法(式2.1)的形式有相似之这种加权平均的算法符合控制需求e的变化和哪个规则中的前件条件最相似控制输出就和那个规则的K的变化最相。在求出∆k之后PID三个参数的修正方式为Knext=Kcurrent+∆k。4 用Siulink进行PID控制仿真4.1 炉温控制简介4.1.1 背景随着工业的快速发展,钢铁的需求量越来越大。而对于生产钢铁的最重要的一环——高炉——的要求也越来越高。在钢铁的冶炼的过程中,越来越多地使用交流电弧炉设备,温度控制系统的性能直接影响到钢铁的质量,所以炉温控制占据重要的位置。PID控制是温度控制系统中一种典型的控制方式,是在温度控制中应用最广泛、最基本的一种控制方式。随着科学技术的发展,各行各业对温度控制精度的要求越来越高,经典PID在某些场合已经不能满足要求。因此,智能PID控制的引入时精密温度控制系统的发展趋势。为了改善电弧炉系统恒温控制质量的现状,研制具有快速响应的、经济性好的、适合国情的恒温控制装置具有十分重要的意义。4.1.2 系统函数高炉温度控制系统具有非线性时变性滞后性等特根据实际测量被控对象近似一阶惯性加滞后模型:(4.1)4.2 Siulink简介[3]Siulink是个交互式动态系统建模仿真和分析图形环境是一个进行基于模型的嵌入式系统开发的基础开发环Siulink可以针对控制系统等进行系统建模仿真分析等工Siulink提供了一个建立控制系统方框图并对系统进行模拟仿真的环。在Malab6.5的命令主窗口中单击File→Nw→Model即可打开如图4.1所示的Siulink模型编辑窗。在Siulink模型编辑窗口中单击Viw→Libarybrwser即可打开如图4.2所示的Siulink库浏览窗。根据控制系统的结构用户可以从模型库中选择所需要的各种模块按要求连接修改各模块的参数建立系统模。图4.1:simulink模型编辑窗口图4.2:simulink库浏览器4.3 传统PID控制Siulink仿真4.3.1 建立系统模型在模型库中从Siulink库Contiuous子库中选择Deriatie、InteatoranserFcnansportDely模块,从MathOpeations子库中选择GainSum模块,Sinks子库中选择ScopeSources子库中选择Step放到模型编辑窗各个模块的属性都可通过双击该模块进行更按图4.1更改各模块属性连线就建立了一个传统PID控制系统模其中Step阶跃信号幅值为1ansportDely为208。在模型编辑器中选择“startsimulink”,就可以开始进行仿仿真波形可以双击scope进行观。4.3.2 调试过程及结果参数整定过程:(1)令ki和kd为0调整k若kp太小则控制结果无法向原定的控制目标靠近kp增大响应曲线开始出现振如果振荡的振幅呈增大趋势系统将无法达到稳所以应该调整kp,使响应看起来是一条振幅越来越小的曲。(2)观察振荡趋向的平衡位置ki为0时一般会存在静态误ki从0开始增大调整ki使响应曲线保持在控制目标上下振由于ki也加强了控制作用所以kp应该基于第(1)步调出的值再往小一般通过合适的ki把振荡的平衡位置修正之后不必再调ki。(3)调整kkd能抑制响应曲线上下振荡的振幅但kd过大反而降低响应速最后对kp和ki进行联合微。对式4.1所示的加热电源的温度的传统PID控制进行参数调整我调整得效果最好的一组参数已标在图4.1中即kp=18ki=0.015kd=1000温度变化波形如图4.大约3000秒控制达到稳定超调量30。Siulink的Scope中的响应曲线原本是黑色背景黄色曲为了便于浏览本人做了一些反色的处理后面的图4.5也进行了同样的处理不再重复说。图4.3:传统PID仿真4.4 模糊PID控制Siulink仿真4.4.1 在Matlab中建立模糊判决器4.4.1.1 用FISEditor建立模糊判决器[3]在Matlab主窗口中输入fuzzy,弹出FISEditor,这是一个新建的空白的FIS,如图2.3所示。解模糊算法默认是Mamdani法,如果要改变算法,Matlab提供的另一种算法为Sugeno。在新建FIS时,点击FileNewFISSugeno即可。图2.3:FISEditor点击EditAddvariableinput(或output),添加判决器的输入和输出,我们使用的模糊PID判决器是2个输入3个输出。把这5个变量(variable)的名字(Name)改成e、ec、kp、ki和kd。双击任一个variable,弹出MembershipFunctionEditor,可以设定这个variable的取值范围(range)。如图2.4所示。新建的variable默认只有3个子集,在MembershipFunctionEditor中点击EditAddMFs,添加子集,加到7个。按照模糊隶属度设定每个子集的名字(Name)、形状(Type)和覆盖范围(Params)。添加规则:在FISEditor中点击EditRules,弹出RuleEditor。如图2.5所示。新建的模糊判决器有0条规则,按照模糊控制规则表,使用RuleEditor底部的“添加规则(Addrule)”和“修改规则(Changerule)”按钮设定模糊控制的49条规则。先添加条数,再按规则修改。最后将该FIS保存,在FISEditor中点击FileExportToDisk,保存为fuzzpid.fis。图2.4:MembershipFunctionEditor图2.5:RuleEditor4.4.1.2 用Matlab程序生成模糊判决器[1]用Matlab程序语言也能生成和上一节一模一样的fuzzpid.fi。a=nwfis(’fuzzpid’);建立一个新的FIS取名fuzzpi。escale=1;a=addar(a’input’’e’,[-3*escal,3*escale]);添加arialea=addmf(a’input’,1’NB’’zmf’,[-3*escal,-1*escale]);本行往下共7行分别添加MFsa=addmf(a’input’,1’NM’’trimf’,[-3*escal,-2*escal,0]);a=addmf(a’input’,1’NS’’trimf’,[-3*escal,-1*escal,1*escale]);a=addmf(a’input’,1’Z’’trimf’,[-2*escal,0,2*escale]);a=addmf(a’input’,1’PS’’trimf’,[-1*escal,1*escal,3*escale]);a=addmf(a’input’,1’PM’’trimf’,[0,2*escal,3*escale]);a=addmf(a’input’,1’PB’smf’,[1*escal,3*escale]);这几行代码添加了e这个ariale作为inputange为[-3,3]e有7个子集Nameype和aams各不相eckpkikd的添加方式完全类似只需更改scale和input(output),addmf(a’input’,1⋯中依次改为234个人感觉这样子生成FIS比用FISEdit还FISEdit虽然有友好的用户界面但每个ariale每个mfs49条规则都要一一输入而上述程序具有通用性比如e的ange变为[-30,30]只需要将escale赋值为10即eckpkikd的scale的更改完全类。rulelist=[1171511;1271311;。。。。。。。。。。7617511;7717711];(↑总共49行)a=addrule(a,rulelist);这几十行代码实现49条模糊控制规则的添。每一行代表一条规则由前5个数字来完成对规则的描数值1~7按顺序代表从NB到PB7个子集5个数的位置对应eeckpkik比如第一行前5个数字为1-1-7-1-5代表NB-NB-PB-NB-PS其对应的模糊规则为:If(eisNB)and(ecisNB)then(kpisPB)and(kiisNB)and(kdisPS。这个rulelist可以完全按照模糊控制规则,用数字代表7个字母符号列出来。这个rulelist也是通用。a=setfis(a’DefuzzMethod’’mom’);解模糊的算法设定为Mandani也可以改为Sugen。writefis(a’fuzzpid’);a=readfis(’fuzzpid’);这样子就生成了一个和上一小节完全一模一样的fuzzpid.fi。4.4.1.3 模糊判决器的使用这个模糊判决模块可以作为一个模块嵌入到Siulink模型编辑窗口当中在本章中可以看到其用这个模块还能被Matlab编程语言调用在第5章用Matlab程序进行模糊PID控制仿真的时候会用。4.4.2 建立系统模型模糊PID控制系统最核心的部分是模糊判决器,这个判决器可以作为一个模块放入到simulink模型编辑器中,在Matlable主窗口中输入fuzzy,弹出FISEditor,点击File→Export→ToWorkspace,把这个判决器添加到工作空间。然后在simulink模型编辑器中,按图4.4从库中选择模块,更改参数,连线,这样建立起模糊PID控制系统模型。从图中可以清楚地看出模糊控制对PID三个参数的调整作比如PID控制中的微分环节的输出ud=(Kd0+∆kd)×ec而在这个系统模型中ud=Kd0×ec+∆kd×ec与PID控制理论是一致。图4.4:模糊PID控制系统模型图4.5:模糊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论域为[-500,500。每次改变论域模糊判决器就发生改在Matlab6.5中进行仿真时,每次都必须在FISEditor中重新打开这个模糊判决器重新将其导入工作空间Siulink才能使用最新修改的模糊判决器来进行仿。这个系统的模糊PID控制的仿真结果没有实现对传统PID控制的改本人尝试着对三个PID初始参数以及5个论域进行调整但能得到的最佳组合就是上述的数按上述数值得到的仿真曲线与传统PID控制相比,超调减少,但控制系统达到的稳定时间要长些,如图4.5所示。4.5 关于动词PID控制Siulink仿真的一点说明模糊控制理论已经问世数十年在Matlab中已经集成了模糊判决器的模型可以对模糊判决器进行修改嵌入到Siulink模型编辑器中进行模糊控制的仿动词PID控制器目前还未大面积推广Matlab中没有相应的集成模块因此没有进行动词PID控制的Siulink仿。动词PID控制并不是无法用Siulink进行仿真只是难度比较高工作量比较大本人没有进行研究这里只简要介绍解决方Siulink模型编辑器里面除了可以放置Matlab已经定义的模块还可以放置用户自定义的模。在库浏览器Siulink库User-DefinedFunction子库中选S-Function拖放到模型编辑器这是一个空白的模块用户需要用Matlab程序语言编写一个文件程序里面描述用户需要定义的模块的功。比如在程序中编写计算动词PID动词推理过程,然后保存为erbPI.在Siulink模型编辑器中双击S-Function模块填写S-FunctionName为erbPI.S-Functionaameters的填写与m文件中的变量定义有写好动词推理S-Function程序在模型编辑器中设置好S-Function模块的属性就实现了动词推理算法嵌入到Siulink仿真。4.6 本章小结本章简要介绍电弧炉炉温控制系统以及Siulink仿真软用Siulink对该炉温进行传统PID和模糊PID控制的仿真由于动词PID推理模块嵌入到Siulink中工作量比较大本章没有对其进行仿真只是提出了一些解决思传统PID和模糊PID的仿真结果比较相似模糊PID没有对传统PID控制效果进行明显的改。5 用Matlab编写程序进行各种PID控制仿真本章用Matlab编写程序对控制对象进行传统PID模糊PID动词PID控制仿被控对象仍然是第4章所用过的炉温控制系统系统函数:(5.1)5.1 仿真程序流程图三个Matlab仿真程序的结构组成都列于图5.1。程序开始设定控制目标r,对被控对象的输入信号u、以及kp、ki、kd三个参数进行初始化,然后进入循环。由u作用于被控对象,对象的输出为yout,控制误差e=r-yout,误差变化率ec用e的差分表示,误差的积累用表示。如果是传统PID控制器,因为PID三个参数不变,所以直接用加法求出新的控制信号u,进行下一轮循环。图5.1流程图智能PID控制器在求出e和ec之后通过e和ec计算出∆kp∆ki和∆kd修正3个参数然后再进行加法求出u进入下一个循。模糊PID控制和动词PID控制仿真程序的不同在于修正3个PID参数的过模糊PID控制器通过查找模糊规则表然后K=K0+∆K而动词规则分别求出e的动态与七个标准动词的相似度∆k是七个输出动词在相似度上的加权平均然后修正参数Knext=Kcurrent+∆k.做完预设的循环次数后每一仿真时刻的youtkpkikd都有记录下来此时画出这四个变量随时间变化的曲线以供研究比。5.2 关键环节的算法图5.1已经描述了仿真程序的大纲其中一些加法减法乘法累加的环节非常容易理只有两个环节的算法比较复一个是由e和ec怎样计算出∆kp∆ki和∆kd针对模糊和动词控制规则有相应的计算方法在前面已经介。另外一个比较复杂的环节是如何由控制电压u得到输出yout本文仿真通过用ode45求解微分方程的方法来完由于选取的控制对象具有时滞在写微分方程时要对系统函数里时滞的部分进行近似所以用到一AD指令下面分别介。5.2.1 ode45求解微分方程[7]仿真程序中ode45的用法如下:TSAN=Ts*k:siuStep:Ts*(k+1);[t,x]=ode45(dynsys’,TSAN,x0);Ts是采样时间siuStep=Ts/4k是循环控制量TSAN把两次采样的时间间隔分成5个dynsys’是一个文件名dynsy.m文件里保存着描述被控对象特征的微分方程这些微分方程以状态空间的形式给出其中包含了输入u的影。˙=Ax+Bu (5.2)x是状态向量(列向量。TSAN是ode45解微分方程组的几个时间点x0是第一个时间点上系统的状态向这样进行ode45运算的结果产生了5个t和5个t是一维的也就是5个时间x的维数与系统的阶数相系统的输出yout是x的几个分量以及输入u的线性组。y=Cx+Du (5.3)ABCD是一些矩在已知系统的传递函数的情况下在Matlab主窗口中输入[A,,,D]=tf2ss([um],[den])即可得到这4个矩[um]和[den]是系统函数的分子和分。5.2.2 对延时的近似处理对无时滞的系统进行仿真时直接用tf2ss写出微分方程再写进dynsy.m文件在主程序里循环调用ode45函数即可进行仿。本文选用的被控对象具有208秒的延。无法直接根据系统函数写出微分方我采用的解决方法是,先把e−τs用Matlab指[NUM,DEN]=ADE(τ,N近似成一个N阶的不带指数的系统函数(N越大近似越精确再和原来系统函数中非时滞的部分相乘得到总的系统函数然后用TF2SS写出微分方。针对上面的系统在Matlab中输入“[NUM,DEN]=PADE(208,1)”得到NUM=[-10.0096]DEN=[10.0096],即用代替,则:(5.4)5.3传统PID控制仿真5.3.1调整过程及结果仿真程序的编写遵循图5.1的上中部设置PID三个参数并进行调PID参数的选取在第4.3.2小节已经提先令ki=0kd=0找到一个kp然后ki从0开始增大kp适当减小ki增大到能消除静态误差就行了不必一直调最后调kd再对kpkd进行联合调。调节三个参数观察在传统PID控制下误差e的变化情误差e的变化如图5.2所当Kp=80Ki=0.01Kd=800时误差变化如图所示。本文后面要拿智能PID控制的效果来和传统PID控制做比较为了统一标准智能PID控制结果都和传统PID来做对在响应时间差不多的情况下看智能PID对超调和振荡的控制效果如在这里传统PID控制超调量为15。图5.2:传统PID控制误差e变化图5.3:传统PID仿真结果5.3.2关于两种不同仿真方法的说明用编程语言仿真时得到的一组参数和用Siulink仿真时得到的一组参数有些差这个控制对象本身带有208秒的时滞控制达到稳定需要几千秒的时程序是用循环来做的我选取Ts=20秒k=0~400仿真4000秒只需要200次循为了减少每次仿真程序运行的时间只能这而Siulink里面计算精度比较高取样时间不同导致仿真方法调试出来的参数不同但在数量级上是一致。误差刚开始是1,这是我写程序时没有采用延时的近似处理,这样更与实际情况贴合,图5.2、图5.3可以反映出实际情况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=alfis([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参数调整及仿真结果图5.4:模糊PID仿真结果图5.5:模糊PID的误差变化图5.6:kp、ki、kd自适应曲线从图5.4与图5.3比较中可以看出在响应时间差不多的情况下模糊PID比传统PID超调有所减小超调量大概5kpkikd的自整定曲线如图5.5。由以上图形,可以知道:(1)模糊PID控制所得到的结果和传统的很接近。(2)模糊PID在调整3个参量的时候有一个调整的空间,因此利用模糊PID进行控制时,得到参数会比用传统PID方法来的更快。(3)曲线开始略微上翘,是由于程序对延迟模块采用了一阶近似产生的误差。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。5.5.1.1程序模块及其仿真(1)基于动词规则的模糊隶属度仿真程序如下:en=e/abs(e(1));enabs=abs(en);muB=max(0,1+(enabs-1)-abs(enabs-1));muM=max(0,1+(enabs-0.5)-3*abs(enabs-0.5));muS=max(0,1-4*(enabs-0.25));muZ=max(0,1-4*(enabs));动词相似度的求取(以动词become(big;medium)为例):Ab=0;Bb=0;n=round(rmw/2);forj=1:nEb(j)=1-0.5(j/n);endAm=0;Bm=0;forj=n:rmwEm(j)=0.5+0.5*(j-n)/n;Am=Am+min(Em(j),muM(bprt+j));Bm=Bm+max(Em(j),muM(bprt+j));endsb=Ab/(Bb+Bm);sm=Am/(Bb+Bm);Balance=2*min(sb,sm);s2(k+1)=(Ab+Am)/(Bb+Bm)*Balance;其中:①E(j)=1-0.5*(j/n)和E(j)=0.5+0.5*(j/n)是描述动词的一个进化函数,选取了一个比较简单的形式,②S2是所得到的计算动词相似度。将所用的动词和7条动词规则的动词进行类似的计算,就可以算出7个动词相似度。分别为S1、S2、S3、……S7。(3)解动词化经过动词推理过后,可

温馨提示

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

评论

0/150

提交评论