实验一模糊控制 一、实验要求 对于所设计的炉温控制系统G(s)?4C恒定,针对该控制系统有以下控制经验: e?20?,要求温度保持在300°30s?11.若炉温低于300°C,则升压;低得越多升压越高; 2.若炉温高于300°C,则降压;高得越多降压越低; 3.若炉温等于300°C,则保持电压不变。 (1) 设模糊控制器为一维控制器,输入输出变量的量化等级为7级,取5个模糊集。 (2) 设模糊控制器为一维控制器,输入输出变量的量化等级为7级,取7个模糊集。 二、实验报告要求 1.根据模糊控制规则表编写脚本程序。 2.绘出模糊控制系统的输出响应曲线,并分析设定温度改变时模糊控制的适应性。 三、程序设计: %Fuzzy Control fortemperature control clearall; closeall;
T=0; %ê±??3£êy a=newfis('fuzz_temperatrue');
a=addvar(a,'input','e',[-3,3]); %Parameter e 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]);
a=addvar(a,'output','u',[72,78]); %Parameter u a=addmf(a,'output',1,'NB','zmf',[72,74]); a=addmf(a,'output',1,'NM','trimf',[72,73,75]);
a=addmf(a,'output',1,'NS','trimf',[73,74,75]);
a=addmf(a,'output',1,'Z','trimf',[74,75,76]);
a=addmf(a,'output',1,'PS','trimf',[75,76,77]);
a=addmf(a,'output',1,'PM','trimf',[75,77,78]);
a=addmf(a,'output',1,'PB','smf',[76,78]);
rulelist=[1 1 1 1; íit rule base 2 2 1 1; 3 3 1 1; 4 4 1 1; 5 5 1 1; 6 6 1 1; 7 7 1 1];
a=addrule(a,rulelist);
a1=setfis(a,'DefuzzMethod','mom'); Tfuzzy
writefis(a1,'temperatrue'); %Save to fuzzy file \ a2=readfis('temperatrue');
figure(1); plotfis(a2); figure(2);
plotmf(a,'input',1); figure(3);
plotmf(a,'output',1);
flag=1; if flag==1
showrule(a) %Show fuzzy rule base ruleview('temperatrue'); %Dynamic Simulation end
disp('-------------------------------------------------------'); disp(' fuzzy controller table:e=[-3,+3],u=[-4,+4] '); disp('-------------------------------------------------------');
for i=1:1:7 e(i)=i-4;
Ulist(i)=evalfis([e(i)],a2); end
Ulist=round(Ulist)
e=-3; % Error
u=evalfis([e],a2) %Using fuzzy inference 四、Simulink仿真模型
五、实验结果
令T=0;
1、模糊控制器为一维控制器,输入输出变量的量化等级为7级,取5个模糊集。