You are on page 1of 62

Repblica Bolivariana de Venezuela

Ministerio del Poder Popular para la Educacin Superior


Universidad del Zulia
Facultad de Ingeniera
Escuela de Ingeniera Mecnica
Departamento de Automtica
Ctedra: Controles Automticos
Asignatura: Controles Automticos

Curso Preparatorio y su aplicacin en controles Automticos

MATLAB Y SIMULINK

Material Recopilado por:


Kenneth E. Rosilln O

Maracaibo, Edo. Zulia 2011

MATLAB Y SIMULINK

ESQUEMA DE CONTENIDO

1. Introduccin al MatLab y sus comandos bsicos.


2. Grafico de Funciones comunes en 2D y 3D en MatLab.
3. Aplicaciones de Controles Usando MatLab.
4. Aplicaciones de Controles utilizando Simulink.

Kenneth R

MATLAB Y SIMULINK

1. Introduccin al MatLab y sus comandos bsicos.


Vectores y matrices
1.1. Operaciones matemticas simples con matrices y
vectores
1.2. Comandos matemticos para vectores
1.2.1. Comando NORM
1.2.2. Comando MIN
1.2.3. Comando MAX
1.2.4. Comando CROSS
1.2.5. Comando LENGTH
1.3. Comandos Matemticos para Matrices
1.3.1. Comando NORM
1.3.2. Comando MIN
1.3.3. Comando MAX
1.3.4. Comando SIZE

1.3.6. Comando INV


1.3.7. Comando DET
1.3.5. Comando EIG

Kenneth R

MATLAB Y SIMULINK

Vectores y matrices
1.1. Operaciones matemticas simples con matrices y
vectores
Los vectores y matrices en MATLAB se trabajan igual en cuanto a
asignacin, por eso se explican juntos. Pero las operaciones posibles, si son
diferentes, y estn separadas bajo los encabezados correspondientes.
Asignacin:
La asignacin de variables en MATLAB es sencilla, y los vectores y
matrices no son la excepcin. Cuando se desea dar el valor a toda una matriz
se puede realizar directamente de la siguiente forma:
A = [1 2 3 4 ; 5 6 7 8; 9 0 1 2];
A = [1, 2, 3, 4;5, 6, 7, 8;9, 0, 1, 2];
donde la matriz escrita arriba es:

Las filas se separan por punto y coma y las columnas por espacios o
comas. De lo anterior se ve fcilmente que un vector fila se asigna as:
v = [1 2 3];
v = [1, 2, 3];
y un vector columna se asigna as:
v = [1; 2; 3];
Manejo de subndices:
Otra forma de asignar valores a una matriz (o un vector) es por medio de
los subndices. El menor subndice utilizado por MATLAB es 1. Y va aadiendo
valores a medida que se requieran. Los subndices se escriben entre
parntesis. Por ejemplo:
A(2, 3) =1; Asigna al elemento en la fila 2, columna 3 el valor de 1.
Si se desea cambiar todo el valor de una fila o una columna, es muy
sencillo hacerlo con el operador : as:
A(1 , :) = [4 5 6];
Asigna a la fila 1 el vector [4, 5, 6] (cambia la fila 1 por 4, 5, 6). As si A
era una matriz de 3 x 3 de ceros, ahora queda:
Kenneth R

MATLAB Y SIMULINK

Igualmente a veces se requiere trabajar con vectores que son una


columna o una fila de una matriz. Esto se realiza fcilmente guardando este
vector en un vector, as:

v = A(:,1);
Asigna al vector v la primera columna (completa) de la matriz A.

1.1. Operaciones matemticas simples con matrices y vectores:


Esto es algo en lo que MATLAB hace las cosas verdaderamente simples,
si se tienen dos matrices (o vector y matriz, o dos vectores), y se quieren:
sumar, multiplicar restar slo es necesario anotar esta operacin
normalmente (como se hara con nmeros). Por ejemplo:
Si se quieren multiplicar dos matrices A y B y almacenar el resultado en
C:
C = A * B; (Si se hace entre dos vectores (uno fila y el otro columna) el
resultado es el producto punto entre los dos)
Si se quieren sumar restar y almacenar el resultado en C:
C = A + B;

C = A - B; (Sin importar que sean matrices o vectores.)

1.2. Comandos matemticos para vectores:


Los comandos matemticos ms empleados con vectores son:
1.2.1. Comando NORM
Calcula la norma de un vector o matriz.
La sintaxis de la orden es:

Norma = norm( Matriz [, Tipo]);


Los signos [ ] son para decir que Tipo es opcional.
Matriz es la matriz o vector al que se desea calcular la norma.
Kenneth R

MATLAB Y SIMULINK

Tipo es el tipo de norma que se desea calcular. Tipo puede ser una de
las siguientes:
Si se omite:

calcula la norma 2
En un vector es la magnitud del vector

2:

calcula la norma 2

inf:

calcula la norma infinito: en un vector es el


Mximo valor absoluto, en una matriz es la
Suma ms grande de las filas.

En Norma se almacena el valor de la norma calculada.


El siguiente ejemplo ilustra el uso de norm: (ver orden de programacin
DISP)
>>%Ejemplo de uso de norm.
>>A = [1 2; 3 4]
>>v = [1 2 3 4]
>>disp( Para la matriz: );
>>n2 = norm(A)
>>ni = norm(A, inf)
>>disp( Para el vector: );
>>n2 =norm(v)
>>ni = norm(v, inf)
>>% Al escribir una expresin sin punto y coma al final
>>% MATLAB muestra su valor en pantalla.
Al correr el programa se obtienen como salida los siguientes resultados:
A=
1

v=
Para la matriz:
n2 =
5.4650
ni =
7
Para el vector:
n2 =
Kenneth R

MATLAB Y SIMULINK

5.4772
ni =
4
1.2.2. Comando MIN
Retorna el (los) menor (es) componente (s) de un vector o matriz. Para el
caso de los vectores: retorna el menor valor contenido en sus componentes. En
el caso de una matriz MIN retorna un vector (fila) que contiene el mnimo
elemento que se encontr en cada una de las columnas (la primera
componente del vector tiene el menor elemento en la primera columna de la
matriz, y as sucesivamente).
La sintaxis de la orden es:

Mnimo = min( matriz x );

Matriz es la matriz o vector al que se desea encontrar la (s) mnima (s)


componente (s).
En Mnimo se retorna (n) el (los) mnimo (s) valor (es) encontrado (s) en
la matriz o vector.
El siguiente ejemplo ilustra el uso de min:
>>%Ejemplo de uso de min.
>>A=[1 2; 3 4]
>>v=[1 2 3 4]
>>M=min(A)
>>m=min(v) % MATLAB diferencia entre maysculas y
minsculas.
>>% Al escribir una expresin sin punto y coma al final
>>% MATLAB muestra su valor en pantalla.
Al correr el programa anterior se obtiene como salida lo siguiente:
A=
1

v=

Kenneth R

MATLAB Y SIMULINK

M=
1

m=
1
1.2.3. Comando MAX
Retorna el (los) mayor (es) componente (s) de un vector o matriz. Para el
caso de los vectores: retorna el mayor valor contenido en sus componentes. En
el caso de una matriz MAX retorna un vector (fila) que contiene el mximo
elemento que se encontr en cada una de las columnas (la primera
componente del vector tiene el mayor elemento en la primera columna de la
matriz, y as sucesivamente).
La sintaxis de la orden es:

Mximo = max(Matriz);

Matriz es la matriz o vector al que se desea encontrar la (s) mxima (s)


componente (s).
En Mximo se retorna (n) el (los) mximo (s) valor (es) encontrado (s) en
la matriz o vector.
El siguiente ejemplo ilustra el uso de max:
>>%Ejemplo de uso de max.
>>A = [1 2; 3 4]
>>v = [1 2 3 4]
>>M = max(A)
>>m = max(v) % MATLAB diferencia entre maysculas y
minsculas.
Al correr el programa anterior se obtiene como salida lo siguiente:
A=
1

v=
1

M=

Kenneth R

MATLAB Y SIMULINK

m=
4
1.2.4. Comando CROSS
Calcula el producto cruz entre dos vectores.
La sintaxis de la orden es:
Vector1 = Cross (Vector2, Vector 3);

Vector2 y Vector3 son los vectores a los que se les quiere aplicar el
producto cruz. Tanto Vector2 como Vector3 deben ser vectores
tridimensionales.
Vector1 es el vector (tridimensional) resultante del producto cruz de Vector2 y
Vector3.
El siguiente ejemplo ilustra el uso de cross:
>>%Ejemplo de uso de cross.
>>x = [1 0 0]
>>y = [0 1 0]
>>z = cross(x, y)
Al correr el programa se obtiene la siguiente salida:
x=
1

y=
z=

1.2.5. Comando LENGTH


Determina el nmero de componentes de un vector. La sintaxis de la
orden es:
Longitud = length (Vector);
Vector es el vector que se quiere medir (nmero de componentes).
Longitud es el nmero de componentes de Vector.

Kenneth R

MATLAB Y SIMULINK

El siguiente ejemplo ilustra el uso de lenght:


>>%Ejemplo de uso de length.
>>x = [1 2 3 4 5 6 7 ]
>>l = length(x)
Al correr el programa se obtiene la siguiente salida:
x=
1

