声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1955|回复: 0

[控制理论] 基于等效控制的模糊滑模控制——附带详细的说明

[复制链接]
发表于 2012-6-1 11:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
%基于等效控制的模糊滑模控制
%U=Uqe+Usw
%来源:刘金琨老师的滑模变结构控制的4.4.3
function aaa=fuzzy_sliding_eq()
clc
clear all
close all
global fis
a=newfis('fuzz_smc');
a=addvar(a,'input','s',5*[-25,25]);
a=addmf(a,'input',1,'N','trapmf',5*[-25,-25,-3,0]);
a=addmf(a,'input',1,'Z','trimf',5*[-3,0,3]);
a=addmf(a,'input',1,'B','trapmf',5*[0,3,25,25]);

a=addvar(a,'output','u',20*[-5,5]);
a=addmf(a,'output',1,'N','trapmf',20*[-5,-5,-3,0]);
a=addmf(a,'output',1,'Z','trimf',20*[-3,0,3]);
a=addmf(a,'output',1,'B','trapmf',20*[0,3,5,5]);

rulelist=[1 3 1 1;
          2 2 1 1;
          3 3 1 1];
         
a=addrule(a,rulelist);
%showrule(a)                         %Show fuzzy rule base
%veiwfis(a)
fis=setfis(a,'DefuzzMethod','centroid');  %Defuzzy
%writefis(a1,'fsmc');                 %Save fuzzy system as "fsmc.fis"
%a2=readfis('fsmc');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%初始参数
x10=[0.5;0]; %初始值
%程序需要的参数
t=0;tmax=2; n=1; u=0; h=0.001;
while t<tmax
   
[u,dX]=derives(t,x10,u);
       m1=h*dX;              t=t+0.5*h;X=x10+0.5*m1; %更新导数     
     [u,dX]=derives(t,X,u);
      m2=h*dX;            X=x10+0.5*m2;      %更新导数
    [u,dX]=derives(t,X,u);
     m3=h*dX;          t=t+0.5*h; X=x10+m3;     %更新导数
    [u,dX]=derives(t,X,u);
    m4=h*dX;        
     x10=x10+(1/6)*(m1+2*m2+2*m3+m4);   
%输出
YY(:,n)=x10;time(n)=t; UU(:,n)=u; n=n+1;  
end
  


figure(1)
t=time;
RR=[sin(2*pi*t); 2*pi*cos(2*pi*t);-(2*pi)^2*sin(2*pi*t);];
plot(time,RR(1,:),'b',time,YY(1,:),'r',time,RR(2,:),'b',time,YY(2,:),'r');grid on
figure(2)
plot(time,UU,'r');grid on
end

function [U,dX]=derives(t,x10,u)
global fis
%参考对象   
r=[sin(2*pi*t); 2*pi*cos(2*pi*t);-(2*pi)^2*sin(2*pi*t);];
E=r(1:2,1)-x10;
%控制规律
S=25*E(1)+E(2); %与PD相类似,增大相当于扩大增益
Ueq=(1/133)*( 25*E(1)+r(3)+25*x10(2));              %直接把对象的情况放进来
Usw=(1/133)*305*sign(S);
miu=evalfis([S],fis);

U=Ueq+miu*Usw; %没有第二项,勉强能够跟随形状。。。但不能跟踪
%系统对象
bi=0.50;ci=5;
dt=200*exp(-(t-ci)^2/(2*bi^2));  %rbf_func.m

dX(1,:)=x10(2);
dX(2,:)=-25*x10(2)+133*U+dt;

end
%说明:模糊控制器气的作用是穿同的等效滑模控制和用模糊输出来调整,切换控制所占的自身的比例。
%以实现抖振的消除。最明显的是控制力矩输出的抖振。
%控制依据是源于李雅普函数设计


















评分

1

查看全部评分

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 10:30 , Processed in 0.052163 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表