数学建模社区-数学中国
标题:
帮忙看下程序
[打印本页]
作者:
deven1985
时间:
2011-9-2 14:02
标题:
帮忙看下程序
下面这个程序是在x=[x;diff(x)],u=I的条件下的滑模变结构控制,要想把其更改为在x=[x;y;diff(x);diff(y)],u=[Ix;Iy]条件下的话,这个程序应该如何修改?谢谢大家了!
" X! F* v6 D1 B* [0 V6 Y
clear all;
. H9 T* A6 r3 q! h
close all;
; U$ S! U/ j4 s) ~7 t5 z
a=25;b=133;
& u/ n+ I K1 {+ L: N4 i2 t6 j
ts=0.001;
0 p) g x5 C3 v4 p, W
A1=[0,1;0,-a];
6 N6 p' `" }" j: \
B1=[0;b];
6 O& S8 s+ u1 C; b8 o
C1=[1,0];
1 [- \, ~5 P& J4 d$ w- m
D1=0;
, W/ a2 v! ?/ x9 n7 P+ {
[A,B,C,D]=c2dm(A1,B1,C1,D1,ts,'z');
( g1 k$ ` [" w1 [1 {8 @5 M& e! S
x=[-0.8;-0.5];
$ C7 [2 R8 t5 t: h+ c8 a2 s3 x
r_1=0;r_2=0;
5 }- Z+ H: I9 I6 _0 O9 m6 B* X+ M
c=20;
/ o0 P8 L5 j0 {- ~" K, p [" |
eq=5;
" ?1 v5 n$ k$ m/ R, I2 e
q=30;
0 [9 {8 Y2 @$ J. L6 P" Z6 @
Ce=[c,1];
0 m5 f6 V" b2 M9 J; x/ v
for k=1:1:2000
3 D" O9 W( X+ h5 y: o
time(k)=k*ts;
0 B! C5 C1 i+ ?8 X0 ~) k" l$ M
r(k)=1.0;
! P* Z }1 s |- r
+ A5 v2 s C2 y& Z4 _: b
%Using Waitui method
; |3 d; t, P% t) P1 Y% f
dr(k)=(r(k)-r_1)/ts;
2 \) v2 M) B% o8 b3 D7 o0 S
dr_1=(r_1-r_2)/ts;
1 t2 Y/ H9 i3 c' ]
r1(k)=2*r(k)-r_1;
5 t9 d* i( l( J3 C) T- P4 v
dr1(k)=2*dr(k)-dr_1;
* T! ~3 E: Z' {9 ~4 a
6 N4 h, X( A; \( M1 k- z8 [) I/ Z3 f
R=[r(k);dr(k)];
9 k- ^# [0 Z% b
R1=[r1(k);dr1(k)];
" U8 z d$ V: x; P
6 ^. l, I: G+ `1 f) u
E=R-x;
8 A n2 b1 R) L0 e7 E/ J4 |, |0 r
e(k)=E(1);
6 |6 q& _) ^, e4 J
de(k)=E(2);
/ [0 [: c' W& Z$ ?. ]
# G3 p, P3 I7 V. |. w
s(k)=Ce*E;
# v; b6 F# P! f+ M: h. e
( z( k0 B3 O! l$ Q( z* x
X1=abs(e(k))+abs(de(k));
; b8 c: X/ S, n' @: f) W- [
3 @* M: Z- N1 _# p
M=3;
$ s# T& @* {5 i6 c- b8 O
if M==1 %EXP reaching law
6 D5 b5 t7 ^- c% i
ds(k)=-eq*ts*sign(s(k))-q*ts*s(k);
: @# k4 r+ D1 b. i) I4 J
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
8 v# D+ V/ C0 V1 U
elseif M==2 %Variable rate reachine law
( G7 t. Y. b* x! M5 F3 R. B
ds(k)=-eq*ts*X1*sign(s(k));
; o/ m. k( }6 E3 [% i7 c! Y
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
8 n" f' \) ?1 }* b- F n6 Q
elseif M==3 %Coposite reaching law
( Q1 u/ ]% E8 C8 _" ~
k0=0.60;
# P5 M' a2 a: `- Y
if X1>k0 %EXP reachine law
9 m( n- z% E; e. H3 e) m; s0 t
ds(k)=-eq*ts*sign(s(k))-q*ts*s(k);
6 x- b& O# o* c9 \( _& y
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
: L; w& C# F: y: y1 y3 D8 M6 Y+ b
elseif X1<=k0 %Variable rate reachine law
! v4 E A% b6 o) N/ G, {0 O& A
ds(k)=-eq*ts*X1*sign(s(k));
% }5 U+ Y0 @1 t
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
0 B" J$ ~" I( y( j
end
$ g$ K: z' Y% h: M& L
end
( q! J: v; Q. u) X2 m6 u( R+ R
if u(k)>=10
7 l& B7 S2 G4 L
u(k)=10;
/ V7 q# g' \4 |* f
end
6 `) o3 U* W: A1 B8 U
if u(k)<=-10
R$ n2 n b; C9 W$ P
u(k)=-10;
5 i% ]- ~0 u9 |
end
5 R `2 b6 p& T" Z0 T
x=A*x+B*u(k);
8 u; i7 _) Z! G: ]* X$ U1 v
y(k)=x(1);
8 i' L, x5 x6 k; n6 q; u
%Update Parameters
/ w8 G8 A' c) i# [5 O9 \0 v2 ~
r_2=r_1;
# |, E8 I3 a9 ^0 l: J% l
r_1=r(k);
2 A0 I: V0 h: M! c% u0 ^
end
/ S1 H% ]1 o8 e! @
figure(1)
6 U8 _+ s- b- ?* @7 p; r/ S
plot(time,r,'r',time,y,'b');
) z( F) j/ m6 M; X0 V: Z, e
xlabel('Time(second)');ylabel('Position tracking');
& `- B9 C9 O+ s6 z1 _
figure(2)
& Y) Y7 c* @# A5 K, W
plot(time,s,'r');
7 |' u+ i7 b/ u7 S+ o$ f
xlabel('Time(second)');ylabel('Switch function s');
! B" M/ d# Y! b$ N; C% B) o0 o
figure(3)
# F/ K- k2 T9 I8 Y
plot(e,de,'r',e,-c*e,'b');
+ B; h, o" v% @
axis([0,0.0001,-0.001,0]);
$ | Y6 f9 n% P7 B
xlabel('e');ylabel('de');
& }! H3 e' |& |2 {; C! U
figure(4)
+ x( ` X# o4 E& ]! e7 I
plot(time,u,'r');
# i8 M7 k+ M/ y$ E
xlabel('Time(second)');ylabel('u');
/ ]: O, k1 }, \8 ]/ f+ ^& T
2 c+ G1 a" U; C r# T' S* x
作者:
alair006
时间:
2012-2-7 16:30
我一天不来数学中国社区就不爽~~~~
6476978636346710
作者:
守粮仓的鼠
时间:
2012-8-2 20:03
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5