l=
7
1.3. Comandos matemticos para matrices:
Los comandos matemticos ms empleados con matrices son:
1.3.1. Comando NORM
Calcula la norma de un vector o matriz.
1.3.2. Comando MIN
Retorna el (los) menor (es) componente (s) de un vector o matriz.
1.3.3. Comando MAX
Retorna el (los) mayor (es) componente (s) de un vector o matriz.
1.3.4. Comando SIZE
Devuelve el tamao de la matriz (dimensiones).
La sintaxis de la orden es:

[Filas, Columnas] = size(Matriz);


(Los smbolos [ ] se escriben.) tambin:
Tamao = size(Matriz);
Matriz es la matriz a la que se le desea determinar el tamao
(dimensiones). En Filas se almacena el nmero de filas. En Columnas se
almacena el nmero de columnas. Tamao es un vector (fila) en cuyas
componentes se almacenan el nmero de filas y de columnas, siempre en ese
orden.

Kenneth R

MATLAB Y SIMULINK

El siguiente ejemplo ilustra el uso de size:


>>%Ejemplo de uso de size.
>>A= [1 2 3; 4 5 6]
>>y = size(A)
>>[f, c] = size(A);
>>f % Al escribir una expresin sin punto y coma final MATLAB
>>c % muestra el valor por pantalla
Al correr el programa se obtiene la siguiente salida:
A=
1

y=
2

f=
2
c=
3
1.3.5. Comando EIG
Calcula los valores y vectores propios (ortovalores y ortovectores) de la
matriz.
La sintaxis de la orden es:
[Vectores, Diagonal] = eig( Matriz );
(Los smbolos [ ] se escriben.) tambin:
Valores = eig( Matriz );
Matriz es la matriz (cuadrada) a la que se le desea calcular los valores o
vectores propios. Diagonal es una matriz diagonal que contiene los valores
propios de Matriz. Vectores es una matriz en la que se devuelven los vectores
propios (unitarios) donde cada columna de la matriz Vector es un vector propio
de matriz; tal que el primer vector corresponde al primer valor propio y as
sucesivamente.

Kenneth R

MATLAB Y SIMULINK

Valores es un vector columna que contiene los valores propios de Matriz.


El siguiente ejemplo ilustra el uso de eig:
>>%Ejemplo de uso de eig.
>>A = [1 2; 3 4]
>>y = eig(A)
>>[V, D] = eig(A);
>>V %Al escribir una expresin sin punto y coma final
MATLAB
>>% muestra el valor por pantalla
Al correr el programa se obtiene la siguiente salida:
A=
1

y=
-0.3723
5.3723
V=
-0.8246

-0.4160

0.5658

-0.9094

D=
-0.3723
0

0
5.3723

1.3.6. Comando INV


Sirve para invertir una matriz.
La sintaxis de la orden es:
matriz1 = inv(matriz2);
Matriz
2
es
la
matriz
que
se
En matriz1 se almacena la matriz inversa de matriz 2.

Kenneth R

desea

invertir

MATLAB Y SIMULINK

El siguiente ejemplo ilustra el uso de inv:


>>%Ejemplo de uso de inv.
>>A = [1 2; 3 4]
>>I = inv(A);
>> % Al escribir una expresin sin punto y coma al final
>>% MATLAB muestra su valor en pantalla.
Al correr el programa se obtiene como salida la matriz que se desea
invertir (A), y su inversa ( I ). La salida se ve as:
A=
1

I=
-2.0000

1.0000

1.5000

-0.5000

1.3.7. Comando DET


Sirve para calcular el determinante de una matriz.
La sintaxis de la orden es:
Valor = det (Matriz)
Matriz es la matriz (cuadrada) a la que se le desea calcular el
determinante.
Valor es donde se almacena el valor del determinante.
El siguiente ejemplo ilustra el uso de det:
% Ejemplo de uso de det
>>A = [1 2 7; 4 5 8; 6 -7 10]
>>d = det(A)
Al correr el programa se obtiene la siguiente salida:
A=
1

-7

10

d=
-284
Kenneth R

MATLAB Y SIMULINK

1.4.

Modelaje de Sistemas Lineales

Ahora consideremos el sistema de ecuaciones lineales


ax + by = p
cx + dy = q
Nosotros podemos escribir esto ms slidamente como
AX = B
donde la matriz A de los coeficiente es:
a b
c d
el vector X de variables desconocidas es
x
y
el vector B en el lado derecho es
p
q
Si A es invertible, X = (1/A)B, o, usando anotacin de MATLAB, X = A\B. Se
prueba esto resolviendo AX = B.
Hagamos un poco de programacin. Sea A sea la matriz
0.8
0.1
0.2
0.9
y sea X el vector de la columna
1
0
Consideramos X para representar (por ejemplo) el estado de la poblacin
de una isla. La primera entrada (1) da el fragmento de la poblacin en la mitad
oriental de la isla, la segunda entrada (0) d el fragmento en la otra mitad
oriental. El estado de la poblacin en las unidades de tiempo T son dadas
despus por la regla Y = AX. Esto expresa el hecho de que un individuo en
medio de las estancias orientales puestas con probabilidad 0.8 y que se mueve
del este con probabilidad 0.2 (notar que 0.8 + 0.2 = 1), y el hecho que un
individuo en las estancias orientales puestas con probabilidad 0.9 y oeste de
los movimientos est con probabilidad 0.1. As, los estados de la poblacin
sucesivos pueden ser predicho/computado por la multiplicacin de la matriz
repetida. Esto puede ser realizado por el programa de MATLAB siguiente:
>> A = [ 0.8 0.1; 0.2 0.9 ]
>> x = [1; 0]
>> for i = 1:20, x = a*x, end,
Hasta aqu hemos aprendido a escribir un tipo de loop simple. sta es
una manera fcil de ordenar a la mquina, en otras palabras, hacer un trabajo
muy repetitivo.

Kenneth R

MATLAB Y SIMULINK

1.4.1. Definiendo Matrices


Si queremos definir la siguiente matriz en MATLAB:

Entonces escribimos:
>>A=[1 2 3 4;5 6 7 8;9 10 11 12;13,14,15,16];
>>x=4:-1:1
Genera el vector fila x=[4,3,2,1]. La instruccin
>>C=A(3:4,1:3);
Se refiere a la submatriz

de A. Tambin D=A([1,3],3:4) genera

1.4.2. Matrices Especiales


En MATLAB podemos generar matrices especiales con las siguientes
instrucciones:
rand(n,m) - matriz n x m de entradas aleatorias entre 0 y uno.
eye(n) - matriz identidad n x n.
zeros(n,m) - matriz cero de tamao n x m.
ones(n,m) - matriz n x m con todas las entradas uno.
Combinando estas instrucciones podemos generar matrices bastante
complicadas. Por ejemplo, la instruccin
>>E=[eye(2),ones(2,3);zeros(2),[1:3;3:-1:1]]
Genera la matriz

Kenneth R

MATLAB Y SIMULINK

La instruccin round(x) redondea x al entero ms cercano a x.


Podemos combinar funciones en MATLAB. Por ejemplo, round(10*rand(4))
genera una matriz con entradas aleatorias entre 0 y 10.
1.4.3. Aritmtica de Matrices
Considere las siguientes matrices:

Entonces las operaciones A*B (producto matricial de A con B), A+B


(suma de A mas B), 3*A (multiplicacin escalar de 3 por A) tienen los siguientes
resultados:
>>A*B
ans =
16
10

19
11

13
7

>>A+B
??? Error using ==> +
Matrix dimensions must agree.
>>3*A
ans =
12
6

15
9

Note que MATLAB anuncia que A+B no se puede calcular. Las


operaciones A (transpuesto de A), inv(A) (inversa de A), y A^3 (esto es A*A*A)
tienen como resultados:
>>A
ans =
4
Kenneth R

MATLAB Y SIMULINK

>>inv(A)
ans =
1.5000

-2.5000

-1.0000

2.0000

>>A^3
ans =
174
94

235
127

Si precedemos las operaciones matriciales *, ^ con el punto .,


entonces estas se hacen termino a trmino. Por ejemplo A.*C y A.^2 generan:
>>A.*C
ans =
-4
4

10
12

>>A.^2
ans =
16
4

25
9

1.4.4. Solucin de Sistemas Lineales


Considere el sistema lineal

Definimos la matriz de coeficientes y el lado derecho por las instrucciones:


>>A=[1 -2 3; 4 1 -2; 2 -1 4];
>>b=[1 -1 2];

Kenneth R

MATLAB Y SIMULINK

Note que la transpuesta en b se usa para hacerlo un vector columna.


Vamos a resolver este sistema por tres mtodos:
eliminacin Gaussiana
forma echelon reducida o mtodo de Gauss-Jordan
mtodo de la inversa
En el mtodo de Gauss-Jordan, luego de obtener la forma echelon de la
matriz de coeficientes aumentada, eliminamos tambin la parte de arriba de la
matriz hasta producir una matriz donde las columnas con unos, solo tienen un
uno. Esto se conoce como la forma echelon reducida (ver texto). Para
comparar los tres mtodos utilizamos la instruccin flops de MATLAB que
estima el nmero de operaciones de punto flotante entre dos llamadas
sucesivas a flops. Una llamada de la forma flops(0) inicializa el contador de
operaciones a cero. La sucesin de instrucciones:
>>flops( 0 )
>>x=A\b
x=
-0.0417
0.4167
0.6250
>>flops
Lleva a cabo eliminacin Gaussiana en el sistema de arriba y produce
como resultado:
ans =
73
Entonces, aqu se necesitaron aproximadamente 73 operaciones de
punto flotantes (sumas, restas, multiplicaciones divisiones) para resolver el
sistema con eliminacin Gaussiana.
Para el mtodo de Gauss-Jordan tenemos:
>>flops(0)
>>rref([A b])
ans =
1.0000
0
0

