4. Caso de aplicación utilizando la Metodología Cascada
4.1. Fases del método
4.1.4. Paso 4 Desarrollo
En esta etapa se crearon los códigos necesarios para el éxito del proyecto. Estos incluyen programas realizados en lenguaje embebido nesC, y lenguajes de alto nivel como Java y C++.
4.1.4.1 Programación de MOTES y su interfaz gráfica
El nesC es un lenguaje para sistemas embebidos de bajo nivel, en el cual se plasmó las tareas, eventos y comandos necesarios para realizar la aplicación. Este lenguaje fue utilizado para programar los nodos sensores. En la figura 4.6 se muestra una parte del código creado, con el propósito de mostrar su contenido.
Se utilizó una aplicación del sistema operativo TinyOS llamada TinyDB, la cual es un sistema de procesamiento de peticiones para extraer información de una red de sensores. Provee una interfase gráfica estilo SQL (Structured Query Language) en la cual se especifica que datos se desean extraer, y además se pueden configurar parámetros como el tiempo de muestreo.
TinyDB reúne la información pedida a los motes, la filtra, la agrupa y la envía a la PC, mediante algoritmos de procesamiento en red de forma energéticamente eficiente.
Figura 4.6 Código en lenguaje nesC para la aplicación en los nodos sensores
Esta aplicación está creada en el lenguaje Java, el cual es un lenguaje abierto y de alto nivel.
La interfaz gráfica está hecha en el lenguaje de Java y provee de acceso a una red de motes desde la computadora. Esta interfaz consiste en un conjunto de aplicaciones y clases de Java los cuales tienen la tarea de:
• Una clase de interfaz de red que permite a las aplicaciones inyectar peticiones y esperar por resultados
• Una clase que construye y transmite las peticiones
• Una clase que recibe y analiza los resultados de las peticiones
• Una clase que extrae información acerca de los atributos y capacidades de los dispositivos
• Una Interfase Gráfica de Usuario (GUI) para construir peticiones
• Una GUI para gráficas y tablas para desplegar resultados individuales de los sensores
• Una GUI para visualizar topologías dinámicas de red
• Una aplicación que usa peticiones como una interfase por encima de la red de sensores.
module AttrPlaceM {
provides interface StdControl; uses { interface AttrRegister; } } implementation { //char *place; uint16_t result;
command result_t StdControl.init() {
if (call AttrRegister.registerAttr("place", UINT16, 2) != SUCCESS) return FAIL;
return SUCCESS; }
command result_t StdControl.start() {
return SUCCESS; }
command result_t StdControl.stop() {
return SUCCESS; }
Se creo y modificó código de la aplicación en Java para agregar funcionalidad de insertar los datos de identificación y localidad a los nodos en la aplicación, y que visualmente fuera amigable al usuario. En la figura 4.7 se muestra la interfaz gráfica modificada con botones y accesos para una rápida configuración.
Figura 4.7 GUI de la aplicación TinyDB
Se puede observar que en la figura anterior hay un botón remarcado en rojo, el cual se agregó para dar de alta los atributos de posición e identificación de parte al mote, tal como se puede apreciar en la figura 4.8. Además aparece enmarcado en rojo la opción de enviar la información a todos los motes (Broadcast) o de forma individual (target id).
Figura 4.8 Ventana para cargar atributos de lugar y parte
Una vez que se cargan los valores, se hace la petición de datos, estos pueden ser mediciones de los sensores, valores cargados en memoria del mote, topología de red, y además puede agregarse la capacidad de procesar información y realizar operaciones en red, como por ejemplo calcular un promedio de alguna señal. La figura 4.9 muestra una petición de tres datos, el identificador de nodo, el número de parte que tiene el mote y la localidad de éste marcados en un círculo rojo (Projected Attributes), que significa que
son los atributos deseados a obtener de la red. En una flecha roja se muestra en donde se construye de manera automática la petición en el lenguaje correspondiente SQL. En recuadros rojos en la parte superior se puede observar el tiempo de muestreo del lado izquierdo (Sample Period) y el botón para mandar la petición a la red (Send Query). En la parte de abajo se encuentra enmarcada la opción para insertar la información en la base de datos (Log to Database).
Figura 4.9 Petición de datos a la red de motes.
Una vez realizada la petición se abre la ventana de resultados, los cuales se muestran en una tabla por cada tiempo de muestreo y en una gráfica para ver su evolución en el tiempo. Esto se puede observar en la figura 4.10.
Figura 4.10 Resultado a la petición de datos a la WSN
4.1.4.2 Base de datos y HMI
Estos datos son insertados en la base de datos PostreSQL V8.1, la cual es de fuente abierta (gratuita) y tiene capacidad de comunicación con otras bases de datos u ofrecer accesos a la base de datos local.
La base de datos se configuró para ser accedida vía LAN y por medio de otra computadora conectada a la misma red se accede a la información pudiendo manejarla para otras operaciones. Una ventaja de esta forma de conectarlo, es que cualquier computadora dentro de la misma red tiene acceso a la información si la base de datos y la computadora anfitriona están configuradas para dar ese tipo de acceso, el cual se puede restringir tanto para ciertas computadoras o para usuarios.
El programa utilizado para configurar la base de datos y visualizar de forma gráfica los eventos y registros en las tablas es el pgAdmin III el cual viene en la instalación del PostreSQL. En la figura 4.11 se muestra una tabla con datos recibidos de la aplicación de TinyDB, estos son los resultados de una petición de número de nodo, localidad (place) y parte (part).
Figura 4.11 Tabla de la Base de datos PostgreSQL recibiendo información
Tanto la aplicación de TinyDB y la base de datos están en la misma computadora (computadora 1) y está conectada a la red LAN.
La HMI creada en WinCC reside en la computadora 2 y se comunica con la base de datos de la computadora 1 por medio del protocolo TCP/IP de la red LAN.
El paquete de WinCC de propiedad de Siemens, tiene la capacidad para conectarse con PLCs de marca Siemens y además integra funciones para comunicarse con servidores OPC (Ole for Process Control) y SQL. Sin embargo el PostreSQL no es igual al software de SQL, utilizan distintos controladores para realizar sus funciones, pero con solo instalar el controlador adecuado y configurarlo correctamente WinCC se comunica de forma similar al servidor PostreSQL como si fuera SQL.
Normalmente las interfases hechas en WinCC se utilizan en los cuartos de control donde se concentra toda la información del proceso y sus variables.
La figura 4.12 nuestra la interfaz gráfica realizada para la aplicación. Dicha imagen muestra una celda didáctica de manufactura localizada en los laboratorios de mecatrónica en la cual se tienen distintas localidades como: una Fresadora CNC, un brazo robot, una banda transportadora y un almacén.
Figura 4.12 Interfaz Gráfica realizada en WinCC
La cual lee de la base de datos en la computadora 1 la información de los motes, procesa la información y muestra en un círculo blanco junto a la localidad el cual se torna de color verde si se le da un clic sobre la imagen de la localidad correspondiente.
La tabla 4.7 muestra cual es el número correspondiente a cada localidad.
Tabla 4.7 Codificación de las localidades en el área experimental
Código Localidad
3 Almacén
2 Banda transportadora
4 Brazo Robot
1 Fresadora CNC
Además se generó una HMI dedicada al área de procesos, en la cual informa del estatus de las piezas, localidades e identificación de dispositivos en piso. Esta interfaz se generó por medio de la herramienta de software Protool de Siemens.
Esta herramienta permite crear HMIs para paneles dedicados en piso de planta, en esta pantalla se puede observar el proceso, pueden alterarse parámetros del proceso ya que está conectada directamente al PLC por medio del protocolo PROFIBUS DP.
Se utilizó una pantalla tipo Touch Screen, la cual despliega de forma muy similar a la creada en WinCC una vista de la ceda de manufactura con indicadores digitales para observar el tipo de pieza en proceso, la localidad de esta y un identificador de mote.
Figura 4.13 Interfaz en piso de planta