Nothing Special   »   [go: up one dir, main page]

Matlab Control

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 38

Ingeniera Elctrica y Electrnica

Matlab/Simulink para Control


Taller Intersemestral Agosto 2005

Ingeniera Elctrica y Electrnica

Objetivo:
Usar Matlab y Simulink como herramientas auxiliares para el anlisis y solucin de problemas de Ingenieria de Control

Ingeniera Elctrica y Electrnica

Desglose de temas:
Iniciando problemas de control

Ingeniera Elctrica y Electrnica

Iniciando problemas de control


Creando funciones de transferencia:
Para crear funciones de transferencia se usa el comando tf(num,den), por ejemplo la funcin de transferencia

Se puede definir como num=[18 360]; den=[1 40.4 391 150]; sys=tf(num,den); Se listan los coeficientes del los polinomios en s, en potencias decrecientes.

Ingeniera Elctrica y Electrnica O bien, directamente en la funcin tf sys=tf([18 360], [1 40.4 391 150]) Resultando, Transfer function:

18 s + 360 ---------------------------s^3 + 40.4 s^2 + 391 s + 150


La variable sys representa entonces a una funcin de transferencia.

Ingeniera Elctrica y Electrnica En el caso de la siguiente funcin de transferencia

Podemos definirla como sys=tf([1 0 0], [1 0 2 10]) Resultando, Transfer function: s^2 -------------s^3 + 2 s + 10 Los coeficientes iguales a cero que estan a la derecha de coeficientes distintos de cero deben ser listados.

Ingeniera Elctrica y Electrnica En el estudio de sistemas LTI (linear Time-Invariant), es muy comn el anlisis de sistemas de segundo orden de la forma

n Y (s) = 2 U ( s ) s + 2n s + n 2
2

Estos sistemas pueden ser definidos con la funcin ord2, por ejemplo: >> [num,den]=ord2(10,1) num =1 den = 1 20 100

Ingeniera Elctrica y Electrnica Matlab puede generar funciones de transferencia aleatorias con la funcion rmodel, por ejemplo: >> [num,den]=rmodel(3) num = 0 0 0 1.6154 1.1909 1.1551 0.2360

den = 1.0000

>> [num,den]=rmodel(3) num = den = 0 1.0000 0 0 0.7258

7.3984 24.5843 15.8755

Las funciones de transferencia generadas con rmodel son siempre estables.

Ingeniera Elctrica y Electrnica Para sistemas con tiempo de retraso, con representacion en s dada por e sT , Matlab no provee un medio exacto para describirlo. Sin embargo la funcion pade puede ser usado para generar una funcion de transferencia que puede aproximar el tiempo de retraso. Por ejemplo: >> [num,den]=pade(5,2) num = den =

1.0000 -1.2000 1.0000 1.2000

0.4800 0.4800

>> sys=tf(num,den) Transfer function: s^2 - 1.2 s + 0.48 -----------------s^2 + 1.2 s + 0.48

Ingeniera Elctrica y Electrnica

Matlab impone una restriccin muy importante a la definicin de sistemas a trves de funciones de transferencia. Esta es que los sistemas deben ser propios, es decir, el orden del numerador debe ser igual o menor al orden del denominador.

Ingeniera Elctrica y Electrnica

Creando modelos con variables de estado


Para definir el sistema:

x1 (t ) 40.4 391 150 x1 (t ) 1 x (t ) = 1 0 0 x2 (t ) + 0u (t ) 2 x3 (t ) 0 1 0 x3 (t ) 0


x1 (t ) y (t ) = [0 18 360] x2 (t ) x3 (t )

Ingeniera Elctrica y Electrnica Matlab provee la funcion ss, por ejemplo:


>> a=[-40.4 -391 -150; 1 0 0; 0 1 0]; >> b=[1 0 0]'; >> c=[0 18 360]; >> d=0; >> sys=ss(a,b,c,d) a= x1 x2 x3 b= x1 x2 x3 c= y1 d= y1 x1 -40.4 1 0 u1 1 0 0 x1 0 u1 0 x2 18 x3 360 x2 -391 0 1 x3 -150 0 0

Continuous-time model.

Ingeniera Elctrica y Electrnica De manera similar que con funciones de transferencia, podemos usar la funcin ord2 para definir sistemas de segundo orden, especificando n y .
>> wn=2; >> zeta=.707; >> [a1,b1,c1,d1]=ord2(wn,zeta) a1 = 0 1.0000

-4.0000 -2.8280 b1 = 0 1 c1 = d1 = 1 0 0

Ingeniera Elctrica y Electrnica Cambiando de Espacio de Estado a Funcin de Transferencia La funcin ss2tf puede ser usada para cambiar un sistema con definicin en espacio de estado a funcin de transferencia.
>> [numcss,dencss]=ss2tf(a1,b1,c1,d1) numcss = dencss = 0 0 1 2.8280 4.0000

1.0000

>> tf(numcss,dencss) Transfer function: 1 ----------------s^2 + 2.828 s + 4