Kenneth R

0
1.0000
0

0
0
1.0000

-0.0417
0.4167
0.6250

MATLAB Y SIMULINK

>>flops
ans =
483
El cual requiere 483 operaciones de punto flotante.
Finalmente el mtodo de la inversa se realiza con la siguiente
secuencia de instrucciones:
>>flops(0)
>>x=inv(A)*b
x=
-.0417
0.4167
0.6250
>>flops
ans =
108
El cual toma 108 operaciones.
Vemos pues que la eliminacin Gaussiana es el mejor de los tres
mtodos lo cual es cierto en general.
Usando MATLAB podemos estudiar la relacin entre la solubilidad del
sistema Ax=b y la no singularidad de la matriz de coeficientes A. En clase
vimos que el sistema Ax=b tiene solucin nica para cualquier lado derecho b
si y solo si la matriz A es no singular. Qu sucede si A es singular? Entonces
Ax=b no tiene solucin? Si A es singular el sistema Ax=b puede tener solucin
para algunos bs pero de seguro hay al menos un b * para el cual Ax=b* no tiene
solucin. Vamos a generar una matriz singular con MATLAB:
>>A=round(10*rand(6));
>>A(:,3)=A(:,1:2)*[4 3]
A=
2
0
7
7

Kenneth R

5
8
0
1

23
24
28
31

9
8
5
1

7
9
8
3

3
6
8
10

MATLAB Y SIMULINK

9
4

5
7

51
37

7
4

0
7

4
2

(Como usamos la instruccin rand, el resultado de esta y cualquier


secuencia de instrucciones que use esta funcin de MATLAB, no siempre ser
el mismo). La primera instruccin genera una matriz aleatoria con entradas
enteras entre 0 y 10, y con la segunda instruccin remplazamos la tercera
columna de A con cuatro veces la primera columna ms tres veces la segunda
columna. La matriz resultante es singular! (Explique esto sin calcular el
determinante). Generamos ahora un lado derecho arbitrario mediante la
instruccin:
>>b=round(20*(rand(6,1)-0.5))
b=
10
4
5
3
-9
3
Esto genera una matriz 6x1 aleatoria con entradas enteras entre -10 y
10. Resolvemos el sistema Ax=b calculando la forma echelon reducida de la
matriz de coeficientes aumentada [A b]:
>>rref([A b])
ans =
1
0
0
0
0
0

0
1
0
0
0
0

4
3
0
0
0
0

0
0
1
0
0
0

0
0
0
1
0
0

0
0
0
0
1
0

0
0
0
0
0
1

Como la ltima fila es de la forma


el sistema es inconsistente,
i.e., no tiene solucin. Recuerde que A es singular! Esto no quiere decir que
Ax=b nunca tenga solucin. Si definimos c=A*b, con el b de arriba digamos, el
sistema Ax=c tiene solucin x=b (por qu?). De hecho si calculamos la forma
echelon reducida de [A c] tenemos:
>>c=A*b;
>>rref([A c])

Kenneth R

MATLAB Y SIMULINK

ans =
1
0
0
0
0
0

0
1
0
0
0
0

4
3
0
0
0
0

0
0
1
0
0
0

0
0
0
1
0
0

0
0
0
0
1
0

30
19
3
-9
3
0

El cual denota un sistema consistente dependiente con soluciones:

Donde x3 es arbitrario.
Recordemos que MATLAB posee una gran cantidad de funciones
matriciales. De las ms comunes que tenemos que repasarlas son:
min(A), max(A) - dan el mnimo y mximo respectivamente por
columnas de A
sum(A), prod(A) - producen la suma y producto respectivamente por
columnas de A
norm(A,p) - norma p de la matriz A donde p=1,2, inf
eig(A) - vector cuyos componentes son los valores propios de A
det(A) - el determinante de A
inv(A) - la matriz inversa de A
1.4.5. Polinomios
Esta es una seccin importante, dado que las funciones de transferencia
de los sistemas se introducirn habitualmente en la forma numeradordenominador, los cuales sern tratado como polinomios por matlab. En las
demos que acompa~nan a estas notas se podrn analizar numerosos ejemplos.
Los polinomios se representan por vectores, cuyos elementos son los
coeficientes del polinomio en orden descendente. Por ejemplo, el polinomio s3 +
2s2 + 3s + 4 se representa:
p=[1 2 3 4];
Que muy bien podra ser el denominador de una funcin de
transferencia. Mediante la funcin roots se pueden encontrar las
races de esa ecuacin: roots(p)
De modo complementario, se puede calcular un polinomio a partir de
sus races usando la funcin poly:
Kenneth R

MATLAB Y SIMULINK

p2=poly([-1 -2]);
Si el argumento de entrada a poly es una matriz, devuelve el polinomio
caracterstico de la Un polinomio puede ser evaluado en un punto determinado
usando polyval(p,s), donde p es el polinomio y s es el punto donde va a ser
evaluado. Por ejemplo:
p2=[1 3 2]; a=[1 2; 3 4]; polyval(p2,a)
Si se introduce, como en este caso, un vector o una matriz, en lugar de un
valor individual, la evaluacin se hace elemento a elemento.
Podemos realizar cmodamente operaciones de multiplicacin y divisin de
polinomios mediante las funciones conv y deconv, respectivamente:
conv([1,2],[2,0])

1.4.6. Variables Simblicas


En Matlab es preciso informar nuestras variables simblicas:
>> syms x y
>> z = x^2 + y^2
z=
x^2+y^2
Arriba definimos x e y como variables simblicas con el comando syms y
definimos z como una expresin simblica en funcin de x e y.

1.4.6.1.

LIMITES

Lmite en un punto
>> y = sin(x)/x
y=
sin(x)/x
>> limit(y,x,0)
ans =
1
Una funcin limit tiene como parmetros: 1) una funcin, 2) una variable
libre, 3) un punto donde debe ser calculado el lmite.

Kenneth R

MATLAB Y SIMULINK

Lmite a la izquierda (left) o a la derecha (right) de um punto:


>> y = tan(x)
y=
tan(x)
>> limit(y,x,pi/2,'left')
ans =
inf
>> limit(y,x,pi/2,'right')
ans =
-inf
1.4.6.2.

DERIVADAS

Funcin diff - Usada para diferenciar funciones de una o ms variables.


>> y = x^3+2*x^2
y=
x^3+2*x^2
>> diff(y,x)
ans =
3*x^2+4*x
En ejemplo arriba diff(y,x) deriva a funcin y en relacin a variable x.
Funciones de dos variables (derivadas parciales)
>> syms x y
>> z = x^2 + y^2
z=
x^2+y^2
>> diff(z,x)
ans =
2*x
Kenneth R

MATLAB Y SIMULINK

>> diff(z,y)
ans =
2*y
Derivadas de rdenes superiores
>> syms y x
>> y = (x^2 -1)/(x-3)
y=
(x^2-1)/(x-3)
>> diff(y,x,2)
ans =
2/(x-3)-4*x/(x-3)^2+2*(x^2-1)/(x-3)^3
1.4.6.3.

INTEGRALES

Para integrar una funcin utilizamos a funcin int:


>> y = x^2
y=
x^2

>> int(y,x)
ans =
1/3*x^3
Integral definida
>> int(sin(x),x,0,2*pi)
ans =
0
>> int(sin(x),x,0,pi)
ans =
Kenneth R

MATLAB Y SIMULINK

2
El tercero y cuarto parmetro de la funcin int son los lmites inferior y
superior de la integracin.
1.4.6.4.

TRANSFORMADA DE LAPLACE Y SU INVERSA

Para el clculo automatizado de MatLab ofrece el comando LAPLACE de tipo


simblico, cuya sintaxis es:
>>f=laplace(F)
Donde F es una funcin escalar de la variable simblica t, previamente
declarada, y f es una funcin cuya variable es por defecto s.
El siguiente ejemplo muestra que se pueden elegir las variables libremente.
Ejemplo 1. Calcular la transformada de Laplace de la funcin F (t) = 1.
Resolucin del ejemplo 1.
>>syms(t s)
>>laplace(1,t,s)
ans =1/s
Ejemplo 2. Calcular la transformada de Laplace de la funcin F (t) =
Resolucin del ejemplo 2.
>>syms a;
>>laplace(exp(-a*t),t,s)
ans =1/(s+a)

El comando ILAPLACE ha sido diseado para calcular exactamente, cuando


ello sea posible, la transformada inversa de Laplace. La sintaxis es la siguiente
>>ilaplace(expresion_simbolica,s,t)
o simplemente
>>ilaplace(expresion_simbolica)
Observar que el comando ILAPLACE calcula la transformada inversa de
Laplace de una expresin f(s), produciendo otra expresin F(t).

Kenneth R

MATLAB Y SIMULINK

