智能控制课后仿真_第1页
智能控制课后仿真_第2页
智能控制课后仿真_第3页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XrAN UNIVE尺OF SCIEWCE AND TECHNOLOGY智能控制课后仿真报告院 (系):电气与控制工程学院专业班级:自动化1301班姓 名:杨 光 辉学 号:1306050115题目2-3:求二阶传递函数的阶跃相应Gp(S)取采样时间为p S 25S1ms进行离散化。参照专家控制仿真程序,设计专家PID控制器,并进行MATLAB仿真。专家PID控制MATLAB仿真程序清单:%Exoert PID Con trollerclear all ; %清理数据库中所有数据close all ; %关闭所有界面图形ts=O.OO1; %对象采样时间, 1mssys=tf(133,1,25

2、,0);%受控对象的传递函数dsys=c2d(sys,ts,'z'); %连续系统转化为离散系统num,den=tfdata(dsys,'v' ); %离散化后参数,得num 和 den 值u_仁0;u_2=0;%设定初值,u_1是第(k-1)步控制器输岀量y_仁0;y_2=0;%设定初值,y_1是第(k-1)步系统对象输岀量x=0,0,0'%设定误差x1误差导数x2误差积分x3变量初值x2_仁0;%设定误差导数x2_1的初值kp=0.6;%设定比例环节系数ki=0.03;%设定积分环节系数kd=0.01;%设定微分环节系数error_仁0;%设定误差e

