变论域模糊pid控制算法的设计及仿真*
2018-12-28陈毅维徐淑萍懂齐宇
陈毅维 徐淑萍 懂齐宇
摘要:为了便于研究变论域模糊pid控制算法,总结了3种可以在matlab/simulink下实现该算法的仿真方法。仿真结果表明,在对步进电机的控制中,模糊pid算法对常规pid算法性能改善有限,而变论域模糊pid算法能显著改善常规pid算法的性能。基于s-funciton的仿真方法更具灵活性,但要求一定的matlab基礎;基于函数模型的仿真方法实现简单,容易上手;基于模糊规则的仿真方法曲线整体趋势可控,但是细节上不确定。
关键词:变论域;模糊pid;仿真方法
变论域思想[1]是在不改变模糊规则的前提下,使输入、输出的基本论域按照一定准则,随着误差的变小而收缩、随着误差的变大而扩展,随之带动定义在基本论域上的模糊划分的变化。它一般利用伸缩因子对输入、输出变量的值进行缩放的形式,达到等效于变论域效果的目的。能够有效的解决模糊控制器在设计与控制时出现的给定控制值附近的周期性波动、抗干扰性差等问题,并消除控制死区,以促使控制效果更好。变论域思想的实现[2],在几何上表现为:论域缩放导致的隶属函数的伸缩;在代数上表现为:自变量值的伸缩变化导致因变量的值的变化;在控制上表现为:论域的伸缩导致规则密度的改变。
要用matlab/simulink仿真,通常有三种方法,但是文献中,一般只介绍基于函数模型、基于模糊规则的伸缩因子[1-5],且没有具体仿真方法,这给刚刚接触该算法的人带来了不必要的麻烦与开销,本文的目的在于使刚接触到该算法的人能快速熟悉其仿真。
1变论域模糊控制原理
设输入变量xi(i=1,2,…,n)的论域为Xi=[-E,E](i=1,2,…,n),输出变量y的论域为Y=[-U,U],Xi与Y的模糊划分为{Aij}、{Bj}(1≤j≤m), Xij与Yj是模糊集Aij和Bj的中心,xk与yk+1分别是k时刻的输入、输出变量,ai(xi)与β(y)为输入和输出论域的伸缩因子(k=0时,α=β=1),模糊推理规则为
IF x1 is A1j and x2 is A2j and … and xn is Anj,
Then y is Bj, j =1, …, m ,其中
在控制过程中,输入论域Xki、输出论域Yk分别为:
(1)
(2)
为了便于讨论,采用单值模糊器,其模糊规则可以表示为:
(3)
其中 是模糊集Aij上的隶属度函数。
在k时刻,对于输入xk,有
(4)
(5)
由式(1),(4)得,
于是有,
(6)
故根据式(3),(5),(6),可得变论域模糊控制算法规则,描述如下:
在k时刻,对于输入 ,其控制器输入为
(7)
由(7)式可知,只需要使用k=0时刻的隶属度函数 、初始输出论域Y0上的模糊集Bj的中心,以及响应的伸缩因子,便可以计算得到输出yk+1。
图1是变论域示意图,看图中虚线及一实一虚两点,不难发现,缩小论域意味着要放大输入、输出量的值,膨胀论域意味着要缩小输入、输出量的值。也就是说,如果伸缩因子α、β满足条件0<α、β<1时,VUOn(n=1,...,6)(变论域操作,见图8-10)做除法运算能放大值缩小论域,做乘法运算缩小值膨胀论域。
2 设计与仿真方法
2.1 变论域模糊pid控制算法的结构
如图2,变论域模糊pid控制算法(VUFPID)是在常规pid控制算法的基础上增加了模糊控制器、论域控制器两部分构成的。模糊控制器的输入为e(误差)和ec(误差变化率),它经过模糊化、模糊推导、解模糊等过程,输出ΔKp、ΔKi、ΔKd中的一个到三个,作为常规pid控制算法的对应系数Kp、Ki和Kd的增量,如此便是模糊自适应pid控制算法。论域控制器通常的输入也是e和ec,它的输出是αe、αec、βp、βi、βd中的一个至五个;α、β系数分别作为模糊控制器的输入(e、ec)、输出(ΔKp、ΔKi、ΔKd)项的伸缩因子。
2.2 变论域模糊pid在matlab中的仿真方法
simulink是matlab中的可视化仿真工具,广泛应用于线性系统、非线性系统、数字控制以及数字信号处理的建模和仿真中。在simulink中,要实现变论域模糊pid算法的仿真,通常有3种做法。
2.2.1基于s-function的变论域模糊pid算法仿真方法
基于s-function方法的仿真图如图3所示,这种方法的使用龙祖强[6]等人已经做了较为详细的介绍,并且取得了不错的结果,在这里不再赘述。
图4是以下两种方法的仿真框架,图中的子系统(subsystem)将被各自的仿真图替换。
2.2.2基于函数模型的变论域模糊pid算法仿真方法
论域控制器是实现变论域控制的核心机构,而基于函数模型的变论域控制算法是指:输出与输入的伸缩因子满足于一定的函数关系。
为了便于仿真,这里选取伸缩因子α、β为:
如图5所示,模糊控制器(Fuzzy Logic Controller)是2输入(e、ec),3输出(ΔKp、ΔKi、ΔKd)系统,5个端口基本论域均为[-3,3],采用三角形隶属度函数,论域上的模糊集为{NB,NM,NS,ZO,PS,PM,PB},表示负大、负中、负小、零、正小、正中、正大7种状态。隶属度函数见图6,模糊规则见表1,输入、输出变论域控制器(IVUC和OVUC)见图8、9,系数λ=0.3,τ=0.8,ε=0.001,E=3;其中VUO1-2用来实现论域的放大与缩小。
2.2.3基于模糊规则的变论域模糊pid算法仿真方法
如图10所示,模糊控制器(Fuzzy Logic Controller)的隶属度函数与模糊规则和基于函数的变论域方法中一样;变论域控制器(Fuzzy Logic Controller1)是一个2输入(e、ec),2输出(α、β)系统,通过VUO1-6可以控制论域的缩放。其输入的基本论域与隶属度函数与模糊控制器的输入一样,见图6;但是,其输出基本论域为[0,1],定义在其本论域上的模糊集为{ZO,SS,SB,MS,MB,BS,BB},表示零、小小、小大、中小、中大、大小、大大7个状态。其隶属度函数见图7,模糊规则见表2。
3仿真结果
步进电机的传递函数:
(8)
式中:Tm——最大静转矩,Zr——转子齿数,J——转动惯量,B——阻尼系数。
取J=0.48(kg.m2),B=0.8(N.m.s/rad),Tm=0.9(N.M),Zr=50,代入(8)式,得到步进电机的传递函数G1(s):
(9)
仿真时,取Kp=15.15,Ki=78.5,Kd=3.83,Ke=1/1,Kec=1/6,Ku=1/3,结果如图11所示,其中vufpid1是基于模糊规则的变论域方法,vufpid2是基于函数模型的变论域方法,它们都取得了比较好的控制效果,可以看出都改善了曲线的震荡幅度,加快了曲线的收敛速度;而模糊pid算法在这个系统中对pid算法的控制效果的提升相对而言要小得多。
4结论
基于s-funciton的仿真方法相交其他两种方法来说,具有更高的灵活性,其内部实现可以采用基于其它两种方法的伸缩因子,但是要求具备一定的matlab基础;基于函数模型的仿真方法实现起来最为简单,其伸缩因子受控于所选择的函数模型,容易控制,且上手快;基于模糊规则的仿真方法,其伸缩因子取决于模糊规则的优劣,要提升其性能就要大量的时间实践改进,整体趋势是可控的,但是细节上是不确定的。
参考文献:
[1]李洪兴.变论域自适应模糊控制器[J].中国科学:技术科学, 1999,25(1):32-42.
[2]张卫东.变论域模糊控制器改进设计及其仿真[D].哈尔滨工业大学,2012.
[3]朱岩,郭军平.变论域自适应模糊PID方法的研究与仿真[J].空军工程大学学报:自然科学版,2005,6(5):11-13.
[4]裘智峰,黄灯等.基于变论域插值模糊PID控制系统的研究与应用[J].仪器仪表学报,2008,(11):2435-2440.
[5]禹牛云,朱颖合.变论域自适应模糊PID控制器的设计与仿真[J].中国水运(下半月),2010,10(1):63-65.
[6]龙祖强,许岳兵等.MATLAB环境下变论域模糊控制算法的仿真方法[J].衡阳师范学院学报,2009,(6):34-36.
作者简介:陈毅维(1993-),男,西安工业大学,硕士研究生,主要从嵌入式方面的研究.
基金資助:陕西省教育厅资助项目(17JK0381)