sistemas de control i

17
SISTEMAS DE CONTROL I umich+matlab www.drexel.edu LABORATORIO DE CONTROL CON MATLAB. Suponemos que tenemos un modelo en el espacio de estados [A,B,C,D] A= matriz de estado, multiplicaba las variables de estado. MODELO DE FUNCIÓN DE TRANSFERENCIA De función de transferencia a espacio de estados [A,B,C,D] = tf2ss(num,dem) ̇ [num,dem]=ss2tf(A,B,C,D,iμ) [ ̇ ̇ ][ ][ ][ ][ ] [ ] [ ] [ ] [ ] 1 Ejercicio #1 A=[0,1;-2,-3]; B=[1,0;0,1]; C=[1,0]; D=[0,0]; [num,den]=ss2tf(A,B,C,D,1) num = 0 1 3 den = 1 3 2 1 Uso de superposición en MATLAB

Upload: fer-flores

Post on 20-Jul-2016

215 views

Category:

Documents


1 download

TRANSCRIPT

SISTEMAS DE CONTROL I umich+matlab www.drexel.edu

LABORATORIO DE CONTROL CON MATLAB. Suponemos que tenemos un modelo en el espacio de estados [A,B,C,D]

A= matriz de estado, multiplicaba las variables de estado.

MODELO DE FUNCIÓN DE TRANSFERENCIA

De función de transferencia a espacio de estados

[A,B,C,D] = tf2ss(num,dem)

[num,dem]=ss2tf(A,B,C,D,iµ)

[

] [

] [

] [

] [

]

[ ] [

] [ ] [

] 1

Ejercicio #1 A=[0,1;-2,-3];

B=[1,0;0,1];

C=[1,0];

D=[0,0];

[num,den]=ss2tf(A,B,C,D,1)

num =

0 1 3

den =

1 3 2

1 Uso de superposición en MATLAB

>> [num,den]=ss2tf(A,B,C,D,2)

num =

0 0 1

den =

1 3 2

>> num=[2 5 3 6];

>> den=[1 6 11 6];

>> [r,p,k]=residue(num,den)

r =

-6.0000

-4.0000

3.0000

p =

-3.0000

-2.0000

-1.0000

k =

2

Entonces:

ESCALÓN step(num,dem)

step(num,dem,t)

step(A,B,C,D,iµ,t)

[y,x,t]=step(num,den,t)

[y,x,t]=step(A,B,C,D,iµ,t)

>> num=[0 0 2 4];

>> den=[1 1.3 7 4];

>> step(num,den)

RESPUESTA DEL SISTEMA

MULTIPLICACIÓN DE VECTORES. help conv

Ejemplo (s+1)*(s+5)

conv([1 1],[1 5])

ans =

1 6 5

MULTIPLICACIÓN DE BLOQUES help series

Entonces el ejercicio:

Queda:

Bloque 2:

s(s+1)(s+5)

conv([0 1 0],[1 6 5])

ans =

0 1 6 5 0

num=[0 0 0 0 1]

dem=[0 1 6 5 0]

Su FT:

A=tf([0 0 0 0 1],[0 1 6 5 0])

A =

1

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

s^3 + 6 s^2 + 5 s

Bloque 1:

6.3223(s+1.4235)2

>> conv([1 1.4235],[1 1.423])

ans =

1.0000 2.8465 2.0256

>> ans*6.3223

ans =

6.3223 17.9964 12.8067

B=tf([6.3223 17.9964 12.8067],[0 1 0])

B =

6.322 s^2 + 18 s + 12.81

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

s

Continuous-time transfer function.

Y para tener un solo bloque:

M=series(B,A)

M =

6.322 s^2 + 18 s + 12.81

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

s^4 + 6 s^3 + 5 s^2

Continuous-time transfer function.

Dándonos:

Para el sistema en retroalimentación:

help feedback2

F=feedback(M,1)

F =

6.322 s^2 + 18 s + 12.81

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

s^4 + 6 s^3 + 11.32 s^2 + 18 s + 12.81

Continuous-time transfer function.

Con respuesta al paso:

>> num=[0 0 6.322 18 12.81];

>> den=[1 6 11.32 18 12.81];

>> step(num,den)

En 10 segundos se estabiliza

2 Asume directamente retroalimentación negativa, para colocarla positiva se coloca F=feedback(M,1,+1)

Con tiempo estimado:

>> num=[0 0 6.322 18 12.81];

>> den=[1 6 11.32 18 12.81];

>> t=0:0.01:20;

>> step(num,den,t)

USO DE SCRIPT’S

Ejemplo en script:

num=[0 0 6.322 18 12.81]; den=[1 6 11.32 18 12.81]; [c,x,t]=step(num,den); plot(t,c,'0') grid on tittle('Respuesta al escalón') xlabel('t seg') ylabel('salida C')

Ejemplo:

Control de un de:

Caso 1: J=1 Kp=1 b=0.5

Caso 2: J=1 Kp=1 b=0.5

num1=[0 0 1]; den1=[1 0.5 1]; num2=[0 0 1]; den2=[0 0.5 4]; step(num1,den1,'-r') hold on step(num2,den2,'-g') grid on title('Respuesta al escalón de dos sistemas') text(9,0.9,'Sistema 1')

