倒立摆离散型模糊控制器设计与仿真_第1页
倒立摆离散型模糊控制器设计与仿真_第2页
倒立摆离散型模糊控制器设计与仿真_第3页
倒立摆离散型模糊控制器设计与仿真_第4页
倒立摆离散型模糊控制器设计与仿真_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上倒立摆离散型模糊控制器设计与仿真1. 数学模型图1 倒立摆示意图如上图1倒立摆示意图所示,为杆与垂线的夹角,为作用力,杆的质量,杆和小车的总质量,半杆长,重力加速度,采样周期。其数学模型为:2. 离散模糊控制器的设计(1) 确定输入、输出变量,选择维数本文为倒立摆控制系统设计了一个双输入、单输出结构的模糊控制器。模糊控制器系统的输入变量为系统设定与实际测得之间的偏差及其偏差变化率,输出语言变量为控制量。(2) 确定基本论域和论域(比例因子),都是实数域上的连续变量,在该例中它们的变化范围分别为:的范围为,的范围为,的范围为,将它们全部变换到离散论域,得到离散论域上的输

2、入、输出变量,。(3) 定义模糊集合及隶属函数表对,分别定义7个模糊集合,,,,。对,定义相同的隶属度函数,如表1所示。表1 ,隶属度函数表(4) 设计模糊控制规则总结工作经验得出52条控制规则,见表2。表2 控制规则表(5) 求模糊关系矩阵R和模糊控制表在Matlab中新建文件,编写M文件计算模糊控制表,M文件如下。Input1_Terms = 1,2,3,4,5,6,7;Input2_Terms = 1,2,3,4,5,6,7;Output_Terms = 1,2,3,4,5,6,7;Input1_Terms_Membership = 0,0,0,0,0,0,0,0,0,0,0.2,0.7

3、,1; 0,0,0,0,0,0,0,0,0.2,0.8,1,0.8,0.2; 0,0,0,0,0,0,0,0.8,1,0.8,0.2,0,0; 0,0,0,0,0,0.5,1,0.5,0,0,0,0,0; 0,0,0.2,0.8,1,0.8,0,0,0,0,0,0,0; 0.2,0.8,1,0.8,0.2,0,0,0,0,0,0,0,0; 1,0.7,0.2,0,0,0,0,0,0,0,0,0,0;Input2_Terms_Membership = Input1_Terms_Membership;Output_Terms_Membership = Input1_Terms_Membership

4、;Rule=0,0,7,7,7,7,7; 7,7,6,6,6,6,6; 7,5,5,5,3,2,2; 6,5,5,4,3,2,2; 6,6,5,3,3,3,1; 2,2,2,2,2,3,1; 1,1,1,1,1,0,0;for i=1:169 for j=1:13 R(i,j)=0; end endfor Input1_Terms_Index=1:7 for Input2_Terms_Index=1:7 if (Rule(Input1_Terms_Index,Input2_Terms_Index)=0) Output_Terms_Index=Rule(Input1_Terms_Index,In

5、put2_Terms_Index ); A=Input1_Terms_Membership(Input1_Terms_Index,:); B=Input2_Terms_Membership(Input2_Terms_Index,:); C=Output_Terms_Membership(Output_Terms_Index,:); for i=1:13 for j=1:13 R1(i,j)=min(A(i),B(j); end end R2= ;for k=1:13 R2=R2;R1(k,:)'endfor i=1:169 for j=1:13 R3(i,j)=min(R2(i),C(

6、j); endend R=max(R,R3); end endend for Input1_value_index=1:13 for Input2_value_index=1:13 Input1_value_membership=Input1_Terms_Membership(:,Input1_value_index); Max_Input1_value,Max_Input1_index=max(Input1_value_membership); Ad=Input1_Terms_Membership(Max_Input1_index,:); Input2_value_membership=In

7、put2_Terms_Membership(:,Input2_value_index); Max_Input2_value,Max_Input2_index=max(Input2_value_membership); Bd=Input2_Terms_Membership(Max_Input2_index,:);for i=1:13 for j=1:13 Rd1(i,j)=min(Ad(i),Bd(j); end endRd2= ;for k=1:13 Rd2=Rd2;Rd1(k,:)'endfor j=1:13 Cd(j)=max(min(Rd2,R(:,j); end sum1=0;

8、 sum2=0; for i=1:13 sum1=sum1+Cd(i); sum2=sum2+Cd(i)*(i-7); end OUT=round(sum2/sum1); Fuzzy_Table(Input1_value_index,Input2_value_index)=OUT; end end3. 仿真实现(1) 在Matlab软件下搭建仿真模型图3 仿真模型(2) 修改参数 (3) 编写s函数,并导入模块首先在matlab程序输入框输入“edit sfuntmpl”调出s函数模板,在此基础上修改程序如下。function sys,x0,str,ts=sdaolibai(,x,u,flag

9、)switch flag case 0 sys,x0,str,ts=mdlInitializeSizes(); case 1 sys=mdlDerivatives(x,u); case 3 sys=mdlOutputs(x); case 2,4,9 sys=; otherwise error('Unhandled flag=',num2str(flag);end;function sys,x0,str,ts=mdlInitializeSizes()sizes=simsizes;sizes.NumContStates=2;sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=1;sizes.DirFeedthrough=0;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=5;30;str=;ts=0 0;function sys=mdlDerivatives(x,u)sys(1,1)=x(2);sys(2,1)=(1.1*9.8*sin(x(1)*pi/180)-cos(x(1)*pi/180)*(u+0.1*0.5*(x(2)*pi/180)2*sin(x(1)*pi/180)/(4/3)*1.1*0

温馨提示

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

评论

0/150

提交评论