UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO INSTITUTO DE CIENCIAS BÁSICAS E INGENIERÍA CENTRO DE INVESTIGACIÓN EN TECNOLOGÍAS DE INFORMACIÓN Y SISTEMAS
CONTROL SUPERVISORIO VIRTUAL Y ADQUISICIÓN DE DATOS DE UN INVERNADERO AUTOMATIZADO
T QUE
E
PARA
S
I
OBTENER
S EL
TÍTULO
DE
MAESTRO EN CIENCIAS COMPUTACIONALES P
R
E
JORGE ASESOR:
S
E
HERNÁNDEZ
N
T
A
CAMACHO
DR. VIRGILIO LÓPEZ MORALES1
CO-ASESOR: DR. RAMÓN SOTO DE LA CRUZ2
PACHUCA DE SOTO, HIDALGO. DICIEMBRE DE 2007 1 2
Investigador de la UAEH-ICBI-CITIS Investigador de la Universidad Autonóma del Estado de Sonora
i A G R A D E C I M I E N T O S
A la Universidad Autónoma del Estado de Hidalgo por haberme dado la oportunidad de estudiar la Maestría en Ciencias Computacionales en el Centro de Investigación de Tecnologías e Información y Sistemas. A los directores del CITIS, Coordinadores, y al Director de Postgrado. A mis asesores de tesis, Dr. Virgilio López Morales, y al Dr. Ramón Soto de la Cruz por haberme dirigido y orientado en todo el trascurso de este trabajo. A los Sinodales de Tesis, que me apoyaron en la revisión y poder contar con sus puntos de vista y así ampliar más la visión y alcance de este trabajo. A mis queridos padres: por el apoyo que me han dado en el transcurso de la vida. Les agradezco todo el esfuerzo que hicieron por darme lo más preciado en toda mi vida, el amor incondicional y la educación, familiar. Gracias por apoyarme, los quiero mucho. A mi hermana: por existir y así también aprender de ella, que la perseverancia es lo mejor de una buena disciplina para poder llegar a nuestras metas propuestas. También por el cariño que siempre me ha otorgado, y por ser también una buena amiga y consejera. A mis amigos los cuales solo Dios sabe, por apoyarme incondicionalmente, como también por compartir hermosos momentos con ellos de su vida. A mis compañeros los cuales me estuvieron acompañando en el transcurso de toda mi estancia en el CITIS. Al Dr. Julio Waissman que no le gusta que le digan Doc., a Don Hector y Doña Crystina mis caseros, a M.C. Anita y su familia. A mis amigos del CITIS, del CIMA, CEVIDE, ICBI, Biológicas, Química. A todos las personas que me dieron la oportunidad de convivir y compartir un tiempo en sus vidas. Gracias. A los trabajadores de la Universidad, a todo el personal de la UAEH (Universidad Autónoma del Estado de Hidalgo), CEUNI y ABASOLO.
Índice general Resumen de la Tesis
xii
Contexto de la Tesis
xiii
Objetivo de la Tesis
xiv
Justificación de la Tesis
xv
1. Control Supervisorio de un Invernadero Automatizado. 1.1. Concepto de Control Supervisorio. . . . . . . . . . . . . . . 1.1.1. Sistemas distribuidos. . . . . . . . . . . . . . . . . . 1.1.2. Capacidad de visualizar en Web. . . . . . . . . . . 1.1.3. Manejo del Mouse. . . . . . . . . . . . . . . . . . . 1.2. Funcionalidades y Alcances. . . . . . . . . . . . . . . . . . 1.3. Invernaderos Hidropónicos Automatizados. . . . . . . . . . 1.3.1. Requerimientos Edafoclimáticos . . . . . . . . . . . 1.3.2. Diseño de Invernaderos. . . . . . . . . . . . . . . . 1.3.3. Construcción del Invernadero. . . . . . . . . . . . . 1.3.4. Manejo de la plantación. . . . . . . . . . . . . . . . 1.4. Control Supervisorio de un Invernadero Automatizado. . . 1.5. Organización de la tesis. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
1 1 2 3 3 4 4 5 7 8 9 10 10
2. Estado del Arte y Herramientas. 2.1. Estado del arte. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Presentar los términos y conceptos básicos. . . . . . . . . . . . . 2.2.1. LabVIEW. . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2. Lenguaje de Programación JAVA . . . . . . . . . . . . . 2.2.3. VRML. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4. HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5. Diseño de objetos 3D en 3dStudio Max. . . . . . . . . . 2.2.6. Realidad Virtual. . . . . . . . . . . . . . . . . . . . . . . 2.2.7. Optimización de Código e inserción de enlaces en VRML. 2.2.8. Navegadores 3D. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
13 15 16 16 18 20 21 21 22 23 23
iii
. . . . . . . . . . . .
. . . . . . . . . . . .
ÍNDICE GENERAL
iv
2.2.9. Programación de efectos . . . . . . . . . . . . . . . . . . . . . . 2.2.10. Adquisición de Datos utilizando LabVIEW. . . . . . . . . . . . 3. Arquitectura general del sistema. 3.1. Funcionalidades. . . . . . . . . . . . . . . . . . . 3.2. Modelo Funcional. . . . . . . . . . . . . . . . . . 3.2.1. Metodología de Desarrollo de la Solución: . 3.3. Adquisición de Datos en LabVIEW. . . . . . . . . 3.4. Obtención de Datos. . . . . . . . . . . . . . . . . 3.5. Desarrollo del Mundo Virtual . . . . . . . . . . . 3.6. Asignación de Comportamiento Complejo. . . . . 3.7. Interfaz Gráfica. . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
4. Integración de comunicación: Sistema Mínimo, LabVIEW, Virtual y Java. 4.1. Comunicación via EAI entre VRML y Java . . . . . . . . . . . . 4.1.1. Comunicación de datos LabVIEW y Java. . . . . . . . . 4.1.2. Sistema Mínimo. . . . . . . . . . . . . . . . . . . . . . . 4.1.3. Publicación Web del invernadero virtualizado. . . . . . . 5. Flujo de Datos. 5.1. Flujo de Datos en General . . . . . 5.2. Comunicación . . . . . . . . . . . . 5.3. Flujo de datos en LabVIEW . . . . 5.4. Flujo datos con Java . . . . . . . . 5.5. Almacenamiento de Datos a Mysql 5.6. Estructura de la Base de Datos . . 5.7. Pruebas Realizas . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
23 23 25 26 26 26 26 27 30 31 33
Mundo . . . .
. . . . . . .
. . . .
. . . . . . .
. . . .
. . . . . . .
. . . .
41 41 44 50 52
. . . . . . .
55 55 58 59 62 63 67 70
Conclusiones y perspectivas
71
Bibliografía
73
A. Presentaciones. A.1. Poster . . . A.2. Tríptico 1 . A.3. Tríptico 2 . A.4. Artículo . . A.5. Poster 2 . .
. . . . .
77 78 79 80 81 85
B. Código Fuente. B.1. VRML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87 87 89
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
ÍNDICE GENERAL
B.3. B.4. B.5. B.6. B.7.
Querys SQL . . . . . . . . . LabVIEW . . . . . . . . . . HTML . . . . . . . . . . . . Flash . . . . . . . . . . . . . Otros Códigos . . . . . . . . B.7.1. Lego de Mindstorms B.7.2. Java . . . . . . . . .
v . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
89 89 90 90 90 90 90
A. Presentaciones. A.0.3. Programación de efectos y automatización del invernadero . . .
91 91
A. Presentaciones. A.0.4. Adquisición de Datos utilizando LabVIEW. . . . . . . . . . . .
97 97
B. Sistemas Mínimos. B.1. Sistemas Mínimos. . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2. Componentes del Sistema Mínimo. . . . . . . . . . . . . . . . . . . B.2.1. Diferencia entre un microprocesador y un microcontrolador. B.2.2. Microcontrolador PIC16F877. . . . . . . . . . . . . . . . . . B.2.3. Registros generales del Microcontrolador PIC16F877. . . . . B.2.4. Registros para control de interrupciones. . . . . . . . . . . . B.2.5. Puertos de entrada y salida. . . . . . . . . . . . . . . . . . . B.2.6. Registros de los temporizadores. . . . . . . . . . . . . . . . . B.2.7. Registros de comunicación serial. . . . . . . . . . . . . . . . B.2.8. Registros del módulo de conversión A/D. . . . . . . . . . . . B.3. Pantalla de LCD para visualización. . . . . . . . . . . . . . . . . . . B.4. Puerto de comunicación serial RS-232. . . . . . . . . . . . . . . . . B.4.1. Convertidor de interfaz RS-232 a RS-485. . . . . . . . . . . . Siglario
. . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
103 104 105 106 106 113 114 116 118 120 123 125 126 126 128
Índice de figuras 1.1. 1.2. 1.3. 1.4. 1.5.
Estructura General. . . . . . . . . . . . . . . . . . . . . . Crecimiento en medio estable, climático y nutricional. . . Interior del invernadero que se utilizó en este proyecto de Exterior del invernadero bajo estudio. . . . . . . . . . . . Esquema de flujo de datos. . . . . . . . . . . . . . . . . .
. . . . .
3 5 8 9 10
2.1. Diagrama de bloques de un programa. . . . . . . . . . . . . . . . . . . 2.2. Diseño del invernadero en 3DS Max. . . . . . . . . . . . . . . . . . . .
18 22
3.1. Diagrama general del funcionamiento del invernadero virtual. 3.2. Diagrama de bloques. . . . . . . . . . . . . . . . . . . . . . . 3.3. Estructura de datos de los sensores en el archivo. . . . . . . 3.4. Diagrama por bloques. Sección de Archivos. . . . . . . . . . 3.5. Diagrama de bloques de simulación de adquisición de datos. 3.6. Diseño de objetos 3D del invernadero. . . . . . . . . . . . . . 3.7. Diseño del invernadero desde código VRML. . . . . . . . . . 3.8. Diseño del invernadero ISA Parallel Graphics. . . . . . . . . 3.9. Asignación de Comportamientos en VRML. . . . . . . . . . 3.10. Asignación de Comportamientos en Java usando EAI. . . . . 3.11. Estructura General de Sensores, Actuadores y Módulos. . . . 3.12. Adquisición y puente del mundo virtual. . . . . . . . . . . . 3.13. Instrumentos Virtuales en LabVIEW . . . . . . . . . . . . . 3.14. Instrumentos Virtuales en VRML. . . . . . . . . . . . . . . . 3.15. Instrumentación Virtual en Flash . . . . . . . . . . . . . . . 3.16. Alarmas en Flash . . . . . . . . . . . . . . . . . . . . . . . . 3.17. Applet publicado manejador del comportamiento. . . . . . . 3.18. Invernadero virtual publicado en internet. . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
25 27 28 28 29 30 31 32 33 34 35 35 36 36 37 37 38 39
4.1. 4.2. 4.3. 4.4. 4.5.
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
42 44 45 48 49
Métodos de comunicación en VRML via EAI. . . . . . Página HTML con VRML y un Applet utilizando EAI. Bloque de abrir o crear archivo. . . . . . . . . . . . . . Bloque de escribir en el archivo. . . . . . . . . . . . . . Bloque de Cerrar archivo. . . . . . . . . . . . . . . . . vii
. . . . .
. . . . . . tesis. . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
ÍNDICE DE FIGURAS
viii 4.6. Diagrama por bloques. Sección de Archivos. 4.7. Diagrama de pines del PIC16F877 . . . . . . 4.8. Estación meteorológica . . . . . . . . . . . . 4.9. Arquitectura Serial Distribuida . . . . . . . 4.10. Configuración Web . . . . . . . . . . . . . . 4.11. Invernadero publicado en la web. . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
49 50 51 52 53 54
Diagrama general del flujo de datos. . . . . . . . . . . . . . . . . . Diagrama general del flujo. . . . . . . . . . . . . . . . . . . . . . . Flujo de los datos desde los módulos esclavos al modulo maestro. Adquisición de datos utilizando LabVIEW y bloques VISA. . . . . Instrumentación Virtual en LabVIEW. . . . . . . . . . . . . . . . Invernadero e Instrumentación Virtual en Internet. . . . . . . . . Applet publicado manejador del comportamiento. . . . . . . . . . Diagrama de Adquisición de datos en Java. . . . . . . . . . . . . . Prueba de conexión en cross over. . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
56 57 58 60 61 61 62 63 70
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
78 79 79 80 80 81 82 83 84 85
B.1. Mapa de rutas del mundo virtual del invernadero. . . . . . . . . . . . .
88
5.1. 5.2. 5.3. 5.4. 5.5. 5.6. 5.7. 5.8. 5.9.
A.1. Poster. . . . . . . . . . A.2. Tríptico 1 lado 1. . . . A.3. Tríptico 1 lado 2. . . . A.4. Tríptico 2 lado 1. . . . A.5. Tríptico 2 lado 2. . . . A.6. Pagina 1 del Artículo. A.7. Pagina 2 del Artículo. A.8. Pagina 3 del Artículo. A.9. Pagina 4 del Artículo. A.10.Poster 2. . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
seriales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . . .
. . . . . . . . . .
A.1. A.2. A.3. A.4. A.5. A.6. A.7.
Panel frontal de escritura y lectura por los puertos Escritura y lectura de datos por medio del VISA. Entradas y salidas de una bloque de función. . . . bloque VISA configuración de puerto serial. . . . bloque VISA read. . . . . . . . . . . . . . . . . . bloque VISA write. . . . . . . . . . . . . . . . . . bloque VISA close. . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
97 98 99 99 100 101 102
B.1. B.2. B.3. B.4. B.5. B.6.
Diagrama del sistema mínimo orientado al PIC16F877. . . . . . . . . . 104 Sistema Mínimo propuesto. . . . . . . . . . . . . . . . . . . . . . . . . 105 Estructura de un sistema abierto basado en un microprocesador ([Angulo, 1999]).106 Diagrama del microcontrolador PIC16F877 ([Microchip, 2001]). . . . . 108 Arquitectura abierta de los microcontroladores PIC16F877 ([Microchip, 2001]).109 Organización de la memoria FLASH de los PIC16F877 ([Microchip, 2001]).110
ÍNDICE DE FIGURAS
ix
B.7. Distribución de la memoria RAM en los cuatro bancos ([Microchip, 2001]).111 B.8. Esquema interno de los principales bloques del timer 1 ([Microchip, 2001]).119 B.9. Configuración del MAXIM 485. . . . . . . . . . . . . . . . . . . . . . . 127
Índice de Tablas 2.1. Applet y su publicación en la web . . . . . . . . . . . . . . . . . . . . . 2.2. Plugins Visualizadores 3D . . . . . . . . . . . . . . . . . . . . . . . . .
19 24
3.1. Estado del applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.1. Function Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Pos mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46 47
5.1. 5.2. 5.3. 5.4. 5.5.
Base . . . . . . . Tablas . . . . . . Tabla actuadores Tabla alarmas . . Tabla sensores . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
67 68 68 69 69
A.1. A.2. A.3. A.4. A.5.
Sintaxis Sintaxis Sintaxis Sintaxis Sintaxis
. . . . . . . . . . . . . . . . . . . . colisión
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
92 92 92 93 94
B.1. Bits de selección de banco en el registro de estado. . . . . . . . . . B.2. Estructura interna del registro de estado. . . . . . . . . . . . . . . B.3. Estructura interna del registro de opciones. . . . . . . . . . . . . . B.4. Estructura interna del registro de interrupciones. . . . . . . . . . B.5. Estructura interna del registro PIE1. . . . . . . . . . . . . . . . . B.6. Estructura interna del registro PIR1. . . . . . . . . . . . . . . . . B.7. Estructura interna del registro T1CON. . . . . . . . . . . . . . . . B.8. Bits para selección del rango del predivisor. . . . . . . . . . . . . B.9. Estructura interna del registro TXSTA. . . . . . . . . . . . . . . . B.10.Estructura interna del registro RCSTA. . . . . . . . . . . . . . . . B.11.Tabla de selección de bits para elegir reloj de conversión. . . . . . B.12.Tabla de selección de canal analógico en el proceso de conversión. B.13.Estructura interna del registro ADCON0. . . . . . . . . . . . . . . B.14.Estructura interna del registro ADCON1. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
112 114 114 115 116 116 119 120 121 122 124 124 125 125
de DEF de DEF de DEF de USE del Nodo
. . . . .
. . . . .
. . . . .
xi
xii Resumen En este trabajo se presenta un prototipo de un invernadero automatizado virtual para internet, utilizando Realidad Virtual para ofrecer un control supervisorio del invernadero automatizado físico, con una apropiado monitoreo, que considera los instrumentos virtuales para la supervision de las variables edafoclimáticas como también del sistema automatizado del invernadero, implementadas a través de la adquisición de datos del invernadero físico. A manera de ejemplo, se desarrolla un sistema para un invernadero automatizado virtual para la producción agrícola del jitomate. Un invernadero automatizado es implementado en forma virtual para ser supervisado en la Internet. La simulación del invernadero es posible gracias a herramientas como LabVIEWr de Nationals Instrumentsr, VRML, Java, Discreet 3DStudior, (ISAr, Cortona Player, Cortona SDK 4.1) de Parallel Graphicsr, Adobe Flash y la Maquina Virtual de Microsoft de Java. En este trabajo de tesis se abordaron diferentes tópicos desde la adquisición de datos por medio de la herramienta de control de LabVIEWr en donde estos son utilizados, hasta la realización del invernadero virtualizado, el cual reaccionará de acuerdo a los datos sensados físicamente. Para la programación de comportamientos de algunos objetos que se presentan en el invernadero virtual, se utilizó el lenguaje Java, ya que posee la potencialidad del uso de hilos para darles comportamiento en línea a través de internet, como la adquisición de datos desde LabVIEWr, que es necesario para el funcionamiento del objeto en su simulación virtual. Para la adquisición de datos se utilizó la herramienta de LabVIEWr 7.1 de National Instrumentsr, donde con los dispositivos que miden las variables del entorno real del invernadero son obtenidas como variables donde el invernadero virtual va estar simulando el comportamiento del invernadero real. Con uso del Lenguaje Java son adquiridas estas variables desde LabVIEWr de tal manera que se va modificando el mundo virtual en línea, los nuevos datos son actualizados cada 4 segundos.
Contexto de la Tesis
xiii
Contexto de la Tesis El presente trabajo de tesis tiene sus bases en un proyecto de evaluación, control y supervisión de invernaderos hidropónicos (Cf [Virgilio López Morales, 2006]), en el cual en un invernadero se tienen sensores que están físicamente instalados y que por medio de módulos esclavos (sistemas mínimos), se conectan con el módulo maestro para la adquisición de datos y envío de acciones [Morales, 2006]. El módulo maestro se conecta con una PC por medio de LabVIEWr. Así, se obtienen los datos adquiridos por los sensores y estos son almacenados, para luego ser utilizada para la automatización del invernadero virtual en 3D y publicarlo en Internet. Con esta arquitectura se logra supervisar y controlar el invernadero en 3D desde cualquier punto del mundo, como la visualización de los VIs (Instrumentos Virtualizados), por ejemplo : termómetro, anemómetro, medidor de radiación solar, veleta de dirección del viento.
xiv
Objetivos Objetivo General Desarrollar un prototipo funcional interactivo de un invernadero virtual automatizado, controlado por Internet, donde el usuario pueda visualizar el comportamiento y supervisar las variables. Los objetivos específicos del presente trabajo de tesis son los siguientes: Objetivos Específicos 1) Compilación del estado del arte sobre virtualización y telemanipulación de instrumentos virtuales. 2) Representar, mediante Realidad Virtual, el invernadero automatizado. 3) Dar comportamiento a los mecanismos del invernadero virtual en base a las condiciones del medio ambiente, de control y supervisión en las que se encuentra el invernadero real. 4) Obtener los datos del invernadero real mediante un sistema mínimo vía RS-232. 5) Establecer un puente de acceso bidireccional en el flujo de datos entre el invernadero virtualizado y el invernadero real.
Justificación de la Tesis
xv
Justificación El sistema que se desarrolló y se implemento, es un prototipo el cual se puede utilizar para la supervisión a distancia, a través de Internet. También es el caso que antes de implementar en el invernadero real los sensores y sistemas mínimos que controlan los actuadores se puede simular la programación de las actuación del invernadero bajo una simulación en un invernadero virtual y poder predecir el comportamiento bajo diferentes eventos, de tal manera modificar la actuación con respeto a la region del invernadero real y sus variables edafoclimáticas. En este caso se implementa un control supervisorio virtual y de adquisición de datos de un invernadero automatizado. Se desea representar el comportamiento de un invernadero automatizado real, para su supervisión desde un area distante a la ubicación del invernadero. De tal manera en el que el invernadero automatizado real fallara un mecanismo la simulación virtual muestre una alerta de mal funcionamiento y la ubicación del problema. En la actualidad existen diversas herramientas de autoría que permiten el desarrollo de escenas tridimensionales por ejemplo: 3Dstudio de Discreet, Maya de Alias Wavefront etc. sin embargo éstas solo generan escenas que pueden ejecutarse de forma local. Si se desea generar mundos virtuales para su uso en Internet, será necesario desarrollarlos usando lenguajes como VRML, X3D ó JOGL aún en desarrollo. Por otra parte, asignar comportamientos complejos también pueden desarrollarse con interfaces externas mediante los lenguajes de Java o Javascript. Estas interfaces, conocidas como EAI (External Authoring Interfaces) y JSAI (JavaScript Authoring Interfaces), permiten mayor flexibilidad para asignar comportamientos complejos a los objetos de los mundos virtuales, ya que es posible mantener el código VRML independiente de los programas desarrollados en Java o JavaScript, utilizados para manipular los eventos. En éste trabajo se hace uso de Java y LabVIEW, debido a que éstos obtienen información del invernadero físico y no tiene guardado una simulación del comportamiento de las variables edafoclimáticas.
Capítulo 1 Control Supervisorio de un Invernadero Automatizado. Introducción El nivel de confort presente en nuestro mundo existe gracias al control que la humanidad tiene sobre la tecnología y a los diferentes sistemas destinados a reducir el esfuerzo, en un mínimo tiempo y costo. Desde el fin de la II guerra mundial se ha invertido mucho tiempo y dinero en desarrollar elementos destinados al control, sin embargo al correr del tiempo, la tecnología se vuelve más compleja y por tal motivo las unidades de control se dedican solo a partes específicas del sistema completo. Debido a que actualmente existe la necesidad y posibilidad de interconectar diferentes módulos de supervisión con elementos visuales, surge un concepto nuevo: el concepto de control supervisorio que se revisará a continuación.
1.1.
Concepto de Control Supervisorio.
El Control supervisorio nos permite monitorear, controlar y supervisar de manera permanente automática e instantánea diferentes dispositivos o sistemas, por ejemplo un invernadero automatizado, desde cualquier parte del mundo con una conexión a Internet. Un invernadero automatizado cuenta con sensores en los tanques de agua para obtener el nivel, un anemómetro para conocer la velocidad del viento, una veleta para medir la dirección del viento, termómetros y sensores de humedad, radiación solar, intrusión no autorizada, etc., etc.. Este conjunto de sensores ayudan a automatizar el invernadero y con los datos obtenidos se puede controlar por ejemplo: la temperatura del módulo del invernadero, 1
2
1.1. Concepto de Control Supervisorio.
ventilar el invernadero en caso de que la misma temperatura sobrepase los rangos limites para la cosecha ó calentar el invernadero si la temperatura es muy baja. Nuestro caso de estudio se basa en el control supervisorio de un invernadero automatizado. Modelar el invernadero en 3D para poder observarlo desde cualquier punto con conexión a Internet, además de que tenga el comportamiento del invernadero del mundo real, todo esto es posible gracias a la tecnología actual. Ese comportamiento estará dado por la adquisición de datos que del invernadero del mundo real se obtenga, mediante los dispositivos de medición. De esta manera, el invernadero virtual podrá reaccionar a todos los eventos que en ese momento se encuentren presentes. Nuestro objetivo es supervisar y controlar una producción agrícola presente en el invernadero. El control supervisorio ayudará al administrador del invernadero o al mismo agricultor, si en dado caso este no se encontrara en el lugar de la cosecha; a decidir si es prudente su presencia física, ya que dichos factores presentes en el invernadero hacen que sea necesaria la interrelacion humana. Un ejemplo sencillo es cuando no exista agua en la cisterna del cual el invernadero automatizado necesita para bombear a los tinacos para el riego. A continuación se mencionan las herramientas de autoría que nos ayudan en este propósito. El caso del invernadero virtualizado es orientado a presentar contenido como los VIs (Instrumentos Virtuales) y una mini presentación del invernadero que se desarrolla en Macromedia Flashr. Así también, para la representación virtual del invernadero en 3D, se usa un browser 3D, que en la práctica se usa el Cortona Playerr de Parallel Graphicsr. Por último el uso de etiquetas HTML, se utiliza para formar y tener un diseño del contenido de forma que pueda ser apreciado todos estos contenidos en una pantalla, diseñado en resolución de 800*600 píxeles. El uso de (son similares a los frames, aunque aquellas generan cajas para la visualización de otras páginas web, compatible con Microsoftr Internet Explorerr), se implementó para publicar mini páginas informativas de los componentes del invernadero.
1.1.1.
Sistemas distribuidos.
El prototipo esta basado en sistemas distribuidos, por la distribución física de los módulos esclavos que tienen una comunicación con el modulo maestro, para la obtención de las medidas de cada uno de los sensores implantados en un invernadero para tener las variables del medio ambiente y realizar las actuaciones necesarias del invernadero de acuerdo a los requerimientos edafoclimáticas del tomate como se puede observar en la Figura 1.1.
1. Control Supervisorio de un Invernadero Automatizado.
3
Figura 1.1: Estructura General.
En la estructura general que se muestra en la Figura 1.1 anterior, se observan a los sensores que se encuentran distribuidos por el invernadero, así como los actuadores, y también los módulos esclavos. El sistema distribuido se encuentra estructurado de manera que los módulos esclavos se comuniquen con el módulo maestro de tal manera este envié la información a la pc, donde luego se procesa y se publica la información en internet como también el invernadero virtual realiza la simulación de la información obtenida.
1.1.2.
Capacidad de visualizar en Web.
Los mundos virtuales pueden visualizarse mediante algún navegador o browser VRML el cual se ejecuta como un plug-in sobre un browser WWW o como una aplicación stand-alone.
1.1.3.
Manejo del Mouse.
El browser o navegador VRML proporciona primitivas de navegación, que en el ambiente virtual simulan el caminar, volar, rotar, etc., las cuales permiten al usuario mover el visor a través del mundo virtual. Además de la navegación, el browser proporciona un mecanismo que permite al usuario interactuar con el mundo, mediante acciones del mouse.
1.2.
Funcionalidades y Alcances.
El sitio web, producto práctico principal de este trabajo, es esencialmente un ambiente virtual desarrollado con VRML, con estas escenas tridimensionales, que representan el modelo de un invernadero automatizado. Mediante recorridos virtuales, el usuario puede observar las características de las instalaciones como las partes fundamentales del invernadero para su interacción con el entorno. El invernadero virtualizado en 3D usa varias herramientas de software, de tal manera que también tenga comportamiento de forma automatizada como el invernadero real, dado que este hace uso de los mismo datos que el real obtiene en tiempo real, y así también se muestra una breve descripción de los equipos utilizados, de manera
4
1.3. Invernaderos Hidropónicos Automatizados.
informativa. La razón primordial por la cual se desea supervisar el invernadero está basada en la productividad agrícola y al menor uso posible de agroquímicos y pesticidas. En está sección, se explica con más detalle la estructura física y la función de un invernadero hidropónico. Para un mayor detalle CF. [para Invernadero, 2006].
1.3.
Invernaderos Hidropónicos Automatizados.
El invernadero es un espacio con el microclima apropiado para el óptimo desarrollo de una plantación específica. Así, partiendo del estudio técnico de ambientación climática, debe de tenerse una temperatura, humedad relativa y ventilación apropiadas que permitan alcanzar alta productividad, a bajo costo, en menos tiempo, sin daño ambiental, protegiéndose de las lluvias, el granizo, las heladas, los insectos o los excesos de viento que pudieran perjudicar el cultivo [para Invernadero, 2006]. Es muy común que se improvisen invernaderos, razón por la cual en algunos países existe una composición muy heterogénea de productividad por planta o por metro cuadrado y de utilización de agroquímicos. En algunos lugares puede encontrarse productores de tomate que obtienen entre 6 y 12 kilos por planta y a poca distancia de ellos otros que producen entre 13 y 22 kilos por planta, pero también otros que solo producen entre 2 y 5 kilos por planta, sembrando las mismas semillas. Hay un axioma que es digno de tenerse en cuenta, el que menos produce incurre en más costos, porque es inversamente proporcional la productividad con los requerimientos de agroquímicos. A menor productividad mayor uso de agroquímicos [para Invernadero, 2006]. Cuando una planta no es productiva es porque ha tenido problemas de exceso o falta de humedad, de exceso o falta de temperatura, de exceso o falta de ventilación, de exceso o falta de luminosidad, es decir ha tenido problemas derivados de las siguientes razones:
Figura 1.2: Crecimiento en medio estable, climático y nutricional.
1. Control Supervisorio de un Invernadero Automatizado.
5
1. - Diseño del invernadero. 2. - Construcción del invernadero. 3. - Manejo de la plantación. 4. - Nutrientes, riego y pesticidas.
1.3.1.
Requerimientos Edafoclimáticos
Los requerimientos edafoclimáticos de este caso de estudio en el invernadero hidropónico es con jitomates. En ambiente apropiado: estabilidad climática, hídrica y nutricional, se consiguen racimos con frutos abundantes, homogéneos, en el peso normal y sanos. El manejo racional de los factores climáticos de forma conjunta es fundamental para el funcionamiento adecuado del cultivo, ya que todos se encuentran estrechamente relacionados y la actuación sobre uno de estos incide sobre el resto [infoagro.com, 2003]. En comparación de los diferentes productos agrícolas la berenjena y el pimiento son menos exigentes en la temperatura. En cambio en el jitomate se muestran a continuación cuales son sus requerimientos. Temperatura : La temperatura óptima de desarrollo oscila entre 20 y 30o C durante el día y entre 10 y 17o C durante la noche; temperaturas superiores a los 30 − 35o C afectan a la fructificación, por mal desarrollo de óvulos y al desarrollo de la planta en general y del sistema radicular en particular. Temperaturas inferiores a también originan problemas en el desarrollo de la planta. A temperaturas superiores a 25o C e inferiores a 12o C la fecundación es defectuosa o nula. La maduración del fruto está muy influida por la temperatura en lo referente tanto a la precocidad como a la coloración, de forma que valores cercanos a los 10o C así como superiores a los 30o C originan tonalidades amarillentas. No obstante, los valores de temperatura descritos son meramente indicativos, debiendo tener en cuenta las interacciones de la temperatura con el resto de los parámetros climáticos. Humedad: la humedad relativa óptima oscila entre un 60 % y un 80 %. Humedades relativas muy elevadas favorecen el desarrollo de enfermedades aéreas y el agrietamiento del fruto y dificultan la fecundación, debido a que el polen se compacta, abortando parte de las flores. El rajado del fruto igualmente puede tener su origen en un exceso
6
1.3. Invernaderos Hidropónicos Automatizados.
de humedad edáfica o riego abundante tras un período de estrés hídrico. También una humedad relativa baja dificulta la fijación del polen al estigma de la flor. Luminosidad: valores reducidos de luminosidad pueden incidir de forma negativa sobre los procesos de la floración, fecundación así como el desarrollo vegetativo de la planta. En los momentos críticos durante el período vegetativo resulta crucial la interrelación existente entre la temperatura diurna y nocturna y la luminosidad. Suelo: la planta de tomate no es muy exigente en cuanto a suelos, excepto en lo que se refiere al drenaje, aunque prefiere suelos sueltos de textura silíceo-arcillosa y ricos en materia orgánica. No obstante se desarrolla perfectamente en suelos arcillosos enarenados. En cuanto al pH, los suelos pueden ser desde ligeramente ácidos hasta ligeramente alcalinos cuando están enarenados. Es la especie cultivada en invernadero que mejor tolera las condiciones de salinidad tanto del suelo como del agua de riego. Fertilización carbónica: la aportación de CO2 permite compensar el consumo de las plantas y garantiza el mantenimiento de una concentración superior a la media en la atmósfera del invernadero; así la fotosíntesis se estimula y se acelera el crecimiento de las plantas. Para valorar las necesidades de CO2 de los cultivos en invernadero necesitamos realizar, en los diversos periodos del año, un balance de las pérdidas derivadas de la absorción por parte de las plantas, de las renovaciones de aire hechas en el invernadero y las aportaciones proporcionadas por el suelo a la atmósfera del mismo. Del enriquecimiento en CO2 del invernadero depende la calidad, la productividad y la precocidad de los cultivos. Hay que tener presente que un exceso de CO2 produce daños debidos al cierre de los estomas, que cesan la fotosíntesis y pueden originar quemaduras. Los aparatos más utilizados en la fertilización carbónica son los quemadores de gas propano y los de distribución de CO2. En el cultivo del tomate las cantidades óptimas de CO2 son de 700-800 ppm. En cuanto a los rendimientos netos dan incrementos del 15-25 % en función del tipo de invernadero, el sistema de control climático, etc.
1. Control Supervisorio de un Invernadero Automatizado.
1.3.2.
7
Diseño de Invernaderos.
Si se tiene en cuenta que las plantas son seres vivos, mal pudiera dejarse a la improvisación un aspecto tan clave como su microclima. Si en el espacio cerrado no se crea un microclima favorable al desarrollo de las plantas, por supuesto que la productividad se reduce. Las plantas tienen unos rangos de temperaturas y humedad relativa dentro de los cuales producen eficientemente. Por debajo o por encima del rango establecido, ellas se estresan y su productividad declina. Existen también los niveles de tolerancia a partir de los cuales se detiene el proceso fotosintético.
Figura 1.3: Interior del invernadero que se utilizó en este proyecto de tesis.
Estos factores tan claves no son a menudo tenidos en cuenta por quienes hacen sus invernaderos y se encuentran algunos que, por errores de diseño, tienen niveles de humedad relativa altísimos que contribuyen al desarrollo de plagas y enfermedades, lo cual induce a aplicar agroquímicos, elevando los costos de operación y reduciendo la calidad de los frutos. Adicionalmente, el exceso de humedad bloquea la polinización y estos productores pierden gran parte de la cosecha debido a que, por esa razón, las flores no se transforman en frutos o se producen malformaciones en los mismos que los convierten en rechazo. Otros aspectos importantísimos en un invernadero, que son frecuentemente ignorados debido a la improvisación, están relacionados con el viento: En un invernadero de ambientación climática natural, el único motor que cumple la función de regulador de temperaturas y humedad relativa es el viento. Este, a la vez que cumple una función vital en la polinización, expulsa los excedentes de humedad y reduce los excesos de temperatura. Eso explica que en su diseño tienen que considerarse la altura del invernadero y las dimensiones de las aperturas cenitales para que exista, en ese espacio, el volumen de aire requerido y se produzca la renovación necesaria.
Figura 1.4: Exterior del invernadero bajo estudio.
8
1.3.3.
1.4. Control Supervisorio de un Invernadero Automatizado.
Construcción del Invernadero.
En la construcción también se incurre frecuentemente en diversos errores que pudieran ser evitados con estudio, diseño y planos. Los traslapes son en ocasiones muy cortos y quedan espacios que permiten filtraciones de agua. Igual sucede con los canales que no tienen la cavidad correcta o la extensión adecuada. Valga decir que los principales problemas que confronta una plantación se derivan del exceso de humedad. La humedad debe ser absolutamente controlada.
1.3.4.
Manejo de la plantación.
Graves problemas de plagas, enfermedades, alta humedad y altísimas temperaturas se producen debido a errores en la densidad de siembra que son muy comunes en nuestro medio. Algunas personas piensan que sembrando más plantas que las recomendables, o que manejando dos ejes, obtienen más cosecha y se lanzan a la aventura de crear en el invernadero una selva por la que no se puede caminar para realizar las labores sin dañar flores, frutos y tallos, además de que generan un microclima inapropiado. En ese exceso de follaje se bloquea el paso de la luz que es el factor vital para la fotosíntesis, se hace barrera al viento limitando la polinización, aumentando la humedad y la temperatura, con lo cual lo que se consigue es bajar la productividad y aumentar los costos. Los invernaderos pueden construirse de madera, de caña, mixtos o metálicos y cumplen la función de crear un microclima perfectamente controlable que permita mantener la temperatura y humedad relativa más apropiadas para el proceso fotosintético de un cultivo específico, reduciendo los riesgos y los costos globales, aprovechando mejor los espacios, incrementando la productividad y mejorando la calidad de los productos. En síntesis, la recomendación es la de hacer, para cada caso, un estudio previo de ambientación climática que permita obtener buenos resultados tanto en el campo económico como en el aspecto ambiental y de la salud humana [para la Productividad Agrícola, ].
1.4.
Control Supervisorio de un Invernadero Automatizado.
El objeto de estudio del sistema, es la virtualización de un invernadero automatizado, este se encuentra organizado por varias etapas. En la primera, se realiza la adquisición de datos de manera simulada o real desde la herramienta de Nationals Instrumentr
1. Control Supervisorio de un Invernadero Automatizado.
9
LabVIEWr, donde este guarda en un archivo los datos obtenidos para que se actualice en la página que esta publicada en la web, como también es almacenado en una base de datos.
Figura 1.5: Esquema de flujo de datos.
En la segunda, existe un mundo virtual el cual es un invernadero que reacciona a los factores que intervienen con el cultivo. Esos datos se obtienen de un archivo que es guardado por LabVIEWr el cual obtiene los datos de los módulos, y que mediante un applet de Java se obtienen estos datos guardados anteriormente con un retardo de 1 segundo mediante el uso hilos, cabe aclarar que el cambio en el medio ambiente no es repentino dado que es de forma gradual y eso nos da la tranquilidad de tener retardos de segundos en la obtención de los datos y simulación de estos en el mundo virtual. Posteriormente los datos leídos del invernadero en un maquina cliente son utilizados de tal manera que actualizará el invernadero virtual, para simular el comportamiento del invernadero físico.
1.5.
Organización de la tesis.
En este trabajo de tesis se presentan los fundamentos teóricos para el desarrollo del caso de estudio propuesto. Inicialmente se describe la problemática de la supervisión de un invernadero, y se plantea una solución posible con el sistema desarrollado. Éste trabajo de tesis está estructurado como se indica a continuación. En el Capítulo 1 se presenta la introducción del tema de tesis de maestría, como sus objetivos, el caso de estudio como la problemática de la producción actual de los invernaderos sin una supervisión controlada. Capítulo 2 se presenta el estado del arte, y las herramientas usadas. Diseño de objetos 3D en 3dStudio Max. Realidad Virtual y VRML. Optimización de Código e inserción de enlaces en VRML de tal modo de comunicación de Java. Navegadores 3D ó VRML. Programación de efectos y automatización del invernadero con Java. Adquisición de Datos utilizando LabVIEWr. Comunicación entre VRML y Java utilizando EAI. Comunicación de datos LabVIEWr y Java. Sistema Mínimo. Creación de un Sitio web para publicación del invernadero visualizado.
10
1.5. Organización de la tesis.
En el Capítulo 3 se presentará la arquitectura general de todo el proyecto de tesis, como la estructura del invernadero virtual automatizado. En Capítulo 4 se mostrará el flujo de los datos, como los pantallas de las simulaciones y de todo el invernadero por secciones como del proyecto final. Finalmente, se dan unas conclusiones y perspectivas en donde se plasman las conclusiones extraídas del presente trabajo de tesis, así como algunas ideas de posibles direcciones de investigación y de desarrollos futuros.
Capítulo 2 Estado del Arte y Herramientas. Resumen. En este capítulo se presenta el estado del arte como también se describen los términos y conceptos básicos en síntesis y objetivo, de Diseño en 3D, Realidad Virtual (VR), así como los conceptos principales de VRML, Java, LabVIEWr y Sistema mínimo, su historia y aplicaciones. Así mismo, se explican los mecanismos para la descripción y asignación de comportamientos complejos en los mundos virtuales. En las siguientes secciones se presentan los términos y conceptos básicos que se abordan en este capítulo. En la sección 2.2.5 se explica el Diseño de objetos 3D en 3dStudio Max. Existen muchos programas para crear modelos en 3ra dimension, entre los cuales de los más populares se encuentran: Discreet 3D Studio Max, Alias Wavefront Maya y muchos otros. Se eligió el 3D studio por la facilidad de su interfaz para el modelado en 3D y su rapidez de generar objetos 3D, a diferencia de Maya que su interfaz es algo menos intuitiva para el modelado. Cabe recalcar que solo se usó esta herramienta para el modelado y la facilidad de la exportación de los objetos 3D a archivos VRML. En la sección 2.2.3 se explica lo que es la Realidad Virtual y VRML. (Virtual Reality o Realidad Virtual) Mundo no real, creado mediante componentes electrónicos computacionales e informaticos, en el que se presentan efectos tales que aparentan ser real. En la sección 2.2.7 se explica la optimización de código e inserción de enlaces en VRML para comunicación con JAVA. En cuanto a la optimización que se quiere dar a entender es la de eliminar código innecesario en los archivos generados por 3Dstudio en formato VRML. La inspección del código fuente generado, es realizada para ir borrando líneas de código ó reemplazar estas por unas más eficientes un ejemplo seria en cuanto al texto, 3dStudio genera el texto como figuras en 3D donde utiliza matrices 11
12
para la forma de cada letra y estas terminan resultando demasiadas grandes, haciendo demasiado pesado el archivo como para ser descargado en la Internet. Otro punto que se realizó con los archivos generados son los enlaces como yo diría para poder hacer los respectivos llamados desde otro programa que pueda generar la comunicación de datos mediante al EAI (External Authoring Interface). En la sección 2.2.8 se ven a detalle algunos navegadores 3D o de VRML. Existen muchos navegadores 3d, de los cuales los que han sido más populares son de la Silicon Graphics, el Cosmo Player y de Parallel Graphics el Cortona Player, del cual el primero dejó de ser renovado por Silicon Graphics. En cuanto a las nuevas mejoras que podría tener con referencias a la carrera de los navegadores Web como eran en ese tiempo la de Microsoft internet Explorer contra la de Netscape Navigator. La empresa de Parallel Graphics aún esta en el juego de actualizar sus paquetes. Así como el HTML también tuvo sus mejorías con respecto el tiempo a DHTML. En cuanto a VRML ya acaba de salir la mejora que es X3D. En la sección A.0.3 explicaremos como se realiza la programación de efectos y automatización del invernadero con Java. Para la generación de efectos en el mundo virtual de tal manera sea dependiente de lo que esta siendo adquirido en tiempo real por la herramienta de Nationals Instrumentsr LabVIEWr se utilizó el lenguaje de programación de Java. El Cortona player es compatible con los nuevos navegadores y también el uso del EAI para la modificación del mundo virtual desde otro lenguaje. Este trae unas librerías consigo como el corteai.zip que se instala en el momento de instalar el navegador 3d de Cortona Player. En la sección A.0.4 se explicará más a fondo la adquisición de datos utilizando LabVIEWr. La herramienta de Nationals Instrumentsr LabVIEWr en modo simulación o real, guarda los datos adquiridos en un archivo para tener una base de datos como historial del comportamiento del clima por toda la temporada y poder realizar con estos datos, futuros temas de investigación donde se pronostiquen las temporadas generales climáticas. En la sección 4.1 se detallará como se realiza la comunicación entre VRML y Java utilizando EAI. En los mundos virtuales creados en lenguaje VRML se crean la definición de nombres de los nodos llamados en lenguaje VRML como DEF (Defining Node Name) el cual sirve para poder llamarlos desde el lenguaje Java y poder acceder a propiedades de un objeto en el mundo virtual y así poder modificarlo gracias a la External Authoring Interface. En esta sección 4.1.1 se vera más a fondo la comunicación de datos LabVIEW y Java. Una forma de comunicarse muy fácil entre la herramienta de Nationals Instrumentsr de
2. Estado del Arte y Herramientas.
13
LabVIEWr donde este ya anteriormente mencionamos que obtiene las variables de los dispositivos que miden la cantidad de cada factor que interviene en la automatización del invernadero por ejemplo el viento, es la de crear un archivo de texto plano donde esta herramienta guarda las variables capturadas, sin ningún formato en específico para ser más ligera la carga de estos datos desde el applet que esta en el cliente por medio de internet y modificar el mundo virtual lo más rápido posible. El archivo se guarda por la herramienta LabVIEWr en la carpeta donde es publicada la página para internet. El Applet de Java utiliza hilos para estar constantemente verificando si existen datos nuevos en el archivo de datos. En la sección 4.1.2 se verá en contexto el Sistema Mínimo. El sistema mínimo obtiene los datos de los sensores y adquiere los valores de las variables donde LabVIEWr las va obteniendo. En la sección 4.1.3 se explicará la creación de un sitio web para publicación del invernadero visualizado. La creación del sitio web es posible gracias también a la herramienta de LabVIEWr ya que ésta tiene la opción de dar servicio web, es decir que pueden ser publicadas las páginas web y así tener salida a la internet. La página del invernadero es una página HTML con varios objetos incrustados, los cuales necesitan una previa instalación del programa que los pueda ejecutar los cuales son: el plugin de Cortona Player este nos sirve para visualizar código VRML como los mundos virtuales en 3D, la VM (Maquina Virtual de Microsoft) este es para la ejecución de los applets de java para la manipulación del mundo virtual y el plugin de Flash Player para la visualización de archivos flash donde visualizaremos animaciones multimedia.
2.1.
Estado del arte.
En el tema de la Realidad Virtual en la Internet estos son documentos más apegados a tema de tesis con el caso de estudio. El Lenguaje de Modelación de Realidad Virtual (VRML) y Java. Es un paper de Don Brutzman, Code UW/Br, Naval Postgraduate School. Monterey California 939435000 USA.
[email protected], presentado en Communications of the ACM, Junio 1998. En el paper nos habla del poder que tienen estas dos herramientas de programación orientadas a la internet las cuales son Java y VRML. Espacios Virtuales de Experimentación cooperativa: Laboratorio Virtual de Cinemática. Es una tesis para obtener el grado de Maestría en Ciencias Computacionales de Gonzalo Alberto Torres Samperio, Universidad Autónoma del Estado de Hidalgo, Presentada en el Centro de Investigación en Tecnologías de Información y Sistemas, Noviembre 2001. La cuál nos habla del uso de la Realidad Virtual utilizada en Internet
14
2.2. Presentar los términos y conceptos básicos.
usando VRML para su uso en la educación, en el tema de un laboratorio de Física, donde las personas pueden interactuar con todos los instrumentos de aprendizaje enfocados a la cinemática pero en forma virtual. Centro de Caoacitación en la Elaboración de Productos Lácteos Orientado a Web. Es una tesis para obtener el grado de Maestría en Ciencias Computacionales de Arturo Curiel Anaya, Universidad Autónoma del Estado de Hidalgo, Presentada en el Centro de Investigación de Tecnologías de Información y Sistemas, Febrero 2001. La cuál no introduce a la enseñanza de la elaboración de productos lácteos pero de manera virtual en un curso de capacitación orientada. En el tema de invernaderos automatizados estos son documentos más apegados a tema de tesis con el caso de estudio.
2.2.
Presentar los términos y conceptos básicos.
En esta sección se presentan los conceptos básicos de la forma en que se desarrolló el proyecto del invernadero automatizado virtual, así como las herramientas utilizadas por separado, y una pequeña introducción general a cada una de ellas.
2.2.1.
LabVIEW.
LabVIEWr es una herramienta gráfica de prueba, control y diseño mediante la programación. El lenguaje que usa se llama lenguaje G [Wikipedia, 2001]. Este programa fue creado por National Instruments (1976) para funcionar sobre máquinas MAC, salió al mercado por primera vez en 1986. Ahora está disponible para las plataformas Windows, UNIX, MAC y Linux. Los programas hechos con LabVIEWr se llaman VI (Virtual Instrument), lo que da una idea de uno de sus principales usos: el control de instrumentos. El lema de LabVIEW es: ”La potencia está en el Software”. Esto no significa que la empresa haga únicamente software, sino que busca combinar este software con todo tipo de hardware, tanto propio (tarjetas de adquisición de datos, PAC, Visión, y otro Hardware) como de terceras empresas. Principales características. Su principal característica es la facilidad de uso, personas con pocos conocimientos en programación pueden hacer programas relativamente complejos, imposibles para ellos de hacer con lenguajes tradicionales. También es muy rápido hacer programas con
2. Estado del Arte y Herramientas.
15
LabVIEWr y cualquier programador, por experimentado que sea, puede beneficiarse de él. Para los amantes de lo complejo, con LabVIEWr pueden crearse programas de miles de VIs (páginas de código) para aplicaciones complejas, programas de automatizaciones de decenas de miles de puntos de entradas/salidas, etc. Incluso existen buenas prácticas de programación para optimizar el rendimiento y la calidad de la programación. Presenta facilidades para el manejo de:
Interfaz de comunicacion: • Puerto serie • Puerto paralelo • GPIB • PXI • VXI • TCP/IP, UDP, DataSocket • Irda • Bluetooth • USB • OPC... Capacidad de interactuar con otras aplicaciones: • dll • ActiveX • Matlab • Simulink... Herramientas para el procesado digital de señales. Visualización y manejo de gráficas con datos dinámicos. Adquisición y tratamiento de imágenes. Control de movimiento. Tiempo Real estrictamente hablando. Programación de FPGAs. Sincronización.
16
2.2. Presentar los términos y conceptos básicos.
Programar en LabVIEWr. Así es una herramienta gráfica de programación, lo cual significa que los programas no se escriben, sino que se dibujan. Un programa se divide en Panel Frontal y Diagrama de bloques. El Panel Frontal es la interfaz con el usuario, en él se definen los controles e indicadores que se muestran en pantalla. El Diagrama de Bloques es el programa propiamente dicho, donde se define su funcionalidad, aquí se colocan iconos que realizan una determinada función y se interconectan. La Figura 2.1 muestra un Diagrama de Bloques de un programa en el que se genera un arreglo de 100 elementos aleatorios, a continuación se hace la FFT (Transformada de Fourier) de este arreglo y se muestra en una gráfica:
Figura 2.1: Diagrama de bloques de un programa.
2.2.2.
Lenguaje de Programación JAVA
Java es un lenguaje de programación orientado a objetos desarrollado por James Gosling y sus compañeros de Sun Microsystems al inicio de la década de 1990 [Wikipedia, 2001]. A diferencia de los lenguajes de programación convencionales, que generalmente están diseñados para ser compilados en código nativo, Java es compilado en un bytecode que es ejecutado (usando normalmente un compilador JIT), por una máquina virtual Java. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos mucho más simple y elimina herramientas de bajo nivel como punteros. Java está sólo lejanamente emparentado con JavaScript, aunque tengan nombres similares y compartan una sintaxis al estilo de C algo parecida. Orígenes. La plataforma Java y el lenguaje Java empezaron como un proyecto interno de Sun Microsystems en diciembre de 1990. Intentaban desarrollar una nueva tecnología para programar la siguiente generación de dispositivos inteligentes, en los que Sun veía un campo nuevo a explotar.
2. Estado del Arte y Herramientas.
17
Bill Joy había concebido un nuevo lenguaje que combinase lo mejor de Mesa y C. En un escrito titulado Further (más lejos), proponía a Sun que sus ingenieros crearan un entorno orientado a objetos basado en C++. Gosling intentó modificar y ampliar C++, a lo que llamó C++ ++ –, pero pronto descartó la idea para crear un lenguaje completamente nuevo, al que llamó Oak. Java applet. Una Java applet, es un programa escrito en el lenguaje de programación Java pero esta orientado a publicarse en la Web. Los applets de Java pueden correr en un navegador web utilizando la maquina virtual de Java (JVM), o en el vizualizador de applets de Sun. Entre sus características podemos mencionar un esquema de seguridad que permite que los applets que se ejecutan en el equipo no tengan acceso a partes sensibles (por ej. no pueden escribir archivos), a excepción de que uno mismo le dé los permisos necesarios en el sistema; la desventaja de este enfoque es que la entrega de permisos es engorrosa para el usuario común, lo cual juega en contra de uno de los objetivos del mismo: entregar una forma fácil de ejecutar aplicaciones ricas desde el navegador web. Sintaxis. Los applets de Java son programas incrustados en otras aplicaciones, normalmente una página web que se muestra en la Tabla 2.1 en un navegador.
Tabla 2.1: Applet y su publicación en la web // Hola.java import java.applet.Applet;import java.awt.Graphics; public class Hola extends Applet { public void paint(Graphics gc) { gc.drawString(”Hola, mundo!”, 65, 95); } } Applet Hola Mundo
La sentencia import indica al compilador de Java que incluya las clases java.applet.Applet y java.awt.Graphics, para poder referenciarlas por sus nombres, sin tener que anteponer la ruta completa cada vez que se quieran usar en el código fuente. La clase Hola extiende a la clase Applet, es decir, es una subclase de ésta. La clase Applet permite a la aplicación mostrar y controlar el estado del applet. La clase Applet es un componente del AWT (Abstract Windowing Toolkit), que permite al applet mostrar una interfaz gráfica de usuario o GUI (Graphical User Interface), y responder
18
2.2. Presentar los términos y conceptos básicos.
a eventos generados por el usuario. La clase Hola sobrecarga el método paint(Graphics) heredado de la super clase contenedora (Applet en este caso), para acceder al código encargado de dibujar. El método paint() recibe un objeto Graphics que contiene el contexto gráfico para dibujar el applet. El método paint() llama al método drawString(String, int, int) del objeto Graphics para mostrar la cadena de caracteres Hola, mundo! en la posición (65, 96) del espacio de dibujo asignado al applet. La referencia al applet es colocada en un documento HTML usando la etiqueta . Esta etiqueta tiene tres atributos: code=”Hola” indica el nombre del applet, y width=”200” height=”200” establece la anchura y altura, respectivamente, del applet. Un applet también pueden alojarse dentro de un documento HTML usando las etiquetas , o , aunque el soporte que ofrecen los navegadores Web no es uniforme.
2.2.3.
VRML.
VRML es un acrónimo del Lenguaje de Modelado en Realidad Virtual. Usando VRML se puede crear mundos virtuales en tercera dimension en Internet. Se puede construir sitios virtuales, construcciones, ciudades, montañas, y planetas. Se puede llenar los mundos virtuales con muebles, carros, personas, naves espaciales, etc.. La característica más importante de VRML, es que permite que los mundos creados sean dinámicos y ricos en sensores en los entornos virtuales sobre internet, incluyendo las siguientes capacidades:
Animar objetos los mundos, creación de movimiento. Reproducir sonidos y películas dentro de los mundos. Permitir a los usuarios interactuar con los mundos. Controlar y realzar los mundos con scripts, pequeños programas para crear actuación en los mundos VRML [Andrea L. Ames, 1997]. Consiste en un formato de fichero de texto en el que se especifican los vertices y las aristas de cada polígono tridimensional, además del color de su superficie. Es posible asociar direcciones web a los componentes gráficos así definidos, de manera que el usuario pueda acceder a una página web o a otro fichero VRML de Internet cada vez que le de click en el componente gráfico en cuestión.
2. Estado del Arte y Herramientas.
19
El Consorcio Web3D ha sido creado para desarrollar este formato. Su primera especificación fue publicada en 1995; la versión actual funcionalmente completa es la VRML 97 (ISO/IEC DIS 14772-1). VRML, es la base en la que se desarrolla X3D.
2.2.4.
HTML.
El HTML, acrónimo inglés de Hypertext Markup Language (lenguaje de etiquetado de documentos hipertextual), es un lenguaje de marcación diseñado para estructurar textos y presentarlos en forma de hipertexto, que es el formato estándar de las páginas web [Wikipedia, 2001]. Gracias a Internet y a los navegadores del tipo Internet Explorer, Opera, Firefox o Netscape, el HTML se ha convertido en uno de los formatos más populares que existen para la construcción de documentos. HTML es una aplicación de SGML conforme al estándar internacional ISO 8879. XHTML es una reformulación de HTML 4 como aplicación XML 1.0, y que supone la base para la evolución estable de este lenguaje. Además XHTML permite la compatibilidad con los agentes de usuario que ya admitían HTML 4 siguiendo un conjunto de reglas.
2.2.5.
Diseño de objetos 3D en 3dStudio Max.
3D Studio Max es un programa de creación de gráficos y animación 3D desarrollado por Autodesk Media & Entertainment (formalmente conocido como Discreet y Kinetix) [Wikipedia, 2001].
Figura 2.2: Diseño del invernadero en 3DS Max.
3DS Max es uno de los programas de animación 3D más utilizados. Dispone de una sólida capacidad de edición, una omnipresente arquitectura de plugins y una larga tradición en plataformas Microsoft Windows. 3ds Max es utilizado en mayor medida por los desarrolladores de videojuegos, aunque también en el desarrollo de proyectos de animación como películas o anuncios de televisión, efectos especiales y en arquitectura.
2.2.6.
Realidad Virtual.
Realidad virtual es un sistema o interfaz informático que genera entornos sintéticos en tiempo real, representación de las cosas a través de medios electrónicos o represen-
20
2.2. Presentar los términos y conceptos básicos.
taciones de la realidad, una realidad ilusoria, pues se trata de una realidad perceptiva sin soporte objetivo, sin red extensa, ya que existe sólo dentro de la pc. La realidad virtual puede ser de dos tipos: inmersiva y no inmersiva. Los métodos inmersivos de realidad virtual con frecuencia se ligan a un ambiente tridimensional creado por una pc, el cual se manipula a través de cascos, guantes u otros dispositivos que capturan la posición y rotación de diferentes partes del cuerpo humano. La realidad virtual no inmersiva utiliza medios como el que actualmente nos ofrece Internet, en el cual podemos interactuar en tiempo real con diferentes personas en espacios y ambientes que en realidad no existen sin la necesidad de dispositivos adicionales a la computadora. La realidad virtual no inmersiva ofrece un nuevo mundo a través de una ventana de escritorio. Este enfoque no inmersivo tiene varias ventajas sobre el enfoque inmersivo como son el bajo costo y fácil y rápida aceptación de los usuarios. Los dispositivos inmersivos son de alto costo y generalmente el usuario prefiere manipular el ambiente virtual por medio de dispositivos familiares como son el teclado y el ratón que por medio de cascos pesados o guantes [Wikipedia, 2001].
2.2.7.
Optimización de Código e inserción de enlaces en VRML.
La generación de los mundos virtuales es gracias a la herramienta de diseño en 3D de 3DS Max, en el cual que se diseñaron los objetos 3D y del cual se exportaron en archivos VRML. Posteriormente con la herramienta de ISA de Parallel Graphics se unificaron todos estos elementos en un solo archivo VRML, que este permite su ubicación de cada elemento como su visualización de estos, además que nos ayuda a optimizar el código fuente de VRML. En cuanto la otra forma de optimizar código, es mejor escribir las letras desde código VRML con ayuda de una herramienta para edición de archivos VRML, VRMLPAD de Parallel Graphics, así como poner los nombres de nodos (DEF) con los que se manda a llamar desde el applet de Java.
2.2.8.
Navegadores 3D.
Actualmente existen una gran gama de navegadores 3D. [NIST, 2006] Los más comunes caminos para desplegar, mostrar, visualizar, ejecutar, o ver archivos VRML, modelos, o mundos (.wrl extensión de archivo) es con un plugin libre VRML, también lo conocemos como un visualizador (navegador ó browser), player, viewer, reader, addon, client, toolkit, program, software, o control ActiveX. Para poder usarlo uno debe de descargar e instalar el plugin VRML para su navegador web. Pueden ser instalados
2. Estado del Arte y Herramientas.
21
más de un plugin, si se cuenta con múltiples navegadores para la Web. Algunos de los plugins de VRML, también pueden visualizar archivos X3D.
Programas standalone, Toolkits y Applets. El VRML también puede ser visualizado con plugins de java, como los siguientes applets libres mostrados en la Tabla 2.2, como otros que son herramientas, programas y plugins no diseñados en Java. En la cual se presentan los plugins libres de visualización 3D y las plataformas de SO en la cual estos funcionan, como también la compatibilidad con el navegador y con el nuevo estándar X3D de realidad Virtual.
Tabla 2.2: Plugins Visualizadores 3D Tipo SO Browser Win Linux Mac IE Firefox Cosmo Player P X ? X Cortona P X X X X Octaga Player P,S X X X X BS Contact P X X X Flux P X X blaxxun Contact P X X Venues P X X FreeWRL P,S X X X OpenVRML P,S X X X Xj3D J,T X X X Carina S X X X Orbisnap S X X X VRMLview S X X Demotride S X BS Contact J J X X X X X blaxxun3D J X X X X X Tipos: P=Plugin, S=Program, T=Toolkit, J=Java. Software
2.2.9. 2.2.10.
Programación de efectos Adquisición de Datos utilizando LabVIEW.
X3D
X X X X X X X
Capítulo 3 Arquitectura general del sistema. Introducción En este capítulo se explica la arquitectura de un Invernadero Virtual Automatizado. En primer lugar, se describe la funcionalidad del sistema en forma de bloques y de manera general, los elementos que conforman al sistema. Por ejemplo, la adquisición de datos en LabVIEWr, por medio de un applet de Java, el modelo de eventos para la asignación de comportamiento complejo a una escena tridimensional y por último las interfaz gráfica. Como podemos ver en la Figura 3.1 el diagrama general.
Figura 3.1: Diagrama general del funcionamiento del invernadero virtual.
3.1.
Funcionalidades.
La funcionalidad de este caso de estudio (invernadero hidroponico automatizado) es el control supervisorio que ayuda a mantener al invernadero con un control supervisorio que puede ser monitoreado de forma remota, de las variables del clima, o si existe mal funcionamiento del invernadero activando alarmas y con una ayuda visual del invernadero virtual.
3.2.
Modelo Funcional.
El modelo funcional del sistema del invernadero virtual automatizado, se basa en un sistema basado en reglas. Existen varios sensores que con la herramienta de adquisición 23
24
3.3. Adquisición de Datos en LabVIEW.
de datos no se encuentran implementados de tal manera que estos datos son generados de manera aleatoria. El comportamiento del invernadero virtual se monitorea con todos los posibles datos, y tomando en cuenta los rangos de cada instrumento virtual.
3.2.1.
Metodología de Desarrollo de la Solución:
Para una mejor y más clara idea del desarrollo de este trabajo, se tratará en primer lugar el módulo de adquisición de datos por medio de VISA, presentación de los instrumentos Virtuales, con la herramienta LabVIEWr. En una la segunda fase se verá la creación de los objetos que conforman el invernadero con la herramienta de 3DS Max junto con la herramienta de ISA de Parallel Graphics utilizada para integrar todos los objetos, como también el uso del VRMLPAD para realizar los comportamientos como los enlaces necesarios. Así también, se abordará la creación de instrumentos virtuales para Internet de manera como que utilizó Macromedia Flash para poder supervisar las variables del invernadero siendo esto posible de la lectura de un archivo cada segundo. Finalmente se tratará el uso de un applet de Java el cual activa el comportamiento del invernadero virtualizado utilizando la adquisición de datos desde un archivo posteriormente modificado cada 5 segundos, y adquirido por el applet cada segundo.
3.3.
Adquisición de Datos en LabVIEW.
La adquisición de los datos por LabVIEWr se realiza por medio del puerto serial de la PC RS-232, el cual fue programado para la recepción y envío de datos. Esto es posible mediante la programación en ensamblador del PIC, el cual envía y recibe datos. Con la ayuda de LabVIEWr y los diagrama de bloques VISA, se detectan que dispositivos de entrada tiene cada máquina, como por ejemplo: (COMs, puerto paralelo) y se configura por medio de bloques VISA, para poder asignar la entrada y salida de datos. A continuación se muestran los diagrama de bloques de los VISA y todos sus componentes para hacer posible la adquisición de datos desde LabVIEWr y un ejemplo corto de adquisición de datos de LabVIEWr.
Figura 3.2: Diagrama de bloques.
Como se puede observar en la Figura 3.2, se empieza con el bloque de función de configuración VISA, donde se coloca por cuál dispositivo se va a realizar la adquisición, así como la tasa de baudios. Luego se tiene tiene un bloque de lectura VISA, el cual obtienen los bits y se pasa a un buffer, después se realiza un conversion y de acuerdo a
3. Arquitectura general del sistema.
25
los identificadores podemos ver a que sensor le corresponde la información. En este trabajo de tesis existen varios sensores que no se han conectado y se encuentran de manera operacional, con datos que son simulados. Los datos son generados de forma simulada son tales como, los sensores de nivel del tinaco, la dirección del viento, así como todas las alarmas de los actuadores.
3.4.
Obtención de Datos.
Dada la adquisición de datos por LabVIEWr, estos son guardados en un archivo de texto donde se guardan los datos de cada una de las variables que se necesitan para la simulación del invernadero automatizado virtual.
Figura 3.3: Estructura de datos de los sensores en el archivo.
A continuación, se presenta un ejemplo del uso de estas funciones en programación por bloques, creando y reemplazando un archivo llamado datos.txt. En el diagrama se encuentra una línea suelta que proviene de la parte inferior de la Figura 3.4; esta es la que lleva los datos a guardar en un formato de texto.
Figura 3.4: Diagrama por bloques. Sección de Archivos.
En la Figura 3.5 se muestra un diagrama de bloques del programa de simulación de adquisición de datos con instrumentos virtuales VIs.
Figura 3.5: Diagrama de bloques de simulación de adquisición de datos.
3.5.
Desarrollo del Mundo Virtual
Para el diseño del invernadero virtualizado, se utilizó 3DS Max, en donde de diseñaron los objetos en forma separada para después exportarlos a archivos VMRL, como
26
3.5. Desarrollo del Mundo Virtual
se observa en la Figura 3.6. Así también observe el diseño de las secciones principales de un invernadero.
Figura 3.6: Diseño de objetos 3D del invernadero.
A todos los objetos, posteriormente se le asignarán un comportamiento y por esto, se diseñan por separado en 3DS MAX y otros directamente en código VRML, desde un editor que se llama VRML (observe la Figura 3.7).
Figura 3.7: Diseño del invernadero desde código VRML.
Como se puede ver en la Figura 3.7, el espacio de trabajo en el VRMLPAD de Parallel Graphics, se encuentra dividido en 3 secciones. En el lado izquierdo se encuentran los Nodos, en el centro se encuentra el espacio para programar en VRML y al lado derecho se pueden observar una pequeña representación del objeto en 3D. En esta Figura se presenta el desarrollo del tablero, que aparece en la parte inferior de la representación del invernadero virtualizado, ya que se optimiza el código al ser programado de está manera, así como también la tuberías. Otra herramienta que se utilizó que es de la familia de Parallel Graphics es la de ISA (Internet Scene Assembler), la cual su utilidad fue la de poner en posición a todas las formas 3D que corresponden al invernadero en un archivo y posteriormente optimizarlo, véase la Figura 3.8.
Figura 3.8: Diseño del invernadero ISA Parallel Graphics.
La herramienta ISA (Figura 3.8) está dividida en 5 secciones importantes en el espacio de trabajo. A la izquierda se encuentra el mundo virtual graficado sin texturas. Para poder orientarse inicialmente, se posiciona por encima del eje Y dando una vista desde la parte de arriba de todo el mundo. En el centro se puede visualizar el invernadero en su visualización de forma publicada. La parte derecha se encuentra subdividido en 2 partes. En la parte superior se encuentran las propiedades que cada nodo o grupo de seleccionado, y en la parte inferior se encuentran dichos nodos o grupos de nodos.
3. Arquitectura general del sistema.
27
Y por último en la parte inferior principal se encuentra la representación de manera minimizada de las librerías de objetos en archivos VRML, el cual se utilizó para ir integrando cada objeto diseñado y exportado en 3DS Max.
3.6.
Asignación de Comportamiento Complejo.
Como se mencionó en el Capítulo 2, en el lenguaje de VRML, el comportamiento se controla mediante eventos. La asignación del comportamiento que es programado para este que es el caso del invernadero, se programaron los sensores como los actuadores y algunos que no lo son. Que presentan a continuación en la siguiente forma, el objeto a programar y sus respectivos comportamientos, los cuales se presentan algunos ejemplos que son los siguientes: El anemómetro y la rotación de las paletas sobre el eje Y. La veleta de viento y su rotación de este en el eje Y. Las cortinas principales del invernadero y su comportamiento de plegado como el de despliegue. Las cortinas de los domos y su plegado como el también su despliegue. El cielo y su comportamiento es el de cambiar la tonalidad en su color con respecto al tiempo horario. El calentador y su comportamiento es el de cambiar de color la rejilla para cuando este se encuentre prendido o apagado, el cual se puede ver en la Figura 3.9 la definición de su nodo y en la Figura 3.10 su programación de su comportamiento dados los casos de cuando tiene que presentarse como prendido o apagado.
Figura 3.9: Asignación de Comportamientos en VRML.
Como se puede ver en la Figura 3.9 se tiene diseñado lo que sería el calentador ambiental del invernadero, el cual se diseño con unas rejillas y un ventilador en su interior, los cuales van a tener un comportamiento cuanto estos sean activados. La rejilla cambiara de color utilizando los DEF que son asignados desde VRML se creó una definición de nodo llamada colorRejilla como también el ventilador empezará a funcionar con su correspondiente definición de su nodo. Como se ve en el código de VRML la definición de su nodo también lo tenemos en el código del applet el cual primeramente se obtiene
28
3.7. Interfaz Gráfica.
Figura 3.10: Asignación de Comportamientos en Java usando EAI.
el enlace para darle comportamiento haciendo uso de la definición del nodo DEF. Como se observa en la Figura 3.10 que es una parte del código fuente del applet, el cual se utiliza para modificar todos los elementos a los cuales se le ha asignado un comportamiento. El código que se presenta solo se ejecuta una vez, el cual obtiene la información y reacciona el calentador a una sola adquisición de datos, este reaccionaria al primer elemento que es la temperatura del invernadero.
3.7.
Interfaz Gráfica.
A continuación se muestra el diagrama de bloques del programa de adquisición de datos y puente para el manejo del mundo virtual y control de los actuadores iniciando de lo más general a lo más específico.
Figura 3.11: Estructura General de Sensores, Actuadores y Módulos.
Como se puede observar en la Figura 3.11, existen diferentes módulos (Esclavos y Maestros) los cuales están en red para intercomunicarse. Los actuadores están conectados físicamente a los Módulos Esclavos y sirven para realizar el accionamiento sobre las cortinas, domos, riego.
Figura 3.12: Adquisición y puente del mundo virtual.
Así también, se presentan los Instrumentos Virtuales de LabVIEWr donde son representados los indicadores de las variables obtenidas, como otros dispositivos de control como se observa en la Figura 3.13. Posteriormense se presentan los instrumentos virtuales desarrollados en VRML y en flash enfocados a la representación de los indicadores en internet. Inicialmente se publicaban 2 mundos virtuales, donde en uno se proyectaba el invernadero automatizado y en el otro se visualizaban los indicadores virtuales como se observa en la Figura 3.14 todo
3. Arquitectura general del sistema.
29
Figura 3.13: Instrumentos Virtuales en LabVIEW
en VRML. La razón por la cual se cambiaron estos instrumentos de VRML a Flash fue por el consumo de memoria de video, el cual tenía que renderizar dos mundos virtuales simultáneamente, junto con un applet extra que tenía que ser procesado también por la máquina virtual de Microsoft para modificar ese mundo de indicadores virtuales.
Figura 3.14: Instrumentos Virtuales en VRML.
En la Figura 3.13 observe que uno de los módulos esclavos es representando por medio de un sensor de nivel de líquido, envía la medición a LabVIEW, el cual representará en el instrumento virtual Tinaco en la Figura 3.14, la medición real del sistema. De forma similar, la instrumentación virtual en Flash es retroalimentado por los datos obtenidos de LabVIEWr, donde este reescribe un archivo continuamente de los nuevos datos adquiridos, actualizando así los datos en el instrumento virtual publicado en internet desarrollado en flash como se ve en la Figura 3.15.
Figura 3.15: Instrumentación Virtual en Flash
Como se puede notar, existen variables analógicas, como las que se representan en la Figuras 3.14 y 3.15, así como digitales, que son las alarmas como se observan en la (Figura 3.16). El applet que es publicado en Internet 3.17, se utiliza para darle comportamiento al invernadero 3D de acuerdo a las variables climáticas. Dicho applet, en su entorno gráfico, solo tiene un objeto de texto que es útil en las pruebas de conexión con el mundo virtual ya que despliega el estado y los datos obtenidos del archivo que se esta actualizando por LabVIEW. En la Tabla 3.1 se observa la salida en general del estado de la ejecución, inicialmente aparece el mensaje de Listo ->obtención de Nodos, que indica que se pudo sincronizar con el navegador 3D y que se encuentra listo para la obtención de los nodos del mundo virtual. A continuación, obtiene los nodos del mundo para posteriormente modificar los valores de los campos de esos nodos como se observa en la Tabla 3.1. Y así inicia un ciclo infinito de lectura de
30
3.7. Interfaz Gráfica.
Figura 3.16: Alarmas en Flash
Figura 3.17: Applet publicado manejador del comportamiento.
los datos del archivo y la modificación del mundo con respecto a la información obtenida.
Tabla 3.1: Estado del applet Listo ->Obtención de Nodos del Virtual World Nodo obtenido en Grupo04-TIMER Nodo obtenido en Tuberías de Riego Nodo obtenido de la Rejilla del Calentador Nodo obtenido en Tuberías de abastecimiento Nodo obtenido en calentador_ventilador Nodo obtenido en fondo skyColor Nodo obtenido en fondo groundColor Nodo obtenido en cortina Nodo obtenido en sombra Nodo obtenido en cortina_domo Nodo obtenido en fondo skyColor Nodo obtenido en Tablero_texto El contenido del archivo es : 2.62 82.70 9.05 84.16 35.33 300.88 1.00 1.00 0.00 1.00 1.00 10 19 09 10 SENSORES—>Termómetro: 2.62 Anemómetro: 82.7 Celda: 9.05 Humedad: 84.16 Tinaco: 35.33 % Dirección V.: 300.88 BUFFER VACIO El contenido del archivo es : 2.62 82.70 9.05 84.16 35.33 300.88 1.00 1.00 0.00 1.00 1.00 10 19 09 10
Enseguida se explicará el diseño del sistema supervisorio del Invernadero automatizado, en donde se utilizaron las siguientes herramientas: Internet Explorer, la Maquina Virtual de Microsoft, Applet de Java y Objetos incrustados en Flash. El invernadero virtual automatizado publicado en Internet como se puede observar en la Figura 3.18, está diseñado en 3 secciones. En la parte superior se encuentra el invernadero en 3D, en la parte inferior se encuentra dividido en 2 subsecciones, mientras que en la parte izquierda se puede ver los Instrumentos Virtuales en Flash de los datos
3. Arquitectura general del sistema.
31
obtenidos del invernadero físico, y en la parte izquierda una presentación del invernadero en forma minimizada así como también se usa para proveer información de cada componente del invernadero.
Figura 3.18: Invernadero virtual publicado en internet.
En la parte superior de la Figura 3.18, de la sección del invernadero 3D, se publican los sensores, y los estados de las alarmas pero en formato de texto de color blanco. Suposición se ubica en la coordenada XYZ en la parte inferior de la vista del usuario de acuerdo al movimiento del usuario que se desplaza en el mundo 3D virtual. Conclusión del capítulo. Se tiene desde el desarrollo del diseño del invernadero en 3D Max, como la adquisición de los datos por medio de la herramienta LabVIEW y la modificación y desarrollo del comportamiento del invernadero utilizando Java y EAI.
Capítulo 4 Integración de comunicación: Sistema Mínimo, LabVIEW, Mundo Virtual y Java. Introducción En este capítulo veremos los temas de como se integro cada uno de las diferentes partes del prototipo en cuanto a la comunicación se refiere entre cada una de ellas, el cual es la parte fundamental de este trabajo. Iniciando por el Mundo Virtual y Java.
4.1.
Comunicación via EAI entre VRML y Java
En contexto para entender esta sección tenemos que tener en cuenta que existe un Mundo Virtual diseñado para un caso de estudio, el nuestro sería el diseño de un invernadero, donde las formas representadas en este diseño son: los módulos del invernadero con domo, cortinas de los domos, cortinas principales, tinacos, calentadores, etc.. Donde del otro lado del eslabón se tienen datos, en el cual nos dice: cuál es el tiempo horario, la temperatura, la humedad, la velocidad del viento, su dirección, el nivel de agua del tinaco, información sobre las alarmas activadas y el comportamiento que debe de realizar el invernadero virtual en cuanto su actuación. A continuación se verán los métodos para poder comunicar los 2 eslabones los cuales son: el Mundo Virtual de un lado y los datos obtenidos del invernadero físico en el otro extremo. Los métodos de comunicación para un mundo virtual utilizando EAI son los que se muestran en la Figura 4.1. 33
34
4.1. Comunicación via EAI entre VRML y Java
Figura 4.1: Métodos de comunicación en VRML via EAI.
El método de la Figura 4.1 sección A) el comportamiento queda establecido por el programador y la activación, el cual solamente existirá en forma declarada en la página web y el navegador 3D activara este de acuerdo a una condición establecida ó desde que se cargue el archivo VRML. En el método 4.1.B) los efectos o comportamientos son dados desde un archivo externo a la página web con extension .JS (Archivo de funciones de JavaScript), pero los comportamientos son iguales al primer método. En los dos primeros métodos no se usa el plugin de la MVM (Microsoftr Virtual Machine) como se puede observar en los métodos 4.1.C) y 4.1.D). Debido a esta propiedad se decidió tomar la comunicación y modificación del mundo virtual con el método 4.1.C), que es el más completo para fines de este proyecto de tesis. Un ejemplo sencillo de la comunicación VRML y Java mediante el EAI se muestra a continuación con el código fuente.
4. Integración de comunicación: Sistema Mínimo, LabVIEW, Mundo Virtual y Java.35
«inicio del archivo»
import java.awt.; import java.applet.; import java.awt.event.; import vrml.external.; import vrml.external.field.; import vrml.external.exception.; public class EsferaApplet extends Applet implements ActionListener{ Browser myBrowser = null; EventInSFColor esferaColor = null; EventInSFVec3f esferaScale = null; float esfera_Color[] = new float[3]; float esfera_Scale[] = new float[3]; Button Red=null; Button Green=null; Button Yellow=null; Button Scale_X=null; Button Scale_Y=null; Button Scale_Z=null; public void init() { this.setLayout(new GridLayout(2,3,10,10)); this.setBackground(Color.white); this.setForeground(Color.black); Font F1=new Font(”Helvetica”, Font.BOLD + Font.ITALIC,16); this.setFont(F1); add(Red=new Button(”Rojo”)); add(Green=new Button(”Verde”)); add(Yellow=new Button(”Amarillo”)); add(Scale_X=new Button(”Scalar_X”)); add(Scale_Y=new Button(”Scalar_Y”)); add(Scale_Z=new Button(”Scalar_Z”)); Red.addActionListener(this); Green.addActionListener(this); Yellow.addActionListener(this); Scale_X.addActionListener(this); Scale_Y.addActionListener(this); Scale_Z.addActionListener(this); } public void start() { for(int i = 0; i Archivos I/O paleta, sobre el diagrama de bloques. Este VI crea o
4. Integración de comunicación: Sistema Mínimo, LabVIEW, Mundo Virtual y Java.37
reemplaza un archivo. Abre un archivo existente, crea un nuevo archivo, o reemplaza un archivo existente, esto puede ser programado o usando una interacción con una caja de diálogo del archivo.
Figura 4.3: Bloque de abrir o crear archivo.
Las entradas del bloque de la Figura 4.3 empezaremos por Pattern despliega en una caja de diálogo las restricciones de los archivos para aquellos de quienes el nombres equivalente del formato. El formato no es una restricción de los directorios mostrados. La equivalencia del formato en estas funciones es similar para la equivalencia usada en congruencia procesadores de texto en los nombres de los archivos en Windows y UNIX. Las restricciones de los archivos mostrados en la caja de diálogo para aquellos los cuales los archivos concuerden con el formato. Los formatos no tienen restricciones de los directorios mostrados. El formato concuerdan en la función siendo similar para la concordancia usada en el procesador de texto en los nombres de archivos en windows y UNIX. Si se especifica con una marca de carácter como el de pregunta (?) o un asterisco (*), la función mostrará solamente archivos o directorios que contengan esos caracteres. Se puede utilizar el (?) para que concuerde con una sencillo carácter. Se puede utilizar el uso del asterisco (*) para que concuerde con una secuencia de uno o más caracteres. Continuaremos luego con prompt es el mensaje que aparece citado anteriormente listando archivos y directorios, o carpetas, en la caja de diálogo. Como file path es el nombre y dirección de la ubicación del archivo. Si el file path esta vació (default) o no tiene path, el VI despliega una cuadro de diálogo donde se puede seleccionar un archivo. Ocurre un error número 43 si se cancela el cuadro de diálogo. Así también cuando no se especifica la entrada anterior utilizamos start path (Not A Path): desplegara el directorio donde inicializara la dirección, o carpeta donde esta el archivo en una caja de diálogo. Luego continuamos con function (open:0): esta son las operaciones a efectuar. La entrada de error in (no error) describe las condiciones de error que ocurren después de la ejecución del VI o función. Por default no existe un error. Si un error ocurre después de ejecutar el VI o la función, el VI o función pasa el valor del error a una salida de error. Este VI o función normalmente se ejecuta solo si no ocurre un error después de la ejecución. Y luego con default name es el nombre inicial que se desea que aparezca del archivo o del directorio en la caja de diálogo. Por defecto la cadena es vacía. Y por último de las entradas con advisory dialog? (displat:T) si esta activado (que es por defecto), el VI mostrará una caja de diálogo cuando la función sea 0 o 4 cuando el archivo no existe, o cuando la función sea 2 o 3 cuando el archivo existe. En cuanto a las salidas de este bloque empezaremos con refnum es el número de referencia del archivo abierto. El valor no es un Refnum si el archivo no
38
4.1. Comunicación via EAI entre VRML y Java
0 1 2
3 4
Tabla 4.1: Function Open Abre un archivo existente. Error 7 ocurre si el archivo no es encontrado. Abre un archivo existente o crea un nuevo archivo si este no existe. Crea un nuevo archivo o reemplaza un archivo si este existe y pide un permiso. Este Vi reemplaza un archivo para abrir usa la configuración del fin del archivo como 0. Ocurre el error 43 si no selecciona el aviso de reemplazo con un cuadro de diálogo. Crea un nuevo archivo. Ocurre un error 8 si el archivo ya existe. Abre un archivo existente para lectura solamente. Ocurre un error 7 si el archivo no existe.
pudo ser abierto. Luego con new file path es la ubicación de el archivo a abrir o crear. Se puede usar esta salida para determinar la ubicación de un archivo que se abrió o creo usando una caja de diálogo. La caja de diálogo no retorna una nueva ubicación de un archivo si selecciona Cancelar. Como también con file size (bytes) es el tamaño del archivo en bytes. Es también la locación de el fin del archivo. Y por último con error out el cual contiene la información del error. Si un error ocurre este indica que error se produjo después de ejecutar el VI o la función, error out contiene la información del error. Como también describe el estado del error que se produjo en el VI o la función. En la Figura 4.4 se observa la función del bloque de escritura de archivos. Se iniciará con las entradas en la cual la primera llamada convert eol (F) determina tanto la función de conversion del fin de marcadores de línea que escriben dentro el sistema con líneas de marcadores el fin. Un fin de línea marcado es una retorno de carro por una línea para abajo en Windows, un retorno de carro en Mac OS, y una línea para abajo en UNIX. El LabVIEW marca un fin de línea con una línea para abajo. Si convierte eol en Verdadero, la función convierte todos los marcadores de línea escritos dentro del sistema con marcadores de fin de línea. Si convierte eol en Falso (por defecto), la función no convertirá sino que escribirá los fines de línea con marcadores. Observe que estos parámetros solamente son aplicables con archivos de texto. No alambre cuando trabaje con archivos binarios. La entrada header (F) se utiliza cuando se realiza el cableado si el tipo de datos es de alto nivel y tamaño de variable, lo cual ocurre si el dato es una cadena o un arreglo. Si el alto nivel de tipo del dato es una cadena o un arreglo, la función puede escribir una cabecera para que el archivo especifique el tamaño de los datos. Posteriormente, si se desea leer la cadena o arreglo es regresado como un objeto simple, poniendo la cabecera en Verdadero. Si la cabecera esta en Verdadero, la función escribe los tipos de datos en alto nivel de datos con una cabecera especifica su tamaño. La cabecera debe de ser Verdadero para escribir una salida de estructura dinámica. Si la cabecera esta en Falso (por defecto), la función escribe datos de alto nivel pero sin una cabecera. LabVIEW siempre escribe un tamaño de variable del tipo de datos debajo del alto nivel (que contenga dentro del tipo de datos de alto nivel) con una cabecera
4. Integración de comunicación: Sistema Mínimo, LabVIEW, Mundo Virtual y Java.39
especificando su tamaño. Y proseguimos con refnum es el archivo asociado refnum con el archivo que se desea escribir. Si refnum especifica un byte stream file, la función se escribe para una locación especificada por pos mode y pos offset dentro del archivo. Si el tipo de datos es de alto nivel del tamaño de las variables de los datos, tal como un arreglo de cadena, la función puede escribir una cabecera para especificar el tamaño de datos en el archivo. Como también con la entrada de pos mode (0:2) conjuntamente con pos offset, especifica donde la operación de lectura o escritura inicia. Si se cablea pos offset, pos mode por defecto es 0, y offset es relativo para el inicio del archivo. Si no se cablea pos offset, es por defecto 0, pos mode por defecto es 2, y la operación inicia en la siguiente marca del archivo. Junto con pos offset (0) especifica como la distancia de la locación especificada por
0 1 2
Tabla 4.2: Pos mode Inicio−La operación inicia el inicio de la cantidad del archivo pos offset. Si pos mode es 0 pos offset debería ser positivo. Fin−La operación inicia el fin de la cantidad del archivo pos offset. Si pos mode es 1, pos offset debería ser negativo. Actual−La operación inicia la locación actual de la marca de la cantidad del archivo pos offset.
pos mode inicia para la lectura o escritura. Se expresa pos offset dentro unidades de bytes. Por defecto es 0. Si no se cablea pos mode or pos offset, las funciones de lectura o escritura de los datos siguientes para los demás datos recientemente leídos o escritos. También con error in describe las condiciones de error que ocurren después de la ejecución del VI o función. Por default no existe un error. Si un error ocurre después de ejecutar el VI o la función, el VI o función pasa el valor del error a una salida de error. Este VI o función normalmente se ejecuta solo si no ocurre un error después de la ejecución. Y por último con data contiene los datos pare escribir al archivo y puede ser cualquier tipo de dato. Para ejecutar I/O orientado-carácter, se cablea una cadena de datos y no se cablea una cabecera, porque por defecto este es Falso. El VI escribe los datos de caracteres en secuencia fuera de cualquier información de cabecera. Si refnum es un archivo de datalog refnum, los datos deberían ser cualquier tipo de datos que concuerde con los tipos de datos especificados cuando se abra o cree el archivo o arreglo de semejante tipo de datos. Dentro de lo anterior, la función de escritura de datos como un registro único en el archivo datalog. Si es necesario, la función datos numérica obligará la representación de los tipos de datos de este parámetro. Dentro del caso anterior, esa función escribirá cada elemento de datos como un registro separado en el archivo datalog en el orden fila-campo. Así proseguimos con las salidas de este bloque los cuales son los que a continuación se presentan, iniciando con dup refnum regresa un refnum sin alteraciones. Continuando con offset indica la nueva locación de la marca relativa del archivo para el inicio del archivo (base-cero). offset esta expresado en los mismos términos pos offset, que es, bytes por bytes corriendo los registros para
40
4.1. Comunicación via EAI entre VRML y Java
el archivo datalog. Y terminando con error out el cual contiene la información del error. Si un error ocurre este indica que error se produjo después de ejecutar el VI o la función, error out contiene la información del error. Como también describe el estado del error que se produjo en el VI o la función. El indicador refnum es la referencia de un archivo abierto. La escritura comienza en una localización especificada por pos mode y pos offset y la posición para los archivos de byte stream y en el extremo del archivo para los de datalog. Los datos, cabecera y el formato del archivo especificado determinan la cantidad de datos escritos.
Figura 4.4: Bloque de escribir en el archivo.
Como se observa en la Figura 4.5 explicaremos las entradas y salidas del último en bloques de correspondientes a los archivos, así iniciaremos con refnum es el archivo refnum asociado con el archivo que se desea cerrar. Y finalizando las entradas con error in describe las condiciones de error que ocurren después de la ejecución del VI o función. Por default no existe un error. Si un error ocurre después de ejecutar el VI o la función, el VI o función pasa el valor del error a una salida de error. Este VI o función normalmente se ejecuta solo si no ocurre un error después de la ejecución. Así como sus salidas empezando con path es la correspondiente ubicación del refnum. Y terminando con error out el cual contiene la información del error. Si un error ocurre este indica que error se produjo después de ejecutar el VI o la función, error out contiene la información del error. Como también describe el estado del error que se produjo en el VI o la función. Cierra un archivo abierto especificado por refnum y vuelve la ubicación del archivo asociado al refnum. La entrada-salida del error funciona únicamente en esta función, sin importar cuál se cierra si un error ocurrió en una operación precedente. Esto asegura de que los archivos estén cerrados correctamente.
Figura 4.5: Bloque de Cerrar archivo.
A continuación se presenta un ejemplo de la ayuda de Labview [Corporation, 2004a] del uso de estas funciones en programación por bloques, en el ejemplo se crea y reemplaza un archivo llamado TextFile.txt. Como se observa en la Figura 4.6 el programa de bloques esta configurado de tal manera que pida una autorización de la creación de un archivo llamado TextFile.txt,
4. Integración de comunicación: Sistema Mínimo, LabVIEW, Mundo Virtual y Java.41
Figura 4.6: Diagrama por bloques. Sección de Archivos.
se genera una señal de onda simulada el cual por cada interacción de las 10 que se encuentran, esta señal tiene 10 puntos de esa señal, por cada interacción se le añade un nuevo renglón de 10 datos junto con el tiempo. Y al final se cierra el archivo, cada ciclo tiene un retardo de 500.
4.1.2.
Sistema Mínimo.
En contexto se cuenta con un protocolo de comunicación serial distribuida basada en sistemas mínimos que nos permite la adquisición de variables físicas dentro y fuera de un invernadero [Laura Muñoz Hernández, 2005]. Estas variables físicas internas serán controladas en función de las condiciones climatológicas externas medidas a través de una estación meteorológica y de accionamiento de los actuadores. El sistema mínimo está basado en el microcontrolador PIC16F877, el cual tiene habilitado 6 entradas analógicas, entradas/salidas digitales para el módulo de Display de cristal líquido (LCD), teclado matricial, además de dos módulos de comunicación serial (USART,I2C).
Figura 4.7: Diagrama de pines del PIC16F877
Estación Meteorológica. Basada en el sistema mínimo, su función principal es la de adquirir las variables físicas proporcionadas por los sensores de humedad, temperatura, radiación solar y velocidad del viento entre otros, para que puedan posteriormente ser visualizadas en un ambiente virtual como el explicado anteriormente.
Figura 4.8: Estación meteorológica
42
4.1. Comunicación via EAI entre VRML y Java
Comunicación Serial Distribuida. Constituida por un sistema mínimo Maestro y cuatro sistemas mínimos Esclavos bajo la norma RS-485, se realiza la comunicación multipunto. El Maestro a través de identificadores, selecciona al esclavo deseado, sin que algún otro interfiera en dicha comunicación.
Esquema General. Como se observa en la Figura 4.9, la arquitectura serial distribuida que consiste en un sistema Maestro conectado mediante un bus a los cuatro sistemas Esclavos y a una computadora personal. El Maestro sirve de árbitro entre la PC y los esclavos, que se conectan con los sensores y actuadores.
Figura 4.9: Arquitectura Serial Distribuida
4.1.3.
Publicación Web del invernadero virtualizado.
Para la publicación del invernadero se hace uso de las configuraciones que se pueden configurar en LabVIEW para levantar el servidor HTML en la carpeta definida por default. En la barra principal de menu en la etiqueta de Tools y a continuación seleccionan la etiqueta Web Publishing Tool a continuación aparece una ventana de diálogo de la herramienta de publicación web como se observa en la Figura 4.10, se elige el botón con la etiqueta de Star Web Server. Y con esto se inicializa la publicación web utilizando Labview. Con esta configuración realizada queda configurado el servicio de publicación web, de esta manera que cada vez que se inicialice LabVIEW se auto iniciará el servicio. Figura 4.10: Configuración Web
Antes de levantar el servicio web, no debe de existir otra aplicación realizando dicho servicio o provocará conflictos con LabVIEW. Configuración de LabVIEW. La configuración en LabVIEW fue la siguiente: en el acceso de redes por TCP/IP se debe añadir acceso a localhost y a todos con un asterisco.
4. Integración de comunicación: Sistema Mínimo, LabVIEW, Mundo Virtual y Java.43
Página web. En la creación de la visualización del invernadero en internet, este es publicado usando HTML, en donde los objetos incrustados son los de applet y un archivo VRML visualizado gracias a su plugin, así como también a un archivo en flash. En la Figura 4.11 se muestra la pantalla de la publicación de la página web.
Figura 4.11: Invernadero publicado en la web.
Requerimientos. La máquina que va a fungir como servidor debe tener en requerimientos mínimos, windows 98, LabVIEW 6, línea telefónica, servicio de internet, e instalación eléctrica. En cuanto a las máquinas clientes que se deseen conectar deben tener un navegador de internet que soporte applets de Java y el pluggin de 3D que sea compatible con la máquina virtual de Microsoft y con su debida configuración del navegador web.
Capítulo 5 Flujo de Datos. Introducción Hoy en día el manejo de la información es muy importante por la utilidad a la que podemos tener de ella de manera tal que se puede obtener resultados muy reveladores con respecto a la obtención de información en forma de patrones repetitivos que antes no eran conocidos al hacer el análisis de estos datos. Por eso en esta sección se presentara el flujo de la información con respecto al caso de estudio.
5.1.
Flujo de Datos en General
El flujo de los datos del sistema del invernadero como se muestra en la Figura 5.1 se da desde su inicio a partir de los sensores que se encuentran en el invernadero el cual envía los datos por medio de los módulos esclavos de manera distribuida y estos se comunican al módulo maestro que manda los datos a la PC, en ese segmento los datos son adquiridos por el puerto RS-232 de la PC y la recepción por la herramienta de LabVIEWr.
Figura 5.1: Diagrama general del flujo de datos.
A continuación se detallará el flujo de los datos por cada uno de los segmentos del sistema del invernadero. Iniciando por la adquisición de los datos por medio de LabVIEWr. Como se puede observar en la Figura 5.2, están divididos en 3 secciones. La primera sección corresponde a todo lo que el invernadero físico tiene en sensores y actuadores, 45
46
5.1. Flujo de Datos en General
Figura 5.2: Diagrama general del flujo.
por ejemplo sensor de temperatura y actuador de cerrado de cortinas. En la segunda sección todo lo que corresponde a la herramienta de LabVIEW que se utilizó para adquisición de datos por medio del puerto serial. Y por último en la tercera sección la adquisición de datos por medio de java y la modificación del mundo con comportamiento en la publicación de los VIs en Internet. A continuación se explicará cada una de las 3 secciones en lo que consta de su flujo de datos por separado. En la primera sección como se puede ver en la Figura 5.3, se observa que todos los sensores y actuadores están conectados a módulos esclavos y se comunican con un modulo maestro el cual con ayuda de un protocolo de datos c.f. Apéndice 2, los datos son respectivamente enviados con un inicio y fin cada de cada sensor adquirido, cada uno con su medición digital. Los Sistemas mínimos esclavos tienen a su cargo tres funciones principales. La primera consiste en adquirir datos provenientes de los sensores conectados a él. Tales sensores son los de humedad, temperatura, radiación solar y dirección de viento. La segunda función consiste en enviar las señales adquiridas al sistema mínimo maestro. Y la tercera consiste en enviar señales de control a los actuadores, tales como lo motores, bombas. c.f. [America Saldaña Sánchez, 2006].
Figura 5.3: Flujo de los datos desde los módulos esclavos al modulo maestro.
Por su parte el sistema mínimo maestro tiene encomendada la tarea principal dentro del protocolo, ya que es el encargado de enviar las señales de acciones y peticiones al esclavo correspondiente dependiendo de las diferentes señales que le mande la PC. Es decir, si el usuario quiere conocer la temperatura que está midiendo el esclavo 1, la PC le envía un byte al maestro con dicha indicación. El maestro por su parte, identifica a que esclavo corresponde el byte recibido e inmediatamente después envía la dirección (ID) del esclavo en 9 bits, en este caso el esclavo 1. Todos los esclavos reciben dicha dirección, pero solamente el esclavo 1 la toma, para posteriormente enviarle el último valor que adquirió de la temperatura. El modulo maestro tanto recibirá información de los sensores como también enviará señales de activación a los actuadores. La recepción de los datos y envió de activación de actuadores también puede realizarse desde LabVIEW.
5. Flujo de Datos.
47
La computadora personal (PC) tiene la función principal de servir como interfaz (desarrollada en LabVIEW) para el usuario. En esta interfaz se cuenta con los instrumentos virtuales y algoritmos adecuados para la supervisión y control de todo el sistema. Igualmente la PC sirve como una base de datos, en donde se guardan los datos obtenidos de las mediciones de los sensores y las acción de los actuadores en una base de datos en MySQL.
5.2.
Comunicación
El protocolo de comunicación está divido en dos partes: la comunicación MaestroEsclavos, realizada bajo la norma de comunicación RS-485 y la comuniación Maestro-Pc, realiada bajo la norma RS-232. En el protocolo, lo primero que se realiza es la inicialización de los Esclavos, en la cual se verifica si no existe error en la comuniación. Consiste en enviar del maestro a cada uno de los esclavos conectados, su ID de dirección en 9 bits y recibir un número de 8 bits de confirmación. Si por algún motivo un esclavo no enviará el número de confirmación al maestro, éste detecta el error y en adelante no lo toma en cuenta para realizar las acciones o peticiones hasta que sea corregido el error. Una vez concluida la etapa de inicialización, los esclavos se encuentran configurados para recibir 9 bits e igualmente para detectar interrupciones por recepción. Por lo tanto mientras no ocurra una interrupción por recepción los esclavos se encuentran adquiriendo datos provenientes de los sensores. Si en algún momento los esclavos reciben un dato de 9 bits, éstos generan una interrupción y verifican dicho dato con su ID de dirección, si es igual, cambia la configuración recepción de 9 bits a 8 bits de recepción e igualmente espera a que ocurra otra interrupción. En ésta ocasión, el esclavo estará esperando ya sea una petición o una ejecución de una acción según el ID de dato que reciba. Una vez completada las acción o la petición, el esclavo vuelve a su rutina principal de adquirir señales y espera un dato de 9 bits para generar una interrupción. El maestro por su parte, una vez que termina la etapa de inicialización, comienza una rutina de enviar peticiones a cada uno de los esclavos. Para ello, primeramente envía el ID de dirección del esclavo, posteriomente envía el ID del dato que requiera en 8 bits y espera que el esclavo le responda. Si el tiempo de espera excede un tiempo limite que se tiene programado, el maestro vuelve a enviar el ID del dato. Si vuelve
48
5.3. Flujo de datos en LabVIEW
excederse el tiempo, el Maestro detecta un error de comunicación entre ambos sistemas minimos. La ventaja de configurar de esta manera el PIC, es que nos da cierta autonomía, es decir, si fallara la comunicación con la PC, el maestro no deja de estar recibiendo los datos de los sensores y por lo tanto puede tener una pequeña ley de control en él para mandar señales adecuadas a los actuadores. Para hacer la comunicación maestro-PC se utilizaron los Instrumentos virtuales de LabView para poder enviar y recibir del puerto serial.
5.3.
Flujo de datos en LabVIEW
En la segunda sección el flujo de datos es recibido y enviado por una Pc por medio del puerto serial, haciendo uso de LabVIEW el cual primero obtiene el dato y respectivamente realiza la conversión de este. Estos datos obtenidos del sensor es una transmisión en tipo bit y con la conversion de estos se deduce el valor en números reales (Figura 5.4).
Figura 5.4: Adquisición de datos utilizando LabVIEW y bloques VISA.
Como se observa en la Figura 5.4, el diagrama de bloques la conversion de datos. Para el caso de la lectura del buffer del VISA Read, la cadena de caracteres que lee (código ASCII) del puerto, es convertida a tipo de dato numérico para que pueda ser visualizado en los instrumentos virtuales, es decir, para el caso de la temperatura el dato leído en ASCII se convierte al valor numérico equivalente y así puede ser visualizado en un termómetro virtual. Posteriomente se realiza la representación de los valores obtenidos con los VIs en LabVIEW como se puede ver en la Figura 5.5 y con parámetros de control se activan los actuadores con respecto a como debe de funcionar.
Figura 5.5: Instrumentación Virtual en LabVIEW.
Despues se guardan los valores para las acciones que seran realizadas en un archivo de texto para realizar una publicación en internet de la automatización del invernadero, la representación del invernadero automatizado y la publicación en internet de los
5. Flujo de Datos.
49
instrumentos virtuales se puede ver en la Figura 5.6.
Figura 5.6: Invernadero e Instrumentación Virtual en Internet.
5.4.
Flujo datos con Java
Una parte fundamental de la realización de la representación del invernadero automatizado que es publicado en internet, es gracias a un applet de java que modifica el mundo virtual utilizando los valores anteriormente mencionados que son guardados en un archivo de texto plano.
Figura 5.7: Applet publicado manejador del comportamiento.
El applet tiene puede observar en la Figura 5.7 donde este presenta información inicial de la obtencion de los nodos a modificar inicialmente y posteriormente solo presenta los datos adquiridos. Como se observa en la Figura 5.8, en el diagrama de adquisición de datos por medio de un applet de java, los datos son adquiridos por el applet en java desde el archivo creado por LabVIEW en el directorio donde es publicado el invernadero virtual en VRML, haciendo uso de hilos es posible realizar la lectura del archivo cada segundo, porque así la lectura completa tiene 4 oportunidades de lectura exitosa, porque estaría en espera de nuevos datos guardados por LabVIEW. Así le leídos los datos estos son almacenados en un arreglo para no tener en uso el archivo y este pueda ser modificado así sea su caso. Se procede a modificar el mundo virtualizado gracias al EAI donde tenemos los nodos que vamos a modificar de acuerdo a los datos obtenidos y generar así un comportamiento en el mundo virtual del invernadero automatizado.
Figura 5.8: Diagrama de Adquisición de datos en Java.
En forma general por ahora se ha hablado de la representación del invernadero automatizado en internet y que este se simulara el comportamiento del invernadero real,
50
5.5. Almacenamiento de Datos a Mysql
pero no de su control del invernadero físico desde el invernadero publicado en internet, que es a lo que finalmente se tratar de llegar. El control del invernadero automatizado es realizado de manera directa desde el microcontrolador PIC del sistema mínimo de la unidad metereológica, utilizando un automata de acuerdo a las condiciones óptimas para una plantación de tomates. Las razones por las cuales el control del invernadero automatizado no es desde la una PC utilizando un programa de adquisición de datos como la herramienta de que mencionamos como LabVIEW es por la inestabilidad del Sistema Operativo, como también que una sola maquina tiene muchas tareas o servicios que esta realizando por razones económicas de no tener mas de un equipo realizado cada uno de los servicios o tareas. A continuación se presenta el código de un programa en java el cual tiene dos funciones importantes en donde la primera función es la del registro de todos los datos obtenidos del archivo generado por LabVIEW en una base de datos en MySQL para tener un historial de las variables climatológicas, alarmas generadas, como también las acciones de los actuadores. La segunda función del programa es generar otro archivo con un formato aceptado por la animación en flash que muestra los VIs del invernadero y sus alarmas, de los datos del archivo generado por LabVIEW.
5.5.
Almacenamiento de Datos a Mysql
En esta sección se explicará un programa que nos ayuda a registrar todos los datos adquiridos a una base de datos en Mysql. El programa fue elaborado en Java porque para realizarlo en LabVIEW es necesario adquirir librerías que no son libres. Iniciando por la importación de librerías de las clases necesarias las cuales son las siguientes, la clase java.sql para almacenar los datos en una base de datos, la clase java.io para la lectura y escritura de datos en un archivo y por último la clase java.util, para parámetros de la fecha. import java.io.*; import java.util.*; import java.sql.*;
La clase jijiji es la clase principal de este programa. Inicialmente se construye un objeto de la clase Base_Datos y otro objeto de la clase Hilo. En donde se llama utiliza la función start del objeto Hilo para inicializar un conteo de segundos.
5. Flujo de Datos.
51
class jijiji{ public static void main(String args[]) { Bases_Datos t= new Bases_Datos(); Hilo c= new Hilo (t); c.start(); } }
La clase Base_Datos tiene varias funciones, inicialmente consulta el archivo, y guarda los valores en un arreglo para realizar una comparación entre datos anteriores y los actuales, así de poder verificar si los datos han cambiado. Posteriormente se procede a la modificación del archivo de texto plano, utilizando el formato de Flash para la adquisición de variables, haciendo que los VIs se refresquen con respecto a los datos adquiridos. Como se puede ver en la columna izquierda, las variables de los datos tienen que iniciar con el signo de pesos $ junto el nombre de la variable, el signo & es utilizado para indicar que existe otra variable, una concatenación de variables, un ejemplo del formato es el siguiente: $temperatura=16.0&$humedad=5.0. class Bases_Datos extends Exception { static double datos[] = new double[15]; static double aux[] = new double[15]; static String bd = ”Invernadero”; static String login = ”root”; static String password = ” ”; static String url = ”jdbc:mysql://localhost/” + bd; public synchronized void iniciar () throws IOException { String archivo_lec; String archivo_esc; archivo_lec = ”datos.txt”; archivo_esc = ”datosflash.txt”; java.util.Date d; long time = System.currentTimeMillis(); FileReader fr = new FileReader (archivo_lec); BufferedReader br = new BufferedReader(fr); String buf; int cont = 0; System.out.println(”Leyendo el archivo \n”); while ( ( buf = br.readLine() ) = null) { if(cont = 11){ datos[ cont ] = Double.parseDouble( buf ); cont++; } } d = new java.util.Date(time); String s = d.toString(); String[] fechaString = s.split(” ”); String[] horaS = fechaString[ 3 ].split(”:”); String horasS = horaS[ 0 ]; String segundosS = horaS[ 2 ]; String anhoS = fechaString[ 5 ]; bw.write(”&$fecha = ” + datos[ 14 ] + ”/” + datos[ 13 ] + ”/” + anhoS + ” ” + datos[ 11 ] + ”:” + datos[ 12 ] + ”:” + segundosS); br.close(); bw.close(); fr.close(); fw.close(); Connection conn = null; try { Class.forName(”com.mysql.jdbc.Driver”).newInstance(); conn = DriverManager.getConnection(url,login,password); if (conn = null) { System.out.println(”Conexión a base de datos ” + url + ” ... Ok”); Statement stmt = conn.createStatement();
5. Flujo de Datos.
53
System.out.println(”datos[ 0 ]=” + datos[ 0 ] + ”datos[ 1 ]=” + datos[ 1 ] + ”datos[ 2 ]=” + datos[ 2 ] + ”datos[ 3 ]=” + datos[ 3 ] + ”datos[ 4 ]=” + datos[ 4 ] + ” \n datos[ 5 ]=” + datos[ 5 ] + ”datos[ 6 ]=” + datos[ 6 ] + ”datos[ 7 ]=” + datos[ 7 ] + ”datos[ 8 ]=” + datos[ 8 ] + ” \n datos[ 9 ]=” + datos[ 9 ] + ”datos[ 10 ]=” + datos[ 10 ] + ”datos[ 11 ]=” + datos[ 11 ] + ”datos[ 12 ]=” + datos[ 12 ] + ” \n datos[ 13 ]=” + datos[ 13 ] + ”datos[ 14 ]=” + datos[ 14 ]); PreparedStatement ps = conn.prepareStatement( ” INSERT INTO Tbl_Sensores” + ” ( Fecha, Temperatura_int , Temperatura_ext , Humedad_int , Humedad_ext , Radiacion_solar_int ,” + ” Radiacion_solar_ext , Direccion_viento , Velocidad_viento , Nivel_tinaco , Niverl_cisterna)” + ” VALUES(” ’+ anhoS + ”-” + ( int )datos[ 13 ] + ”-” + ( int )datos[ 14 ] + ” ” + ( int )datos[ 11 ] + ”:” + ( int )datos[ 12 ] + ”:” + segundosS + ” ’, ” + datos[ 0 ] + ”, 0.0, ” + datos[ 3 ] + ”, 0.0, ” + datos[ 2 ] + ”, 0.0, ” + datos[ 5 ] + ”, ” + datos[ 1 ] + ”, ” + datos[ 4 ] + ”, 0.0 );”); ps.executeUpdate(); ResultSet res = stmt.executeQuery(”Select * from Tbl_Sensores”); res.close(); ps.close(); stmt.close(); conn.close(); } } catch( SQLException ex) { System.out.println( ex ); } catch( ClassNotFoundException ex) { System.out.println( ex ); } catch( InstantiationException ex) { } catch( IllegalAccessException ex) { } } } }
Posteriormente se realiza el cierre del archivo y continuamos con añadir el registro de los datos a una fila de la base de datos con respecto a su fecha adquirida. La clase Hilo tiene un ciclo while infinito, para ejecutar el método iniciar de la case Base_Datos cada segundo. class Hilo extends Thread { private Bases_Datos algo; public Hilo( Bases_Datos a ) { algo = a; } public void run() { while(true) { try { Thread.currentThread().sleep( 1000 ); } catch( InterruptedException e ) { } try { algo.iniciar(); } catch( IOException e ) { } } } }
54
5.6.
5.6. Estructura de la Base de Datos
Estructura de la Base de Datos
A continuación se presenta la estructura de la base de datos en mysql donde se almacenaran los datos del invernadero junto con sus alarmas, variables climatologicas, y actuaciones del invernadero, así después poder hacer un análisis más completo del comportamiento climatologico de la zona agropecuaria, como también del comportamiento funcionamiento del invernadero como también las alarmas provistas. Como se puede observar en la Tabla 5.1 la base de datos se llama Invernadero. mysql>show databases; 3 rows in set (0.00 sec) Tabla 5.1: Base Database Invernadero mysql test
A continuación presentamos las tablas que contiene la base de datos Invernadero como se ve en la Tabla 5.2. En donde se encuentra la tabla tbl_actuadores la cual almacenara los datos de las acciones de los actuadores. Seguida de la tabla tbl_alarmas la cual consiste en almacenar las alarmas presentadas por el invernadero físico. Y por último la tabla tbl_sensores la cual alamcena los datos obtenidos por la unidad meteriologica ejemplo: la temperatura, humedad etc. . mysql>show tables; 3 rows in set (0.00 sec) Tabla 5.2: Tablas Tables_in_Invernadero tbl_actuadores tbl_alarmas tbl_sensores
A continuación se describirá la estructura de cada una de las tablas anteriores mencionadas. Para iniciar se describirá la tabla de los actuadores llamada en mysql como
5. Flujo de Datos.
55
tbl_actuadores como se puede observar en la Tabla 5.3. mysql>describe tbl_actuadores; 5 rows in set (0.06 sec) Tabla 5.3: Tabla actuadores Field idreg Fecha Actuador Operacion Descripcion
Type int(5) datetime char(20) char(20) char(250)
Null
Key PRI
Default NULL 0000-00-00 00:00:00
Extra auto_increment
En esta tabla se tiene un campo que es clave llamado idreg que se auto incrementa cada vez que se agrega una nueva fila. El siguiente campo es el de Fecha el cual con el formato de AAAA-MM-DD HH:MM:SS tendremos la hora y fecha exacta del la actuacion del invernadero. El campo Actuador nos indicara cual actuador entra en acccion. El campo Operacion nos describira la operacion a realizar. Y por último el campo Descripción nos describira en todo detalla desde el actuador su operacion a realizar con respecto a las variables climaticas de su actuación. A continuación presentamos la tabla de alarmas llamada en mysql tbl_alarmas como se puede observar la Tabla 5.4. mysql>describe tbl_alarmas; 4 rows in set (0.09 sec) Tabla 5.4: Tabla alarmas Field idreg Fecha Alarma Descripcion
Type int(5) datetime char(20) char(250)
Null
Key PRI
Default NULL 0000-00-00 00:00:00
Extra auto_increment
Como se puede observar en la Tabla 5.4 tenemos los siguientes campos de idreg, Fecha, Alarma y Descripción. Donde idreg es el campo clave de la tabla, generando la numeración automanticamente. El campo Fecha nos da la información del tiempo
56
5.6. Estructura de la Base de Datos
del momento en que se genero la alarma. El campo Alarma nos da información de que alarma se fue activada. Y el campo de Descripción contiene la información de la alarma que se activo, la fecha en que fue activada y a que posible evento lo ocasiono. A continuación presentamos la tabla de sensores llamada en mysql tbl_sensores como se puede observar la Tabla 5.5. mysql>describe tbl_sensores; 12 rows in set (0.09 sec) Tabla 5.5: Tabla sensores Field idreg Fecha Temperatura_int Temperatura_ext Humedad_int Humedad_ext Radiacion_solar_int Radiacion_solar_ext Direccion_viento Velocidad_viento Nivel_tinaco Nivel_cisterna
Type int(5) datetime float float float float float float float float float float
Null
Key PRI
Default NULL 0000-00-0000:00:00 0 0 0 0 0 0 0 0 0 0
Extra auto_increment
En la Tabla 5.5 se tienen los campos que se observan en la tabla. El cual el idreg guarda la información del número de registro y se genera de manera automática. El campo Fecha guarda el momento en que alguno de los sensores captara información diferente a un tiempo anterior. El campo Temperatura_int guarda la información de la temperatura interior del invernadero. El campo Temperatura_ext almacena la temperatura del exterior del invernadero. El campo Humedad_int almacena la humedad capturada por el sensor en el interior del invernadero. El campo Humedad_ext almacena la humedad en su exterior del invernadero. El campo Radiacion_solar_int almacena los datos correspondientes al nivel de iluminación interior del invernadero. El campo Radiacion_solar_ext almacena información de la iluminación exterior del invernadero. El campo Direccion_viento almacena la información de la dirección del viento que en ese momento se encuentra. El campo Velocidad_viento almacena la información de la velocidad en la que se encuentra el viento. El campo Nivel_tinaco almacena la información correspondiente al nivel de agua en que se encuentra en el tinaco en unidades porcentuales. El campo Nivel_cisterna almacena la información del nivel de agua con la que se cuenta en la cisterna en unidades porcentual.
5. Flujo de Datos.
5.7.
57
Pruebas Realizas
La prueba realizada del conjunto de la unidad Metereologica, con el equipo que adquiere los datos desde LabVIEW, como también una conexión en red a esa maquina para el acceso por medio de la intranet como se ve en la Figura 5.9 fue presentado en funcionamiento en la Exposición de Propiedad Intelectual efectuada el 2 de junio del 2006 que se llevo a cabo en la Universidad Autónoma del Estado de Hidalgo campus virtual. Las pruebas elaboradas del funcionamiento no solo del invernadero virtual si no Figura 5.9: Prueba de conexión en cross over.
que conjuntamente con la unidad metereológica que provee de la adquisición de datos es posible por la conexión serial por medio del puerto RS2-32, y la visualización en forma remota es posible conectando 2 maquinas en red, por medio de una conexión crossover utilizando cable UTP categoría 5, conectores RJ45 de tal manera poder tener acceso por la Intranet.
58
Conclusiones Generales La representación virtual del invernadero real nos permite supervisar y controlar el invernadero en cualquier punto del mundo por las facilidades de acceso que nos proporciona la Internet. Con ligeras modificaciones del presente proyecto, se puede supervisar y controlar de forma remota además de implementar de forma virtual un proceso físico. Trabajos a Futuro - Conectar LabVIEWr con data sokcets y poder enviar datos a LabVIEWr y poder controlar, y viceversa. - Programar en un C Builder, Delphi ó VC la parte de adquisición de datos y así convertir la parte del sistema en software que no necesite de mas licencias que la del sistema operativo. - La configuración de los datos del manejo del invernadero desde una archivo obtenidas para LabVIEWr y administrarlo, como de la simulación también simularlo. - Sistemas distribuidos del invernadero virtualizado. En dado caso que la maquina de adquisición de datos fallara (el modulo maestro, freeze de Labview). El entorno web estaría funcionando, junto con el entorno 3d. Claro para esto se tendría que distribuir el sistema del invernadero en varios equipos. De forma que Labview estuviera en un equipoA, el servicio web (Páginas HTML, entornos 3D, manejo de seguridad usando PHP) en equipoB, transmisión de datos a cel GSM desde equipoC.
Bibliografía [Amar, 2006] Amar, A. C. (2006). Atención Médica y Ayuda rural, A. C. Amar, A. C., http://www.amar-ac.org/. [America Saldaña Sánchez, 2006] America Saldaña Sánchez, L. A. P. S. (2006). Protocolo y Realización de Comunicación Serial Distribuida. Universidad Autonoma del Estado de Hidalgo. Instituto de Ciencias Básicas E Ingeniería, Carretera. [Anaya, 2001] Anaya, M. A. C. (2001). Centro virtual de capacitación en la elaboración de productos lácteos orientado a web. Master’s thesis, Universidad Autonoma del Estado de Hidalgo. CITIS (Centro de Investigación de Tecnologías de Información y Sistemas). [Andrea L. Ames, 1997] Andrea L. Ames, D. R. N. . J. L. M. (1997). VRML 2.0 Sourcebook. Jhon Wiley & Sons, Inc., 605 Third Avenue, New York, N.Y. 10158-0012, 2a. edition. Of The San Diego Supercomputer Center. [Andrew S. Tanenbaum, 2002] Andrew S. Tanenbaum, M. V. S. (2002). Distributed System Principles and Paradigms. Prentice Hall, Upper Saddle River, New Jersey 07458., 1era. edition edition. [Angulo, 1999] Angulo, U. J., A. M. I. (1999). Microcontroladores PIC. Diseño práctico de aplicaciones. Primera Parte. Mc Graw Hill. [Angulo, 2000] Angulo, U. J., e. a. (2000). Microcontroladores PIC. Diseño práctico de aplicaciones. Segunda Parte. Mc Graw Hill. [Consortium., 1997] Consortium., W. (1997). VRML97: The Virtual Reality Modeling Language. On-line standard, http://www.web3d.org/technicalinfo/specifications/vrml97/index.htm. [Consortium, 1998] Consortium, W. (1998). Xj3D VRML/X3D Code API. Web3D Consortium, http://www.xj3d.org/javadoc/, on-line edition. [Corporation, 2004a] Corporation, N. I. (2004a). Examples input/output vis and function. In [Corporation, 2004b], chapter smplserl.llb, page Basic 2 Port Serial Write and Read. 59
60
BIBLIOGRAFÍA
[Corporation, 2004b] Corporation, N. I. (2004b). LabVIEW Help. Number Part 370117D-01. National Instruments Corporation, En el paquete de Nationals Instruments LabView 7.1, digital edition. [Creativa, 2001] Creativa, I. (2001). Glosario de Términos. http://www.catalogodesoftware.com/glosario.asp, http://www.catalogodesoftware.com/glosario.asp. [Danesh, 1996] Danesh, A. (1996). Aprendiendo JavaScript en una semana. Prentice Hall, Enrique Jacob 20, Col. El Conde 53500 Naucalpan de Juárez, Edo. de México., 1era. edition. [Dumetri, 2002] Dumetri, P. (2002). Descripcion general del pic16f877. Internet site, foro. [Espinosa, 2004] Espinosa, A. P. (2004). Glosario. Universidad de Granada. [Feruglio, 1997] Feruglio, G. V. (1997). Composición de textos científicos con LaTeX. Alfaomega, edicions upc, 1997. edicions de la universitat politécnica de catalunya, sl. jordi girona salgado 31, 08034 barcelona. edition. [for Learning and (MCLI), 2006] for Learning, M. C. and (MCLI), I. (2006). Multimedia Authoring Web. http://www.mcli.dist.maricopa.edu/authoring/. [Froute, 2000] Froute, A. (2000). JAVA 2: Manual de Usuario y Tutorial. Alfaomega Ra-Ma, Pitágoras 1139, Col. del Valle, 03100 México, D.F., segunda edition. [Guerrero, 2006] Guerrero, J. G. (2006). Medidores, volume Web. http://www.pceiberica.es/medidor-detalles-tecnicos/tablas-de-velocidades-del-viento.htm, http://www.pce-iberica.es/medidor-detalles-tecnicos/tablas-de-velocidades-delviento.htm. [Headquarters, 2000] Headquarters, N. I. C. (2000). LabVIEW Basics II Course Manual. National Instruments Corporation, Texas, USA. [Horstmann and Cornell, 2003] Horstmann, C. S. and Cornell, G. (2003). JAVA 2 Fundamentos, volume 1era. Prentice Hall, C. Nuñez, Madrid. [infoagro.com, 2003] infoagro.com (2003). EL CULTIVO DEL TOMATE. infoagro.com, http://www.infoagro.com/hortalizas/tomate.htm, on-line internet edition. [Jaworski, 1999] Jaworski, J. (1999). Java 1.2 Al Descubierto. PRENTICE HALL, C. Téllez, 54, 28007 Madrid, primera edition. [Kendall and Kendall, 1997] Kendall, K. E. and Kendall, J. E. (1997). Análisis y Diseño de Sistemas. Prentice Hall Hispanoamerica S.A., Calle 4 No. 25-2 piso Fracc. Ind. Alce Blanco, Naucalpan de Juárez, Edo. de México, C.P. 53370, 3a. edition.
BIBLIOGRAFÍA
61
[Laura Muñoz Hernández, 2005] Laura Muñoz Hernández, Luis Paredes Salinas, A. S. S. J. R. F. y. V. L. M. (2005). Supervisión y control por medio de instrumentos virtuales de un proceso físico. In Morales, V. L., editor, Primer Taller de Actualización de Softcomputing y Control, Carr. Pachuca - Tulancingo km. 4.5, Pachuca, Hidalgo. Tel 7172197. Centro de Investigación y Tecnologias de Información y Sistemas. [License, 2006] License, B. S. D. B. (2006). Java bindings for OpenGL. ps://jogl.dev.java.net/, https://jogl.dev.java.net/.
htt-
[Marrin, 1997] Marrin, C. (1997). External Authoring Interface Reference. http://www.graphcomp.com/info/specs/eai.html, http://www.graphcomp.com/info/specs/eai.html. [Mears, 2004] Mears, P. L. (2004). Infrastructure Technologies for Life Science Computing, volume White Paper. Sun, Sun Microsystems, http://www.sun.com/solutions/documents/whitepapers/ls_SunTechSummary0904_dd.pdf, a summary of sun’s recent white papers & use cases edition. [Microchip, 2001] Microchip (2001). PIC16F87X 28/40-Pin 8-Bit CMOS FLASH Microcontrollers. Microchip Technology Data Sheets No. DS30292C. [Morales, 2006] Morales, V. L. (2005-2006). Proyecto automatización de invernaderos con cultivo hidropónico. Technical report, SEP-SESIC-PROMEP, Ref. UAEH-PTC1004. [NIST, 2006] NIST (2006). VRML Plugin and Browser Detector. National Institute of Standards and Technology is an agency of the U.S. Commerce Department’s Technology Administration., http://cic.nist.gov/vrml/vbdetect.html. [para Invernadero, 2006] para Invernadero, P. http://sistemas.agroc.com.mx/plastinver/ invernaderos.html. Productos para Invernadero.
P.
(2006). PLASTINVER
[para la Productividad Agrícola, ] para la Productividad Agrícola, T. Invernaderos. On-line, Tecnología para la Productividad Agrícola, http://www.tpagro.com/textos/invernaderos.htm. [Powell, 2001] Powell, T. A. (2001). Manual de referencia HTML 4. The McGrawHill Companies, Edificio Valrealty, 1.a planta Basauri, 17, 28023 Aravaca (Madrid), primera edition. [Process, 2006] Process, J. C. (2006). JSR 231: JavaTM Binding for the OpenGLr API. http://jcp.org/en/jsr/detail?id=231, http://jcp.org/en/jsr/detail?id=231.
62
BIBLIOGRAFÍA
[Schildt, 2003] Schildt, H. (2003). Manual de Referenacia Java 2. Osborne McGrawHill, Edificio Valreaty, 1.a planta, Basauri, 17, 28023 Aravaca (Madrid), cuarta edition. [Underdahl, 2003] Underdahl, B. (2003). Macromedia Flash MX. Manual de referencia. McGraw-Hill, Edificio Valrealty, 1ra. planta. Basauri, 17. 28023 Aravaca Madrid., primera edición español edition. [Virgilio López Morales, 2006] Virgilio López Morales, Omar López Ortega, J. R. F. A. C. A. L. E. R. V. J. W. V. (2006). Secsih, sistema de evaluación, control y supervisión de un invernadero hidropónico. Proyecto PAI 2006, UAEH, pages pp. 1–20. [Wikipedia, 2001] Wikipedia (2001). Enciclopedia Libre. Fundación Wikimedia. [y P. J. Deitel, 1998] y P. J. Deitel, H. M. D. (1998). Cómo Programar en Java. Prentice Hall Latinoamerica., Calle 4 num. 25-2do. piso Fracc. Ind. Alce Blanco, Naucalpan de Juárez, Edo. de México., 1era. edition.
Apéndice A Presentaciones. En la realización del presente trabajo de tesis fue presentado como Poster en el 1er Taller de Actualización de Softcomputing y Control 23-25 de Noviembre del 2005. Carretera Pachuca - Tulancingo Km. 4.5, Pachuca, Hidalgo. Tel. 7172197. Además de ser presentado como Poster en el 1er. Congreso Estatal Universitario en Tecnología de Información y Comunicaciones TIC´S 25-27 de Abril del 2006, así también en la Exposición de Propiedad Industrial 2 de Junio del 2006 que se llevo a cabo en la Universidad Autónoma del Estado Hidalgo. Se obtuvo también la aceptación del articulo en el ISRA (International Simposium on Robotics and Automation) el cual se titula (Virtual Distributed Supervision and Control for an Automated Greenhouse), con ISBN 970-769-070-4, y un poster con titulo de (Virtual Greenhouse - Virtual tour in a real automated greenhouse), con ISBN 970-769-070-4, con sede en San Miguel Regla, Hidalgo, México, del 26-28 de Agosto del 2006. A continuación se anexan los trabajos mencionados.
63
64
A.1.
A.1. Poster
Poster Figura A.1: Poster.
Poster presentado en la Figura A.1 en el 1er. Taller de Actualización de Softcomputing y Control del 23 al 25 de Noviembre del año 2005, como también en la exposición tecnológica del 1er. Congreso Estatal Universitario en Tecnología de Información y Comunicaciones TIC´S del 25 al 27 de Abril del 2006.
A.2.
Tríptico 1 Figura A.2: Tríptico 1 lado 1.
Figura A.3: Tríptico 1 lado 2.
Tríptico presentado en las Figuras A.2 y A.3 junto con el poster A.1 en la exposición tecnológica del 1er. Congreso Estatal Universitario en Tecnología de Información y Comunicaciones TIC´S del 25 al 27 de Abril del 2006.
A.3.
Tríptico 2
Tríptico presentado en las Figuras A.4 y A.5 en la Exposición de Incubadora de Empresas de la UAEH el 2 de Junio del 2006. Carretera Pachuca-Actopan Km. 4.7 junto con el poster A.1.
A. Presentaciones.
65
Figura A.4: Tríptico 2 lado 1.
Figura A.5: Tríptico 2 lado 2.
A.4.
Artículo
Publicación de un Paper en el ISRA (International Simposium on Robotics and Automation), el cual se titulo (Virtual Distributed Supervision and Control for an Automated Greenhouse), con ISBN 970-769-070-4, que consta con 4 páginas mostradas en las Figuras A.6, A.7, A.8, A.9, con sede en San Miguel Regla, Hidalgo, México, del 27 de Agosto del 2006.
A.5.
Poster 2
Poster presentado en la Figura A.10 en el ISRA (International Simposium on Robotics and Automation) en la sección de Posters and Prototipes, con el titulo de Virtual Greenhouse - Virtual tour in a real automated greenhouse, con ISBN 970-769-070-4, con sede en San Miguel Regla, Hidalgo, México, del 27 de Agosto del 2006.
Figura A.6: Pagina 1 del Artículo.
66
A.5. Poster 2
Figura A.7: Pagina 2 del Artículo.
Figura A.8: Pagina 3 del Artículo.
Figura A.9: Pagina 4 del Artículo.
Figura A.10: Poster 2.
Apéndice B Código Fuente. A continuación se presenta la ubicación del código fuente del presente trabajo, el cual consiste de la definición de los mundos virtuales, el applet de java, páginas web que contienen toda la interfaz, así como los diagramas de adquisición de datos con LabVIEWr. Una razón por la cual no se presenta este código fuente impreso es por el gran número de líneas de código fuente y resulta mejor almacenarlo en un dispositivo magnético y de esa forma poder presentarlo como consultarlo.
B.1.
VRML
El mundo virtual del invernadero consiste del siguiente archivo in2.wrl que contiene el código fuente donde se utilizan etiquetas en VRML. En el CD incorporado a esta tesis se presentan los códigos fuentes del presente trabajo, desde los Applets en Java, como también el programa desarrollado en LabVIEW, y los fuentes de VI elaborado en flash, HTML. Ha si como trabajo de investigación realizado para pruebas de implementación en el proyecto que al final ya no fue presentado como parte de este trabajo. A continuación se presenta el mapa de rutas del invernadero Virtual con nombre de archivo in2.vrml el cual la ubicación en el CD del archivo de código fuente es \codigos\vrml\in2.wrl el cual el mapa de rutas de ese archivo es el que se muestra en la Figura B.1, el mapa de rutas es útil para ver las conexiones de los elementos que van a tener una animación por parte del archivo VRML.
67
68
B.2. Java
Figura B.1: Mapa de rutas del mundo virtual del invernadero.
B.2.
Java
Los programas realizados en Java para este proyecto son 2, uno corre del lado cliente el cuál es un applet de java, el cual modifica el mundo virtual en la maquina cliente el cual su nombre es appletinvernadero.java y la ubicación del código fuente es \codigos\java\cliente\AppletInvernadero.java. Este archivo de java se compila de la siguiente forma: javac target 1.1 AppletInvernadero.java La compilación con target 1.1 se realiza para que el código fuente sea compilado con la version de java 1.1 que es la version de la maquina virtual de Microsoft corre correctamente. El segundo programa se ejecuta en la maquina servidor y almacena la información adquirida del invernadero real en una base de datos con el nombre del archivo de jijiji.java y se encuentra en la ubicación \codigos\java\servidor\jijiji.java. Para la compilación del segundo archivo en java tiene que tener el conector de la base de datos mysql-connector-java-3.1.13.zip, la cual se utilizo mysql.
B.3.
Querys SQL
El manejador de base de datos utilizado en este proyecto es el mysql. Es un manejador libre. La creación de la base de datos en el manejador mysql se elaboro mediante consultas en SQL. Las consultas utilizadas para las tablas se encuentra en el archivo SQL_query.txt ubicado en \codigos\SQL\SQL_query.txt. En el archivo se encuentran los Querys de la creación de la base de datos como también sus respectivas tablas.
B. Código Fuente.
B.4.
69
LabVIEW
fuente en LabVIEW.
B.5.
HTML
fuentes en html.
B.6.
Flash
Los archivos fuentes de las animaciones creadas en Flash se encuentra en \codigos\Flash\ de los cuales uno llamado
B.7.
Otros Códigos
B.7.1.
Lego de Mindstorms
B.7.2.
Java
[Anaya, 2001], [Andrea L. Ames, 1997], [Feruglio, 1997], [for Learning and (MCLI), 2006], [Powell, 2001], [Marrin, 1997], [Consortium., 1997], [NIST, 2006], [Headquarters, 2000], [Laura Muñoz Hernández, 2005] [Amar, 2006], [Creativa, 2001], [para Invernadero, 2006], [Espinosa, 2004], [Wikipedia, 2001], [Guerrero, 2006], [Underdahl, 2003], [License, 2006], [Process, 2006], [Mears, 2004] [Kendall and Kendall, 1997], [infoagro.com, 2003], [Corporation, 2004b] [Corporation, 2004a], [Morales, 2006], [Jaworski, 1999], [Froute, 2000], [Schildt, 2003], [Horstmann and Cornell, 2003], [y P. J. Deitel, 1998] [Danesh, 1996], [Consortium, 1998], [America Saldaña Sánchez, 2006], [Virgilio López Morales, 2006], [para la Productividad Agrícola, ], [Andrew S. Tanenbaum, 2002], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?], [?].
Apéndice A Presentaciones. A.0.3.
Programación de efectos y automatización del invernadero
En la programación de efectos, el objetivo es el de darle comportamiento o efectos de animación en el mismo código VRML haciendo uso de las siguientes etiquetas que en lenguaje VRML realizan estas tareas, entre las más importantes se encuentran las siguientes donde mencionarán las dos primeras: DEF, Route, TimerSensor, PositionInterpolator, OrientationInterpolator, Sensing Touch, Sensing Motion, TouchSensor, PlaneSensor, SphereSensor, CylinderSensor. Para más información (C.F.) [Andrea L. Ames, 1997].
Definiendo el nombre a los nodos. Se puede definir un nombre para cualquier nodo en el mundo virtual. Los nombres pueden ser la mayor parte cualquier secuencia de letras y números. Una vez el nodo tiene un nombre, se puede usar el nodo otra vez más tarde en el archivo. Por ejemplo, se puede especificar el nombre mi_silla para un nodo o grupo de nodos que construyen una silla. Entonces, para poner cuatro sillas alrededor de una mesa, se podría reusar la misma forma mi_silla tres veces más, sin que tengamos que reescribir toda la silla otra vez. El nodo con el nombre definido es llamado el nodo original, y cada reutilización de el nodo es llamado una instancia. Se puede solamente ponerle valor al campo cuando definen el nodo original. Cada de las instancias usadas del campo original cambia a menos que el valor. Para definir un nodo para usarlo como instancia, se empieza el nodo con la palabra ”DEF” y un nombre de nodo de tu elección. Un archivo VRML puede contener cualquier número de nombres de nodo. No se puede, sin embargo, crear dos nodos con el mismo 71
72
nombre en el mismo archivo.
Tabla A.1: Sintaxis de DEF DEF nombre-node tipo-nodo { ... } En los nombres de nodo cualquier secuencia de caracteres es conveniente, y esto es sensible a los caracteres de mayúsculas o minúsculas. Por ejemplo, los nombres ”ABC” y ”abc” son considerados diferentes por el visualizador VRML. Los nombres de nodo pueden incluir letras, números, y guiones bajos. Los siguientes ejemplos de nombres de nodos válidos:
Tabla A.2: Sintaxis de mi_silla lanzadera_espacial Tecladepiano SonidodeGorgoteo Luz_Brillante Cafe_oscuro
DEF Diseno_Cosina_12 Indy500 ladrillo_rojo
Los nombres no pueden iniciar con un número; no puede incluir letras no imprimibles, caracteres ASCII con un espacio, tabuladores, líneas impresión, formularios de impresión, y retornos de carros; y no puede incluir comillas dobles o simples, signos de moneda, comas, periodos, raíces, brackets, diagonal invertida, llaves, o la letra ñ. Los siguientes nombres también están prohibidos, estas palabras son usadas como de propósito específico con VRML:
Tabla A.3: Sintaxis de DEF DEF EXTERNPROTO FALSE IS NULL PROTO ROUTE TO TRUE USE eventIn eventOut exposedField field Un tipo de nodo es un particular tipo de nodo, como el nodo Cylinder. Para definir un nombre para el nodo Cylinder, por ejemplo, usamos la sintaxis de DEF: DEF mi_cilindro Cylinder. . . Donde mi_cilindro es el nombre del nodo y el Cylinder es el tipo de nodo a ser llamado.
A. Presentaciones.
73
Usando Nombres de los Nodos. Una vez se tiene definido un nombre para un nodo, se puede usar ese nodo otra vez y otra vez dentro del mismo archivo por comenzar el nombre del nodo con la palabra "USE". Tabla A.4: Sintaxis de USE USE nombre-node Se puede usar un nodo donde quiera en el archivo donde ese nodo pueda ser especificado. Se puede aún usar un nodo como el valor de un campo donde aquel requiera normalmente una descripción completa del nodo. El mismo nodo original puede ser instancias con USE cualquier número de veces dentro del mismo archivo. Todas las instancias de usar en común la misma descripción del nodo, tan así se puede cambiar el nodo original, todas las instancias cambian también.
Eventos y Rutas. Dado que un archivo VRML provee las instrucciones de construcción para los mundos [Andrea L. Ames, 1997], para poder realizar un mundo dinámico, esas instrucciones de construcción también deben incluir una instrucción de cableado. Tales instrucciones describen como cablear nodos entre sí. Por ejemplo, click del ratón sobre una forma puede encender una luz, activar un sonido, o arrancar una máquina. El cableado de VRML involucra: Un par de nodos para cablear entre sí. Un cableado usando la etiqueta route, o un path, entre los dos nodos. Una vez construida una ruta entre dos nodos, el primer nodo puede enviar mensajes al segundo nodo a través de esa ruta. Los valores típicos de los eventos incluyen valores de punto flotante, valores de color, o valores de coordenadas 3-D. Cuando un nodo recibe un evento, este reacciona para prender una luz, reproducir un sonido, o si no también iniciar una animación, todo esto es dependiendo de las características de ese nodo. Para Para realizar un mundo dinámico se pueden cablear múltiples nodos entre sí, de tal manera crear así un circuito complejo para darles rutas a los eventos.
74
Entradas y Salidas de los Nodos. Algunos otros tipos más de nodos VRML pueden ser cableados dentro de un circuito. Cada nodo tiene enchufes de entradas y salidas para los cuales puedas conectar opcionalmente con el cableado. Por ejemplo, para realizar unos nodos que manejan luces en el mundo virtual, se tiene un conector de entrada para encender y apagar. Si se cablea hacia el conector, se puede crear un circuito que automáticamente encienda o apague dicha luz. Un nodo debe tener varios conectores de entradas y salidas disponibles. Una luz, por ejemplo, tiene conectores de entrada para cambiar de encendido y apagado, cambiar el brillo, cambiar el color, y más. Algunos tipos de nodo tienen ambos conectores de entradas y salidas, mientras otros tienen solamente uno o el otro. Un conector EventIn es llamado un nodo de entrada. Un EventIn recibe eventos cuando esta conectado a una ruta y cuando se le envía. Similarmente, un conector de salida es llamado un eventOut. Un eventOut envía eventos de salida cuando esta conectado por una ruta. La sintaxis a considerar que se muestra a continuación en la Tabla A.5 es el subconjunto del nodo Collision.
Tabla A.5: Sintaxis del Nodo colisión Collision{ children proxy addChildren removeChildren collideTime
[] NULL
# # # # #
exposedField field eventIn eventIn eventOut
MFNode SFNode MFNode MFNode SFTime
} Los siguientes elementos que se muestran son de la sintaxis en detalle de la Tabla A.5 del nodo Collision.
El nodo ( Collision ) Los campos del nodo ( children, proxy, etc.) Los valores de los campos ( [],NULL, etc.) El tipo de cada campo (exposedField, field, etc.)
A. Presentaciones.
75
El tipo de valor de cada campo (MFNode, SFNode, etc.) Observe que el nodo tiene dos conectores de entrada - addChildren y removeChildren - y un conector de salida, llamado collideTime. El nodo también tiene dos campos: children y proxy. Note que el campo children en la sintaxis de la Tabla A.5, citado anteriormente, tiene un exposedField. Un exposedField tiene dos conectores implícitamente asociados con: un conector de entrada para colocar estos valores y, un conector de salida para enviar valores del campo cada que existe un cambio de valores de este campo. Naturalmente el conector de entrada para asignarle el nuevo valor, siempre se le denomina por set_XXX, donde XXX corresponde al nombre del campo expuesto. Similarmente, el conector de salida siempre se le denominará por XXX_changed, donde XXX corresponde al nombre de los campos expuestos. Por ejemplo, para el nodo Collision, el campo expuesto children deberá tener una conexión implícita set_children para el conector de entrada, y children_changed para el de salida. Cuando se construyen las rutas, se usan los nombres de los nodos para especificar los eventOuts y los eventIns en donde se conectarán. Para el nodo Collision anteriormente mencionado, se puede crear una ruta que conecta hacia los nodos eventIns (addChildren y removeChildren) y para eventOuts (collideTime). Para un campo expuesto, se puede cablear una ruta hacia eventIn y eventOut implícito ( set_children y children_changed ). Se puede también trazar la ruta al campo expuesto a sí mismo ( children ), y el visualizador VRML automáticamente usará el eventIn implícito, si la ruta envía un evento para el nodo un eventOut si el nodo es receptor de eventos sobre la ruta. Tipos Entradas y Salidas de los Nodos. Similar a un campo de los nodos, cada eventIn y eventOut de cada nodo también posee un tipo. Un eventOut de tipo SFFloat, por ejemplo, tendrá salidas con valor de punto flotante cuando es cableado a un circuito. Un eventOut de tipo SFColor enviará colores. Similarmente, un eventIn de tipo SFFloat puede recibir valores de punto flotante, mientras que uno de tipo SFColor puede recibir colores. Cuando se especifica una ruta, los tipos de conexiones de salida y de entrada deben de corresponder exactamente. Por ejemplo, se puede mandar un evento de punto flotante de un MFFloat eventOut a un MFFloat eventIn, pero no a un SFFloat o MFColor a un MFFloat eventIn. Cableado de Rutas. Un circuito VRML es construido para describir una ruta de un nodo eventOut (evento de salida) a otro nodo eventIn (evento de entrada). El circuito de ruta permanece
76
inactivo hasta que un evento es enviado del primer nodo al segundo nodo a través de la ruta. Cuando el primer nodo activa la ruta por el envío de un evento, el evento viaja al segundo nodo, y el nodo reacciona. Los tipos de reacción depende de: El tipo de nodo que recibe el evento, El conector de entrada del nodo para el cual la ruta es cableada, Los valores contenidos en el evento y La actividad actual del nodo. Por ejemplo, cuando un evento contiene un valor TRUE de tipo de datos SFBool que envía un on a eventIn de un nodo de luz, la luz se enciende. Similarmente, cuando un evento contiene un valor punto flotante este envía la intensidad a eventIn de un nodo de luz, y en consecuencia la luminosidad de la luz cambia.
Apéndice A Presentaciones. A.0.4.
Adquisición de Datos utilizando LabVIEW.
Un ejemplo de la adquisición de datos utilizando LabVIEWr, se presenta a continuación con un diagrama sencillo de programación por bloques en donde se muestra la obtención de datos mediante el puerto serial [Corporation, 2004a]. A continuación se muestran en las Figuras A.1 y A.2, la escritura de datos por medio de un puerto serial, así como la lectura de datos por el mismo puerto.
Figura A.1: Panel frontal de escritura y lectura por los puertos seriales.
Como se observa en la Figura A.1, se puede configurar el puerto serial en el que va a escribir o leer donde aparecen las etiquetas de VISA resource name (write ó read), que tasa de baudio se desea tener con la etiqueta baud rate, bits de datos de entrada con la etiqueta data bits(8), paridad con la etiqueta parity. Los bits de parada especifican el número de bits usados para el paro, para indicar el fin de trama con la etiqueta stop bits, y el control de flujo con la etiqueta flow control.
Figura A.2: Escritura y lectura de datos por medio del VISA.
Como se observa en la Figura A.2, inicialmente se usa el bloque VISA de configuración, luego se procede a utilizar al bloque VISA de escritura como de lectura y por último se procede a cerrar la sesión tanto de escritura como de lectura.
77
78
En forma general las entradas de un bloque de función en la programación por bloques de LabVIEW esta estructurado de la siguiente forma en cuestión donde las entradas son configuraciones o salidas de datos de una función anterior, y sus respectivas salidas, como se puede observar en la Figura A.3 que a continuación se presenta.
Figura A.3: Entradas y salidas de una bloque de función.
De esa manera se explicaran las entradas y las salidas de cada bloque, empezando por las entradas y continuando al final con sus salidas de cada bloque. La adquisición de datos como se muestra en la Figura A.2 se realiza por el puerto serial donde por medio de LabVIEWr adquiere los datos usando un bloque para adquirir datos. A continuación se explicará cada bloque presentado.
Figura A.4: bloque VISA configuración de puerto serial.
El bloque VISA de configuración serial como, se muestra en la Figura A.4, presenta las siguientes entradas y salidas, para más información cf. [Corporation, 2004b]. La entrada con la que empezaremos se llama Enable Termination Char (T) el cual prepara al dispositivo serial para reconocer la terminación en carácter. Si este tiene valor TRUE, que por default esta configurado, el atributo VI_ATTR_ASRL_END_IN es puesto para reconocer la terminación en carácter. Si este tiene valor FALSE, el atributo VI_ATTR_ASRL_END_IN es puesto en 0 (Ninguno) y el dispositivo serial no reconocerá la terminación en carácter. El parámetro llamado termination char (0xA=”\n... realiza llamadas para la terminación de la operación de lectura. La operación de lectura termina cuando el carácter de terminación es leído por el dispositivo del puerto serial. 0xA es un carácter equivalente en hexadecimal de una nueva línea (\n). En cambio la terminación de carácter por una cadena de caracteres que termine con un retorno de carro (\r). Luego con timeout (10 sec) se configura el tiempo de espera para las operaciones la escritura y lectura. Seguido de VISA resource name es un tipo de datos I/O el cual usa para especificar los recursos que serán abiertos. Este control también especifica la sesión y la clase. Continuando con la entrada de configuración de baud rate (9600) es la frecuencia de transmisión. El valor predefinido es de 9600. Luego con data bits (8) es el número de bits de datos entrantes. El valor de datos esta entre 5 y 8 bits. El valor predefinido es de 8. Continuando con el parámetro parity (0:none) especifica el número de paro de bits usado para indicar el fin de una
A. Presentaciones.
79
trama. Seguido con error in (no error) describe las condiciones de error que ocurren después de la ejecución del VI o función. Por default no existe un error. Si un error ocurre después de ejecutar el VI o la función, el VI o función pasa el valor del error a una salida de error. Este VI o función normalmente se ejecuta solo si no ocurre un error después de la ejecución. Seguido del parámetro stop bits (10:1 bit) el cual especifica el número de bits de paro usados para indicar el fin de una trama. Por último de las entradas con flow control (0:none) esté fija el tipo de control utilizado para el mecanismo de transferencia. Continuando con las salidas empezamos con duplicate VISA resource name el cual es una copia del VISA resource name que este pasa una salida de las funciones VISA. Y seguido de último con error out el cual contiene la información del error. Si un error ocurre este indica que error se produjo después de ejecutar el VI o la función, error out contiene la información del error. Como también describe el estado del error que se produjo en el VI o la función. El bloque VISA read, como se muestra en la Figura A.5, lee un número específico de bytes del dispositivo o interfaz especificado por VISA resource name, y retorna los datos leídos dentro de un buffer. Los datos son leídos tanto sincrónica como asincrónicamente dependiendo de la plataforma. Con un click izquierdo sobre el nodo y seleccionando la I/O de lectura de sincronización del menu desplegable. La operación retorna solamente cuando la transferencia termina.
Figura A.5: bloque VISA read.
Como se observa en la Figura A.5 explicaremos las entradas y salidas de este bloque, empezando por las entradas con VISA resource name específica el recurso a ser abierto. Este control también especifica la sesión y la clase. Continuando con byte count es un contador de bytes a ser leídos. Y terminado con error in (no error) describe las condiciones de error que ocurren después de la ejecución del VI o función. Por default no existe un error. Si un error ocurre después de ejecutar el VI o la función, el VI o función pasa el valor del error a una salida de error. Este VI o función normalmente se ejecuta solo si no ocurre un error después de la ejecución. Así empezando con las salidas como dup VISA resource name el cuál es una copia de el VISA resource name que las funciones VISA retornan. Continuando así con read buffer contiene los datos leídos del dispositivo. Seguido de return count el cual contiene el número de bytes actualmente leídos. Y terminado las salidas con error out el cual contiene la clave del error si hubiera alguno. La función del bloque de escritura VISA se muestra en la Figura A.6 el cual nos sirve para mandar datos por el puerto serial, de acuerdo a al bloque de configuración
80
del puerto serial.
Figura A.6: bloque VISA write.
El bloque VISA write como se muestra en la Figura A.6 se puede observar que tiene 3 entradas y 3 salidas, donde en las entradas empezaremos con VISA resource name donde este especifica el recurso a ser abierto. Este control también especifica la session y clase. La siguiente entrada es write buffer el cuál contiene el dato a ser escrito al dispositivo. Y por último en las entradas error in (no error) describe las condiciones de error que ocurren después de la ejecución del VI o función. Por default no existe un error. Si un error ocurre después de ejecutar el VI o la función, el VI o función pasa el valor del error a una salida de error. Este VI o función normalmente se ejecuta solo si no ocurre un error después de la ejecución. En cuanto a las salidas de este bloque describiremos el dup VISA resource name el cuál es una copia de el VISA resource name que las funciones VISA retornan. Continuaremos con return count el cual contiene el número actual de los bytes escritos. Y por último con error out el cual contiene la información del error. Si un error ocurre este indica que error se produjo después de ejecutar el VI o la función, error out contiene la información del error. Como también describe el estado del error que se produjo en el VI o la función. El bloque VISA close, como se muestra en la Figura A.7, como su nombre lo indica cierra la sesión del dispositivo o el evento del objeto especificado por VISA resource name. Para cada sesión de dispositivos que sea abierta, se tiene que finalizar la sesión utilizando este bloque.
Figura A.7: bloque VISA close.
Como se observa en la Figura A.7 explicaremos las entradas y salidas de está función del bloque, iniciando con la entrada VISA resource name especifica el recurso a ser abiertos. Este control también especifica la sesión y la clase. Seguido de último con error in (no error) describe las condiciones de error que ocurren después de la ejecución del VI o función. Por default no existe un error. Si un error ocurre después de ejecutar el VI o la función, el VI o función pasa el valor del error a una salida de error. Este VI o función normalmente se ejecuta solo si no ocurre un error después de la ejecución. Y terminado con la salida de error out el cual contiene la información del error. Si un error ocurre este indica que error se produjo después de ejecutar el VI o la
A. Presentaciones.
81
función, error out contiene la información del error. Como también describe el estado del error que se produjo en el VI o la función.
Apéndice B Sistemas Mínimos. Introducción. En el desarrollo de un protocolo de comunicación, la simplificación de elementos y su organización es necesaria para facilitar el acceso a los diferentes medios que interactúan con ellos. El sistema mínimo propuesto en este proyecto de tesis, cumple con estas facilidades de acceso físico a componentes y dispositivos electrónicos tales como pantallas LCD, interfaz de comunicación, entradas/salidas analógicas y digitales, entre otros. Estos accesos están basados y orientados al uso del microcontrolador PIC16F877 fabricado por Microchip. Existen sistemas mínimos desarrollados o fabricados por diferentes industrias tales como Microchip o Motorola, pero su principal desventaja es que son de alto costo y de arquitectura cerrada, lo que significa que no se le pueden hacer modificaciones o cambios en la misma. Sin embargo, el sistema mínimo propuesto no solamente es de arquitectura abierta, sino además es de bajo costo, ya que cuenta con todos los dispositivos necesarios para la implementación de protocolos de comunicación. En el presente Capítulo se da un panorama del sistema mínimo propuesto detallando cada una de las partes que lo componen, así como sus dispositivos interconectados.
83
84
B.1. Sistemas Mínimos.
B.1.
Sistemas Mínimos.
Un sistema mínimo es un dispositivo que ayuda a una simplificación de elementos que interactúan en un proceso, en este caso, el sistema mínimo que se propone está orientado al microcontrolador PIC16F877, el cual se verá con mayor detalle en la Sección B.2.2. El protocolo presentado en este trabajo de tesis se ha basado en el uso de este microcontrolador. Por otra parte el sistema mínimo cuenta con diferentes dispositivos que se ilustran en la Figura. B.1.
Figura B.1: Diagrama del sistema mínimo orientado al PIC16F877.
En la Figura B.1 se puede observar que el sistema mínimo tiene acceso disponible a diferentes dispositivos como pantalla LCD, teclado matricial, comunicación serial, entradas analógicas y digitales, los cuales son activados o desactivados mediante la programación del microcontrolador. Más claramente se puede observar en la Figura B.2, el sistema mínimo con sus entradas y salidas analógicas (1) y digitales (2), la ubicación del microcontrolador PIC16F877 (3) y los convertidores RS-232 a RS-485 (4).
Figura B.2: Sistema Mínimo propuesto.
B.2.
Componentes del Sistema Mínimo.
El sistema mínimo que se propone en el presente trabajo de tesis, es el que se muestra en la Figura B.1 , que contiene varios componentes o dispositivos útiles en la puesta en marcha de este protocolo. Algunos de los dispositivos que se implementaron son:
Pantalla de LCD. Microcontrolador PIC16F877. Interfaz de comunicación RS-232. Convertidor de interfaz RS-232 a RS-485.
B. Sistemas Mínimos.
85
Entradas y salidas analógicas y digitales. Todos estos dispositivos tienen una función específica y para cada uno de ellos existe una parte exclusiva para su uso y aplicación. Más adelante veremos cómo y cuál es la función de cada uno de ellos dentro de este proyecto de tesis.
B.2.1.
Diferencia entre un microprocesador y un microcontrolador.
El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso (UCP), también llamada procesador de un computador. La UCP está formada por la Unidad de Control, que interpreta las instrucciones, y el Camino de Datos que las ejecuta. Ésta contiene líneas de buses de direcciones, datos y control para permitir conectarse con la memoria y los módulos de E/S. Esta unidad sirve para configurar al computador implementado por varios circuitos integrados además se dice que es un sistema abierto porque su configuración puede variar o modificarse de acuerdo a la aplicación a la que esté destinada, como se observa en la Figura B.3 (Cf. [Angulo, 1999]). Figura B.3: Estructura de un sistema abierto basado en un microprocesador ([Angulo, 1999]).
B.2.2.
Microcontrolador PIC16F877.
Así, un microcontrolador es un circuito integrado programable que contiene todos los componentes de un computador. Se emplea para controlar el funcionamiento de una tarea determinada y, debido a su reducido tamaño, suele ir incorporado en el propio dispositivo al que gobierna, y es por tanto un computador dedicado. En su memoria sólo reside un programa destinado a gobernar una aplicación determinada; sus líneas de entrada/salida soportan la conexión de los sensores y actuadores del dispositivo a controlar, y todos los recursos complementarios disponibles tienen como una finalidad atender sus requerimientos. Una vez programado y configurado el microcontrolador solamente sirve para gobernar la tarea asignada. El número de productos que funcionan en base a uno o varios microcontroladores aumentan de forma exponencial. La industria informática acapara gran parte de los microcontroladores que se fabrican. Casi todos los periféricos del computador, desde el ratón o el teclado hasta la impresora, son regulados por el programa de un microcontrolador.
86
B.2. Componentes del Sistema Mínimo.
Existen un centenar de empresas fabricantes de microcontroladores, pero lo cierto es que en la primera década del siglo XXI, los PIC fabricados por Microchip ocupan un lugar importante, compitiendo con los microcontroladores de Intel y Motorola. Dentro de los diferentes tipos de microcontroladores existen los que procesan datos de 4, 8, 16 y 32 bits, sin embargo, el más representativo y popular es el de 8 bits, al que pertenecen los PIC (Cf. [Angulo, 1999]). La Figura B.4 muestra el diagrama del microcontrolador PIC16F877. Figura B.4: Diagrama del microcontrolador PIC16F877 ([Microchip, 2001]).
Microchip ofrece cuatro gamas de microcontroladores de 8 bits para adaptarse a las necesidades de las aplicaciones (Ibidem.). Estas cuatro gamas son las siguientes: 1. Gama baja o básica con instrucciones de 12 bits. 2. Gama media con instrucciones de 14 bits. 3. Gama alta con instrucciones de 16 bits. 4. Gama mejorada con instrucciones de 16 bits. En el presente trabajo de tesis se utiliza el microcontrolador PIC16F877 de la subfamilia PIC16F87X, la cual trata de un conjunto de cuatro modelos de PIC con memoria FLASH, que se ubica dentro de la gama media de microcontroladores de 8 bits. Características del Microcontrolador PIC16F877. Un microcontrolador posee todos los componentes de un computador, pero con características fijas que no pueden alterarse. El alto rendimiento y elevada velocidad que alcanzan los modernos procesadores, como el que poseen los microcontroladores PIC, se debe a la conjunción de tres técnicas la arquitectura Harvard, el computador tipo RISC y su segmentación(Ibidem.). En la Figura B.5 se puede observar la arquitectura aplicada por Microchip en sus microcontroladores, que se caracteriza por la independencia entre la memoria de código y la de datos (Cf. [Angulo, 2000]).
B. Sistemas Mínimos.
Figura B.5: Arquitectura ([Microchip, 2001]).
87
abierta
de
los
microcontroladores
PIC16F877
Organización de la memoria. Memoria de Programa FLASH. El microcontrolador está diseñado para que en su memoria de programa se almacenen todas las instrucciones del programa de control. En estos microcontroladores no hay posibilidad de utilizar memorias externas de almacenamiento, por lo que el programa a ejecutarse debe estar grabado permanentemente. El microcontrolador PIC16F877 cuenta con memoria FLASH que es una memoria no volátil en la que se graba el programa de aplicación, y tiene una capacidad de de 8K palabras de 14 bits cada una, esta memoria está divida en 4 páginas de 2K palabras (Cf. [Angulo, 2000]). En la Figura B.6 , se observa la organización de la memoria tipo FLASH de los PIC16F877, que está dividida en las 4 páginas con sus correspondientes vectores de reset y de interrupciones (Cf. [Angulo, 1999]).
Figura B.6: Organización de la memoria FLASH de los PIC16F877 ([Microchip, 2001]).
Memoria de Datos RAM La memoria de datos tiene posiciones implementadas en RAM, donde se alojan registros operativos fundamentales en el funcionamiento del procesador y en el manejo de los periféricos. La RAM estática consta de cuatro bancos con 128 bytes cada uno, en estos se ubican registros específicos que gobiernan al procesador y los recursos (Cf. [Angulo, 2000]). En la Figura B.7 se muestra la distribución de la memoria RAM en los cuatro bancos.
Figura B.7: Distribución de la memoria RAM en los cuatro bancos ([Microchip, 2001]).
88
B.2. Componentes del Sistema Mínimo.
El PIC16F877 tiene 368 bytes de capacidad y para seleccionar el banco al que se desea acceder en la RAM se emplean los bits 5 y 6 del registro de estado del PIC, denominados RP0 y RP1 respectivamente (Ibidem).
La Tabla B.2.2 muestra el código para acceder a los diferentes bancos de la memoria RAM. BANCO 0 1 2 3
RP1 0 0 1 1
RP0 0 1 0 1
Tabla B.1: Bits de selección de banco en el registro de estado.
Palabra de configuración. La palabra de configuración es una posición reservada de la memoria de programa FLASH, que ocupa la dirección 2007h y que sólo es accesible durante la programación del PIC, en el cual el valor de sus bits determina algunas características fundamentales (Cf. [Angulo, 2000]). En el caso de los microcontroladores PIC16F877 la palabra de configuración se compone de diversos bits donde se activan o desactivan sus características como: Código de protección de memoria de programa (CP1:CP0). Modo Depurador en circuito (DEBUG). Permiso de escritura en la memoria FLASH (WRT). Código de protección de la memoria EEPROM (CPD). Permiso para programación en bajo voltaje (LVP). Permiso para reset por baja tensión (BODEN). Permiso para el Timer de conexión de alimentación (PWRTE). Permiso de Timer del perro guardián (WDTE). Tipo de oscilador (FOSC1:FOSC0).
B. Sistemas Mínimos.
89
Memoria de datos EEPROM Esta memoria es de tipo no volátil de 256 bytes en este microcontrolador. Soportan hasta 100,000 operaciones de grabado/borrado del microcontrolador. Tipos de osciladores. Los PIC permiten hasta 8 diferentes modos de implementación del oscilador. El usuario puede seleccionar alguno de estos modos programando 3 bits de configuración del dispositivo denominados: FOSC2, FOSC1 y FOSC0. En algunos de estos modos el usuario puede indicar que se genere o no una salida del oscilador (CLKOUT) a través de una línea de entrada/salida. Los modos de operación se muestran en la siguiente lista:
LP que involucra frecuencia baja y bajo consumo de potencia. XT (cristal) es un resonador cerámico externo para media frecuencia. HS que significa alta velocidad y alta potencia (cristal/resonador). RC que involucra una oscilador con una resistencia y un capacitor. En el presente trabajo de tesis, el oscilador utilizado es un cristal resonador de 20Mhz para lo cual se utilizaron los capacitores recomendados para este oscilador de 22.
B.2.3.
Registros generales del Microcontrolador PIC16F877.
Registros de estado. Para gobernar el funcionamiento de los recursos de los PIC existe un conjunto de registros específicos cuyos bits soportan el control de los mismos. Dichos registros están ubicados en las primeras posiciones de cada banco de la memoria de datos RAM (Cf. [Angulo, 2000]). En la Figura B.7 , se muestra el contenido de la memoria de datos RAM del PIC16F877 y la denominación y situación de los registros específicos junto a los de propósito general. Registro de estado (STATUS). Éste es el registro más usado de todos, dado que sus bits están destinados a controlar las funciones vitales del procesador. Por este motivo, está duplicado en las cuartas
90
B.2. Componentes del Sistema Mínimo.
posiciones de cada banco. Los tres bits de menor peso son los señalizadores de ciertas condiciones en las operaciones lógico-aritméticas y los tres bits de más peso se emplean para seleccionar el banco de la RAM al que se desea acceder. La Tabla B.2 muestra la estructura interna del registro (Cf. [Angulo, 2000]). Bit 7 IRP
Bit 6 RP1
Bit 5 RP0
Bit 4 TO#
Bit 3 PD#
Bit 2 Z
Bit 1 DC
Bit 0 C
Tabla B.2: Estructura interna del registro de estado.
Registro de opciones (OPTION_REG). El registro OPTION_REG contiene varios bits de control para configurar el divisor de frecuencia del Timer 0 y del perro guardián, las interrupciones externas INT y las resistencias del pull-up del puerto B (Cf. [Microchip, 2001]). El registro OPTION_REG toma el valor 1111 1111 en cualquier tipo de reinicialización que se produzca. Bit 7 RBPU
Bit 6 INTEDG
Bit 5 TOCS
Bit 4 TOSE
Bit 3 PSA
Bit 2 PS2
Bit 1 PS1
Bit 0 PS0
Tabla B.3: Estructura interna del registro de opciones.
B.2.4.
Registros para control de interrupciones.
Los PIC16F877 tienen 14 causas que pueden originar una interrupción, la mayoría de los recursos o periféricos de que dispone los PIC16F877 son capaces de ocasionar éstas si se programan adecuadamente los bits de los registros (Cf. [Angulo, 2000]). Las causas que provocan una interrupción en el PIC16F877, son las siguientes: 1. Desbordamiento del Timer 0. 2. Desbordamiento del Timer 1. 3. Desbordamiento del Timer 2. 4. Activación de RBO/INT.
B. Sistemas Mínimos.
91
5. Captura o comparación en el módulo CCP1 6. Captura o comparación del módulo CCP2. 7. Transferencia en el puerto serie síncrona. 8. Colisión de bus del puerto serie síncrona. 9. Fin de la transmisión en el USART. 10. Fin de la recepción en el USART. 11. Fin de la conversión en el convertidor A/D. 12. Transferencia en la compuerta paralela esclava. 13. Cambio de estado en los 4 bits más significativos del puerto B. 14. Finalización en la escritura de un byte en la EEPROM. Registro de control de interrupciones (INTCON). Este es un registro de lectura/escritura que, para facilitar su acceso, se halla duplicado en los cuatro bancos de la memoria. Tiene la misión de controlar las interrupciones provocadas por el Timer 0, controlar las interrupciones dado un cambio de estado en los 4 bits más significativos del puerto B y por activación del bit RB0/INT (Ibidem.). En la Tabla B.4 se muestra el registro interno del registro de interrupciones INTCON. Bit 7 GIE
Bit 6 PEIE
Bit 5 TMR0IE
Bit 4 INTE
Bit 3 RBIE
Bit 2 TMROIF
Bit 1 INTF
Bit 0 RBIF
Tabla B.4: Estructura interna del registro de interrupciones.
Registro de permiso de interrupciones 1 (PIE1). Contiene los bits que permiten o prohíben las interrupciones provocadas por los periféricos internos del microcontrolador y que no estaban contempladas en el INTCON. Para que cumplan su función los bits del PIE1 es necesario que PEIE está activado o en 1 (Ibidem.). Este registro cuenta con ocho bits, cada bit del registro PIE1 tiene un propósito en general: 1. PSPIE: permiso de interrupción para la puerta paralela
92
B.2. Componentes del Sistema Mínimo.
2. ADIE: permiso de interrupción para el conversor A/D al finalizar la conversión. 3. RCIE: permiso de interrupción para el receptor del USART cuando el buffer se llena. 4. TXIE: permiso de interrupción para el transmisor del USART cuando el buffer se llena. 5. SSPIE: permiso de interrupción para un puerto serie síncrona. 6. CCP1IE: permiso de interrupción para el módulo CCP1 cuando se produce una captura o comparación. 7. TMR2IE: permiso de interrupción para el Timer 2 con su desbordamiento. 8. TMR1IE: permisos de interrupción para el Timer 1 con su desbordamiento. En la Tabla B.5 se puede observar la estructura interna de este registro. Bit 7 PSPIE
Bit 6 ADIE
Bit 5 RCIE
Bit 4 TXIE
Bit 3 SSPIE
Bit 2 CCP1IE
Bit 1 TMR2IE
Bit 0 TMR1IE
Tabla B.5: Estructura interna del registro PIE1.
Registro de señalizador de interrupciones (PIR1). En este registro, los bits actúan de señalizadores desde el momento en el que se origina la interrupción, independientemente de si está permitida o prohibida en correspondencia con el registro PIE1 (Ibidem.). La Tabla B.2.4 muestra la estructura interna del registro. Bit 7 PSPIF
Bit 6 ADIF
Bit 5 RCIF
Bit 4 TXIF
Bit 3 SSPIF
Bit 2 CCP1IF
Bit 1 TMR1IF
Bit 0 TMR1IF
Tabla B.6: Estructura interna del registro PIR1.
B.2.5.
Puertos de entrada y salida.
Los microcontroladores PIC16F877 tienen disponibles cinco puertos de entrada/salida denominados PORTA, PORTB, PORTC, PORTD y PORTE. Todas las líneas de estos puertos son totalmente programables, es decir, pueden ser configuradas para trabajar como entradas o como salidas.
B. Sistemas Mínimos.
93
Puerto A. Este puerto solo dispone de 6 líneas, denominadas RA0-RA5, son bidireccionales y su sentido queda configurado según la programación de los bits del registro TRISA. Si el registro TRISA se programa en uno, las líneas del puerto A quedarán configuradas como entradas, por el contrario si el registro se programa en 0, las líneas del puerto A quedarán como salidas. Las líneas RA0/AN0, RA1/AN1 y RA2/AN2, RA3/AN3 y RA5/AN4 (ver Figura B.4 ) además de líneas de entrada/salida digitales, también pueden actuar como canales 0, 1, 2, 3 y 4 respectivamente, por los que se le puede aplicar una señal analógica al conversor A/D. En este proyecto estas líneas son utilizadas para el convertidor A/D. Por otra parte existen líneas con funciones multiplexadas como la línea RA4/T0CK1, que actúa como entrada/salida digital y como entrada de reloj para el timer 0, y la línea RA5/AN4/SS# que además de entrada/salida digital, se utiliza para seleccionar el modo esclavo cuando se trabaja en comunicación síncrona. Para seleccionar si las líneas del puerto A serán entradas o salidas digitales o como canales de entrada para el conversor A/D, se debe escribir el valor adecuado en el registro ADCON1. Puerto B. Este puerto dispone de ocho líneas bidireccionales y trabaja de forma similar al puerto A, o sea, como entrada/salida digital, cuya función se elige mediante la programación del registro TRISB, al igual que el puerto A con TRISA. Tiene tres registros asociados: 1. PORTB: En este registro los ocho bits que contiene reflejan directamente el estado de las ocho líneas del puerto B: RB0,...,RB7 (ver Figura B.4 ). 2. TRISB: En forma similar a TRISA, al poner un 0 en un bit de TRISB se configura la línea RB correspondiente como salida y al poner un 1 en un bit de TRISB se configura la línea RB correspondiente como entrada. 3. OPTION_REG: El bit 7 de este registro, denominado RBPU es usado para conectar/desconectar una resistencia pull-up conectada a cada línea RB. Poniendo un 0 en este bit, todas las resistencias se conectan. Para desconectar las resistencias pull-up se debe poner este bit en 1, también se desconectan automáticamente cuando la línea correspondiente es configurada como salida.
94
B.2. Componentes del Sistema Mínimo.
Puerto C. Consta de 8 líneas bidireccionales (ver Figura B.4 ), cuyo sentido se configura mediante el registro TRISC, al igual que el puerto A y el puerto B. Todas las líneas de este puerto además de ser entradas/salidas digitales, tienen multiplexadas diferentes funciones, entre las más destacadas y utilizadas en este proyecto de tesis se mencionan: RC0/T1OS0/T1CK1: actúan también como salida del Timer 1 o como entrada de impulsos para el Timer 1. RC1/T1OS1/CCP2: trabaja como entrada al oscilador del Timer 1. RC6/TX/CK: una de las líneas más importantes y utilizadas ya que se usa como línea de transmisión en el USART. RC7/RX/DT: utilizada en este proyecto para la recepción del USART. Cuando se habilita la línea del periférico respectivo puede ser ignorada la configuración de TRISC, de hecho, algunos periféricos configuran la línea como salida mientras que otros la configuran como entrada (Cf. [Dumetri, 2002]). Puerto D. Este puerto D dispone de 8 líneas bidireccionales, cuyo sentido se configura con el registro TRISD al igual que el puerto A, B y C. En éste todas las líneas disponen en la entrada de un Dispador tipo Schmitt (ver Figura B.4 ). Además de usar las líneas como entradas/salidas digitales, implementan un puerto paralelo esclavo de 8 líneas (PSP). Para que funcionen como puerto de comunicación paralelo, se debe poner el bit PSPMODE=1 (Cf. [Angulo, 2000]). Puerto E. Sólo posee 3 líneas configurables como entradas o salidas mediante los 3 bits menos significativos del registro TRISE. Se puede tener acceso a sus líneas mediante los 3 bits menos significativos del registro PORTE. Estas líneas están compartidas con el convertidor analógico/digital, por ello, antes de usarlas deberán ser configuradas como entradas/salidas digitales o analógicas, según se desee en forma similar a como se hizo con el puerto A, usando el registro de configuración ADCON1 (Cf. [Dumetri, 2002]).
B. Sistemas Mínimos.
B.2.6.
95
Registros de los temporizadores.
Registro de temporizador del Timer 1 (TMR1). El PIC16F877 dispone de un conjunto de tres temporizadores: TMR0, TMR1 y TMR2. El Timer 1 se caracteriza por tener un contador/temporizador de 16 bits y por ser de lectura y escritura. Se puede seleccionar el tipo de reloj a utilizar (reloj interno o externo) y cuenta con interrupción opcional por desbordamiento de FFFFh hasta 0000h (Cf. [Angulo, 2000]). El Timer 1 es el único temporizador/contador ascendente de 16 bits, por lo que requiere de dos registros concatenados: TMR1H:TMR1L, que son los encargados de almacenar el valor del conteo en cada momento. Dicho valor evoluciona desde 0000h hasta FFFFh, instante en el cual se activa el señalizador TMR1IF y regresa al valor inicial. También si se desea se puede provocar una petición de interrupción (Ibidem.). En el modo temporizador del Timer 1, el valor en TMR1H:TMR1L se incrementa con cada ciclo de instrucción (Fosc/4). En la Figura B.8 se muestra el diagrama por bloques del Timer 1 en el que destacan las diversas señales de control y el predivisor de frecuencia.
Figura B.8: Esquema interno de los principales bloques del timer 1 ([Microchip, 2001]).
Registro de control del Timer 1 (T1CON). El registro que gobierna el funcionamiento del Timer 1 es el T1CON ubicado en el banco 1 de la memoria de datos RAM (ver Figura B.7 ). La estructura interna se observa en la Tabla B.7.
T1CKPS1
T1CKPS2
T1OSCEN
T1SYN
TMR1CS
TMR1ON
Tabla B.7: Estructura interna del registro T1CON. El bit TMR1ON (bit 0) gobierna el permiso o la prohibición del funcionamiento del Timer 1, en caso de poner el bit en cero, el Timer 1 no funcionará. El bit TMR1CS selecciona la fuente de los impulsos de conteo, si vale 0 se selecciona el reloj interno (Fosc/4), si vale 1 es el reloj externo el que se aplica en las líneas RC0 y RC1. En ambos casos el registro TRISC carece de significado, ya que una o ambas líneas RC1
96
B.2. Componentes del Sistema Mínimo.
y RC0 no pueden actuar al mismo tiempo como entrada de impulsos y como líneas de entrada/salida (Cf. [Angulo, 2000]). El predivisor de frecuencia (preescaler) es un simple divisor de frecuencia de los impulsos que se aplican al TMR1 por 1, 2, 4 u 8. El rango de división lo eligen los bits T1CKPS1 y T1CKP0 según la Tabla B.8.
T2CKPS1 0 0 1 1
T2CKPS0 0 1 0 1
RANGO DEL PREDIVISOR 1:1 1:2 1:4 1:8
Tabla B.8: Bits para selección del rango del predivisor.
El Timer 1 puede generar una petición de interrupción cuando se produce el desbordamiento del contador, es decir cuando se pasa de FFFFh a 0000h. En esta situación automáticamente la bandera TMR1IF (bit 0 del registro PIR1) cambia su valor a 1. El permiso o prohibición de la producción de interrupción del Timer 1 está controlada por el TMR1IE del bit 0 del registro PIE1 (Cf. [Angulo, 2000]).
B.2.7.
Registros de comunicación serial.
Este microcontrolador dispone de un módulo transmisor denominado USART (Universal Synchronous Asynchronous Receiver Transmitter) capaz de soportar la comunicación serial síncrona y asíncrona. El USART puede configurarse de modo asíncrono full dúplex el cual que puede comunicar dispositivos periféricos como pc, o como un sistema síncrono half duplex para comunicarse con otros microcontroladores, dispositivos periféricos como los convertidores A/D, los circuitos integrados D/A, etc. (Cf. [Microchip, 2001]). La configuración asíncrona que es la que se realizó en este trabajo de tesis, se ve con mayor detalle (c.f. [America Saldaña Sánchez, 2006]. Registro de estado del transmisor (TXSTA). Este registro tiene la función de controlar la transmisión serial y su estado, se conforma de 8 bits y sus funciones van desde elegir el tipo de transmisión hasta la velocidad de transmisión. La función de cada bit se describe a continuación:
B. Sistemas Mínimos.
97
Bit 7: CSRC. Este bit tiene la función de seleccionar la fuente de reloj para usarse en transmisión síncrona, y si la transmisión elegida es transmisión asíncrona no importa el valor que se le asigne. Bit 6: TX9. Cuando este bit está en estado activo (igual a 1) la transmisión será a 9 bits, mientras que cuando se encuentre en estado inactivo (igual a 0), la trasmisión se hará a 8 bits. Bit 5: TXEN. La función de este bit es habilitar la transmisión, esto mientras el bit sea igual a 1, y cuando se encuentre igual a 0 la transmisión quedará desactivada. Bit 4: SYNC. Este bit selecciona el tipo de transmisión que ha de llevarse a cabo, si el bit es igual a 1 el tipo de transmisión será síncrona, si el bit es igual a 0 el tipo será asíncrona. Bit 3: no se encuentra implementado. Bit 2: BRGH. Éste bit selecciona la velocidad de la tasa de baudios a la que se ha de transmitir el byte, éste no se aplica para transmisión síncrona. En transmisión asíncrona, se puede elegir alta o baja velocidad, poniendo a 1 ó 0 respectivamente este bit. Bit 1: TRMT. Éste es el bit de estado del registro de desplazamiento del transmisor (TSR), cuando se encuentra en 1, significa que el TSR se encuentra vacío y si se encuentra igual a 0 significa que el TSR está lleno. Bit 0: TX9D. Este es el noveno bit de datos cuando se elige transmitir a 9 bits, también se puede emplear como bit de paridad. La estructura interna del registro TXSTA se muestra en la Tabla B.9.
Bit 7 CSRC
Bit 6 TX9
Bit 5 TXEN
Bit 4 SYNC
Bit 3 -
Bit 2 BRGH
Bit 1 TRMT
Tabla B.9: Estructura interna del registro TXSTA.
Bit 0 TX9D
98
B.2. Componentes del Sistema Mínimo.
Registro de estado del receptor (RCSTA). Consta de 8 bits cuya función es configurar el estado y el control del receptor en la transmisión serial, su configuración interna se muestra en la Tabla B.10 y las funciones de cada bit se describen a continuación:
Bit 7: SPEN. Éste es el bit bit de habilitación del puerto serie mientras se encuentre en 1, se habilita el puerto serie (configura los pines RC7/RX/DT y RC6/TX/CK para el puerto serie) y si se encuentra en 0 deshabilita el puerto serie. Bit 6: RX9. Este bit habilita la recepción de 9 u 8 bits poniendo a 1 ó 0 respectivamente. Bit 5: SREN. Este bit habilita la recepción única en el modo asíncrono su valor no importa, en modo síncrono maestro mientras su valor sea 1 habilita una recepción única y cuando su valor sea 0 deshabilita la recepción única. Bit 4: CREN. Es un bit de habilitación de recepción continua tanto para la transmisión síncrona como para la asíncrona. Bit 3:ADDEN. Este bit tiene la función de habilitar o deshabilitar la detección de dirección del bit. Si su valor es igual a 1 se habilita la detección de dirección, y si su valor es igual a 0, se deshabilita la detección de dirección. Todos los bits son recibidos y el noveno bit es usan como bit de paridad. Bit 2: FERR. Este bit muestra el estado del error de empaquetamiento si su valor es 1 existe error de empaquetamiento y si se encuentra en 0 significa que no existe error. Bit 1: OERR. Este bit muestra el estado del error por desbordamiento, si su valor sea igual a 0 significa que no existe error. Bit 0: RX9D. En este bit se aloja el noveno bit de datos de recepción ya se puede emplear como bit de paridad
B. Sistemas Mínimos.
Bit 7 SPEN
Bit 6 RX9
99
Bit 5 SREN
Bit 4 CREN
Bit 3 ADDEN
Bit 2 FERR
Bit 1 OERR
Bit 0 RX9D
Tabla B.10: Estructura interna del registro RCSTA.
B.2.8.
Registros del módulo de conversión A/D.
El módulo de conversión Analógico/Digital dispone de 8 líneas en el microcontrolador PIC16F877. A través de las entradas analógicas se aplica la señal analógica a un condensador de captura y retención (sample and hold), que después se introduce en el convertidor. El convertidor de aproximaciones sucesivas da como resultado una palabra de 10 bits. La resolución que tiene cada bit procedente de la conversión, tiene un valor que está en función de la tensión de referencia Vref , de acuerdo con: resolucion = (Vref + − Vref − )/1,024 = Vref /1,024
(B.1)
Así, si la tensión de referencia positiva es 5 Volts y la negativa es tierra (0 Volts), entonces la resolución es de 4.8 mV/bit. El funcionamiento del conversor A/D requiere de la manipulación de cuatro registros: 1. ADRESH (parte alta del resultado de la conversión). 2. ADRESL (parte baja del resultado de la conversión). 3. ADCON0 (registro de control 0). 4. ADCON1 (registro de control 1). En la pareja de registros ADRESH:ADRESL se deposita el resultado de la conversión, que al estar compuesta por 10 bits, solo son significativos 10 de los 16 bits de esa pareja de bytes (Ibidem.). El módulo A/D tiene la posibilidad de justificar este resultado, y la selección de este formato de justificación a la izquierda o derecha se realiza mediante la configuración del registro de control 1 (ADCON1). Los bits restantes (a los 10 de la conversión) se llenan con ceros, estos dos registros cuando el convertidor A/D está en OFF y no se utilizan, pueden utilizarse como dos registros de 8 bits de propósito general (Cf. [Microchip, 2001]). Registro de control 0 para módulo de conversión A/D. El registro ADCON0 controla la operación del convertidor A/D y se encuentra en el banco 0 de la memoria de datos RAM (Ibidem.). El registro ADCON0 consta de 8 bits los cuales se definen a continuación:
100
B.2. Componentes del Sistema Mínimo.
Bits 7-6: ADCS1:ADCS0. Estos bits seleccionan el tipo de reloj para el Convertidor A/D. En la Tabla B.11 se muestra los tipos de reloj disponibles y el dígito que se ha de cargar en éstos bits, al igual que el dato que se ha de cargar en el bit ADCS2 del registro ADCON1. ADCON1 0 0 0 0 1 1 1 1
ADCON0 00 01 10 11 00 01 10 11
Reloj de Conversión Fosc/2 Fosc/8 Fosc/32 FRC Fosc/4 Fosc/16 Fosc/64 FRC
Tabla B.11: Tabla de selección de bits para elegir reloj de conversión.
Bits 5-3: CHS2:CHS0. Estos tres bits tienen la función de seleccionar el canal analógico que se ha de utilizar en el proceso de conversión A/D, respecto a la Tabla B.12. 000 001 010 011 100 101 110 111
Canal de Canal Canal Canal Canal Canal Canal Canal Canal
Conversión 0 (AN0) 1 (AN1) 3 (AN2) 3 (AN3) 4 (AN4) 5 (AN5) 6 (AN6) 7 (AN7)
Tabla B.12: Tabla de selección de canal analógico en el proceso de conversión.
Bit 2: GO/DONE. Este bit indica el estado de la conversión, cuando el bit sea igual a 1 indica que la conversión está en progreso, el cual cambiará automáticamente a 0 por hardware cuando la conversión ha terminado, esto ocurrirá siempre y cuando el bit ADON se encuentre en estado activo.
B. Sistemas Mínimos.
101
Bit 0: ADON. Este bit tiene la función de activar o desactivar el módulo de conversión, cuando el bit se encuentre en 1, el módulo de conversión A/D se enciende y cuando se encuentra en 0 este módulo se encuentra apagado. El convertidor Analógico/Digital no trabajará correctamente con un TAD menor que TAD(mínimo) = 1.6 µs. El usuario deberá cuidar la elección del reloj adecuado para no violar esta limitante. La estructura interna del registro ADCON0 se observa en la Tabla B.13 que ese muestra a continuación. Bit 7 ACS1
Bit 6 ADCS0
Bit 5 CHS2
Bit 4 CHS1
Bit 3 CHS0
Bit 2 GO/DONE
Bit 1 -
Bit 0 ADON
Tabla B.13: Estructura interna del registro ADCON0.
Registro de control 1 para módulo de conversión A/D. Este registro tiene la función de configurar las líneas del puerto A como entradas analógicas o entradas/salidas digitales y su estructura se muestra en la Tabla B.2.8. El bit de menos peso ADFM de este registro selecciona el formato del resultado de la conversión. Si vale 1, los 2 bits más significativos del resultado de la conversión serán alojados en las 2 primeras posiciones del registro ADRESH, dejando las 6 posiciones más significativas en 0, mientras que los siguientes 8 se encontrarán en el registro ADRESL. Y si ADFM es igual a 0, los 8 bits más significativos del resultado se encontrarán en el registro ADRESH y los 2 menos significativos se alojarán en las posiciones 6 y 7 del registro ADRESL, dejando las siguientes 6 igual a 0 (Cf. [Angulo, 2000]). Los restantes 4 bits (PCFG3:PCFG0) de este registro ADCON1, se usan para configurar las líneas de los canales de entrada como entradas analógicas o como entradas/salidas digitales. Bit 7 ADFM
Bit 6 ADCS2
Bit 5 –
Bit 4 –
Bit 3 PCFG3
Bit 2 PCFG2
Bit 1 PCFG1
Bit 0 PCGG0
Tabla B.14: Estructura interna del registro ADCON1.
B.3.
Pantalla de LCD para visualización.
Los módulos LCD están compuestos básicamente por una pantalla de cristal líquido y un circuito microcontrolador especializado el cual posee los circuitos y memorias de
102
B.4. Puerto de comunicación serial RS-232.
control necesarias para desplegar el conjunto de caracteres ASCII, un conjunto básico de caracteres japoneses, griegos y algunos símbolos matemáticos por medio de un circuito denominado generador de caracteres. La lógica de control se encarga de mantener la información en la pantalla hasta que ella sea sobreescrita o borrada en la memoria RAM de datos. La pantalla de cristal líquido está conformada por una ó dos líneas de 8, 16, 20, 24 ó 40 caracteres de 5x7 pixels c/u. Estas pantallas alfanuméricas de cristal líquido, denominadas abreviadamente LCD, constituyen uno de los visualizaciones de mensajes más económicos, prácticos y eficaces. El control de esta pantalla, se realiza con el microcontrolador, en el puerto B disponible en éste.
B.4.
Puerto de comunicación serial RS-232.
Las transmisiones serie se caracterizan por utilizar una única línea para transmitir la información. Esto obliga en el transmisor a convertir los bytes de paralelo a serie para enviar los bits de forma secuencial, por su parte en el receptor la serie de bits recibidos son convertidos de serie a paralelo para reconstruir el byte. Inicialmente el puerto serie se utilizó para conectar la PC y un módem. En esta conexión, a la PC se le denomina DTE (Data Terminal Equipment) y al Módem DCE (Data Communication Equipment). Existen dos tipos posibles de transmisiones serie: síncrona y asíncrona. En las transmisiones asíncronas a cada byte de información a transmitir se le añaden una serie de bits fijos de señalización para marcar el comienzo (bit de arranque o start) y el final de cada byte (bits de parada o stop), esto se explica con más detalle en [America Saldaña Sánchez, 2006]. El DTE puede ser un dispositivo inteligente como una PC o un autómata, mientras que el DCE suele ser un dispositivo no inteligente como un módem, una impresora, etc. Por lo que se estableció la norma RS-232, la cual define una velocidad de transmisión serial de hasta 20 Kbps y longitud máxima de 15 metros; y las señales eléctricas se definen entre +3 y +15 volts para el estado activo (uno lógico) y de -3 y -15 para el estado inactivo (cero lógico), además de que solo permite conectar dos dispositivos para establecer comunicación punto a punto. Actualmente la mayoría de las PC poseen dos puertos serie definidos como COM1 y COM2 a nivel de sistema operativo y utilizan conectores DB9 macho. La ventaja de esta técnica es que es más fácil de implementar, pero una de sus desventajas es que además de cada byte de información se envían tres bits más que no son de información. En este proyecto de tesis se utilizó el registro USART en su modo comúnmente usado asíncrono para comunicar al puerto serial usando el protocolo RS-232 por lo que
B. Sistemas Mínimos.
103
se requirió una interfaz a RS-232 debido a los distintos niveles de voltaje, ya que estos no deben ser conectados directamente a las señales RS-232.
B.4.1.
Convertidor de interfaz RS-232 a RS-485.
Como ya se describió en la sección anterior la norma RS-232 define una comunicación punto a punto serial, pero en el presente proyecto de tesis, se utilizó una comunicación multipunto serial y para ello se debió implentar la norma RS-485. Mientras que la norma RS-232 solo permite enlaces punto a punto entre dos nodos, la norma RS-485 permite enlaces multipunto o multinodo mediante la conexión de un bus de dos hilos entre todos los nodos, para formar una topología física en bus y la longitud máxima sin atenuaciones es de aproximadamente 1200 metros a una velocidad de 90Kbps a velocidad máxima de enlace de 10Mbps. El sistema mínimo tiene disponible el puerto de comunicación serial del microcontrolador (USART) basado en la norma RS-232 al cual se le interconecta un módulo de conversión de norma RS-232 a RS-485, mediante circuitos integrados MAXIM 233. Con esta conversión, se obtienen todas las ventajas que la norma RS-485 ofrece, los cuales se ven con mayor detalle en [America Saldaña Sánchez, 2006]. Como ya se mencionó, los sistemas mínimos deben estar comunicándose con la Unidad Central o PC, para lo cual se utilizó un convertidor de norma RS-485 a RS232, norma definida para comunicación serial en computadoras, utilizando el circuito integrado MAXIM 485. La figura B.9 muestra la configuración del MAXIM 485. Figura B.9: Configuración del MAXIM 485.
De esta manera, en el presente proyecto de tesis, mediante dispositivos que se interconectan a los sistemas mínimos propuestos y mediante la configuración de cada uno de los registros antes mencionados, fue posible la realización de la comunicación serial distribuida, cuya configuración se explicará con mayor detalle en los capítulos siguientes.
104
G L O S A R I O 3D. - Tres dimensiones (X,Y,Z). Se refiere a las que un objeto tiene largo, ancho y alto. 3DSMAX. - Software de diseño en 3D. Compañía Disscret. ACTIVEX. - Lenguaje desarrollado por Microsoft para la elaboración de aplicaciones exportables a la red y capaces de operar sobre cualquier plataforma a través, normalmente, de navegadores WWW [C.F. [Espinosa, 2004]]. APPLET. - Una manera de incluir programas complejos en el ámbito de una página web. Estos applets se programan en Java y por tanto se benefician de la potencia de este lenguaje para la Red. AUTHORING TOOL.- Actividad de crear contenido para la web en páginas en formato HTML. El administrador de un sitio web o es el Webmaster, en general, el responsable de la autoría de su contenido. AVATAR.- Representación gráfica de un usuario dentro de un ambiente virtual. CLASS. - Extensión de archivo, generada a partir de una compilación en java. CORTONA SDK. - Referencia Técnica de Parallel Graphics, kit de programación de software. Cortona Software Development Kit. BROWSERS. - (Navegador): Programa usado para visualizar documentos WWW en Internet. Los más utilizados en estos momentos son Netscape e Internet Explorer. HTML. - Conocidos comúnmente como visualizador web. Porque reconocen el código HTML y lo visualizan. Con extensión HTML, HTM. VRML. - Reconocen el código VRML. Con extensión en wrl, wrz. X3D. - Reconocen el código X3D. JAVA. - Ejecutan los programas en Java. Con extension Class. FLASH. - Ejecutan las animaciones en Flash. Con extensión SWF. DEF. - Comando en la programación de VRML para asignación de nombres a los nodos.
Siglario
105
EAI. - External Authoring Interface. For communication between a VRML world and its external environment an interface between the two is needed. This interface is call an External Authoring Interface and it defines the set of functions on the VRML browser that the external environment can perform to affect the VRML world. To understand the relationship between this interface and the rest of the VRML environment please see Anatomy of a VRML Browser. EMBEBED. - Objeto incrustado. Este elemento compatible con casi todos los exploradores, aunque no es estándar, especifica un objeto, normalmente un elemento de multimedia, para incrustarlo en un documento de HTML. ESTOMAS. - Abertura diminuta que aparece en la epidermis de los órganos verdes de las plantas superiores. GROUP. - Nodo VRML que puede agrupar en un conjunto. HTML. - El HTML, acrónimo inglés de Hyper Text Markup Language (lenguaje de marcación de hipertexto), es un lenguaje de marcas diseñado para estructurar textos y presentarlos en forma de hipertexto, que es el formato estándar de las páginas web [Espinosa, 2004]. Gracias a Internet y a los navegadores del tipo Explorer o Netscape, el HTML se ha convertido en uno de los formatos más populares que existen para la construcción de documentos. HTTP. - Hyper Text Transfer Protocol. Protocolo de Transferencia de Hipertexto. JAVA. - Java es una plataforma de software desarrollada por Sun Microsystems, de tal manera que los programas creados en ella puedan ejecutarse sin cambios en diferentes tipos de arquitecturas y dispositivos computacionales. JAVASCRIPT. - JavaScript es un lenguaje interpretado orientado a las páginas web, con una sintaxis semejante a la del lenguaje Java. JSR. - Especificación de peticiones de Java. MAQUINA VIRTUAL DE JAVA. - La máquina virtual de Java (en inglés Java Virtual Machine, JVM) es un programa ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial(el Java bytecode), el cual es generado por el compilador del lenguaje Java. MAYA.- Software de diseño en 3d. Compañía Alias Wavefront. MICROCLIMA. - Clima a que están sometidos en realidad los vegetales de los diferentes estratos que constituyen una comunidad. Conjunto de condiciones climáticas
106
Siglario
existentes en un área pequeña, definida con precisión, o en sus inmediaciones. NATIONAL INSTRUMENTSr LABVIEWr. - Herramienta de control y prueba de programas de instrumentación virtual. NODE. - Un archivo VRML contiene nodos que describen formas y propiedades en un mundo virtual. Esto es construido por bloques de VRML. Cada nodo describe individualmente formas, colores, interpolaciones y así sucesivamente. Los nodos generalmente contienen. El tipo de nodo (requerida). Un conjunto de llaves (requerido). Algún numero de campos (opcional) y valores definidos de los atributos del nodo con sus llaves o corchetes según sea el caso. Las llaves o los corchetes agrupan toda la información del campo del nodo. Una forma o propiedad definida por el nodo y la relación de sus campos son considerado una simple entidad en el mundo virtual. PLUG-IN. - Es un programa que se conecta a un programa anfitrión para extender la funcionalidad de este último. El programa huésped tiene ciertas capacidades que el anfitrión no tiene. Como Cortona Player, es un Plug-In, que permite al browser Web, como Internet Explorer, presentar al usuario escenas VRML. PROGRAMACIÓN POR BLOQUES. - Es la nueva generación de la programación en la cual se utilizan bloques. Cada bloque es un método o función, condición, ciclo y tipos de datos, donde la programación se llama a cabo enlazando los bloques por medio de un cableado y dando alguna propiedad a cada bloque para su configuración. THREAD. - Muchos lenguajes de programación (como Java), y otros entornos de desarrollo soportan los llamados hilos o hebras (en inglés, threads). Los hilos son similares a los procesos en que ambos representan una secuencia simple de instrucciones ejecutada en paralelo con otras secuencias. Los hilos son una forma de dividir un programa en dos o más tareas que corren simultáneamente. TIPO DATOS Y EVENTOS VRML EVENTINSFTIME. - Evento de entrada de tipo de tiempo [Consortium, 1998]. EVENTINSFVEC3F. - Evento de entrada de tipo vector flotante. EVENTINMFCOLOR. - Evento de entrada de tipo color. EVENTINMFSTRING. - Evento de entrada de tipo cadena. SFTIME. - Tipo de datos del tiempo. SFVEC3F. - Tipo de datos de vector flotante. MFCOLOR. - Tipo de datos de Material de colores en flotante.
Siglario
107
MFSTRING. - Tipo de datos de cadenas. TRANSFORM. - El nodo Transform crea un nuevo sistema de coordenadas relativo para este nuevo padre del sistema coordenado. Las formas creadas están dentro de un hijo del nodo transform construido de un nuevo sistema coordenado relativamente del sistema coordenado del origen. VRML. -(acrónimo del inglés Virtual Reality Modeling Language) - formato de archivo normalizado que tiene como objetivo la representación de gráficos interactivos tridimensionales; diseñado particularmente para su empleo en la web. Consiste en un formato de fichero de texto en el que se especifican los vertices y las aristas de cada polígono tridimensional, además del color de su superficie. USE. - Una vez definido un nodo con la palabra DEF, se puede hacer uso de este nodo otra vez con el mismo archivo del mundo virtual por el precedente del nombre del nodo utilizando la palabra USE. VI. - Virtual Instrumentation. Extension de archivos de la programación por bloques de National Instruments de LabVIEWr. Virtual Instruments ó Instrumentos Virtuales debido a que en apariencia y operación imitan a los instrumentos físicos, como multímetros u osciloscopios. W3C. - Consorcio Word Wide Web (W3C), es una asociación internacional formada por organizaciones miembros del consorcio, personal y el público en general, que trabajan conjuntamente para desarrollar estándares Web. La misión del W3C es: Guiar la Web hacia su máximo potencial a través del desarrollo de protocolos y pautas que aseguren el crecimiento futuro de la Web. WIRED. - Hilo que interconecta laso bloques que sirven para programar sistemas de control en LabVIEWr de National Instrumentsr. WRL. - Extensiones de los archivos mundos virtuales en VRML 2.0 WRZ. - Extensiones de los archivos mundos virtuales en VRML 2.0 en formato comprimido. WWW. - World Wide Web. Es la colección mundial de sitios Web, los cuales se comunican a través de Internet. X3D. - Dialecto XML para representaciones 3D basado en VRML.