Está en la página 1de 10

FACULTAD DE INGENIERA

PROGRAMA DE POSGRADO DE LA ESCUELA DE INGENIERA ELCTRICA Y


ELECTRNICA
SISTEMAS DE CONTROL I.

PRCTICA 1: INTRODUCCIN A MATLAB.

1. Introduccin

MATLAB (MATrix LABoratory) es un software matemtico que ofrece un entorno de


desarrollo integrado (IDE) con un lenguaje de programacin propio (lenguaje M). Est
disponible para las plataformas Unix, Windows, Mac OS X y GNU/Linux .
Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la representacin de datos
y funciones, la implementacin de algoritmos, la creacin de interfaces de usuario (GUI) y la
comunicacin con programas en otros lenguajes y con otros dispositivos hardware. El paquete
MATLAB dispone de algunas herramientas adicionales que expanden sus prestaciones, Simulink
(plataforma de simulacin multidominio) y GUIDE (editor de interfaces de usuario - GUI).
Adems, se pueden ampliar las capacidades de MATLAB con toolboxes; y las de Simulink con
los paquetes de bloques (blocksets).
Es un software muy usado en universidades y centros de investigacin y desarrollo. En los
ltimos aos ha aumentado el nmero de prestaciones, como la de programar
directamente procesadores digitales de seal o crear cdigo VHDL.

Para el anlisis y diseo de sistemas de control se incluyen diferentes herramientas tales como:

Control System toolbox: Toolbox dedicado al anlisis y diseo de sistemas de control. Dispone
de una herramienta grfica conocida como Sisotool que permite ajustar sistemas de control,
usando el modelo de una planta, caractersticas de los bloques de realimentacin, actuadores,
perturbaciones. Los controladores se pueden ajustar y observar el comportamiento del sistema
ante diversas seales de entrada.

Signal processing toolbox: Este paquete permite procesar seales. Por ejemplo, en ocasiones es
necesario crear filtros para realizar un sistema de control de seguimiento de referencia y es
necesario disear filtros ptimos que, inclusive, pueden ser implementados en hardware.

Curve fitting toolbox (cftool), System identification Toolbox (ident): El primero facilita
la interpolacin de datos. El segundo permite obtener modelos en la variable compleja s de una
serie de datos.

1
2. Objetivos de la prctica

Familiarizar al estudiante con un software de computacin numrico ampliamente utilizado en el


mbito de los sistemas de control, como lo es Matlab

3. Conceptos bsicos

Crear una carpeta con el nombre practica_1, la cual ser el directorio de trabajo en Matlab. Abrir
Matlab, la pantalla principal se compone de 4 secciones principales: Navegador de archivos
(ubicarnos en la carpeta que se acaba de crear), Workspace, Command History y el Command
Window (consola); en esta ltima seccin escribiremos las lneas de comando, cada una es
iniciada por >> y es digitada automticamente por Matlab.

Es importante aclarar que Matlab diferencia entre minsculas y maysculas. El carcter ;


despus de cada comando indica que NO se muestre el resultado de la lnea de comando.
>> a = 10
>> A = 45;
>> a + A

En una sola lnea se puede escribir varios comando separados por ;, sin embargo, esta prctica
no es recomendable debido a que el cdigo pierde legibilidad. Una lnea de comentario inicia por
la combinacin de caracteres %. Si la operacin a realizar es muy extensa para una sola lnea,
es posible digitarla en varias mediante el smbolo ; NO est permitido que el nombre de una
variable o funcin quede en lneas separadas.
>> %A continuacin se digita dos comandos en una lnea, lo cual no se
recomienda
>> z = 2.54; y = [2.09 4551]
>> //comando en varias lneas
> u = 100*(a*sin(A))^2 +
>> 2000*(a*z)

Matlab provee constantes predefinidas tales como: pi, ans, eps, inf, i, j,Nan; estas variables estn
protegidas y no pueden ser modificadas por el usuario.

4. Manipulacin de vectores y matrices

Nota: Matlab emplea como unidad bsica arreglos numricos (Vectores y matrices).

Escalar: Son nmero reales o complejos. Los valores de los escalares pueden ser asignados a
una variable.

>> 5 + 2*i
>> b = 4-3*j

2
>> c = -3 +5*i
>> d = b + c

