matlab control

38
Taller Intersemestral Agosto 2005 Ingeniería Eléctrica y Electrónica Matlab/Simulink para Control

Upload: marcos-medrano

Post on 25-Jul-2015

88 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Matlab Control

Taller IntersemestralAgosto 2005

Ingeniería Eléctrica y Electrónica

Matlab/Simulinkpara Control

Page 2: Matlab Control

Usar Matlab y Simulink como herramientas

auxiliares para el análisis y solución de

problemas de Ingenieria de Control

Ingeniería Eléctrica y Electrónica

Objetivo:

Page 3: Matlab Control

Ingeniería Eléctrica y Electrónica

Desglose de temas:

• Iniciando problemas de control

Page 4: Matlab Control

Ingeniería Eléctrica y Electrónica

Iniciando problemas de controlCreando funciones de transferencia:

Para crear funciones de transferencia se usa el comando‘tf(num,den)’, por ejemplo la función 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’, enpotencias decrecientes.

Page 5: Matlab Control

Ingeniería Eléctrica y Electrónica

O bien, directamente en la función ‘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 funciónde transferencia.

Page 6: Matlab Control

Ingeniería Eléctrica y Electrónica

En el caso de la siguiente función 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.

Page 7: Matlab Control

Ingeniería Eléctrica y Electrónica

En el estudio de sistemas LTI (linear Time-Invariant), es muycomún el análisis de sistemas de segundo orden de la forma

22

2

2)()(

nn

n

sssUsY

ωξωω

++=

Estos sistemas pueden ser definidos con la función ‘ord2’,por ejemplo:

>> [num,den]=ord2(10,1)

num =1

den = 1 20 100

Page 8: Matlab Control

Ingeniería Eléctrica y Electrónica

Matlab puede generar funciones de transferencia aleatorias con la funcion ‘rmodel’, por ejemplo:

>> [num,den]=rmodel(3)

num = 0 0 0 1.1909

den = 1.0000 1.6154 1.1551 0.2360

>> [num,den]=rmodel(3)

num = 0 0 0 0.7258

den = 1.0000 7.3984 24.5843 15.8755

Las funciones de transferencia generadas con ‘rmodel’son siempre estables.

Page 9: Matlab Control

Ingeniería Eléctrica y Electrónica

Para sistemas con tiempo de retraso, con representacion en‘s’ dada por , Matlab no provee un medio exacto paradescribirlo. Sin embargo la funcion ‘pade’ puede ser usadopara generar una funcion de transferencia que puedeaproximar el tiempo de retraso. Por ejemplo:

>> [num,den]=pade(5,2)num = 1.0000 -1.2000 0.4800den = 1.0000 1.2000 0.4800

>> sys=tf(num,den)Transfer function:

s^2 - 1.2 s + 0.48------------------

s^2 + 1.2 s + 0.48

sTe−

Page 10: Matlab Control

Ingeniería Eléctrica y Electrónica

Matlab impone una restricción muy importante a

la definición de sistemas a tráves 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.

Page 11: Matlab Control

Ingeniería Eléctrica y Electrónica

Creando modelos con variables de estado

Para definir el sistema:

)(001

)()()(

0100011503914.40

)()()(

3

2

1

3

2

1

tutxtxtx

txtxtx

⎥⎥⎥

⎢⎢⎢

⎡+

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡ −−−=

⎥⎥⎥

⎢⎢⎢

[ ]⎥⎥⎥

⎢⎢⎢

⎡=

)()()(

360180)(

3

2

1

txtxtx

ty

Page 12: Matlab Control

Ingeniería Eléctrica y Electrónica

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

x1 -40.4 -391 -150

x2 1 0 0

x3 0 1 0

b = u1

x1 1

x2 0

x3 0

c = x1 x2 x3

y1 0 18 360

d = u1

y1 0

Continuous-time model.

Page 13: Matlab Control

Ingeniería Eléctrica y Electrónica

De manera similar que con funciones de transferencia,

podemos usar la función ‘ord2’ para definir sistemas de

segundo orden, especificando y .

>> wn=2;

>> zeta=.707;

>> [a1,b1,c1,d1]=ord2(wn,zeta)

a1 = 0 1.0000

-4.0000 -2.8280

b1 = 0

1

c1 = 1 0

d1 = 0

nω ξ

Page 14: Matlab Control

Ingeniería Eléctrica y Electrónica

Cambiando de Espacio de Estado a Función de Transferencia

La función ‘ss2tf’ puede ser usada para cambiar un sistema con

definición en espacio de estado a función de transferencia.

>> [numcss,dencss]=ss2tf(a1,b1,c1,d1)

numcss = 0 0 1

dencss = 1.0000 2.8280 4.0000

>> tf(numcss,dencss)

Transfer function: 1

-----------------

s^2 + 2.828 s + 4

Page 15: Matlab Control

Ingeniería Eléctrica y Electrónica

Cambiando de Función de Transferencia a Espacio de Estado

La función ‘tf2ss’ puede ser usada para cambiar un sistema

definido con función de transferencia, a espacio de estado.

>> [actf,bctf,cctf,dctf]=tf2ss(numcss,dencss)

actf = -2.8280 -4.0000

1.0000 0

bctf = 1

0

cctf = 0 1

dctf = 0

Page 16: Matlab Control

Ingeniería Eléctrica y Electrónica

Construyendo Sistemas

Matlab provee funciones para la construccion de sistemas

complejos. Por ejemplo, para las siguientes configuraciones:

SERIE

PARALELO

REALIMENTACION UNITARIAREALIMENTACION

Page 17: Matlab Control

Ingeniería Eléctrica y Electrónica

Conección Serie

Para la conección serie, Matlab provee la función ‘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

Page 18: Matlab Control

Ingeniería Eléctrica y Electrónica

Conección Paralelo

Para la conección paralelo, Matlab provee la función ‘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

Page 19: Matlab Control

Ingeniería Eléctrica y Electrónica

Conección con Realimentación

Para la conección con realimentación, Matlab provee la

función ‘feedback’. Con realimentación unitaria:

>> sys_realim_uni=feedback(G,1)

Transfer function:

4

-----

s + 6

Con realimentación:

>> sys_realim=feedback(G,H)

Transfer function:

4 s^2 + 8 s + 16

-----------------------

s^3 + 4 s^2 + 48 s + 10

Page 20: Matlab Control

Ingeniería Eléctrica y Electrónica

Sistemas complejos:

Para construir sistemas mas complejos, Matlab provee el

archivo m ‘blkbuild.m’. Por ejemplo para el sistema

G0(s) G1(s) G2(s) G3(s)

H1(s)

H2(s) H3(s)

+ + +

1 2 3 4

6 7

5

- - -R(s) Y(s)

Page 21: Matlab Control

Ingeniería Eléctrica y Electrónica

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)