Ejemplo 3. Obtener la transformada inversa de la funcin

Resolucin del ejemplo 5


>>syms s
>>f=(s+3)/s^2;
>>F=ilaplace(f)
F=
3*t+1

2. Grafico de Funciones comunes en 2D y 3D en MatLab


Funciones Bidimensionales
MATLAB dispone de cuatro funciones bsicas para crear grficos 2D:
plot(), crea un grfico a partir de vectores y/o columnas de matrices,
escalas lineales en los ejes.
loglog(), dem con escala logartmica en los ejes.
semilogx(), dem lineal eje y, logartmica eje x.
semilogy(), dem lineal eje x, logartmica eje y.
Al ser estas funciones similares basta tomar una para explicarlas, utilizaremos
plot().
Funcin plot
Cuando a la funcin plot se le pasa un nico vector real, se dibuja los
pares (x, y), donde las y son los elementos del vector, y las x los ndices del
vector, y finalmente se unen con segmentos.
Cuando tenemos dos vectores plot(X,Y), plot realiza la representacin de
los elementos de Y versus los elementos de X, unidos por segmentos.
Si queremos una buena grfica, debemos utilizar un buen nmero de
puntos para no percibir los vrtices que se producen al unir los puntos con los
segmentos.
Plot(), tambin permite dibujar mltiples curvas introduciendo varias
parejas de vectores como argumentos.

Kenneth R

MATLAB Y SIMULINK

Si se usa plot con un nico vector complejo, representa la parte real en


las abscisas frente a la parte imaginaria en ordenadas. Si hay ms de un vector
complejo se representan las partes reales y se desprecian las imaginaras.
Si usamos plot(X,Y,S), donde S es una cadena de no ms de tres
caracteres, estos indicarn el color, tipo de lnea y el marcador a usar.
Existe la posibilidad de aadir lneas a un grfico ya existente, sin
destruirlo o sin abrir una nueva ventana, se utilizan para ello los comandos
hold on y hold off.
Si queremos abrir una nueva figura usamos figure, o para una ya
existente figure(n). Si queremos borrar la figura actual clf, si las queremos
borrar todas close all, y una en particular close(figure(n)).
Tambin tenemos estas funciones tiles para los grficos:
title(T), aade el ttulo T a la grfica.
xlabel(T), aade la etiqueta T para el eje x.
ylabel(T), aade la etiqueta T para el eje y.
text(x,y,T), aade el texto T a partir de las coordenadas x, y.
gtext(T), aade T con la ayuda del ratn.
legend( ), define rtulos para distintas lneas.
grid, activa la cuadrcula, grid off la desactiva.
Controles de los ejes
El comando bsico para cambiar los valores de los ejes es axis.
axis([xmin x max ymin ymax]), define de modo explcito los valores para
los ejes.
axis auto, valores por defecto.
axis equal, el escalado es igual en ambos ejes.
axis square, la ventana ser cuadrada.
axis off, elimina las etiquetas, los nmeros y los ejes, axis on los
restituye.
Comando subplot
Una ventana grfica (figura), se puede dividir en n particiones
horizontales y m verticales, con el objeto de representar como mucho n x m sub
ventanas.
subplot(n,m,i), i es la subdivisin que se convierte en activa de las n x m
disponibles.
Las subdivisiones se enumeran consecutivamente a partir de la primera
fila, siguiendo a la segunda, etc.
Otras funciones grficas en 2-D
Kenneth R

MATLAB Y SIMULINK

bar(), crea un diagrama de barras.


barh(), diagrama de barras horizontales.
bar3(), barras con aspecto 3-D.
bar3h(), barras horizontales con aspecto 3-D.
pie(), grficos con forma de tarta.
pie3(), grficos con forma de tarta en 3-D.
area(), similar a plot, pero rellenando en ordenadas de 0 a y. hist(),
dibuja el histograma de un vector.
compass(), dibuja los elementos de un vector complejo como un
conjunto de vectores partiendo de un origen comn.
rose(), histograma de ngulos.
quiver(), dibujo de campos vectoriales como conjunto de vectores.
fplot(), similar a plot pero no se definen los vectores directamente.
fill(), dibuja polgonos planos, rellenndolos de un determinado color.
Funciones Tridimensionales
MATLAB tiene varias formas de representar grficos 3D:
Grfica de Funciones Paramtricas
plot3(), es anloga a plot() y se usa cuando lo que se requiere grficar
es una funcin paramtrica, puede incluir una cadena de tres caracteres
para determinar color, marker y tipo de lnea.
Funciones de la forma z = f(x,y)
Al igual que las funciones de una variable, en primer lugar hay que
generar tablas de valores para las variables x e y, es decir, un mallado sobre
un rectngulo del plano XY.
meshgrid(), genera el mallado necesario para poder grficar las
funciones z=f(x,y).
Luego podemos hacer uso de las siguientes funciones:
mesh(), dibuja en perspectiva una funcin en base a una retcula de
lneas de colores, rodeando cuadrilteros del color de fondo.
surf(), similar a mesh, en vez de lneas aparece una superficie.
Tambin podemos utilizar la funcin ya vista plot3().
Sombras y colores
Para conseguir efectos de sombreado y colores diferentes se pueden
consultar todas las posibilidades de los comandos colormap y shading. Algo
que resulta tambin interesante es aadir una escala de colores al dibujo que

Kenneth R

MATLAB Y SIMULINK

nos permite conocer las alturas (z) de los diferentes puntos de la grfica, esto
se consigue con el comando colorbar.
Curvas de Nivel
Dada una funcin z=f(x,y), las curvas sobre el plano XY, determinadas
por f(x,y)=k, k constante se llaman curvas de nivel. Hay varias formas de
obtenerlas usando MATLAB, con los siguientes comandos:
contour(), representa las curvas de nivel en el plano XY.
contour3(), lo mismo pero en el espacio.
pcolor(), dibuja un mapa de colores por niveles.
clabel(), etiqueta las curvas de nivel.
Otras Funciones 3D
Las siguientes funciones se derivan directamente de las anteriores, pero
aaden algn pequeo detalle y/o funcionalidad:
surfc(), combinacin de surf y contour en z=0.
meshz(), una especie de cortina en los bordes del dominio de la funcin.
surfl(), para controlar la iluminacin determinando la posicin e
intensidad de un foco de luz.
light(), crea un foco de luz en los ejes actuales capaz de actuar sobre
superficies 3D.
view(), sirve para localizar el punto de vista o direccin de observacin.
Se pueden probar estas funciones, con la ayuda del help.

3. Aplicaciones de Controles Usando MatLab.


3.1. Funcin de transferencia de un sistema de control.
Este apartado muestra el uso de algunas herramientas con las que
cuenta MatLab para el diseo y anlisis de sistemas de control. Para el ejemplo
se va a partir de una planta en forma de funcin de transferencia:

En MatLab se introducen el par de polinomios tanto el numerador como


el denominador.
>>num=[2 3 1]
>>den1=[1 4 1]
>>den2=[1 5]
Como el denominador es el producto de 2 polinomios, a esta conversin
se le llama convolucion por ende su comando es Conv de la siguiente
manera:
Kenneth R

MATLAB Y SIMULINK

>>den=conv(den1,den2)
>>tf(num,den)
3.2. Dominio temporal de funciones en control.
La respuesta a una entrada escaln se pueden analizar en sistemas que
tengan una descripcin en forma de funcin de transferencia o representacin
en el espacio de estados generado una funcin de tiempos y usando el
comando Step de la siguiente manera:
>>t=[0: 0.3: 15];
>>y=step(num,den,t);
>>plot(t,y);
>>tittle(respuesta en tiempo a un escaln)
>>xlabel(tiempo en segundos)
>>grid
La respuesta puede verse en la ventana grafica como sigue:

Para obtener una respuesta ante una entrada impulso utilizamos los
mismos comandos, solo en vez de utilizar el comando step usamos el comando
impulse de la siguiente manera:
>>t=[0: 0.3: 15];
>>y=impulse(num,den,t);
>>plot(t,y);
>>tittle(respuesta en tiempo a un impulso)
>>xlabel(tiempo en segundos)
>>grid

Kenneth R

MATLAB Y SIMULINK

La respuesta puede verse en la ventana grafica como sigue:

Para obtener una respuesta ante una entrada Rampa utilizamos los
mismos comandos, solo en vez de utilizar el comando step o impulse usamos
el comando ramp y ligndolo con una funcin seno nos queda de la siguiente
manera:
>>t=[0: 0.3: 15];
>>ramp=t;
>>y=lsim(num,den,ramp,t);
>>plot(t,y,t,ramp);
>>tittle(respuesta en tiempo a una Rampa)
>>xlabel(tiempo en segundos)
>>grid

Para obtener una respuesta ante un ruido uniforme aleatorio utilizamos


los mismos comandos, solo en vez de utilizar el comando step, impulse o ramp
usamos el comando noise , quedndonos queda de la siguiente manera:
>>noise=rand(size(t))

Kenneth R

MATLAB Y SIMULINK

Donde rand(m,n) genera una matriz m de nmeros aleatorios


uniformemente distruibuidos entre 0 y 1. Es importante darse cuenta del filtrado
que se produce en la seal cuando pasa por el sistema.
>>t=[0: 0.3: 15];
>>noise=rand(size(t))
>>y=lsim(num,den,noise,t);
>>plot(t,y,t,noise);
>>tittle(respuesta en tiempo a un Ruido)
>>xlabel(tiempo en segundos)
>>grid

