5大学本科方案设计书基于matlab的智能PID控制器的方案设计书与仿真.docx
《5大学本科方案设计书基于matlab的智能PID控制器的方案设计书与仿真.docx》由会员分享,可在线阅读,更多相关《5大学本科方案设计书基于matlab的智能PID控制器的方案设计书与仿真.docx(20页珍藏版)》请在冰豆网上搜索。
5大学本科方案设计书基于matlab的智能PID控制器的方案设计书与仿真
封面
作者:
PanHongliang
仅供个人学习
引言
PID控制器以其结构简单、稳定性好、工作可靠、调整方便等优点被广泛应用于工业控制系统,但现代工业控制系统越来越复杂,被控对象往往表现出时滞、非线性、时变性,控制要求越来越高,传统的PID控制器难以满足现代工业控制的需求,智能型PID控制器呈现出广阔的发展空间。
模糊PID控制器是模糊控制器和PID控制器的有效结合,它兼具模糊控制和PID控制的优点;动词PID控制器是在模糊PID控制器的基础上实现了控制规则“动词化”,对模糊PID控制进行了一些改进。
目前动词PID控制器用于实际的工业控制系统还不多,本文的研究也仅处于软件仿真阶段。
1.PID控制器
1.1PID控制器的概念[1]
1.1.1PID控制原理
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.2PID三个环节的作用
比例、微分、积分各个环节的作用:
(1)kp:
减小系统的误差,加快系统的响应速度。
(2)ki:
消除系统的静态误差,决定积分作用的强弱。
(3)kd:
抵制偏差信号的变化趋势,对偏差进行提前预报,减少调节时间。
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模糊控制规则[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(eisNB)and(ecisNB)then(kpisPB)and(kiisNB)and(kdisPS)。
由于e和ec都有7个子集元素,总共有49种自由组合,因此模糊控制总
共有49条这样形式的规则。
kp、ki、kd三个参数整定的模糊控制规则表如表2.1。
kp的模糊控制规则表
∆Kp
ec
NB
NM
NS
ZO
PS
PM
PB
e
NB
ZO
ZO
NM
NM
NM
NB
NB
NM
PS
ZO
NS
NM
NM
NM
NB
NS
PS
PS
ZO
NS
NS
NM
NM
ZO
PM
PM
PS
ZO
NS
NM
NM
PS
PM
PM
PM
PS
ZO
NS
NS
PM
PB
PB
PM
PS
PS
ZO
NS
PB
PB
PB
PM
PM
PS
ZO
ZO
ki的模糊控制规则表
∆Ki
ec
NB
NM
NS
ZO
PS
PM
PB
e
NB
NB
NB
NM
NM
NS
ZO
ZO
NM
NB
NB
NM
NS
NS
ZO
ZO
NS
NB
NM
NS
NS
ZO
PS
PS
ZO
NM
NM
NS
ZO
PS
PM
PM
PS
NM
NS
ZO
PS
PS
PM
PB
PM
ZO
ZO
PS
PS
PM
PB
PB
PB
ZO
ZO
PS
PM
PM
PB
PB
kd的模糊控制规则表
∆Kd
ec
NB
NM
NS
ZO
PS
PM
PB
e
NB
PB
PM
PM
PM
PS
PS
PB
NM
PB
NS
PS
PS
PS
PS
PB
NS
ZO
ZO
ZO
ZO
ZO
ZO
ZO
ZO
ZO
NS
NS
NS
NS
NS
ZO
PS
ZO
NS
NM
NM
NS
NS
ZO
PM
PS
NS
NB
NM
NM
NS
ZO
PB
PS
NS
NB
NB
NB
NM
PS
表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)的两个语言变量值为B1、B2,且对这两个模糊变量的隶属度为uB1(ec)、uB2(ec),控制规则如下:
ife(k)isA1andec(k)isB1thenkpisC1
ife(k)isA1andec(k)isB2thenkpisC2
ife(k)isA2andec(k)isB1thenkpisC3
ife(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)
(2)后件强度的求取由于在强度转移法中,是把精确值对前件的作用强度转移到后件中去,并作为后件模糊量kpi的隶属度,因此,依前件强度可得后件强度为:
uC1(kp1)=u1
uC2(kp2)=u2
uC3(kp3)=u3
uC4(kp4)=u4
(3)精确值kp的求取:
根据kp的语言变量值和隶属度的解读表达式求出kp1、kp2、kp3、kp4。
它们分别为C1、C2、C3和C4在隶属度为u1、u2、u3和u4时的推理结果元素,则利用重心法可求得:
(2.1)
当误差e(k)和误差变化率ec(k)具有多个语言变量值时,其推导过程与上述过程相似。
模糊推理中,在求解前件强度和后件强度时,对e,ec以及PID三个参数的描述,都是用名词来表示。
这些名词不能互相包含,因此模糊控制的49条规则各不相同,缺一不可。
3动词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。
(1)If(|e|become(Z,Z))then(kpbecome(S,B),kibecome(B,S),kdbecome(S,B))
(2)If(|e|become(B,M))then(kpbecomefast(B,S),kibecomefast(B,S),kdbecomefast(S,B))
(3)If(|e|become(M,S))then(kpbecome(B,S),kibecome(B,S),kdbecome(S,B))
(4)If(|e|become(S,Z))then(kpbecomeslow(B,S),kibecomeslow(B,S),kdbecomeslow(S,B))
(5)If(|e|become(Z,S))then(kpbecomeslow(S,B),kibecomeslow(S,B),kdbecomeslow(B,S))
(6)If(|e|become(S,M))then(kpbecome(S,B),kibecome(S,B),kdbecome(B,S))
(7)If(|e|become(M,B))then(kpbecomefast(S,B),kibecomefast(S,B),kdbecomefast(B,S))
3.2动词相似度
在控制过程中,e的变化大部分时间并不是完全等同于上述的某一个规则中的前件条件;但反过来说,任一时刻,肯定能在上述七条规则的前件条件中中,找到一个和e的变化趋势最相似的become。
用“动词相似度(similarities)”来恒量各个动词之间的关系。
动词相似度是一个数值,取值范围[0,1],相似度越接近1表示这两个动词相似的程度越大,相似度越接近0则表示越不相像。
在动词控制规则里,可以把前件条件里的7个动词定义为7个标准动词,控制过程中观察到的动词都和这些标准动词做比较。
动词推理的输出也定义成几个标准输出动词。
3.2.1基于进化函数的动词相似度的计算[4]
上一节提到,所有动词都可以用Become来进行规范化。
在计算动词相似度之前,首先定义Become的进化函数:
(3.1)
其离散时间形式为(假设Tw=wTs):
(3.2)
become(state1,state2)的时间跨度取Tw,x(t)是观察到的波形,一个被观察的动词的进化函数:
(3.3)
t是当前时间,观察动词是从过去某个时间开始的。
计算动词进化函数的构造需要依赖以下两个因素:
名词中心和物理语义学的动词中心。
现在来求“observed”这个动词和become(state1,state2)的相似度,首先把become(state1,state2)的开始时间定在(t−Tw)时刻。
求动词的相似度首先将Tw分成state1和state2两个区间,再按以下几个步骤进行运算。
1)在前半个区间求出a1和b1
(3.4)
2)在后半个区间求出a2和b2:
(3.5)
3)平衡因子e
(3.6)
4)在整个Tw范围内求相似度:
(3.7)
对观察到的动词取不同的隶属度,分两个区间分别与标准进化函数进行“∧”和“∨”运算,不同的计算动词规则的相似度的求取中,用来与标准进化函数进行“∧”和“∨”运算的被观察动词的进化函数是不一样的,运算的结果进行积分,积分相当于求面积。
将两个窗口“∧”的面积相加,“∨”的面积也相加,相似度是“∧”的总面积与“∨”的总面积之比。
这个比值越大,说明观察动词与标准动词的相似度越大。
比如,取state1=big,state2=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.5,K取6时,画出不同的观察动词与"增大0.5"的相似度。
如图3.2。
这种动词相似度的求法适合于计算动词的
(2)~(7)号控制规则,不同的规则对应不同的∆0和K,求“增大”的相似度时,K×∆x的前面需要一个负号,求“减小”的相似度时,不用负号。
但这个算法不适合于求与“eBecome(Zero,Zero)”的相似度,因为当estayZero时,其∆0为0,而在式3.8中,∆0是一个分母,所以与这条规则相对应的动词相似度的求解采用另外一种算法。
(3.9)
图3.2:
动词与"增大0.5"的相似度
K取5时,观察到的不同动词与"stayZero"的相似度如图3.3。
图3.3:
动词与"stayZero"的相似度
3.2.2.2起始位置的相似度
观察到的动词的起始位置为offsetobserved,定义标准动词的起始位置为offset0,计算起始位置的相似度我采用如下算法:
(3.10)
p取正偶数。
当K=10,p=2,offset0=0.8(假设起始位置为big)时,画出不同的起始位置与起始位置为big的相似度。
如图3.4。
图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用Simulink进行PID控制仿真
4.1炉温控制简介
4.1.1背景
随着工业的快速发展,钢铁的需求量越来越大。
而对于生产钢铁的最重要的一环——高炉——的要求也越来越高。
在钢铁的冶炼的过程中,越来越多地使用交流电弧炉设备,温度控制系统的性能直接影响到钢铁的质量,所以炉温控制占据重要的位置。
PID控制是温度控制系统中一种典型的控制方式,是在温度控制中应用最广泛、最基本的一种控制方式。
随着科学技术的发展,各行各业对温度控制精度的要求越来越高,经典PID在某些场合已经不能满足要求。
因此,智能PID控制的引入时精密温度控制系统的发展趋势。
为了改善电弧炉系统恒温控制质量的现状,研制具有快速响应的、经济性好的、适合国情的恒温控制装置具有十分重要的意义。
4.1.2系统函数
高炉温度控制系统具有非线性、时变性、滞后性等特性。
根据实际测量,被控对象近似一阶惯性加滞后模型:
(4.1)
4.2Simulink简介[3]
Simulink是个交互式动态系统建模、仿真和分析图形环境,是一个进行基于模型的嵌入式系统开发的基础开发环境。
Simulink可以针对控制系统等进行系统建模、仿真、分析等工作。
Simulink提供了一个建立控制系统方框图,并对系统进行模拟仿真的环境。
在Mablab6.5的命令主窗口中单击File→New→Model,即可打开如图4.1所示的Simulink模型编辑窗口。
在Simulink模型编辑窗口中单击View→Librarybrowser,即可打开如图4.2所示的Simulink库浏览窗口。
根据控制系统的结构,用户可以从模型库中选择所需要的各种模块,按要求连接、修改各模块的参数,建立系统模型。
图4.1:
simulink模型编辑窗口
图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更改各模块属性,连线,就建立了一个传统PID控制系统模型。
其中Step阶跃信号幅值为1,TransportDelay为208秒。
在模型编辑器中选择“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=18,ki=0.015,kd=1000。
温度变化波形如图4.3。
大约3000秒控制达到稳定,超调量30%。
Simulink的Scope中的响应曲线原本是黑色背景,黄色曲线。
为了便于浏览,本人做了一些反色的处理,后面的图4.5也进行了同样的处理,不再重复说明。
图4.3:
传统PID仿真
4.4模糊PID控制Simulink仿真
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:
RuleEditor
4.4.1.2用Matlab程序生成模糊判决器[1]
用Matlab程序语言也能生成和上一节一模一样的fuzzpid.fis。
a=newfis(’fuzzpid’)。
建立一个新的FIS,取名fuzzpid。
escale=1。
a=addvar(a,’input’,’e’,[-3*escale,3*escale])。
添加variablea=addmf(a,’input’,1,’NB’,’zmf’,[-3*escale,-1*escale])。
本行往下共7行分别添加MFs
a=addmf(a,’input’,1,’NM’,’trimf’,[-3*escale,-2*escale,0])。
a=addmf(a,’inp