Page 22: Matlab Control

Ingeniería Eléctrica y Electrónica

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 función

‘tf2zp’. Por ejemplo para el sistema:

2724364523)( 2345

234

+++++++++

=sssss

sssssG

Corremos el siguiente código:

>> num=[3 2 5 4 6];>> den=[1 3 4 2 7 2];>> [z,p,]=tf2zp(num,den)

Page 23: Matlab Control

Ingeniería Eléctrica y Electrónica

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

Page 24: Matlab Control

Ingeniería Eléctrica y Electrónica

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)

Page 25: Matlab Control

Ingeniería Eléctrica y Electrónica

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

Page 26: Matlab Control

Ingeniería Eléctrica y Electrónica

Mapa de polos y ceros

Para visualizar el mapa de polos y ceros, Matlab provee la

función ‘pzmap’. Al correr esta función se crea una figura

mostrando en forma gráfica la ubicación de polos y ceros.

Al correr el código,

>> pzmap(p,z)

Resulta en la siguiente gráfica

Page 27: Matlab Control

Ingeniería Eléctrica y Electrónica

Page 28: Matlab Control

Ingeniería Eléctrica y Electrónica

Creando Funciones de Transferencia a partir de Polos y Ceros

Es posible definir funciones de transferencia a partir del listadoexplicto 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

Page 29: Matlab Control

Ingeniería Eléctrica y Electrónica

Creando sistemas en Espacio de Estado a partir de Polos y Ceros

usandozp2ss.m

[a,b,c,d]=zp2ss( [-1] , [-2 –1+i –1-i ], 2);pausepoles=eig(a)pauseceros=tzero(a,b,c,d)pausek=dcgain(a,b,c,d)

a = -2.0000 0 0-1.0000 -2.0000 -1.4142

0 1.4142 0b = 1

10

c = 0 0 1.4142

d = 0

poles = -1.0000 + 1.0000i-1.0000 - 1.0000i-2.0000

ceros = -1

k = 0.5000

Page 30: Matlab Control

Ingeniería Eléctrica y ElectrónicaIngeniería Eléctrica y Electrónica

Análisis de respuesta transitoria

Matlab provee funciones para la aplicación de estímulos asistemas LIT definidos a tráves de funciones de transferenciao variables de estado.

Las funciones mas comunes son: la entrada escalón (step),el impulso (impulse), condición inicial (initial), y señalarbitraria (lsim).

Ejemplo: Un sistema con no ceros, polos en s=-1±3i, yganancia 3, tiene la siguiente respuesta a una estradaescalon.

Page 31: Matlab Control

Ingeniería Eléctrica y Electrónica

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

num = 0 0 3

den = 1 2 10

>> sys=tf(num,den)

Transfer function:3

--------------s^2 + 2 s + 10

>> step(sys)

Page 32: Matlab Control

Ingeniería Eléctrica y Electrónica

La función 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 simulación.

Ejercicio: Crear un archivo ‘m’ que obtenga: El valor de pico, tiempo de pico, tiempo de crecimiento, tiempo de establecimiento y frecuencia natural.

Page 33: Matlab Control

Ingeniería Eléctrica y Electrónica

Respuesta al Impulso

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

num = 0 0 3

den = 1 2 10

>> sys=tf(num,den)

Transfer function:3

--------------s^2 + 2 s + 10

>> impulse(sys)

Page 34: Matlab Control

Ingeniería Eléctrica y Electrónica

Respuesta a la Rampa

Matlab no provee una función para una entrada rampa. Sin embargo,

provee la función ‘lsim’ que permite definir una señal arbitaria.

La sintaxis de ‘lsim’ es lsim(sys,u,t) donde t es el vector de tiempo y

u es la señal de entrada para cada instante de tiempo en t.

Entonces, una rampa con pendiente unitaria y duración de 10

segundos pude ser definida como,

>> t=0:.01:10;

>> u=t;

Page 35: Matlab Control

Ingeniería Eléctrica y Electrónica

Respuesta a la Rampa

>> lsim(sys,u,t)

>> hold

Current plot held

>> plot(t,u)

Page 36: Matlab Control

Ingeniería Eléctrica y Electrónica

Respuesta a una Condición Inicial

Una de las ventajas de la representacion de sistemas LIT con variables deestado es la respuesta a condiciones iniciales. Matlab provee la función ‘initial’para simular la respuesta a una condición 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))

Page 37: Matlab Control

Ingeniería Eléctrica y Electrónica

Respuesta a una Condición 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))

Page 38: Matlab Control

Ingeniería Eléctrica y Electrónica

Respuesta a una Condición 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))