3.3. Dominio frecuencial de funciones en control.


La respuesta en frecuencia de los sistemas se puede obtener usando las
funciones de Bode, nyquist y nichols. Si no se le ponen argumentos a la
izquierda estas funciones generan graficas por si solas. En caso contrario,
vuelcan los datos en los vectores de salida oportunos. A continuacin se
presentan los comandos para los 3 metodos.
BODE
>>bode(num,den)
>>[mag,phase,w]=bode(num, den)
>>[mag,phase]=bode(num,den,w)
La primera de ellas genera un grafico con magnitud en Decibeles (DB) y
la fase en grados. En las otras 2 la magnitud se vuelve en el vector mag y esta
expresada en unidades absolutas no en DB. Por su parte, la fase, devuelta en
el vector Phase, sigue siendo en grados. En esta forma la representacin es
ms interactiva, en el sentido que pinchando con el ratn en el punto de curva
podemos ver los valores correspondientes.
La segunda forma automticamente genera los puntos de frecuencia en el
vector w. en la tercera forma. Es el usuario el que escoge los rangos de
frecuencia y resulta muy adecuado cuando se quieren representar varias
graficas conjuntamente, que habrn de compartir una misma escala
frecuencial.

Kenneth R

MATLAB Y SIMULINK

El resultado de los 2 ltimos comandos se puede representar usando funciones


conocidas:
>>subplot(211)
>>subplot(211)
>>loglog(w,mag)
>>semilogx(w,phase)
>>Tittle(magnitud)
>>Tittle(fase)
>>xlabel(rad/s)
>>xlabel(rad/s)

NYQUIST
>> nyquist(num,den,w)
>>[re,im]= nyquist(num,den,w)
Estos comandos computan las partes reales y las partes imaginarias y
realiza la representacin si no se le pone un comando de salida. Para obtener
su representacin grafica por nosotros mismos, solo hay que dibujar la parte
real sobre la parte imaginaria. Este resultado se puede ver en la figura:

NICHOLS
>> nichols(num,den,w)
>>[mag,fase]= nichols(num,den,w);
>>ngrid;

Kenneth R

MATLAB Y SIMULINK

Estos comandos para verlos basta dibujar la magnitud del bucle abierto
en dB (en el eje de la ordenada). Frente a la fase del bucle abierto en grados
(en el eje de las abscisas).

3.4. Mrgenes de estabilidad en funciones en control.


Como es bien sabido en la teora clsica de control, los mrgenes de
estabilidad son el margen de la fase y el margen de la ganancia. Estos
mrgenes se calculan usando el comando margin
>>margin(num,den);
>>[mg,mf,wmg,wmf]=margin(num,den);

3.5. Operaciones con diagrama de bloques


Existen distintas operaciones con los diagramas de bloques o ciertas
reglas que se aplicaran en MatLab. Dado el siguiente sistema de control
representado por 2 bloques en serie, estos serian sus comandos:

>>[N12,D12]=series(N1,D1,N2,D2);
Este comando devuelve la resultante de colocar en serie 2 funciones de
transferencia. El mismo resultado podra obtenerse llamando 2 veces al
comando conv.

Kenneth R

MATLAB Y SIMULINK

>>[N12,D12]=parallel(N1,D1,N2,D2);
Este comando devuelve la resultante de colocar en paralelo 2 funciones
de transferencia.

>>[Nbc,Dbc]=feedback(N1,D1,N2,D2,-1);

A partir de un sistema de lazo abierto, dado por el numerador y el


denominador, proporciona el correspondiente lazo cerrado considerando que
en la cadena de retroalimentacin hay otra funcin de transferencia dada por
otro numerador y denominador. El otro parmetro indica el signo de la
retroalimentacin bien sea positiva (+) o negativa (-).
>>[Nbc,Dbc]=cloop(N1,D1,-1);
En el caso que se pretenda obtener la funcin de transferencia de lazo
cerrado con realimentacin unitaria, puede emplearse este comando ms
compacto, en
el que se evita el tener que especificar una segunda funcin de transferencia.
3.6. Sistemas de Primer Orden.
La funcin de transferencia de primer orden viene dada por la siguiente funcin:

En MatLab seria:
>>K=1;
>>tau=1;
>>num=k;
>>den=[tau 1];
La respuesta a un escaln unitario como anteriormente se vio se da con
el comando step.
Kenneth R

MATLAB Y SIMULINK

>>t=[0: 0.1: 10];


>>ye=step(num,den,t);
>>plot(y,ye)
>>tittle(respuesta a un escalon)
>>Xlabel(tiempo en segundos)
>>grid

Las 2 caractersticas mas importantes de un sistema de primer orden son


su ganancia esttica K y su constante de tiempo . La constate de tiempo es el
tiempo que tarda en alcanzar el 63.2% de la salida. La ganancia esttica es el
cociente entre la amplitud de salida contra la entrada en rgimen permanente.
La respuesta a una rampa unitaria como anteriormente se vio se da con
el comando ramp.
>>t=[0: 0.1: 10];
>>ramp=t
>>yr=lsim(num,den,ramp,t);
>>plot(t,yr,t,ramp)
>>tittle(respuesta a una rampa)
>>Xlabel(tiempo en segundos)
>>grid

La respuesta a un impulso unitario como anteriormente se vio se da con


el comando impulse.
>>t=[0: 0.1: 10];
>>yi=impulse(num,den,t);
>>plot(t,yi)
>>tittle(respuesta a un impulso)
>>Xlabel(tiempo en segundos)
>>grid

Kenneth R

MATLAB Y SIMULINK

3.7. Sistemas de Segundo Orden.


La funcin de transferencia de primer orden viene dada por la siguiente funcin:

Donde:
Frecuencia natural
Ganancia Esttica
Factor de amortiguamiento
Se va a estudiar el comportamiento para el conjunto de valores del factor
de amortiguamiento en respuesta a un escaln unitario asumiendo la
frecuencia natural unitaria.
Primer Caso: 2 races reales distintos (Sobreamortiguados)
>>t=[0: 0.2: 20:];
>> =1
>> =2
>>num=[wn^2];
>>den=[1, 2*d*wn, wn^2];
>>ye=(num,den,t);
>>plot(t,ye)
>>tittle(respuesta a un escalon)
>>xlabel(tiempo en segundos)
>>grid
Segundo Caso: 2 races reales iguales (crticamente Amortiguados)
>>t=[0: 0.2: 20:];
>> =1
>> =1
>>num=[wn^2];
>>den=[1, 2*d*wn, wn^2];
>>ye=(num,den,t);
>>plot(t,ye)
>>tittle(respuesta a un escalon)
>>xlabel(tiempo en segundos)
>>grid

Kenneth R

MATLAB Y SIMULINK

Tercer Caso: Sistema en el punto Crtico de Oscilacin.


>>t=[0: 0.2: 20:];
>> =1
>> =0
>>num=[wn^2];
>>den=[1, 2*d*wn, wn^2];
>>ye=(num,den,t);
>>plot(t,ye)
>>tittle(respuesta a un escalon)
>>xlabel(tiempo en segundos)
>>grid
Cuarto Caso: Sistema Inestable.
>>t=[0: 0.2: 20:];
>> =1
>> =-0.1
>>num=[wn^2];
>>den=[1, 2*d*wn, wn^2];
>>ye=(num,den,t);
>>plot(t,ye)
>>tittle(respuesta a un escalon)
>>xlabel(tiempo en segundos)
>>grid
Quinto Caso: 2 races complejas conjugadas
>>t=[0: 0.2: 20:];
>> =1
>> =0.5
>>num=[wn^2];
>>den=[1, 2*d*wn, wn^2];
>>ye=(num,den,t);
>>plot(t,ye)
>>tittle(respuesta a un escalon)
>>xlabel(tiempo en segundos)
>>grid

Kenneth R

MATLAB Y SIMULINK

3.8. Lugar Geomtrico de las Races.


Para obtener el lugar de las races de un sistema de control se debe
determinar la ecuacin caracterstica del sistema de lazo cerrado, la cual es de
la forma:

Donde G(s)H(s)= Num(s)/Den(s)


Para obtener el lugar de las races, MatLab dispone del Comando
rlocus. Las diferentes sintaxis para utilizar este comando son:
rlocus(num,den) calcula y dibuja el lugar de las races cuando se trabaja
con la funcin de transferencia donde num y den son los vectores de los
coeficientes en potencia descendiente de S de los polinomios del
numerador y denominador de la funcin de transferencia G(S)H(s).
MatLab generar automticamente un conjunto de valores de la
ganancia K.
rlocus(num,den,k): calcula y dibuja el lugar de las races cuando se
trabaja con la funcin de transferencia y ha sido previamente definido el
rango de valores de K. Por ejemplo de 0 a 100 con incrementos de 10:
k=0:10:100
R = rlocus(num,den,k) o [R,K] = rlocus(num,den) no dibuja el lugar de las
races pero almacena en la matriz R, de longitud igual al nmero de
elementos de K, la localizacin de las races. R tendr tantas columnas
como races existan, estas pueden adems ser complejas.
rlocus(A,B,C,D), R=rlocus(A,B,C,D,K), o [R,K]=rlocus(A,B,C,D) son
equivalentes a las Sintaxis anteriores pero empleando las matrices de
estado para hallar el lugar de las races.
Para la siguiente forma modificada de la ecuacin caracterstica de un
sistema se desea hallar el lugar de las races mediante MatLab:
>> num=[0,0,0,1];
>> den=[1,3,2,0];
>> rlocus(num,den)
MatLab dispone del comando rlocfind que permite determinar los polos
del sistema para una valor determinado de k. Su sintaxis es:
[k,poles] = rlocfind(num,den) permite determinar los polos para un valor
determinado de k, cuando se trabaja con la funcin de transferencia.

