毕业论文 基于matlab的智能PID控制器的设计与仿真
引言
PID控制器以其结构简单、稳定性好、工作可靠、调整方便等优点被广泛应用于工业控制系统,但现代工业控制系统越来越复杂,被控对象往往表现出时滞、非线性、时变性,控制要求越来越高,传统的PID控制器难以满足现代工业控制的需求,智能型PID控制器呈现出广阔的发展空间。模糊PID控制器是模糊控制器和PID控制器的有效结合,它兼具模糊控制和PID控制的优点;动词PID控制器是在模糊PID控制器的基础上实现了控制规则“动词化”,对模糊PID控制进行了一些改进。目前动词PID控制器用于实际的工业控制系统还不多,本文的研究也仅处于软件仿真阶段。
1. PID 控制器
1.1 PID 控制器的概念[1] 1.1.1 PID 控制原理
PID 控制器是一种线性闭环控制器,它根据给定输入值r in (t )与实际输出值y out (t )构成控制偏差
()()()error t rin t yout t =- (1.1)
PID 的控制信号u(t)由errot(t)及其对时间的积分、微分三部分联合作用产生:
010
()1()(()())()
(()()t
D p t
p i d
T derrot t u t k error t errot t dt T dt
derrot t k error t k errot t dt k dt
=+
+=++?? (1.2)
PID 控制器最终理想的控制效果是errot(t)=0,即y out (t ) = r in (t )。将控制器写成传递函数的形式:
()11
()(1)()p D p i d I U s G s k T s k k k s E s T s s =
=++=++
(1.3)
式中,k p ――比例系数,T I ――积分时间常数,T D ――微分时间常数;统一用
比例系数表 示,k i 为积分比例系数,k d 为微分比例系数:
,p i d p D
I
k k k k T T =
=
1.1.2
PID 三个环节的作用
比例、微分、积分各个环节的作用: (1)k p :减小系统的误差,加快系统的响应速度。 (2)k i :消除系统的静态误差,决定积分作用的强弱。
(3)k d :抵制偏差信号的变化趋势,对偏差进行提前预报,减少调节时间。
1.2 PID 控制器的种类
PID 控制器有传统PID 控制器、模糊PID 控制器、专家PID 控制器、以及动词PID 控制器等几类。
1.2.1 传统PID 控制器
PID 控 制 器 的 参 数 整 定 是 控 制 系 统 设 计 的 核 心。图1.1中 的PID 控 制 器 表 示 的 就 是 传 统PID 控制器,其k p 、k i 、k d 三个参数在控制过程中不会自动发生变化,操作人员只能根据控制对象的特性在系统开始工作时选择最优的三个参数。但仅靠一组参数还不能满足系统的要 求,在控制过程中一般还要手动对参数进行修改,由此造成了极大的不方便。工业中实际应用 的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 (e is NB) and (ec is NB) then (k p is PB)and (k i is NB) and (k d is PS)。
由于e和ec都有7个子集元素,总共有49种自由组合,因此模糊控制总共有49条这样形式的规则。k p 、k i 、k d三个参数整定的模糊控制规则表如表2.1。
k p的模糊控制规则表
?K p
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
k i的模糊控制规则表
?K i
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
k d的模糊控制规则表
?K d
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 参数:
p p p K K K ?+=+1
i i i K K K ?+=+1
d d d K K K ?+=+1
2.2.2 模糊推理[2]
模糊判决器读取e 和ec 的具体数值,进行模糊推理,然后输出三个K 的具体数值,有很多 算法。这里介绍一种强度转移法。所谓强度转移法,就是当控制系统有精确值输入时,精确值 在条件语句的前件中所得到的语言变量转移到后件的语言变量值去,从而得到推理结果的过 程。以k p 的推理为例。步骤为:
(1)前件强度的求取
为了简化而清晰地说明推理过程,我们假设误差e(k)及其变化率ec(k)分 别最多对应2个语言变量值,设e(k)的 两个语言变量值为A 1 、A 2,且对模糊 变量A 1 、A 2的隶属度为u A 1 (e )、u A 2 (e ),ec(k)的两个语言变量值为B 1 、B 2,且对这两个模糊变量的隶属度为u B 1 (ec )、u B 2 (ec ),控制规则如下:
if e(k) is A 1 and ec(k) is B 1 then k p is C 1 if e(k) is A 1 and ec(k) is B 2 then k p is C 2 if e(k) is A 2 and ec(k) is B 1 then k p is C 3 if e(k) is A 2 and ec(k) is B 2 then k p is C 4
从以上4条规则中,可产生出模糊推理的前件强度为:
u 1 = u A 1 (e )∧ u B 1 (ec )
u 2 = u A 1 (e ) ∧ u B 2 (ec ) u 3 = u A 2 (e ) ∧ u B 1 (ec ) u 4 = u A 2 (e ) ∧ u B 2 (ec )
(2)后件强度的求取由于在强度转移法中,是把精确值对前件的作用强度转移到
后件中去,并作为后件模糊量k p i 的隶属度,因此,依前件强度可得后件强度为:
u C1 (k p1 ) = u 1
u C2 (k p2 ) = u 2 u C3 (k p3 ) = u 3 u C4 (k p4 ) = u 4
(3) 精确值k p 的求取:
根据k p 的语言变量值和隶属度的解析表达式求出k p 1 、k p 2 、k p 3 、k p 4 。它们分别为C 1 、C 2 、C 3和C 4在隶属度为u 1 、u 2 、u 3和u 4时的推理结果元素,则利用重心法可求得:
1234
12341234
p p p p p u k u k u k u k k u u u u ?+?+?+?=
+++ (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”可以表示成become fast(current,bigger than current),stay 的形式。比如
high可以表示成become(high,high)等等。参数不一样,become所表示的动词效果就不一样。
7条计算动词规则如下:其中Z、S、M、B分别代表zero、small、medium、big。
(1)If(|e| become(Z,Z))then(k p become(S,B),k i become(B,S),k d become(S,B))
(2)If(|e| become(B,M))then(k p become fast(B,S),k i become fast(B,S),k d become
fast(S,B))
(3)If(|e| become(M,S))then(k p become(B,S),k i become(B,S),k d become(S,B))
(4)If(|e| become(S,Z))then(k p become slow(B,S),k i become slow(B,S),k d become
slow(S,B))
(5)If(|e| become(Z,S))then(k p become slow(S,B),k i become slow(S,B),k d become
slow(B,S))
(6)If(|e| become(S,M))then(k p become(S,B),k i become(S,B),k d become(B,S))
(7)If(|e| become(M,B))then(k p become fast(S,B),k i become fast(S,B),k d become
fast(B,S))
3.2 动词相似度
error-
=时间并不是完全等在控制过程中,e的变化大部分(
t
rin
)(t
yout
同于上述的某一个规则中的前件条件;但反过来说,任一时刻,肯定能在上述七条规则的前件条件中中,找到一个和e的变化趋势最相似的become。
用“动词相似度(similarities)”来恒量各个动词之间的关系。动词相似度是一个数值,取值范围[0,1],相似度越接近1表示这两个动词相似的程度越大,相似度越接近0则表示越不相像。 在动词控制规则里,可以把前件条件里的7个动词定义为7个标准动词,控制过程中观察到的 动词都和这些标准动词做比较。动词推理的输出也定义成几个标准输出动词。
3.2.1 基于进化函数的动词相似度的计算[4]
上一节提到,所有动词都可以用Become 来进行规范化。在计算动词相似度之前,首先定 义Become 的进化函数:
????
??
?
∈=∈∈-=∈=],2(,],2[)),((]2,0[,]2,0[)),((21
)
2,1(w w w w
w state w w w w state state state become T T t T t T T t t x T t T t T T t t x μμε (3.1)
其离散时间形式为(假设T w = wT s ):
??????
?Z ∈∈Z ∈∈-=w w w k w k w w k w k
w state state become ],,2(,],2
,0[,)
2,1(ε (3.2)
become(state 1, state 2)的时间跨度取T w ,x(t)是观察到的波形,一个被观
察的动词的进化函数:
???
??
?
???
∈-∈--∈=其他未定义,τττμττμε]
,2()),((]2
,[)),((21
)
2,1(t T t x T t T t x w state w w state state state become (3.3)
t 是 当 前 时 间,观 察 动 词 是 从 过 去 某 个 时 间 开 始 的。计 算 动 词 进 化 函 数 的 构 造 需 要 依 赖 以 下 两 个 因 素:名 词 中 心 和 物 理 语 义 学 的
动 词 中 心。现 在 来 求“observed ”这 个 动 词 和become(state 1, state 2) 的 相 似 度,首 先 把become(state 1, state 2) 的 开 始 时 间 定 在(t ? T w )时刻。求动词的相似度首先将T w 分成state 1和state 2两个区间,再按以下几个步骤 进行运算。
1)在前半个区间求出a 1和b 1
?+-∧?20
1)()(w T w observed become d T t a τ
τετε
?+-∨?201)()(w T w o b s e r v e d b e c o m e d T t b τ
τετε (3.4)
2)在后半个区间求出a 2和b 2:
?+-∧?w
w T T w observed become d T t a 2
2)()(τ
τετε
?+-∨?w
w T T w observed become d T t b 2
2)()(τ
τετε (3.5)
3)平衡因子 e
),min(2~212211b b a b b a w
++= (3.6)
4)在整个T w 范围内求相似度:
w
b b a a observed become S ~
),(2121++=
(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 变化趋势的相似度 一个观察到的动词与“增大”这个动词的相似度可以表示成:
11),(0???
-+=
??x K x e
S (3.8)
式中,?x 是一个运动对象相邻两个时间点上的位移差,即变化量;?0是设定的一个标准 变化量;K 在计算中是一个常量,在不同的场合可以取不同的值。?0取0.5,K 取6时,画出不同 的观察动词与"增大0.5"的相似度。如图3.2。 这 种 动 词 相 似 度 的 求 法 适 合 于 计 算 动 词 的(2)~(7)号 控 制 规 则,不 同
的 规 则 对 应 不 同 的?0和K,求“增大”的相似度时,K ×
?x 的前面需要一个负号,求“减小”的相似度时,不 用负号。但这个算法不适合于求与“e Become(Zero,Zero)”的相似度,因为当 e stay Zero 时,其?0为0,而在式3.8中,?0是一个分母,所以与这条规则相对应的动词相似度的求解采用另外一种算法。
x
K e
stay x ??+=
?12)0,(S (3.9)
图 3.2: 动词与"增大0.5"的相似度
K 取5时,观察到的不同动词与"stay Zero"的相似度如图3.3。
图 3.3: 动词与"stay Zero"的相似度
3.2.2.2 起始位置的相似度
观察到的动词的起始位置为offse t observed ,定义标准动词的起始位置为offse t 0,计算起始 位置的相似度我采用如下算法:
)
)(*1,0max(0p observed offset offset offset K S --= (3.10)
p 取正偶数。当K=10,p=2,offse t 0=0.8(假设起始位置为big)时,画出不同的起始位置与起始 位置为big 的相似度。如图3.4。
图 3.4: 起始位置与big 的相似度
起始位置的相似度与模糊隶属度函数有相似之处。
3.3
动词控制规则的实现[4]
计算动词规则的推理建立在动词相似度的基础上,在控制过程中,观察控制误差e 的变化 趋势,求出e 和7个标准动词的相似度。控制器的输入和输出都是动词形式。控制规则是这样的:If(e become 0i ) Then(?k V i ),输出的动词V y 是7个标准输出动词V i (i=1~7)以相似度为权的 加权平均量。
∑∑==?=
71
07
10)
,(),(i i observed
i i i observed
y
become become
S V become become S V (3.11)
公式的形式与模糊推理强度转移法中重心法(式2.1)的形式有相似之处。这种加权平均的 算法符合控制需求,e 的变化和哪个规则中的前件条件最相似,控制输出就和那个规则的K 的 变化最相近。 在求出?k 之后,PID 三个参数的修正方式为:K next = K current + ?k 。
4 用Simulink 进行PID 控制仿真
4.1
炉温控制简介
4.1.1 背景
随着工业的快速发展,钢铁的需求量越来越大。而对于生产钢铁的最重要的一环——高炉——的要求也越来越高。
在钢铁的冶炼的过程中,越来越多地使用交流电弧炉设备,温度控制系统的性能直接影响到钢铁的质量,所以炉温控制占据重要的位置。PID 控制是温度控制系统中一种典型的控制方式,是在温度控制中应用最广泛、最基本的一种控制方式。随着科学技术的发展,各行各业对温度控制精度的要求越来越高,经典PID 在某些场合已经不能满足要求。因此,智能PID 控制的引入时精密温度控制
系统的发展趋势。为了改善电弧炉系统恒温控制质量的现状,研制具有快速响应的、经济性好的、适合国情的恒温控制装置具有十分重要的意义。
4.1.2 系统函数
高炉温度控制系统具有非线性、时变性、滞后性等特性。根据实际测量,被控对象近似一阶惯性加滞后模型:
s
e s s G 2088331623.0)(-=
(4.1)
4.2
Simulink 简介[3]
Simulink 是个交互式动态系统建模、仿真和分析图形环境,是一
个进行基于模型的嵌入 式系统开发的基础开发环境。Simulink 可以针对控制系统等进行系统建模、仿真、分析等工 作。Simulink 提供了一个建立控制系统方框图,并对系统进行模拟仿真的环境。在Mablab6.5的命令主窗口中单击File →New →Model ,即可打开如图 4.1所示的Simulink 模型编辑窗口。在Simulink 模型编辑窗口中单击View →Library browser ,即可打开如图4.2所示 的Simulink 库浏览窗口。
根据控制系统的结构,用户可以从模型库中选择所需要的各种模块,按要求连接、修改各 模块的参数,建立系统模型。
图4.1:simulink 模型编辑窗口
图4.2:simulink库浏览器
4.3 传统PID控制Simulink仿真
4.3.1 建立系统模型
在模型库中,从Simulink库Continuous子库中选择Derivative、I ntegrator、
T ransfer Fcn、Transport Delay模块,从Math Operations子库中选择Gain、Sum模块,Sinks子库中选择Scope,Sources子库中选择Step,放到模型编辑窗口。各个模块的属性都可通过双击该模块进行更改。按图4.1更改各模块属性,连线,就建立了一个传统PID控制系统模型。其中Step阶跃信号幅值为1,T ransport Delay为208秒。
在模型编辑器中选择“start simulink”,就可以开始进行仿真。仿真波形可以
双击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中,即k p=18,k i=0.015,k d=1000。温度变
化波形如图4.3。大约3000秒控制达到稳定,超调量30%。
Simulink的Scope中的响应曲线原本是黑色背景,黄色曲线。为了便于浏览,本人做了一些反色的处理,后面的图4.5也进行了同样的处理,不再重复说明。
图4.3:传统PID仿真
4.4 模糊PID控制Simulink仿真
4.4.1 在Matlab中建立模糊判决器
4.4.1.1 用FIS Editor建立模糊判决器[3]
在Matlab主窗口中输入fuzzy,弹出FIS Editor,这是一个新建的空白的FIS,如图2.3所示。解模糊算法默认是Mamdani法,如果要改变算法,Matlab提供
的另一种算法为Sugeno。在新建FIS时,点击FileNew FISSugeno即可。
图2.3:FIS Editor
点击EditAdd variableinput(或output),添加判决器的输入和输出,我们使用的模糊PID判决器是2个输入3个输出。把这5个变量(variable)的名字(Name)
改成e、ec、kp、ki和kd。双击任一个variable ,弹出Membership Function Editor,
可以设定这个variable 的取值范围(range)。如图2.4所示。新建的variable默认只有3个子集,在Membership Function Editor中点击EditAdd MFs ,添加子集,加到7个。按照模糊隶属度设定每个子集的名字(Name)、形状(Type)和覆盖范围(Params)。
添加规则:在FIS Editor中点击EditRules,弹出Rule Editor。如图2.5所示。
新建的模糊判决器有0条规则,按照模糊控制规则表,使用Rule Editor底部的“添加规则(Add rule)”和“修改规则(Change rule)”按钮设定模糊控制的49条规则。先添加条数,再按规则修改。最后将该FIS保存,在FIS Editor中点击FileExportTo Disk,保存为fuzzpid.?s 。
图2.4:Membership Function Editor
图2.5:Rule Editor
4.4.1.2 用Matlab程序生成模糊判决器[1]
用Matlab程序语言也能生成和上一节一模一样的fuzzpid.fis。a=ne wfis(’fuzzpid’);建立一个新的FIS,取名fuzzpid。
escale=1;
a=addvar(a,’input’,’e’,[-3*escale,3*escale]);添加variable
a=addmf(a,’input’,1,’NB’,’zm f’,[-3*escale,-1*escale]);本行往下共7行分别添加MFs a=addmf(a,’input’,1,’NM’,’t rimf’,[-3*escale,-2*escale,0]);
a=addmf(a,’input’,1,’NS’,’t rimf’,[-3*escale,-1*escale,1*escale]);
a=addmf(a,’input’,1,’Z’,’t rimf’,[-2*escale,0,2*escale]);
a=addmf(a,’input’,1,’PS’,’t rimf’,[-1*escale,1*escale,3*escale]);
a=addmf(a,’input’,1,’PM’,’t rimf’,[0,2*escal e,3*escale]);
a=addmf(a,’input’,1,’PB’,’smf’,[1*escal e,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比用FIS Edit还快。FIS Edit虽然有友好的用户界面,但每个variable、每个mfs、49条规则都要一一输入;而上述程序具有通用性,比如e的range变为[-30,30],只需要将escale赋值为10即可。ec、kp、ki、kd的scale的更改完全类似。
rulelist=
[1 1 7 1 5 1 1;
1 2 7 1 3 1 1;
。。。。。
。。。。。
7 6 1 7 5 1 1;
7 7 1 7 7 1 1];
(↑总共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 (e is NB) and (ec is NB) then (k p is PB)and (k i is NB) and (k d is PS)。
这个rulelist可以完全按照模糊控制规则,用数字代表7个字母符号列出来的。这个rulelist也是通用的。
a=setfis(a,’DefuzzMethod’,’mom’);解模糊的算法设定为Mandani,也可以改为Sugeno。
writefis(a,’fuzzpid’);
a=readfis(’fuzzpid’);
这样子就生成了一个和上一小节完全一模一样的fuzzpid.fis。
4.4.1.3 模糊判决器的使用
这个模糊判决模块,可以作为一个模块嵌入到Simulink模型编辑窗口当中,在本章中可以看到其用法。这个模块还能被Matlab编程语言调用,在第5章用Matlab程序进行模糊PID控制仿真的时候会用到。
4.4.2 建立系统模型
模糊PID控制系统最核心的部分是模糊判决器,这个判决器可以作为一个模块放入到simulink模型编辑器中,在Matlable主窗口中输入fuzzy,弹出FIS Editor,点击File→Export→To Workspace,把这个判决器添加到工作空间。然后在simulink模型编辑器中,按图4.4从库中选择模块,更改参数,连线,这样建立起模糊PID控制系统模型。从图中可以清楚地看出模糊控制对P、I、D三个参数的调整作用。比如PID控制中的微分环节的输出u d = (K d0 + ?k d) × ec,而在这个系统模型中,u d = K d0 × ec + ?k d × 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的初始值,那初始值的设定就没什么意义了。
设置?k p论域为[-0.15,0.15],?k i论域为[-0.003,0.003],?k d论域为[-500,500]。每次改变论域,模糊判决器就发生改变。在Matlab6.5中进行仿真时,每次都必须在FISEditor 中重新打开这个模糊判决器,重新将其导入工作空间,Simulink 才能使用最新修改的模糊判决器来进行仿真。
这个系统的模糊PID控制的仿真结果,没有实现对传统PID控制的改进。本人尝试着对三个PID初始参数以及5个论域进行调整,但能得到的最佳组合就是上述的数值。按上述数值得到的仿真曲线与传统PID控制相比,超调减少,但控制系统达到的稳定时间要长些,如图4.5所示。
4.5 关于动词PID控制Simulink仿真的一点说明
模糊控制理论已经问世数十年,在Matlab中已经集成了模糊判决器的模型,可以对模糊判决器进行修改,嵌入到Simulink模型编辑器中,进行模糊控制的仿真。动词PID控制器目前还未大面积推广,Matlab中没有相应的集成模块,因此没有进行动词PID控制的Simulink仿真。动词PID控制并不是无法用Simulink进行仿真,只是难度比较高,工作量比较大,本人没有进行研究,这里