TAREA:3

1) [(

)] [

]

A=[0,1,0,0;0,0,1,0;0,0,0,1;-100,-80,0,-8]

B=[0;0;0;15]

C=[0,0,0,0]

D=[0]

A =

0 1 0 0

0 0 1 0

0 0 0 1

-100 -80 0 -8

B =

0

0

0

15

C =

0 0 0 0

D =

0

>> [num,den]=ss2tf(A,B,C,D,1)

num =

0 0 0 0 0

3 Leer Richard Dorf

den =

1.0000 8.0000 -0.0000 80.0000 100.0000

2)

Polos y ceros

Efectuamos en el denominador la función convolución y la multiplicamos por la constante 5:

conv([1 1],[1 10])

ans =

1 11 10

>> ans*5

ans =

5 55 50

Por lo que para hallar polos y ceros realizamos la operación:

num=[20 20 10]

den=[5 55 50]

[r,p,k]=residue(num,den)

num =

20 20 10

den =

5 55 50

r =

-40.2222

0.2222

p =

-10

-1

k =

4

3) Graficar la respuesta al paso

t=0:0.01:10

num=[0 0 25]

den=[1 4 25]

t=0:0.01:10;

step(num,den,t)

num =

0 0 25

den =

1 4 25

AYUDAS DE COMANDOS

HELP CONV conv Convolution and polynomial multiplication.

C = conv(A, B) convolves vectors A and B. The resulting vector is

length MAX([LENGTH(A)+LENGTH(B)-1,LENGTH(A),LENGTH(B)]). If A and B are

vectors of polynomial coefficients, convolving them is equivalent to

multiplying the two polynomials.

C = conv(A, B, SHAPE) returns a subsection of the convolution with size

specified by SHAPE:

'full' - (default) returns the full convolution,

'same' - returns the central part of the convolution

that is the same size as A.

'valid' - returns only those parts of the convolution

that are computed without the zero-padded edges.

LENGTH(C)is MAX(LENGTH(A)-MAX(0,LENGTH(B)-1),0).

Class support for inputs A,B:

float: double, single

See also deconv, conv2, convn, filter and,

in the signal Processing Toolbox, xcorr, convmtx.

Overloaded methods:

gf/conv

gpuArray/conv

Reference page in Help browser

doc conv

HELP SERIES series Series connection of two input/output models.

+------+

v2 --->| |

+------+ | M2 |-----> y2

| |------->| |

u1 ----->| |y1 u2 +------+

| M1 |

| |---> z1

+------+

M = series(M1,M2,OUTPUTS1,INPUTS2) connects the input/ouput models

M1 and M2 in series. The vectors of indices OUTPUTS1 and INPUTS2

specify which outputs of M1 and which inputs of M2 are connected

together. The resulting model M maps u1 to y2.

If OUTPUTS1 and INPUTS2 are omitted, series connects M1 and M2

in cascade and returns M = M2 * M1.

If M1 and M2 are arrays of models, series returns a model array M of

the same size where

M(:,:,k) = series(M1(:,:,k),M2(:,:,k),OUTPUTS1,INPUTS2) .

For dynamic systems SYS1 and SYS2,

SYS = series(SYS1,SYS2,'name')

connects SYS1 and SYS2 by matching their I/O names. The output names

of SYS1 and input names of SYS2 should be fully defined.

See also append, parallel, feedback, InputOutputModel, DynamicSystem.

Overloaded methods:

InputOutputModel/series

Reference page in Help browser

doc series

HELP FEEDBACK feedback Feedback connection of two input/output systems.

M = feedback(M1,M2) computes a closed-loop model M for the feedback loop:

u --->O---->[ M1 ]----+---> y

| | y = M * u

+-----[ M2 ]<---+

Negative feedback is assumed and the model M maps u to y. To apply

positive feedback, use the syntax M = feedback(M1,M2,+1).

M = feedback(M1,M2,FEEDIN,FEEDOUT,SIGN) builds the more general feedback

interconnection:

+------+

v --------->| |--------> z

| M1 |

u --->O---->| |----+---> y

| +------+ |

| |

+-----[ M2 ]<---+

The vector FEEDIN contains indices into the input vector of M1 and

specifies which inputs u are involved in the feedback loop. Similarly,

FEEDOUT specifies which outputs y of M1 are used for feedback. If SIGN=1

then positive feedback is used. If SIGN=-1 or SIGN is omitted, then

negative feedback is used. In all cases, the resulting model M has the

same inputs and outputs as M1 (with their order preserved).

If M1 and M2 are arrays of models, feedback returns a model array M of

the same dimensions where

M(:,:,k) = feedback(M1(:,:,k),M2(:,:,k)) .

For dynamic systems SYS1 and SYS2,

SYS = feedback(SYS1,SYS2,'name')

connects SYS1 and SYS2 by matching their I/O names. The I/O names of

SYS1 and SYS2 must be fully defined.

See also lft, parallel, series, connect, InputOutputModel, DynamicSystem.

Overloaded methods:

InputOutputModel/feedback

iddata/feedback

Reference page in Help browser

doc feedback