首页 > 其他 > 详细

3-2模糊pid

时间:2014-04-23 16:32:15      阅读:553      评论:0      收藏:0      [点我收藏+]

3.2模糊PID算法及其CPLD实现

对于时滞、时变和非线性的特征比较明显的控制系统,传统PID控制方法控制参数不易在线调节,模糊控制较好的适应这些特征。模糊控制以模糊规则为基础,用隶属函数和模糊运算实现模糊推理过程,以其强大的知识表达能力和处理能力在一些复杂系统中显示出了很强的优越性。模糊控制理论可以通过模拟人思维过程中的不确定性和不精确性,以人的经验为判断依据,从而对那些不建立精确数学模型的场合进行有效的控制。模糊控制的长处最重要有两点:第一是可以用模糊性的自然语言表现知识;第二是可以用MAX(最大化),MIN(最小化)这类简单运算实现知识的模糊推理【38】。模糊控制也有一些问题需要解决,其中之一就是如何消除模糊控制器的余差。由于模糊控制器只相当于比例和微分的功能,在本质上不能消除余差。解决方案包括引入积分环节、采用论域缩小逼近法、优化模糊控制规则和隶属度等方法。
传统的PID控制具有简单、稳定性好、可靠性高等优点,但动态性能差。结合模糊和PID可以达到消除模糊控制余差和解决单纯PID控制动态性差的问题。现在实现模糊PID控制跟PID的实现方法一样,基于硬件的实现也取得了长足的发展。例如,采用软硬件协同设计的方法在CPLD上实现了模糊PID控制器,采用CPLD与VHDL实现了模糊自整定PID控制器,将FPGC(Fuzzy PID Gain Conditioner)算法基于CPLD实现[39-41]”。总体来看,国外的研究要比国内起步早,并且发展成熟。
从结构上看,模糊和PID结合设计控制器的方法主要有三种【42】,如图3.8所示。第一种,P1D与模糊的双模控制器,有模糊和PID两种控制模态;第二种,补偿式模糊PID控制器,两个控制器在整个控制过程中所起作用由权重因子R1和R2来调节;第三种,模糊自整定PID控制器,通过模糊算法对P1D三个参数进行调整。模糊自整定PID控制器在改善被控过程的动态性能、稳态性能与提高抗干扰能力方面优于常规PID控制,且控制器设计简单,易于实现,所以本文选择此种控制器结构形式。
注1)PID与模糊双模控制器  注2)补偿式模糊PID控制器  注3)模糊自整定PID控制器
图3.8模糊与PID结合的3种形式Fig.3.8 three kinds ofcombination with ftlzzy and PID
设计思想是先找出P1D的三个参数Kp、Ki、Kd与系统误差e和误差变化率ec的大小和方向,再根据模糊控制原理,按照现场操作人员的经验得到模糊控制规则调节Kp,Ki,Kd,以改善被控对象的动、静态性能[43]。表3.1为  Kp模糊规则表,表3.2为△Ki模糊规则表,表3.3为△Kd模糊规则表。
模糊子集{NB,NM,NS,ZO,PS,PM,PB}分别代表负大,负中,负小,零,正小,正中,正大。NB选用Z形隶属度函数,PB选用S形隶属度函数,其余选用三角隶属度函数。隶属度的图形如图3.9所示。
 
表3.1 AK,模糊规则表
Tab.3.1 Fuzzy rule for AK.
表3.2△K。模糊规则表
Tab.3.2 Fuzzy rule for△K
设计中,假设基本论域为【一255,255】。整数论域元素范围为【一3,3】a于是分成【-255,-128],【一128,-64】,[-64,一8],[-8,8】,[8,64],[64,128],[128,255】共七段。如果输入精确值为55,则e=1,如果e=-29,则e=-1。考虑到在PID控制模块设计中PID参数已放大,故模糊△Kp的论域设计为【-15,15】,△Ki的论域设计为【-3,3】,△Kd的论域设计为【-15,15】。模糊推理采用Mamdani推理法,在Matlab里调用模糊工具箱,经过推理可即得到输出表。


图3.9隶属度函数
Fig.3.9 Degree of membership
推理结果通过查找表输出,查表法结构简单,实施方便,在线运行速度快【44】。e与cc合成6位编码。011代表3,010代表2,001代表1,000代表0,101代表-1,110代表一2,111代表一3。△Kp、△Ki和△Kd采用8位有符号码,便于与Kp、Ki、Kd相加。Verilog HDL语言实现模糊推理模块代码段如下:
module fuzzpid(e,ec,detP,detI,detD):
input【9:0】e,ec;
output【7:0】detP,detl,detD;
always@(ec) ∥对ec进行编码得到ectemp,同理可得到etemp
begin
case(ec[9]) //ec大于0
O:begin
if(ec>=10’d6)
ectemp<=3tb011;
1:begin //ec小于0
ectempm=~ec+1’b1:
if(ectempm>=10‘d6)
ectemp<=3’b111;
//其余编码
endcase
end
always@(etemp or ectemp) //查表求detP,detI,detD
begin
temp<={etemp,ectemp};∥组成6位编码
case(temp)
6’b0ll_011:begin tuneP=-8‘d3;tuneI=8‘d3;tuneD=8‘d3;
//其余查询表
end
endmodule
在QuartusII下模糊推理模块的仿真时序如图3.10所示。
 


图3.10模糊推理仿真结果
Fig.3.10 Simulation result offuzzy infcRn∞
e和ec分别代表偏差和偏差的变化,其数值为二进制编码。tuneP、tuneI以及tuneD为△Kp、△Ki和 △Kd的调整输出,与原Kp、Ki、Kd相加后形成新的调整参数。
 

3-2模糊pid,布布扣,bubuko.com

3-2模糊pid

原文:http://www.cnblogs.com/zhaichunchun/p/3680126.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!