智能控制技术实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能控制技术实验报告

报告书学院:专业:学号:姓名:实验一:模糊控制与传统PID控制的性能比较

一、实验目的通过本实验的学习,使学生了解传统PID控制、模糊控制等基本知识,掌握传统PID控制器设计、模糊控制器设计等知识,训练学生设计控制器的能力,培养他们利用MATLAB进行仿真的技能,为今后继续模糊控制理论研究以及控制仿真等学习奠定基础。

二、实验内容本实验主要是设计一个典型环节的传统PID控制器以及模糊控制器,并对他们的控制性能进行比较。主要涉及自控原理、计算机仿真、智能控制、模糊控制等知识。通常的工业过程可以等效成二阶系统加上一些典型的非线性环节,如死区、饱和、纯延迟等。这里,我们假设系统为:H(s)=20e0、

02s/(

1、6s2+

4、4s+1)

控制执行机构具有0、07的死区和0、7的饱和区,取样时间间隔T=0、01。设计系统的模糊控制,并与传统的PID控制的性能进行比较。

三、实验原理、方法和手段

1、实验原理:1)对典型二阶环节,根据传统PID控制,设计PID控制器,选择合适的PID控制器参数kp、ki、kd;2)根据模糊控制规则,编写模糊控制器。

2、实验方法和手段:1)在PID控制仿真中,经过仔细选择,我们取kp=5,ki=0、1,kd=0、001;2)在模糊控制仿真中,我们取ke=60,ki=0、01,kd=

2、5,ku=0、8;3)模糊控制器的输出为:u=

ku×fuzzy(ke×e, kd×e’)-ki×∫edt 其中积分项用于消除控制系统的稳态误差。4)模糊控制规则如表1-1所示:在MATLAB程序中,Nd用于表示系统的纯延迟(Nd=td/T),umin用于表示控制的死区电平,umax用于表示饱和电平。当Nd=0时,表示系统不存在纯延迟。5)根据上述给定内容,编写PID控制器、模糊控制器的MATLAB仿真程序,并记录仿真结果,对结果进行分析。表1-1 FC的模糊推理规则表u e e’NB NS ZR PS PB NBPBPBPSPSZR NSPBPSPSZRZR ZRPSPSZRZRNS PSPSZRZRNSNS PBZRZRNSNSNB

四、实验组织运行要求根据本实验的综合性、设计性特点以及要求学生自主设计MATLAB仿真程序的要求以及我们实验室的具体实验条件,本实验采用以学生自主训练为主的开放模式组织教学。

五、实验条件

1、装有MATLAB

6、5的计算机;

2、智能控制技术教材;

3、模糊控制教材;

4、智能控制技术实验指导书。六、实验步骤

1、学生熟悉实验内容,并根据实验内容、实验要求,查阅、学习相关知识;

2、设计典型二阶环节的PID控制器以及模糊控制器;

3、编写MATLAB仿真程序

4、上机调试程序,修改程序修改控制器的参数等;

5、对实验程序仿真,并记录仿真结果;

6、对实验结果进行分析,书写实验报告书。七、实验程序num=20; den=[

1、6,

4、4,1];

[a1,b,c,d]=tf2ss(num,den);%将传递函数转化为状态模型

x=[0;0]; T=0、01;h=T; %T为采样时间 umin=0、07;umax=0、7; td=0、02;Nd=td/T; %Nd延迟时间 N=500;R=

1、5*ones(1,N);%参考值e=0; de=0;ie=0; kp=5;ki=0、

1;kd=0、001; %设定的比例,积分,微分常数 for k=1:N

uu1(1,k)=Nd); end if abs(u)<=umin%死区和饱和环节 u=0 elseif abs(u)>umax u=sign(u)*umax; end%龙格-库塔算法求对象的输出 k1=a1*x+b*u; k2=a1*(x+h*k1/2)+b*u;

k3=a1*(x+h*k2/2)+b*u; k4=a1*(x+h*k3)+b*u;

x=x+(k1+2*k2+2*k3+k4)*h/6; y=c*x+d*u;%计算误差、微分和积分 e1=e; e=y(1,1)-R(1,k); de=(e-e1)/T; ie=e*T+ie;

yy1(1,k)=y;end;kk=[1:N]*T;figure(1);plot(kk,yy1);

a=newfis('simple');% 建立模糊推理系统

a=addvar(a,'input','e',[-66]);%增加第一个输入变量e

a=addmf(a,'input',1,'NB','trapmf',[-6552 0]);

a=addmf(a,'input',1,'ZR','trimf',[-2 02]);

a=addmf(a,'input',1,'PS','trapmf',[0235]);

a=addmf(a,'input',1,'PB','trapmf',[3566]);

a=addvar(a,'input','de',[-66]);%增加第二个输入变量e

a=addmf(a,'input',2,'NB','trapmf',[-6552 0]);

a=addmf(a,'input',2,'ZR','trimf',[-2 02]);

a=addmf(a,'input',2,'PS','trapmf',[0235]);

a=addmf(a,'input',2,'PB','trapmf',[3566]);a=addvar(a,'out put','u',[-33]);%添加输出变量u

a=addmf(a,'output',1,'NB','trapmf',[-3221 01]);

a=addmf(a,'output',1,'PS','trimf',[012]);

a=addmf(a,'output',1,'PB','trapmf',[1233]); %建立模糊规则矩阵 rr=[55443;54433;44332;43322;33221];

r1=zeros(prod(size(rr)),3);%得到一个25X3的0阶矩阵

k=1;for i=1:size(rr,1)

for j=1:size(rr,2)

相关文档
最新文档