Transfer Function in Laplace domain

advertisement
MATLAB Tutorial
U(s) input
G(s)
Y(s) output
ENSC 383- Feedback Control
Summer 2010
TAs:Kaveh Kianfar, Esmaeil Tafazzoli
1
Outline
Outline
•
•
•
•
Starting Matlab
Basics
Modeling
Control toolbox
2
m
file
M-file
• When writing a program in matlab save it as m-file
( filename.m)
• 2 types of M-file
1- script (has no input and output, simply execute commands)
2- function (need input, starts with keyword “function”)
function [y z]=mfunc(x)
y=(x*x')^.5; % norm of x
z=sum(x)/length(x); %%% using 'sum' function
end
3
Polynomials
•
Present polynomial with coefficients vector
s 4  3s 3  2 s  1
x = [1 3 0 -2 1];
Poly converts roots to coefficients of a polynomial:
( s  2)( s  5)( s  6)
 2,5,6
( s  2)( s  5)
P3=poly([-2 -5 -6])
rootsP3=roots(P3)
P5=conv([1 2],[1 5])
4
Polynomials
•
•
•
•
•
•
p=poly([-2 1 5])
R=roots(p)
x=-3:0.1:6;
y=p(1)*x.^3+p(2)*x.^2+p(3)*x+p(4);
plot(x,y)
grid
40
30
20
10
0
p=
-10
1 -4 -7 10
-20
-30
R=
-40
-3
-2
-1
0
1
2
3
4
5
6
5.0000
-2.0000
1.0000
5
Partial Fraction Expansion
numf=[1 1 3 1];
denf=[1 0 1];
[r,p,k]=residue(numf,denf)
6
Dynamic system Representation
usingTransfer Function
U(s) input
•Roots of numerators are
“zeros” of a system,
•Roots of denominators are
“poles” of a system.
G(s)
Y(s) output
S-plane
pole
Im
Re
zero
7
Transfer Function in MATLAB
Command “tf” by defining the
Command “zpk”
Using s=tf(‘s’), then for example:
8
Transfer Function in MATLAB
 tf2zp: converts the numerator, denominator from coefficient
to roots.
[Z,P,K] = TF2ZP(NUM,DEN)
Ex.:
[z,p,k]=tf2zp([1 1],[1 2 1])
z=-1, p=-1;-1, k=1
 zp2tf:
converts the numerator, denominator from roots to
coefficient. [NUM,DEN] = ZP2TF(Z,P,K)
9
Interconnection between blocks
• G=series(G1,G2) or alternatively:
u
G1(s)
y
G2(s)
• G=parallel (G1,G2) or alternatively:
u
G1(s)
y
G2(s)
10
Interconnection between blocks
• Feedback:
y
u
-
G1(s)
H(s)
or alternatively for Negative feedback:
11
Symbolic computation in MATLAB
• Syms s t :defines s, and t as symbolic variable
syms s a t
1)G4=laplace(exp(t)):
2)G5=laplace(exp(-t)):
3)G6=laplace(sin(a*t)):
G4 =1/(s - 1)
G5 =1/(s + 1)
G6 =a/(a^2 + s^2)
Hint:ilaplace(F,s,t): computes Inverse Laplace transform of
F on the complex variable s and returns it as a function of
the time, t.
ilaplace(a/(s^2+a^2),s,t)=(a*sin(t*(a^2)^(1/2)))/(a^2)^(1/2)
12
Symbolic computation in MATLAB
• Ex.:A=[1,1;0,1];syms t; Q=expm(A*t)
Hint: expm(M) computes the matrix exponential
of M.
G=laplace(Q,t,s) gives:
G=
[ 1/(s - 1), 1/(s - 1)^2]
[
0, 1/(s - 1)]
13
System Response
• SystemStep, impulse, other inputs
• Matlab commands:
lsim
Simulate LTI model response to arbitrary inputs
sys=tf(num,den);
t=0:dt:final_t;
u=f(t);
[y t]=lsim(sys,u,t)
•
step
step(sys)
response
Simulate LTI model response to step input
special case of lsim
14
First order systems
• Transient response:
 x(t)=x0*exp(a*t)