Matrices: Las matrices son la estructura fundamental de Matlab. Una matriz es un arreglo
rectangular (o cuadrado) donde cada elemento puede localizarse con dos ndices, el nmero de
fila y el nmero de columna
La forma ms fcil para crear una matriz es especificar cada uno de sus elementos. Los
elementos de cada columna puede separase tanto por espacios o por ,, y para indicar una nueva
fila se utiliza ;, la matriz se especifica dentro de corchetes [ ] .
>>A = [1 2 4; 5 7 9]

Una matriz tambin puede especificarse sobre varias lneas:


>>C=[1 2 3 5;
>>2 8 9 3]

La extraccin de rangos de matrices es una de las operaciones ms importantes para la


programacin en Matlab. Defina una matriz de 3X5 (3 filas y 5 columnas) llamada posicin.
Si se desea extraer el elemento correspondiente a la primera fila y segunda columna, se digita el
siguiente comando:

>> posicion(1,2) %para acceder a los elemento se utilizan parntesis.

Ahora se extraen todos los elementos de la primera columna, y posteriormente los elementos de
la tercera fila:

>> posicion(:,1)
>> posicion(3,:)

Tambin se puede extraer un rango de la matriz:


>> posicion(2:3,1:2)%filas 2 y 3, columnas 1 y 2

A continuacin se debe implementar cada uno de los siguientes comandos, digitar help
nombre_comando.

ones
zeros
eye
diag
det
cond
inv
size

>>A = [ 1 2 3; 5 7 9; 2 8 7]
>>B = [ 1; 5; 9]
>>C = [A B] //concatenar matrices

3
>>L = diag( [1 2 3 4], -1 )
>>R = rand(3,2)
>>W = A' // Transpuesta de una matriz
>>C = 2*B // Multiplicacin por un escalar.
// Suma y resta de matrices. Las matrices deben de ser de igual orden.
>>A = [2, 3; 5,1; 7,9]
>>B = [8,25; 2,37; 5,7]
>>C=A+B
>>D=A-B

// Multiplicacin de matrices.
>>F = [2, 5, 9; 1, 7, 2]
>>G = [0, 5; 10 29; 7 21]
>>H=F*G

//Multiplicacin de matrices elemento a elemento


>>A = [1 5 3; 2 7 8; 3 5 4; 0 2 9]
>>B = [0 0 25; 7 1 2; 2 1 3; 7 2 1]
>>C = A .* B

//vectores
>>X=0:10
>>Y=2:0.2:3
Para mayor informacin :

http://www.utm.mx/~vero0304/HCPM/2-variables-funciones.pdf

5. Uso de funciones

Es posible definir funciones directamente en la lnea de comandos de Matlab, pero es ms


recomendable hacerlo abriendo el editor de scripts.

Para crear un nuevo script se procede a ejecutar la siguiente ruta de comandos (file NewScript)
o por el atajo de teclado Ctrl+N.

Ejemplo para crear una funcin que obtenga la raz cuadrada de un nmero.
function r = cuadrada(x)
%funcin para calcular la raz cuadrada de un numero x
% r: parmetro de salida
% x: parmetro de entrada
% cuadrada: nombre de la funcin
r = sqrt(x);
end

En el ejemplo anterior se crea una funcin con el nombre cuadrada donde recibe un parmetro x
del cual se obtendr su respectiva raz cuadrada. El parmetro de salida r debe ser asignado para
que la funcin retorne el valor deseado.

4
Una vez creado el script, se procede a guardarlo. Es un requisito que el nombre del script
coincida con el nombre de la funcin que se ha creado, para el ejemplo anterior el nombre del
script debe ser cuadrada. Adems se debe tener en cuenta que el script .m creado debe estar
relacionado (guardado) al directorio actual del programa. La ejecucin de la funcin creada se
realiza por lnea de comandos.
>> cuadrada(25)
>> A=[27 8 64];
>> cuadrada(A)

Es posible ingresar una cantidad n de valores de entrada y obtener m valores de salida, para esto
en la edicin de la funcin se deben especificar este tipo de configuraciones. Ejemplo para crear
una funcin con dos parmetros de salida (suma, mult) y tres parmetros de entrada x,y,z.
function [suma, mult] = sum_mult(x,y,z)
%funcin para calcular la suma y la multiplicacin de tres nmeros x,y,z
% sum:parmetro de salida del resultado de la suma de los valores
% mult:parmetro de salida del resultado de la multiplicacin
% sum_mult: nombre de la funcin
suma = x+y+z;
mult = x*y*z;
end

6. Grficos

