Está en la página 1de 53

DEPARTAMENTODEINGENIERA

SECCININGENIERA MECNICA

REA AUTOMATIZACIN

GUALABORATORIOCONTROLAUTOMTICO

LABORATORIO1

INTRODUCCINALMATLABYSUTOOLBOXDEANLISISYDISEO
DESISTEMASDECONTROL

LIMA - 2015
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

LABORATORIO No1

INTRODUCCIN AL MATLAB Y SU USO EN EL ANLISIS Y DISEO


DE SISTEMAS DE CONTROL

OBJETIVOS

Al finalizar el laboratorio, el alumno estar familiarizado con el uso del MATLAB


realizando simulaciones orientadas al anlisis y/o diseo de sistemas de control
automtico. Para esto se usar el toolbox de diseo y anlisis de sistemas de control del
MATLAB.

INTRODUCCIN AL MATLAB

MATLAB es un software interactivo orientado para el clculo cientfico y de ingeniera,


que facilita la exploracin iterativa, diseo y resolucin de problemas. MATLAB
integra anlisis numrico, visualizacin, y programacin en un entorno amigable, en el
que los problemas y soluciones se pueden expresar en notacin matemtica.

MATLAB es un sistema interactivo cuyo elemento bsico de datos es un arreglo que no


requiere dimensionamiento. Esto nos permite resolver muchos problemas tcnicos de
clculo, especialmente aquellos que usan composicin de matrices y vectores, en una
fraccin de tiempo de lo que tomara escribir un programa en un lenguaje no interactivo
como C o Fortran.

1. Usos del Matlab.-

Funcionalidades bsicas:
- Clculo matemtico.
- Clculo matricial.
- Programacin y desarrollo de algoritmos.
- Desarrollo e implementacin de aplicaciones.
- Grficos cientficos y de ingeniera.
- Modelamiento, simulacin y diseo de prototipos.
- Anlisis de datos, exploracin y visualizacin.

Libreras especficas: toolboxes. A lo largo del curso se utilizarn las siguientes:


- Control System Design and Analysis: anlisis de sistemas y diseo de
controladores.
- Simulink: simulacin de sistema dinmicos y diseo basado en modelos.

Otros toolboxes:
- Math, Statistics and Optimization.
- Signal Processing and Communications.
- Image Processing and Computer Vision.
- Computational Finance.
- Parallel Computing, otros.
2
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

2. El aspecto de Matlab 8 (R2012a).-

Matlab 8 ofrece un aspecto configurable en funcin de la informacin que se desee


mostrar en la pantalla. En la Figura 1.1 se muestra un posible aspecto.

Figura 1.1 Escritorio del Matlab

Existen cuatro elementos fundamentales, tal y como puede apreciarse en la imagen:


Ventana de comandos (Command window): es un interfaz en modo texto sobre la que
se introducen por teclado instrucciones de Matlab. Ser el elemento fundamental a
utilizar en esta prctica.
Ventana de variables (Workspace): en ella aparece un listado de todas las variables
que se han empleado durante la sesin, tambin pueden visualizarse sus tamaos y
tipos.
Historial de comandos (Command history): ofrece un listado de todas las
instrucciones tecleadas durante la sesin.
Navegador o (Current folder): indica los contenidos del directorio actual y permite
navegar por la estructura de directorios del PC.

3. Cmo encontrar ayuda en Matlab.-

Existen distintas formas de localizar ayuda en el entorno de Matlab:


Ayuda en lnea.- Se accede a travs de la ventana de comandos tecleando help
nombre de funcin. La ayuda se obtiene en modo texto. Como
ejemplo, se visualizar la ayuda de la funcin que permite invertir matrices
tecleando:

>> help inv

3
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Navegador de funciones.- Se accede desde el men Help, seleccionando la


opcin Function Browser, o seleccionando el icono fx a la izquierda de la lnea
de comandos. Constituye una manera ms ordenada de localizar la misma
informacin: las funciones aparecen agrupadas en bloques y se proporciona un
interfaz para navegar. Adems ofrece informacin adicional como ejemplos e
instrucciones de uso.

Navegador de ayuda.- Se accede desde el men Help, seleccionando la opcin


Product Help, o dando click en el botn con signo de interrogacin en la barra
de herramientas. Constituye una manera ms sencilla de localizar la informacin
anterior, en adicin a presentar documentacin adicional (guas, etc.). Presenta
dos ventanas, una para navegar y otro para visualizar, lo cual facilita su uso.
Tambin se puede accesar a la informacin de una funcin en el navegador de
ayuda tecleando en la ventana de comandos doc nombre de funcin.

Comando lookfor (bsqueda de palabras clave).- Aunque ms complicado


de utilizar, proporciona en ocasiones informacin extra. El comando lookfor
permite buscar entre las descripciones de todas las funciones de Matlab, aquellas
que contienen la palabra clave que indiquemos. Como ejemplo, buscaremos
todas las funciones de Matlab relacionadas con la transformada de Fourier
tecleando:
>> lookfor Fourier

4. Variables y matrices en Matlab.-

Matlab soporta nombres de variable de hasta 19 caracteres, y distingue entre


maysculas y minsculas.
El tipo de la variable es asignado automticamente y puede ser:

Entero
Real
Complejo
Carcter

Una sentencia de creacin de variable es, por ejemplo:

>> pepe = 7
pepe =
7

Esta sentencia crea la variable entera pepe y le asigna el valor 7. Matlab muestra en
pantalla el resultado de cada operacin. Si no se quiere visualizar el resultado, basta
poner un punto y coma despus de cada sentencia:

>> pepe = 7;

4
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Todas las variables en Matlab son consideradas matrices. Las posibilidades que
utilizaremos son:

Matriz n x m: matriz bidimensional


Matriz n x 1 1 x n: vector (se maneja exactamente igual que una matriz)
Matriz 1 x 1: escalar (tambin se maneja exactamente igual que una matriz).

Empecemos ingresando una matriz como una lista de sus elementos. Se sigue las
siguientes reglas:

Separar los elementos de una fila con espacios o comas.


Usar un punto y coma ; para indicar el final de cada fila.
Encerrar la lista de elementos con corchetes, [ ].

>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9

Como puede apreciarse en el ejemplo, los distintos elementos de una fila se separan
mediante espacios (o comas) y las distintas filas se separan mediante puntos y coma.

Algunas posibilidades de manejo de variables que ofrece Matlab:

Comprobar el contenido de alguna variable: basta con teclear su nombre en la


ventana de comandos:
>> pepe
pepe =
7

Listar todas las variables existentes en un determinado momento: comando who.


>> who
Your variables are:
A pepe

Nota: la versin 8 de Matlab permite visualizar las variables existentes en la ventana


Workspace.

Eliminar alguna variable de memoria: comando clear.


clear pepe
who
Your variables are:
A
Podemos observar cmo la variable pepe ha desaparecido de la memoria.

5
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

5. Gestin de una sesin de trabajo.-

La Tabla 1 resume los comandos y smbolos especiales para gestionar una sesin de
trabajo.

Tabla 1 Comandos para gestionar una sesin de trabajo

Comando Descripcin
clc Limpia la ventana de comandos
close all Cierra todas las ventanas que muestren grficos.
clear Remueve todas las variables de memoria
clear var1 var2 Remueve las variables var1 y var2 de memoria
exist(name) Determina si existe una variable con el nombre name
quit Detiene la ejecucin del Matlab
who Lista las variables en memoria
whos Lista las variables y tamaos e indica si tienen parte
imaginaria
: Dos puntos, genera un arreglo con elementos
igualmente especiados
, Coma, separa elementos de un arreglo
; Punto y coma, suprime la impresin en pantalla;
tambin denota una nueva fila en un arreglo
Tres puntos, permite continuar una lnea

Si se necesita escribir una lnea larga, se pueden usar tres puntos, por ejemplo:

>>NumerodeManzanas = 10; NumerodeNaranjas = 25;


>>NumerodePeras = 12;
>>FrutasCompradas = NumerodeManzanas + NumerodeNaranjas ...
+NumberodePeras
FrutasCompradas =
47

Usar las teclas de desplazamiento (flechas), teclas Tab y Ctrl para rellamar, editar y
reusar funciones y variables tipeadas previamente. Por ejemplo, si se escribe la siguiente
lnea errneamente:

>>volumen = 1+sqr(5)

