viernes, 27 de noviembre de 2015

Capitulo 3: LINEALIZACION DE MODELOS DE CONTROL

En el capitulo anterior vimos como llegar a una función de transferencia a partir de una ecuación diferencial genérica. Sin embargo no mencionamos que ocurre cuando los sistemas no son lineales. 
Lo que ocurre es que no podemos aplicar las técnicas de control lineal sobre  sistemas no lineales. 

Hay varias alternativas:

1-Linealizar el sistema y trabajar con él como un sistema lineal. Es la mas habitual y la que aprenderemos en este capitulo.

2-Construir controladores no lineales, técnicas de realimentación de estados. Se requiere un gran conocimiento del sistema y de técnicas control.

No siempre la opción mas compleja es la que da mejores resultados, a veces una buena linearización  es mejor si vamos a utilizar el sistema en unos mismos puntos de operación,  como ocurre en la industria. 

Un punto de operación, es un estado en el que el sistema esta en equilibrio.  Es por ejemplo un estanque con una cierta cantidad de agua. 

la idea de la linealización es la siguiente:


En la zona cercana a X el comportamiento lineal y no lineal son el mismo. Conforme nos alejamos del P.O el error aumenta considerablemente como veremos mas adelante.

Linealización completa de un sistema. PASOS:

1-Ecuación no lineal.
2-Ecuación de equilibrio (anulamos las derivadas).
3-Puntos de equilibrio.
4-Variables incrementales y Taylor en torno al punto de equilibrio.

Explicare la parte de taylor y su planteamiento en la parte para dummies.

Linealización completa de un sistema. EJEMPLO:

El sistema que vamos a tratar es clásico en control. Se trata de un deposito de agua con dos grifos uno de perturbaciones y otro que aporta el caudal, y uno de salida abajo. El esquema seria el siguiente:



Las ecuaciones que describen el sistema serian:

Y con esto tendríamos linealizado el sistema en torno al punto de operación. Es una herramienta muy utilizada en ingeniería. Si queremos que sea valido para todo un rango de operación bastaría con ir cambiando el punto de operación y los parámetros del sistema según donde nos encontremos.

--------------------------------------------------------------------------------------------------------------------------
Para Dummies

Lo que hacemos en este capítulo es linealizar un sistema no lineal. Lo hacemos para poder controlarlo y trabajar con el sistema como si "fuera lineal". Para ello necesitamos saber un poco de matemáticas nivel medio como que es el desarrollo serie de Taylor y como obtener una función de transferencia de un sistema diferencial (capitulo 2). 

Pasos para linealizar un sistema:
1-Platear ecuación no lineal.
2-Ecuación de equilibrio (anulamos las derivadas).
3-Puntos de equilibrio.
4-Variables incrementales y Taylor en torno al punto de equilibrio.

Si no sabemos plantear la ecuación no lineal del sistema podemos buscar información sobre el propio sistema o aproximar el sistema sin conocer nada de él como aprenderemos mas adelante.

--------------------------------------------------------------------------------------------------------------------------
Matlab & Simulink
Este apartado requiere un poco de conocimiento sobre matlab y simulink. Pueden dejar comentarios si no entienden alguna parte. 

Lo que haremos para probar el sistema previamente calculado será lo siguiente:

1-Definir los parámetros del sistema, de los puntos de operación y el sistema lineal
2-Crear la función no lineal del sistema.
3-Poner el sistema lineal y no lineal en simulink
4-Analizar resultados y calcular errores

Programa principal: incluye los errores.

%tema 3 linearization
global A K

r=3;
A=2*pi*r;
g=9.81;
K=sqrt(2*g);

Heq=3;
Qeq=K*sqrt(Heq);
%%
%flin
num=1/A;
B=K/(2*sqrt(Heq));
den=[1 B/A];

G=tf(num,den);

%%
%Simulacion
alpha=0.05;
sim('Nlin_Lin.slx');
save('datos_simu.mat','xlin','xnlin');
%%
%errores
M=61;
a=1;
for alpha=0.05:0.1:0.95
    
sim('Nlin_Lin.slx');
v=[xlin.Data(M) xlin.Data(M-1) xlin.Data(M-3) xlin.Data(M-4)];
Mlin=median(v);

v2=[xnlin.Data(M) xnlin.Data(M-1) xnlin.Data(M-3) xnlin.Data(M-4)];
Mnlin=median(v2);

error=abs((Mlin-Mnlin));
verror(a)=error;
a=a+1;
end
va=0.05:0.1:0.95;
save('errores.mat','va','verror');

Funcion no lineal

function xdot=nlin(x)
global A K

