Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de...

39
Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de iones TRABAJO DE FIN DE GRADO Dirigido José Luis Ramírez Falo Grado de Ingeniería Electrónica Industrial y Automática Tarragona 2016

Transcript of Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de...

Page 1: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Iván Gómez Partido

Interfaz de usuario para equipo de medida de concentración de iones

TRABAJO DE FIN DE GRADO

Dirigido José Luis Ramírez Falo

Grado de Ingeniería Electrónica Industrial y Automática

Tarragona

2016

Page 2: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Información Confidencial

Esta es la versión pública del documento.

Para su publicación y siguiendo las instrucciones del acuerdo de confidencialidad (ver

página siguiente) del Trabajo Final de Grado, han sido eliminadas de la versión íntegra del

documento las partes del contenido de carácter confidencial.

Para más información:

NT Sensors, S.L.

C/Jaume I, nº23

43764 El Catllar

Teléfono 977653925

Page 3: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración
Page 4: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 1. Índice general

4

1 Índice general

1 Índice general ............................................................................................................................. 4

1.1 Índice de figuras ................................................................................................................. 6

2 Introducción ............................................................................................................................... 7

3 Objetivos .................................................................................................................................... 8

3.1 Diseño ................................................................................................................................ 8

3.2 Configuración del sistema .................................................................................................. 8

3.3 Resultados de las muestras ................................................................................................. 9

3.4 Otras funcionalidades ......................................................................................................... 9

4 Antecedentes............................................................................................................................. 10

5 Comunicación PC-Equipo ........................................................................................................ 11

6 Configuración sonda y solución de calibración ....................................................................... 15

6.1 Configuración sonda ........................................................................................................ 15

6.2 Configuración solución de calibración ............................................................................. 17

6.3 Guardar en memoria no volátil configuración sonda y solución ...................................... 18

6.4 Visualización sonda y solución configurada ................................................................... 21

7 Calibración del equipo ............................................................................................................. 22

7.1 Actuación bombas calibración ......................................................................................... 22

7.2 Visualización resultados calibración ................................................................................ 24

7.3 Calibración del pH ........................................................................................................... 25

7.4 Guardar parámetros de calibración del pH ....................................................................... 26

8 Realización de medidas y visualización de resultados ............................................................. 27

8.1 Actuación bombas ............................................................................................................ 27

8.2 Monitorización resultados de las medidas........................................................................ 28

8.2.1 Tabla resultados última medida ............................................................................... 28

8.2.2 Gráfica resultados de medidas ................................................................................. 29

9 Configuración del equipo ......................................................................................................... 30

10 Horario calibración y medidas .............................................................................................. 31

11 Alarmas ................................................................................................................................ 32

12 Juego de pruebas ................................................................................................................. 33

13 Resultados y conclusiones .................................................................................................... 36

14 Referencias ........................................................................................................................... 37

Page 5: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 1. Índice general

5

15 Anexos .................................................................................................................................. 39

Page 6: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 1. Índice general

6

1.1 Índice de figuras

Figura 1. Estructura proyecto C# .................................................................................................... 11

Figura 2: Selección de equipo si hay más de uno conectado .......................................................... 13

Figura 3: Ventana configuración sonda .......................................................................................... 16

Figura 4: Ventana configuración solución de calibración .............................................................. 18

Figura 5: Mensaje espera secuencia de inicio ................................................................................. 20

Figura 6: Ventana visualización sonda y solución .......................................................................... 21

Figura 7: Ventana resultados calibración ........................................................................................ 24

Figura 8: Mensaje calibración pH ................................................................................................... 25

Figura 9: Vista ventana principal interfaz ....................................................................................... 28

Figura 10: Tabla resultados última medida ..................................................................................... 29

Figura 11: Gráfica evolución de la concentración de diferentes muestras ...................................... 29

Figura 12: Ventana configuración offsets bombas y número de muestra ....................................... 30

Figura 13: Horario muestras y calibración ...................................................................................... 31

Figura 14: Ventana configuración alarma ....................................................................................... 32

Figura 15: Aviso de sonda no configurada ..................................................................................... 33

Figura 16: Aviso de solución no configurada ................................................................................. 33

Figura 17: Resultados medidas ....................................................................................................... 34

Figura 18: Gráfica resultados medidas juego de pruebas ............................................................... 35

Page 7: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 2. Introducción

7

2 Introducción

En el segundo cuatrimestre del cuarto curso del Grado de Ingeniería Electrónica

Industrial y Automática realicé prácticas en la empresa NT Sensors, S.L., una PYME

situada en el municipio El Catllar, perteneciente a la provincia de Tarragona.

La actividad principal de la empresa se centra en la producción de sensores basados

en nanotubos de carbono. Los equipos producidos en NT Sensors se caracterizan por la

capacidad de medir la concentración de iones en el agua, que son de gran utilidad en

agricultura y plantas de tratamiento de aguas. Puesto que permiten determinar la

concentración de hasta 8 iones en un minuto en el lugar donde se encuentra el agua que se

desea analizar, sin la necesidad de enviar las muestras a un laboratorio.

NT Sensors me ha ofrecido la oportunidad de realizar el Trabajo de Fin de Grado

en su empresa. Trabajando en un proyecto de uno de sus equipos. Este, consiste en la

elaboración de una interfaz de usuario sobre Windows para el Automatic Multi Ion

Analisys, un sistema automático que permite cuantificar simultáneamente la concentración

de iones en una sola muestra. Esto se consigue a partir de la actuación de unas bombas, que

introducen las soluciones de calibración y el agua a medir en una celda donde se encuentra

la sonda Multi Ion.

Page 8: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 3. Objetivos

8

3 Objetivos

Los objetivos del proyecto se basan principalmente en proveer al cliente de un

software intuitivo, que permita configurar el sistema y proporcionar toda la información

referente al mismo de una forma clara.

Para conseguir estos objetivos desde la empresa se marcan una serie de

especificaciones:

3.1 Diseño

La interfaz se debe estructurar en diferentes ventanas, en las cuales se puedan

realizar todas las configuraciones pertinentes al sistema. En la ventana principal, se deben

mostrar tanto las gráficas donde se aprecie la evolución temporal de la concentración de los

iones, como los valores de la última medida.

3.2 Configuración del sistema

A un PC pueden haber conectados diferentes equipos, por tanto, al ejecutar el

software, si únicamente hay uno conectado, debe conectarse a ese. Si hay más

equipos, se debe preguntar al usuario a cual se quiere conectar.

Sonda y solución de calibración. La primera vez que se ejecute la interfaz, el

usuario debe de configurar la sonda y las soluciones. En el caso de la sonda, se

basará únicamente en seleccionar que iones se van a medir. Al configurar la

solución, se debe introducir que iones se encuentran en la solución así como la

concentración de cada ion.

Horario. Una vez configuradas sonda y soluciones de calibración, se debe mostrar

un horario, donde se pueda seleccionar a qué horas se realizaran las calibraciones.

Muestras. Del mismo modo que en el caso de la calibración, se debe mostrar un

horario donde el usuario pueda escoger a qué horas se realizaran las medidas.

También se debe poder seleccionar el número de muestras. Por ejemplo, en el

proceso de tratamiento de aguas, se toma una muestra del agua de entrada y otra de

salida para poder apreciar la efectividad del proceso.

Alarmas. Para conseguir un software de mayor funcionalidad, se le debe permitir

al usuario poder configurar unos rangos para concentración de cada ion, superados

estos se debe producir una alarma.

Page 9: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 3. Objetivos

9

3.3 Resultados de las muestras

Para mostrar los resultados, se requiere una gráfica para cada muestra, en la cual se

pueda apreciar la evolución de la concentración de los iones en el tiempo. En dicha gráfica

se debe poder seleccionar los iones que se quieren observar en un momento determinado.

Poder variar las escalas, para así poder apreciar los resultados con más detalle.

Como he comentado anteriormente, con las gráficas deben aparecer también los

valores numéricos de la última concentración medida de cada ion.

3.4 Otras funcionalidades

La medida de la concentración de los diferentes iones se realiza a partir de la

ecuación de una recta. Por lo que el proceso de calibración consiste en ajustar los

parámetros de la pendiente y la intersección de dicha recta.

Para facilitar los parámetros correspondientes a la calibración, al usuario, se debe