Matlab responde con un mensaje de error porque se escribi mal sqrt. En lugar de
teclear toda la lnea, presionar la tecla de desplazamiento hacia arriba () una vez para
mostrar la lnea tecleada previamente. Presionar la tecla de desplazamiento hacia la
izquierda () varias veces para mover el cursor y agregar la letra t faltante, luego
presionar Enter. El uso repetido de la tecla de desplazamiento hacia arriba permite
visualizar las lneas tecleadas con anterioridad.

6
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

6. Manejo de matrices.-

Matlab ofrece bastantes facilidades para el manejo de matrices. Volviendo al ejemplo


anterior:
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
Podemos acceder a cualquier elemento de la matriz especificando fila y
columna:
A (1,3)
ans =
3

Nota: ans es la variable por defecto donde Matlab guarda cualquier resultado; si
hubiramos deseado utilizar otra variable deberamos haberlo especificado:
k = A(1,3)
k =
3

Tambin se puede acceder a toda una fila o toda una columna, utilizando el
operador dos puntos. Este primer comando muestra todos los elementos de la
fila 2:
A(2,:)
ans =
4 5 6

Este segundo comando muestra todos los elementos de la columna 3:


A (:,3)
ans =
3
6
9

O bien a grupos de filas y/o columnas: Este comando muestra los elementos de
las filas 1 hasta la 2 y de las columnas 2 hasta la 3:
A(1:2,2:3)
ans =
2 3
5 6

Tambin es posible modificar cualquier elemento de una matriz:


A(1,1) = 9
A =
9 2 3
4 5 6
7 8 9

7
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

E incluso aadir elementos a una matriz dada:


A(4,4) = 1
A =
9 2 3 0
4 5 6 0
7 8 9 0
0 0 0 1
Podemos ver cmo los elementos no especificados se rellenan con ceros.

7. Principales operadores aritmticos.-

Matlab ofrece una serie de operadores aritmticos vlidos tanto para clculo matricial
como para clculo escalar:

Suma: +
Resta: -
Producto: *
Divisin: /
Transpuesta:
Potencia: ^

En algunas ocasiones podrn presentarse ambigedades. Por ejemplo, al multiplicar dos


matrices caben dos posibilidades: producto matricial o producto elemento a elemento.

A = [1 2; 3 4]
A =
1 2
3 4
B = [2 4; 6 8]
B =
2 4
6 8
C = A*B % producto matricial
C =
14 20
30 44
D = A.*B % el punto indica operacin elemento a elemento
D =
2 8
18 32

La informacin sobre operadores puede ser encontrada en la ayuda de Matlab 8,


dentro de: Product Help -> Getting started -> Language Fundamentals -> Expressions
-> Matrix/Array Operators.

Adems de los operadores comentados, existen una serie de funciones muy tiles en
clculo y generacin de matrices:

8
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Generacin de matrices:

eye matriz identidad.


zeros matriz de ceros.
ones matriz de unos.
diag matriz diagonal.
rand matriz uniformemente distribuida generada aleatoriamente.
randn matriz normalmente distribuida generada aleatoriamente.

Manejo de matrices:

rank rango de una matriz.


eig autovalores y autovectores.
inv inversa de una matriz.
expm matriz exponencial.
poly polinomio caracterstico.
det determinante.
size tamao.
length longitud de un vector.

Ejemplos.-

Obtencin de la matriz inversa: funcin inv:

A = [1 2; 3 4]
A =
1 2
3 4
B = inv(A)
B =
-2.0000 1.0000
1.5000 -0.5000

Creacin de una matriz de ceros o unos: funciones zeros y ones:

A = zeros(1,4)
A =
0 0 0 0
B = ones(2,3)
B =
1 1 1
1 1 1

La informacin sobre operaciones matriciales puede ser encontrada en la ayuda de


Matlab 8 en: Product Help -> Getting started ->Language Fundamentals -> Matrices
and Magic Squares -> About Matrices

9
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

8. Operaciones con vectores.-

Podemos crear cualquier vector creciente o decreciente que deseemos. Esta operacin
ser bastante til para formar bases de tiempo sobre las que se evaluar el valor de
funciones.

Los dos puntos : es un carcter importante en Matlab. La declaracin:


>>x =1:5
genera un vector lnea conteniendo los nmeros del 1 al 5 con incremento unitario.
Resultando:
x =
1 2 3 4 5

Otros incrementos, diferentes de uno, pueden ser usados.


>>y=0:pi/4:pi
que resulta en:
y=
0.0000 0.7854 1.5708 2.3562 3.1416

Incrementos negativos tambin son posibles.


>>z=6:-1:1
z=
6 5 4 3 2 1

Tambin se puede generar vectores utilizando la funcin linspace. Por ejemplo:


>>k=linspace(0,1,6)
k=
0 0.2000 0.4000 0.6000 0.8000 1.0000
genera un vector linealmente espaciado de 0 a 1, conteniendo 6 elementos.

9. Manejo de polinomios.-

Matlab puede manejar muy bien los polinomios al representarlos mediante vectores.
Los coeficientes de un polinomio son los elementos del vector, en orden descendente de
potencias. Si queremos calcular las races del polinomio a continuacin:

simplemente ingresamos:
>>p=[3 0 5 3 2 10];
>>roots(p)

Similarmente, si queremos evaluar el mismo polinomio en s =, ingresamos:


>>polyval(p,pi)

Si queremos multiplicar dos polinomios, la funcin conv lo puede hacer. La


convolucin es una operacin matemtica que opera sobre sucesiones hechas a base de
polinomios ordenados por orden de potencias, la sucesin resultante representa los

10
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

coeficientes del polinomio que se obtienen cuando se multiplican los polinomios


originales; por eso el nombre conv. Ejecute los siguientes comandos:

>>roots(p)
>>q=[ 1 6 11 6];
>>roots(q)
>>pq=conv(p,q)
>>roots(pq)

10. Funciones incorporadas del Matlab

Muchas funciones que hasta ahora se han usado, tales como sqrt y sin son
funciones incorporadas del Matlab. La Tabla 2 lista algunas de las funciones ms
usadas. La creaciones funciones definidas por el usuario es vista al detalle en el tem 16.

Tabla 2 Funciones matemticas comnmente usadas en el Matlab


Funcin Sintaxis del Matlab
x
e exp(x)
x sqrt(x)
ln x log(x)
log10 x log10(x)
cos x cos(x)
sin x sin(x)
tan x tan(x)
cos-1 x acos(x)
sin -1 x asin(x)
tan-1 x atan(x)

11. Guardando y recuperando las variables del workspace.-

Si se desea guardar una sesin de Matlab para uso posterior, se deben usar los
comandos save y load. Teclear save hace que el Matlab guarde las variables de la
ventana de variables, esto es los nombres de las variables, sus tamaos, y sus valores, en
un archivo binario llamado matlab.mat, que el Matlab puede leer. Para recuperar las
variables de la ventana de variables, teclear load. Luego se puede continuar la sesin
como anteriormente.
Para guardar las variables de la ventana de variables con otro nombre, teclear save
nombre de archivo. Si el archivo guardado contiene las variables A, B y C,
luego cargando el archivo con load nombre de archivo se posicionan
dichas variables en la ventana de comandos, y de existir algunas variables con nombres
similares, stas son reemplazadas.
Para guardar solo unas cuantas variables, digamos var1 y var2, teclear save
nombre de archivo var1 var2. Para recuperar var1 y var2 solo es
necesario teclear load nombre de archivo.

11
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

12. Modos de trabajo.-

Matlab permite trabajar de dos maneras distintas:


Mediante la introduccin directa de comandos.- Tecleando comandos desde la
ventana principal de Matlab podemos realizar operaciones paso a paso. Ser el
mtodo de trabajo a emplear para hacer pruebas o bien para operaciones
sencillas no repetitivas.
Mediante la creacin de programas (*.m) guardados en un archivo script.- La
misma secuencia de comandos que podramos introducir desde la ventana
principal puede escribirse en un archivo, que debe tener terminacin .m y debe
ser ejecutado posteriormente desde la ventana de comandos sencillamente
tecleando el nombre del archivo.
Matlab usa dos tipos de archivos *.m; archivos script o archivos funcin.

13. Creando y usando un script.-

El smbolo % designa un comentario, que no es ejecutado en Matlab. Los comentarios


son usados con el propsito de documentar el archivo. Matlab ignora todo lo que est a
la derecha del smbolo %.
Por ejemplo:
>>%Este es un comentario
>>x=2+3 % Luego es
x=5
Ntese que la porcin de la lnea antes del % es ejecutada.

A continuacin se muestra un ejemplo simple de cmo crear, guardar y correr un


archivo script usando el Editor/Depurador del Matlab.