“if a<0,it’s stable”.
s-plane
Im
s=-a
Re
15
Exp(a*t)
• When “a” is a complex number:
t=0:0.1:5;
a=-1+4*i; % a is complex with negative real part
f=exp(a*t);
X=real(f);
Y=imag(f);
plot(X,Y)
xlabel('Re')
ylabel('Im')
axis('square')
Plot(t,f)
16
First order systems(cont’d)
•When “a” is complex, with
Negative real part
in polar coordinates:
Rho=sqrt(X.^2+Y.^2);
Theta=atan2(Y,X);
polar(Theta,Rho)
17
Second
System
Secondorder
order systems
• In Laplace domain:
Like mass-spring-damper
s=tf('s')
w=1;
zeta=[0.2 0.4 0.7 1 2];
for i=1:length(zeta)
G=w^2/(s^2+2*zeta(i)*w*s+w^2)
step(G,10)
hold on
end
18
Second order systems
Step Response
1.4
Damping ratio is constant, wn
changes.
Im
1
Amplitude
s-plane
1.2
Re
0.8
Damping ratio is 0.5:
Overshoots are equal.
0.6
0.4
0.2
0
0
0.5
s=tf('s')
zeta=0.5
w=[sqrt(12) 4 sqrt(20)];
for i=1:length(w)
G=(w(i))^2/(s^2+2*zeta*w(i)*s+(w(i))^2)
step(G,3)
hold on
end
1
1.5
2
2.5
3
Time (sec)
19
Second order systems
• Undamped system(mass-spring)
Damping ratio is zero:
Step Response
2.5
w =1
w =2
2
1.5
Amplitude
w=[1 2];
for i=1:length(w)
G=tf(w(i)^2,[1 0 w(i)^2]);
step(G,20)
hold on
end
1
0.5
0
-0.5
0
2
4
6
8
10
Time (sec)
12
14
16
18
20
20
Dynamic system representation
ma   F  my  u  ky  by
 x1  y
 x  x2
 1

 x2  y mx 2  u  bx2  kx1
 X  AX  BU

Y  CX  DU
A
B





x
x
1   1  0 
  0
  1 
  
 u (t )
 x2   k / m  b / m   x2  1 / m 
u (t )
ky
m
by
C

 x 
y  x1  [1 0]  1   0
 x2 
Y ( s)
1
 2
U ( s) ms  bs  k
System Transfer Function
21
MATLAB code
•
•
•
•
•
•
•
•
•
•
•
k=.2;
b=.5;
m=1;
A=[0 1;-k/m -b/m];
B=[0;1/m];
C=[1 0];
D=0;
F=ss(A,B,C,D)
step(F)
[num den]=ss2tf(A,B,C,D)
Gs=tf(num,den)
% spring stiffness coefficient
% damping coefficient
% mass
% Represent A.
% Represent column vector B.
% Represent row vector C.
% Represent D.
% Create an LTI object and display.
% system transfer function
22
Step
StepResponse
Response
Step Response
6
5
Amplitude
4
3
2
1
0
0
5
10
15
20
25
30
Time (sec)
23
Ordinary differential equations
3
2
1
x2
function dx=lin1(t,x)
dx=zeros(2,1);
0
dx(1)=-x(1);
dx(2)=-2*x(2);
-1
A=[-1 0;0 -2];
-2
[u,v]=eig(A)
In workspace:
[T,X]=ode23(@lin1,[0 10], [a(i) b(j)]); -3-3
-2
-1
0
1
2
x1
plot(X(:,1),X(:,2))
[u.v]=eig(A)
Hint:For using ode command, the diff. equations
u=
should be written in the first order format,i.e. a second
0 1
order diff. eq. should be written as two first order diff.
1 0
equations.
3
24
Nonlinear Differential eq. of a pendulum
1.5
function dx=pendulum(t,x)
dx=zeros(2,1)
dx(1)=x(2);
dx(2)=-0.5*x(2)-sin(x(1));
Viscose Damping term
1
x2
0.5
Gravity term
0
-0.5
[T,X]=ode23(@pendulum,[0 10], [a(i) 0]);
plot(X(:,1),X(:,2))
-1
-1.5
-2
-1.5
-1
-0.5
0
x1
0.5
1
1.5
2
1
Angle
0.5
0
Angular velocity
-0.5
g
-1
-1.5
-2
0
2
4
6
8
10
12
14
16
18
20
25
Download