Introduc) On To MATLAB For Control Engineers: EE 447 Autumn 2008 Eric Klavins
Introduc) On To MATLAB For Control Engineers: EE 447 Autumn 2008 Eric Klavins
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
k
s +
k
1
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
k
s +
k
1
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
k
s +
k
1
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
k
s +
k
1
f = @(t,x) [ -x(1) - x(2)^2; sin(x(1)) ];
tf=30;
zinit=[1;2];
figure
hold all
for h=0.51:-0.1:0.01
n=int16(tf/h);
t=zeros(1,n);
z=zeros(2,n);
z(:,1) = zinit;
t(1) = 0;
for i=2:n
z(:,i) = z(:,i-1) + h * f ( i*h, z(:,i-1) );
t(i) = i*h;
end
plot ( z(1,:), z(2,:) );
end
luncuons Can be uened ln
llles lnsLead (musL be ln same dlrecLory)
function dx = lorenz_func ( t, x )
sigma = 10;
rho = 28;
beta = 8/3;
dx = [
sigma * ( x(2) - x(1) );
x(1)*(rho-x(3))-x(2);
x(1) * x(2) - beta*x(3)
];
ConLenLs of lorenz_func.m
>> [t,x] = ode45 ( 'lorenz_func', [0,20], [-10,20,-5] );
>> plot3 ( x(:,1), x(:,2), x(:,3) )
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')
luncuons Can be uened ln
llles lnsLead (musL be ln same dlrecLory)
function dx = lorenz_func ( t, x )
sigma = 10;
rho = 28;
beta = 8/3;
dx = [
sigma * ( x(2) - x(1) );
x(1)*(rho-x(3))-x(2);
x(1) * x(2) - beta*x(3)
];
ConLenLs of lorenz_func.m
>> [t,x] = ode45 ( 'lorenz_func', [0,20], [-10,20,-5] );
>> plot3 ( x(:,1), x(:,2), x(:,3) )
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')
Pow Lo use MA1LA8 ln 1hls Class
unless an exerclses says Lo use MA1LA8, you
should do Lhe exerclse by hand.
?ou can use MA1LA8 Lo check your work.
?ou musL show your work ln maLhemaucal
problems and calculauons.
L.g. when ndlng [ordan form, whaL equauons dld
you seL up and solve?
arL ll: An Lxample
mgh
u
a sin b + u
a sin b
0
0
= 0
= 0, , 2, ...
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
1
1he endulum
mgh
u
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
1
mgh
u
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
1
mgh
u
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
1
1orque due Lo gravlLy
1orque due
Lo frlcuon
1orque from moLor
1o do:
1) undersLand Lhe naLural behavlor (when u=0)
2) 8ulld and analyze a feedforward conLroller
3) 8ulld and analyze a proporuonal conLroller
4) 8ulld a u conLroller
3) 8ulld and analyze a lu conLroller
naLural 8ehavlor (u=0)
Lqulllbrlum polnLs
We expecL LhaL 2nn are sLable and (2n+1)n are unsLable - buL we
don'L have Lhe analyucal Lools yeL.
So leL's ploL Lhe vecLor eld.
mgh
u
a sin b + u
a sin b
0
0
= 0
= 0, , 2, ...
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
1
a=1;
b=0.25;
f = @(t,x) [ x(2); -a*sin(x(1)) - b*x(2) ];
hold all
[t,x] = ode45 ( f, [0,20], [pi-0.01,-0.1] );
plot ( x(:,1), x(:,2) );
...
[TH,OM] = meshgrid(-10:1:10,-3:1:3);
DTH=OM;
DOM=-a*sin(TH)-b*OM;
quiver(TH,OM,DTH,DOM);
u
0
sLable unsLable
leedforward
Say we wanL 0 Lo go Lo a deslred angel r.
noLe, sln 0 = 0 so aL equlllbrlum we geL
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
1
Slnce we wanL 0 = r and u = 0 aL equlllbrlum we geL
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
1
leedforward
r=0.5;
aguess = 0.95;
uff = aguess * r;
f = @(t,x) [ x(2); -a*sin(x(1)) - b*x(2)
+ uff ];
[t,x] = ode45 ( f, [0,tf], [0,0] );
plot ( t, x(:,1), [0 tf], [r r] );
aguess=0.5;
uff = aguess * r;
f = @(t,x) [ x(2); -a*sin(x(1)) - b*x(2)
+ uff ];
[t,x] = ode45 ( f, [0,tf], [0,0] );
plot ( t, x(:,1), [0 tf], [r r] );
roporuonal leedback
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
e = r
u = u
ff
+ u
fb
= ar + K
p
e
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
1
Can make Lhe sLeady
sLaLe error small by
Lurnlng up kp.
1hls rlng" ls
annoylng.
roporuonal-uerlvauve ConLrol
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
e = r
u = u
ff
+ u
fb
= ar + K
p
e
u = u
ff
+ u
fb
= ar + K
p
e + K
d
e
e =
x = lim
h0
x(t + h) x(t)
h
1
lnLegral leedback
uene a new sLaLe z (malnLalned by Lhe conLroller) and puL
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
e = r
u = u
ff
+ u
fb
= ar + K
p
e
u = u
ff
+ u
fb
= ar + K
p
e + K
d
e
e =
z = e
1
u = u
ff
+ u
fb
= ar + K
p
e + K
d
e + K
I
z
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
k
s +
k
2
aguess = 0.95;
uff = aguess * r;
f = @(t,x) [ x(2); -a*sin(x(1))-b*x(2)+uff+Kp*(r-x(1))-Kd*x(2)+Ki*x(3); r-x(1) ];
[t,x] = ode45 ( f, [0,tf], [0,0,0] );
plot ( t, x(:,1), [0 tf], [r r] );
Analysls
0 1 0
a K
p
b K
d
K
i
1 0 0
0
K
p
1
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
e = r
u = u
ff
+ u
fb
= ar + K
p
e
u = u
ff
+ u
fb
= ar + K
p
e + K
d
e
e =
1
sin
0 1 0
a K
p
b K
d
K
i
1 0 0
0
K
p
1
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
e = r
u = u
ff
+ u
fb
= ar + K
p
e
u = u
ff
+ u
fb
= ar + K
p
e + K
d
e
1
e =
z = e
u = u
ff
+ u
fb
= ar + K
p
e + K
d
e + K
I
z
x = lim
h0
x(t + h) x(t)
h
x(t + h) x(t)
h
f(x, t)
x(t + h) x(t) + hf(x, t)
u = u
+
+ u
e = e
+
+ e
y = y
+
+ y
e
+
+ e
y
+
= u
+
y
+
y
= u
y
+
y
y = y
+
y
= (u
+
u
)
= u
2
sin
0 1 0
a K
p
b K
d
K
i
1 0 0
0
K
p
1
mgh
u
a sin b + u
a sin b
0
0
= 0
a sin b u a b u u = a + b
u = ar
= 0, , 2, ...
x = f(x, t)
e = r
u = u
ff
+ u
fb
= ar + K
p
e
u = u
ff
+ u
fb
= ar + K
p
e + K
d
e
1
syms a b Kp Kd Ki th om z r
A = [ 0 1 0 ; -a-Kp, -b-Kd, Ki; -1 0 0 ];
B = [ 0; Kp; 1 ];
% steady state analysis
ss=A\(-B*r)
% transient analysis
lam=eig(A);
subs (lam, {a,b,Ki,Kd,Kp}, {1,1/4,1,1,1} )
lb=simplify(subs (lam, {a,b,Kp,Kd}, {1,1/4,5,3} ));
plot ( 0:80, subs(lb(1,1),{Ki},{0:80} ), 0:80, subs(lb(2,1),{Ki},{0:80} ),
0:80, subs(lb(3,1),{Ki},{0:80} ) )
ss =
r
0
1/Ki*r*a
ans =
-0.6214
-0.3143 + 1.2291i
-0.3143 - 1.2291i
kl
8
e
(
l
a
m
b
d
a
)
Slmullnk uemo