1
附 录
被控对象为
3 2
580000
( )
87 12000
p
G s
s s s
=
+ +
时参数自整定模糊 PID 程序
>> 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 的范围、隶属度函数;
>> a=addvar(a,'output','ki',[-0.06 0.06]);
>> a=addmf(a,'output',2,'NB','zmf',[-0.06 -0.02]);
>> a=addmf(a,'output',2,'NM','trimf',[-0.06 -0.04 0]);
>> a=addmf(a,'output',2,'NS','trimf',[-0.06 -0.02 0.02]);
>> a=addmf(a,'output',2,'Z','trimf',[-0.04 0 0.04]);
>> a=addmf(a,'output',2,'PS','trimf',[-0.02 0.02 0.06]);
>> a=addmf(a,'output',2,'PM','trimf',[0 0.04 0.06]);
>> a=addmf(a,'output',2,'PB','smf',[0.02 0.06]);
% 设定输出 kd 的范围、隶属度函数;
>> a=addvar(a,'output','kd',[-3 3]);
>> a=addmf(a,'output',3,'NB','zmf',[-3 -1]);
评论0