(1) 参数自整定模糊 PID 控制系统结构
参数自整定模糊PID控制器的系统结构主要由参数可调PID和模糊控制系统两部分构成,其结构如图4.3所示【41】【42】。
PID控制器实现对系统的控制,模糊推理系统以误差e和误差变化率ec作为输入,采用模糊推理方法对PID参数Kp、Ki、Kd进行在线整定,以满足不同的误差e和误差变化率ec对控制器参数的不同要求,而使被控对象具有良好的动态、静态性能。
(2) PID 控制器参数整定原则
参数模糊自整定PID控制器就是找出在不同时刻PID三个参数与e和ec之间的模糊关系,在运行中通过不断检测e和ec,根据模糊控制原理来对三个参数进行实时修改,以满足不同e和ec对控制参数的不同要求,而使被控对象有良好的动、静态性能。由前人的经验,可归纳出参数Kp、Ki、Kd的自整定原则【43】。
系统模糊PID命令实现:
在Matlab 7.0下下列程序可直接进行使用:
>> clear all
>> a=newfis('fuzzypid');
% 设定输入e 的范围、隶属度函数;
>> a=addvar(a,'input','e',[-3 3]);
>> a=addmf(a,'input',1,'NB','zmf',[-3 -1]);
>> a=addmf(a,'input',1,'NM','trimf',[-3 -2 0]);
>> a=addmf(a,'input',1,'NS','trimf',[-3 -1 1]);
>> a=addmf(a,'input',1,'Z','trimf',[-2 0 2]);
>> a=addmf(a,'input',1,'PS','trimf',[-1 1 3]);
>> a=addmf(a,'input',1,'PM','trimf',[0 2 3]);
>> a=addmf(a,'input',1,'PB','smf',[1 3]);
%设定输入ec 的范围、隶属度函数;
>> a=addvar(a,'input','ec',[-3 3]);
>> a=addmf(a,'input',2,'NB','zmf',[-3 -1]);
>> a=addmf(a,'input',2,'NM','trimf',[-3 -2 0]);
>> a=addmf(a,'input',2,'NS','trimf',[-3 -1 1]);
>> a=addmf(a,'input',2,'Z','trimf',[-2 0 2]);
>> a=addmf(a,'input',2,'PS','trimf',[-1 1 3]);
>> a=addmf(a,'input',2,'PM','trimf',[0 2 3]);
>> a=addmf(a,'input',2,'PB','smf',[1 3]);
% 设定输出kp的范围、隶属度函数;
>> a=addvar(a,'output','kp',[-0.3 0.3]);
>> a=addmf(a,'output',1,'NB','zmf',[-0.3 -0.1]);
>> a=addmf(a,'output',1,'NM','trimf',[-0.3 -0.2 0]);
>> a=addmf(a,'output',1,'NS','trimf',[-0.3 -0.1 0.1]);
>> a=addmf(a,'output',1,'Z','trimf',[-0.2 0 0.2]);
>> a=addmf(a,'output',1,'PS','trimf',[-0.1 0.1 0.3]);
>> a=addmf(a,'output',1,'PM','trimf',[0 0.2 0.3]);
>> a=addmf(a,'output',1,'PB','smf',[0.1 0.3]);
% 设定输出ki的范围、隶属度函数;