Uso Octave-MatLAB Control
Uso Octave-MatLAB Control
en control continuo
Tabla de Contenido
Tabla de Contenido ........................................................................................................................ 3
Lista de Figuras .............................................................................................................................. 4
Lista de Tablas ............................................................................................................................... 4
INTRODUCCIN MATLAB / OCTAVE ........................................................................................... 6
INSTALACIN OCTAVE ................................................................................................................ 7
INTERFAZ DE USUARIO OCTAVE ............................................................................................... 9
Ayuda del sistema .................................................................................................................... 10
MANEJO DE VARIABLES Y MATRICES ..................................................................................... 11
Clculos y funciones matemticas bsicas .............................................................................. 13
Generacin de matrices ........................................................................................................... 13
Manipulacin de matrices ......................................................................................................... 14
Ejemplo 1. Uso de comandos bsicos ................................................................................. 17
Ejemplo 2. Solucin de un sistema lineal de ecuaciones ..................................................... 18
Manipulacin de polinomios ..................................................................................................... 18
PROCESOS BSICOS PARA GRFICOS .................................................................................. 20
Ejemplo 3. Ajuste de datos a una lnea recta (Regresin lineal) .......................................... 24
Ejemplo 4. Uso de grficas mltiples (Funciones paramtricas) .......................................... 25
PROGRAMACIN EN OCTAVE .................................................................................................. 27
Ejemplo 5. Dibujo de funciones con parmetros variables ................................................... 30
PACKAGE DE CONTROL ............................................................................................................ 32
Ejemplo 6. Modelamiento matemtico de un sistema masa resorte .................................... 34
Ejemplo 7. Uso package de control en Octave .................................................................... 37
Lista de Figuras
Figura 1 Ventanas de instalacin Octave. Izq. Ventana inicial y Der. Seleccin de packages
adicionales (toolbox) ................................................................................................................... 7
Figura 2 Ventana de comandos Octave. Izq. Inicio normal y Der. Inicio anormal en Win8 .................. 7
Figura 3 Configuracin de la ventana de propiedades de acceso de directo en escritorio para Octave
.................................................................................................................................................... 8
Figura 4 Ventana de comandos en Octave .......................................................................................... 9
Figura 5 Funciones de edicin en la ventana de comandos. ............................................................. 10
Figura 6 Ejecucin comando help plot (arriba) y despliegue de ayuda resultante (abajo). .............. 11
Figura 7 Diferentes resultados del mismo comando ante el mismo comando. .................................. 12
Figura 8 Creacin de variables del tipo matriz. .................................................................................. 13
Figura 9 Ejemplo de edicin matriz .................................................................................................... 14
Figura 10 Ejemplo por vectores de una matriz................................................................................... 15
Figura 11 Ejemplos de algunos tipos de grficas que se pueden obtener con Octave ...................... 21
Figura 12 Resultado de dibujar funcin seno, con fltk (izq) y gnuplot (der)........................................ 22
Figura 13 Grfica de salida Ejemplo 3 ............................................................................................... 25
Figura 14 Grfica de salida Ejemplo 4 ............................................................................................... 26
Figura 15 Resultado uso comando path ............................................................................................ 27
Figura 16 Llamado a ejecucin de scripts almacenados en un directorio de trabajo ......................... 28
Figura 17 Edicin de scripts en Notepad++ ....................................................................................... 29
Figura 18 Grfica de salida Ejemplo 5 ............................................................................................... 31
Figura 19 Sistema masa amortiguador resorte .................................................................................. 34
Figura 20 Grfica resultado Ejemplo 6 ............................................................................................... 36
Figura 21 Marts rover. a) vista exterior, b) compensador en lazo abierto y c) control en lazo cerrador
.................................................................................................................................................. 37
Figura 22 Figuras de resultado control Marts Rover .......................................................................... 40
Figura 23 Linea de comandos cdigo Ejemplo7.m ............................................................................ 41
Lista de Tablas
Tabla 1 Comandos para manejo de memoria .................................................................................... 11
Tabla 2 Comandos de funciones matemticas bsicas ..................................................................... 13
Tabla 3 Comandos de creacin de matrices ...................................................................................... 14
Tabla 4 Comandos y funciones asociadas con matrices ................................................................... 16
AUTOMATIZACIN INDUSTRIAL.
INSTALACIN OCTAVE
Octave es un programa de uso libre, bajo licencia GNU y se encuentra disponible para su
instalacin en la direccin de internet: http://octave.sourceforge.net/. Es recomendable descargar
la versin compatible con Microsoft Studio, la cual est disponible en:
http://sourceforge.net/projects/octave/files/Octave%20Windows%20binaries/
La versin es actualizada continuamente, este documento usa la versin 3.6.4. Una vez descargada
la ltima versin se debe proceder con la instalacin. El instalador de manera predeterminada no
instala todos los Forges disponibles (lo que corresponde a los toolbox en MatLAB), por ello se debe
asegurar que este activa el checkbox activado como aparece en Figura 1 derecha.
Figura 1 Ventanas de instalacin Octave. Izq. Ventana inicial y Der. Seleccin de packages adicionales (toolbox)
Figura 2 Ventana de comandos Octave. Izq. Inicio normal y Der. Inicio anormal en Win8
AUTOMATIZACIN INDUSTRIAL.
Para corregir el problema mostrado Figura 2 en la se debe incluir un parmetro adicional a la lnea
de comandos. Este parmetro consiste en agregar el texto -i, con lo cual se fuerza un
comportamiento interactivo. La forma ms fcil de incluir este parmetro es ir al escritorio de
Windows, seleccionar el icono de Octave ( ), hacer click con el botn derecho del mouse y
seleccionar la opcin Propiedades, con lo cual se despliega la ventana mostrada en la Figura 3. En
el campo Destino se debe incluir el parmetro -i como se muestra en la misma figura, para
finalmente hacer click sobre Aceptar o Aplicar. Cada vez que se desee usar Octave se debe iniciar
Octave desde este acceso directo.
AUTOMATIZACIN INDUSTRIAL.
Informacin de
sistema instalado y
graficador
Lnea de
comandos
Resultado de la
operacin
Identificador
de lnea
Una vez se escribe y se ejecuta un comando es posible repetir un comando anterior si se usan las
flechas de navegacin del teclado ( Comando Anterior, Comando Siguiente), una vez se llama
el comando anterior es posible ejecutarlo si se hace oprime Enter.
La interfaz del tipo lnea de comandos presenta algunas dificultades para usar las herramientas
bsicas de edicin como copiar y pegar, pues los comandos Crtl+V (Pegar), Crtl+X (Cortar) y Crtl+C
(Copiar), estn deshabilitados. El proceso de seleccin tambin no se usa de manera directa con el
mouse como en las aplicaciones Windows normales. Para usar todos los procesos de seleccin y
copiar/pegar, se debe seleccionar la herramienta desde el men de la ventana de comandos,
como se ve en la Figura 5. Para activar el men de ventana se debe hacer click con el botn
derecho del mouse sobre el icono de Octave ( ).
AUTOMATIZACIN INDUSTRIAL.
Para finalizar la aplicacin se puede hacer click sobre el icono de Cerrar, pero esto generalmente
produce un error. La mejor forma de finalizar la aplicacin es usando el comando exit.
AUTOMATIZACIN INDUSTRIAL.
Figura 6 Ejecucin comando help plot (arriba) y despliegue de ayuda resultante (abajo).
Comando
Descripcin
Ejemplo de uso
clc
clc
clear
clear name
clear all
AUTOMATIZACIN INDUSTRIAL.
whos
save
load
variable = load(-asciinombre_archivo)
Whos
Los comandos save y load son fundamentales para realizar procesos de importacin y exportacin
de otros programas. Es comn por ejemplo usar el poder clculo de Octave para realizar tareas de
number-crunching (calculo numrico de alta complejidad), mientras que el proceso de grficacin
usar programas especializados del mbito cientfico como: Voxler, Grapher, Surfer, etc.. u hojas de
clculo como Microsoft Excel.
Cada vez que se introduzca un comando o funcin que arroje como resultado un nmero o matriz
se reproduce el resultado en pantalla mediante al variable del sistema ans o una visualizacin del
resultado obtenido, fenmeno que se conoce como eco. Si el usuario desea anular el eco de las
operaciones se debe terminar todo funcin con el carcter ;, como se ve en el siguiente ejemplo:
Octave maneja todos los valores numricos en formato de matrices. Entonces para Octave los
valores escalares son matrices de 1 x 1. Para definir las matrices de orden superior se debe usar los
caracteres de corchete cuadrado ([ ]), separando cada componente de una misma fila por medio
de espacio ( ) o coma (,), para generar una nueva fila se debe usar el carcter punto y coma
(;). En el siguiente ejemplo se muestra como se introducen matrices en Octave:
AUTOMATIZACIN INDUSTRIAL.
El eco es importante anularlo cuando se realizan operaciones con matrices de gran tamao, pues
Octave consume mucho tiempo y recursos cada vez que necesita imprimir los resultados en
pantalla, lo que hace que la operacin de la aplicacin se vuelva muy complicada.
Operador
Funcin matemtica
Ejemplo de uso
pi
Constante geomtrica pi
pi
3.1416
Multiplicacin
5*3
ans = 15
Divisin
15/3
ans = 3
Suma
5+3
ans = 8
Resta
5-3
ans = 2
Potenciacin
5**3
5^3
ans = 125
**, ^
sin
Seno
sin(0.1)
ans = 0.099
cos
Coseno
cos(0.1)
ans = 0.995
tan
Tangente
tan(0.1)
ans = 0.100
exp
exp(1)
ans = 2.718
log
log(10)
ans = 2.302
Generacin de matrices
Octave posee varias funciones para la generacin de matrices de manera automtica. En la tabla
siguiente se muestra los principales y su uso:
AUTOMATIZACIN INDUSTRIAL.
Comando
Descripcin
Ejemplo de uso
zeros(n,m)
ones(n,m)
eye(n)
rand(n,m)
[i:p:f]
Manipulacin de matrices
Las matrices en Octave pueden ser manipuladas valor por valor, al igual que cualquier lenguaje de
programacin de alto nivel. Para llamar o cambiar un valor se debe usar los parntesis redondos
de la forma variable(i,j), donde i es el nmero de la fila y j el nmero de la columna del elemento
que se desea leer o editar. Es importante anotar que la numeracin de las filas y columnas inicia
desde 1. En la Figura 9 se muestra un ejemplo de la edicin de matrices.
AUTOMATIZACIN INDUSTRIAL.
Si se desea retomar o alterar toda una fila o columna de una matriz se puede usar el carcter :.
Un ejemplo de su uso se muestra en la figura siguiente:
En la tabla siguiente se muestran algunas de las funciones bsicas usadas para el clculo en
matrices.
AUTOMATIZACIN INDUSTRIAL.
Comando
Descripcin
size(matriz)
Ejemplo de uso
find(matriz,
oper, val)
sum(matriz)
Inv(matriz)
matriz
AUTOMATIZACIN INDUSTRIAL.
RESULTADO:
AUTOMATIZACIN INDUSTRIAL.
RESULTADO
Manipulacin de polinomios
Octave utiliza la representacin mediante vectores filas para manipular polinomios. Cada trmino
del vector representa el coeficiente que multiplica a la variable independiente y su posicin de
derecha a izquierda su exponente creciente de uno en uno iniciando en cero. Es as que un vector
[3 0 1 2] equivale a un polinomio: 3x3+x+2, o el polinomio 2x3-x2+5x+2 se representara en Octave
con el vector fila [2 -1 5 2]. Algunas de las funciones disponibles en Octave para la creacin o
manipulacin de polinomios se encuentran descritas en la siguiente tabla
AUTOMATIZACIN INDUSTRIAL.
Comando
Descripcin
roots(vector)
conv(vector1,
vector2)
Ejemplo de uso
AUTOMATIZACIN INDUSTRIAL.
AUTOMATIZACIN INDUSTRIAL.
Figura 11 Ejemplos de algunos tipos de grficas que se pueden obtener con Octave
Octave maneja dos diferentes Graphics backend o libreras de dibujo (gnuplot y fltk), las cuales
cuando es instalada la aplicacin, se permite seleccionar cual desea usar por defecto. Es posible
cambiar la librera si se usa la funcin graphics_toolkit(nombre_libreria). En esencia la
diferencia radica en el consumo de memoria, mientras fltk tiene unos requerimientos de memoria
AUTOMATIZACIN INDUSTRIAL.
muy bajos, gnuplot al poseer una interfaz de usuario ms completa requiere menos recursos del
sistema (ver Figura 12).
Figura 12 Resultado de dibujar funcin seno, con fltk (izq) y gnuplot (der)
En la siguiente tabla se hace un breve resumen de los comandos bsicos de dibujo y sus
parmetros de configuracin
AUTOMATIZACIN INDUSTRIAL.
Comando
h = plot(vectorx,
vectory, param)
title(nombre)
Descripcin
Funcin que crea una nueva grfica en 2D, usando como datos en x vectorx y datos en
y vectory. Si vectory tiene varias columnas se dibujara una curva por cada una. Se
dibuja segn los parmetros param. La funcin plot devuelve un identificador nico
que puede ser usado para configurar individualmente sin tener que ser la figura actual
(h).
El termino param es un texto que configura la forma como Octave dibuja la grfica.
Entre los parmetros de dibujo estn:
Color lnea: y (amarillo), m (magenta), c(cian), r(rojo), g(verde), w(blanco) y k (negro)
Carcter de punto: . Puntos, o crculos, x cruces, + cruces, * asteriscos, s
cuadrados, d diamantes.
Tipo de lnea: -continua, : puntos, -. punto, -- trazos.
Ancho de lnea: se debe introducir la palabra clave linewidth y luego el ancho
deseado.
Tamao de marcas: se debe introducir la palabra clave markersize y luego el tamao
deseado.
Ubica el texto nombre como ttulo de la figura que se esta dibujando
xlabel(nombre)
ylabel(nombre)
Ubica el texto nombre al lado izquierda del eje de las y de la grfica actual
legend(nombre1, Crea un cuadro en el cual se define la leyenda de lectura para la grfica actual, usando
nombre2, )
nombre1 en la curva1, nombre 2 en la curva 2, etc..
grid param
axis[xmin, xmax,
ymin, ymax]
Configura el rea de dibujo que se desea obtener, al limitar los valores de mnimos y
mximos de cada eje de la grfica
figure
Abre una nueva ventana para grficar, con lo cual una grfica anterior queda
independiente de la actual
hold param
Mantiene como activa la grfica actual (param = on), con lo cual no se borra el
dibujo anterior, cuando se procesa a dibujar una nueva grfica.
close param
Crea una figura de filas x columnas que est conformada por varias grficas normales
independientes. Para su uso se debe iniciar siempre con la funcin subplot, indicar la
subplot(filas,
grfica (ndice) que se va a cambiar y luego usar de manera normal cada una de las
columnas, ndice)
funciones de grficacin escritas a continuacin de la funcin subplot (sin hacer Enter,
solo separado por un espacio)
print(h, archivo)
AUTOMATIZACIN INDUSTRIAL.
Existen de igual manera funciones de dibujo que usan la misma estructura de generacin que la
funcin plot, pero que generan diferentes resultados, como lo son:
800
700
600
400
200
100
Distancia (Km)
15
19
25
23
34
40
Determine un modelo lineal que pueda predecir el comportamiento de los nmeros de clientes
con respecto a la distancia.
SOLUCIN:
%Almacenar los datos de numero de clientes
C = [800 700 600 400 200 100];
%Crear vector con los valores Distancias
D = [15 19 25 23 34 40];
%Cerrar todas las Grficas
close all;
%Calcular la regresin lineal que se ajustan al modelo
ajus=polyfit(D,C,1);
%Crear vectores de dibujo del modelo calculado
x = 0:10:40;
y = polyval(ajus,x);
%Dibujar la distribucion de puntos, distancia vs clientes
plot(D,C,'ob');
%Mantener la Grfica activa
hold on;
%Dibujar los puntos del modelo distancia clientes
plot(x,y,'r','linewidth',4);
%Configurar etiquetas
title('Modelo de clientes en funcion de la distancia');
xlabel('Distancia en Km');
ylabel('Clientes promedio');
legend('Datos', 'Modelo lineal');
grid on;
ajus
RESULTADO:
AUTOMATIZACIN INDUSTRIAL.
Estas figuras tienen un gran conjunto de curvas diferentes dependientes de los parmetros a y b.
Dibuje en una misma ventana 4 Grficas independientes donde se muestre el resultado de cuatro
pares de valores a y b.
SOLUCIN:
%Borrar la linea de comandos y cerrar las Grficas
clc;
close all;
%Iniciar la variable parametrica t
t = 0:0.05:10*pi;
%Calcular cada una de las funciones que se van a dibujar
a = 1;
b = 3;
x1 = (a-b)*cos(t)+b*cos(t*((a/b)-1));
y1 = (a-b)*sin(t)-b*sin(t*((a/b)-1));
a = 20;
b = 1;
x2 = (a-b)*cos(t)+b*cos(t*((a/b)-1));
y2 = (a-b)*sin(t)-b*sin(t*((a/b)-1));
a = 1;
b = 20;
x3 = (a-b)*cos(t)+b*cos(t*((a/b)-1));
y3 = (a-b)*sin(t)-b*sin(t*((a/b)-1));
a = 11;
b = 30;
x4 = (a-b)*cos(t)+b*cos(t*((a/b)-1));
AUTOMATIZACIN INDUSTRIAL.
y4 = (a-b)*sin(t)-b*sin(t*((a/b)-1));
%Crear la ventana con 4 figuras
subplot(2,2,1);
hold on;
%Dibujar cada una de las figuras
subplot(2,2,1); plot(x1,y1);
subplot(2,2,1); title('a = 1 y b = 10');
subplot(2,2,2); plot(x2,y2);
subplot(2,2,2); title('a = 20 y b = 1');
subplot(2,2,3); plot(x3,y3);
subplot(2,2,3); title('a = 1 y b = 20');
subplot(2,2,4); plot(x4,y4);
subplot(2,2,4); title('a = 11 y b = 30');
RESULTADO:
AUTOMATIZACIN INDUSTRIAL.
PROGRAMACIN EN OCTAVE
Octave tiene un lenguaje de programacin el cual est basado en el concepto de Script (ejecucin
sucesiva de comandos y funciones almacenadas en un archivo de texto). Estos script deben ser
almacenados en archivos de texto plano con extensin *.m.
Para llamar un script se debe escribir el nombre del archivo con path incluido, teniendo en cuenta
que los paths de archivos en Octave se debe usar /, en lugar de \.
Por ejemplo el archivo C:\windows\System32\xwizard.m, debera ser llamado escribiendo:
C:/Windows/System32/xwizard.m. El comando que se debe usar para Octave ejecute un script
es run(path/archivo.m), entonces para el ejemplo anterior se debera escribir
run(C:/Windows/System32/xwizard.m). Para evitar conflictos por el nombre del path o archivos
se recomienda nunca utilizar nombres con acentuacin, o espacios.
Octave tambin maneja el concepto de directorios de trabajo, con lo cual cada vez que se llame un
script sin path de bsqueda, se proceder a buscar en cada uno de estos directorios de trabajo, si
no se encuentra, se generara un error. El comando path despliega la lista de directorios de trabajo
como se muestra a continuacin:
AUTOMATIZACIN INDUSTRIAL.
AUTOMATIZACIN INDUSTRIAL.
Comando
%
disp(texto)
Descripcin
Comentario. Si una lnea del script inicia con ese carcter la lnea se omitir
Muestra un texto en la lnea de comandos, es til para mostrar avances o posiciones
de clculo dentro de un script
if (condicin)
cdigo_si
else
cdigo_sino
end
while (condicin)
Ciclo de repeticin para el cdigo escrito entre las sentencias while y end. El ciclo se
cdigo
repite hasta que la condicin sea falsa.
end
Para generar los scripts se puede usar cualquier editor de texto plano como el Bloc de Notas de
Windows ( ), pero se recomienda el editor Notepad++, que es un editor de uso libre disponible en
http://notepad-plus-plus.org/. Esta aplicacin tiene como principal ventaja la tabulacin
automtica, numeracin de lneas y reconocimiento de funciones bsicas de Octave. En la figura
siguiente se puede observar como es la visualizacin y edicin de un script en Notepad++.
AUTOMATIZACIN INDUSTRIAL.
RESULTADO:
AUTOMATIZACIN INDUSTRIAL.
AUTOMATIZACIN INDUSTRIAL.
PACKAGE DE CONTROL
Los toolbox o package de Octave, son colecciones de funciones especializadas agrupadas por tema
y que pueden ser llamadas desde la ventana de comandos de igual forma que las funciones
bsicas. Los package deben ser seleccionados e instalados como se explica en la seccin
INSTALACIN OCTAVE.
Para poder utilizar las funciones implementadas dentro del package, se debe cargar la librera
antes de llamar las funciones instaladas. Para ello se debe llamar la funcin pkg load nombre,
por lo tanto para cargar las funcionalidades de la librera de control se debe escribir en la lnea de
comandos pkg load control. Si al ejecutar el comando no se recibe ningn mensaje en la lnea de
comandos, esto indica que el proceso se realiz de manera satisfactoria.
Los sistemas de control continuo son representados mediante el uso de ecuaciones diferenciales,
las cuales usando la transformada Laplace, se convierten en sistemas del tipo polinomial y es as
como Octave maneja estos sistemas. El manejo de polinomios se explic en la seccin
Manipulacin de polinomios. Las funciones principales del package de control se encuentran
descritas en la tabla siguiente:
AUTOMATIZACIN INDUSTRIAL.
Comando
Descripcin
tf(num, den)
+
/
*
pole(tf)
zero(tf)
pzmap(tf)
feedback(G,H,1)
Ejemplo de uso
minreal(tf)
step(tf)
[y t] = step(tf)
lsim(tf,u,T)
[y t] = lsim(tf,u,T)
AUTOMATIZACIN INDUSTRIAL.
SOLUCIN:
1. Se hace el anlisis dinmico de fuerzas del sistema
()
( )
( )
( )
()
( )
()
()
( )
( )(
( )
( )
)
( )
( )
( )
( )
( )
3. Se procede implementar el siguiente script
%Asegurar la carga del toolbox de control,
%OJO ELIMINAR SI ESTA USANDO MATLAB
pkg load control;
%Borrar la linea de comandos y cerrar las Grficas
clc;
close all;
%Parametros del modelo
AUTOMATIZACIN INDUSTRIAL.
k = 100000; %Resorte
c = 500; %Amortiguador
m = 10; % Masa
%Crear la funcin de transferencia
num = 1;
den = [m c k];
disp('Funcion de transferencia:')
fun = tf(num,den)
%Simular la respuesta de la planta a paso
[y t] = step(fun);
subplot(2,2,1); plot(t,y);
subplot(2,2,1); title('Respuesta entrada paso');
subplot(2,2,1); xlabel('tiempo (s)');
subplot(2,2,1); ylabel('Desplazamiento (m)');
%Simular la respuesta ante entrada f(t)
t = 0:0.001:1;
f = 1000*cos(120*t);
[y t] = lsim(fun,f,t);
%Grficar los resultados
subplot(2,2,2); plotyy(t,y,t,f);
subplot(2,2,2); title('Entrada/Salida planta');
subplot(2,2,2); xlabel('Tiempo(s)');
%Generar variacin de frecuencia en la seal de entrada
disp('Calculando la respuesta a frecuencia variable')
%Variable que cambia la frecuencia de la entrada
frec = 2*pi;
i = 1;
A = zeros(5000);
x = A;
%Calcular las amplitudes de la seales de salida
while (frec <= 400)
f = 1000*cos(frec*t);
[y t] = lsim(fun,f,t);
Amp = (max(y)-min(y))/2;
A(i) = Amp;
x(i) = frec/(2*pi);
i = i + 1;
frec = frec + 0.5;
end
%Dimensionar el arreglo de datos
A = A(1:i-1);
x = x(1:i-1);
%Dibujar las diferentes Grficas de analisis
subplot(2,2,3); semilogx(x,A);
subplot(2,2,3); title('Respuesta a la frecuencia');
subplot(2,2,3); xlabel('Frecuencia(Hz)');
subplot(2,2,3); ylabel('Amplitud(m)');
subplot(2,2,3); grid on;
disp('Proceso terminado..')
AUTOMATIZACIN INDUSTRIAL.
RESULTADO:
AUTOMATIZACIN INDUSTRIAL.
b)
a)
Figura 21 Marts rover. a) vista exterior, b) compensador en lazo abierto y c) control en lazo cerrador
c)
Determine el comportamiento del rover en lazo abierto, con el compensador en lazo abierto y
cree un lazo cerrado con un controlador PID, sintonizndolo segn el criterio de Ziegler y Nichols.
SOLUCIN:
%Asegurar la carga del toolbox de control,
%OJO ELIMINAR SI ESTA USANDO MATLAB
pkg load control;
%Borrar las variables, grficas y pantalla anteriores
clear all;
close all;
clc;
%Crear la funcion de transferencia del rover y controlador en lazo abierto
%Funciones de transferencias
num = [1];
den = conv([1 1],[1 3]); %Calculo el producto de las dos raices independientes
rover = tf(num, den)
num = conv([1 1],[1 3]); %Calculo el producto de las dos raices independientes
den = [1 4 5];
conopen = tf(num, den)
[yo to] = step(conopen*rover, 5);
[y t] = step(rover, 5);
%Crear la grafica de respuesta de la planta con control de lazo abierto y sin
control
figure();
plot(to,yo,t,y,t,ones(size(t)));
AUTOMATIZACIN INDUSTRIAL.
axis([0 5 0 1.1]);
%Configurar los ejes de la grafica
%Establecer las leyendas de la grafica.. esto solo funciona en Octave
legend('{\fontsize{8}
Lazo
Abierto}',
'{\fontsize{8}
Sin
Control}',
'{\fontsize{8} Entrada}');
legend('boxon');
grid on;
xlabel('Tiempo(s)');
ylabel('Posicion');
title('Respuesta de la planta');
disp('');
input('Respuesta del rover en lazo abierto y sin control (PRESS ENTER)');
%Establecer comportamiento de la planta con control Proporcional
figure();
subplot(2,1,1);
%Solo valido en Octave y con la funcion rlocus2.m en la carpeta de trabajo
[Rdata Ks] = rlocus2(rover);
%Guardar los valores de ubicacin de los
polos y las Ks
rlocus(rover);
%Visualizar el comportamiento ante diferentes Ks
subplot(2,1,2);
%Calcular la respuesta en para diferentes Ks
[yo to] = step(feedback(1*rover), 5);
[y1 t1] = step(feedback(50*rover), 5);
[y2 t2] = step(feedback(200*rover), 5);
[y3 t3] = step(feedback(500*rover), 5);
plot(to,yo,t1,y1,t2,y2,t3,y3,t,ones(size(t)));
legend('{\fontsize{8} Kp=1}', '{\fontsize{8} Kp=50}', '{\fontsize{8} Kp=200}',
'{\fontsize{8} Kp=500}', '{\fontsize{8} Entrada}');
legend('boxon');
grid on;
xlabel('Tiempo(s)');
ylabel('Posicion');
title('Respuesta de la planta controlador P');
disp('');
input('Respuesta del rover en lazo cerrado con control P (PRESS ENTER)');
disp('');
disp('*************************************************');
disp('Proceso de sintonizacion de controlador PID Ziegler & Nichols');
disp('');
%Sintonizar el control PID
%Calcular la respuesta en para diferentes Ks
step(rover, 8);
grid on;
xlabel('Tiempo(s)');
ylabel('Posicion');
title('Respuesta de la planta sin controlador paso unitario');
T = input('Introduzca la constante de tiempo (T): ');
L = input('Introduzca el retraso de respuesta (L): ');
K = yo(size(yo,1));
%Ganancia de un contrador tipo P
Kp = T/(K*L);
%Calcular la funcion de transferencia en lazo cerrado
GscontKp = tf(Kp,1);
%Ganancia de un contrador tipo PI
AUTOMATIZACIN INDUSTRIAL.
Kpi_p = 0.9*T/(K*L);
Kpi_i = Kpi_p / (L/0.3);
%Calcular la funcion de transferencia del contraldor I
GscontKpi = tf(Kpi_p,1)+tf([Kpi_i], [1 0]);
%Ganancia de un contrador tipo PID
Kpid_p = 1.2*T/(K*L);
Kpid_i = Kpid_p / (2*L);
Kpid_d = Kpid_p * (0.5*L);
%Calcular la funcion de transferencia del contraldor I
GscontKpid_i = tf([Kpid_i], [1 0]);
%Calcular la funcion de transferencia del contraldor D
GscontKpid_d = tf([Kpid_d 0], [0 1]);
%Calcular la funcion de transferencia en lazo cerrado
GscontKpid = tf(Kpid_p,1) + GscontKpid_i + GscontKpid_d;
%Calcular
[yo to] =
[y1 t1] =
[y2 t2] =
[y3 t3] =
AUTOMATIZACIN INDUSTRIAL.
RESULTADO:
AUTOMATIZACIN INDUSTRIAL.
AUTOMATIZACIN INDUSTRIAL.