当前位置:文档之家› 2模糊控制查询表的MATLAB实现

2模糊控制查询表的MATLAB实现

模糊控制查询表的MATLAB 实现叶高文(厦门海洋职业技术学院,福建厦门361012)MATLAB realization of Fuzzy Control Query Table在运用模糊控制技术进行工业控制时,为了减少在线计算量,节省内存,提高PLC 等控制器的运行效率,通常根据隶属度函数和模糊控制规则表离线计算对应的模糊控制表,并将该表置于PLC 等控制器中,供实时控制时使用。

在实时控制过程中,根据模糊量化后的偏差值e 和偏差变化率ec 直接查询控制表以获得模糊控制输出量,再转换为精确输出控制量。

在实际的控制过程中由于微分作用的效果不是很明显,故很多实际情况中只采用PI 控制。

本文论述的对象是常用PLC 的模糊PI 控制。

不是PLC 的系统,可将积分时间转换为积分系数。

1模糊PI 控制模型说明本文提供一个实际工业控制的模糊查询表的MATLAB 实现过程,模糊PI 模型如图1。

图1模糊PI 控制器模型如图1,模糊控制器的输入量采用实际被控制量与给定量的偏差e 和偏差变化率ec ,参数整定机构采用增量型调整原理,输出为比例系数增量ΔK P 和积分时间增量ΔTi ,再经式K P =K P0+ΔK P 和式T I =T I0+ΔTi 计算得到PI 控制器的比例系数KP 和积分时间值TI 。

2模型输入输出模糊控制规则表2.1定义输入输出变量的隶属度矢量表一般情况下,输入量偏差e 和偏差变化率△e 以及输出变量ΔKP 和ΔTi 的离散论域都设定为13个量化等级邀-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6妖。

为方便MATLAB 编程,对相关的变量选择进行一些改变。

原先的输入变量偏差e 和偏差变化率ec 的量化等级邀-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6妖改写为邀1,2,3,4,5,6,7,8,9,10,11,12,13妖。

而输出变量ΔKP 和ΔTi 得量化等级保持为邀-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6妖。

输入变量偏差e 和偏差变化率ec 和输出变量ΔKP 、ΔTi 的模糊语言值均为邀NB ,NM ,NS ,ZO ,PS ,PM ,PB妖。

为了编程方便,将语言值用数字表示为邀1,2,3,4,5,6,7妖,与模糊语言值相对应,比如:模糊语言值NB 的模糊数字值为1,其他类似。

根据以上的规定,产生用数字语言值表示输入变量x1及x2的隶属度矢量表,见表1所示。

其中,变量x1表示模糊控制器的偏差输入e ,变量x2表示模糊控制器的偏差输入ec ;f1(i )、f2(j )表示第一输入x1和第二输入x2的隶属度,而i 、j 表示语言变量数字值,即为1,2,3,4…7。

表1用数字语言值表示输入变量x1及x2的隶属度矢量表2.2模糊控制规则表该控制系统为一实际工业控制模型,其用数字语言值表示的比例系数增量ΔKP 和积分时间ΔTI 模糊控制规则表如表2和表3所示。

表2用数字语言值表示的ΔKP 模糊控制规则摘要通过建立一个工业自动化控制中经常使用的模糊PI 控制器模型,详细论述了运用MATLAB 语言编写模糊控制查询表的方法,该控制表可以表格形式存放于计算机,从而大大提高了如PLC 等内存小的工业控制器的运行效率,也可实现在线推理控制。

关键词:模糊控制查询表,MATLAB ,PI 控制,在线推理AbstractThrough the establishmengt ofFuzzy-PI controller model which is applied in the industrial automation control,This pa-per describes in detail the way how to get a fuzzy -control-query table by the MATLAB programming.This cotrol-table may be stored in the compute with the form of a table,Which can improe greatly the operational efficiency,Such as PLC controller,etc.whose memory is very little,and on-line reasoning can also be realized.Keywords :fuzzy control query table,MATLAB,PI control,on-linereasoning模糊控制查询表的MATLAB 实现64《工业控制计算机》2010年第23卷第11期表3用数字语言值表示的ΔTI模糊控制规则3MATLAB程序实现通过MATLAB编程,也可以用其它语言编程,使该实现方法既可以作为在线推理的算法,也可以把控制表先做出来,存在计算机中,通过在线查询得到输出控制量,本文以后者为例。

3.1程序流程图用MATLAB编写程序流程图,如图2。

图2程序流程图以上程序流程图2说明:x1和x2为第一输入偏差e和第二输入变差变化ec;COG是重心法反模糊化方法;S[i,j]=w觹h[i,j]/2是输出隶属函数的面积,输出隶属函数采用取小操作,用高h削顶。

