2模糊控制查询表的MATLAB实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模糊控制查询表的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 控制,在线推理
Abstract
Through the establishmengt of
Fuzzy-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-line
reasoning
模糊控制查询表的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、n
m=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:7
for j=1:7
if A(i,m)>0
f1(i)=A(i,m);a(i)=i;
end
if B(j,n)>0
f2(j)=B(j,n);b(j)=j;
end
if a(i)觹b(j)>0
k(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);
end
end
end
%COG反模糊化,计算num及den
for i=1:7
for j=1:7
num=num+s1(i,j);
den=den+s(i,j);
end
end
u0=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.5
0;
65