H=x(1);Qe=x(2);
xdot(1)=-(K/A)*sqrt(H)+Qe/A;
return;

Esquema Simulink:



Resultados:

Respuesta ante escalón del 5% de Qeq. alpha=(0.05)
Errores:
Como vemos a medida que nos alejamos del punto de equilibrio el error es mayor.

----------

Por ultimo os dejo el archivo en Mega con todos los scripts y plots: Deposito.m
Para los que queráis ampliar en sistemas no lineales os dejo el siguiente enlace: Control no lineal

lunes, 23 de noviembre de 2015

Capitulo 2: DESCRIPCION DE LOS SISTEMAS

En este capitulo aprenderemos a identificas los sistemas y como abordarlos, de una forma muy sencilla y practica. Cuando queremos controlar algún fenómeno, un sistema, tenemos principalmente dos opciones: 

1-Conocer las leyes físicas que lo gobiernan.
2-Observar el modelo de caja negra.

El modelo de caja negra se desarrollan a partir de datos experimentales obtenidos, operando a la entrada del sistema. Su nombre se debe a que no conocemos lo que pasa en el interior del sistema. 
Lo mas recomendable es siempre conocer los dos procedimientos ya que podemos constatar la coherencia de los resultados. Si no sabemos las ecuaciones, podemos recurrir a alguien especializado en esa materia o recabar información por nuestra cuenta.

Leyes físicas de los modelos

Las leyes físicas que gobiernan los modelos, suelen ser ecuaciones diferenciales, ya sean lineales o no lineales. Una vez que tenemos las ecuaciones que los describen, queremos ver su respuesta ante distintas entradas, pero hay un  problema. Entradas simples como un impulso o un escalón en el dominio temporal se convierten en convoluciones temporales, por lo que es costoso operar con ellas.
Lo que se hace es pasar al dominio de Laplace. Quien no sepa muy bien que es esto lo explicaré en paraDummies.

Pongamos por ejemplo la siguiente ley que describe el comportamiento del sistema "caja que empujo". Entrada fuerza, salida velocidad. Las ecuaciones serian:



Obtenemos una relación entrada salida, lo que en control llamamos una función de transferencia. En este caso y para esta entrada la función no es estable, ya que para una fuerza constante la velocidad aumentaría indefinidamente. Lo veremos en el gráfico de la sección Matlab.  

A continuación nos interesa saber que elementos son característicos de una función de transferencia para poder tratarlos. Pongamos por ejemplo la siguiente función de transferencia :


Elementos:

1-Polos: elementos que anulan el denominador. Son muy importantes a tener en cuenta.
2-Ceros: elementos que anulan el numerador. No son esenciales a la hora de la estabilidad pero influyen en la dinámica del sistema. A veces para bien y otras para mal.
3-Ganancia: incremento entre entrada y salida cuando se establece el régimen permanente, (s=0).
4-Orden: numero de polos de la función de transferencia. tiene relación con el numero de variables diferenciales del sistema.
5-Propia: si tiene mas polos que ceros.
6-Impropia: mas ceros que polos, no es muy deseable.

En nuestro caso obtendríamos:

1-Polos: s=-2, s=-3;
2-Ceros: s=-3;
3-Ganancia: 6/6=1.
4-Orden: 2
5-Propia: Si
6-Impropia: No

Por ultimo queda comentar que ocurre en el caso de que las ecuaciones no sean lineales, la respuesta es la linearización, y la veremos en el siguiente capítulo.

--------------------------------------------------------------------------------------------------------------------------

Para dummies

Lo primero entender que es un sistema (ver capitulo 1). Queremos actuar sobre él por lo que necesitamos información del funcionamiento del sistema. Ya sea por ecuaciones diferenciales o viendo que le ocurre a la salida al variar la entrada (caja negra).

Para ver que le ocurre si cambiamos la entrada utilizamos Laplace ya que es muy duro trabajar con las señales en el dominio temporal habitual.
Pierre Simon Laplace.
Transformada de Laplace (Video)

Al operar con Laplace buscamos una función de transferencia que relaciona incrementos de entrada con incrementos de salida.

Una vez que tenemos la f_tranf observamos sus características y propiedades. Las estudiaremos a fondo mas adelante.

--------------------------------------------------------------------------------------------------------------------------

Matlab & Simulink

El código de Matlab seria el siguiente:

clear all;
clc;

%definicion de parametros
u=0.7;
g=9.81;
num=u*g;

%funciones de transferencia
H=tf(num,[1 0]);
uno=tf(1,1);

%graficas
figure(1);

subplot(2,1,2);
step(H); %scalon unitario
title('Output Vitesse');
xlim([-1 10]);

