37
LUIS ALFREDO RODRIGUEZ UMAÑA INGENIERO ELECTRONICO ESPECIALISTA EN AUTOMATICA E INFORMATICA INDUSTRIAL Matlab Simulink para Control

Matlab Control

Embed Size (px)

Citation preview

Page 1: Matlab Control

LUIS ALFREDO RODRIGUEZ UMAÑA

INGENIERO ELECTRONICO

ESPECIALISTA EN AUTOMATICA E INFORMATICA INDUSTRIAL

MatlabSimulink

para 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

Objetivo:

Page 3: Matlab Control

Iniciando problemas de control

Creando funciones de transferencia:

Para crear funciones de transferencia se usa el comando ‘tf(num,den)’, por ejemplo la función de transferencia

1503914.40

36018

)(

)(23

sss

s

sF

sX

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.

Page 4: Matlab Control

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 5: Matlab Control

En el caso de la siguiente función de transferencia

102)(

)(3

2

ss

s

sF

sX

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 6: Matlab Control

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

22

2

2)(

)(

nn

n

sssU

sY

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

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

num =1

den = 1 20 100

Page 7: Matlab Control

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 8: Matlab Control

Para sistemas con tiempo de retraso, con representacion en

‘s’ dada por , 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 = 1.0000 -1.2000 0.4800

den = 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 9: Matlab Control

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 10: Matlab Control

Creando modelos con variables de estado

Para definir el sistema:

)(

0

0

1

)(

)(

)(

010

001

1503914.40

)(

)(

)(

3

2

1

3

2

1

tu

tx

tx

tx

tx

tx

tx

)(

)(

)(

360180)(

3

2

1

tx

tx

tx

ty

Page 11: Matlab Control

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 12: Matlab Control

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 13: Matlab Control

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 14: Matlab Control

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 15: Matlab Control

Construyendo Sistemas

Matlab provee funciones para la construccion de sistemas

complejos. Por ejemplo, para las siguientes configuraciones:

SERIE

PARALELO

REALIMENTACION UNITARIA

REALIMENTACION

Page 16: Matlab Control

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 17: Matlab Control

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 18: Matlab Control

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 19: Matlab Control

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 20: Matlab Control

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 21: Matlab Control

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:

27243

64523)(

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 22: Matlab Control

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 23: Matlab Control

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 24: Matlab Control

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 25: Matlab Control

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 26: Matlab Control
Page 27: Matlab Control

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

Page 28: Matlab Control

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 1 0

c = 0 0 1.4142

d = 0

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

ceros = -1

k = 0.5000

Page 29: Matlab Control

Análisis de respuesta transitoria

Matlab provee funciones para la aplicación de estímulos a

sistemas LIT definidos a tráves de funciones de transferencia

o variables de estado.

Las funciones mas comunes son: la entrada escalón (step),

el impulso (impulse), condición inicial (initial), y señal

arbitraria (lsim).

Ejemplo: Un sistema con no ceros, polos en s=-1±3i, y

ganancia 3, tiene la siguiente respuesta a una estrada

escalon.

Page 30: Matlab Control

>> [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 31: Matlab Control

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 32: Matlab Control

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 33: 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 34: Matlab Control

Respuesta a la Rampa

>> lsim(sys,u,t)

>> hold

Current plot held

>> plot(t,u)

Page 35: Matlab Control

Respuesta a una Condición Inicial

Una de las ventajas de la representacion de sistemas LIT con variables de estado 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 36: Matlab Control

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 37: Matlab Control

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))