智能控制课后仿真

上传人:小** 文档编号:140484227 上传时间:2022-08-23 格式:DOC 页数:18 大小:754.50KB
返回 下载 相关 举报
智能控制课后仿真_第1页
第1页 / 共18页
智能控制课后仿真_第2页
第2页 / 共18页
智能控制课后仿真_第3页
第3页 / 共18页
点击查看更多>>
资源描述
智能控制课后仿真报告院(系)电气与控制工程学院专业班级:自动化1301班名:号:题目2-3:求二阶传递函数的阶跃相应g(S)-I33取采样时间为pS225S1ms进行离散化。参照专家控制仿真程序,设计专家PID控制器,并进行MATLAB仿真。专家PID控制MATLAB仿真程序清单:%ExoertPIDControllerclearall;%清理数据库中所有数据closeall;%关闭所有界面图形ts=0.001;%对象采样时间,1mssys=tf(133,1,25,0);%受控对象的传递函数dsys=c2d(sys,ts,z);%连续系统转化为离散系统num,den=tfdata(dsys,v);%离散化后参数,得num和den值u_1=0;u_2=0;%设定初值,u_1是第(k-1)步控制器输出量y_1=0;y_2=0;%设定初值,y_1是第(k-1)步系统对象输出量x=0,0,0;%设定误差x1误差导数x2误差积分x3变量初值x2_1=0;%设定误差导数x2_1的初值kp=0.6;%设定比例环节系数ki=0.03;%设定积分环节系数kd=0.01;%设定微分环节系数error_1=0;%设定误差error_1的初值fork=1:1:5000%for循环开始,k从1变化到500,每步的增量为1time(k)=k*ts;%仿真时长0.0010.5sr(k)=1.0;%TracingStepSignal系统输入信号u(k)=kp*x(1)+kd*x(2)+ki*x(3);%PIDControllerPID控制器%Expertcontrolrule%Rule1:Unclosedcontrolrule规则1:开环控制ifabs(x(1)0.8%if循环开始,产生式规则,if.then.;误差的绝对值大于u(k)=0.45;%控制器输出量等于elseifabs(x(1)0.40u(k)=0.40;elseifabs(x(1)0.20u(k)=0.12;elseifabs(x(1)0.01u(k)=0.10;end%if循环结束%Rule2规则2ifx(1)*x(2)0|(x(2)=0)%if循环开始,如果误差增大或不变ifabs(x(1)=0.05%内嵌if循环开始,如果误差绝对值大于u(k)=u_1+2*kp*x(1);%控制器输出量施加较强控制else%否贝Iu(k)=u_1+0.4*kp*x(1);%控制器输出量施加一般控制end%内嵌if循环结束end%if循环结束%Rule3规贝3if(x(1)*x(2)0)|(x(1)=0)%if循环开始,如果误差减小或消除u(k)=u(k);%控制器输出量不变end%if循环结束%Rule4规贝I4ifx(1)*x(2)0&x(2)*x2_1=0.05%内嵌if循环开始,如果误差绝对值大于u(k)=u_1+2*kp*error_1;%控制器输出量施加较强控制else%否贝Iu(k)=u_1+0.6*kp*error_1;%控制器输出量施加一般控制end%内嵌if循环结束end%if循环结束%Rule5:IntegrationseparationPIcontrol规贝U5;运用PI控制来消除误差ifabs(x(1)=10u(k)=10;%设控制器输出量上限值endifu(k)1.M-左生丈地if.UflMifiLSiKiJyOW.LiJua)-4LLFigure1:Figure2:PID控制阶跃响应曲线2.编译运行程序后误差响应随时间变化曲线题目3-4:如果A二丄05xx12且B二yi0.10.51,则0.21,则C二yyzz2312现已知0.80.1且0.5A二且B二1xx1y1210.20,yy23利用模糊推理公式(3.27)和(3.28)求C,并采用MATLAB进行仿真。1模糊推理MATLAB仿真程序清单:clearall;%清理数据库中所有数据closeall;%关闭所有界面图形?A=1;0.5;%输入各元素在A中的隶属度B=0.1,0.5,1;%输入各元素在B中的隶属度C=0.2,1;%输入各元素在C中的隶属度%CompoundofAandB%合成A和Bfori=1:2%A矩阵的行数取值iforj=1:3%B矩阵的列数取值jAB(i,j)=min(A(i),B(j);%实现A,B的“与”关系endend%TransfertoColumn%转换列向量T1=;%定义转置矩阵T1fori=1:2%AB矩阵的行数取值iTl=Tl;AB(i,:);%转置AB矩阵end%GetfuzzyR%确立模糊关系矩阵Rfori=1:6%R矩阵列数取值iforj=1:2%R矩阵行数取值jR(i,j)=min(Tl(i),C(j);%确定模糊关系矩阵Rendend%A1=O.8,O.1;%输入各元素在A1中的隶属度B1=O.5,O.2,O;%输入各元素在B1中的隶属度fori=1:2%Al矩阵的行数取值iforj=1:3%Bl矩阵的行数取值jABl(i,j)=min(Al(i),Bl(j);%实现A1和B1的“与”关系endend%TransfertoRow%转换行向量T2=;%定义转置矩阵T2fori=1:2%ABl矩阵的行数取值iT2=T2,ABl(i,:);%扩展A1B1矩阵end%GetoutputC1%确定输出fori=1:6%转置矩阵T2列数取值forj=1:2%模糊矩阵R行数取值D(i,j)=min(T2(i),R(i,j);C1(j)=max(D(:,j);%输出C1矩阵endend模糊推理MATLAB仿真程序过程及结果:rzis235国ntex72BL?匕山时竝Rdn?F血-护杳S.rH环戸;*”jutinm机3打1|疋玄砂*血事1.队呂買.TP中BftTtTrr山皿九乩山I;弔科入算兀豪在麗中虞BL-CDiq.宜“:泄h向r畑Lbs曲H希昱筍JarMEL腳町方希肌帀i1在MATLAB编辑环境下编写模糊推理仿真程序TL-UAS-HimiLfarjLZUUlIHlAln-AIIllimdVbe才uxjyH,Jrj-l.f-srJ-L2.编译运行程序后AB与关系:si-AB眉A抵如阂ABTb田2x3double123410.10000.5000120.10000.50000.50003456转置矩阵T1:li百鏈-丁1dTlABI懿AAla5x1double123iO.IOOO20.500031斗0,100050.5000&0.50007模糊矩阵R:iRT1AB1AFFi6x2double20.10000.10000.20000.50000.200010.10000.10000.2(K00.50000.20000.5000A1B1与关系:已知某一炉温控制系统,要求温度保持在600C恒定。针对该控制系统有以下控制经验:(1) 若炉温低于600C,则升压;低得越多升压越高。(2) 若炉温高于600C,则降压;高得越多降压越低。(3) 若炉温等于600C,则保持电压不变。设模糊控制器为一维控制器,输入语言变量为误差,输出为控制电压。输入、输出变量的量化等级为7级,取5个模糊集。试设计隶属度函数误差变化划分表、控制电压变化划分表和模糊控制规则表。解:输入(e)以及输出(u)分为5个模糊集:NB、NS、Z0、PS、PB。输入变量(e)以及输出变量(u)分为7个等级:-3、-2、-1、0、+1、+2、+3。炉温变化e划分表隶属度变化等级-3-2-10123模糊集PB000000.51PS000010.50Z0000.510.500NS00.510000NB10.500000控制电压变化划分表隶属度变化等级-3-2-10123模糊集PB000000.51PS000010.50Z0000.510.500NS00.510000NB10.500000模糊控制规则表若(IF)NBeNSeZOePSePBe贝lj(THEN)NBuNSuZOuPSuPBu炉温模糊控制MATLAB仿真程序清单:%FuzzyControlforfurnacetemperatureclearall;%清理数据库中所有数据closeall;%关闭所有界面图形a=newfis(fuzz_temperature);%模糊炉温a=addvar(a,input,e,-3,3);%Parametere输入参数e的取值范围a=addmf(a,input,1,NB,zmf,-3,-1);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,PB,smf,1,3);a=addvar(a,output,u,-3,3);%Parameteru输出参数u的取值范围a=addmf(a,output,1,NB,zmf,-3,-1);a=addmf(a,output,1,NS,trimf,-3,-2,1);a=addmf(a,output,1,Z,trimf,-2,0,2);a=addmf(a,output,1,PS,trimf,-1,2,3);a=addmf(a,output,1,PB,smf,1,3);rulelist=1111;%Edit?rule?base编辑规则库2 211;3 311;4 411;5 511;a=addrule(a,rulelist);a1=setfis(a,DefuzzMethod,mom);%Defuzzywritefis(a1,temperature);%Savetofuzzyfiletemperature.fis保存模糊文件temperature.fisa2=readfis(temperature);figure(1);%图形1plotfis(a2);%画图figure(2);%图形2plotmf(a,input,1);%画图figure(3);%图形3plotmf(a,output,1);%画图flag=1;%设标志位1ifflag=1%如果标志位为1showrule(a)%Showfuzzyrulebase显示模糊规则库ruleview(temperature);%DynamicSimulation动态模拟end%结束disp();disp(fuzzy?controller?table:e=-3,+3,u=-3,+3);disp();fori=1:1:7e(i)=i-4;Ulist(i)=evalfis(e(i),a2);end%结束Ulist=round(Ulist)e=-3;%Error出错u=evalfis(e,a2)%Usingfuzzyinference利用模糊推理炉温模糊控制MATLAB仿真程序过程及结果1在MATLAB编辑环境下编写炉温模糊控制仿真程序m“空I-0HfT艸-時-a由宓田91廿釜JSUJfcLQi臼;a.L.:.:riJir.t-2.0L2.i:L/rsL.7;L,Ffl/ifcT,:L-3:pjrwr.(-J,!:*Panacrw砂羊出总旳片取UNIwtpLKmLpunwtFiF.l.Z.rTiif-.C-taj):outpin1,Wj-trarf(-lr2,3I:MiLpucJ,ra.mF.L,4I.IEJIt:r;klaEcfLel9knriFuaalKhiad.jn*I:%*TsxywLtEnH町.r-jswrrijrerfiLeTetM-T-priie-risflMIMSE1-;ai-jcilTLaC事UniikdxnBA:LiAfflliFigure1:Figure2:Figure3:Fig.ES一曰KHirim:CDaB-SliDMKbD炉温规则查看器:调整输入变量可得到不同的输出Hak-VlCMf:QXrtaEdkOpiKMie-IW-im-33通过这次课后仿真,让我对专家控制、模糊控制有了更进步的理解,同时也对MATLAB这个重要的专业工具的使用更加熟练。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!