configurar una ventana. Donde en una tabla debe constar la siguiente información para

cada ion:

Pendiente. (Cada ion cuenta con un rango diferente en el cual puede variar la

pendiente, dentro del correspondiente rango la calibración es correcta, como el

usuario no tiene por qué conocer los diferentes rangos para cada ion, se debe

indicar si el valor obtenido es correcto).

Intersección

Temperatura de la solución.

Hora de calibración

Fecha de calibración

Para el usuario es muy importante poder ver en un histórico el día y la hora en la

que han saltado las alarmas, se ha realizado una medida, calibración, limpiado, etc. Por lo

tanto, se debe mostrar un histórico en el que se muestre toda la información mencionada

anteriormente. Además el usuario debe poder filtrar que información ver, por ejemplo,

únicamente alarmas.

La interfaz debe contener la posibilidad de configurar una serie de avisos por e-

mail, en el momento que salte alguna alarma.

El software a realizar debe ser bilingüe, debido a que los clientes de la empresa no

son únicamente a nivel nacional, ya que sus equipos son exportados a diferentes países del

mundo. Por lo tanto, debe estar disponible en inglés y castellano.

Para finalizar este apartado, comentar que el software se realizará con el entorno de

programación Microsoft Visual Studio 2010 en el lenguaje C#. Un lenguaje de

programación orientado a objetos desarrollado y estandarizado por Microsfoft. Su sintaxis

básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de

Java[1].

Page 10: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 4. Antecedentes

4 Antecedentes

Para comenzar este apartado me gustaría dar una idea del estado del equipo a la

hora de iniciar el proyecto.

El sistema se basa en una PCB, donde se conecta la sonda Multi Ion. La cual

contiene diferentes electrodos, cada uno correspondiente a un ion. Cada electrodo se

conecta a un canal de entrada de la placa. Con tal de garantizar una impedancia de entrada

mínima y filtrar el máximo ruido posible, se aplica un seguidor de tensión mediante el

integrado LMC6484. Posteriormente, se realiza un filtrado con un filtro RC de R = 10 kΩ

y C = 0,22 uF y un seguidor de tensión mediante el integrado OPA4277. Una vez filtradas,

las señales son multiplexadas (DG408DJ) con tal de obtener como única salida el canal

seleccionado, posteriormente se realiza una conversión Analógica/Digital, una vez

convertida la señal se introduce en el microcontrolador PIC18F4550 de Microchip. El

micro contiene el firmware que actualiza el estado de las bombas, que llenarán una celda

donde se encuentra la sonda Multi Ion, ya sea de soluciones de calibrado, agua que se

desea medir o agua para limpiar la sonda. El firmware ya se encuentra realizado, por lo que

en este proyecto únicamente se realizaran algunas modificaciones que puedan surgir.

El sistema AMIC, se encuentra en funcionamiento, pero sus posibilidades son muy

limitadas. El usuario puede interactuar con el mediante 3 pulsadores, que permiten realizar

calibrado, limpiado y medidas puntualmente. Y los resultados obtenidos en las medidas

son introducidos en una tarjeta de memoria SD.

Las configuraciones referentes a la sonda, soluciones de calibración, frecuencia de

calibración y medida, va configurado en el firmware.

Esto da lugar a que cada cliente cuente con un firmware personalizado según sus

especificaciones. Esto presenta un problema. Si el cliente desea realizar alguna

modificación en su equipo, como puede ser añadir un ion. Se dispone únicamente de dos

opciones, o el cliente hace llegar el equipo a las instalaciones de NT Sensors para ser

modificado o se tendría que desplazar algún empleado del servicio técnico al lugar donde

el cliente tenga instalado su equipo.

Por tanto, la realización de esta interfaz es de gran importancia puesto que permitirá

realizar configuraciones en el equipo de una manera más sencilla. El propio cliente podrá

realizarlas. Por otro lado el cliente obtendrá mucha más información ya que podrá ver los

parámetros de calibración y si son correctos. A la hora de apreciar los resultados de las

medidas, en lugar de obtener los valores numéricos, y tener que realizar las gráficas el

propio cliente, la propia interfaz le mostrará las gráficas. Además, con la posibilidad de

configurar rangos por el cliente, se podrá observar de manera instantánea por medio de las

alarmas que se ha superado un valor en la concentración de cualquier ion y podrá realizar

las correcciones pertinentes de una forma más rápida.

Page 11: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 5. Comunicación PC-Equipo

11

5 Comunicación PC-Equipo

La comunicación entre el PC y el equipo se realizara mediante comunicación serie

RS-232, por especificación de la empresa.

En primer lugar, apuntar que el lenguaje de programación C# es prácticamente

nuevo para mí. Por lo que para realizar este proyecto he utilizado como guía la MSDN, del

inglés (Microsoft Developer Network)[2]. Un lugar, donde los desarrolladores de software

de plataformas de Microsoft podemos encontrar la información necesaria para llevar a cabo

los proyectos.

Para empezar a programar la interfaz, he creado el proyecto (AMI C7 Auto) donde

programaré todas las ventanas de configuración, muestra de resultados, etc. También he

creado una librería (ntDriver) en la cual estarán todas las funciones que estén relacionadas

con la comunicación entre en el PC y el equipo.

Figura 1. Estructura proyecto C#

El primer paso a la hora de iniciar la programación es crear la ventana principal del

programa. Como se puede apreciar en la Figura 1, está ventana la he nombrado

FormPrincipal. Este formulario, se trata de una Form. Como apuntan desde MSDN, se trata

de una ventana o cuadro de dialogo que constituye la interfaz de usuario de una

aplicación[3].

Page 12: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 5. Comunicación PC-Equipo

12

El código de esta ventana, en este capítulo del proyecto, únicamente contendrá las

instrucciones para establecer la comunicación entre el Pc y el Equipo. En próximos

capítulos se extenderá para mostrar la información pertinente que se detalla en el capítulo

correspondiente a los objetivos.

En el código correspondiente a la ventana principal, en primer lugar instancio un

objeto de la clase ntDevice (donde se encuentran las funciones relacionadas con la

comunicación con el equipo automático). Para establecer la comunicación con el equipo se

utiliza la clase SerialPort[4]. Esta clase es proporcionada por las librerías contenidas en el

entorno de programación. Para todas las clases proporcionadas por las librerías, se debe

consultar el capítulo correspondiente en la MSDN para apreciar las propiedades y métodos

que nos ofrecen, así como algunos ejemplos que son de gran ayuda.

Una de las especificación que debe cumplir el software es que a un PC pueden

haber conectados diferentes equipos AMIC. En el caso de que se encuentren varios equipos

conectados, al ejecutar el software se debe preguntar al usuario a cuál de ellos se quiere

conectar.

Para abordar esta especificación, se realiza una encuesta mediante un bucle de 6

iteraciones (ya que los PC suelen contar como máximo con 6 puertos de comunicación),

donde se comprueba si en cada uno de esos puertos se encuentra un equipo AMIC

conectado. Previamente, se comprueba si la comunicación serie se encuentra abierta, de ser

así se cerraría mediante el método Close(). Esto se realiza, debido a que si la comunicación

serie se encuentra abierta, a la hora de intentar establecerla da problemas. Una vez

asegurado que la comunicación está cerrada, se establecen los tiempos de espera de lectura

y escritura del puerto de comunicación. Esto se realiza mediante las propiedades

ReadTimeout y WriteTimeout respectivamente.

El bucle de 6 iteraciones que comentaba en la párrafo anterior, se basa en enviar por

cada uno de los puertos de comunicación la trama {0x70, 0x00, 0x00, 0x00}. Donde el

primer byte correspondiente (0x70) corresponde al código de operación correspondiente a

operación de solicitar información del firmware. Todos códigos de operación se encuentran

en el Anexo 15.2 correspondiente al protocolo de comunicación. En los puertos en los que

se encuentre un equipo conectado, se recibirá una trama de la siguiente estructura:

Primer byte = 0x23 (Inicio de trama)

Segundo byte = 0x07 (Operación de enviar información del firmware)

Undécimo byte = 0x7A (Final de trama)

Por lo tanto, en todos los puertos que se cumplan esas condiciones se guardará en

un objeto instanciado de la clase Dictionary <TKey, TValue>[5], correspondiente a una

