因教学需要,用MATLAB/SIMULINK做了个简单的查表模糊控制仿真系统,查表采用MATLAB Fcn实现。二维PD型模糊控制器,误差和误差的变化率的论域为[-3,-2,......+2,+3],控制器输出u的论域为[-6,-5,......+5,+6],两个量化因子分别为60和2.5,比例因子为2,对于不同模型和不同的精度要求,这几个因子要做一些调整。SIMULINK仿真图如图1所示,为离散连续混合仿真,图中的零阶保持器Zero-Order Hold的采样时间设置为0.0005。经过模糊推理、解模糊后获得的模糊查询表参见下面代码中的utab数组,模糊控制规则表、各模糊子集隶属函数略,MATLAB Fcn模块中的设置为“myfuzy(u(1),u(2))”,其中myfuzy为查表函数,代码如下:
function u=myfuzy(x,y)
utab=[
-6 -6 -4 -4 -2 -2 0 -6 -4 -4 -2 -2 0 2 -4 -4 -2 -2 0 2 2 -4 -2 -2 0 2 2 4 -2 -2 0 2 2 4 4 -2 0 2 2 4 4 6 0 2 2 4 4 6 6];
if x>3
x=3; end if y>3
y=3; end
if x<-3 x=-3; end if y<-3
y=-3; end
xx=round(x); yy=round(y);
u=utab(xx+4,yy+4);
该仿真系统仅作为向学生演示用的,很简陋,可能有些地方也没考虑太多。仿真曲线如图2所示,可以看出,由于是PD型模糊控制,系统有静差。由论域范围
和比例因子的求取方法可知,有关限幅环节已经隐式实现了。