Kenneth R

MATLAB Y SIMULINK

Por medio del ratn en el lugar de las races se selecciona una


localizacin, MatLab retorna el valor de k para esta localizacin y los polos
asociados a esta ganancia.
Cuando se trabaja con las matrices de estado, las Sintaxis para el
comando rlocfind es: [K,POLES] = rlocfind(A,B,C,D).
Al ejecutar el comando rlocfind con la funcin de transferencia anterior,
MatLab activa la ventana de figuras en espera de que el usuario seleccione un
punto del lugar de las races mediante el cursor. En este caso el punto
seleccionado fue -2.4623 en la parte real y - 0.0132 en la parte imaginaria.
>> [k,poles]=rlocfind(num,den)
Select a point in the graphics window
selected_point =
-2.4623 - 0.0132i
k=
1.6655
poles =
-2.4625
-0.2688 + 0.7773i
-0.2688 - 0.7773i
Para seleccionar el punto en el cual calcular los polos del lugar de las
races sin usar el ratn se agrega un parmetro al comando rlocfind. Este debe
ser el punto o los puntos en donde se desea tomar el valor de k. La nueva
sintaxis es:
[k,poles] = rlocfind(A,B,C,D,P) o [k,poles] = rlocfind(num,den,P) P debe
definirse previamente indicando la parte real e imaginaria del mismo. Por
ejemplo: P=3+0i o P=1-0.555i.
Ejemplo de aplicacin de respuesta temporal de segundo orden
Para el siguiente sistema de control cuya ecuacin es la siguiente:

Solucion en Matlab:
>>clc
>>numa=130;
>>dena=[1 15 130];
>>Ta=tf(numa,dena)
>>omegana=sqrt(dena(3))
>>zeta=dena(2)/(2*omegana)
Kenneth R

MATLAB Y SIMULINK

>>Tsa=4/(zetaa*omegana)
>>Tpa=pi/(omegana*sqrt(1-zetaa^2))
>>tra=(1.76*zetaa^3 0.417*zetaa^2 + 1.039*zetaa + 1)/omegana
>>percenta=exp(zetaa*pi/ sqrt(1zetaa^2))*100
>>subplot(221)
>>step(Ta)
>>tittle((a))
Ejemplo de aplicacin de Lugar geomtrico de las Races (LGR)
Para el siguiente sistema de control cuya ecuacin es la siguiente:

Solucin en MatLab:
Root Locus
5
4
3
2

Imaginary Axis

>>clc
>>num=[1 5];
>>den=[1 7 25];
>>rlocus(num,den)
>>Xlabel(real axis)
>>Ylabel(Imag. Axis)
>>grid

1
0
-1
-2
-3
-4
-5
-18

-16

-14

-12

-10

-8

-6

-4

-2

Real Axis

Dibujo del lugar de races de una funcin de transferencia


Considere un sistema a lazo abierto que tiene un funcin de transferencia de
lazo abierto

Cmo diseamos un controlador realimentado para el sistema usando el


mtodo del Lugar de Races? Sean los criterios de diseo 5% de sobrepico y 1
segundo de tiempo de subida. Genere un archivo.m llamado rl.m. Ingrese la
funcin de transferencia, y el comando para graficar el lugar de races:
Kenneth R

MATLAB Y SIMULINK

>>num=[1 7];
>>den=conv(conv([1 0],[1 5]),conv([1 15],[1 20]));
>>rlocus(num,den)
>>axis([-22 3 -15 15])
>>Xlabel(Real Axis)
>>Ylabel(Img. Axis)
Eleccin de un valor para K del lugar de races
El grfico de arriba muestra los posibles lugares del polo a lazo cerrado
para un controlador solo proporcional. Obviamente no todos esos polos a lazo
cerrado satisfarn los criterios de diseo. Para determinar cul es la parte
aceptable del locus, podemos usar el comando sgrid(Zeta,Wn) para dibujar
lneas de coeficiente de amortiguamiento y de frecuencia natural constantes.
Sus dos argumentos son el coeficiente de amortiguamiento (Zeta) y la
frecuencia natural (Wn) [pueden ser vectores si quiere mirar un rango de
valores aceptables]. En nuestro problema, necesitamos un sobrepico menor
que 5% (lo que significa una razn de amortiguacin Zeta mayor que 0.7) y un
tiempo de subida de 1 segundo (lo que significa a frecuencia natural Wn mayor
que 1.8). Ingrese en la ventana de comandos del Matlab:

>>zeta=0.7;
>>Wn=1.8;
>>sgrid(zeta, Wn)

En el grfico de arriba, las dos lneas blancas punteadas de cerca de 45


grados indican los lugares con Zeta = 0.7; entre estas lneas, los polos tendrn
Zeta > 0.7 y afuera de ellas, Zeta < 0.7. El semicrculo indica lugares de polos
con frecuencia natural Wn = 1.8; dentro del crculo, Wn < 1.8 y fuera de l Wn >
1.8.
Regresando a nuestro problema, para tener un sobrepico menor que 5%,
los polos deben ubicarse entre las dos lneas blancas punteadas , y para tener
un tiempo de elevacin menor que 1 segundo, los polos deben estar fuera del
semicrculo blanco punteado. De modo que ahora sabemos que slo las partes
del locus fuera del semicrculo y entre las dos lneas son aceptables. Todos los
polos se hallan semiplano izquierdo, as que el sistema a lazo cerrado ser
estable.

Kenneth R

MATLAB Y SIMULINK

De la figura de arriba vemos que hay partes del lugar de races dentro de
la regin deseada. Con lo que en este caso slo necesitamos un controlador
proporcional para mover los polos a la regin deseada. Puede usarse el
comando rlocfind para elegir los polos deseados en el locus ya hecho:
[kd,poles] = rlocfind(num,den)
Haga clic en el diagrama, en el punto donde quiera que se encuentre el
polo a lazo cerrado. Seguramente querr elegir los puntos indicados en la
figura de abajo para satisfacer los criterios de diseo.

Note que como el lugar de races podra tener ms de una rama, cuando
selecciona un polo, quisiera averiguar dnde estar/n el/los otro/s polo/s .
Recuerde que stos afectarn tambin la respuesta. De la figura de arriba
vemos que los polos elegidos (todos los "+" blancos) se encuentran en
posiciones razonables. Podemos continuar y usar el kd elegido como nuestro
controlador proporcional.

3.9. Tcnicas de compensacin de controladores y Acciones de Control


Control proporcional
De la tabla de arriba, vemos que el controlador proporcional (Kp) reduce
el tiempo de trepada, incrementa el sobrepico, y reduce el error de estado
estacionario. La funcin de transferencia a lazo cerrado del sistema de arriba
con un controlador proporcional es:

Iguale la ganancia proporcional (Kp) a 300 y cambie el archivo-m con lo


siguiente:

Kenneth R

MATLAB Y SIMULINK

>>Kp=300;
>>num=[Kp];
>>den=[1 10 20+Kp];
>>t=0:0.01:2;
>>step(num,den,t)

Corriendo este archivo-m, la ventana de comandos del MatLab le da la


figura siguiente.
Nota: Puede usarse la funcin cloop para obtener la funcin de
transferencia a lazo cerrado directamente de la funcin de transferencia a lazo
abierto (en lugar de obtenerla a mano). El siguiente archivo-m usa el comando
cloop que le debera dar un grfico similar al de abajo.
>>num=1;
>>den=[1 10 20];
>>Kp=300;
>>[numCL,denCL]=cloop(Kp*num,den);
>>t=0:0.01:2;
>>step(numCL, denCL,t)

El grfico de arriba muestra que el controlador proporcional redujo tanto


el tiempo de elevacin cuanto el error de estado estacionario, incrementando el
sobrepico, y bajando el tiempo de establecimiento en pequea medida.
Control Proporcional-Derivativo
Ahora, echemos un vistazo a un Control PD. De la tabla de arriba, vemos
que el controlador derivativo (Kd) reduce tanto el sobrepico cuanto el tiempo de
establecimiento. La funcin de transferencia a lazo cerrado del sistema dado
con un Controlador PD es:

Haga Kp igual a 300 como antes e iguale Kd a 10. Ingrese los siguientes
comandos en un archivo-m y ejectelo en la ventana de comandos del MatLab.

Kenneth R

MATLAB Y SIMULINK

>>Kp=300;
>>Kd=10;
>>num=[Kd Kp];
>>den=[1 10+Kd 20+Kp];
>>t=0:0.01:2;
>>step(num,den,t)

Esta figura muestra que el controlador derivativo redujo tanto el