Ingeniera Elctrica y Electrnica Cambiando de Funcin de Transferencia a Espacio de Estado La funcin tf2ss puede ser usada para cambiar un sistema definido con funcin de transferencia, a espacio de estado.
>> [actf,bctf,cctf,dctf]=tf2ss(numcss,dencss) actf = -2.8280 -4.0000 1.0000 bctf = 1 0 cctf = dctf = 0 0 1 0

Ingeniera Elctrica y Electrnica Construyendo Sistemas Matlab provee funciones para la construccion de sistemas complejos. Por ejemplo, para las siguientes configuraciones:

SERIE PARALELO

REALIMENTACION UNITARIA REALIMENTACION

Ingeniera Elctrica y Electrnica Coneccin Serie


Para la coneccin serie, Matlab provee la funcin series, por ejemplo:
>> G=tf(4,[1 2]) Transfer function: 4 ----s+2 >> H=tf([10 0.5],[1 2 4]) Transfer function: 10 s + 0.5 ------------s^2 + 2 s + 4 >> sys_serie=series(G,H) Transfer function: 40 s + 2 --------------------s^3 + 4 s^2 + 8 s + 8

Ingeniera Elctrica y Electrnica Coneccin Paralelo


Para la coneccin paralelo, Matlab provee la funcin parallel, por ejemplo:
>> sys_paralelo=parallel(G,H) Transfer function: 14 s^2 + 28.5 s + 17 --------------------s^3 + 4 s^2 + 8 s + 8

Ingeniera Elctrica y Electrnica Coneccin con Realimentacin


Para la coneccin con realimentacin, Matlab provee la funcin feedback. Con realimentacin unitaria:
>> sys_realim_uni=feedback(G,1) Transfer function: 4 ----s+6

Con realimentacin:
>> sys_realim=feedback(G,H) Transfer function: 4 s^2 + 8 s + 16 ----------------------s^3 + 4 s^2 + 48 s + 10

Ingeniera Elctrica y Electrnica Sistemas complejos:


Para construir sistemas mas complejos, Matlab provee el archivo m blkbuild.m. Por ejemplo para el sistema

R(s)

Y(s)
G0(s)
1

G1(s)

G2(s)

G3(s)

2 3

H2(s)
6

H3(s)
7

H1(s)
5

Ingeniera Elctrica y Electrnica


sistema_complejo.m
%Usando blkbuild para construir un sistema complejo n1=1; d1=1; n2=1; d2=[1 1]; n3=1; d3=[1 2]; n4=1; d4=[1 3]; n5=4; d5=1; n6=8; d6=1; n7=12; d7=1; nblocks=7; blkbuild q=[2 1 -5 0 0 3 2 -6 0 0 4 2 -6 3 -7 5 3 0 0 0 6 3 0 0 0 7 4 0 0 0]; inpt=1; output=4; [aa,bb,cc,dd]=connect(a,b,c,d,q,inpt,output); [num,den]=ss2tf(aa,bb,cc,dd); tf(num,den)

Ingeniera Elctrica y Electrnica Calculando Polos y Ceros


Para calcular los polos y ceros de un sistema, a partir de los polinomios del numerador y denominador, Matlab provee la funcin tf2zp. Por ejemplo para el sistema:

3s 4 + 2 s 3 + 5 s 2 + 4 s + 6 G ( s) = 5 s + 3s 4 + 4 s 3 + 2 s 2 + 7 s + 2
Corremos el siguiente cdigo: >> num=[3 2 5 4 6]; >> den=[1 3 4 2 7 2]; >> [z,p,]=tf2zp(num,den)

Ingeniera Elctrica y Electrnica


Resultando
>> [z,p,k]=tf2zp(num,den) z= 0.4019 + 1.1965i 0.4019 - 1.1965i -0.7352 + 0.8455i -0.7352 - 0.8455i p= -1.7680 + 1.2673i -1.7680 - 1.2673i 0.4176 + 1.1130i 0.4176 - 1.1130i -0.2991 k= 3

Ingeniera Elctrica y Electrnica

Los polos y ceros tambien pueden ser calculados a partir de un sistema descrito en espacio de estado. Por ejemplo:

usando_ss2zp.m vec=[1 2 5 3 6 1]; A=compan(vec); c=[1 0 0 0 0]; b=[0;0;0;0;1]; [z,p,k]=ss2zp(A,b,c,0)

Ingeniera Elctrica y Electrnica

Resultando
z = 1.0e-005 * 0.8792 -0.4396 + 0.7614i -0.4396 - 0.7614i p= -1.0433 + 1.6215i -1.0433 - 1.6215i 0.1323 + 1.2217i 0.1323 - 1.2217i -0.1781 k = -1

Ingeniera Elctrica y Electrnica

Mapa de polos y ceros Para visualizar el mapa de polos y ceros, Matlab provee la funcin pzmap. Al correr esta funcin se crea una figura mostrando en forma grfica la ubicacin de polos y ceros. Al correr el cdigo, >> pzmap(p,z) Resulta en la siguiente grfica