Se crear una seal senoidal con una frecuencia de 1Hz, una amplitud de 3 y se visualizarn 3
segundos de esta seal. En primer lugar, se crear un vector tiempo de la siguiente manera:
>> tiempo=0:0.05:3;

Esta sintaxis permite crear un vector cuyo valor mnimo es 0, valor mximo 3 y se incrementar
en pasos de 0.05. Ahora, se crear la seal senoidal. Se usa este vector de tiempo para el
respectivo clculo. Escribir lo siguiente:
>> seno=3*sin(2*pi*1*tiempo);

De esta manera se crear el vector que contiene los valores de la funcin seno antes mencionado.
Ahora bien, se emplear el comando plot para realizar las grficas. Se utiliza el comando:
>> plot(tiempo,seno);

La sintaxis del comando plot asigna el primer vector (tiempo) al eje de las abscisas y el segundo
vector (seno) al eje de las ordenadas.
De esta manera, aparecer una ventana emergente que permitir visualizar el grfico Amplitud
Vs Tiempo de la seal senoidal. Ahora, se calcula una seal coseno que se graficar junto a la
seal seno. Las propiedades son las mismas. Usar el comando

>> coseno=3*cos(2*pi*1*tiempo);

5
El comando para graficar las dos curvas en la misma ventana ser el siguiente:
>> figure(2);
>> plot(tiempo,seno,tiempo,coseno);

Se graficarn dos seales desfasadas 90 una de otra. El comando figure(2); crea una nueva
ventana donde se graficarn las seales seno y coseno creadas.

7. Solucin de sistemas de ecuaciones lineales

Resolver el sistema:
5 x 1 2 x 2 5 x3 +2 x 4 5 x5 =12
2 x 1 +12 x 2 5 x 3+2 x 4 5 x 5=2
4 x 1+ x 2 5 x3 +22 x 4 5 x5 =1
3 x 1 +2 x2 5 x 3+ 2 x 4 8 x 5=5
3 x 1+ 2 x 2 +15 x 3 +3 x 4 21 x5=5

Primero capturamos la matriz de coeficientes del sistema en forma matricial:


>>A = [5 -2 -5 2 -5; 2 12 -5 2 -5; 4 1 -5 22 -5; 3 2 -5 2 -8; 3 2 15 3 -21]

Ahora el vector de trminos independientes como un vector columna:

>>b = [12 -2 -1 5 5]'

La solucin se obtiene multiplicando el vector de trminos independientes por la inversa de la


matriz de coeficientes:
>> X = inv(A) * b

8. Funciones de transferencia, Sistemas Continuos

Para el desarrollo de este punto se trabajara a partir de la siguiente funcin de transferencia:


2
0.2 s +0.3 s +1
H ( S) =
( s +0.4 s+ 1) ( s+ 0.5 )
2

Existen 2 formas de definir una funcin de transferencia en matlab:

Definicin del polinomio numerador y denominador:


>> num = [0.2 0.3 1];
>> den1 = [1 0.4 1];
>> den2 = [1 0.5];
>> den = conv(den1,den2); %producto de polinomios (convolucin)
>>H = tf(num,den)
6
Definicin de la variable compleja s:
>> s = tf(s);
>> H = (0.2*s^2+0.3*s+1)/((s^2+0.4*s+1)*(s+0.5))

Para ver los polos y ceros del sistema de la funcin de transferencia, podemos usar:

>>roots(den)
>>roots(num)

La funcin tf2zp devuelve un vector conteniendo los ceros, un vector con los polos del sistema y
un escalar correspondiente a la ganancia esttica.
>>[ceros,polo,gain]=tf2zp(num,,den);

La respuesta ante un escaln a la entrada se puede analizar generando un vector de tiempos y


usando la funcin step:
>> t = [0:0.3:15];
>> y = step(num,den,t);
>> plot(t,y)
>>title(Respueta a un escalon unitario);
>>xlabel(tiempo(seg));
>>grid;

No es necesario recuperar el resultado de la simulacin ante escaln que realiza step para
despus representarlo con plot, sino que el propio comando step, si lo utilizamos sin parmetros
de salida, realiza la representacin.
>>step(H) %Simulacin ante una entrada tipo escaln
>>grid

La respuesta impulsional se puede obtener del mismo modo, pero usando en este caso la funcin
impulse,
>>impulse (num,den,t);

Se puede obtener la respuesta del sistema a cualquier tipo de entrada definiendo la seal de
entrada en un vector de igual dimensin al tiempo.