w为三角形输出隶属函数的底宽;f1(i)、f2(j)表示第一输入x1和第二输入x2的隶属度;i、j为语言变量数字值。

3.2MATLAB程序依据程序流程图,ΔKP在线查询表编写如下:%程序初始化,输入偏差e和偏差变化率隶ec属函数表A、B,控制规则表R:A=[10.500000000000;00.510.5000000000;0000.510.50000000;000000.510.500000;00000000.510.5000;0000000000.510.50;000000000000.51];B=[10.500000000000;00.510.5000000000;0000.510.50000000;000000.510.500000;00000000.510.5000;0000000000.510.50;000000000000.51];R=[7776543;7765432;7654321;5544455;1234567;2345677;3456777];%模糊控制器输出初始化,输出模糊集合中心值向量cen。

三角形隶属函数底宽w=4%num为重心法反模糊化公式的分子,den为分母,u0模糊控制器输出值:u0=zeros(13);cen=[-6-4-20246];w=4;num=0; den=0;%采样输入偏差e和偏差变化率ec的值m、nm=input('m=');n=input('n=');%运算初始化,f1、f2为输入值的隶属函数,a、b为输入语言值,k输出语言值,%c为输出隶属函数中心点的值,s为蕴含模糊集合隶属函数下的面积;s1=s觹c;%h为规则前件隶属度,h=min(f1,f2)f1=[0000000];a=[0000000];f2=[0000000];b=[0000000];k=zeros(7);c=zeros(7);s=zeros(7);s1=zeros(7);h=zeros(7);%循环计算上述各量for i=1:7for j=1:7if A(i,m)>0f1(i)=A(i,m);a(i)=i;endif B(j,n)>0f2(j)=B(j,n);b(j)=j;endif a(i)觹b(j)>0k(i,j)=R(a(i),b(j));c(i,j)=cen(k(i,j));h(i,j)=min(f1(i),f2(j));s(i,j)=1/2觹w觹h(i,j);s1(i,j)=s(i,j)觹c(i,j);endendend%COG反模糊化,计算num及denfor i=1:7for j=1:7num=num+s1(i,j);den=den+s(i,j);endendu0=num/den%模糊控制器输出依据程序流程图,ΔTI离线查询表编写如下:%程序初始化,输入偏差e和偏差变化率隶ec属函数表A、B,控制规则表R:A=[10.500000000000;00.510.5000000000;0000.510.50000000;000000.510.500000;00000000.510.5000;0000000000.510.50;65000000000000.51];B=[10.500000000000;00.510.5000000000;0000.510.50000000;000000.510.500000;00000000.510.5000;0000000000.510.50;000000000000.51];R=[7776654;7766543;7665432;1124211;2345667;3456677;4566777];%模糊控制器输出初始化,输出模糊集合中心值向量cen。

三角形隶属函数底宽w=4%num为重心法反模糊化公式的分子,den为分母,u0模糊控制器输出值u0=zeros(13);cen=[-6-4-20246];w=4;num=0; den=0;%采样输入偏差e和偏差变化率ec的值m、nm=input('m=');n=input('n=');%运算初始化,f1、f2为输入值的隶属函数,a、b为输入语言值,k输出语言值,%c为输出隶属函数中心点的值,s为蕴含模糊集合隶属函数下的面积;s1=s觹c;%h为规则前件隶属度,h=min(f1,f2)f1=[0000000];a=[0000000];f2=[0000000];b=[0000000];k=zeros(7);c=zeros(7);s=zeros(7);s1=zeros(7);h=zeros(7);%循环计算上述各量for i=1:7for j=1:7if A(i,m)>0f1(i)=A(i,m);a(i)=i;endif B(j,n)>0f2(j)=B(j,n);b(j)=j;endif a(i)觹b(j)>0k(i,j)=R(a(i),b(j));c(i,j)=cen(k(i,j));h(i,j)=min(f1(i),f2(j));s(i,j)=1/2觹w觹h(i,j);s1(i,j)=s(i,j)觹c(i,j);endendend%COG反模糊化,计算num及denfor i=1:7for j=1:7num=num+s1(i,j);den=den+s(i,j);endend%模糊控制器输出u0=num/den4输出变量ΔKP和ΔTi的在线查询表通过MATLAB的程序,可得到在线控制表表4和表5:表4ΔKP在线查询表表5ΔTi在线查询表通过对偏差E和偏差变化EC的判定,得出输出控制,再乘以量化因子即可转换为精确输出控制量。

相关主题