Ingeniera Elctrica y Electrnica

Ingeniera Elctrica y Electrnica


Creando Funciones de Transferencia a partir de Polos y Ceros

Es posible definir funciones de transferencia a partir del listado explicto de polos, ceros y ganancia. polocero2ft.m z=[0;0;0;-1]; p=[-1+i 1-i -2 -3.15+2.63i -3.15-2.63i]; k=2; [num,den]=zp2f(z,p,k); tf(num,den)
Transfer function: 2 s^4 + 2 s^3 -------------------------------------------------------------------s^5 + 10.3 s^4 + 48.04 s^3 + 109.2 s^2 + 126.2 s + 67.36

Ingeniera Elctrica y Electrnica


Creando sistemas en Espacio de Estado a partir de Polos y Ceros
usandozp2ss.m
[a,b,c,d]=zp2ss( [-1] , [-2 pause poles=eig(a) pause ceros=tzero(a,b,c,d) pause k=dcgain(a,b,c,d)
a= -2.0000 -1.0000 0 1 1 0 0 0 -1.0000 + 1.0000i -1.0000 - 1.0000i -2.0000 -1 0 0 0 -2.0000 -1.4142 1.4142 0

1+i

1-i ], 2);

b=

c= d=

1.4142

poles =

ceros = k=

0.5000

Ingeniera Elctrica y Electrnica

Anlisis de respuesta transitoria


Matlab provee funciones para la aplicacin de estmulos a sistemas LIT definidos a trves de funciones de transferencia o variables de estado. Las funciones mas comunes son: la entrada escaln (step), el impulso (impulse), condicin inicial (initial), y seal arbitraria (lsim). Ejemplo: Un sistema con no ceros, polos en s=-13i, y ganancia 3, tiene la siguiente respuesta a una estrada escalon.

Ingeniera Elctrica y Electrnica


>> [num,den]=zp2tf([ ],[-1+3i -1-3i],3) num = 0 den = 1 0 2 3 10

>> sys=tf(num,den) Transfer function: 3 -------------s^2 + 2 s + 10 >> step(sys)

Ingeniera Elctrica y Electrnica La funcin step puede ser invocada con argumentos de salida, >> [y,t]=step(num,den); Donde y es el vector de la respuesta del sistema, y t es el vector del tiempo de simulacin. Ejercicio: Crear un archivo m que obtenga: El valor de pico, tiempo de pico, tiempo de crecimiento, tiempo de establecimiento y frecuencia natural.

Ingeniera Elctrica y Electrnica Respuesta al Impulso

>> [num,den]=zp2tf([ ],[-1+3i -1-3i],3) num = 0 den = 1 0 2 3 10

>> sys=tf(num,den) Transfer function: 3 -------------s^2 + 2 s + 10 >> impulse(sys)

Ingeniera Elctrica y Electrnica Respuesta a la Rampa


Matlab no provee una funcin para una entrada rampa. Sin embargo, provee la funcin lsim que permite definir una seal arbitaria. La sintaxis de lsim es lsim(sys,u,t) donde t es el vector de tiempo y u es la seal de entrada para cada instante de tiempo en t. Entonces, una rampa con pendiente unitaria y duracin de 10 segundos pude ser definida como, >> t=0:.01:10; >> u=t;

Ingeniera Elctrica y Electrnica Respuesta a la Rampa


>> lsim(sys,u,t) >> hold Current plot held >> plot(t,u)

Ingeniera Elctrica y Electrnica


Respuesta a una Condicin Inicial
Una de las ventajas de la representacion de sistemas LIT con variables de estado es la respuesta a condiciones iniciales. Matlab provee la funcin initial para simular la respuesta a una condicin inicial.
>> [a,b,c,d]=zp2ss([ ],[-1+6i -1-6i],10); >> sys=ss(a,b,c,d); >> [y,t,x]=initial(sys,[-10 10]'); >> subplot(1,2,1), plot(t,x(:,1),t,x(:,2)) >> subplot(1,2,2), plot(x(:,1),x(:,2))

Ingeniera Elctrica y Electrnica


Respuesta a una Condicin Inicial
>> [a,b,c,d]=zp2ss([ ],[6i -6i],10); >> sys=ss(a,b,c,d); >> [y,t,x]=initial(sys,[-10 10],5); >> subplot(1,2,1), plot(t,x(:,1),t,x(:,2)) >> subplot(1,2,2), plot(x(:,1),x(:,2))

Ingeniera Elctrica y Electrnica


Respuesta a una Condicin Inicial
>> [a,b,c,d]=zp2ss([ ],[1+6i 1-6i],10); >> sys=ss(a,b,c,d); >> [y,t,x]=initial(sys,[-10 10],5); >> subplot(1,2,1), plot(t,x(:,1),t,x(:,2)) >> subplot(1,2,2), plot(x(:,1),x(:,2))

También podría gustarte