lista de claves y valores. En la clave se guardará el nombre del equipo, obtenido en los

bytes del 3 al 8 de la trama recibida. El nombre del equipo cumplirá la estructura “AMIC7

más un número, por ejemplo, AMIC7 25. En el valor se guardará el puerto en el que se ha

localizado este equipo. Guardarlo en un objeto de la clase Dictionary ayuda a simplificar el

código ya que, en una lista obtendremos el nombre del equipo con el correspondiente

puerto al que está conectado. Sin la necesidad de crear una clase exclusiva para esta

función.

Page 13: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 5. Comunicación PC-Equipo

13

Una vez comprobados los equipos que se encuentran conectados a los puertos de

comunicación del PC se pueden dar 3 casos:

Que no haya ningún equipo conectado.

Que únicamente haya conectado un solo equipo. Por tanto, se establecerá la

comunicación.

Que hayan conectados más de un equipo. Se deberá preguntar al usuario a que

equipo se quiere conectar. Para ello creo una ventana, como se muestra en la

Figura 2, en la que se muestra los nombres de los equipos conectados. El usuario

deberá seleccionar con cual desea establecer la comunicación.

Figura 2: Selección de equipo si hay más de uno conectado

El código fuente correspondiente a esta ventana se puede consular en el Anexo

15.1.21 FormselDevice.

Para establecer la comunicación, ya sea en el segundo caso o en el tercero, he

creado función connect() en la clase ntDevice, a la cual se le pasa la clave del puerto en el

que está conectado el equipo con el que se desea establecer la comunicación. En la

propiedad PortName, correspondiente a la clase SerialPort, se establece el nombre del

puerto con el que se debe establecer la comunicación. El nombre corresponderá al valor

ligado a la clave, de la lista creada a la hora de analizar cuantos equipos habían conectados.

Establecida la comunicación entre el PC y el equipo, es necesario conocer en qué

estado se encuentra. Ya que puede estar en reposo, inicializando, llenando la celda de

solución de calibración o de agua para analizar. Para ello se le envía la trama que solicita el

estado. Esta trama, es de 4 bytes. El código de operación correspondiente para solicitar el

estado del equipo es 0x50. Enviada esta solicitud, se espera que el equipo devuelva la

información pertinente. Por tanto, he configurado un evento (serial_DataReceived,

pudiéndose consultar en el Anexo 15.1.24 ntDevice), que se ejecutará cuando se reciba

información proveniente del equipo. Todas las tramas recibidas tendrán como primer byte

(0x23) y el último (0x74). El segundo byte informará que tipo de información se está

recibiendo, cuando se reciba el estado del equipo, el byte de operación correspondiente es

el 0x05. El detalle de las tramas se puede consultar en el Anexo 15.2.

Page 14: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 5. Comunicación PC-Equipo

14

Una vez recibida la información se deben actualizar las variables.

Durante la realización de este Trabajo de Fin de Grado, he comprendido lo

importante que es el conocer el estado del equipo en todo momento para realizar una

correcta sincronización. Por ejemplo, al ejecutar la aplicación si el equipo se encontraba

realizando la secuencia de inicialización. El software debía esperar a que finalizase,

teniendo en cuenta que si en la celda permanecían restos de alguna muestra al introducir

algún patrón de calibración u otra muestra se contaminaban.

También es importante que el usuario conozca en qué estado se encuentra su

equipo. Para ello he habilitado en el margen inferior, en la izquierda, una etiqueta en la

cual se mostrará en todo momento, que acción está llevando a cabo el equipo. Ya que en el

normal funcionamiento, el usuario escucharía las bombas actuar pero no tendría constancia

de que acción se está realizando. Para mostrar esta información se ha implementado una

etiqueta, en un toolStrip[6].

Page 15: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 6. Configuración sonda y solución

15

6 Configuración sonda y solución de calibración

En este capítulo se tratarán como se definen las ventanas en las que se configurará

las características de la sonda y la solución de calibración. Estas ventanas se implementan

siguiendo las especificaciones impuestas por el cliente, que para el caso de la sonda

consisten en que el usuario debe de introducir el nombre de sonda, que iones mide y si la

sonda cuenta con sensor de pH y temperatura. Respecto a la solución el usuario debe

introducir el nombre de ésta, que iones la componen, la concentración de estos. Para ello,

se han implementado dos Forms, al igual que en el caso de la ventana principal, comentada

en el capítulo anterior. Se utiliza esta clase debido a que es la que nos proporciona el

entorno de programación, que presenta infinidad de facilidades. Ya que en el margen

izquierdo se encuentran todos los elementos que se pueden utilizar para construir las

ventanas (botones, cuadros de texto, CheckBox, etiquetas, etc). Para introducirlos

únicamente hay que arrastrarlos.

Como trabajo previo a la implementación de estas dos ventanas, se han configurado

los iones que puede medir el equipo a día de hoy. Para ello se ha creado una List[7] de

objetos llamada Disponibles. Esta lista contendrá objetos de la clase DisponiblesClass.

Para cada ion se instanciará un objeto de dicha clase. Esta clase contiene toda la

información referente a los iones, el símbolo de la tabla periódica, el nombre del ion.

También contendrá la masa atómica. Esto es necesario para poder presentar los valores de

concentración en mg/l y mmol/l.

Configurada la lista y la clase que contendrá la información, se instancia un objeto

para cada ion y se introduce en la lista. Esto se implementa al inicio de la ejecución del

programa ya que corresponde a una inicialización.

6.1 Configuración sonda

El siguiente paso consiste en implementar la ventana en la que el usuario configure

la sonda. Esta configuración se basa en indicar el nombre la sonda, número de iones, cuales

son estos iones, en que canal están conectados los electrodos e indicar si la sonda cuenta

con sensor de temperatura.

Al igual que en la ventana principal, se crea una instancia de la clase Form. En ella

se configura un cuadro de texto (textBox), donde el usuario introducirá el nombre de su

sonda. Para configurar si la sonda contiene sensor de temperatura y de pH, se han

habilitado dos checkBox, que el usuario deberá de marcar en el caso de poseer en su sonda

alguno de estos sensores.

Respecto a los iones, en primer lugar se ha configurado un ComboBox, es decir, un

desplegable que mostrará valores del 1 al 7, donde el usuario seleccionará el número de

iones de los cuales se va a medir la concentración. Además se configuran otros 7

ComboBox, uno correspondiente a cada canal de la sonda. En cada uno de ellos se

mostrarán todos los iones que se han introducido en la lista (Disponibles) anteriormente. A

partir del valor introducido correspondiente al número de iones, se ocultarán los

ComboBox que no sean necesarios.

Page 16: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 6. Configuración sonda y solución

16

Para facilitar al usuario la operación de configurar la sonda, se inicializa en los

ComboBox la configuración habitual, correspondiente a 7 iones, conteniendo además

sensores de temperatura y pH, y la siguiente distribución de iones por canal:

Canal 1: Calcio

Canal 2: Cloruro

Canal 3: Potasio

Canal 4: Sodio

Canal 5: Amonio

Canal 6: Nitrato

Canal 7: Magnesio

Gracias a esta inicialización, si el usuario cuenta con la configuración de la sonda

habitual, únicamente tendrá que introducir el nombre a la sonda.

Por último se añaden dos botones, uno para guardar la configuración de la sonda y

otro para cancelar. En la Figura 3 se puede apreciar la distribución de los elementos

explicados anteriormente.

El código fuente a la ventana donde se configura la sonda se puede consultar en el

Anexo 15.1.4 FormAddSonda. Por otro lado, la clase donde se alojará la información

configurada se puede consultar el en Anexo 15.1.5 Sonda.

Figura 3: Ventana configuración sonda

Page 17: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 6. Configuración sonda y solución

17

6.2 Configuración solución de calibración

Al igual que para la configuración de la Sonda, para la Solución de calibración se

crea otra ventana.

A la hora de configurar la Solución, el usuario debe de introducir el nombre de ésta,

que iones la componen, la concentración y las unidades de los dos patrones.

Para poder configurar lo comentado en el párrafo anterior, se ha habilitado un

TextBox para introducir el nombre de la Solución. Para fijar las unidades, se ha creado un