subplot(2,1,1);
step(uno); %entrada
title('Input (N)');
xlim([-1 10]);

Las partes importantes son la creación de la función de transferencia con tf(H) y la graficación de figuras con plot() y subplot().

Os dejo el Codigo matlab (.m) y el resultado a continuación:

Vemos como para una fuerza constante, la velocidad de la caja aumenta con el tiempo.

sábado, 21 de noviembre de 2015

Capitulo1: DEFINICIONES BASICAS

Si estais familiarizados con los conceptos básicos y nociones como funciones de transferencia, polos, ceros os recomiendo que paseis al segundo capitulo.

Sistema:

Combinación de componentes que actúan conjuntamente y cumplen un determinado objetivo. Hablando llanamente: Proceso con entradas y salidas
Ejemplos de sistemas: 1.- Motor: Entrada--> Voltios , Salida--> Velocidad, aceleración, posición 2.- Sacacorchos: Entrada--> Momento manual, Salida--> Posición Corcho. Los sistemas tienen todos algo en común: Cuando variamos la entrada, la salida también lo hace. Según las entradas y salidas, y la manera de evolucionar de los sistemas nos podemos encontrar multiples diferentes tipos.

Clasificación de sistemas:

Según causalidad: En los causales existe una relación causa efecto entre las entradas y salidas del sistema (ejemplos previos). Un sistema no causal puede depender de entradas futuras como un análisis de imagen. Según el número de entradas y salidas del sistema: 1-Una entrada, una salida (en inglés SISO), son la base del control clásico. 2-Varias entradas, Varias salidas (MIMO), son base del control moderno. Según las ecuaciones que lo describen: 1.Sistemas lineales. 2.Sistemas no lineales. Existen muchos mas tipos de clasificaciones pero estas son las mas importantes. Al principio del curso veremos sistemas SISO, y luego pasaremos a sistemas MIMO.

Control Automático:

Técnica que tiene por objeto concebir ingenios que funcionen autónomamente.Queremos conseguir que los sistemas actúen como queramos.
Tipos de control: Control robusto, control automatico, control predictivo , control optimo...En nuestro caso abordaremos el control basico mediante P,PI,PID y mas adelante abordaremos Control por emplazamiento de polos.
1-Control en lazo abierto. Manejamos el sistema aplicando modificaciones de entrada atendiendo a su dinamica. Ejemplo: el sistema es una caja en una superficie con rozamiento. (Entrada fuerza, salida desplazamiento). Queremos que la caja se mueva 3 cm, empujamos con una fuerza previamente estudiada par lograrlo. Este tipo de control no es muy usual se utiliza en sistema en los que no podemos obtener datos o información de él.
2-Lazo cerrado, utilizamos información de la salida del sistema para actuar en consecuencia, es el mas utilizado y que veremos a lo largo del blog.

Código Matlab & Simulink

A continuación os dejo un ejemplo de sistema de lo mas basico. Es un motor de corriente continua. Enlace código simulación mega (.m)

Vemos como cuando la entrada pasa a 1.7 voltios el motor acelera hasta su valor continuo. Es un sistema de primer orden. Ya lo estudiaremos mas adelante

Capitulo 0. INTRODUCCION

Este es un capitulo a modo de introducción para explicaros como va a estar diseñado el blog, hacia quien va, que necesitáis y como va a estar estructurado.

En primer lugar es un blog destinado a aprender sobre automática industrial. En concreto técnicas de control. El nivel va desde lo mas básico a sistemas de una complejidad importante.

-Requisitos para seguir y comprender el curso:

1-Disponer del logicial Matlab & Simulink
2-Tener nociones básicas de matemáticas. Saber que son las derivadas, integrales, sistemas de ecuaciones y poco mas.
3-Tener ganas de aprender e ir siempre mas allá.

 En cuanto a presentaciones, me llamo Alberto Isorna y soy estudiante de ingeniería robótica en la ETSI de Sevilla, actualmente estudiando ingeniería automática en el Institut polytechnique de Grenoble.

-Estructura publicaciones:

Salvo futuras modificaciones la estructura de cada lección se compondrá de:

a-Parte de explicaciones. En este apartado abordaremos los conceptos clave.
b-Parte Para Dummies. Es una parte que dedicaré a los que no quieren entender tanto y simplemente quieren quedarse con la idea básica.
c-Parte Matlab. En cada articulo expondré partes de código y/o simulaciones que ayuden a la comprensión del propio sujeto.


Para concluir espero que os guste y si alguno quiere mejorar mi pagina, ofrecer mas información o correcciones puede escribirme a mi correo.


Un saludo y bienvenido a Controlfacilito.