Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SECCININGENIERA MECNICA
REA AUTOMATIZACIN
GUALABORATORIOCONTROLAUTOMTICO
LABORATORIO1
INTRODUCCINALMATLABYSUTOOLBOXDEANLISISYDISEO
DESISTEMASDECONTROL
LIMA - 2015
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
LABORATORIO No1
OBJETIVOS
INTRODUCCIN AL 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.
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
--------------------------------------------------------------------------------------------------------------------
3
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
Entero
Real
Complejo
Carcter
>> 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:
Empecemos ingresando una matriz como una lista de sus elementos. Se sigue las
siguientes reglas:
>> 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.
5
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
La Tabla 1 resume los comandos y smbolos especiales 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:
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.-
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
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
7
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
Matlab ofrece una serie de operadores aritmticos vlidos tanto para clculo matricial
como para clculo escalar:
Suma: +
Resta: -
Producto: *
Divisin: /
Transpuesta:
Potencia: ^
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
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:
Manejo de matrices:
Ejemplos.-
A = [1 2; 3 4]
A =
1 2
3 4
B = inv(A)
B =
-2.0000 1.0000
1.5000 -0.5000
A = zeros(1,4)
A =
0 0 0 0
B = ones(2,3)
B =
1 1 1
1 1 1
9
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
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.
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)
10
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
>>roots(p)
>>q=[ 1 6 11 6];
>>roots(q)
>>pq=conv(p,q)
>>roots(pq)
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.
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
--------------------------------------------------------------------------------------------------------------------
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)
12
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
Recordar tambin que un script no puede tener un nombre con espacios ni guiones
medios.
Ejemplo:
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
--------------------------------------------------------------------------------------------------------------------
Bucles:
if expresin
sentencias
elseif expresin
sentencias
elseif expresin
sentencias
else
sentencias
end
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
--------------------------------------------------------------------------------------------------------------------
if x>y
b(:,y+1:x)=0; %aade columnas
elseif y>x
b(x+1:y,:) =0; %aade filas
end
function b = inversa(a)
16
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
Algunos de los comandos para dibujar grficos bidimensionales son los siguientes:
Dibujo de grficas:
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.
18
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
19
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
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)
20
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
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
pasa_baja=tf([1],[0.05 1]);
pasa_alta=1-pasa_baja;
bode(pasa_baja,'b-',pasa_alta,'r--');
grid on;
23
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
25
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
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.
1. Fundamentos.-
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
--------------------------------------------------------------------------------------------------------------------
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.
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.
Tambin podemos combinar los bloques en un solo bloque de modelo del sistema como
se muestra en la Figura 9.
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.
Podemos definir:
Usando notacin de matrices, este modelo de sistema puede escribirse como un modelo
de espacio de estados:
29
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
2. Procedimiento.-
En el script:
K0=2; T0=4;
num0=[K0 0]; den0=[T0 1];
H0=tf(num0,den0);
K0=2; T0=4;
num0=[K0 0]; den0=[T0 1];
H0=tf(num0,den0);
Td=1;
Hd=tf(num0,den0,'InputDelay',Td)
30
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
En el script:
[numHd,denHd,Ts]=tfdata(Hd,'v')
>> [numHd,denHd,Ts]=tfdata(Hd,'v')
numHd =
0 1
denHd =
1 1
Ts =
0
s = tf('s');
H = exp(-s)*(2*s)/(4*s+1);
>> H
H =
2 s
exp(-1*s) * -------
4 s + 1
Continuous-time transfer function.
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.
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)
>> [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
--------------------------------------------------------------------------------------------------------------------
Hcont1 =
4 s + 10
--------
s + 1
Continuous-time transfer function.
34
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
B=[10];
A=[1,4,3];
[r,p,k]=residue(B,A);
>> [r,p,k]=residue(B,A)
r =
-5
5
p =
-3
-1
k =
[]
num=[10];
den=[1,4,3];
[z,p,k]=tf2zp(num,den);
z =
Empty matrix: 0-by-1
p =
-3
35
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
-1
k =
10
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:
z=[]
p=[-3 -1];
k=10;
[num,den]=zp2tf(z,p,k);
num =
0 0 10
den =
1 4 3
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
--------------------------------------------------------------------------------------------------------------------
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.
Hser=series(Ha,Hb)
La respuesta de Matlab:
Hser =
3
-------------
s^2 + 6 s + 8
Continuous-time transfer function.
37
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
Hpar=parallel(Ha,Hb)
Hpar=
4 s + 10
-------------
s^2 + 6 s + 8
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)
Hfeedb =
s + 4
--------------
s^2 + 6 s + 11
Continuous-time transfer function.
38
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
Como punto de partida de esta seccin definamos una funcin de transferencia continua,
H1c(s). Tomaremos H1c(s) como:
n1=[1,0.5]; d1=[1,2,4];
H1c=tf(n1,d1);
>> H1c
H1c =
s + 0.5
-------------
s^2 + 2 s + 4
Continuous-time transfer function.
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.
ganancia_dc=dcgain(H1c);
>> 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
--------------------------------------------------------------------------------------------------------------------
>> ancho_banda
ancho_banda =
11.4812
p=pole(H1c)
p=
-1.0000 + 1.7321i
-1.0000 - 1.7321i
[A,B,C,D]=ssdata(H1c);
p0=eig(A);
p0 =
-1.0000 + 1.7321i
-1.0000 - 1.7321i
z=tzero(H1c)
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:
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.
damp(H1c)
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
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
--------------------------------------------------------------------------------------------------------------------
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)
Tf=10;
[y,t]=step(H1d,Tf);
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:
Figura 14. Grafica de la respuesta a una entrada sinusoidal usando las funciones
gensig y lsim
44
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
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.
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.-
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
c. Diagrama de Nyquist.-
sys=zpk([],[-1 -1 -1],4);
figure(1)
nyquist(sys,'r-');
46
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
[re,im]=nyquist(sys,w)
[re,im,w]=nyquist(sys)
47
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
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
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.
[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
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
--------------------------------------------------------------------------------------------------------------------
[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');
EJEMPLO 2
52
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO
PONTIFICIA UNIVERSIDAD CATLICA DEL PER
--------------------------------------------------------------------------------------------------------------------
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
53
----------------------------------------------------------------------------------------------------------
LABORATORIO DE CONTROL AUTOMTICO