ComboBox, en el cual se muestra mg/l y mmol/l. Para introducir los iones con la

correspondiente concentración de los dos patrones, de forma análoga a la ventana de

configuración de la sonda, se añade un desplegable en el cual se mostrarán todos los iones

disponibles. Una vez seleccionado el ion, el usuario tendrá que introducir en dos cuadros

de texto la concentración de los dos patrones. Una vez hecho esto, el usuario deberá

presionar un botón para añadir la información del ion a la solución. Al presionar el botón

para añadir el ion, previamente a ser introducido, se realizan una serie de comprobaciones

que impiden que el usuario pueda introducir valores erróneos. Estas comprobaciones se

basan en verificar si ya hay 7 iones introducidos a la hora de presionar el botón. De ser así

mostrará un mensaje indicando que en una solución de calibración no pueden haber más de

7 iones. La segunda comprobación consiste en asegurarse de que un ion no ha sido

introducido dos veces. Por tanto, si el usuario intenta introducir un ion que previamente ha

sido insertado se le avisará.

Si después de realizar las comprobaciones, todo es correcto se guardará la

información de los patrones introducidos para dicho ion. Para ello se ha creado una clase

llamada ConcentracionesClass(Anexo 15.1.7).

Por tanto, para cada ion que se introduzca en la solución, se instanciará un objeto de

la clase anterior. De forma análoga que cuando se han configurado todos los iones que

puede medir el equipo, se ha creado una lista de objetos de la clase ConcentracionesClass

(Anexo 15.1.7).

Todos los iones introducidos se mostraran en cuadro de texto (Iones añadidos en la

solución) que se aprecia en la Figura 4. Este cuadro de texto ha sido configurado como

solo lectura, para que el usuario no lo pueda modificar.

Finalmente se han habilitado dos botones, uno para guardar la solución y el otro

para cancelar, que cerrará la ventana sin tener en cuenta la información introducida.

Page 18: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 6. Configuración sonda y solución

18

En la Figura 4 se muestra la ventana correspondiente a la configuración de la

solución.

Figura 4: Ventana configuración solución de calibración

El código fuente correspondiente a la ventana anterior se puede consultar en el

Anexo 15.1.6 FormAddSolution.

6.3 Guardar en memoria no volátil configuración sonda y solución

El guardar la configuración de la sonda y la solución en la memoria no volátil del

equipo no se barajó a la hora de fijar las especificaciones de la aplicación. Pero durante la

programación, se contempló como una muy buena opción, ya que otorgaría a la aplicación

un valor añadido. El hecho de no guardar en el PC la configuración de la sonda y hacerlo

en la memoria no volátil del equipo presenta una serie de ventajas.

La primera, es que en el caso de tener guardada esta configuración en el PC, si este

presenta algún problema técnico, teniendo que sustituirlo o formatearlo, esta configuración

se perdería y el usuario debería de introducir la configuración otra vez. La segunda ventaja,

consiste en que el servicio técnico de la empresa, previamente a enviar el equipo realiza

una serie de pruebas para comprobar que su funcionamiento sea el correcto. Al realizar

estas pruebas se introduciría la configuración de la sonda y la solución. Al tener la

configuración guardada en la memoria no volátil, cuando el usuario reciba el equipo no

tendría que realizar la configuración, lo que simplificaría su utilización.

Page 19: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 6. Configuración sonda y solución

19

Al presionar el botón de guardar en la ventana de configuración de la sonda, será

cuando se realice la operación de guardar la configuración en la memoria no volátil del

equipo. Previamente se realizarán las comprobaciones de que todo ha sido introducido

correctamente. En primer lugar, se comprobará de que se haya introducido un nombre a la

sonda, de no ser así se le indicará al usuario. De estar el nombre introducido, este debe

contener 10 caracteres como máximo. Si el nombre introducido contiene más de 10

caracteres se deberá cambiar.

Si todo es correcto se creará un array con la información de la sonda, con el cual se

realizarán 2 acciones.

En primer lugar, se instancia un objeto de la clase sonda (Anexo 15.1.5). Que

contendrá toda la información comentada anteriormente. Mediante este objeto se conocerá

toda la información referente a la sonda a la hora de realizar las calibraciones y las

medidas.

En segundo lugar, se envía este array al equipo, para guardarlo en la memoria no

volátil. Para ello se ha creado una función GuardaNVolatil() Anexo 15.1.24 ntDevice, la

cual únicamente escribirá la trama en el puerto en el que esté conectado el equipo. La

estructura de la trama se puede consultar en el Anexo 15.2.

Como en un principio no estaba contemplado guardar en la memoria no volátil del

equipo estas configuraciones, se deberán realizar modificaciones en el firmware.

Una vez disponible la información en el micro. Se deben estudiar las posibilidades

que este presenta para guardar en memoria no volátil. Para ello se consultó el Data Sheet

del micro[8]. A simple inspección se observa que el PIC presenta dos opciones de memoria

no volátil. Por un lado una EEPROM y por otro la Flash. Al estudiar los capítulos

correspondientes en el Data Sheet, en particular en el apartado 7.7 (Using the Data

EEPROM) del capítulo de la EEPROM, se indica que variables que no sean modificadas

frecuentemente se deben de guardar en la memoria Flash. Siendo este nuestro caso, se

procedió a realizar el guardado de la información en esta memoria.

Para hacer uso de la memoria Flash, se consultó el capítulo 6.0 Flash Program

Memory del Data Sheet comentado anteriormente. En él se explica que la escritura se

realiza en bloques de 32 bytes y el borrado en bloques de 64 bytes. En esta guía, se indica

que se utiliza un registro intermedio (TABLAT) de 8 bits, para mover datos entre en la

memoria RAM y la Flash. Además se muestran las instrucciones utilizadas para leer y

escribir en esta memoria, así como un ejemplo de escritura, lectura y borrado.

Siguiendo los ejemplos proporcionados por el fabricante he realizado el código

correspondiente a la escritura. Se puede consultar en el Anexo 15.1.25. Para ello se ha

creado una función en la cual se realiza un borrado de un bloque de 60 bytes de la

memoria. Posteriormente se introduce en el registro TABLAT, la información que se desea

guardar y se realiza el guardado. La instrucción TBLWTPREINC, no está implementada

en C, por lo que se realiza una fracción de código en assembler. Para introducir el

fragmento en assembler, se consultó el capítulo 2.8 Languaje Extensions del MPLAB C18

Compiler User’s Guide[9].

Page 20: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 6. Configuración sonda y solución

20

Por tanto, teniendo guardada la configuración de la sonda en la memoria no volátil

del PIC, al iniciar la interfaz se debe comprobar si existe alguna configuración guardada.

Para ello, una vez establecida la comunicación con el equipo, se comprueba que el micro

haya finalizado la secuencia de inicio que se basa en activar la bomba de vaciado, por si

queda algún tipo líquido en la celda, ya sea de solución de calibración, agua o alguna

muestra. Si este se encuentra realizando dicha secuencia, se le pedirá al usuario que espere

a que finalice mediante el siguiente mensaje:

Figura 5: Mensaje espera secuencia de inicio

Una vez la secuencia de inicio haya finalizado, se enviará la trama solicitando la

información guardada en el micro correspondiente a la sonda. Se recibirá un array de bytes.

Si el primer byte recibido es 0xff, quiere decir que no se ha guardado previamente, ya que

en las posiciones de memoria Flash se encuentran a 0xff por defecto. De no ser así, quiere

decir que disponemos de alguna configuración guardada. Por tanto, del array de bytes

recibidos se extraerá la información y se le preguntará al usuario si la quiere cargar. En

caso afirmativo, se instanciará un objeto de la clase sonda (Anexo 15.1.5).

En el caso de la configuración de la solución de calibración se sigue un proceso

análogo. Al presionar el botón de guardar, en primer lugar se comprueba que todo sea

correcto. Es decir, que la solución cuente con un nombre y que se haya introducido los

iones con las concentraciones correspondientes para los dos patrones. Comprobados estos

factores, se crea una instancia de la clase solucion(Anexo 15.1.7).

Posteriormente a obtener la sonda guardada en la memoria no volátil, se solicitará

la configuración de la solución. De encontrarse guardada, se le preguntará al usuario si

desea cargarla.

Page 21: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida… 6. Configuración sonda y solución