sobrepico cuanto el tiempo de establecimiento, y tuvo poco efecto en el tiempo
de elevacin y el error de estado estacionario.
Control Proporcional-Integral
Antes de avanzar a un control PID, echemos un vistazo al Control PI. De
la tabla, vemos que un controlador integral (Ki) disminuye el tiempo de
elevacin, incrementa tanto el sobrepico cuanto el tiempo de establecimiento, y
elimina el error de estado estacionario. Para el sistema dado, la funcin de
transferencia a lazo cerrado con un Control PI es:

Reduzcamos Kp a 30, y hagamos Ki igual a 70. Cree un archivo-m nuevo


e ingrese los siguientes comandos.

>>Kp=30;
>>Ki=70;
>>num=[Kp Ki];
>>den=[1 10 20+Kp Ki];
>>t=0:0.01:2;
>>step(num,den,t)
Corra este archivo-m en la ventana de comandos del MatLab, y obtenga
la figura siguiente:

Kenneth R

MATLAB Y SIMULINK

Hemos reducido la ganancia proporcional (Kp) porque el controlador


integral tambin reduce el tiempo de elevacin e incrementa el sobrepico as
como lo hace el controlador proporcional (efecto doble). La respuesta anterior
muestra que el controlador integral elimin el error de estado estacionario.
Control Integral
Ahora, tratemos de usar control integral para eliminar el error de estado
estacionario a una perturbacin. Modifique su archivo-m de modo que se vea:
A partir del problema principal, las ecuaciones dinmicas en la forma
funcin de transferencia son las siguientes:

Y el esquema del sistema se ve:

Para las condiciones originales del problema y la derivacin del las


ecuaciones de arriba, refirase por favor a Modelacin de un Motor de CC .
Con una referencia escaln de 1 rad/seg. , los criterios de diseo son:
Tiempo de establecimiento menor que 0.04 segundos
Sobrepico menor que 16%
No error de estado estacionario
No error de estado estacionario debido a una perturbacin

Kenneth R

MATLAB Y SIMULINK

Diseemos ahora un controlador mediante el mtodo del lugar de races.


Cree un nuevo archivo-m y tipee los siguientes comandos (refirase a
problema original para detalles de cmo obtener estos comandos).

>>J=3.2284E-6;
>>b=3.5077E-6;
>>K=0.0274;
>>R=4;
>>L=2.75E-6;
>>num=K;
>>den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) 0];
>>numcf=[1];
>>dencf=[1 0];
>>numf=conv(numcf,num);
>>denf=conv(dencf,den);
>>rlocus(numf,denf)
>>sgrid(.5,0)
>>sigrid(100)
>>axis([-400 100 -200 200])
Note que esto adiciona un trmino 1/s al lazo directo. En este archivo-m,
estamos ignorando el polo rpido, y slo nos acercamos a la porcin de baja
ganancia del lugar de races. Corriendo este archivo-m obtendr la figura
siguiente.

A partir de este lugar de races podemos ver que el sistema a lazo


cerrado bajo control integral nunca es estable, y que debe usarse otro
controlador.
Control Proporcional-Integral-Derivativo
Ahora, echemos un vistazo a un controlador PID. La funcin de
transferencia a lazo cerrado del sistema dado con un controlador PID es:

Kenneth R

MATLAB Y SIMULINK

Luego de varias ejecuciones de prueba y error, las ganancias Kp=350,


Ki=300, y Kd=50 proveern la respuesta deseada. Para confirmarlo, ingrese los
siguientes comandos en un archivo-m y ejectelo en la ventana de comandos.
Debera obtenerse la siguiente respuesta al escaln.
>>Kp=350;
>>Ki=300;
>>Kd=50;
>>num=[Kd Kp Ki];
>>den=[1 10+Kd 20+Kp Ki];
>>t=0:0.01:2;
>>step(num,den,t)

Ahora, obtuvimos el sistema sin sobrepico, rpido tiempo de subida, y


error de estado estacionario cero.

Sugerencias generales para el diseo del controlador PID


Cuando est diseando un controlador PID para un sistema dado, siga
los pasos de abajo para obtener una respuesta deseada.
1.
2.
3.
4.
5.

Obtenga una respuesta a lazo abierto y determine qu hay que mejorar


Agregue un control proporcional para mejorar el tiempo de elevacin
Agregue un control derivativo para mejorar el sobrepico
Add an control integral para eliminar el error de estado estacionario
Ajuste cada coeficiente Kp, Ki, y Kd hasta que obtenga la respuesta
general deseada. Puede mirar en la tabla de este "Tutorial PID" para
averiguar cul controlador controla cierta caracterstica.

Finalmente, tenga en mente que no implementar los tres controladores


(proporcional, derivativo, e integral) en un sistema, si no es necesario. Por
ejemplo, si el controlador PI le proporciona una buena respuesta (como el
ejemplo anterior), no necesitar implementar un controlador derivativo.
Mantenga el controlador lo ms simple que se pueda.
Kenneth R

MATLAB Y SIMULINK

4. Aplicaciones de Controles utilizando Simulink.


4.1.

Biblioteca de simulink

Simulink proporciona un entorno grafico al usuario que facilita


enormemente al anlisis, diseo y simulacin de sistemas de control. Al incluir
una seria de rutinas que resuelven los clculos matemticos de fondo, junto
con una sencilla interfaz para su uso. Proporciona un entorno de usuario
grafico que permite dibujar los sistemas como diagramas de bloques tal y como
se hara sobre el papel.
El conjunto de componentes incluidos junto al programa simulink, incluye
bibliotecas de fuentes de seal, dispositivos de presentacin de datos,
sistemas lineales y no lineales, conectores y funciones matemticas. En caso
de que sea necesario, se pueden crear nuevos bloques a medida por el
usuario.
El programa simulink se inicia desde el botn simulink lib browser
(biblioteca simulink, ver imagen de portada) de la ventana de comandos de
MatLab, o desde la lnea de comandos mediante la orden:
>> Simulink
Una vez iniciado el programa el entorno de trabajo queda dividido en 3
partes.
La ventana de comandos de MatLab: desde la que se puede ejecutar
cualquier comando del mismo, dar valores a variables y controlar la
ejecucin de las simulaciones.

Kenneth R

MATLAB Y SIMULINK

La ventana de la biblioteca de simulink: desde la que se seleccionan


los componentes que se van a insertar a simular.
La o las ventanas de los modelos: en las cuales se realizan los
modelos y se realizan y controlan las simulaciones. Estas ventanas
aparecen cuando se abre un modelo ya existente o se crea una ventana
en blanco para dibujar un nuevo modelo. Para ellos, se pueden utilizar
los botones de la ventana de la librera de simulink.

Todos los componentes bsicos de simulink, se pueden encontrar en su


biblioteca de componentes. A continuacin se describen los componentes
bsicos de dicha biblioteca.
MATEMATICA BASICAS
Continuos: bloques que pueden ser representados como una funcin
continua en el tiempo.
Derivative: la salida del bloque se corresponde con la derivada de la
entrada.
Integrator: la salida del bloque se corresponde con la integral de la
entrada. Los parmetros del bloque permiten controlar el valor inicial de
la salida, asi como la existencia de los lmites superiores o inferiores a la
salida.
Tranfer Fcn: permite expresar una funcin de transferencia mediante su
expresin en la variable compleja S. sis parmetros son polinomios del
numerador y del denominador de la funcin, expresados como vectores
de fila.
Transport Delay: La Salida del bloque se corresponde con la entrada
del mismo retrasada una cantidad de tiempo, que se fija como parmetro
en el bloque.
Zero-Pole: funcin de transferencia expresada en funcin de la
ganancia en rgimen permanente, y la situacin de los polos y ceros del
sistema.
Math: bloques que realizan operaciones matemticas sobre sus
entradas.
Abs: calcula el valor absoluto de su entrada.
Gain: aplica una ganancia constante a la entrada.
Math Function: este bloque incluye la mayor parte de las funciones
matematicas tpicas, con la excepcin de las funciones trigonomtricas.
Product: calcula el producto escalar de sus entradas. Un parmetro del
bloque permite regular el nmero de entradas del mismo.
Sign: calcula el signo de la entrada. +1 indica positivo -1 indica negativo
y 0 un valor nulo.

Kenneth R

MATLAB Y SIMULINK

Sum: calcula la suma de todas sus entradas. Un parmetro permite


