基于比例切换函数的滑模控制matlab仿真实例

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

基于比例切换函数的滑模控制

一、仿真实例

考虑如下时变对象: as

s b s Gp +=2)( (2.29) 其中255sin(6)a t π=+,13350sin(2)b t π=+

将传递函数描述为状态方程的形式:

Bu Ax x

+= (2.30) 其中A=⎢⎣⎡00 ⎥⎦⎤-a 1 , B=⎥⎦

⎤⎢⎣⎡b 0 采用基于比例的切换函数控制方法,1S =为阶跃响应,2S =为正弦响应。在控制律中,取30c =,500α=,10β=。

二、仿真主程序:

主程序:chap2_1.m

clear all;

close all;

global S A F c alfa beta

xk=[0,0];

ts=0.001;

T=1;

TimeSet=[0:ts:T];

[t,y]=ode45('chap2_1eq',TimeSet,xk,[],[]);

x1=y(:,1);

x2=y(:,2);

if S==1

rin=1.0;

drin=0;

elseif S==2

rin=A*sin(F*2*pi*t);

drin=A*F*2*pi*cos(F*2*pi*t);

end

e1=rin-x1;

e2=drin-x2;

s=c*e1+e2;

for k=1:1:T/ts+1

u(k)=(alfa*abs(e1(k))+beta*abs(e2(k)))*sign(s(k)); end

figure(1);

plot(t,rin,'r',t,y(:,1),'b');

xlabel('time(s)');ylabel('Position tracking');

figure(2);

plot(t,u,'r');

xlabel('time(s)');ylabel('u');

figure(3);

plot(e1,e2,'r',e1,-c*e1,'b');

xlabel('time(s)');ylabel('Phase trajectory');

控制子程序:chap2_leq.m

function dx=PlantModel(t,x,flag,para)

global S A F c alfa beta

dx=zeros(2,1);

S=1; %S=1时为阶跃响应,S=2时为正弦响应%

if S==1

rin=1.0;

drin=0;

elseif S==2

A=0.5;F=3;

rin=A*sin(F*2*pi*t);

drin=A*F*2*pi*cos(F*2*pi*t);

end

c=30;

alfa=500;

beta=10;

e1=rin-x(1);

e2=drin-x(2);

s=c*e1+e2;

u=(alfa*abs(e1)+beta*abs(e2))*sign(s);

dx(1)=x(2);

dx(2)=-(25+5*sin(3*2*pi*t))*x(2)+(133+50*sin(1*2*pi*t))*u;

三、仿真结果

1.1

S 阶跃响应

图2-1 阶跃响应

图2-2 控制器输出

图2-3 滑模运动轨迹

2.2

S 为正弦响应

图2-4 正弦响应

图2-5 控制器输出

图2-6 滑模运动轨迹

相关文档
最新文档