21

6.4 Visualización sonda y solución configurada

Al guardar en la memoria no volátil del equipo las configuraciones de la sonda y la

solución, surge la necesidad de mostrar estas configuraciones. Debido a que el usuario las

pudo haber configurado con mucha anterioridad y no recuerde que tiene configurado.

Para ello se crea una ventana, utilizando como en los casos anteriores la clase Form.

En este caso la he nombrado FormSeeProbeSolution(Anexo 15.1.8).

Esta ventana se basa en dos dataGridView[10]. Como su propio nombre indica, se

trata de unas cuadriculas en la cuales se añaden filas y columnas para mostrar información.

En el caso de la sonda, además de la cuadricula, se han habilitado dos

checkBox[11]. Estos mostrarán si la sonda configurada contiene sensor de temperatura y

de pH. En estos checkBox la propiedad “Enabled” se establece como false. Con esta

configuración no responderá a la iteración del usuario, o lo que es lo mismo, si el usuario

clica no podrá seleccionarlo o deseleccionar. Posteriormente a partir de la información del

objeto instanciado de la clase sonda(Anexo 15.1.5), se crearán en la cuadricula dos

columnas. En la primera se indicará en canal (1,2,..7), y en la segunda columna el ion

asociado a cada canal. Por último, se ha configurado una etiqueta en la cual se mostrará la

hora y el día en el que se configuro la sonda.

En el caso de la solución, la cuadricula contendrá 3 columnas. En la primera se indicará el

ion configurado, y en las dos siguientes la concentración de los dos patrones (P1 y P2). Del

mismo modo que en la sonda, se ha configurado una etiqueta para mostrar la hora y la

fecha en la que fue configurada. La forma final de esta ventana se puede apreciar en la

Figura 6.

Figura 6: Ventana visualización sonda y solución

Page 22: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 7. Calibración del equipo

22

7 Calibración del equipo

En este capítulo se explica el proceso de calibración del equipo: la configuración de

la comunicación del PC con el equipo para activar las bombas correspondientes y recibir la

información necesaria procedente del equipo. Una vez recibida la información, ésta se

tratará para conseguir los parámetros necesarios para realizar las medidas. En este proceso

también se incluye una especificación del cliente, que consiste en mostrar al usuario los

resultados de dicha calibración. Además, se ha insistido en mostrar de una forma sencilla

para el usuario si la calibración ha sido correcta o no, mediante una pequeña imagen verde

si es correcta o una cruz roja de no serlo.

7.1 Actuación bombas calibración

Para realizar la calibración del equipo se deben hacer llegar los patrones de

calibración a la celda donde se encuentra la sonda. Estos patrones se hallan en dos

recipientes dentro del armario del equipo. Por lo que se utilizan dos bombas para hacerlos

llegar a la celda. El equipo cuenta también con una tercera bomba para vaciar la celda, que

harán llegar el fluido de la celda a un recipiente, para ser desechado. También cuenta con

una bomba que introduce agua en la celda para limpiar los posibles restos que puedan

quedar de algún líquido.

Para la implementación de la aplicación cuento con un prototipo del equipo, el cual

no dispone de bombas, pero se aprecia si éstas están actuando mediante LED’s.

El proceso de calibración consiste en la siguiente secuencia:

1. Llenar de agua

2. Llenar de Patrón 1 de calibración

3. Llenar de Patrón 1 de calibración

4. Medir Patrón 1 de calibración

5. Llenar de Patrón 2 de calibración

6. Llenar de Patrón 2 de calibración

Después de cada acción enumerada anteriormente se producirá el vaciado de la

celda. Previamente a llenar de patrón 1 la celda, se realiza un llenado con agua. Esto se

debe a que el patrón 1 de calibración es de una concentración muy baja, por lo que si

anteriormente se ha realizado una medida de una muestra con la concentración alta de

algún ion, si quedasen restos podría dar lugar a una calibración errónea. Por tanto, para una

mayor seguridad de la calibración, previamente a realizar la medida de éste patrón, se llena

2 veces. Siendo el primer llenado de limpieza. Como el patrón 2 de calibración es de una

concentración más alta, no es necesario llenar de agua, por lo que con dos llenados de

patrón 2 es suficiente para conseguir una correcta calibración.

Page 23: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 7. Calibración del equipo

23

Para conseguir realizar la secuencia mencionada anteriormente, se ha optado por

crear una operacionClass (Anexo 15.1.24), en la cual se han implementado las variables

necesarias para alojar la información correspondiente a que operación se quiere realizar,

bomba que se tiene que activar, y offset. El tiempo de actuación será el mismo para todas

las bombas (fijado en el firmware), pero como la distancia que debe recorrer las muestras

hasta llegar a la celda es mayor que la de los patrones de calibración (que se encuentran en

el propio armario) se deben configurar offsets.

Como en otros capítulos, se ha implementado una lista de objetos de la clase

operación. Realizarlo de esta forma permite ordenar los objetos de una forma sencilla.

Cada vez que se reciba la trama correspondiente a que el equipo se encuentra en reposo, se

realizará la operación que se encuentre en la primera posición, una vez realizada se

eliminará de la lista.

Se ha configurado un timer (timerStartOper) para comprobar que operación se debe

realizar. En la función que sirve al timer, previamente a realizar ninguna operación, se

comprueba que el equipo se encuentre en reposo o lleno. De no ser así significaría que se

encuentra realizando alguna operación.

Por tanto, si el equipo se encuentra en reposo, se debe de crear y enviar la trama

que solicite al equipo la realización de la operación deseada. Esto se realiza en la función

doOperacion(se puede consultar en el Anexo 15.1.24).

Cada vez que el equipo empieza a realizar una operación envía el estado al PC. Lo

cual es importante para la sincronización, como comenté en el capítulo 4. En este capítulo

se debe ampliar la función que sirve al evento de recepción de datos por el puerto serie. En

el capítulo 4, se implementó está función y realizaba las acciones pertinentes a recibir el

estado del equipo. Al calibrar se recibe una trama totalmente distinta, en este caso se recibe

la información correspondiente a una lectura de la sonda, o lo que es lo mismo, el valor

correspondiente en mV de la concentración de los 7 canales y temperatura. Como esta

función corresponde al código de la librería que contiene las funciones que interactúan con

el equipo, surge la necesidad de implementar un evento, que nos indique en el código

correspondiente a la aplicación que se ha recibido la información de una lectura [12].

En la función que sirve al evento mencionado anteriormente, se instancia un objeto

de la clase PuntoClass(Anexo 15.1.18). En los objetos instanciados de esta clase se alojará

la información proporcionada por el equipo a la hora de realizar una medida, ya sea de un

patrón de solución o muestra. Esta información corresponde al valor en mV

correspondiente a la concentración obtenido en cada canal, la temperatura y la hora en la

que se ha obtenido. En el caso de calibración se crean dos listas de objetos de la clase

PuntoClass(Anexo 15.1.18), una para medidas del patrón 1 y la otra para el patrón 2

(mVP1 y mVP2).

En la lista de objetos donde se configuran las operaciones que debe realizar el

equipo correspondientes al proceso de calibración, se añade una operación (CALCCALI),

que no enviará ninguna trama al equipo pero indicará a la aplicación que ya se han

realizado todas las operaciones necesarias, y que debe de realizar el tratamiento de los

datos recibidos para obtener los parámetros de calibración. Para ello se ha implementado

una nueva clase Parametros(Anexo 15.1.16). Donde se calculará la pendiente y a la

intersección de la ecuación de la recta para cada ion.

Page 24: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 7. Calibración del equipo

24

A partir de la configuración de la sonda se obtiene que ion se está midiendo en cada

canal, en la configuración de la solución se obtiene la concentración correspondiente para

cada ion en cada uno de los dos patrones y en los dos objetos instanciados de la clase

PuntoClass(Anexo 15.1.18) se obtiene el valor de tensión correspondiente a la

concentración medida de cada ion en los dos patrones de calibración. Por tanto, se calcula

para cada ion los parámetros correspondientes a la pendiente y la intersección de la

ecuación de una recta.

7.2 Visualización resultados calibración

Como ya se comentó en la introducción de este capítulo, el cliente marca una

especificación vinculada a mostrar los resultados de la calibración al usuario. Ésta consiste