Con la opcin File->New->Script o bien con el icono New script (Ctrl+N) abrir el
Editor/Depurador de cdigo Matlab, ver Figura 2. Tipear en el archivo abierto lo
siguiente:

% Program Example_1.m
% This program computes the cosine of
% the square root and displays the result.
x = sqrt(13:3:25);
y = cos(x)

Una vez concluida la edicin, seleccionar File->Save. Reemplazar el nombre por


defecto (Untitled) con el nombre Example_1, y dar click en Save. El archivo ser
guardado con la extensin *.m en la carpeta actual del navegador de Matlab.
Una vez guardado el archivo teclear Example_1 en la ventana de comandos para
ejecutar el programa.
>>Example_1

La Figura 2 muestra una pantalla que contiene el resultado de lo que se muestra en la


ventana de comandos y el editor/depurador de Matlab abierto para el script del ejemplo.

12
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Figura 2. La ventana de comandos del Matlab con el Editor/Depurador del script


abierto

Recordar que un script (o variable) no puede tener el mismo nombre de un comando o


funcin de Matlab. Usar el comando exist para verificar que el nombre que se le
quiere dar al script o variable no existe ya como funcin, comando o archivo; por
ejemplo al teclear exist(example_1), el resultado ser 1 de existir la variable,
2 de existir el script y 5 de existir la funcin de Matlab, y 0 de no existir. Teclear help
exist para ms informacin.

Recordar tambin que un script no puede tener un nombre con espacios ni guiones
medios.

Ejemplo:

El siguiente ejemplo muestra un archivo script para el clculo de la velocidad de un


objeto en cada libre, con velocidad inicial igual a cero.

% Programa Velocidad_CaidaLibre.m: grafica la velocidad de


% un objeto en caida libre.
% Creado el 01/03/2009 por W. Palm III
%
% Variables de entrada:
% tfinal = tiempo final (en segundos)
%
% Variables de salida:
13
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

% t = arreglo de tiempos en los que la velocidad es