indicar el nmero de entradas, y si estas deben ser invertidas antes de la
suma. Ejemplo: un valor para el parmetro ++-+ indicara que el bloque
tiene 4 entradas, y que la 3era debe ser invertida antes de sumarla.
Trigonometric function: en este bloque se incluyen todas las funciones
trigonomtricas tpicas.
BLOQUES NO LINEALES
Dead Zone: incluye una zona muerta en el sistema, centrada en torno a
cero. El sistema no responde ante estos valores. La magnitud de la zona
muerta puede ser modificada, y hecha asimtrica por medio de los
parmetros del sistema.
Relay: la salida pasa al estado on=1 cuando la entrada supera un valor
Umbral, y a estado off=0 cuando cae por debajo de un umbral distinto. El
estado inicial es Off.
Saturation: la seal de salida no sobrepasa un valor umbral,
configurable con los parmetros del bloque.
Switch: una entrada del sistema que permite escoger cual de las otras 2
entradas se presenta en la salida.
MANEJO DE SISTEMAS Y SEALES
Subsystem: permite la realizacin de sistemas jerrquicos. Al abrir el
subsistema, nos permite incluir en su interior, nuevos bloques
constructivos, e incluso anidar nuevos subsistemas.
Inl: por defecto un subsistema no contiene entradas. Por cada entrada
que se desee aadir se le debe incluir uno de estos bloques.
Outl: por defecto un subsistema no contiene salidas. Por cada entrada
que se desee aadir se le debe incluir uno de estos bloques.
Mux: permite la inclusin de un conjunto de sales en una nica lnea de
transmisin (que transmite datos vectoriales), lo que facilita la
representacin en el dibujo. Parmetros: nmero de entradas. Admite
tanto entradas escalares como vectoriales.
Demux: permite la descomposicin de los datos puesto en forma
vectorial en una lnea mediante un multiplexador.
Data store memory: define una variable del entorno de trabajo que se
va a usar como lugar de almacenamiento de datos til para evitar tener
que hacer conexiones complejas que compliquen el diagrama de
bloques que se est usando.
Data store read: lee el valor actual de una variable de almacenamiento,
que debe estar previamente definida mediante un bloque data store
memory.

Kenneth R

MATLAB Y SIMULINK

Data store write: cambia el valor actual de una variable de


almacenamiento, que debe estar previamente definida mediante un
bloque data store memory.
SUMIDEROS DE SEALES
Display: representa numricamente el valor de una variable.
Scope: representa grficamente la evolucin en el tiempo de una
variable.
To Workspace: guarda el valor de la seal indicada en una variable de
entorno de trabajo en MatLab. Se puede escoger el nombre de la
misma, y limitar su tamao.
To file: guarda en un fichero de tipo .mat los datos de la seal de
entrada al bloque.
Stop simulation: detiene la simulacin si el valor de la entrada es
distinto de 0.
FUENTES DE SEALES
Chirp signal: genera una seal senoidal, modulada en frecuencia entre
un valor inicial y otro final.
Clock: tiempo que se lleva de simulacin.
Constant: proporciona una seal de valor constante.
From Workspace: proporciona una secuencia de datos tomadas del
entorno de trabajo en MatLab. La variable elegida debe contener una
matriz indicando los valores de la seal, y los instantes en los que la
seal toma estos valores.
From file: proporciona datos tomados de un fichero .mat, en el que
debe estar el valor de la variable, junto a los instantes de tiempo en que
toma cada valor.
Pulse generator: genera una onda cuadrada de la que se puede
controlar la amplitud, periodo y el tiempo de duty.
Ramp: genera una seal de tipo rampa.
Random Number: genera nmeros aleatorios distribuidos segn una
funcin normal.
Signal generador: simula un generador de seales electrnico,
permitiendo generar ondas dientes de sierra, ondas cuadradas y
sinodales.
Sine Wave: generador de ondas senoidales.
Step: genera una seal de tipo escaln.

Kenneth R

MATLAB Y SIMULINK

4.2.

Creacin de un modelo

Para simular un sistema, se deben insertar en las ventanas de


simulacin los distintos componentes con los que se va a construir el modelo.
Se pueden seguir los siguientes pasos:

1) Crear un nuevo modelo: para abrir una ventana de simulacin se


debe pulsar el botn nuevo modelo.
2) Buscar un bloque: se puede buscar un bloque expandiendo el
rbol de la biblioteca o buscndolo directamente por su nombre
en la ventana de bsqueda. En este caso, si hay ms de un
bloque que pueda corresponder a ese nombre, irn apareciendo a
medida que se vallan agregando.
3) Situar un bloque: para situar un bloque se mantiene presionado el
botn izquierdo del ratn sobre el icono en forma de rombo que
hay justo al nombre del bloque y se arrastra hacia la posicin
deseada en la ventana de simulacin.
4) Conectar bloques: en cada bloque, los puntos de salidas
aparecen indicados mediante una flecha saliente del bloque !>,
mientras que los puertos de entrada a cada bloque se indican con
una flecha entrante al mismo >!. Se conecta la entrada de un
bloque a la salida de otro, manteniendo pulsado el botn
izquierdo del ratn mientras se arrastra desde el smbolo de
entrada de uno de los bloques hasta el de salida de otro y
viceversa.
5) Crear una bifurcacin: si se desea llevar la salida de un bloque a
una entrada de ms de uno, se necesita crear una bifurcacin en
la conexin. Para hacerlo se arrastra con el ratn desde la
entrada del nuevo bloque a conectar hasta la lnea de la conexin
que se va a bifurcar.
6) Modificar los bloques: se pueden rotar o aplicar simetras a los
bloques usados, segn convenga la colocacin de
entradas/salidas para el esquema que se est realizando
pulsando sobre el botn derecho del ratn y utilizando los mens
Kenneth R

MATLAB Y SIMULINK

desplegables o mediante la opcin formar del men principal


(format\flip block, format\rotate block, etc.). Tambin mediante
los mens o haciendo doble click sobre el bloque, se pueden
modificar sus parmetros.
7) Interseccin de textos: Se pueden incluir un texto aclatorio o
informativo en cualquier parte de la ventana del modelo, haciendo
doble click en una zona libre y escribiendo directamente el texto.

Para visualizar los resultados de la misma son muy tiles los bloques se
encuentran en el grupo sinks de la biblioteca de simulink. De entre ellos,
quizs el ms til es el bloque scope que simula el comportamiento de un
osciloscopio. Tras realizar una simulacin se pueden ver los resultados que ha
registrado haciendo un doble click sobre l. Para ver correctamente los
resultados se usan los controles de Zoom, siendo conveniente pulsar siempre
tras una simulacin el botn de autoescala (el de los prismticos) para ver el
total de datos registrados. Los otros 3 botones de zoom permiten
respectivamente ampliar un area sealada con un arrastre del ratn, ampliar
el eje X de la misma manera el eje Y.

Kenneth R

MATLAB Y SIMULINK

El bloque scope tiene una serie de propiedades a las que se accede a


travs del botn correspondiente de la ventana scope. Dos de las tiles son la
que permite elegir el nmero de entradas que se desean para el osciloscopio
number of axes y la que determina si el osciloscopio almacena todos los
datos de la simulacin o solo los ltimos obtenidos limit rows to last. Respecto
a este ltimo control, es conveniente eliminar la marca check del cuadradito
blanco para que el osciloscopio mantenga todos sus datos registrados durante
la simulacin completa.

EJEMPLO 1 DE APLICACIN DE SIMULINK


Simular la respuesta de un sistema descrito por su funcin de
transferencia ante una determinada seal de entrada con simulink.

SOLUCION:
>>g=tf([8], [1 4 9])
>>g=8/(s^2+4s+9)
>>impulse(g)
>>Step(g)

Kenneth R

MATLAB Y SIMULINK

Con simulink se construye el modelo del sistema pudindose optarse por


introducir sus parmetros en forma explcita o dejarlos como parmetros a los
que se les puede asignar un valor como variables desde la ventana de
comandos de MatLab una vez ejecutada la simulacin se obtendr en el bloque
scope el resultado de la misma.

EJEMPLO 2 DE APLICACIN DE SIMULINK


Si se desea simular un sistema ms complejo basta con trasladar las
ecuaciones de su modelo a un modelo de bloques en simulink.
Modelo del sistema

Simulink puede simular sistemas no lineales, como se puede ver en el


siguiente modelo, siendo necesario en muchos casos definir los valores
iniciales de algunas de las variables del sistema (en bloques como son los
integrator). Los valores del modelo representado que se han dejado como
parmetros son asignados en la ventana de comandos de MatLab (debe
tenerse cuidado con el uso de maysculas y minsculas en la denominacin de
estos parmetros). Los archivos de ejemplo indicados contienen el modelo
Kenneth R

MATLAB Y SIMULINK

representado y el espacio de trabajo con los valores asignados a los


parmetros para la ventana de comandos de MatLab.

Tambin se puede linealizar el modelo respecto a un punto de


funcionamiento y construir el modelo en transformada de laplace. Luego se
trasladan las ecuaciones del modelo linealizado a un modelo de simulink
mediante, por ejemplo, bloques funcin de transferencia.

Kenneth R

MATLAB Y SIMULINK

EJEMPLO 3 DE APLICACIN DE SIMULINK


Una vez diseado un regulador para un sistema, basndose en su
modelo linealizado, se puede comprobar con simulink si el comportamiento final
del sistema es adecuado. Basta con aadir los bloques que representan el
sistema de control diseado.

Kenneth R

MATLAB Y SIMULINK

Sin embargo, siempre que sea posible, es conveniente comprobar el


comportamiento del sistema de control sobre el modelo no lineal del sistema.
Pueden tenerse en cuenta por ejemplo, limitaciones en la evolucin de
determinadas variables del sistema. En el siguiente ejemplo, aparte de utilizar
el modelo no lineal que se tena para el sistema, se ha supuesto que la
corriente mxima i(t) que se puede conseguir es de 10 y que su valor nunca es
negativo. Esto se ha reflejado en el modelo mediante un bloque denominado
saturation.

Kenneth R

MATLAB Y SIMULINK

LISTAS DE COMANDOS MAS USADOS EN MATLAB

Kenneth R

MATLAB Y SIMULINK

Kenneth R

MATLAB Y SIMULINK

Kenneth R

You might also like