MendezBusto Daniel TFG 2017
MendezBusto Daniel TFG 2017
MendezBusto Daniel TFG 2017
ÍNDICE GENERAL
15405 - FERROL
AUTOR: EL ALUMNO
I ÍNDICE GENERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Contenidos del TFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Índice de figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Índice de tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Listado de códigos de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
II MEMORIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Índice del documento Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1 Objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1 Planta de nivel del laboratorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1 Bomba centrı́fuga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.2 Variador de velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.3 Tarjeta de Adquisición de datos . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.4 Sensor de ultrasonidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4 Normas y referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1 Disposiciones legales y normas aplicadas . . . . . . . . . . . . . . . . . . . . . 31
4.2 Bibliografı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3 Programas utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4 Otras referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5 Definiciones y abreviaturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6 Requisitos de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7 Análisis de las soluciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.1 EASY JAVA SIMULATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.1.1 Consola de Easy Java Simulations . . . . . . . . . . . . . . . . . . . . . . 38
7.1.2 Interface de desarrollo de Easy Java Simulations . . . . . . . . . . . . . . 38
7.2 Regulación de la planta de nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.2.1 Reguladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.2.2 Implementación de los reguladores . . . . . . . . . . . . . . . . . . . . . . 57
7.2.3 Método Relay - Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.2.4 Obtención de los parámetros Kp , Ti y Td mediante la aplicación de fórmulas 62
8 Resultados finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.1 Comunicación entre Easy Java Simulations y Matlab . . . . . . . . . . . . . . . 65
8.2 Declaración de variables en EJS . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.3 Programación del cuerpo de la aplicación . . . . . . . . . . . . . . . . . . . . . . 70
8.3.1 Código de la implementación y representación de los reguladores . . . . 70
8.3.2 Código de la implementación del método de Relay - Feedback . . . . . . 76
8.3.3 Adquisición de variables de Matlab . . . . . . . . . . . . . . . . . . . . . . 77
8.3.4 Almacenamiento de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
IV PLANOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Índice del documento Planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Esquema eléctrico de la planta de nivel [3] . . . . . . . . . . . . . . . . . . . . . . . . 139
Índice de figuras
Índice de tablas
15
E.U.P. GRADO EN INGENIERÍA ELECTRÓNICA TFG Nº: 770G01A123
MEMORIA
15405 - FERROL
AUTOR: EL ALUMNO
1 Objeto 21
2 Alcance 23
3 Antecedentes 25
3.1 Planta de nivel del laboratorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1 Bomba centrı́fuga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.2 Variador de velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.3 Tarjeta de Adquisición de datos . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.4 Sensor de ultrasonidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4 Normas y referencias 31
4.1 Disposiciones legales y normas aplicadas . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Bibliografı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3 Programas utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4 Otras referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5 Definiciones y abreviaturas 33
6 Requisitos de diseño 35
8 Resultados finales 65
8.1 Comunicación entre Easy Java Simulations y Matlab . . . . . . . . . . . . . . . . 65
8.2 Declaración de variables en EJS . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.3 Programación del cuerpo de la aplicación . . . . . . . . . . . . . . . . . . . . . . 70
8.3.1 Código de la implementación y representación de los reguladores . . . . 70
8.3.1.1 Código del instante inicial de los reguladores sin corrección . . 71
8.3.1.2 Código del regulador P sin corrección . . . . . . . . . . . . . . . 71
8.3.1.3 Código del regulador PI sin corrección . . . . . . . . . . . . . . 72
8.3.1.4 Código del regulador PD sin corrección . . . . . . . . . . . . . . 72
8.3.1.5 Código del regulador PID sin corrección . . . . . . . . . . . . . . 73
1 Objeto
El objetivo principal del presente trabajo de fin de grado es llevar a cabo el control remoto
de la planta de nivel del laboratorio de optimización y control de la Escuela Universitaria Po-
litécnica de Ferrol haciendo uso del entorno EASY JAVA SIMULATIONS y MATLAB para su
posterior aplicación en docencia. Un usuario puede realizar el control de esta planta desde
cualquier parte del mundo a través de internet.
2 Alcance
Los pasos que se llevan a cabo para la realización de este proyecto son los siguientes:
Pruebas simples con la planta de nivel pequeña del laboratorio de optimización y control.
3 Antecedentes
que lo alimenta. Para proteger la bomba centrı́fuga y para evitar que el depósito inferior se
quede sin agua, éste es de mayor tamaño que el depósito superior.
Para alimentar el depósito superior, se cuenta de una bomba centrı́fuga. El vaciado del
mismo se puede realizar por tres métodos. A través del tubo superior si el nivel del lı́quido es
igual a la capacidad del depósito. A través de las válvulas que tiene el sistema, una válvula
manual y una electro-válvula y mediante la propia bomba.
El régimen de giro de la bomba lo determina un variador de velocidad situado bajo del
depósito superior. Este variador de velocidad es controlado mediante el sistema de control
desarrollado en el software Matlab. Para poder comunicar el variador de velocidad con el or-
denador es necesario hacer uso de una tarjeta de adquisición de datos. Gracias a ella, el
ordenador obtiene el valor del nivel aportado por el sensor para medir el nivel (situado en la
parte alta del depósito superior) y emite las órdenes de control al variador de velocidad.
En las siguientes subsecciones se detallan los elementos principales que forman la planta
de nivel.
Las caracterı́sticas más representativas que presenta este variador son las siguientes:
Tensión de entrada de 0 a 10 V.
El enlace entre el variador de velocidad y la bomba centrı́fuga es directo, ya que las ca-
racterı́sticas de salida del variador de velocidad y los parámetros de alimentación de la bomba
centrı́fuga son compatibles
4 Normas y referencias
En la ejecución del presente trabajo se cumple con la normativa de Trabajos Fin de Gra-
do de la Escuela Universitaria Politécnica de Ferrol, aplicable a las titulaciones de Grado en
Ingenierı́a Electrónica Industrial Y Automática y Grado en Ingenierı́a Eléctrica.
4.2. Bibliografı́a
[1] B ASIL M., A L -H ADITHI; Análisis y Diseño de sistemas discretos de control, Visión Net.
[3] G ARC ÍA N OVO, F RANCISCO; Estudio de métodos de detección de fallos para sistemas
SISO.
Los programas utilizados para la realización del presente trabajo son los siguientes:
TeXstudio
MiKTex
YawCam
5 Definiciones y abreviaturas
N: Parámetro de ajuste
6 Requisitos de diseño
Los requisitos que debe de cumplir el presente Trabajo Fin de Grado son:
Poder implementar un control sobre la planta de nivel desde cualquier parte del mundo a
través de internet.
Se deben de almacenar los datos de las variables nivel, error, señal de control y consigna
en una base de datos. Esta base de datos se debe de poder visualizar desde el ordenador
local y desde el ordenador remoto.
Con el objetivo de dotar la planta de nivel con control remoto se estudia la posibilidad de
implementar un escritorio remoto o desarrollar una aplicación de control desarrollada con
el software Easy Java Simulations.
El escritorio remoto permite la utilización de una sesión en un ordenador local desde un
equipo remoto ubicado en otro lugar. Para lograr la comunicación entre los dos equipos es
necesario conexión a internet. Cuando se inicia la sesión remota, el usuario puede ejecutar
Matlab y por lo tanto realizar un control sobre la planta de nivel.
Una aplicación de control desarrollada con Easy Java Simulations permite la conexión a un
ordenador local desde un equipo remoto. La comunicación entre estos dos equipos se realiza
mediante internet haciendo uso del protocolo http. Cuando se inicia la aplicación, el usuario
está ante una interface que se enlaza con el software Matlab del ordenador local. A través del
Matlab puede realizarse el control de la planta de nivel.
La ventaja que ofrece el escritorio remoto es que el usuario se encuentra con la interface
original de Matlab por lo que obtiene un control total y absoluto sobre la planta de nivel. A la
vez, esto es una desventaja, ya que no se puede controlar la programación realizada por el
usuario y por lo tanto se pueden dar problemas como el deterioro o la ruptura de la propia
planta, borrado de archivos ajenos al usuario o cambios indeseados en la configuración del
equipo.
La aplicación de control tiene la ventaja que actúa como intermediaria entre el ordenador
remoto y el ordenador local. De esta manera, se filtran las acciones que el usuario desea
realizar sobre la planta de laboratorio, protegiéndola ası́ contra ordenes perjudiciales para su
integridad. La desventaja que ofrece es que el usuario no se encuentra con la interface original
de Matlab, si no que trabaja a través de la aplicación de control.
Tras realizar el estudio de ambas alternativas se ha decidido hacer uso de la aplicación de
control creada con Easy Java Simulations. A continuación se describe como es el funciona-
miento de este software gratuito de desarrollo de aplicaciones Java.
lenguaje utilizado para el desarrollo en esta plataforma es Java. Se pueden crear aplicaciones
Java independientes, aplicaciones Java multiplataforma o applets. Esta variedad de exporta-
ción, permite que una aplicación qué se genera con Easy Java Simulations se puede ejecutar
en distintas plataformas e incluso en un navegador web [i].
Es compatible con programas de software como Matlab, Simulink o Labview y con ele-
mentos hardware como puede ser arduino. La comunicación entre los elementos software y
el EJS se realiza a través de protocolo http o tcp. Esto dota a Easy Java Simulations de una
gran potencia, ya que permite aprovechar todos los recursos de los software compatibles y
con el añadido de poder realizarlo de forma remota haciendo uso de uno de los protocolos de
comunicación mencionados anteriormente.
Este cuadro está designado para la declaración de las variables de la aplicación. Para
declarar una variable, se le designa un nombre, un valor inicial, un tipo (doble, entero, booleano
o string) y una dimensión (único elemento o vector).
Segmento Un segmento 2D
Muelle Un muelle 2D
Texto Un texto 2D
Polı́gono Un polı́gono 2D
Rastro Un rastro 2D
Grupo Un grupo 2D
Cilindro 3D Un cilindro 3D
Cono 3D Un cono 3D
Tetraedro 3D Un tetraedro 3D
Plano 3D Un plano 3D
Grupo 3D Un grupo 3D
Disco 3D Un disco 3D
Segmento 3D Un segmento en 3D
Muelle 3D Un muelle en 3D
Texto 3D Un texto en 3D
Polı́gono 3D Un polı́gono en 3D
El área de mensajes es la utilizada por Easy Java Simulations para transmitir errores o
estados de la aplicación que se esta a desarrollar. Estos mensajes ayudan al usuario a corregir
errores de compilación, informan si la aplicación se ha guardado correctamente, muestran el
estado de la simulación ...
El área de mensajes presenta un botón nombrado como ”Limpiar mensajes”(se puede ver
en la figura 7.1.2.10) y permite borrar los mensajes existentes en dicho área.
En este panel se pueden configurar datos del autor e insertar una imagen para la aplicación
a desarrollar.
Como se observa en la figura 7.1.2.11, en la parte superior se puede selecciona las opciones
de ejecución o las opciones de edición. Estos ajustes vienen por defecto configurados y sólo
serı́a necesarios ajustarlos en el caso de desarrollar aplicaciones muy complejas.
Sı́mbolo Descripción
El objetivo es que a través de la aplicación de control el usuario pueda realizar una regula-
ción sobre el nivel del depósito superior de la planta de nivel.
En este proyecto se dota a la aplicación de control con reguladores PID y de sus simpli-
ficaciones. Se ha optado por esta opción, ya que los reguladores PID y sus simplificaciones
se estudian en la materia de Ingenierı́a de Control en el tercer curso de Ingenierı́a Electrónica
Industrial y Automática.
7.2.1. Reguladores
El regulador P está compuesto por la acción proporcional, el regulador PI por las acciones
proporcional e integral, el regulador PD por las acciones proporcional y derivativa y el regulador
PID por las tres acciones.
El regulador PID es el más utilizado en la actualidad, ya que su respuesta se adapta a la
mayorı́a de los sistemas.
∞
!
T X e (k − 1) + e (k) Td
u (k) = Kp e (k) + + (e (k) − e (k − 1)) (7.2.2.2)
Ti 2 T
k=1
Donde u (k) es la señal de control expresada en tanto por ciento, Kp es la constante pro-
porcional, e (k) es el error en el instante k, e (k − 1) es el error en el instante k-1, Ti el tiempo
integral y Td el tiempo derivativo [4].
Siendo C1 , C2 y C3 :
Ts
C1 = (7.2.2.7)
2Ti
2Td
C2 = (7.2.2.8)
2Td
+ Ts
N
2Td
− Ts
C3 = N (7.2.2.9)
2Td
+ Ts
N
Donde N es un parámetro de ajuste de la acción derivativa.
7.2.2.1. Regulador P
7.2.2.2. Regulador PI
El regulador PI está compuesto por la acción proporcional y por la acción integral. La ac-
ción integral corrige el error de posición que se tiene con un regulador tipo P. A su vez, este
introduce sobreoscilación y acerca el sistema a la inestabilidad. El diagrama de bloques de
este regulador se muestra en la siguiente figura:
∞
!
T X e (k − 1) + e (k)
u (k) = Kp e (k) + (7.2.2.11)
Ti 2
k=1
7.2.2.3. Regulador PD
Td
u (k) = Kp e (k) + (e (k) − e (k − 1)) (7.2.2.13)
T
El regulador PID está compuesto por la acción proporcional, la acción integral y la acción
derivativa. La acción integral corrige el error de posición cometido por la acción proporcional,
a su vez introduce sobreoscilación y acerca al sistema a la inestabilidad. La acción derivativa
se encarga de mejorar los defectos introducidos por la acción integral. El diagrama de bloques
de este regulador se muestra en la siguiente imagen:
La ecuación 7.2.2.2 rige el funcionamiento del regulador PID sin corrección [1]. En el
caso del regulador PID con corrección se hace uso de la ecuación 7.2.2.6 [4].
El método del relay - feedback es un método empı́rico que consiste en llevar al sistema al
estado de oscilación mediante el uso de un relé [2].
El relé que se utiliza en el método empı́rico del Relay - Feedback ha de tener un parámetro
de histéresis (h) y una amplitud (d) determinada [2].
Tras realizar el método del relay - feedback se obtiene una señal oscilante periódica. De
esta señal se hallan los parámetros Tc y a, como se muestra en la siguiente imagen:
Parámetro Ecuación
K 0,6xKc
Ti 0,5xTc
Td 0,125xTc
Parámetro Ecuación
K 0,33xKc
Ti Tc /2
Td Tc /3
Parámetro Ecuación
K 0,2xKc
Ti Tc
Td Tc /3
Parámetro Ecuación
K 0,45xKc
Ti 2.2xTc
Td Tc /6,3
8 Resultados finales
El primer paso para lograr el control remoto de la planta de nivel de laboratorio es realizar
la comunicación entre Easy Java Simulations y Matlab.
Esta comunicación se realiza a través de un servidor creado por la Universidad Nacional
de Educación a Distancia (UNED). Este servidor se denomina RpcMatlabServer y traduce
las órdenes enviadas desde la aplicación de control a Matlab. Las órdenes son enviadas por
protocolo http.
Las órdenes que pueden ser enviadas a través de este servidor son:
matlab.connect(): Con esta orden se inicia una sesión de Matlab en el ordenador local.
Para lograr una conexión correcta, se debe de tener en cuenta que la dirección IP del
ordenador local debe de ser pública y que el puerto utilizado (en este caso 2055) debe de
estar abierto y libre.
Se desarrolla un script en un archivo de texto que permite iniciar el servidor sin necesidad
de escribir la orden comentada anteriormente. Se introduce el siguiente código en el archivo
de texto y se guarda con una extensión .bat.
Una vez, iniciado el servidor se debe de configurar el software de desarrollo Easy Java
Simulations. Se inicia el programa y se accede a la pantalla de Elementos, situada dentro de la
pestaña Modelo. Se debe de abrir la ventana de la figura 7.1.2.8. Se selecciona SoftwareLinks
y se añade el elemento Matlab.
Para configurar el elemento Matlab se debe de realizar doble click sobre él. Tras realizar
esta acción se muestra una ventana de configuración. En ella, aparece por defecto localhost,
puerto 2055 y comunicación http. En lugar de localhost se debe de introducir la dirección IP del
ordenador local que tiene instalado el software Matlab, en este caso 193,147,32,125. El puerto
que se utiliza para este proyecto es el configurado por defecto y se debe de cambiar el modo
de comunicación a http.
senal control visible false boolean Bandera visibilidad graficar señal de control
C1 0 double Parámetro C1
C2 0 double Parámetro C2
C3 0 double Parámetro C3
N 0 double Parámetro N
cont=cont+1;
limpiar grafica=false;
matlab.eval("cont aux=cont aux+1;");
matlab.eval("tic;");
matlab.eval("lectura(1,cont aux)=cont aux;");
matlab.eval("lectura(2,cont aux)=DAQ Read();")matlab.eval("nivel matlab=DAQ Read;");
matlab.eval("error(1,cont aux)=sp−lectura(2,cont aux);");
matlab.eval("error matlab=error(1,cont aux);";
if(reguladorSinN==true){
if(cont==1){
matlab.eval("u(1,cont aux)=0;");
matlab.eval("senal control matlab=u(1,cont aux);");
matlab.eval("integral(1,cont aux)=error(1,cont aux)/2;");
matlab.eval("DAQ Write(u(1,cont aux),0)");
//Representación
matlab.eval("figure(1)");
matlab.eval("line([0 lectura(1,cont aux)],[lectura(0 lectura(2,cont aux)]");
matlab.eval("hold on");
matlab.eval("line([lectura(0 lectura(1,cont aux)],[sp sp])");
matlab.eval("xlim([0 350]");
matlab.eval("ylim([0 100])");
matlab.eval("pause(1−toc)";);
matlab.eval("toc"););
if(cont>1){
Regulador P
if(reguladorP==1){
matlab.eval("u(1,cont aux)=k*error(1,cont aux);");
matlab.eval("senal control matlab=u(1,cont aux);");
matlab.eval("DAQ Write(u(1,cont aux),0)");
//Representación
matlab.eval("figure(1)");
//Regulador PI
if(reguladorPI==1){
matlab.eval("tic");
matlab.eval("integral(1,cont aux)=integral(1,cont aux−1)+(error(1,cont aux−1)+
error(1,cont aux))/2;");
matlab.eval("u(1,cont aux)=k*error(1,cont aux)+k*(1/Ti)*integral(1,cont aux)
;");
matlab.eval("senal control matlab=u(1,cont aux);");
matlab.eval("DAQ Write(u(1,cont aux),0)");
//Representación
matlab.eval("figure(1)");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);");
matlab.eval("hold on");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp])");
matlab.eval("ylim([0 100])");
matlab.eval("xlim([0 350]");
matlab.eval("pause(1−toc)");
matlab.eval("toc");
//Regulador PD
if(reguladorPD==1){
matlab.eval("u(1,cont aux)=k*error(1,cont aux)+k*(Td/1)*(error(1,cont aux)−
error(1,cont aux−1));");
matlab.eval("senal control matlab=u(1,cont aux);");
matlab.eval("DAQ Write(u(1,cont aux),0)");
//Representación
matlab.eval("figure(1)");
matlab.eval("plot(lectura(1,:),lectura(2,:),'−r')");
matlab.eval("hold on");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);");
matlab.eval("hold on");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp])");
matlab.eval("ylim([0 100])");
matlab.eval("xlim([0 350]");
matlab.eval("pause(1−toc)");
matlab.eval("toc");
El funcionamiento del regulador PID sin corrección está descrito por la ecuación 7.2.2.2.
//Regulador PID
if(reguladorPID==1){
matlab.eval("tic");
matlab.eval("integral(1,cont aux)=integral(1,cont aux−1)+(error(1,cont aux−1)+
error(1,cont aux))/2;");
matlab.eval("u(1,cont aux)=k*error(1,cont aux)+k*(Td/1)*(error(1,cont aux)−
error(1,cont aux−1))+k*(1/Ti)*integral(1,cont aux);");
matlab.eval("senal control matlab=u(1,cont aux);");
matlab.eval("DAQ Write(u(1,cont aux),0)");
//Representación
matlab.eval("figure(1)");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);");
matlab.eval("hold on");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp])");
matlab.eval("ylim([0 100])");
matlab.eval("xlim([0 350]");
matlab.eval("pause(1−toc)");
matlab.eval("toc");
if (cont==1){
matlab.eval("u(1,cont aux)=0;");
matlab.eval("senal control matlab=u(1,cont aux);");
matlab.eval("integral(1,cont aux)=error(1,cont aux)*C1;");
matlab.eval("derivada(1,cont aux)=error(1,cont aux)*C2;");
matlab.eval("DAQ Write(u(1,cont aux),0)");
//Representación
matlab.eval("figure(1)");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);");
matlab.eval("hold on");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp])");
matlab.eval("ylim([0 100])");
matlab.eval("xlim([0 350]");
matlab.eval("pause(1−toc)");
matlab.eval("toc");
La ecuación que rige el funcionamiento del regulador P con corrección es idéntica a la del
regulador P sin corrección, por lo tanto la implementación es común para ambos casos.
El funcionamiento del regulador PI con corrección está definido por la ecuación 7.2.2.12.
matlab.eval("pause(1−toc)");
matlab.eval("toc");
if (reguladorPIDN==1){
matlab.eval("integral(1,cont aux)=C1*(error(1,cont aux)+error(1,cont aux−1))+
integral(1,cont aux−1);");
matlab.eval("derivada(1,cont aux)=C2*(error(1,cont aux)+error(1,cont aux−1))+
C3*derivada(1,cont aux−1);");
matlab.eval("u(1,cont aux)=k*(error(1,cont aux)+
integral(1,cont aux)+derivada(1,cont aux));");
matlab.eval("senal control matlab=u(1,cont aux);");
matlab.eval("DAQ Write(u(1,cont aux),0)");
//Representación
matlab.eval("figure(1)");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],
Para realizar el método del Relay - Feedback es necesario someter a la planta al efecto de
un relé. Esto se muestra en la figura 7.2.3.1. El código que permite emular el efecto del relé se
muestra a continuación:
if(relay feedback==true){
if(nivel ejs < (sp−ancho ventana)){
matlab.eval("u(1,cont aux)=100;");
matlab.eval("senal control matlab=u(1,cont aux);");
matlab.eval("DAQ Write(u(1,cont aux),0)");
//Representación
matlab.eval("figure(1)");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);");
matlab.eval("pause(1−toc)");
matlab.eval("toc");
else{
matlab.eval("figure(1);");
matlab.eval("line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);");
matlab.eval("pause(1−toc)");
matlab.eval("toc");
}
Es necesario adquirir el valor de las variables nivel, error y señal de control para graficar
su valor en el Easy Java Simulations. Estos valores también se almacenan en un archivo .csv.
La instrucción de la que se hace uso es matlab.get().
Se crea una base de datos en el ordenador local y una base de datos en el ordenador
remoto. Las variables que se almacenan son el tiempo, el nivel del depósito, el error y la señal
de control. El formato de estas bases de datos es .csv.
Para realizar la base de datos en el ordenador local, se crea una función en Matlab en el
propio ordenador.
Esta función es llamada con un periodo de 1 segundo y se le aportan los datos a almacenar.
cont=cont+1;
limpiar grafica=false;
matlab.eval("cont aux=cont aux+1;tic;lectura(1,cont aux)=cont aux;
lectura(2,cont aux)=DAQ Read();nivel matlab=DAQ Read;
error(1,cont aux)=sp−lectura(2,cont aux);error matlab=error(1,cont aux);");
if(reguladorSinN==true){
if(cont==1){
matlab.eval("u(1,cont aux)=0;senal control matlab=u(1,cont aux);
integral(1,cont aux)=error(1,cont aux)/2;DAQ Write(u(1,cont aux),0);figure(1);
line([0 lectura(1,cont aux)],[0 lectura(2,cont aux)]);xlim([0 350]);ylim([0 100]);
pause(1−toc);toc;");
}
if(cont>1){
if(reguladorP==1){
matlab.eval("u(1,cont aux)=k*error(1,cont aux);senal control matlab=u(1,cont aux);
DAQ Write(u(1,cont aux),0);figure(1);
line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);hold on;
line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp]);xlim([0 350]);
ylim([0 100]);
pause(1−toc);toc;");
}
//Regulador PD
if(reguladorPD==1){
matlab.eval("u(1,cont aux)=k*error(1,cont aux)+k*(Td/1)*(error(1,cont aux)−
error(1,cont aux−1));senal control matlab=u(1,cont aux);DAQ Write(u(1,cont aux),0);
figure(1);line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);hold on;
line([lectura(1,cont aux−1) lectura(1,cont aux)],
[sp sp]);xlim([0 350]);ylim([0 100]);pause(1−toc);toc;");
}
//Regulador PI
if(reguladorPI==1){
matlab.eval("integral(1,cont aux)=integral(1,cont aux−1)+(error(1,cont aux−1)+
error(1,cont aux))/2;
u(1,cont aux)=k*error(1,cont aux)+k*(1/Ti)*integral(1,cont aux);
senal control matlab=u(1,cont aux);
DAQ Write(u(1,cont aux),0);figure(1);
line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);hold on;
if (reguladorConN==true){
if (cont==1){
matlab.eval("u(1,cont aux)=0;senal control matlab=u(1,cont aux);
integral(1,cont aux)=error(1,cont aux)*C1;
derivada(1,cont aux)=error(1,cont aux)*C2;DAQ Write(u(1,cont aux),0);
figure(1);line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);hold on;
line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp]);
xlim([0 350]);ylim([0 100]);
pause(1−toc);toc;");
}
if (cont>1){
if (reguladorPN==1){
matlab.eval("u(1,cont aux)=k*(error(1,cont aux));senal control matlab=
u(1,cont aux);
DAQ Write(u(1,cont aux),0);figure(1);
line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);hold on;
line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp]);xlim([0 350]);
ylim([0 100]);pause(1−toc);toc;");
}
if (reguladorPDN==1){
matlab.eval("derivada(1,cont aux)=C2*(error(1,cont aux)+error(1,cont aux−1))+
C3*derivada(1,cont aux−1);u(1,cont aux)=k*(error(1,cont aux)+derivada(1,cont aux));
senal control matlab=u(1,cont aux);DAQ Write(u(1,cont aux),0);figure(1);
line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);hold on;
line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp]);xlim([0 350]);
ylim([0 100]);
pause(1−toc);toc;");
}
if (reguladorPIN==1){
matlab.eval("integral(1,cont aux)=C1*(error(1,cont aux)+error(1,cont aux−1))+
integral(1,cont aux−1);u(1,cont aux)=k*(error(1,cont aux)+integral(1,cont aux));
senal control matlab=u(1,cont aux);DAQ Write(u(1,cont aux),0);figure(1);
line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);hold on;
line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp]);xlim([0 350]);
ylim([0 100]);
pause(1−toc);toc;");
}
if (reguladorPIDN==1){
matlab.eval("integral(1,cont aux)=C1*(error(1,cont aux)+error(1,cont aux−1))+
integral(1,cont aux−1);derivada(1,cont aux)=C2*(error(1,cont aux)+
error(1,cont aux−1))+C3*derivada(1,cont aux−1);u(1,cont aux)=k*(error(1,cont aux)+
integral(1,cont aux)+derivada(1,cont aux));senal control matlab=u(1,cont aux);
DAQ Write(u(1,cont aux),0);figure(1);
line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);hold on;
line([lectura(1,cont aux−1) lectura(1,cont aux)],[sp sp]);xlim([0 350]);
ylim([0 100]);
pause(1−toc);toc;");
}
}
}
if(relay feedback==true){
if(nivel ejs < (sp−ancho ventana)){
matlab.eval("u(1,cont aux)=100;senal control matlab=u(1,cont aux);
DAQ Write(u(1,cont aux),0);
figure(1);line([lectura(1,cont aux−1) lectura(1,cont aux)],
[lectura(2,cont aux−1) lectura(2,cont aux)]);xlim([0 350]);ylim([0 100]);
pause(1−toc);toc;");
}
//Declaracion en Matlab
matlab.eval("lectura=zeros([2,350]);");
matlab.eval("error=zeros([1,350]);");
matlab.eval("u=zeros([1,350]);");
matlab.eval("integral=zeros([1,350]);");
matlab.eval("derivada=zeros([1,350]);");
matlab.eval("nombre='prueba';");
//Inicialización de variables
matlab.set(cont aux,0);
En el Botón Desconectar, se escribe una señal de control nula sobre el sistema, se de-
tiene la comunicación con la tarjeta de adquisición de datos y se cierra la sesión activa de
Matlab.
//Desconexión
matlab.eval("DAQ Write(0,0)");
matlab.eval("DAQ Stop");
matlab.disconnect();
La programación de los botones de elección de los reguladores es similar para todos los
casos. Se indica si se ha elegido un regulador con corrección o sin corrección y el tipo de
reguladorP=1;
reguladorPI=0;
reguladorPD=0;
reguladorPID=0;
reguladorSinN=true;
reguladorConN=false;
relay feedback=false;
reguladorP=0;
reguladorPI=1;
reguladorPD=0;
reguladorPID=0;
reguladorSinN=true;
reguladorConN=false;
relay feedback=false;
reguladorP=0;
reguladorPI=0;
reguladorPD=1;
reguladorPID=0;
reguladorSinN=true;
reguladorConN=false;
relay feedback=false;
reguladorP=0;
reguladorPI=0;
reguladorPD=0;
reguladorPID=1;
reguladorSinN=true;
reguladorConN=false;
relay feedback=false;
reguladorPN=1;
reguladorPIN=0;
reguladorPDN=0;
reguladorPIDN=0;
reguladorSinN=false;
reguladorConN=true;
relay feedback=false;
reguladorPN=0;
reguladorPIN=1;
reguladorPDN=0;
reguladorPIDN=0;
reguladorSinN=false;
reguladorConN=true;
relay feedback=false;
reguladorPN=0;
reguladorPIN=0;
reguladorPDN=1;
reguladorPIDN=0;
reguladorSinN=false;
reguladorConN=true;
relay feedback=false;
reguladorPN=0;
reguladorPIN=0;
reguladorPDN=0;
reguladorPIDN=1;
reguladorSinN=false;
reguladorConN=true;
relay feedback=false;
El menú de Parámetros contiene un sub-menú que permite abrir las ventanas de inserción
de parámetros para el regulador seleccionado o para el método del Relay - Feedback.
parametros visible=true;
parametros RF visible=false;
En el Botón Parámetros Relay - Feedback se activa una variable que rige la apertura y el
cierre de la ventana de inserción de parámetros del método de Relay - Feedback.
parametros RF visible=true;
parametros visible=false;
graficas visible=true;
try {
Desktop.getDesktop().browse(new URI("http://193.147.32.125:85/"));
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "No se ha podido cargar la página");
}
En el Botón Relay - feedback se activa una variable que indica la selección del método.
relay feedback=true;
reguladorSinN=false;
reguladorConN=false;
El menú de ejemplos contiene un sub-menú que permite elegir las ecuaciones utilizadas
para la obtención de los parámetros propios del regulador. Se puede elegir entre: Ziegler -
Nichols, Ziegler - Nichols No Overshoot, Ziegler - Nichols Some Overshoot y Tyreus - Luyben.
Los reguladores implementados en los ejemplos son PID sin corrección.
reguladorSinN=true;
reguladorPID=1;
sp=50;
k=1.25;
Ti=15;
Td=3.75;
matlab.set(k string,k);
matlab.set(Ti string,Ti);
matlab.set(Td string,Td);
matlab.set(sp string,sp);
reguladorSinN=true;
reguladorPID=1;
sp=50;
k=0.42;
Ti=30;
Td=10;
matlab.set(k string,k);
matlab.set(Ti string,Ti);
matlab.set(Td string,Td);
matlab.set(sp string,sp);
reguladorSinN=true;
reguladorPID=1;
sp=50;
k=0.69;
Ti=15;
Td=10;
matlab.set(k string,k);
matlab.set(Ti string,Ti);
matlab.set(Td string,Td);
matlab.set(sp string,sp);
reguladorSinN=true;
reguladorPID=1;
sp=50;
k=0.943;
Ti=66;
Td=4.762;
matlab.set(k string,k);
matlab.set(Ti string,Ti);
matlab.set(Td string,Td);
matlab.set(sp string,sp);
//Limpiar gráficas
min=0;
max=350;
limpiar grafica=true;
matlab.eval("cla reset");
matlab.eval("archivo ruta");
play()
En el botón de paro se inicializan todas las variables del proceso y se para la simulación.
matlab.eval("DAQ Write(0,0)");
matlab.eval("sp=0;");
matlab.eval("k=0;");
matlab.eval("Ti=0;");
matlab.eval("Td=0;");
matlab.eval("C1=0;");
matlab.eval("C2=0;");
matlab.eval("C3=0;");
matlab.eval("N=0;");
matlab.eval("ancho ventana=0;");
matlab.eval("lectura=zeros([2,350]);");
matlab.eval("error=zeros([1,350]);");
matlab.eval("u=zeros([1,350]);");
matlab.eval("integral=zeros([1,350]);");
matlab.eval("derivada=zeros([1,350]);");
matlab.eval("nivel ejs=0;");
matlab.eval("error ejs=0;");
matlab.eval("senal control ejs=0;");
matlab.set(cont aux,0);
cont=0;
reguladorP=0;
reguladorPI=0;
reguladorPD=0;
reguladorPID=0;
reguladorPN=0;
reguladorPIN=0;
reguladorPDN=0;
reguladorPIDN=0;
relay feedback=false;
reguladorSinN=false;
reguladorConN=false;
matlab.eval("fclose(fileID);");
pause()
La pantalla de inserción de los parámetros del regulador se abre al realizar click sobre el
botón Parámetros, mostrado en la figura 8.4.1.4.
Esta ventana se muestra cuando se cumple la condición variables visible=true. Está forma-
da por 5 campos de inserción de valor: k, Td, Ti, Sp y N.
Las propiedades que muestra un campo numérico son las siguientes:
matlab.set(k string,k);
matlab.set(Td string,Td);
if(N!=0){
C2=(2*Td)/(2*(Td/N)+1);
C3=((2*Td/N)−1)/((2*Td/N)+1);
matlab.set(C2 string,C2);
matlab.set(C3 string,C3);
}
matlab.set(Ti string,Ti);
if(Ti!=0){
C1=1/(2*Ti);
matlab.set(C1 string,C1);
}
matlab.set(sp string,sp);
matlab.set(N string,N);
if(C2!=0){
C2=(2*Td)/(2*(Td/N)+1);
matlab.set(C2 string,C2);
}
if(C3!=0){
C3=((2*Td/N)−1)/((2*Td/N)+1);
matlab.set(C3 string,C3);
}
Esta ventana se compone por dos campos numéricos de inserción, uno está destinado a
la consigna y el otro al ancho de ventana.
La pantalla de gráficos está destinada a mostrar la evolución de las señales nivel, consigna,
error y señal de control. El aspecto de esta ventana se muestra en la siguiente imagen:
Esta ventana está compuesta por un panel con ejes, de 4 trazas (una por señal) y un menú
situado en la parte inferior que permite seleccionar las variables que se deben de mostrar y
permite accionar la propiedad Autoescale. La variable que rige la apertura de esta ventana es
graficos visible=true.
Autoscala X: autoescale x
Autoscala Y: false
Mı́nimo X: min
Máximo X: max
Mı́nimo Y: 0
Máximo Y: 100
Tı́tulo X: Tiempo
Tı́tulo Y: Nivel( %)
8.4.4.2. Trazas
Se introducen cuatro trazas en el elemento panel con ejes para representar la respuesta
de las variables nivel, error, set point y señal de control.
Las propiedades que se pueden configurar en el elemento traza se muestran en la imagen
siguiente:
Entrada X: cont
Entrada X: cont
Entrada Y: sp
Visible: SP visible
Entrada X: cont
Entrada X: cont
Seleccion: true
Texto: Nivel
Variable: sp visible
Seleccion: false
Texto: SP
Seleccion: false
Seleccion: false
Texto: Error
Variable: autoescale x
Selección: false
Texto: Autoscale
La gestión de esta función se realiza en el apartado de relaciones fijas. Esta gestión con-
siste en ubicar los lı́mites del eje X cuando se de-selecciona la opción Autoscale.
El código de esta función es el siguiente:
Tras el inicio de sesión en Matlab, se obtienen los parámetros del regulador por el método
de Relay Feedback. Se accede a Diseño Regulador – Cadena Cerrada – Relay - Feedback.
A continuación se insertan los parámetros para la realización de este método. Para ello se
accede a Parámetros – Parámetros Relay - Feedback.
Tras estudiar la respuesta del método de Relay - Feedback se obtienen los siguientes
parámetros:
Parámetro Valor
Tc 30
a 32
4 ∗ 50
Kc = √ = 2,094
π ∗ 322 − 102
Mediante el uso de la ecuación 7.2.4.1, se obtienen los parámetros del regulador corres-
pondientes a la aproximación de Ziegler - Nichols.
Parámetro Valor
k 1,25
Ti 15
Td 3,75
Tabla 8.5.0.2 – Valor de los parámetros del regulador mediante Ziegler - Nichols
Parámetro Valor
k 0,42
Ti 30
Td 10
Tabla 8.5.0.3 – Valor de los parámetros del regulador mediante Ziegler - Nichols No Overshoot
Haciendo uso de la ecuación 7.2.4.2 se obtienen los parámetros mediante Ziegler - Nichols
Some Overshoot.
Parámetro Valor
k 0,69
Ti 15
Td 10
Tabla 8.5.0.4 – Valor de los parámetros del regulador mediante Ziegler - Nichols Some Overshoot
Parámetro Valor
k 0,94
Ti 66
Td 4,76
Tabla 8.5.0.5 – Valor de los parámetros del regulador mediante Tyreus - Luyben
Una vez obtenidos los parámetros propios del regulador, se procede a su implantación.
Para ello se debe de acceder a Regulador y elegir el regulador a implementar.
Tras introducir los parámetros, el regulador está listo para su puesta en funcionamiento. Se
pulsa el botón de MARCHA ubicado en la pantalla de inicio y se implementa el regulador.
Durante el funcionamiento del regulador se puede ver el estado fı́sico de la planta en tiem-
po real accediendo a Visualización – Visualización. Se abre una página en el navegador de
internet predeterminado del usuario y se muestra la imagen de la web cam.
Para ver gráficamente la respuesta del regulador se debe de acceder a Gráficas – Mostrar
Gráfica.
Figura 8.5.1.5 – Respuesta regulador Ziegler - Nichols Some Overshoot en Remote EUP.
Para los reguladores con corrección se ha utilizado una N de 0.01, con un valor tan bajo
reducimos la acción derivativa y se consigue una respuesta buena sobre el sistema.
Figura 8.5.2.1 – Respuesta regulador Ziegler - Nichols con corrección en Remote EUP.
Figura 8.5.2.3 – Respuesta regulador Ziegler - Nichols No Overshoot con corrección en Remote EUP.
Figura 8.5.2.4 – Respuesta regulador Ziegler - Nichols No Overshoot con corrección en Matlab.
Figura 8.5.2.5 – Respuesta regulador Ziegler - Nichols Some Overshoot con corrección en Remote
EUP.
Figura 8.5.2.6 – Respuesta regulador Ziegler - Nichols Some Overshoot con corrección en Matlab.
Figura 8.5.2.7 – Respuesta regulador Tydeus - Luyben con corrección en Remote EUP.
En el desarrollo de Remote EUP se ha decidido hacer uso de matrices fijas en Matlab por
motivos de eficiencia, por lo que solo se guardan los últimos 350 puntos de la simulación. Para
no perder todos los datos del proceso, se almacena una base de datos en el ordenador local
y una base de datos en el ordenador remoto. Esta base de datos presenta un formato .csv,
por lo que se puede abrir con cualquier editor de texto. Una vez finalizada una simulación se
puede acceder a esta base de datos y manejar los datos de la simulación. A continuación se
muestra como ejemplo la representación en el programa Microsoft Excel de la respuesta del
regulador obtenido mediante la aproximación de Ziegler - Nichols.
El primer principio para dar un regulador como válido es que el tiempo de muestreo para su
implantación debe de ser constante. En este caso se ha seleccionado el tiempo de muestreo
de un segundo. Este tiempo de muestreo es suficiente para realizar la regulación sobre la
planta de nivel y es lo suficientemente grande como para no saturar la red. Se imprime en la
pantalla de Matlab el tiempo de muestreo en cada iteración mediante la orden tic y toc.
ANEXOS
15405 - FERROL
AUTOR: EL ALUMNO
10 Cálculos 129
9 Documentación de partida
Título T.F.G:Control remoto sobre la planta pequeña de control de nivel del laboratorio
La descripción y objetivos del Trabajo son los que figuran en el reverso de este documento:
Retirei o meu Traballo Fin de Grado o dia _____ de ______ do ano ___________
ALCANCE:
Los pasos que se siguen para la realización de este proyecto son los siguientes:
- Estudio y comprensión del entorno de programación EASY JAVA SIMULATIONS.
- Estudio específico para el caso de estudio de la programación en Matlab.
- Realizar la conexión entre EASY JAVA SIMULATIONS y MATLAB.
- Programar la interface en EASY JAVA SIMULATIONS.
- Pruebas y validación de la propuesta sobre la planta de laboratorio.
- Estudio comparativo de diferentes alternativas y propuestas de ampliación.
- Análisis de resultados y extracción de conclusiones.
E.U.P. GRADO EN INGENIERÍA ELECTRÓNICA TFG Nº: 770G01A123
10 Cálculos
Tras estudiar la respuesta del método de Relay - Feedback de la figura 8.5.0.6 se obtienen
los siguientes parámetros:
Parámetro Valor
Tc 30
a 32
4 ∗ 50
Kc = √ = 2,094
π ∗ 322 − 102
Mediante el uso de la ecuación 7.2.4.1, se obtienen los parámetros del regulador corres-
pondientes a la aproximación de Ziegler - Nichols.
Parámetro Valor
k 1,25
Ti 15
Td 3,75
Tabla 10.0.0.2 – Valor de los parámetros del regulador mediante Ziegler - Nichols
Parámetro Valor
k 0,42
Ti 30
Td 10
Tabla 10.0.0.3 – Valor de los parámetros del regulador mediante Ziegler - Nichols No Overshoot
Haciendo uso de la ecuación 7.2.4.2 se obtienen los parámetros mediante Ziegler - Nichols
Some Overshoot.
Parámetro Valor
k 0,69
Ti 15
Td 10
Tabla 10.0.0.4 – Valor de los parámetros del regulador mediante Ziegler - Nichols Some Overshoot
Parámetro Valor
k 0,94
Ti 66
Td 4,76
Tabla 10.0.0.5 – Valor de los parámetros del regulador mediante Tyreus - Luyben
11 Otros Anexos
end
global AO
end
global AI
Input data=getsample(AI);
end
global AI
global AO
end
PLANOS
15405 - FERROL
AUTOR: EL ALUMNO
Índice de planos
PLIEGO DE CONDICIONES
15405 - FERROL
AUTOR: EL ALUMNO
12 Condiciones de Trabajo
Todas las pruebas del presente Trabajo Fin de Grado se han realizado en el laboratorio de
optimización y control de la Escuela Universitaria Politécnica de Serantes.
Se han realizado en un entorno limpio y seco, a una temperatura ambiente de 22ºC.
El depósito inferior que surte de lı́quido al superior, siempre se ha encontrado al máximo de
se capacidad para no dañar la integridad del sistema durante el periodo de pruebas. La planta
de nivel se encuentra sobre una superficie nivelada y rugosa para evitar caı́da de lı́quido.
Toda prueba realizada que no cumpla estas condiciones de trabajo no será válida.
ESTADO DE MEDICIONES
15405 - FERROL
AUTOR: EL ALUMNO
13 Mano de Obra
Pruebas finales 60
Total 196
PRESUPUESTO
15405 - FERROL
AUTOR: EL ALUMNO
16 Presupuesto 161
14 Mano de Obra
15 Licencias software
Las licencias software necesarias para la realización de Remote EUP son las siguientes:
Total 1000
16 Presupuesto
IVA 21 % 1444.8
Total 8324.8
15405 - FERROL
AUTOR: EL ALUMNO