% calculada (segundos)
% v = arreglo de velocidades (metros/segundo)
%
% Valor del parmetro:
g = 9.81; % Aceleracin in SI units
%
% Seccin de entrada:
tfinal = input(Introducir el tiempo final en segundos:);
%
% Calculation section:
dt = tfinal/500;
t = 0:dt:tfinal; % Crea un arreglo de 501 valores de tiempo.
v = g*t;
%
% Seccin de salida:
disp(La velocidad final es:)
disp(v(lenght(t))
plot(t,v),xlabel(Tiempo (segundos)),ylabel(Velocidad
metros/segundo)

Despus de crear el script, se guarda con el nombre Velocidad_CaidaLibre.m.


Para ejecutarlo, escribir Velocidad_CaidaLibre en la lnea de comandos. A
continuacin se pedir introducir el valor de tfinal. Una vez introducido el valor presionar
Enter, el resultado es la velocidad final mostrada en la lnea de comandos y el grfico
de la velocidad vs tiempo mostrado en una nueva ventana.

Si analizamos al detalle el programa Velocidad_CaidaLibre, encontraremos la


estructura sugerida para un script, como es:

Seccin de comentarios (nombre del programa, fecha de creacin, nombre de los


creadores, definiciones de nombres de variables, etc.).
Seccin de entrada: en esta seccin se colocan los datos de entradas o las
funciones de entrada que facilitan el ingreso de datos. Incluir comentarios como
sea necesario.
Seccin de clculos: poner los clculos en esta seccin. Incluir comentarios de
ser necesario.
Seccin de salida: en esta seccin poner las funciones necesarias para entregar
las salidas en la forma requerida.

La creacin de una funcin de Matlab se ver con detalle en el tem 16, Creacin de
funciones definidas por el usuario.

14
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

14. Facilidades para la programacin en Matlab.-

En comparacin con otros lenguajes de programacin, Matlab ofrece muchas


facilidades para el usuario. Bsicamente, cabe destacar:

Eleccin automtica del tipo de las variables


Dimensionamiento automtico de las matrices
Posibilidad de manejar nmeros complejos de modo intuitivo
Posibilidad de funcionamiento en modo interpretado (chequeo de sentencias)
Entorno de depuracin integrado

15. Sentencias de control en Matlab.-

Se muestra a continuacin la sintaxis de las principales sentencias de control de Matlab:

Bucles:

for variable = expresion


sentencias
end
while expresin
sentencias
end

Sentencia condicional if/else/elseif:

if expresin
sentencias
elseif expresin
sentencias
elseif expresin
sentencias
else
sentencias
end

Nota: las clasulas else y elseif no son necesarias.

16. Creacin de funciones definidas por el usuario.-

Deseamos crear una funcin de Matlab que, a partir de una matriz dada, genere una
matriz cuadrada aadiendo filas o columnas de ceros, segn sea necesario. La funcin
se llamar cuadra y se guardar en el archivo cuadra.m (mismo nombre que el nombre
de la funcin creada). Con la opcin File->New->Function se abre el editor/depurador
de cdigo Matlab, similar a la Figura 2, pero que ya trae embebida la notacin
correspondiente, con las palabras claves: function y end.

15
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

El cdigo de nuestra funcin ser el siguiente:

%convierte una matriz en cuadrada aadiendo ceros


function b=cuadra(a)
b=a; %copia matriz entrada
[x,y]=size(b);

if x>y
b(:,y+1:x)=0; %aade columnas
elseif y>x
b(x+1:y,:) =0; %aade filas
end

Si analizamos un poco en detalle este cdigo, encontraremos elementos que


necesariamente deberemos incluir en cualquier funcin que deseemos crear:

Lnea de comentario: es importante que la primera lnea de una funcin contenga


un texto explicativo, ser la lnea que se muestre al solicitar ayuda. Debe
comenzar con el smbolo %.
Declaracin de la funcin: es obligatoria en cualquier funcin, especifica los
parmetros de entrada y salida. En el ejemplo:

function b = inversa(a)

Palabra clave Parmetros de Nombre de la Parmetros de


salida funcin entrada

o Si hubiera habido ms de un parmetro de entrada, se habran separado


por comas en la declaracin; por ejemplo:

function b = inversa (a1, a2)

o Y si hubiera habido ms de un parmetro de salida, se habran


introducido entre corchetes en la declaracin; por ejemplo:

function [b1, b2] = inversa (a1, a2)

Cuerpo de la funcin: contiene todas las operaciones que deseemos realizar.

Si hemos incluido la primera lnea de comentario en nuestra funcin, al solicitar la


ayuda de la funcin que acabamos de crear debemos obtener un resultado como el
siguiente:

>> help cuadra


convierte una matriz en cuadrada aadiendo ceros

16
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

A continuacin probaremos la funcin con una matriz cualquiera:


a = [1 2; 3 4; 5 6]
a =
1 2
3 4
5 6
b = cuadra(a)
b =
1 2 0
3 4 0
5 6 0

Vemos cmo se obtiene el resultado que esperbamos.

17. Representacin grfica de curvas.-

La construccin de grficos en MATLAB es una ms de las facilidades del sistema. A


travs de comandos simples se puede obtener grficos bidimensionales o
tridimensionales con cualquier tipo de escala y coordenada. Existe en MATLAB una
vasta biblioteca de comandos grficos.

Algunos de los comandos para dibujar grficos bidimensionales son los siguientes:

Dibujo de grficas:

plot Dibujo lineal.


loglog Dibujar en escala loglog.
semilogx Dibujar en semilog.
semilogy Dibujar en semilog.
fill Disear polgono 2D.
polar Dibujar en coordenadas polares.
bar Grfico de barras.
stem Secuencia discreta.
stairs Dibujar en grados.
hist Dibujar un histograma.
rose Dibujar un histograma en ngulos.
compass Dibujar en forma de flechas.
feather Dibujar en forma de pluma
fplot Dibujar una funcin.
comet Plotear con trayectoria de cometa.
ezplot Plotear una curva paramtrica
hold on/off Mantener los objetos existentes

Por ejemplo, escriba el siguiente archivo de instrucciones y muestre el grfico


resultante:
close all
17
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

clear all
clc
%Definiendo los vectores de tiempo y las
%funciones de seno y coseno.
t=0:0.05:10;
y=sin(t);
z=cos(t);
%Graficando en una sola grafica ambas %curvas
figure(1)
plot(t,y,'o',t,z,'x')
grid
title('Graficas del seno y
coseno')
xlabel('Seg')
legend('y=seno(t)','z=coseno(t)')
%Graficando en una sola ventana las 2 %curvas
pero en diferentes
graficas
figure(2)
subplot(211)
plot(t,y)
title('Grafica del seno')
xlabel('seg')
ylabel('y=sin(t)')

Observe que el vector t es una particin del dominio 0 t 10 con paso 0.05, mientras
que y, z son vectores que dan los valores del seno y coseno en los puntos de particin.

El programa anterior nos manda a graficar dos funciones trigonomtricas, las cuales
podemos verlas en las grficas de la Figura 3.

La Tabla 3 resume los comandos de representacin grfica.

Tabla 3 Algunos comandos para ploteo en Matlab


Comando Descripcin
[x,y]=ginput(n) Facilita que usando el mouse se obtengan n puntos de una
grfica, y luego retorna las coordenadas x y y en el vector
x y y, que tienen longitud n
grid Pone mallado en el grfico
gtext(texto) Facilita la ubicacin de texto con el mouse
plot(x,y) Genera una grfico del arreglo y versus el arreglo x en
ejes rectilneos
title(texto) Pone texto en el ttulo ubicado en la parte superior central
del grfico
xlabel(texto) Adiciona una etiqueta de texto al eje horizontal (abscisa)
ylabel(texto) Adiciona una etiqueta de texto al eje vertical (ordenada)

18
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Figura 3. Graficas del seno y coseno

19
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Ploteando Grficos Tridimensionales y Contornos

Estos son algunos comandos para realizar grficos tridimensionales y contornos.

plot3 Dibujar en espacio 3D.


fill3 Disear polgono 3D.
comet3 Dibujar en 3D con trayectoria de cometa.
contour Dibujar contorno 2D.
contour3 Dibujar contorno 3D.
clabel Dibujar contorno con valores.
quiver Dibujar gradiente.
mesh Dibujar malla 3D.
meshc Combinacin mesh/contour.
surf Dibujar una superficie 3D.
surfc Combinacin surf/contour.
surfil Dibujar una superficie 3D con iluminacin.
slice Dibujar visualizacin volumtrica.
cylinder Generar cilindro.
sphere Generar esfera.

Si escribimos las siguientes instrucciones podremos ver el siguiente grfico resultante:

close all
clear all
clc
[X,Y] = meshgrid(-2:.1:2, -2:.1:2);
Z = X.* exp(-X.^2 - Y.^2);
mesh(X, Y, Z)

Figura 4. Grafica usando funcin meshgrid

20
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Respuesta en frecuencia pasa-baja y pasa-alta

A continuacin se muestra un ejemplo que da como resultado la Figura 5. En este caso


muestra la respuesta en frecuencia de un filtro pasa-baja y un filtro pasa-alta, ambos de
primer orden. La variable de Laplace s en el dominio de la frecuencia es . La
frecuencia de corte en cada caso es 1/T = 20 rad s-1 = 3.18 Hz.

El script correspondiente se presenta a continuacin.

close all
clear all
clc
T = 0.05; %constante de tiempo [s]
omega = logspace(0,8,100); %vector de frecuencias [rad/s]
H_LP = (T*j*omega+1).^(-1); %filtro pasa-baja
H_HP = 1-H_LP; %filtro pasa-alta

figure(1) % nombre de la figura


clf %limpia la figura actual

subplot(121) % subplot: Amplitud


loglog(omega,abs(H_LP),'-') %Amplitud, filtro pasa-baja
hold on
loglog(omega,abs(H_HP),'--') %Amplitud, filtro pasa-alta
loglog([1 1]/T, [0.01 10], ':') %lnea constante de tiempo
text(1.1/T,0.02,'Constante de tiempo') %texto constante de
%tiempo
title('Respuesta en frecuencia') %ttulo del subplot
xlabel('\omega [rad s^-1]') % etiqueta del eje-x
ylabel ('Amplitude [dB]') %etiqueta del eje-y
legend ('Pasa-baja', 'Pasa-alta') %leyenda en posicin
%estndar
axis ([1 1e3 0.01 10]) %rea visible
escala = -40:20:40;
set(gca,'ytick',10.^(escala/20)) %establecer
set(gca,'yticklabel',escala) %establecer

subplot(122) %subplot: Fase


semilogx(omega,angle(H_LP)*180/pi,'-') %Fase, filtro pasa-
%baja
hold on
semilogx(omega,angle(H_HP)*180/pi,'--') %Fase, filtro pasa-
%alta
grid on
xlabel('\omega [rad s^-1]') % etiqueta del eje-x
ylabel ('Fase [Grad]') % etiqueta del eje-y
axis ([1 1e3 -90 90]) %rea visible
escala = -90:30:90;
set(gca,'ytick',escala) %establecer
set(gca,'yticklabel',escala) %establecer
21
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Figura 5. Respuesta en frecuencia, filtros pasa-baja y pasa-alta

Usando la funcin bode tambin se puede graficar respuestas en frecuencia. El script a


continuacin muestra el uso de la funcin bode.

pasa_baja=tf([1],[0.05 1]);
pasa_alta=1-pasa_baja;
bode(pasa_baja,'b-',pasa_alta,'r--');
grid on;

Figura 6. Respuesta en frecuencia usando la funcin bode, filtros pasa-baja y pasa-alta


22
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

LOS PROCESOS DE DISEO DE INGENIERA Y RESOLUCIN DE


PROBLEMAS, Y SU RELACIN CON MATLAB

El proceso de diseo de ingeniera es el proceso creativo de identificar necesidades y


concebir una solucin para satisfacer esas necesidades. Esta solucin puede ser un
producto, una tcnica, una estructura, un proyecto, un mtodo, o alguna otra cosa
dependiendo del problema.
La resolucin de problemas es el proceso de determinar la mejor accin posible a seguir
en una situacin dada. La naturaleza de los problemas que los ingenieros deben resolver
vara dependiendo de las ramas de la ingeniera. Debido a la diversidad de problemas,
no hay una lista de procedimientos universal que pueda servir para todos los problemas.
Sin embargo, la Tabla 4 resume de manera simple la mayora de los pasos del mtodo
de diseo que los ingenieros usan. Cabe destacar tambin que el proceso de diseo es un
proceso iterativo.

23
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Tabla 4. Pasos para resolver problemas y su relacin con el proceso de diseo de


ingeniera
PROCESO DE RESOLUCIN DE DESCRIPCION
DISEO DE PROBLEMAS
INGENIERA
1. Identificar el problema
FORMULACIN DEL claramente y en
PROBLEMA
trminos generales.
2. Colectar la informacin
necesaria y datos
necesarios para resolver
el problema.
3. Buscar soluciones Superar obstculos para pensamiento
DISEO creativas. creativo.
CONCEPTUAL
4. Elegir un criterio para Incluir aspectos financieros.
evaluar alternativas.
5. Moverse de ideas a Los diseos preliminares evolucionan a
DISEO diseos preliminares travs del anlisis y sntesis.
PRELIMINAR
(incluyendo modelado). Los modelos facilitan el proceso de diseo.
6. Descartar las Un modelo simplifica un sistema o proceso
soluciones (diseos) tal que pueda ser mejor estudiado, entendido,
menos prometedores y usado en un diseo.
usando evaluaciones Modelos matemticos: Una o ms
simples. ecuaciones que describen un sistema fsico.
Modelos de simulacin por computadora:
Permiten a los ingenieros examinar sistemas
complejos. Tales modelos pueden incorporar
modelos matemticos. Tales modelos pueden
estar sujetos a diferentes condiciones de
7. Descartar operacin.
DISEO progresivamente,
DETALLADO Modelos fsicos: Representan el mtodo ms
usando evaluaciones antiguo de diseo. Tienen la ventaja que
detalladas. permiten a l ingeniero estudiar un sistema
con poca o casi nada de conocimiento previo
de su comportamiento. Usualmente son
hechos a escala.
Se pueden modelar sistemas existentes o
propuestos.
8. Evaluar y seleccionar la Uso de prototipos para probar la operacin
opcin preferida luego del diseo. Modelos escala pueden tambin
de una evaluacin ser usados. Modelos matemticos y
detallada de la lista simulaciones por computadora no son
corta. exactos para entender las complejidades
inherentes.
9. Preparar reportes, Dibujos de ingeniera (planos).
planes y Comunicaciones escritas (memorndums).
especificaciones Comunicacin oral.
(planificacin de Programacin y planificaciones de un
proyectos). proyecto de diseo.

10. Implementar el diseo Proceso de producir o construir un


IMPLEMENTACIN (implementacin de dispositivo fsico, producto o sistema.
proyectos).
24
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

En el caso del diseo de sistemas de control automtico basados en modelos, se pueden


usar los pasos del proceso de diseo en ingeniera antes destacados en la Tabla 4.
Siendo que este diseo depende estrictamente del modelamiento del sistema a controlar,
la Tabla 5 muestra un resumen del proceso de modelado.

Tabla 5. Pasos para el proceso de modelado

1. Formular el modelo. Qu preguntas se desean responder?


2. Construir las ecuaciones. Dibujar un bosquejo (DCL) y etiquetar las
variables necesarias.
Determinar qu principios fundamentales son
aplicables
3. Simplificar las ecuaciones. Lo suficiente como para obtener la informacin
requerida. Enunciar las suposiciones hechas.
4. Resolver las ecuaciones Simulacin computacional va clculo numrico
uso de Matlab (u otros)
Si se resuelve el problema con un programa, chequear
a mano los primero resultados de una versin simple
del problema. Verificar las dimensiones y unidades e
imprimir los resultados de pasos intermedios.
5. Evaluar e interpretar Verificacin del modelo (anlisis) uso de
Matlab (u otros)
Llevar a cabo una verificacin de la realidad de la
respuesta obtenida. Tiene sentido? Estimar los rangos
del resultado esperado y compararlo con la respuesta.
No enunciar la respuesta con gran precisin a menos
que se justifique por lo siguiente:
La precisin de la informacin dada.
Las supuestos simplificadores-
Los requerimientos del problema.
Interpretar la matemtica. Si la matemtica produce
mltiples respuestas, no descarte algunas sin
considerar lo que significan. Las matemticas tratan de
decir algo, y muchas veces se pierde la oportunidad de
descubrir ms sobre el problema.
6. Si la validacin del modelo no
llega a resultados esperados,
retornar al paso 3.
7. Disear el controlador Uso de Matlab (u otros)

25
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

HERRAMIENTAS DE MATLAB PARA ANLISIS Y DISEO DE SISTEMAS


DE CONTROL

Matlab cuenta con un amplio grupo de funciones que resultan muy tiles tanto para el
anlisis de sistemas lineales (y no lineales) como para el diseo de sistemas de control.
Muchas de las tareas de anlisis y diseo asociadas a dichos sistemas implican
operaciones de matrices, aritmtica de nmeros complejos, determinacin de races,
conversiones de modelos y ploteo de funciones complicadas. Matlab fue diseado para
facilitar la realizacin de muchas de estas operaciones.

Esta parte del laboratorio se ha de dividir en dos partes:


fundamentos: que comprende el modelado de sistemas lineales y representacin
de modelos en Matlab, y
procedimiento: que comprende la creacin/conversin/operaciones de modelos
en Matlab, herramientas de anlisis de modelos en Matlab (funciones para
anlisis y para simulaciones de respuesta en el tiempo y la frecuencia), y otras
herramientas de anlisis y diseo (ltiview y sisotool).

1. Fundamentos.-

1.1. Modelado de Sistemas.-

El diseo de sistemas de control empieza con el modelamiento de sistemas reales. Estos


modelos, que son representaciones matemticas de cosas tales como procesos qumicos,
maquinaria y circuitos elctricos, entre otros, sirven para estudiar la respuesta dinmica
de los sistemas reales. Algunas tcnicas matemticas empleadas por Matlab para
analizar estos sistemas suponen, procesos que son fsicamente realizables, lineales e
invariantes en el tiempo (LTI, linear time invariant). As los modelos que los
representan estn sujetos a restricciones similares. En algunos casos los sistemas no
lineales pueden bien aproximarse con funciones LTI; ya en los casos de gran no
linealidad, Matlab tambin brinda funciones apropiadas. En el desarrollo de los
laboratorios nos restringiremos a trabajar con sistemas LTI.

Dado que los sistemas LTI pueden ser representados usando modelos en la forma de
funciones de transferencia o ecuaciones de espacio de estados, Matlab trabaja con
dichos modelos, haciendo posible el empleo de tcnicas tanto clsicas como modernas
en el anlisis y diseo de sistemas de control. Cualquiera de estas formas de modelos se
puede expresar en forma de tiempo continuo (analgicas) o de tiempo discreto
(digitales). Las funciones de transferencia se pueden expresar como un cociente de
polinomios o una de sus dos formas factorizadas: cero-polo-ganancia o fracciones
parciales. Los modelos de sistemas de la forma espacio estados son idneos para Matlab
porque son una expresin basada en matrices.

Para ilustrar las diversas formas en las que podemos formular modelos, usaremos el
ejemplo clsico de un sistema resorte-masa-amortiguador, el cual se muestra en la
Figura 7. En este sistema tres fuerzas actan sobre una masa m: una fuerza de entrada
que depende del tiempo u(t), un resorte con constante de rigidez k y un amortiguador
viscoso con constante de amortiguacin b. La posicin de la masa en funcin del tiempo

26
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

est representada por x(t). Conectamos a la masa un potencimetro de medicin que


proporciona un voltaje de salida y(t) proporcional a x(t), con constante de
proporcionalidad p. La ecuacin de movimiento de la masa m est dada por la ecuacin
diferencial de segundo orden:

y la ecuacin para el potencimetro es:

La ecuacin para el potencimetro es un ejemplo de situacin en la que la variable que


representa la dinmica del sistema (x en este caso) no es variable de salida (y en este
caso). Juntas estas dos ecuaciones proporcionan un modelo matemtico del
comportamiento dinmico del sistema. Si integramos la ecuacin de movimiento
podremos determinar el movimiento de la masa en funcin del tiempo. Es por ello que
un anlisis as se denomina anlisis en el dominio del tiempo.

Figura 7. Sistema resorte-masa-amortiguador

1.2. Representacin de Modelos usando Funciones de Transferencia.-

El anlisis de los sistemas LTI con frecuencia implica determinar ciertas propiedades
dinmicas como estabilidad y respuesta en frecuencia, que no son fciles de determinar
usando anlisis en el dominio del tiempo. Para estos anlisis, muchas veces hacemos
uso de la transformada de Laplace, as se aplica la transformada de Laplace a la
ecuacin en el dominio de tiempo para luego poder analizar el sistema en el dominio de
la frecuencia.

La transformada de Laplace de nuestra ecuacin diferencial del resorte-masa-


amortiguador anterior es:

donde s es un variable compleja ( + j ) llamada variable de Laplace. Esta ecuacin se


debe reacomodar para dar una funcin de transferencia H(s), que relaciona el
movimiento de salida del sistema X(s) con la fuerza de entrada U(s):

la funcin de transferencia del potencimetro es simplemente:

27
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Con frecuencia se usan diagramas de bloques para mostrar la relacin entre las
funciones de transferencia y las variables de entrada y salida de un sistema.

Suponiendo para nuestro ejemplo de resorte-masa-amortiguador que m=1, b=4, k=3 y


p=10, el diagrama de bloques de la Figura 8 representa el sistema. El primer bloque
representa el modelo de la planta, que es parte del sistema que se controla, y el segundo
bloque representa el modelo de medicin.

Figura 8. Diagrama de bloques: modelo de la planta y modelo de medicin

Tambin podemos combinar los bloques en un solo bloque de modelo del sistema como
se muestra en la Figura 9.

Figura 9. Diagrama de bloques

Esta funcin de transferencia se expresa como un cociente de dos polinomios, donde el


polinomio del numerador es simplemente un escalar. En el caso de sistemas que tienen
una sola entrada y una sola salida (SISO, single-input single-output), la forma de
escribir funciones de transferencia es:

1.3. Representacin de Modelos usando la Forma Cero-Polo-Ganancia.-

Muchas veces el numerador y el denominador de una funcin de transferencia se


factorizan para obtener la forma cero-polo-ganancia, que es:

Por ejemplo, la forma cero-polo-ganancia de la funcin de transferencia:

28
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

es:

Esta forma es de especial utilidad, pues muestra directamente las races de los
polinomios del numerador y del denominador (los ceros y los polos de sistema
respectivamente).
Por ltimo, las funciones de transferencia tambin pueden escribirse en la forma de
expansin de fracciones parciales, o residuo, que es:

Esta forma es til para determinar la transformada inversa de Laplace y para disear
ciertos tipos de filtros.

1.4. Representacin de Modelos usando la Forma Espacio de Estados.-

Bsicamente consiste en expresar una ecuacin diferencial de orden superior como un


conjunto de ecuaciones diferenciales de primer orden acopladas. Usando nuestro
ejemplo anterior de resorte- masa-amortiguador cuya ecuacin de movimiento era:

Podemos definir:

A continuacin rescribimos la ecuacin diferencial de segundo orden como un conjunto


de ecuaciones diferenciales acopladas:

y la ecuacin de medicin como:

Usando notacin de matrices, este modelo de sistema puede escribirse como un modelo
de espacio de estados:

donde representa el vector de estados, el vector de entradas y el vector de salidas.


Las matrices y son definidas apropiadamente. Para el ejemplo resulta:

29
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

2. Procedimiento.-

2.1. Creacin de Modelos en Matlab

2.1.1. Funciones de Transferencia en Tiempo Continuo.-


La funcin tf crea funciones de transferencia. La funcin tf necesita dos vectores,
uno conteniendo los coeficientes del polinomio numerador tomados en orden
descendente y otro conteniendo similar informacin para el polinomio denominador.
Como ejemplo creemos la siguiente funcin de transferencia.

En el script:

K0=2; T0=4;
num0=[K0 0]; den0=[T0 1];
H0=tf(num0,den0);

En la lnea de comandos, para mostrar :


>>H0
H0 =
2s
-----
4s + 1
Continuous-time transfer function.

Un modelo LTI puede contener un retardo de tiempo, como en el siguiente modelo:

Este sistema es creado por:

K0=2; T0=4;
num0=[K0 0]; den0=[T0 1];
H0=tf(num0,den0);
Td=1;
Hd=tf(num0,den0,'InputDelay',Td)

Excepto por el trmino de retardo de tiempo, Hd es igual a H0 definido anteriormente.

En la lnea de comandos, para mostrar :


>>Hd
Hd =
2s
exp(-s) * -----
4s + 1
Continuous-time transfer function.

30
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Supongamos que se ha creado una funcin de transferencia y se desea obtener


informacin detallada acerca del modelo. La funcin tfdata muestra la informacin,
que est almacenada en los arreglos.
Como ejemplo, las siguientes expresiones muestran los polinomios conteniendo los
coeficientes correspondientes al numerador y el denominador de la funcin de
transferencia Hd(s) creada anteriormente:

En el script:

[numHd,denHd,Ts]=tfdata(Hd,'v')

Aqui, Ts es el periodo de muestreo, el cual es cero para modelos en tiempo continuo


pero diferente de cero para modelos en tiempo discreto.

>> [numHd,denHd,Ts]=tfdata(Hd,'v')
numHd =
0 1
denHd =
1 1
Ts =
0

Otra forma de crear funciones de transferencia es definiendo la variable s usando la


funcin tf, y escribiendo la funcin de transferencia directamente como un cociente de
polinomios de s; as en el script:

s = tf('s');
H = exp(-s)*(2*s)/(4*s+1);

En la lnea de comandos, para mostrar :

>> H
H =
2 s
exp(-1*s) * -------
4 s + 1
Continuous-time transfer function.

Para ms informacin sobre funciones de transferencia, en la lnea de comandos,


teclear:
>> help tf

2.1.2. Forma Cero-Polo-Ganancia en Tiempo Continuo.-


La funcin zpk crea modelos cero-polo-ganancia, se deben dar como entradas el vector
de ceros, polos y la ganancia.

En el script:
H=zpk([-6 1 1],[-5 1],3);
31
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

>> H
H =
3 (s+6) (s-1)^2
---------------
(s+5) (s-1)
Continuous-time zero/pole/gain model.

Tambin se puede usar la variable s para definir el modelo como una funcin racional
en s.

En el script:

s=zpk('s')
H=2*1/(s-1)*(s+2)

>> s =

s
Continuous-time zero/pole/gain model.

H =
2 (s+2)
-------
(s-1)
Continuous-time zero/pole/gain model.

2.1.3. Modelo en Espacio Estado Continuo.-


La funcin ss crea modelos en espacio estado lineal de la forma:

como se ilustra en el siguiente ejemplo. Dado el siguiente modelo en espacio estado


lineal:

Este modelo es creado por:

A=[0,1;-4,-2]; B=[0;2]; C=[1,0]; D=[0];


ss1=ss(A,B,C,D);

En la lnea de comandos, para mostrar :


>> ss1

ss1 =

32
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

a =
x1 x2
x1 0 1
x2 -4 -2

b =
u1
x1 0
x2 2

c =
x1 x2
y1 1 0

d =
u1
y1 0
Continuous-time state-space model.

a, b, c, y d, son nombres por defecto, son usados nicamente con el objetivo de mostrar
los datos, ellos no existen en el workspace de Matlab. Para obtener los parmetros del
sistema y darles nombres especficos, en el script:

[A1,B1,C1,D1,Ts]=ssdata(ss1)

La respuesta de Matlab ser:

>> [A1,B1,C1,D1,Ts]=ssdata(ss1)

A1 =
0 1
-4 -2

B1 =
0
2

C1 =
1 0

D1 =
0

Ts =
0

33
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

2.2. Conversiones entre Modelos en Matlab

2.2.1. Conversin de Modelos de Espacio Estados a Funcin de Transferencia.-

La funcin tf tambin convierte modelos en espacio estado a la correspondiente


funcin de transferencia de acuerdo a la frmula:

En el siguiente ejemplo un modelo continuo en espacio estado es transformado en


la correspondiente funcin de transferencia continua:

A=-1; B=2; C=3; D=4;


sscont1=ss(A,B,C,D);
Hcont1=tf(sscont1)

La respuesta de Matlab es:

Hcont1 =
4 s + 10
--------
s + 1
Continuous-time transfer function.

Ver tambin ss2tf.

2.2.2. Conversin de Funcin de Transferencia a Modelo de Espacio Estados.-

La funcin ss convierte una funcin de transferencia a un modelo en espacio estado.


Pero esta conversin no es nica, dado que hay un infinito nmero de modelos en
espacio estado, los cuales tienen la misma funcin de transferencia. Entonces, ss
escoge una de esas realizaciones, llamada forma cannica controlable.

Ver tambin tf2ss.

2.2.3. Conversin de la Funcin de Transferencia Polinmica a Fracciones


Parciales.

La funcin residue determina los valores de los vectores r, p, k que contienen


los valores de residuo, los polos y los trminos directos de la expansin de fracciones
parciales. Las entradas son los coeficientes de los polinomios B, A del numerador y
denominador de la funcin de transferencia, respectivamente.
Como ejemplo realicemos la expansin de fracciones parciales de esta funcin de
transferencia de sistema:

34
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

se puede calcular con estas instrucciones:

B=[10];
A=[1,4,3];
[r,p,k]=residue(B,A);

La respuesta de Matlab estar dada por:

>> [r,p,k]=residue(B,A)
r =
-5
5
p =
-3
-1
k =
[]

Por tanto, la expansin en fracciones parciales de nuestra funcin de transferencia


del sistema es:

2.2.4. Conversin de la Funcin de Transferencia Polinmica a Funcin de


Transferencia Cero-Polo-Ganancia.-

La funcin tf2zp determina los ceros(z), polos (p) y la ganancia correspondiente


(k) de la funcin de transferencia cero-polo-ganancia usando los coeficientes en orden
descendente de potencias de s, del numerador y denominador de la funcin de
transferencia polinmica que se va a convertir.
La funcin de transferencia polinmica:

puede convertirse en una funcin de transferencia cero-polo-ganancia usando


estas instrucciones:

num=[10];
den=[1,4,3];
[z,p,k]=tf2zp(num,den);

La respuesta de Matlab estar dada por:

z =
Empty matrix: 0-by-1

p =
-3
35
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

-1

k =
10

Por tanto, la funcin de transferencia cero-polo-ganancia es: sistema es:

2.2.5. Conversin de la Funcin de Transferencia Cero-Polo-Ganancia a Funcin


de Transferencia Polinmica.-

La funcin zp2tf determina los vectores num y den que contienen los coeficientes,
en orden descendente de potencias de s, del numerador y denominador de la funcin de
transferencia polinmica, p es un vector columna que contiene las posiciones de polos
de la funcin de transferencia cero-polo-ganancia, z es una matriz que contiene las
posiciones de ceros correspondientes, con una columna para cada salida de un sistema
de mltiples salida, k es la ganancia de la funcin de transferencia cero-polo-ganancia.
La funcin de transferencia cero-polo-ganancia:

puede convertirse en una funcin de transferencia polinmica usando estas


instrucciones:

z=[]
p=[-3 -1];
k=10;
[num,den]=zp2tf(z,p,k);

La respuesta de Matlab estar dada por:

num =
0 0 10
den =
1 4 3

Por tanto, la funcin de transferencia polinmica del sistema es:

En resumen Matlab ofrece las siguientes funciones de conversin:

TF ZPK SS
TF:[num,den]= zp2tf(z,p,k) ss2tf(A,B,C,D,iu)
ZPK:[z,p,k]= tf2zp(num,den) ss2zp(A,B,C,D,iu)
SS:[A,B,C,D]= tf2ss(num,den) zp2ss(z,p,k)

36
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

2.3. Operaciones con Modelos (en serie, paralelo o realimentados).-

Un modelo puede ser representado por un bloque con entradas y salidas ya sea
conteniendo una funcin de transferencia o un modelo en espacio estado dentro de l.
Las funciones series, parallel, y feedback pueden ser usadas para realizar
manipulaciones bsicas de bloques como se mostrara a continuacin.

Como ejemplo asuma dadas las siguientes funciones de transferencia:

Primero creemos los dos sistemas anteriores:

k1=1; k2=2; k3=3; k4=4;


Ha=tf(k1,[1,k2]);
Hb=tf(k3,[1,k4]);

a. Conexin en Serie (Producto).-

Conectemos Ha(s) y Hb(s) en serie, eso significa que Hser(s) es Ha(s)*Hb(s):

Hser=series(Ha,Hb)

La respuesta de Matlab:

Hser =
3
-------------
s^2 + 6 s + 8
Continuous-time transfer function.

b. Conexin en Paralelo (Suma).-

37
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

A continuacin, Ha(s) y Hb(s) son conectados en paralelo, lo cual significa que


Hpar(s) es Ha(s) + Hb(s):

Hpar=parallel(Ha,Hb)

La respuesta en Matlab es:

Hpar=
4 s + 10
-------------
s^2 + 6 s + 8

c. Conexin usando Lazo de realimentacin.-

Finalmente, Ha(s) y Hb(s) son conectados en un lazo realimentado negativo con Ha(s) en
el lazo directo y Hb(s) en el lazo de realimentacin:

feedbsign=-1; Hfeedb=feedback(Ha,Hb,feedbsign)

Feedbsign es el signo de la realimentacin, y lo establecemos como -1 o 1. La funcin


de transferencia Hfeedb(s) est dada por:

La respuesta de Matlab est dada por:

Hfeedb =
s + 4
--------------
s^2 + 6 s + 11
Continuous-time transfer function.

38
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

2.4. Herramientas de Anlisis de Modelos LTI.-

Como punto de partida de esta seccin definamos una funcin de transferencia continua,
H1c(s). Tomaremos H1c(s) como:

Y creamos H1c(s) con:

n1=[1,0.5]; d1=[1,2,4];
H1c=tf(n1,d1);

La respuesta de Matlab es:

>> H1c
H1c =
s + 0.5
-------------
s^2 + 2 s + 4
Continuous-time transfer function.

2.4.1. Anlisis de la dinmica del modelo.

An sin conocer las respuestas a diversas seales de prueba es posible analizar diversas
propiedades de un sistema dinmico, tales como estabilidad, frecuencias de resonancia,
y caractersticas del estado estacionario y transitorio.

a. Amplificacin del estado estacionario.-

El comando dcgain permite determinar la ganancia de un sistema cuando s=0. Los


sistemas con comportamiento integral dominante tienen una ganancia infinita.

ganancia_dc=dcgain(H1c);

La respuesta de Matlab es:

>> ganancia_dc
ganancia_dc =
0.1250

b. Ancho de banda.-

Otro valor interesante de un sistema dinmico es su ancho de banda, que se define como
la primera frecuencia (en rad/s) en la que la ganancia cae por debajo del 70.79% (-3 dB)
de su valor en estado estacionario (ganancia DC). El comando en Matlab es
bandwidth.

ancho_banda=bandwidth(H1c);
39
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

La respuesta de Matlab es:

>> ancho_banda
ancho_banda =
11.4812

c. Polos, Autovalores y Ceros.-

Podemos calcular los polos de un modelo LTI con el siguiente comando:

p=pole(H1c)

La respuesta Matlab es:

p=
-1.0000 + 1.7321i
-1.0000 - 1.7321i

Para un modelo en espacio estado anlogamente podemos calcular los autovalores


con eig.

[A,B,C,D]=ssdata(H1c);
p0=eig(A);

La respuesta Matlab es:

p0 =
-1.0000 + 1.7321i
-1.0000 - 1.7321i

tzero calcula ceros. Aqu se muestra un ejemplo basado en H1c(s):

z=tzero(H1c)

La respuesta de Matlab es:


z=
-0.5000

d. Distribucin de polos y ceros.-

Con pzmap podemos calcular y graficar tanto los polos y los ceros. Omitiendo los
parmetros de retorno solamente grafica los polos y los ceros en el plano complejo:

[pol,zer]=pzmap(H1c); %retorna los polos y ceros de H1c


figure(1)
pzmap(H1c); %grafica los polos y ceros de H1c

40
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Figura 10. Grafica de ubicacin de polos y ceros en el plano complejo generada usando
la funcin pzmap

Los polos y autovalores siempre son nmeros reales y/o complejos conjugados.

e. Frecuencias naturales y amortiguamiento.-

El comando damp calcula el factor de amortiguamiento relativo , y la frecuencia


natural no amortiguada, 0, para los polos del sistema. Se sabe que dichos polos estn
dados por las races de la ecuacin caracterstica (sistema de 2do orden).
(s)=s2 + 20s + 02

Aqu tenemos un ejemplo:

damp(H1c)

La respuesta de Matlab es:

Eigenvalue Damping Freq. (rad/s)


-1.00e+000 + 1.73e+000i 5.00e-001 2.00e+000
-1.00e+000 - 1.73e+000i 5.00e-001 2.00e+000

2.4.2. Respuesta en el dominio del tiempo.-

Como regla general estamos particularmente interesados en las respuestas a ciertas


seales de entrada, tales como impulso unitario o escaln unitario. El toolbox de diseo
y anlisis de sistemas de control del Matlab ofrece, entre otras, las siguientes funciones:
respuesta a las condiciones iniciales (initial), respuesta impulsiva (impulse),
respuesta al escaln unitario (step). Ciertas seales de entrada se pueden generar con
gensig, y lsim es una funcin ms general que calcula la respuesta en el tiempo para
seales arbitrarias.
41
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

a. Respuesta a las condiciones iniciales.-

La respuesta a las condiciones iniciales describe el comportamiento del sistema para


determinados valores iniciales del vector de estados xo y se conoce como respuesta libre.

Se calcula usando el comando initial:

H1c_ss=ss(H1c);
Xo=[0 1];
figure(1)
initial(H1c_ss,Xo); %grafica la respuesta en el tiempo a las
%condiciones iniciales Xo
[y,t,x]= initial(H1c_ss,Xo); %permite obtener los vectores
%correspondientes a la respuesta libre del sistema

Figura 11. Grafica de la respuesta a las condiciones iniciales usando la funcin


initial

b. Respuesta al impulso unitario.-

La respuesta al impulso de un sistema se define como la respuesta a la excitacin del


sistema con una entrada Dirac (t ). El comando impulse simula la respuesta al mpulso
unitario en Matlab:

Tf=10;
figure(1)
impulse(H1c,Tf); %grafica la respuesta al impulso unitario
[y,t,x]= impulse(H1c); %permite obtener los vectores
%correspondientes a la respuesta impulsiva del sistema

42
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Figura 12. Grafica de la respuesta al impulso unitario usando la funcin impulse

c. Respuesta al escaln unitario.-

Podemos simular la respuesta escaln de uno o varios modelos LTI con step. La
entrada escaln es entonces unitaria (la altura del escaln es uno). Simulemos H1c desde
t=0 hasta Tf=10 segundos:

Tf=10;
step(H1c,Tf)

Figura 13. Grafica de la respuesta al escaln unitario usando la funcin step

Tambin podemos almacenar la respuesta simulada, y, i el vector de tiempo, t, mediante


el uso de argumentos de retorno (izquierda):
43
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Tf=10;
[y,t]=step(H1d,Tf);

En este caso no se muestra ningn grafico en pantalla.

d. Respuesta a cualquier seal de entrada.-

lsim es una funcin mas general de simulacin ya que acepta una seal de entrada
cualquiera, no necesariamente un salto o un impulso. Para generar la seal de entrada
podemos usar gensig, que produce una onda senoidal, o una onda cuadrada, o pulsos
peridicos.
Como ejemplo simulemos H1c con una entrada sinusoidal, u, con un periodo Tp=0.5,
tiempo final Tf=10, y un paso Tstep=0.01:

Tp=0.5; Tf=10; Tstep=0.01;


[u,t]=gensig('sin',Tp,Tf,Tstep);
figure(1)
lsim(H1c,u,t);

Figura 14. Grafica de la respuesta a una entrada sinusoidal usando las funciones
gensig y lsim

Otros generadores de seal son square, sawtooth, and stepfun.

En resumen Matlab ofrece los siguientes comandos para simular la respuesta de un


sistema en el dominio del tiempo:

initial(sys,xo,t) Respuesta a las condiciones iniciales


impulse(sys,t) Respuesta al impulso unitario
step(sys,t) Respuesta al escaln unitario
lsim(sys,u,t,xo) Respuesta a una entrada arbitraria
gensig(typ,tau) Generador de seales

44
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

2.4.3. Respuesta en el dominio de la frecuencia.-

Es importante para el ingeniero de control entender el comportamiento del sistema en el


dominio de la frecuencia: a menudo las seales de testeo son sinusoidales o se
desconocen los parmetros del sistema. Analizando la respuesta en frecuencia se puede
determinar diversas propiedades del sistema dependientes de la frecuencia: condiciones
estacionarias, ancho de banda, mrgenes de amplitud y fase, estabilidad en lazo cerrado.

a. Clculo de la respuesta en frecuencia.-

Para clculo rpido de las respuestas en frecuencias se pueden usar los comandos
evalfr y freqresp. Para calcular la respuesta en frecuencia de un sistema para una
nica frecuencia se usa evalfr. El comando freqresp permite calcular la respuesta
en frecuencia para varias frecuencias.

Del siguiente script:

sys=tf([3,-1],[-2 1 1])
w=[-j, -2-j,-2+j]
H1=[evalfr(sys,w(1));evalfr(sys,w(2));evalfr(sys,w(3))]
H2=freqresp(sys,w)

En Matlab se obtiene:

>>
sys =
-3 s + 1
-------------
2 s^2 - s - 1
Continuous-time transfer function.

w =
0 - 1.0000i -2.0000 - 1.0000i -2.0000 + 1.0000i

H1 =
0 - 1.0000i
0.5846 - 0.3231i
0.5846 + 0.3231i

H2(:,:,1) =
0 - 1.0000i
H2(:,:,2) =
0.5846 - 0.3231i
H2(:,:,3) =
0.5846.3231i

45
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

b. Diagrama de Bode.-

El diagrama de Bode presenta la respuesta en frecuencia de un sistema . Esta


respuesta consta de dos grficas, una la ganancia (dB=20 ) y otra la fase
(grados decimales) de . El eje horizontal presenta las frecuencias en escala
logartmica.

En siguiente script muestra el uso de la funcin bode:

sys=tf([3,-1],[-2 1 1])
figure(1)
bode(sys); %grafica diagrama de Bode
grid on;
[mag, fase, w]=bode(sys); %no grafica, solo entrega los
%datos de magnitude, fase y frecuencia

Figura 15. Grafica de la respuesta en frecuencia usando las funcin bode

c. Diagrama de Nyquist.-

Otra forma de representar la respuesta en frecuencia es el diagrama de Nyquist. Se


calculan las partes real e imaginaria de la funcin de transferencia en lazo abierto
para valores de y y se grafican los puntos en el plano complejo.
La curva resultante es el diagram de Nyquist.

sys=zpk([],[-1 -1 -1],4);
figure(1)
nyquist(sys,'r-');

46
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Figura 16. Grafica de la respuesta en frecuencia en el plano complejo (diagrama de


Nyquist), curva obtenida usando la funcin nyquist

Tambin podemos almacenar los valores reales e imaginarios, dado un vector de


frecuencias, y valores reales e imaginarios (y frecuencias usadas por Matlab en el
clculo), mediante el uso de argumentos de retorno (izquierda):

[re,im]=nyquist(sys,w)
[re,im,w]=nyquist(sys)

d. Grficos de respuesta en frecuencia.-

A continuacin se presenta una lista de funciones de Matlab que permiten


generar/calcular respuestas en frecuencia.

bode, bodeplot Grfico Bode de respuesta en frecuencia, magnitud y


fase de la respuesta en frecuencia
nichols, nicholsplot Nichols chart de la respuesta en frecuencia
nyquist, nyquistplot Nyquist plot de la respuesta en frecuencia
Sigma, sigmaplot Grfico de los valores singulares de un sistema
dinmico
evalfr Evala la respuesta en frecuencia en una frecuencia
dada
freqresp Calcula la respuesta en frecuencia dado un vector de
frecuencias

47
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

2.4.4. Anlisis interactivo de modelos usando el Visor LTI.-

El visor LTI (LTI-viewer) hace muy simple realizar simulaciones, graficas de respuesta
en el tiempo y en la frecuencia, para uno o muchos modelos LTI que existan en el
directorio de trabajo. El visor LTI es fcil de ejecutar, por ejemplo:

[num,den]=ord2(10,0.2);
sys=tf(num,den);
h=ltiview({'step';'pzmap'},sys);
ltiview('current',tf(dcgain(sys),[0.3 1]),h)

Figura 17. Ventana que permite visualizar diversas respuestas (tiempo y frecuencia) de
un sistema, funcin ltiview

2.5. Herramienta para diseo de controladores SISO: SISO Tool.-

Matlab cuenta con un GUI para diseo interactivo de compensadores para el caso de
plantas SISO. Este GUI permite disear compensadores SISO usando el lugar
geomtrico de las races, diagrama de Bode, tcnicas de Nyquist y Nichols.

Para usar esta herramiento de diseo de compensadores, basta escribir sisotool en el


script, por ejemplo:

[num,den]=ord2(10,0.2);
sys=tf(num,den);
sisotool(sys);

48
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Figura 18. Ventanas que permiten (a) modificar parmetros para diseo de
compensadores, y (b) visualizar diversas respuestas (tiempo y frecuencia) del sistema en
lazo abierto y lazo cerrado

49
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

EJEMPLO 1

Sea el sistema descrito por la siguiente funcin de transferencia, simular la respuesta en


el tiempo ante diversas entradas.

Respuesta a las condiciones iniciales usando la funcin initial:

clc
clear all
close all
s=tf('s');
G=1/(s^2+4*s+9);
Gss=ss(G);
Xo=[0 1];
[y,t,x]=initial(Gss,Xo); %respuesta libre
figure(1)
subplot(223)
plot(t,x(:,1),'r-',t,x(:,2),'g--');
title('Estados x(t)');
xlabel('t');
ylabel('x(t)');
legend('x_1(t)','x_2(t)');
subplot(221)
plot(t,y);
title('Salida y(t)');
xlabel('t');
ylabel('y(t)')
subplot(122)
plot(x(:,1),x(:,2));
title('Phase Potrait');
xlabel('x_1(t)');
ylabel('x_2(t)')

50
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Figura 19. Respuesta a las condiciones iniciales

Respuesta al escaln unitario y al impulso unitario usando las funciones step e


impulse:
figure(2)
subplot(121)
step(G);
subplot(122)
impulse(G);

Figura 20. Respuesta al escaln e impulso unitario


51
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Respuesta a una entrada arbitraria usando las funciones gensig y lsim:

[u,t]=gensig('square',3,10,0.01);
[y,t]=lsim(G,u,t);
figure(3)
plot(t,y,'r-',t,u,'b--');
legend('y(t)','u(t)')
title('Respuesta a una entrada arbitraria');
xlabel('t');

Figura 21. Respuesta a una entrada arbitraria

EJEMPLO 2

Sea el sistema descrito por la siguiente funcin de transferencia, presentar la respuesta


en frecuencia.

Sea el sistema descrito por la siguiente funcin de transferencia, presentar la respuesta


en la frecuencia para diversos factores de amortiguamiento.

52
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------

Respuesta en frecuencia usando la funcin bode:

clc
clear all
close all

sysPT1=tf(1,[0.05 1]);
figure(1)
subplot(121)
bode(sysPT1,'r-');
sysPT2=tf(10,[1 0.05 10]);
d=[sqrt(2)/2 1.6 3];
for n=1:1:length(d)
sysPT2=[sysPT2; tf(10,[1 d(n) 10])];
grid on;
end;
subplot(122)
hold on
stil={'r-' 'b-' 'k-' 'g--'};
for n=1:1:length(d)+1
bode(sysPT2(n),stil{n});
grid on;
end

Figura 22. Respuesta en frecuencia

53
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO

También podría gustarte