que para cada ion, existen unos rangos entre los cuales puede variar el parámetro

correspondiente a la pendiente para cada ion, que el usuario no tiene por qué conocer. Por

tanto, a la hora de mostrar los resultados correspondientes a la calibración se debe de

mostrar los parámetros obtenidos, y al lado de la pendiente se debe mostrar una imagen

(cruz roja o tick verde) que permita saber al usuario si el parámetro obtenido se encuentra

dentro del rango.

Para mostrar la información correspondiente, al igual que en el capítulo anterior,

donde se muestra la sonda y la solución configurada, se ha optado por una ventana

secundaria (Anexo 15.1.15 CalParam), la cual se basa en una cuadricula. La cuadricula

contará con 7 columnas (Ion, Pendiente, Imagen que indique si la pendiente es correcta,

Intersección, temperatura hora y fecha de calibración.

En la implementación de esta ventana, la primera acción que se realiza es consultar

en la configuración de la sonda si existe sensor de temperatura, de no ser así la columna de

temperatura se elimina. Seguidamente para cada ion configurado en la sonda, se carga toda

la información comentada anteriormente como se observa en la Figura 7, que se encuentra

guardada en el objeto instanciado de la Clase Parametros(Anexo 15.1.16) a la hora de

realizar los cálculos correspondientes a la calibración.

Figura 7: Ventana resultados calibración

Page 25: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 7. Calibración del equipo

25

7.3 Calibración del pH

En el proceso de calibración comentado anteriormente se calibran los parámetros

para medir la concentración de cada uno de los iones pero quedan por obtener los

parámetros del pH. La calibración del pH no se realiza de manera simultánea a la del resto

de iones debido a que los patrones de calibración de éste se encuentran por separado. Por

tanto, cuando se quiera calibrar el pH se deben de sustituir los dos recipientes que

contienen los patrones de calibración por los del pH. La calibración del pH, a diferencia de

la de los iones que se debe de calibrar al menos una vez al día, con una calibración por

semana es suficiente.

Para realizar la calibración del pH, se ha habilitado un botón en el menú. Al

presionar este botón, se mostrará un mensaje indicándole al usuario que debe cambiar los

recipientes que contienen la solución de los iones por las del pH. Una vez se hayan

sustituido los recipientes, el usuario deberá de presionar el botón aceptar, dicho mensaje se

puede apreciar en la ilustración 7. Y de la misma forma que en el proceso de calibración de

los iones, se programan las acciones activar la bomba P1, P2 y realizar los cálculos

correspondientes. Para ello se ha implementado una nueva clase CalpH(Anexo 15.1.17).

Los cálculos correspondientes a la calibración del pH, como en el caso de los iones,

consiste en obtener la pendiente y la intersección de la ecuación de la recta que forman los

dos puntos correspondientes a cada uno de los patrones.

Figura 8: Mensaje calibración pH

Al finalizar la calibración del pH, mediante otro mensaje similar al de la Figura 8

se le recuerda al usuario que debe de volver a cambiar las soluciones de calibración. Hasta

que el usuario no pulse el botón aceptar, la ejecución del programa se detendrá a la espera

de que el usuario realice esta acción. Ya que si hubiese programada alguna calibración de

los electrodos que miden la concentración de los iones, al no disponer de la solución

correspondiente los parámetros de calibración serán erróneos.

En el caso de realizar una medida en un equipo que cuente con sensor de pH, y éste

no haya sido calibrado, la medida se realizará correctamente de todas formas, ya que se

ajustan a unos valores obtenidos experimentalmente que la experiencia de la empresa

indica que se cumple habitualmente. En el caso de que se haya calibrado la medida será

mucho más precisa, pero como el calibrado del pH se realiza de forma manual, surge la

posibilidad de que se realicen medidas sin que lo esté, y el cliente prefiere obtener un valor

aproximado que no obtener ningún valor.

Page 26: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 7. Calibración del equipo

26

7.4 Guardar parámetros de calibración del pH

Como se ha comentado en el apartado anterior, no es necesario calibrar el pH

diariamente. Por tanto, al cerrar la aplicación se deberán de guardar en el PC y recuperarlos

al volver a ejecutar la aplicación.

Para realizar esto se ha optado por la serialización que consiste en convertir un

objeto en una secuencia de bytes para almacenar el objeto, trasmitirlo a una base de datos o

a un archivo [13].

Por tanto según la descripción de serialización, se va a convertir el objeto

instanciado de la clase CalpH, en una secuencia de bytes para transmitirlo a un archivo.

Siguiendo los ejemplos disponibles en la MSDN, el primer paso es crear el archivo

donde se va a guardar la secuencia de bytes correspondientes a nuestro objeto. Para ello se

implementa una rutina que se ejecutará al cerrar la aplicación. En ella se ejecutará el

proceso de crear el archivo, serializar el objeto e introducir el objeto serializado en el

objeto.

Para crear el archivo el primer paso es seleccionar la ruta donde poder encontrarlo.

Para seleccionar la ruta se ha utilizado la clase Environment.SpecialFolder, que especifica

las constantes enumeradas para recuperar rutas de acceso a directorios en carpetas

especiales del sistema [14].

En esa enumeración de rutas se ha seleccionado la correspondiente a

LocalApplicationData, como su propio nombre indica sirve para guardar datos de

aplicaciones locales. Esta ruta corresponde a una carpeta oculta que, en una configuración

standard, se ubicaría en la carpeta \AppData a partir del directorio de instalación.

Seleccionada la ruta donde se va a guardar el archivo, se necesita crear el archivo.

Para ello el entorno de programación contiene una clase, FileStream[15], que permite

crear, leer y escribir en un archivo.

Por tanto, cuando el archivo ya está creado, se debe de realizar el proceso de

serialización del objeto deseado, para ello se debe de realizar una llamada al método

Serialize(), de la clase IFormatter, indicándole la ruta del archivo donde se quiere guardar y

el objeto a serializar.

Una vez serializado el objeto y guardado el archivo, la aplicación se puede cerrar

sin problema, ya que podremos recuperar esa información. Al iniciar otra vez la aplicación,

se debe de realizar el proceso inverso, es decir, deserializar. Para ello se debe de indicar, la

ruta donde se encuentra el archivo que contiene el objeto serializado y su nombre.

Localizado el archivo, se debe de realizar una llamada al método Deserialize() de la clase

IFormatter.

Page 27: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 8. Realización de Medidas…

27

8 Realización de medidas y visualización de resultados

Una vez se haya calibrado el equipo, se podrán realizar las medidas para diferentes

muestras según la configuración del equipo, el número de muestras puede variar entre 1 y 2

según las necesidades del cliente. En este capítulo se tratará la comunicación PC-Equipo

para realizar la secuencia de activación de bombas, la lectura de la concentración de los

iones configurados en la sonda y por último la monitorización de los resultados.

8.1 Actuación bombas

La actuación de las bombas se consigue de manera análoga que en el capítulo

anterior, correspondiente a la calibración.

Respecto a la actuación de las bombas, en todos los casos que se realice una

medida, se producirá la secuencia correspondiente para la medida de la muestra 1, que

consiste en llenar 3 tres veces del fluido correspondiente a la muestra 1 la celda donde se

encuentra la sonda. Los dos primeros llenados se realizan para limpiar la celda, así nos

aseguramos que a la hora de realizar la medida no quede en el interior de la celda ningún

resto de otro fluido. Una vez la celda se encuentre llena por tercera vez, se solicitará al

equipo que realice la lectura, a dicha operación el equipo responderá al PC con una trama

en la cual se encuentren los resultados de la medida.

En el caso de que el equipo se encuentre configurado para medir dos muestras, se

repetirá el mismo procedimiento para la muestra 2.

El código fuente correspondiente a estas secuencias se encuentra en la función

RealizaMues(), en el Anexo 15.1.3 formPrincipal.

Page 28: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 8. Realización de Medidas…

28

8.2 Monitorización resultados de las medidas

Una vez la aplicación haya recibido la trama correspondiente a los resultados, se

obtendrá para cada ion el valor correspondiente de concentración a partir de los parámetros

de la calibración.

Según la especificación del cliente, la monitorización de los resultados se realizará

en la ventana principal de la interfaz, dividiendo ésta en una gráfica en la parte superior

donde se pueda apreciar la evolución temporal de la concentración de cada ion, en la parte

inferior una tabla donde se aprecien los resultados numéricos de la última medida

realizada, como se puede apreciar en la Figura 9.

Figura 9: Vista ventana principal interfaz

8.2.1 Tabla resultados última medida

Del mismo modo que al mostrar los resultados de la calibración, se crea una tabla,

proporcionada por el entorno de programación como dataGridView[10]. En ella se debe

mostrar, en primer lugar, si se trata de una lectura de la Muestra 1 o de la Muestra 2, en las

siguientes columnas se implementan los iones configurados en la sonda, donde se

introducirá el valor de concentración correspondiente. En el caso de que algún ion no

disponga de una correcta calibración, no se mostrará el valor obtenido, sino un guion. La

siguiente columna corresponde a las unidades de la concentración.

Page 29: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 8. Realización de Medidas…

29

Como se comentó en el capítulo correspondiente a la configuración de la sonda,

según las necesidades del cliente, está puede contener sensor de pH y de temperatura. En el

caso de que dispongan se debe añadir una columna donde mostrar los valores obtenidos.

Como se puede apreciar en la Figura 10, la sonda con la que se ha realizado la interfaz

dispone de sensor de pH, pero no de temperatura.

Figura 10: Tabla resultados última medida

8.2.2 Gráfica resultados de medidas

En esta gráfica se deben mostrar los resultados de las medidas de forma que el

usuario pueda apreciar la evolución de la concentración de los diferentes iones. Para crear

esta gráfica se ha utilizado la clase chart[16], proporcionada por el entorno de

programación. En está gráfica los ejes corresponderán por un lado al valor de

concentración y por el otro a la fecha en la cual se tomó la medida.

Para facilitar la comprensión de dicha gráfica se han habilitado, un checkBox[11]

para cada ion configurado en la sonda y pH en el caso de disponer. El usuario podrá marcar

en el caso de que quiera monitorizar el ion en concreto o deseleccionar para ocultarlo,

como se aprecia en la Figura 11. Esto es de vital importancia en el caso de que la sonda

configurada cuente con los 7 iones y el equipo mida 2 muestras, ya que la gráfica queda

con un número excesivo de puntos que dificulta su comprensión.

Figura 11: Gráfica evolución de la concentración de diferentes muestras

El código fuente correspondiente a la configuración tanto de la gráfica, como la

leyenda se puede consular en la función InicializaLeyenda(int ion, int n, int M). La

introducción de los puntos en las gráficas se puede consultar en la función

ActualizaChart(). Estas dos funciones se encuentran en el Anexo 15.1.3 FormPrincipal.

Page 30: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 9. Configuración del equipo

30

9 Configuración del equipo

Al implementar el código que activa las bombas en los dos capítulos anteriores, se

aprecia que el firmware espera recibir un valor correspondiente a un offset que permita

modificar el tiempo de actuación de éstas. Por defecto todas las bombas se mantienen

activas durante un tiempo fijado como constante en el firmware, pero por motivos como la

distancia de las muestras o la perdida de eficiencia de las bombas, se necesita aumentar el

tiempo de alguna bomba en particular.

Por otro lado, en el capítulo 7 correspondiente a las medidas, se explica que el

equipo puede estar configurado para medir 1 o 2 muestras. Lo que nos presenta otro

aspecto que debe configurar el usuario acerca de la configuración general del equipo.

Para configurar estos aspectos se ha creado una ventana, a la cual se accederá desde

el menú principal. Para realizar la configuración de los offsets, se han habilitado diferentes

desplegables, los cuales mostrarán valores del 0 al 15. Para configurar si el equipo realizará

medidas de 1 muestra o 2, se han habilitado 2 checkBox. El de la muestra 1 se ha

configurado como seleccionado y no modificable por el usuario, ya que todos los equipos

realizarán medidas con las muestra 1. El checkBox correspondiente a la muestra 2 es el que

permite la interacción con el usuario, pudiendo éste seleccionar si su equipo cuenta con la

segunda bomba, que le permita realizar medidas de 2 muestras distintas. La distribución de

esta ventana se puede observar en la Figura 12.

Está configuración es conveniente guardarla, para que el usuario no tenga que

configurarla cada vez que ejecute la interfaz. Por tanto, al igual que en los parámetros de la

calibración del pH en el capítulo 6, se realiza una serialización[13] del objeto de la clase

TiempoActClass (Anexo 15.1.10) que contiene la configuración.

El código fuente correspondiente a la a la configuración e inicialización de esta

ventana se puede consultar en el Anexo 15.1.9 FormConfTime.

Figura 12: Ventana configuración offsets bombas y número de muestra

Page 31: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 10. Horario calibración y medidas

31

10 Horario calibración y medidas

Otra especificación marcada por el cliente consiste en mostrar un horario en el cual

el usuario pueda seleccionar cuando desea realizar calibraciones y medidas. Este horario

debe mostrar las 24 horas del día, pudiendo seleccionar a qué horas se desea realizar

alguna de las operaciones mencionadas anteriormente.

Para implementarlo se ha optado por crear una ventana secundaria, a la cual se

accederá desde el menú principal.

Siguiendo las especificaciones del cliente, en esta ventana se crean 24 etiquetas.

Donde en cada una de ella se mostrará una hora. Estás horas se dividirán en dos grupos

según el sistema horario de 12 horas, como se puede apreciar en la Figura 13.

Seguidamente de cada etiqueta se implementan dos checkBox, uno para calibrar y otro

para realizar una medida. Mediante estos checkBox el usuario podrá seleccionar cuando

desea realizar estas operaciones.

Como no es práctico que el usuario deba configurar cada vez que ejecuta la

interfaz, en que momento desea realizar estas operaciones se realiza una serialización[12]

del objeto de la clase HorasCal (Anexo 15.1.12).

Para realizar las calibraciones y medidas a las horas seleccionadas, se ha

configurado un timer(timerSetOp) que cada hora comprueba si es necesario, realizar

alguna operación. Esta comprobación se realiza mediante la función

CompruebaOperación() que se puede consultar en el Anexo 15.1.3 FormPrincipal.

Figura 13: Horario muestras y calibración

Page 32: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 11. Alarmas

32

11 Alarmas

Para cada medida realizada, el cliente solicita que se compruebe que el valor

obtenido se encuentre dentro de unos rangos configurados por el cliente para cada ion. En

el caso de que el valor se encuentre fuera del rango para algún ion, se debe de notificar

poniendo en rojo el valor en cuestión de la tabla donde se muestran los resultados de la

medida en la ventana principal (configurada en el capítulo 7).

Para cumplir esta especificación se implementa una ventana (Alarmas, pudiéndose

consultar en el Anexo 15.1.13) en la cual se muestren los iones configurados en la sonda.

Para cada ion se configuran dos numericUpDown, uno para valor mínimo y otro para el

máximo. Se ha optado por configurar este tipo de herramienta debido que permite

introducir el valor numérico por teclado y además se puede reducir o incrementar mediante

dos flechas como se aprecia en la Figura 14. Al configurar el rango para cada ion, el

usuario deberá pulsar un botón para guardar la configuración. Al pulsar dicho botón se

instanciará un objeto de la clase SaveAlarmas (Anexo 15.1.14).

Por tanto, cada vez que se realice una medida, y por consiguiente se modifique la

tabla donde se muestren los resultados, se comprobará si el valor se encuentra dentro del

rango configurado en el objeto mencionado anteriormente para fijar en que color se debe

introducir.

Al igual que para otras configuraciones que debe realizar el usuario en capítulos

anteriores, se debe de guardar, ya que de no ser así el usuario debería de volver a

configurarlos cada vez que ejecute la interfaz. Por tanto, el objeto que contiene los rangos

será serializado en el momento de cerrar la aplicación y deserializado en el momento de

iniciar la ejecución.

Figura 14: Ventana configuración alarma

Page 33: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 12. Juego de pruebas

33

12 Juego de pruebas

Durante la realización de este proyecto, cada vez que se implementaba alguna

funcionalidad nueva se realizaban pruebas para asegurar que el funcionamiento fuese el

correcto. En este capítulo se comprueba que todo funciona, teniendo especial cuidado en

que no se produzca ningún problema si el usuario intenta hacer un uso incorrecto de la

interfaz, como por ejemplo, intentar realizar una calibración o una muestra sin configurar

la sonda o la solución de calibración.

La primera prueba consiste en simular la primera vez que se ejecuta la interfaz.

Donde la configuración de la sonda y la solución no se encuentran configuradas ni en el Pc

ni en la memoria volátil del equipo. Por tanto, la aplicación nos lo comunicará y nos

preguntará si las queremos configurar en ese momento, como se puede apreciar en las

Figuras 15 y 16. Se cancelará cualquier configuración, por tanto, al no tener estas

configuraciones el equipo deberá de permanecer en reposo hasta que se realicen estas

configuraciones. Por otro lado, también se comprueba que se puedan abrir las diferentes

ventanas sin que se produzca ninguna excepción.

Figura 15: Aviso de sonda no configurada

Figura 16: Aviso de solución no configurada

Como era de esperar, el equipo se mantiene en reposo incluso configurando

acciones automáticas, tampoco permite realizar calibraciones y medidas con los botones,

ya que estos se encuentran deshabilitados. Por otro lado, al intentar abrir las diferentes

ventanas no se ha producido ninguna excepción.

Page 34: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 12. Juego de pruebas

34

La siguiente prueba consiste en configurar la sonda y la solución de calibración.

Justamente después de configurarlas, el equipo debe realizar una calibración y una medida

de forma automática. Está prueba también sirve para comprobar que los valores obtenidos

en la medida se muestran correctamente, y si el valor obtenido para algún ion se encuentra

fuera del rango configurado por el usuario, lo señalizará. Como se aprecia en la Figura 17,

los valores se muestran correctamente, y los valores fuera de rango se muestran en rojo.

Durante la realización de la calibración y la medida, se verifica que no se permita al

usuario abrir la ventana para configurar la sonda y la solución. La cual únicamente permite

abrir si el equipo se encuentra en reposo.

En este capítulo no se comprueba los resultados obtenidos al realizar medidas,

puesto que se comprobó en el momento de implementar dicha operación. Esta prueba

consistió en contrastar los resultados midiendo una solución de concentración conocida.

Figura 17: Resultados medidas

Una vez se comprueba que el equipo realiza la calibración y la muestra teniendo la

sonda y la solución configurada, se modifican los valores de alarmas, offsets de las bombas

y horas a las que se desea realizar calibración y medidas. Para comprobar que al cerrar la

aplicación y volverla a abrir las recupera. Lo que también funciona.

Page 35: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 12. Juego de pruebas

35

Para finalizar el juego de pruebas, se configura que el equipo realice una

calibración a las 18:00 horas y diferentes muestras a las 18:00, 19:00 y 20:00. Como se

aprecia en la Figura 18, las operaciones se han realizado en el momento esperado.

Figura 18: Gráfica resultados medidas juego de pruebas

Page 36: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 13. Conclusiones

36

13 Resultados y conclusiones

Los resultados del proyecto se basan en la interfaz que se ha explicado en los

diferentes capítulos, la cual se encuentra funcionando correctamente. Por otro lado añadir

que la aplicación se ha realizado siguiendo las especificaciones del cliente, que ha

realizado un seguimiento durante la implementación y ha propuesto modificaciones sobre

la marcha, por lo que ha quedado muy satisfecho con el trabajo realizado.

Como conclusiones, se puede afirmar que en general se han cumplido los objetivos

fijados en el momento de iniciar este trabajo. Siendo estos en primer lugar, realizar un

proyecto en una empresa, previamente a finalizar la formación académica, para así ver el

funcionamiento de la empresa y como se trabaja a la hora de realizar un proyecto. Así

como realizar un proyecto que tenga una aplicación posterior, este fue uno de los motivos

por los que me decanté para hacer este trabajo.

Por otro lado, este trabajo me ha permitido apreciar la capacidad de adaptarme para

trabajar en otros lenguajes de programación a partir de los conocimientos adquiridos

durante este periodo de formación. Ya que previamente a la realización de este proyecto, el

lenguaje de programación C# era prácticamente desconocido para mí.

Durante la realización de este trabajo he apreciado una evolución referente a la

resolución de problemas. Al inicio cuando me encontraba con algún problema, la

localización de este como su resolución era más lenta, lo que me podía llevar días e incluso

semanas. En las últimas semanas de trabajo, la resolución de problemas no me llevaba más

de unas horas. Desde mi punto de vista, esta evolución se ha producido, en parte, por un

mayor conocimiento del lenguaje de programación y sobre todo por la adquisición de una

buena metodología a seguir para la resolución de problemas.

Respecto a los problemas, uno que me llevo gran parte del tiempo en solventar fue

la sincronización entre el equipo y el PC, del cual he aprendido de la gran importancia de

realizar una correcta sincronización entre dos equipos comunicados. Teniendo en cuenta

que en el momento que se produce un fallo en la sincronización la interfaz pierde toda su

utilidad.

Para finalizar las conclusiones, comentar que no se han podido realizar todos los

objetivos que se marcan en el capítulo 3. Por ejemplo, la realización de los archivos Excel

de los resultados de calibración y medidas, el programa bilingüe y el sistema de mails para

avisar al usuario de que operación está realizando su equipo. Debido a que algunos

contratiempos han llevado más tiempo de lo esperado. El no poder realizar alguno de estos

apartados debido al tiempo, era una posibilidad que se consideró a la hora de realizar el

anteproyecto, puesto que se valoró que era un proyecto ambicioso.

Page 37: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 15. Anexos

37

14 Referencias

[1] C#. Wikipedia

<https://es.wikipedia.org/wiki/C_Sharp>

[2] MSDN.

<https://msdn.microsoft.com/es-es/default.aspx>

[3] Form Clase. MSDN

<https://msdn.microsoft.com/eses/library/system.windows.forms.form(v=vs.110).aspx>

[4] SerialPort. MSDN

<https://msdn.microsoft.com/es-es/library/system.io.ports.serialport(v=vs.110).aspx>

[5] Dictionary. MSDN

<https://msdn.microsoft.com/es-es/library/xfhwa508(v=vs.110).aspx>

[6] ToolStrip. MSDN

<https://msdn.microsoft.com/es-es/library/system.windows.forms.toolstrip(v=vs.110).aspx>

[7] List Clase. MSDN

<https://msdn.microsoft.com/es-es/library/6sh2ey19(v=vs.110).aspx>

[8] PIC18F2455/2550/4455/4550 Data Sheet. Microchip

<http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf>

[9] MPLAB C18 C Compiler User’s Guide

<http://ww1.microchip.com/downloads/en/DeviceDoc/51288c.pdf>

[10] DataGridView. MSDN

<https://msdn.microsoft.com/es-es/library/system.windows.forms.datagridview(v=vs.110).aspx>

[11] CheckBox. MSDN

<https://msdn.microsoft.com/es-es/library/system.windows.forms.checkbox(v=vs.110).aspx>

[12] Cómo: Implementar eventos de interfaz (Guía de programación de C#)

<https://msdn.microsoft.com/es-es/library/ak9w5846.aspx>

[13] Serialización (C# y Visual Basic). MSDN

<https://msdn.microsoft.com/es-es/library/ms233843.aspx>

Page 38: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 15. Anexos

38

[14] Environment.SpecialFolder (Enumeración). MSDN

<https://msdn.microsoft.com/es- es/library/system.environment.specialfolder(v=vs.110).aspx >

[15] FileStream. MSDN

< https://msdn.microsoft.com/es-es/library/system.io.filestream(v=vs.110).aspx>

[16] Chart. MSDN

< https://msdn.microsoft.com/es-

es/library/system.windows.forms.datavisualization.charting.chart(v=vs.110).aspx>

Page 39: Iván Gómez Partido Interfaz de usuario para equipo de medida de concentración de ...deeea.urv.cat/public/PROPOSTES/pub/pdf/2319pub.pdf · 2016-04-20 · parámetros de calibración

Interfaz de usuario para equipo de medida... 15. Anexos

39

15 Anexos

Capítulo no publicado en la versión pública del documento siguiendo las instrucciones

del acuerdo de confidencialidad del Trabajo Final de Grado. Han sido eliminadas de la

versión íntegra del documento las partes del contenido de carácter confidencial.