3、rror_1 的初值for k=1:1:5000 %for循环开始,k从1变化到500,每步的增量为1time(k)=k*ts;%仿真时长0.001 0.5sr(k)=1.0;%Traci ng Step Sig nalu(k)=kp*x(1)+kd*x (2)+ki*x(3);%Expert con trol rule%Rule1: Un closed con trol rule系统输入信号%PID Con trollerPID规则1 :开环控制控制器if abs(x(1)>0.8%if 循环开始,产生式规则,if.then.u(k)=0.45;%控制器输岀量等于;误差的绝对值大于el

4、seifabs(x(1)>0.40u(k)=0.40;elseifabs(x(1)>0.20u(k)=0.12;if x(1)*x(2)>0|(x(2)=0)if abs(x(1)>=0.05u(k)=u_1+2*kp*x(1);%if循环开始,如果误差增大或不变 %内嵌if循环开始,如果误差绝对值大于% 空制器输出量施加较强控制elseif abs(x(1)>0.01 u(k)=0.10;end %if循环结束%Rule2 规贝U 2%控制器输出量施加一般控制else %否则 u(k)=u_1+0.4*kp*x(1);end %内嵌 if 循环结束 end %i

5、f 循环结束 %Rule3 规则 3 if (x(1)*x(2)<0&x(2)*x2_1>0)|(x(1)=0) %if 循环开始,如果误差减小或消除 u(k)=u(k);%控制器输出量不变end %if 循环结束%Rule4 规则 4if x(1)*x(2)<0&x(2)*x2_1<0 %if 循环开始,如果误差处于极值状态if abs(x(1)>=0.05%内嵌 if 循环开始,如果误差绝对值大于u(k)=u_1+2*kp*error_1;%控制器输出量施加较强控制else %否则u(k)=u_1+0.6*kp*error_1;%控制器输出量施

6、加一般控制end %内嵌 if 循环结束end %if 循环结束%Rule5:Integration separation PI control 规则 5; 运用 PI 控制来消除误差 if abs(x(1)<=0.001 %if 循环开始如果误差绝对值小于(很小) u(k)=0.5*x(1)+0.010*x(3);%控制器输出量用比例和积分输出end %if 循环结束%Restricting the output of controller 对控制输出设限if u(k)>=10u(k)=10; %设控制器输出量上限值endif u(k)<=-10u(k)=-10;%设控制器

7、输出量下限值end%Linear model Z变化后系统的线性模型y(k)=-den(2)*y_1-den(3)*y_2+num(1)*u(k)+num(2)*u_1+num(3)*u_2; error(k)=r(k)-y(k); %系统误差 error 的表达式,等于系统输入减去输出%Return of parameters-%每步计算时的参数更新u_2=u_1;u_1=u(k);%u(k)代替 u_1y_2=y_1;y_1=y(k);%y(k)代替 y_1x(1)=error(k);%Calculating P 赋误差error 值于 x1x2_1=x(2);%赋值前步计算时的误差导数

8、X2 的值等于 X2_1x(2)=(error(k)-error_1)/ts;% Calculating D求误差导数 x2 ,用于下一步的计算x(3)=x(3)+error(k)*ts; % Calculating I 求误差积分 x3error_1=error(k);%赋误差 error 值于 error_1end %for 循环结束,整个仿真时长计算全部结束figure(1);%图形 1plot(time,r, 'b' ,time,y, 'r' ); %画图,以时间为横坐标,分别画出系统输入、输出随时 间的变化曲线xlabel( 'time(s)&

9、#39; );ylabel( 'r,y' ); %标注坐标figure(2);%图形 2plot(time,r-y,'r'); %画r-y,即误差随时间的变化曲线xlabel( 'time(s)' );ylabel( 'error' ); %标注坐标专家PID控制MATLAB仿真程序过程及结果:1.在MATLAB编辑环境下编写专家 PID控制仿真程序2.编译运行程序后Figure1:a* B郛:d&X i = : jk -£ = X2 £ 口PID控制阶跃响应曲线Figure2: s“0x I«

10、; M反 n此 tqiRI : n 丄 k sn0B| 9误差响应随时间变化曲线题目3-4:如果A10.5且B0.iXiX2yiA 0.8 0.1且Bi0.50.20x1 x2yiyy3匹丄,则c 02丄。现已知y yzi Z2利用模糊推理公式(3.27 )和(3.28)求Ci,并采用MATLAB进行仿真。模糊推理MATLAB仿真程序清单:clearallcloseall;%清理数据库中所有数据;% 关闭所有界面图形?A=i;0.5;%输入各元素在A中的隶属度B=0.1,0.5,1;%输入各元素在B中的隶属度C=0.2,i;%输入各元素在C中的隶属度%Compound of A and B %

11、合成 A 和 Bfor i=i:2%人矩阵的行数取值ifor j=i:3%B矩阵的列数取值jAB(i,j)=min(A(i),B(j);%实现 A,B 的“与”关系endend%Tra nsfer to Colu mn %转换列向量T1=;%定义转置矩阵 T1for i=i:2%AB矩阵的行数取值iT1=T1;AB(i,:)'%转置 AB 矩阵end%Get fuzzy R %确立模糊关系矩阵 Rfor i=1:6%R矩阵列数取值ifor j=1:2%R矩阵行数取值jR(i,j)=mi n( T1(i),C(j);%确定模糊关系矩阵 Rendend%A仁0.8,0.1;%输入各元素在A

12、1中的隶属度B仁0.5,0.2,0;%输入各元素在 B1中的隶属度for i=1:2%A1矩阵的行数取值 ifor j=1:3%B1矩阵的行数取值 jAB1(i,j)=min(A1(i),B1(j);%实现 A1 和 B1 的“与”关系endend%Tra nsfer to Row%转换行向量T2=;%定义转置矩阵T2for i=1:2%AB1矩阵的行数取值 iT2=T2,AB1(i,:);%扩展 A1B1 矩阵end%Get output C1%确定输岀for i=1:6%转置矩阵T2列数取值for j=1:2%模糊矩阵R行数取值D(i,j)=mi n(T2(i),R(i,j);C1(j)=

13、max(D(:,j);%输岀 C1 矩阵endend模糊推理MATLAB仿真程序过程及结果:1. 在MATLAB编辑环境下编写模糊推理仿真程序2. 编译运行程序后AB与关系:T1覧AB1釁A 川刘闢 #日j 2k3 dojble112340,1000.5TO012(M0CD0.5CMM0.50003456转置矩阵T1:变量T1T1 - | AB1AI i I 6x1 double12320.5OTQ31450.5000&0.50001模糊矩阵R:A1B1与关系:"变量-AB111T1期1A田 2x3 double123 |120.5&00|0.2000C0.1 WOO

14、JOOO034转置矩阵T2:输出矩阵C1:题目4-3:已知某一炉温控制系统,要求温度保持在600 C恒定。针对该控制系统有以下控制经验:(1) 若炉温低于600 C,则升压;低得越多升压越高。(2) 若炉温高于600C,贝y降压;高得越多降压越低。(3) 若炉温等于600C,则保持电压不变。设模糊控制器为一维控制器,输入语言变量为误差,输出为 控制电压。输入、输出变量的量化等级为7级,取5个模糊集。试设计隶属度函数误差变化划分表、控制电压变化划分表和模糊控制规则表。解:输入(e)以及输出(u)分为5个模糊集:NB、NS、Z0、PS PB。输入变量(e)以及输出变量(u)分为7个等级:-3、-2

15、、-1、0、+1、+2、+3。炉温变化e划分表隶属度变化等级-3-2-10123模糊集PB000000.51PS000010.50ZO000.510.500NS00.510000NB10.500000控制电压变化划分表隶属度变化等级-3-2-10123模糊集PB000000.51PS000010.50ZO000.510.500NS00.510000NB10.500000模糊控制规则表若(IF)NBeNSeZOePSePBe贝(THEN)NBuNSuZOuPSuPBu炉温模糊控制MATLAB仿真程序清单:%Fuzzy Con trol for fur nace temperaturecleara

16、ll;%清理数据库中所有数据close all;% 关闭所有界面图形a=n ewfis('fuzz_temperature'); %模糊炉温a=addvar(a.'in put','e',-3,3);%Parameter e输入参数e的取值范围a=addmf(a.'in put',1, 'NB' , 'zmf',-3,-1);a=addmf(a,'in put',1, 'NS' , 'trimf',-3,-1,1);a=addmf(a,'in

17、put',1, 'Z', 'trimf',-2,0,2);a=addmf(a,'in put',1,卩S' , 'trimf',-1,1,3);a=addmf(a,'in put',1,卩B' , 'smf',1,3);a=addvar(a,'output','u',-3,3);%Parameter u输出参数u的取值范围a=addmf(a,'output',1, 'NB' , 'zmf',-3,

18、-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,卩S' , 'trimf',-1,2,3);a=addmf(a,'output',1,卩B' , 'smf',1,3);rulelist=1 1 11;%Edit?rule?base编辑规则库2

19、2 1 1;3 3 1 1;4 4 1 1;5 5 1 1;a=addrule(a,rulelist);a1=setfis(a,'DefuzzMethod','mom' ); %Defuzzywritefis(a1,'temperature');%Save to fuzzy file "temperature.fis"糊文件"temperature.fis"a2=readfis('temperature');figure(1);%图形1plotfis(a2);%画图figure(2);%图形2plotmf(a,'in put',1);%画图figure(3);%图形3plotmf(a,'output',1);%画图flag=1;%设标志位1if flag=1% 如果标志位为1showrule(a)%Show fuzzy rule base显示模糊规则库ruleview('temperature'); %Dynamic Simu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论