Vous êtes sur la page 1sur 6

COMANDOS DE MATLAB

[A,B,C,D] = tf2ss(num,den)
estados
[A,B,C,D] = zp2ss(z,p,k)
[num,den] = ss2tf(A,B,C,D)
transferencia
[z,p,k] = ss2zp(A,B,C,D)

de funcin de transferencia a espacio de


de descripcin polo-cero a espacio de estados
de espacio de estados a funcin de
de espacio de estados a descripcin polo-cero

step (A,B,C,D,1,t);
impulse (A,B,C,D,1,t);
[Abc,Bbc,Cbc,Dbc] = cloop (A,B,C,D,-1);
[A12,B12,C12,D12] = series (A1,B1,C1,D1,A2,B2,C2,D2);
evalues = eig (A) ; devuelve un vector con los valores propios de A.
Co = ctrb(A,B): Devuelve la matriz de controlabilidad del sistema
Ob = obsv(A,C): Devuelve la matriz de observabilidad.
[Ac,Bc,Cc,T,K] = ctrbf(A,B,C): Devuelve una descripcin en espacio de estados
en
forma cannica de control, separando los subespacios controlables y no
controlables.
[Ao,Bo,Co,T,K] = obsvf(A,B,C): Devuelve una descripcin en espacio de estados
en
forma cannica de observacin, separando los subespacios observables y no
observables.

REALIMENTACIN DE ESTADO
UBICACIN DE POLOS

Sea el sistema inestable, con los polos ubicados en s = 1 +/- j y s = -2.


clear all
warning off
s = tf('s');
gs = ss(1/((s-1+i)*(s-1-i)*(s+2)))
a =
x1 x2 x3
x1
0
1 -2
x2
2
0
0
x3
0
1
0
b =
x1
x2
x3
c =

u1
0.5
0
0

y1

x1
0

x2
0

x3
1

d =
y1

u1
0

rlocus(gs)

glc=feedback(gs,1);
step(glc)

Por tratarse de un sistema SISO, la comprobacin del rango la hacemos verificando que el
el sistema sea no singular o lo que es lo mismo, que el determinante de M sea diferente de
cero.
M = ctrb(gs.A,gs.B)
M =
0.5000
0
0
rank(M)

0
1.0000
0

1.0000
0
1.0000

ans =
3
det(M)
ans =
0.5000

Como el sistema es controlable, podemos proseguir y definimos la ubicacin de los


nuevos polos en s = -1 +/- j y en s = -7

P= [-1+i -1-i -7]

P=
-1.0000 + 1.0000i -1.0000 - 1.0000i -7.0000
[num,den] = tfdata(gs,'v')
num =
0

den =
1.0000

0.0000

-2.0000

4.0000

dens = fliplr(den(2:length(den)-1));
id= eye(length(den)-1);
W = fliplr(id);
W =
0
0
1

0
1
0

1
0
0

for k = 1:length(dens)
W(k,1:length(dens)+1-k)=dens(k:length(dens))
end
W

W=
-2.0000 0.0000
0.0000 1.0000
1.0000
0

1.0000
0
0

T = M*W
T =
0
0.0000
1.0000

0.0000
1.0000
0

0.5000
0
0

Como comprobacin de que se ha obtenido la matriz correcta, T, de transformacin a


FCC, realizamos las transformaciones a FCC de las matrices A y B. Se comprueba que
las matricesA y B obtenidas se encuentran en FCC.
inv(T)*gs.A*T
ans =

0.0000
-0.0000
-4.0000

1.0000
0
2.0000

0
1.0000
-0.0000

inv(T)*gs.B

ans =
0
0
1
Creamos el polinomio deseado a partir de los polos definidos
[denhat,ans] = tfdata((s+1-i)*(s+1+i)*(s+7),'v')
denhat =
1

16

14

ans =
0

Para realizar el clculo de K, primero encontramos la diferencia entre los coeficientes del
polinomio caracterstico deseado y el original y los ordenamos adecuadamente
delta=denhat-den
delta =
0

9.0000

18.0000

10.0000

9.0000

delta = fliplr(delta)
delta =
10.0000

18.0000

El clculo de la matriz K no requiere la diferencia del coeficiente de orden superior,


ahora en el extremo derecho, por lo que no se utilizar en el clculo de K.
K = [delta(1:length(delta)-1)]*inv(T)
K =
18.0000 18.0000 10.0000

Solo por confirmacin, calculamos la matriz A ~ del nuevo sistema y verificamos que
tiene los valores propios en los valores definidos.
Ahat=gs.A-gs.B*K
Ahat =
-9.0000 -8.0000 -7.0000
2.0000
0
0

0 1.0000
eig(Ahat)
ans =

-7.0000
-1.0000 + 1.0000i
-1.0000 - 1.0000i
Creamos un nuevo sistema, en variables de estado, con la nueva matriz A ~ .
gscomp=ss(Ahat,gs.B,gs.C,0)
a=
x1 x2 x3
x1 -9 -8 -7
x2 2 0 0
x3 0 1 0
b=
u1
x1 0.5
x2 0
x3 0
c=
x1 x2 x3
y1 0 0 1
d=
u1
y1 0
step(gscomp)

rlocus(gscomp)

Vous aimerez peut-être aussi