>>ramp = t;
>>y = lsim (num,den,ramp,t);
>>plot (t,y,t,ramp);
>>title (Respuesta a una rampa);
>>xlabel (tiempo(seg));

>>noise = rand (size(t));


>>y = lsim (num,den,noise,t);
>>plot (t,y,t,noise);

7
>>title (Respuesta a un ruido aleatorio);
>>xlabel (tiempo(seg));

9. Funciones de transferencia, Sistemas Discretos

>>[sysd] = c2d (Gs,Ts,metodo)

Discretizacin de un modelo en tiempo continuo, cuya funcin de transferencia viene dada por
Gs. Como segundo parmetro se especifica el periodo de muestreo. El ltimo parmetro
proporciona una cadena de caracteres que indica el mtodo con el que se va a hacer la
discretizacin, algunas posibilidades son:

zoh: Discretizacin utilizando retenedor de orden cero (ZOH). Es la opcin por defecto.
foh: Discretizacin utilizando retenedor de orden uno (FOH).
tustin: Discretizacin mediante aproximacin trapezoidal.
prewarp: Discretizacin trapezoidal con prewarping.
>>[sysc] = d2c(Gs,metodo)

Se trata de la funcin contraria a la anterior. Transforma un sistema discreto en uno continuo,


mediante "zoh", "tustin", o "matched".
>>N = [0.2 0.3 1];
>>D = [1 0.9 1.2 0.5];
>>G=tf(N,D)
>>step(G);
>>hold;
>>Tm=1;
>> [Gz] = c2d (G,Tm,'zoh')
>>step (Gz);
>>title ('Respuesta escaln de un sistema discreto');
>>xlabel ('Periodo de muestreo');
>>ylabel ('Salida');
>>grid;
>>figure;
>> [sysc] = d2c(Gz,'zoh')
>>step(sysc,'r');
>>title ('Respuesta escaln sistema continuo reconstruido');
>>xlabel ('Periodo de muestreo');
>>ylabel ('Salida');
>>grid on;

10. Creacin de funciones de transferencia y sistemas en espacio de estado

Se crear una funcin de transferencia de primer orden con constante de tiempo de 2 segundos al
cambio de escaln. Observe la respuesta ante el escaln unitario de esta funcin de transferencia,
se puede usar el comando step(Hs).

8
Es posible realizar una conversin de un modelo expresando en funcin de transferencia al
espacio de estados. El comando que debe emplearse para este ejemplo es:

>> [A1,B1,C1,D1]=tf2ss(----aqui va la funcin de transferencia -----)

En este caso, la funcin tf2ss retornar 4 matrices A1,B1,C1,D1 propias del modelo en espacio
de estados del sistema. De igual manera, se pueden obtener el numerador y denominador de las
funciones de transferencia de acuerdo al modelo en espacio de estados.

>> [num1,den1]=ss2tf(A1,B1,C1,D1,1)

11. SIMULINK

Digitar en la consola de Matlab el comando simulink y realice el siguiente diagrama


correspondiente a un lazo de control.

9
Ejercicios

1. La representacin normal de un sistema de segundo orden en forma de funcin de


transferencia esta dada por:

Donde:

K: ganancia esttica del sistema. En este caso la asumiremos K = 1.


: Coeficiente de amortiguamiento.
wn: Frecuencia natural no amortiguada del sistema.

Del polinomio caracterstico se tiene que las dos races son:

Pudiendo distinguirse los siguientes casos:

Caso 1: Si > 1 2 races reales distintas en SPI (sobreamortiguado).


Caso 2: Si = 1 2 races reales iguales en SPI (lmite sobre-sub), sistema
crticamente amortiguado.
Caso 3: Si 0 < < 1 races complejas conjugadas en SPI (subamortiguado)
Caso 4: Si = 0 Respuesta oscilatoria. Sistema crticamente estable. Races
en eje imaginario.
Caso 5: Si < 0 Sistema inestable, races en SPD.

a. Mostrar la respuesta ante el impulso y escaln unitario para cada uno de los casos. Para el
caso 3 mostrar al menos 5 sistemas diferentes. Concluir.

2. A partir de la funcin de transferencia de la planta Gp en frecuencia, realice la discretizacin


de la funcin y dibuje su respuesta ante una entrada escaln con tiempos de muestreo de 10s,
1s y 0.1s.

1
Gp= 2
s +2 s+3

10