Vous êtes sur la page 1sur 311

UNIVERSIDAD POLITCNICA SALESIANA

SEDE GUAYAQUIL


FACULTAD DE INGENIERAS

Proyecto Final previo a la obtencin del ttulo de:

INGENIERO DE SISTEMAS

Oscar Michael Santistevan Guerrero

INGENIERO ELECTRNICO

Rubn Armando Puma Rodrguez

Roger Manuel Crdova Castillo

TEMA:
CONTROL INDUSTRIAL POR DISPOSITIVOS MVILES.

AUTORES


DIRECTOR

Ing. Ral lvarez.

Guayaquil, Agosto 7 del 2008

I

A U T O R A



Las ideas y contenidos expuestos en el presente proyecto, son de exclusiva
responsabilidad de los autores.





f.......................................................
Roger Manuel Crdova Castillo

f.......................................................
Rubn Armando Puma Rodrguez

f.......................................................
Oscar Michael Santistevan G.



Guayaquil, Agosto 7 del 2008

II


D E D I C A T O R I A


Al Ser Supremo que me inspiro en esta
larga y difcil vida estudiantil, a mis
queridos padres por sus principios, valores
y apoyo incondicional, a mis hermanas, y
aquel ser que me ense y me ensea a salir
adelante siempre.
Para todos ellos dedico este pequeo paso
en mi vida profesional.
Roger

Este trabajo va dedicado con gran gratitud a todas
aquellas personas que en su momento supieron
apoyarme en mi fase estudiantil as como a mi
madre que es pilar fundamental y motivo de
superacin para la culminacin de mi carrera, a
Dios que es el dador de sabidura y a aquella
persona especial que siempre estuvo y se
mantiene junto a m.

Ruben


A mi querida madre.
A mi esposa quien incondicionalmente me brinda
todo su apoyo.

Oscar




III




A G R A D E C I M I E N T O







A todo ese cuerpo docente con espritu salesiano que
entregaron incondicionalmente su sabidura, para
formarnos como personas de bien, y grandes
profesionales.


Roger Crdova C.
Rubn Puma R.
Oscar Santistevan G.






IV

CONTENIDO.
DECLARATORIA DE RESPONSABILIDAD
DEDICATORIA
AGRADECIMIENTO
NDICE GENERAL
NDICE DE FIGURAS
NDICE DE TABLAS
1.- FUNDAMENTOS Y CONOCIMIENTOS GENERALES DEL HARDWARE Y
COMUNICACIONES.
2.- HERRAMIENTAS DE DESRROLO PARA DISPOSITIVOS MVILES.
3.- DESARROLLO DEL PROYECTO: CONTROL INDUSTRIAL POR
DISPOSITIVOS MVILES.
4.- BIBLIOGRAFA
5.- ANEXOS
6.- VOCABULARIO TCNICO













V

NDICE GENERAL:
1. CAPTULO I:
Fundamentos y Conocimientos Generales de Hardware y Comunicacin.
1.1 Introduccin. ....................................................................................................... 1
1.1.1 Puerto Paralelo. ............................................................................................ 2
1.1.1.1 Historia. ................................................................................................. 2
1.1.1.2 Evolucin .............................................................................................. 2
1.1.1.3 Registro del puerto paralelo. ............................................................... 4
1.1.1.4 Esquema interno del puerto paralelo. .................................................... 5
1.1.1.5 Conector del puerto paralelo. ................................................................ 5
1.1.1.6 Funcionamiento ..................................................................................... 6
1.1.2 Puerto Serie. ................................................................................................. 7
1.1.2.1 Historia. ................................................................................................. 9
1.1.2.2 Registro del puerto serie. ................................................................... 10
1.1.2.3 Conector del puerto serial. .................................................................. 10
1.1.2.4 Funcionamiento ................................................................................... 11
1.1.2.4.1 Formas de transmisiones serie: ..................................................... 12
1.1.2.4.2 Servicios BIOS de puerto serie .................................................... 14
1.1.2.5 Caractersticas Elctricas. ................................................................... 15
1.1.2.6 Estndares ........................................................................................... 16
a.- Estndar RS-422 ..................................................................................... 16
b.- Estndar RS-485 .................................................................................... 17
1.1.2.7 Protocolos. ........................................................................................... 18
1.1.2.7.1 Protocolos Industriales: ................................................................ 18
a.- Protocolos ASCII. ............................................................................... 19
b.- Protocolo HART ................................................................................. 20
c.- Protocolo Modbus ............................................................................... 21
d.- Protocolo Bristol BSAP ...................................................................... 23
1.1.2.7.2 Protocolos de Comunicacin. ....................................................... 24
a.- Protocolo BSC .................................................................................... 24
b.- Protocolo DDCMP ............................................................................. 25
c.- Protocolo HDLC ................................................................................. 26
1.1.3 Puerto USB. ............................................................................................... 26
1.1.3.1 Historia del puerto USB ...................................................................... 29

VI

1.1.3.2 Caractersticas generales del USB ..................................................... 31
a.- Fcil uso para los usuarios: .................................................................... 31
b.- Flexibilidad ............................................................................................ 31
c.- Ancho de banda iscrono ....................................................................... 31
d.- Robustez ................................................................................................. 32
e.- Implementacin de bajo coste ................................................................ 32
1.1.3.3 Versiones del USB ............................................................................. 32
a.- Versin 1.0 ............................................................................................. 32
b.- Versin 1.1 ............................................................................................. 33
c.- Versin 2.0 ............................................................................................. 34
d.- Versin USB OTG ................................................................................. 36
e.- Versin 3.0 ............................................................................................. 38
1.1.3.4 Topologa del bus ............................................................................... 39
1.1.3.4.1 La capa fsica ............................................................................... 40
a.- El host USB ........................................................................................ 41
b.- El controlador del host........................................................................ 42
c.- Dispositivos USB................................................................................ 43
1.1.3.4.2 La capa lgica .............................................................................. 45
1.1.3.4.3 La relacin "Software del cliente-funcin" ................................ 46
1.1.3.5 Tipos de transferencias ........................................................................ 46
a.- Transferencias de control ....................................................................... 47
b.- Transferencias iscronas ........................................................................ 48
c.- Transferencias de interrupcin ............................................................... 48
d.- Transferencias de bultos ("Bulk") .......................................................... 49
1.1.3.6 Parte Elctrica del USB. ...................................................................... 49
a.- Identificacin de la velocidad del dispositivo ........................................ 49
b.- Codificacin de datos ............................................................................. 50
c.- Relleno de bits ........................................................................................ 50
d.- Sync ........................................................................................................ 50
e.- EOP ("End Of Packet") .......................................................................... 51
1.1.3.7 Parte Mecnica del USB. ................................................................... 51
a.- Cable estndar de quita y pon................................................................. 52
b.- Cable fijo de velocidad alta y media ...................................................... 52
c.- Cable fijo de velocidad baja ................................................................... 53

VII

1.1.3.8 Icono USB. ......................................................................................... 53
1.1.4 Radio Frecuencia. ...................................................................................... 53
1.1.4.1 El Espectro Electromagntico ............................................................. 54
1.1.4.2 Redes Inalmbricas ............................................................................. 55
1.1.4.2.1 Modo Ad Hoc ............................................................................... 57
1.1.4.3 Mdulos de Radio Frecuencia ............................................................. 57
1.1.5 Micro controladores. .................................................................................. 59
1.1.5.1 Historia ................................................................................................ 60
1.1.5.2 Partes de un micro controlador ........................................................... 60
1.1.5.3 Aplicaciones ........................................................................................ 61
1.1.5.4 Volmenes de Ventas. ......................................................................... 63

2. CAPTULO II:
H He er rr ra am mi ie en nt ta as s d de e d de es sa ar rr ro ol ll lo o p pa ar ra a d di is sp po os si it ti iv vo os s m m v vi il le es s. .
2.1 Introduccin al J 2ME ....................................................................................... 64
2.2 Configuracin ................................................................................................... 64
2.3 Perfiles .............................................................................................................. 65
2.4 MIDLet ............................................................................................................. 66
2.5 Herramienta Netbeans ...................................................................................... 67
2.5.1 Caractersticas del Netbeans 6.0 ................................................................ 67
2.5.2 Ms fcil instalacin y la actualizacin. .................................................... 69
2.5.3 Swing GUI desarrollo ................................................................................ 70
2.5.4 Perfiles. ...................................................................................................... 71
2.6 Web y J ava EE. ................................................................................................ 72
2.7 Mobility ............................................................................................................ 74
2.8 SOA .................................................................................................................. 75
2.9 UML. ................................................................................................................ 77
2.10 Visual Biblioteca API. .................................................................................... 81
2.11 Dispositivos Mviles ...................................................................................... 81
a.- Computadoras de Mano ................................................................................. 81
b.- Telfonos Celulares ....................................................................................... 81
2.11.1 Computadoras de Mano ........................................................................... 81
2.12 WIFI ............................................................................................................... 83
2.12.1 Seguridad WIFI........................................................................................ 84

VIII

a.- Open Autentication. .................................................................................. 84
b.- Shared Key Authentication. ....................................................................... 84
c.- Validacin de estaciones basada en direccin MAC ................................. 85
2.12.2 WEP ......................................................................................................... 85

3. CAPTULO III:
Desarrollo del Proyecto Control Industrial por dispositivos mviles. .
3.1 Antecedentes .................................................................................................... 86
3.2 Elementos de un sistema de control ................................................................. 86
3.3 Motivacin. ....................................................................................................... 88
3.4 Relaciones. ....................................................................................................... 88
3.5 Objetivos de la Tesis. ....................................................................................... 89
3.5.1 Objetivos Especficos. ............................................................................... 89
3.6 Trabajo Propuesto ............................................................................................. 89
3.7 Nuestro Sistema ................................................................................................ 90
3.7.1 Arquitectura del Sistema. ........................................................................... 91
3.7.2 Descripcin general del proceso. ............................................................... 92
3.8 Hardware del sistema ....................................................................................... 94
3.8.1 Control por USB. (Adquisicin y control de variables discretas.) ............ 94
3.8.1.1 Instalando Drivers .............................................................................. 95
a.- Firmware del PIC. .................................................................................. 95
b.- Firmware del Software. .......................................................................... 97
3.8.1.2 Circuito PIC-USB. .............................................................................. 98
3.8.2 Comunicacin por Radio Frecuencia de las variables. .............................. 99
3.8.2.1 Transmisor para un enlace de RF ...................................................... 100
3.8.2.2 Receptor para un enlace de RF.......................................................... 101
3.8.2.3 Receptor-Emisores en mdulo PC-USB ........................................... 101
3.8.2.4 Receptor-Emisores en mdulo Sistema a Controlar. ........................ 102
3.8.2.5 Detalles Tcnicos HT-12D / HT-12E ............................................... 102
3.8.3 Sistema a controlar................................................................................... 103
3.8.3.1 Tanque Principal. .............................................................................. 104
3.8.3.2 Adquisicin de temperatura. ............................................................. 105
3.8.3.3 Control Bombas y confirmacin bombas. ......................................... 108

IX

3.8.3.4 Sistema Remoto. ............................................................................... 109
3.8.3.5 Variables de Status. ........................................................................... 110
3.8.3.6 Control Principal. .............................................................................. 112
3.8.3.7 Fuente de Alimentacin .................................................................... 113
3.9 Firmware del Sistema .................................................................................... 113
3.9.1 Introduccin a Visual Basic ..................................................................... 113
3.9.1.1 Caractersticas Generales de Visual Basic ........................................ 114
3.9.1.2 Nociones de visual Basic .................................................................. 115
3.9.1.3 Entornos de desarrollo ...................................................................... 115
3.9.2 Descripcin del Sistema........................................................................... 116
3.9.2.1 Descomposicin en subsistemas. ...................................................... 116
3.9.2.2 Diseo de objetos. ............................................................................. 117
3.9.3 Herramientas de desarrollo ...................................................................... 118
3.9.3.1 Configuraciones ODBC Para MySQL .............................................. 118
3.9.3.2 Instalacin de Componentes LabView.............................................. 119
3.9.3.3 Componentes utilizados en el firmware. ........................................... 122
3.9.3.4 Creacin de archivo RPT mediante Crystal Report .......................... 125
3.9.4 Descripcin del entorno de desarrollo en Visual Basic ........................... 128
3.9.4.1 J ustificacin del Firmware y su funcionamiento .............................. 128
3.10 Software y Desarrollo del Mvil. ................................................................. 132
3.10.1 Sistema MCC ......................................................................................... 133
a.- Monitoreo ................................................................................................. 133
b.- Control ..................................................................................................... 133
c.- Chat .......................................................................................................... 133
3.10.2 Arquitectura del Sistema Controlado por Dispositivos Mviles ........... 133
3.10.3 Aplicacin Web, Conexin a la Base de Datos ..................................... 134
3.10.4 Creacin de WebService ........................................................................ 144
3.10.5 Consumir WebServices.......................................................................... 146

4.BIBLIOGRAFA:
4.1 Direcciones Electrnica.....149
4.2 Libros.........150


X


5. ANEXOS:

ANEXO A ................................................................................................................ 151
A.1 Descripcin del captulo ........................................................................... 151
A.2 Introduccin a las interfaces de usuario ................................................... 151
A.3 Descripcin de Interfaces Por mdulos .................................................... 152
A.3.1 Login Acceso De clave ......................................................................... 152
A.3.2 Sistema de Monitoreo ........................................................................... 153
A.3.3 Consulta por Dispositivo....................................................................... 156
A.3.4 Consulta Monitoreo por usuario ........................................................... 157
A.3.5 Consulta Monitoreo de Encendido y Apagado ..................................... 157
A.3.6 Mantenimiento de Usuario .................................................................... 158
A.3.7 Mantenimiento de Dispositivos .............................................................. 158
A.3.8 Eventos de Suceso................................................................................. 159
A.3.9 Eventos de Alertas ................................................................................ 160
A.3.10 Ventana Cascada ................................................................................... 160
A.3.11 Ventana Mosaico .................................................................................. 161
A.3.12 Ventana Vertical ................................................................................... 161
A.3.13 Ayuda del Sistema ................................................................................ 162
A.3.14 Acerca de Carolina ................................................................................ 162

ANEXO B ................................................................................................................ 163
B.1 Descripcin del captulo ........................................................................... 163
B.2 Introduccin a las interfaces de usuario .................................................... 163
B.2.1 Inicio de Sesin de usuario. .................................................................. 164
B.2.2 Monitoreo .............................................................................................. 166
B.2.3 Control................................................................................................... 167
B.2.4 Chat ....................................................................................................... 168

ANEXO C ................................................................................................................ 169
C.1 Descripcin del Mdulo VBMPUSBAPI.bas ................................................ 169
C.2 Descripcin de funcionamiento por formularios ........................................... 175
C.2.1MDI (FRMAIN) ....................................................................................... 178

XI

C.2.2 SISTEMA ................................................................................................ 181
C.2.3 CONSULTAS ......................................................................................... 201
C.2.4 MANTENIMIENTO ............................................................................... 209
C.2.5 EVENTOS............................................................................................... 214
C.2.6 Ayuda ...................................................................................................... 219

ANEXO D ................................................................................................................ 222
D.1 Aplicacin Web ............................................................................................. 223
D.2 Aplicacin Mvil ........................................................................................... 234

ANEXO E ................................................................................................................ 253
E.1 PROGRAMA DEL PIC 18F4550 .................................................................. 254
E.2 PROGRAMA DEL PIC 16F877 .................................................................... 257
E.2 PROGRAMA DEL PIC 16F870 (Celular) .................................................... 263

ANEXO F ................................................................................................................ 266
F.1 Introduccin ................................................................................................... 266
F.2 Anlisis ........................................................................................................... 266
F.3 Modelo Entidad-Relacin .............................................................................. 267
F.4 Direccin de Datos ......................................................................................... 268

ANEXO G ................................................................................................................ 274
G.1 Diagramas DFD ............................................................................................. 274
G1.2 Control de Dispositivos ........................................................................... 275
G.2 Diagramas IPO .............................................................................................. 276
G2.1 Diagrama IPO Detallado Monitoreo ........................................................ 277
G2.2 Diagrama IPO Detallado Control............................................................. 278
G2.3 Diagrama IPO Detallado Chat ................................................................. 279
G.3 Diagramas de J erarqua ................................................................................. 280

ANEXO H.279
H.1 Costo materiales elctricos de maqueta y tubera..........279
H.2 Costos componentes electrnicos..280

XII

H.3 Costo Total.282

5. VOCABULARIO TCNICO:
5.1Glosario283
5.2 Vocabulario.288




















XIII

NDICE DE FIGURAS.
Captulo I.


1.1: Dispositivos conectados por RS-232 hacia una red Ethernet.... 1
1.2 Esquema interno del puerto paralelo5..... 5
1.3 Conector DB-25... 5
1.4 Tlex..... 9
1.5 Conector DB-9. 10
1.6 NS16550D... 11
1.7 Transmisin Sncrona.. 13
1.8 Recepcin Sncrona.. 13
1.9 Transmisin Asncrona... 14
1.10 Recepcin Asncrona.... 14
1.11 Niveles de Voltaje.. 15
1.12 Niveles de Tensin.... 15
1.13 Conexin DB-9.. 16
1.14 Ilustracin de Conexin de equipos RS-232 hacia Ethernet.... 16
1.15 Ilustracin de Conexin de equipos RS-422 a otros equipos... 17
1.16 Conectividad RED RS-485.... 17
1.17 Esquema de conexin de enlace entre PC y PLC.. 18
1.18 Ejemplo prctico de conectividad por protocolo ASCII... 19
1.19 Ejemplo prctico de conectividad por protocolo ASCII... 21
1.20 Aplicacin prctica de una RED RS-485 hacia Ethernet.... 22
1.21 Modulo de comunicacin MODBUS por Radio.. 23
1.22 Ejemplo prctico de conectividad por protocolo ASCII.. 23
1.23 Aplicacin Integral.... 24
1.24 enlace mediante Protocolo BSC.... 25
1.25 Velocidades de transmisin... 26
1.26 Conexin dispositivos por el puerto USB. .... 27
1.27 Logo Conexin USB OTG.... 36
1.28 Ejemplos Conexin USB OTG.. 36
1.29 Conector USB 2.0.. 38
1.30 Conector USB 3.0.. 38
1.30 Mini conector USB 3.0.. 38
1.31 Topologa del bus.. 39
1.31 Divisin de la topologa del bus. 40

XIV

1.31.1: Cable USB.. 52
1.31.2: Cable USB Fijo... 52
1.32: Estructura interna del cable USB...... 53
1.32.1 El espectro electromagntico.. 54
1.32.2 Frecuencia de operacin. 55
1.33: Esquema de redes Wireless.. 56
1.34: Velocidad de redes Wireless 56
1.35: Topologa WLan... 57
1.35.1: Modulo Transmisor... 57
1.35.2: TWS-434... 58
1.35.3: Modulo Receptor. . 58
1.35.4: RWS-434.. 59
1.36: Grafica del primer integrado 60
1.37: Parte del microprocesador.. 60
1.38: Grafica de iteracin. 62
1.39: Diagrama bloques Proceso Industrial. .. 62
1.40: Ejemplo usos de los microcontroladores. .. 63
1.41: Distribucin de los Microcontroladores. 63

Captulo II.

2.1: Programando en Netbeans. 67
2.2: Ejemplo de cdigo en Netbeans. 68
2.3: Ventana de proyectos en Netbeans. 69
2.4: Ejemplo de Aplicacin Con Base de Datos 70
2.5: Creando un proyecto nuevo 71
2.6: Interfaz de Netbeans... 72
2.7: Desarrollo de un proyecto.. 73
2.8: Referencias en Netbeans. 75
2.9: Abrir un proyecto... 76
2.10: Trabajando en el proyecto.... 76
2.11: Ventana de opciones............ 78
2.12: Test de parmetros.............. 78
2.13: Trabajando con clases.......... 79
2.14: Variables............................. 79

XV

2.15: Configuracin Variables............................. 80
2.16: Arquitectura de un modulo.......................... 80
2.17: Ventana General.......................................... 80

Captulo III.
86
3.1: Elementos Sistema de control........................ 87
3.2: Tipo de Seales.............................................. 87
3.3: Esquema de nuestro Sistema.............................................. 91
3.4: Descripcin de Nuestro Sistema 92.................................... 92
3.5: Descripcin del PIC 18F4550............................................. 95
3.6: Instalacin del PIC............................................................. 96
3.7: Perifrico conectado........................................................... 97
3.8: Diagrama del circuito PIC-USB......................................... 98
3.9: Principio de funcionamiento.............................................. 99
3.10: Modulo de Transmisin................................................... 100
3.11: Modulo de Transmisin................................................... 100
3.12: Fuente externa de pulsos................................................. 102
3.13: Sistema de Llenado y Vaciado........................................ 103
3.14: Esquema general Control de Bombas...................................... 103
3.15: Esquema general Control de Bombas.......................................... 104
3.16: Esquema general Control de Bombas.......................................... 105
3.17: Diagrama flujo Temperatura....................................................... 106
3.18: Etapa encendido-apagado bombas............................................. 108
3.19: Sistema Remoto......................................................................... 109
3.20: Variables del Sistema................................................................ 110
3.21: Control Principal........................................................................ 111
3.22: Fuente de Alimentacin............................................................. 112
3.23: Modulo del firmware.................................................................. 115
3.24: Secuencia del Firmware.............................................................. 116
3.25: Instalacin del Driver ODBC..................................................... 117
3.26: Grficos de LabVIEW................................................................ 119
3.27: Agregar componente de LabVIEW............................................ 120
3.28: Utilizacin del componente de LabVIEW sobre VB 6.0..................... 120
3.29: TexBox............................................................................. 121

XVI

3.30: Label................................................................................. 121
3.31: CommandButton........................................................................... 121
3.32: Toolbar........................................................................... 121
3.33 CWSlide............................................................................. 121
3.34: RichTextBox..................................................................... 122
3.35: Calendar............................................................................ 122
3.36: CrystalReport.................................................................... 122
3.37: Frame................................................................................ 122
3.38: CheckBox......................................................................... 122
3.39: ListBox............................................................................. 123
3.40: Timer................................................................................ 123
3.41: Utilizacin de Crystal .................................................................. 124
3.42: Utilizacin de Crystal Report....................................................... 125
3.43: Agregando tablas......................................................................... 125
3.44: Escoger datos de un reporte......................................................... 126
3.45: Ambiente de un reporte................................................................ 126
3.46: Pantalla de Monitoreo del Proceso............................................... 129
3.47: Diagrama del sistema................................................................... 131
3.48: Arquitectura del sistema............................................................... 132
3.49: Cargando la base de datos a nuestro sistema................................ 134
3.50: Creando el driver J DBC....................................................... 135
3.51: Creando una nueva conexin................................................ 135
3.52: Finalizando la Conexin....................................................... 136
3.54: Creando un nuevo proyecto.................................................. 137
3.55: Colocando parmetros al proyecto........................................... 137
3.56: Creando un Web Aplicacin....................................... 138
3.57: Colocando el Netbeans 138...................................................... 138
3.58: Creado el Web Aplicacin para la base de datos................................. 139
3.59: Creando el pool de conexiones................................................. 139
3.60: Creando el referencia de conexin............................................ 140
3.61: Agregada la referencia de conexin.......................................... 140
3.62: A tachando la referencia de conexin a tu aplicacin.......................... 141
3.63: Registrando servidor de aplicacin...................................................... 141
3.64: Haciendo la clase en java con las aplicacin........................................ 142
3.65: Haciendo la clase en java con las aplicacin........................................ 142

XVII

3.66: Creando un web service....................................... ................................ 143
3.67: Agregando una operacin..................................................................... 143
3.68: Nombre y tipo de operacin................................................................. 144
3.69: Creando un nuevo servicio................................................................... 144
3.70: Creando un consumidor del web service.............................................. 145
3.71: Creando un Cliente............................................................................... 146
3.72: Parmetros del Cliente......................................................................... 146
3.73: Finalizacin la creacin de Consumidor de WEB............................... 147

ANEXO A


A1.1: Pantalla de acceso.............................................................................

151
A1.2: Pantalla de error de usuario..............................................................


151
A1.3: Pantalla de ingreso de usuario/clave................................................. 152
A1.4: Pantalla de acceso al sistema............................................................

152
A1.5: Error si no hay dispositivo (PIC) conectado en el USB....................

152
A1.6: Monitoreo Bsico del proceso........................................................... 153
A1.7: Pantalla de monitoreo.......................................................................

154
A1.8: Pantalla de problema en las bombas.................................................

154
A1.9: Continua proceso.......................................................................... 155
A1.10: Consulta por usuario..................................................................

156
A1.11: Consulta por dispositivo encendido y apagado.............................

156
A1.12: Mantenimiento de usuario.......................................................... 157
A1.13: Mantenimiento de dispositivo....................................................

157
A1.14: Evento de Suceso Normal..........................................................

158
A1.15: Evento de Alertas....................................................................... 158
A1.16: Ventana en cascada.....................................................................

159
A1.17: Ventanas en mosaico..................................................................

159
A1.18: Ventana en Vertical..................................................................... 160
A1.19: Archivo de Ayuda.......................................................................

160
A1.20: Informacin del sistema..............................................................

161

ANEXO B


B1.1: Inicio de sesin de usuario...........................................................

163
B1.2: Mensaje de advertencia................................................................

164
B1.3: Pantalla de Bienvenida..................................................................

164

XVIII

B1.4: Monitoreo del sistema...................................................................

165
B1.5: Opciones de software....................................................................

165
B1.6: Opciones a Tomar.........................................................................

166
B1.7: Opcin de Apagado General.........................................................

166
B1.8: Opciones a Chat...........................................................................

167
B1.9: Chateo entre usuarios...................................................................

167

ANEXO C


C1.1: Esquemtico de los Formularios..................................................

174


















XIX

NDICE DE TABLAS:

CAPTULO 1


1.1: Tabla general del puerto paralelo...................................................

4
1.2: Tabla de direccionamiento.............................................................

6
1.3: Tabla general del puerto serial.......................................................

10
1.4: historial de progreso del puerto USB...............................................

30
1.6: Perifricos que utilizan el puerto USB.............................................

37
1.7: Pines Cable Fijo de Velocidad Baja.................................................

53
1.8: Especificaciones del TWS..............................................................

58
1.9: Especificaciones del RWS.............................................................. 59

Captulo 3.


3.1: Descripcin de entradas al PIC 18F4550....................................

99
3.2: Descripcin de salidas del PIC 18F4550......................... ...................

99
3.3: Caractersticas Tcnicas PIC..............................................................

112
3.4: Tipos de Variables.............................................................................

124

1

1.- CAPTULO 1.
FUNDAMENTOS Y CONOCIMIENTOS GENERALES DE HARDWARE Y
SOFTWARE
En esta seccin se darn detalles de los puertos paralelo, serial y USB.
Veremos configuracin de los pines, como se comunican, en el caso del puerto USB
se hablara sobre la deteccin de dispositivos, drivers de comunicacin.
Hablaremos de la comunicacin por radio frecuencia, veremos arquitectura, historia,
familias de los micro controladores.

1.1 Introduccin.
Hoy en da es comn aprovechar los puertos de comunicacin de las computadoras,
tal que existen convertidores RS-485, RS-232, RS-222 hacia Ethernet, la vanguardia
de la tecnologa apunta hacia la parte inalmbrica tenemos la misma tecnologa hacia
redes inalmbricas.

Figura 1.1: Dispositivos conectados por RS-232 hacia una red Ethernet.
Fuente: www.programer-isop.com.en/comunicate-struct/development/imagens%&/

Existen estndares de cableado, como por ejemplo el RS-485 que es un estndar de
mltiples puntos, con una distancia prctica de cableado de 4000 pies mximo, entre
otros que se darn a conocer ms adelante.

2


Hay un sinfn de protocolos de comunicacin para enlazar estos puertos disponibles
en la mayora de computadoras con tarjetas externas o algn hardware especfico.
La vanguardia de la fibra ptica, cada vez ms accesible en cuanto a precio est
siendo cada vez ms usada dentro de las redes industriales donde demandan mayores
distancias, la inversin se centra en los convertidores de fibra-Ethernet, fibra-RS485,
fibra-RS232.

Explicaremos el funcionamiento de los puertos existentes en la computadora, tales
como el puerto paralelo, puerto serial, y actualmente el puerto USB, as como
algunos de los protocolos para tales dispositivos, estndares de cableado, ejemplos de
aplicacin y comunicacin.


1.1.1 Puerto Paralelo.
1.1.1.1 Historia.
En 1981, la IBM (International Business Machines) introdujo la Computadora
Personal (PC). El puerto paralelo (Standar Parallel Port SPP) estaba incluido en el
primer PC y se agreg a ste como una alternativa al bajo rendimiento del puerto
serial, para utilizarlo como controlador de las impresoras de matriz de punto de alto
desempeo. Este puerto tena la capacidad de transmitir 8 bits de datos a la vez (del
PC a la impresora), mientras que el puerto serial lo haca de uno en uno. En el
momento que el puerto paralelo fue presentado, las impresoras de punto fueron el
principal dispositivo externo que se conecto a ste. Al hacerse extensamente
utilizado, el puerto paralelo lleg a ser la respuesta para conectar dispositivos ms
rpidos.

1.1.1.2 Evolucin
Desde la introduccin del PC al mercado, el puerto paralelo ha sufrido varias
modificaciones para hacerlo ms veloz. Ya que el puerto original era unidireccional,
se cre el puerto bidireccional. El puerto bidireccional fue introducido con el PS/2
compatible. Este permite una comunicacin de 8 bits en ambas direcciones. Algo

3

interesante de notar es que el puerto original tena la posibilidad de ser bidireccional
realizando una conexin entre dos pines de un componente electrnico que vena
incluido en ste. (Dicho de otro modo, el puerto original es bidireccional en diseo
bsico, pero no en el diseo operacional). Finalmente se han creado el Enhanced
Parallel Port (EPP) y el Extended Capability Port (ECP). Estos dos ltimos son al
puerto estndar como el Pentium al 286, adems de ser bidireccionales.
Inicialmente el puerto paralelo se utiliz para la comunicacin con impresoras.
Actualmente se utiliza tambin para manejar otros perifricos como CD ROM, cintas
de copia de respaldo, discos duros, tarjetas de red, protectores de copia, scanner, etc.
El puerto paralelo est formado por 17 lneas de seales y 8 lneas de tierra. Las
lneas de seales estn formadas por tres grupos:

4 Lneas de control
5 Lneas de estado
8 Lneas de datos

En el diseo original las lneas de control son usadas para la interface, control e
intercambio de mensajes desde el PC a la impresora.

Las lneas de estado son usadas para intercambio de mensajes, indicadores de estado
desde la impresora al PC (falta papel, impresora ocupada, error en la impresora).

Las lneas de datos suministran los datos de impresin del PC hacia la impresora y
solamente en esa direccin. Las nuevas implementaciones del puerto permiten una
comunicacin bidireccional mediante estas lneas.

Cada una de estas lneas (control, estado, datos) puede ser referenciada de modo
independiente mediante un registro.



4

1.1.1.3 Registro del puerto paralelo.
El puerto paralelo tiene tres registros:
Registro de datos
Registro de estado
Registro de control

DB25 Seal Registro Tipo Activo Sentido
1 Control 0 C0- Salida Bajo Invertido
2 Dato 0 D0 Salida Alto directo
3 Dato 1 D1 Salida Alto directo
4 Dato 2 D2 Salida Alto directo
5 Dato 3 D3 Salida Alto directo
6 Dato 4 D4 Salida Alto directo
7 Dato 5 D5 Salida Alto directo
8 Dato 6 D6 Salida Alto directo
9 Dato 7 D7 Salida Alto directo
10 Estado 6 S6+ Entrada Alto directo
11 Estado 7 S7- Entrada Bajo Invertido
12 Estado 5 S5+ Entrada Alto directo
13 Estado 4 S4+ Entrada Alto directo
14 Control 1 C1- Salida Bajo Invertido
15 Estado 3 S3+ Entrada Alto directo
16 Control 2 C2+ Salida Alto directo
17 Control 3 C3- Salida Bajo Invertido
18-25 Tierra
Tabla 1.1: Tabla general del puerto paralelo
Fuente: www.programer-isop.com.en/comunicate-struct/development/imagens%&/





5

1.1.1.4 Esquema interno del puerto paralelo.

Figura 1.2 Esquema interno del puerto paralelo.
Fuente:www.javier-moya.com.es/pto_para/image$%&.gif


1.1.1.5 Conector del puerto paralelo.

Figura 1.3 Conector DB-25
Fuente:www.javier-moya.com.es/pto_para/imagen$%.gif


6

1.1.1.6 Funcionamiento
Explicacin del funcionamiento mediante el BIOS y el MS-DOS.
IBM especific direcciones base para el puerto paralelo estndar (dentro del espacio
de direccionamiento de Entrada/Salida del 80x86). El adaptador de impresora podra
usar la direccin base 3BCh, o ms tarde 378h o 278h.
El BIOS (Basic Input Output System) de IBM crea en el momento de arranque o
POST (Power On Seft Test) una tabla en el espacio de la memoria principal (RAM)
para 4 direcciones base de puerto paralelo de impresora, estos se almacenan como 4
bytes empezando con la direccin de memoria 408h. Durante el arranque, el BIOS
comprueba si hay puertos paralelos en las direcciones base 3BCh, 378h, y 278h, en
ese orden, y almacena la direccin base de cualesquiera que hayan sido encontrados
en posiciones consecutivas de la tabla. Las posiciones que no son usadas pueden
estar en 0, o como algunos BIOS lo hacen, le colocan la direccin del primer puerto
encontrado.
Algunos programas pueden ignorar esta tabla, pero esta es usada por lo menos por el
propio BIOS (mediante la INT 17 de E/S de impresora) y por el MS-DOS.
El BIOS detecta estos puertos escribiendo AAh al registro de datos (en la direccin
de E/S Base +0), y luego si en el registro de datos se lee AAh. Significa que hay un
puerto.
Normalmente la asignacin de direcciones es como sigue:
Direccin Nombre Ubicacin
3BCh LPT1 Adaptador de impresin
primario
378h LPT2 Adaptador de impresin
secundario
Tabla 1.2: Tabla de direccionamiento
Fuente: www.programer-isop.com.en/comunicate-struct/development/imagens%&/

Las referencias a cada registro del puerto se realizan de la siguiente forma:

7

Base (datos)=base+0
Estado=base+1
Control=base+2
Por ejemplo, si encontramos que la direccin base es 378h, entonces las direcciones
del registro de datos, estado y control sern:
Base (datos)=378h
Estado=379h
Control=37Ah
Cada una de ellas permite acceder a los siguientes bits (descritos en la tabla general):
Base (datos)=D0, D1, D2, D3, D4, D5, D6, D7
Estado=S3, S4, S5, S6, S7
Control=C0, C1, C2, C3

1.1.2 Puerto Serie.
El puerto serie est considerado como una de las conexiones externas ms bsicas de
un ordenador, y ha sido una parte integral de la mayora de ordenadores durante ms
de 20 aos. Aunque muchos de los nuevos sistemas estn prescindiendo de los
puertos serie a favor de las conexiones USB.
Esencialmente, proveen una conexin estndar y un protocolo para que puedas
conectar diferentes dispositivos. Existen ciertas diferencias con respecto a los puertos
paralelo.
Todos los sistemas operativos de los ordenadores que estn es uso hoy en da,
soportan los puertos serie, ya que han estado en funcionamiento durante dcadas. Los
puertos paralelos son una invencin ms reciente y son mucho ms rpidos que los
puertos serie. Los puertos USB solo tienen unos pocos aos de antigedad, y con el
tiempo seguramente reemplazarn a los puertos serie y paralelo en los prximos
aos.

8

El nombre de serie viene por el hecho de que un puerto serie serializa los datos.
Esto significa que coge un byte de datos y transmite los 8 bits que contiene el byte
uno a la vez. La ventaja es que los puertos serie solo necesitan un hilo para transmitir
los 8 bits, mientras que los paralelo necesitan 8. La desventaja es que lleva 8 veces
ms tiempo que si tuviera 8 hilos.
Antes de cada byte de datos, los puertos serie envan un bit de comienzo, el cual es
un nico bit con un valor de 0. Despus de cada byte de datos, enva un bit de parada
para sealar que el byte est completo. Tambin enva un bit de paridad.
Los puertos serie, tambin llamados puertos de comunicacin (COM), son bi-
direccionales. La comunicacin bi-direccional permite a cada dispositivo recibir
datos a la vez que los transmite.
Los dispositivos serie usan pines diferentes para el recibir y enviar datos - usar los
mismos pines significara que la comunicacin estara limitada a half-duplex, y que
la informacin viajara en una sola direccin a la vez. Usar pines diferentes permite
una comunicacin full-duplex, y puede viajar en ambos sentidos.
Los puertos serie delegan en un controlador o chip especial llamado UART
(Universal Asynchronous Receiver/Transmitter), para funcionar correctamente.
El chip UART coge la salida en paralelo del bus del sistema y la transforma en una
forma serie para que se transmita por el puerto serie. Para que funcionen ms rpido,
muchos chips UART tiene integrado un buffer de 16 a 64 Kilobytes en su interior.
Este buffer permite al chip hacer un cach de datos mientras est procesando los
datos.

La conexin serie
La conexin externa de un puerto serie puede ser de nueve pines o de 25 pines.
Originalmente, el uso principal de un puerto serie era conectar un modem a un
ordenador. Un aspecto importante de las comunicaciones serie es el concepto del
control de flujo. Esto es la habilidad de un dispositivo de decirle a otro dispositivo
que pare de enviar datos por un rato. Los comandos RTS (Request to Send), CTS

9


Figura 1.4 Telex
Fuente: www.google.com
(Clear To Send), DTR (Data Terminal Ready) y DSR (Data Set Ready) son
utilizados para habilitar el control de flujo.


1.1.2.1 Historia.


Los diseadores del IBM PC ya previeron la posibilidad de comunicacin serie, para
lo que posibilitaron la instalacin de hasta 7 puertos de comunicaciones serie
asncronas RS-232.C (aunque es raro instalar ms de dos); para atender estos puertos
dispusieron de los correspondientes servicios en la BIOS. En los primeros modelos
la electrnica necesaria no estaba incluida en la placa-base, por lo que los puertos
deban instalarse en adaptadores de tarjeta que se insertaban en cualquiera de los
zcalos disponibles.
RS-232.C significa literalmente "Recomended Standard232 revisin C" (tambin
conocida como EIA 232). Es un estndar publicado en 1969 por la EIA ("Electronic
Standard Association") que define las caractersticas elctricas que deben presentar
los elementos de conexin para la comunicacin serie entre ordenadores y equipos
perifricos.
Su ttulo dice exactamente: "Conexin entre un Equipo Terminal de Datos y un
Equipo de Comunicacin de Datos empleando un intercambio de datos binario
serie".
Para comprender bien algunos aspectos de las comunicaciones serie, hay que tener
en cuenta que este tipo de comunicacin elctrica precede en bastantes aos a la
aparicin de los ordenadores electrnicos.
La comunicacin serie tiene sus races en el telgrafo (figura 1.4), que
posteriormente deriv en el teleimpresor (Tlex), donde se utilizaron diversos
protocolos de comunicacin; los ms famosos el Morse, el Baudot y el ASCII.




10

Posteriormente las comunicaciones serie informticas adoptaron algunos de los usos
y costumbres existentes adaptndolos a las nuevas necesidades, empezando por su
propio sistema de cdigos (ASCII), pero que conservando algunas reminiscencias de
sus ancestros telegrficos.

1.1.2.2 Registro del puerto serie.
Las seales TXD, DTR y RTS son de salida, mientras que RXD, DSR, CTS y DCD
son de entrada. La masa de referencia para todas las seales es SG (Tierra de Seal).
Finalmente, existen otras seales como RI (Indicador de Llamada), y otras poco
comunes que no se explican en este artculo por rebasar el alcance del mismo.
Numero de Pin Seal Descripcin E/S
En DB-25 En DB-9
1 1 - Masa chasis -
2 3 TxD Transmit Data S
3 2 RxD Receive Data E
4 7 RTS Request To Send S
5 8 CTS Clear To Send E
6 6 DSR Data Set Ready E
7 5 SG Signal Ground -
8 1 CD/DCD (Data) Carrier Detect E
15 - TxC(*) Transmit Clock S
17 - RxC(*) Receive Clock E
20 4 DTR Data Terminal Ready S
22 9 RI Ring Indicator E
24 - RTxC(*) Transmit/Receive Clock S

Tabla 1.3: Tabla general del puerto serial
Fuente: www.programer-isop.com.en/comunicate-struct/development/imagens%&/

1.1.2.3 Conector del puerto serial.


Figura 1.5 Conector DB-9
Fuente: www.javier-moya.com.es/pto-serie/imagen$%.jpg

11

1.1.2.4 Funcionamiento
El ordenador controla el puerto serie mediante un circuito integrado especfico,
llamado UART (Transmisor-Receptor-Asncrono Universal). Normalmente se
utilizan los siguientes modelos de este chip: 8250 (bastante antiguo, con fallos, solo
llega a 9600 baudios), 16450 (versin corregida del 8250, llega hasta 115.200
baudios) y 16550A (con buffers de E/S). A partir de la gama Pentium, la circuitera
UART de la placa base son todas de alta velocidad, es decir UART 16550.
.
Figura 1.6 NS16550D
Fuente: www.nationalsemiconductor.com
Mediante los puertos de E/S se pueden intercambiar datos, mientras que las IRQ
producen una interrupcin para indicar a la CPU que ha ocurrido un evento (por
ejemplo, que ha llegado un dato, o que ha cambiado el estado de algunas seales de
entrada). La CPU debe responder a estas interrupciones lo ms rpido posible, para
que d tiempo a recoger el dato antes de que el siguiente lo sobrescriba. Sin embargo,
las UART 16550A incluyen unos buffers de tipo FIFO, dos de 16 bytes (para
recepcin y transmisin), donde se pueden guardar varios datos antes de que la CPU
los recoja. Esto tambin disminuye el nmero de interrupciones por segundo
generadas por el puerto serie.
El RS-232 puede transmitir los datos en grupos de 5, 6, 7 u 8 bits, a unas velocidades
determinadas (normalmente, 9600 bits por segundo o ms). Despus de la
transmisin de los datos, le sigue un bit opcional de paridad (indica si el numero de
bits transmitidos es par o impar, para detectar fallos), y despus 1 o 2 bits de Stop.
Normalmente, el protocolo utilizado ser 8N1 (que significa, 8 bits de datos, sin
paridad y con 1 bit de Stop).
Una vez que ha comenzado la transmisin de un dato, los bits tienen que llegar uno
detrs de otro a una velocidad constante y en determinados instantes de tiempo. Por
eso se dice que el RS-232 es asncrono por carcter y sncrono por bit. Los pines que
portan los datos son RXD y TXD. Las dems se encargan de otros trabajos: DTR

12

indica que el ordenador esta encendido, DSR que el aparato conectado a dicho puerto
esta encendido, RTS que el ordenador puede recibir datos (porque no est ocupado),
CTS que el aparato conectado puede recibir datos, y DCD detecta que existe una
comunicacin, presencia de datos.

Como ya se ha visto, los parmetros que hay que configurar son: protocolo serie
(8N1), velocidad del puerto serie, y protocolo de control de flujo. Este ultimo puede
ser por hardware (el que ya hemos visto, el handshaking RTS/CTS) o bien por
software (XON/XOFF, el cual no es muy recomendable ya que no se pueden realizar
transferencias binarias). La velocidad del puerto serie no tiene por qu ser la misma
que la de transmisin de los datos, de hecho debe ser superior. Por ejemplo, para
transmisiones de 1200 baudios es recomendable usar 9600, y para 9600 baudios se
pueden usar 38400 (o 19200).

1.1.2.4.1 Formas de transmisiones serie:

Simplex: Un equipo transmite, el otro recibe.
Half-duplex: Transmiten ambos equipos pero no simultneamente; los equipos se
alternan en la transmisin, uno transmite mientras el otro recibe.
Full-duplex: Ambos equipos transmiten simultneamente. Para ello se requieren dos
lneas independientes, transmisin y recepcin; la lnea de transmisin de un equipo
se conecta a la entrada de recepcin del otro y viceversa. Los puertos serie del PC
son capaces de utilizar este modo.
Sncronas: Los dispositivos que comunican se sincronizan en el momento inicial de
la transmisin y constantemente se intercambian informacin a una cadencia
predefinida. Con objeto de mantener la sincronizacin, cuando no existen datos que
enviar se transmite caracteres sin valor ("idle characters). Esta transmisin es ms
rpida que la asncrona porque no es necesario transmitir seales de inicio o fin de
dato; constantemente se recibe caracteres que pueden ser de datos o sin valor (de
relleno).

13


Figura 1.7 Transmisin Sncrona.
Fuente: www.javier-moya.com.es/pto-serie/tran/imagen$%.jpg


Figura 1.8 Recepcin Sncrona.
Fuente: www.javier-moya.com.es/pto-serie/rec/imagen$%.jpg


Asncronas: En este modo de transmisin no existe sincronizacin; no es necesario
enviar caracteres de relleno, pero hay que indicar cundo empieza un dato y cuando
termina. Esto se hace incluyendo en la transmisin seales de inicio y fin de datos
(bits de "start" y "stop"). En la comunicacin asncrona, la informacin (cada
carcter) es enviada en el interior de un cuadro ("Frame") de tamao variable, que
comienza con la mencionada seal de inicio y termina con la de final; es el tipo de
comunicacin utilizada en los puertos serie del PC.

14


Figura 1.9 Transmisin Asncrona.
Fuente: www.javier-moya.com.es/pto-serie/asin/imagen$%.jpg

Figura 1.10 Recepcion Asncrona.
Fuente: www.javier-moya.com.es/pto-serie//asin/imagen$%.jpg

1.1.2.4.2 Servicios BIOS de puerto serie
Los servicios BIOS relacionados con el puerto serie se gestionan mediante el vector
de interrupcin 20 (14h); este servicio tiene 4 sub servicios numerados del 0 al 3.
Servicio 0: Inicializar el puerto; permite ajustar los parmetros de
transmisin.
Servicio 1: Enviar un carcter
Servicio 2: Recibir un carcter

15

Servicio 3: Obtener el estado del puerto, tanto de funcionamiento como
estados de error.
Por lo general, la secuencia POST solo detecta los dos primeros puertos serie; como
el DOS utiliza los datos de la BIOS, salvo mdulos software especiales, los
programas DOS solo pueden utilizar COM1 y COM2. Sin embargo esta limitacin
no existe para Windows 98 en adelante, que pueden utilizar hasta 128 puertos.
1.1.2.5 Caractersticas Elctricas.
Como hemos sealado, las normas y terminologa de las comunicaciones serie estn
muy influenciadas por sus orgenes telegrficos. Esto incluye algunas de las
definiciones utilizadas por la norma RS-232. Una curiosidad de esta norma es que la
transmisin de los caracteres ASCII se realiza empezando por el bit menos
significativo.

En la figura se muestran los niveles de tensin correspondientes a las salidas. Como
puede verse en la fig. 1.7; la lgica utilizada es poco convencional, utiliza una lgica
bipolar con tensiones negativas para los "1" lgicos.
0-lgico
Espacio
Transicin
(Estado
indefinido)
1-lgico
(Marca)
+15 voltios.
+5 voltios.
0 Voltios referencia comn
- 5 voltios.
- 15 voltios.

Figura 1.11 Niveles de Voltaje
Fuente: www.electrices-ubique.com/es/imagen/$%&.gif

0-lgico
Espacio
Transicin
(Estado
indefinido)
1-lgico
(Marca)
+15 voltios.
+3 voltios.
0 Voltios referencia comn
- 3 voltios.
- 15 voltios.


Figura 1.12 Niveles de Tensin
Fuente: www.electrices-ubique.com/es/imagen/$%&.gif

16


Figura 1.13
Conexin DB-9
Fuente:
www.google.com

1.1.2.6 Estndares
Estndar RS-232
RS-232C (fig. 2.13) es un estndar de cableado punto a punto
con una distancia prctica de cableado de 15 metros, o 50 pies,
mximo. Esto significa que slo dos dispositivos pueden
comunicarse en una red de RS-232c, un slo dispositivo
maestro y un slo dispositivo esclavo, y la longitud de cable
total no debe exceder 50 pies.

Comparacin la RS-232 con otras especificaciones:

RS-232 (20 Kbps)
RS-530 (hasta 2Mbps)
V.35 (hasta 6 Mbps)
RS-449 (hasta 10Mbps)
HSSI (hasta 52Mbps) High Speed Serial Interface


Figura 1.14 Ilustracin de Conexin de equipos RS-232 hacia Ethernet.
Fuente: www.exemys.com
a.- Estndar RS-422
Es un estndar de mltiples puntos con una distancia prctica de cableado de 1000
metros, o 3280 pies, longitud total mxima. Esto significa que puede comunicarse un
maestro solamente, con hasta 10 esclavos, y la distancia total de toda la red entre
todos los dispositivos no puede exceder 1000 metros, o 3280 pies.

17


El estndar RS-422 no especifica una topologa de la red, pero en la prctica, una
topologa de conexiones mltiples en serie con el maestro en un extremo es la nica
manera de hacer la comunicacin confiable.

Figura 1.15 Ilustracin de Conexin de equipos RS-422 a otros equipos
Fuente: Manual del PLC DL06, 2a. edicin en espaol, 6/07

b.- Estndar RS-485
Es un estndar de cableado de mltiples puntos, con una distancia prctica de
cableado de 4000 pies mximo. Este estndar de cableado prev la posibilidad de
hasta 32 maestros que se comunican con hasta 32 esclavos todos dentro de la
distancia mxima de 4000 pies.
Figura 1.16 Conectividad RED RS-485
Fuente: Manual del PLC DL06, 2a. edicin en espaol, 6/07.

18

El estndar RS-485 no especifica una topologa de red, pero en la prctica, una
topologa de conexiones mltiples en serie con el maestro en un extremo es la nica
manera de hacer la comunicacin confiable.

Figura 1.17 Esquema de conexin de enlace entre PC y PLC.
Fuente: Manual del PLC DL06, 2a. edicin en espaol, 6/07

1.1.2.7 Protocolos.
No se va a entrar en detalle en los protocolos de comunicacin, ms bien se muestra
esta seccin para indicar el uso profesional del puerto RS-232 de la PC, que es
ampliamente usada en la industria junto a sistemas SCADA profesionales
especializados en distintas reas.
Contamos con los protocolos:

1.1.2.7.1 Protocolos Industriales:
Caractersticas:
Deben ser sistemas fciles de reparar y mantener.
Deben poseer un alto nivel de integridad en la transferencia de datos.
Alta velocidad en la actualizacin de parmetros.
Industrial.
Tienen caracteristicas especiales.
La mayor parte son de propiedad privada.
Comunicacin.
Por ejemplo BSC, DDCMP, HDLC

19

Se va a mencionar algunos de los protocolos dejando en mencin que es para
beneficio del estudiante, tcnicos e ingenieros y no debe interpretarse como
publicidad o violacin de derecho de autor, ya que estos protocolos son de propiedad
privada.

a.- Protocolos ASCII.
Los protocolos ASCII son muy populares debido a su simplicidad, lo cual los hace
apropiados para instalaciones sencillas, generalmente una Maestra y una Remota.
Su principal desventaja es su lentitud y su incapacidad para manejar sistemas ms
complicados, por ejemplo, sistemas multipunto de ms de 32 remotas.























Figura 1.18 Ejemplo prctico de conectividad por protocolo ASCII
Fuente: Manual del PLC DL06, 2a. edicin en espaol, 6/07

En la prctica podemos encontrar dos tipos de protocolo ASCII: el protocolo ASCII
para Transmisores Digitales y el protocolo ASCII ANSI X3.28-2.5-A4; este ltimo
es un poco ms elaborado. La primera versin del protocolo ANSI X3.28 apareci en
1976.


20

Caractersticas
Control por Caracteres
Transmisin HDX asincrnica
Velocidades: entre 300 y 1200 bps
Interfaces: RS-232C en operacin punto a punto. Si acaso se llega a utilizar
en operacin multipunto, entonces hay que emplear la interfaz RS-485.

Estructura de los Formatos.
Comando desde el Procesador: Leer Datos (Read Data)
Caracteres 1 1 1 1 1 1
# ADD R D BCC CR

Respuesta desde el Transmisor
Caracteres 1 1 1 1 9 1 1
* ADD R D Valor del Dato BCC CR

b.- Protocolo HART
El Protocolo HART (Highway Addressable Remote Transducer) permite la
transmisin simultnea de informacin analgica y digital pues generalmente opera
superpuesto sobre el lazo de corriente de 4-20 mA, y utiliza una seal FSK (fig. 2.19)
para la transmisin digital binaria a 1200 bps, equivalente a un mdem Bell 202
(2200 Hz para un Cero y 1200 Hz para un UNO).

21


Figura 1.19 Ejemplo prctico de conectividad por protocolo ASCII
Fuente: Manual del PLC DL06, 2a. edicin en espaol, 6/07

El Protocolo HART se utiliza tpicamente en configuracin punto a punto, para la
configuracin remota, ajuste de parmetros y diagnstico de dispositivos de campo
inteligentes.

Caractersticas:

Control por Conteo de Bytes
Transmisin Asincrnica HDX, punto a punto y multipunto
Carcter Bsico de 1 bit de arranque, 8 de informacin, 1 de paridad impar y
1 de paridad; NRZ
Una Maestra puede controlar hasta 15 Remotas
Permite hasta 250 variables en cada dispositivo de campo
Distancia mxima: hasta 3000 m con par trenzado apantallado calibre AWG
24; hasta 1500 m con cable multipar, par trenzado comn apantallado calibre
AWG 20.
Modulacin FSK, 1200 bps, con Mdems Tipo Bell 202
Interfaces asociadas: RS-232D y RS-485

c.- Protocolo Modbus
Modbus es un protocolo de transmisin desarrollado por la Gould Modicon (ahora
AEG Schneider Automation) para sistemas de control y supervisin de procesos
(SCADA) con control centralizado. Utilizando este protocolo, una Estacin Maestra
(MTU) puede comunicarse con una o varias Estaciones Remotas (RTU) con la
finalidad de obtener datos de campo para la supervisin y control de un proceso. El

22

protocolo Modbus es muy utilizado en la industria en una gran variedad de sistemas
SCADA.
En Modbus los datos pueden intercambiarse en dos modos de transmisin: en Modo
RTU y en Modo ASCII. El Modo RTU, algunas veces denominado Modbus-B (por
Modbus Binario), es el tipo ms comn y es el que describiremos a continuacin. En
el modo de transmisin ASCII los mensajes generalmente son de duracin casi del
doble que en el modo de transmisin RTU.
Linea 1 Linea 2 TAP Linea 3 Linea 4 TIC
8 7 6 2 1
5 Modbus
Address
RS 485 (MODBUS)
10.175.132.6
Convertidor Multinet

Figura 1.20 Aplicacin prctica de una RED RS-485 (MODBUS) hacia Ethernet.
Fuente: Los Autores.
Aunque el Protocolo Modbus es anterior al desarrollo del Modelo ISO/OSI, se le
puede identificar tres niveles: un nivel de Capa Fsica, un nivel de Capa Enlace y un
nivel de Aplicacin. En Modbus no se define una determinada interfaz de Capa
Fsica y el usuario puede elegir entre alguna de las interfaces vistas en el Captulo III
que sea apropiada para las velocidades de transmisin definidas en el protocolo. A
continuacin vamos a describir la Capa Enlace de Modbus. La descripcin de la
Capa Aplicacin queda fuera de los lmites que nos hemos impuesto.
Caractersticas:

Control por Conteo de Caracteres
Transmisin FDX/HDX asincrnica
Carcter Bsico NRZ de ocho dgitos de informacin (transmitidos como dos
caracteres hexadecimales de cuatro dgitos), un dgito de arranque, un dgito
de paridad y un dgito de paridad; si no hay paridad, se toman dos dgitos de
paridad
Una Maestra puede controlar hasta 247 Remotas
Topologa en Estrella

23

Interfaces de Capa Fsica: RS-232D, RS-422A, RS-485, o lazo de 4-20 mA
Velocidades de Transmisin: 1200 a 19200 bps
Medios de Transmisin: par trenzado, cable coaxial, radio

Figura 1.21 Modulo de comunicacin MODBUS por Radio
Fuente: www.prosoft-technology.com

d.- Protocolo Bristol BSAP
El Protocolo BSAP (Bristol Synchronous/Asynchronous Protocol) de la Bristol
Babcock Instruments/Systems es un protocolo industrial utilizado para el control y
supervisin de sistemas SCADA. Es un protocolo muy completo con una topologa
tipo rbol con un mximo de seis niveles y 127 nodos por nivel; a su vez, cada nodo
puede controlar hasta 127 dispositivos remotos.

Cada nodo tiene una direccin nica basada en su posicin en la red y puede ser
maestra de los niveles inferiores o esclava de los niveles superiores. Cumple con el
Modelo ISO/OSI en las cuatro primeras capas, fig. 1.22

Figura 1.22 Ejemplo prctico de conectividad por protocolo ASCII
Fuente: Manual del PLC DL06, 2a. edicin en espaol, 6/07

Caractersticas del Protocolo

Control por Caracteres (Modo Transparente)

24

Transmisin Asincrnica/Sincrnica HDX y FDX
Operacin en Modo de Respuesta Normal y Par a Par
Carcter bsico codificado en ASCII sin bit de paridad
Interfaces de Capa Fsica: RS-232C, RS-422A, RS-423A y RS-485
Velocidades de transmisin: Sincrnico: 187,5 Kbps, 1 Mbps
Asincrnico: 300 bps a 38,4 Kbps
Medios de transmisin: par trenzado, cable coaxial, radio

Conclusin: Para poder visualizar los equipos dentro de una PC debemos considerar
el protocolo de comunicacin, el medio por el cual se van a comunicar, la aplicacin
en que se va a desarrollar, lo ms importante es los drivers de comunicacin de los
dispositivos. En este caso mostramos una esquema de la firma automation direct,
recoge las seales de varios PLC y dispositivos, vemos convertidor de RED-485 a
Ethernet, comunicacin RS-232 directa al PC, ejemplo lo expuesto anteriormente.

Figura 1.23 Aplicacin Integral
Fuente: www.automationdirect.com/dl205


1.1.2.7.2 Protocolos de Comunicacin.

a.- Protocolo BSC

Se ha desarrollado toda una variedad de protocolos de control por caracteres, pero el
ms conocido es el Protocolo BSC (Binary Synchronous Communications)
desarrollado por la IBM; a este protocolo se le denomina tambin Protocolo BISYN.

25


Este protocolo utiliza ciertos caracteres de control para delimitar los diferentes
campos y para el control de sus funciones propias.

El protocolo BSC es un protocolo sincrnico que opera en HDX y requiere un
reconocimiento para cada trama transmitida antes de enviarse la trama siguiente.

Este protocolo est diseado para trabajar en punto a punto o en multipunto con una
sola estacin de control o estacin primaria; esta es la denominada operacin
Maestra-Esclava.

Los caracteres de control en el protocolo BSC son los siguientes por orden
alfabtico: ACK, DLE, ENQ, EOT, ETB, ETX, NAK, SOH, STX y SYN.

Estos diez caracteres estn definidos en los Cdigos ASCII, EBCDIC y en el
Transcdigo de 6 Dgitos (Six Bit Transcode).


Figura 1.24 enlace mediante Protocolo BSC
Fuente: Folleto Protocolos de Comunicacin


b.- Protocolo DDCMP

La principal desventaja del protocolo BSC es la complicacin que se produce como
resultado de los procedimientos especiales utilizados para asegurar la transparencia.
Este problema se ha resuelto en el Protocolo DDCMP (Digital Data Communication
Message Protocol) desarrollado por la DEC (Digital Equipment Corporation), en el
cual mediante el conteo de los caracteres u octetos contenidos en el campo
INFORMACION se ha eliminado la utilizacin de DLE y de otros caracteres de
control.


26

El Protocolo DDCMP es un protocolo general y puede utilizarse en sistemas HDX y
FDX, serie o paralelo, asincrnicos y sincrnicos, punto a punto y multipunto.

c.- Protocolo HDLC

El protocolo SDLC se haba convertido en un protocolo de facto por la cantidad de
aplicaciones en donde se utilizaba, y cuando la IBM lo present a la ISO fue
aceptado y con muchas modificaciones que mejoraron sus prestaciones, se public
en 1976 con el nombre de Protocolo HDLC (High-Level Data Link Control
Protocol), ISO 3309-76(E).

HDLC es el protocolo ms importante de la capa de enlace del modelo OSI.

Es un protocolo orientado a bit.
Es la base de otros protocolos como LAPB, LAPD.
Protocolo para comunicar dos niveles del mismo tipo (el nivel de enlace).
Protocolos que utilizan un delimitador o flag para indicar el final de trama.
Utilizan un formato de trama estndar.

1.1.3 Puerto USB.
El USB o Universal Serial Bus es una interfaz para la transmisin serie de datos y
distribucin de energa desarrollado por empresas lderes del sector de las
telecomunicaciones y de los ordenadores y que ha sido introducida en el mercado de
los PCs y perifricos para mejorar las lentas interfaces serie (RS-232) y paralelo.
Tena en un principio como objetivo el conectar perifricos relativamente lentos
(ratones, impresoras, cmaras digitales, unidades ZIP, etc.) de una forma realmente
sencilla, rpida y basada en comunicaciones serie, aunque por sus caractersticas
tambin poda conectarse hasta discos duros.

Figura 1.25 Velocidades de transmisin
Fuente: Los Autores.

27

Esta interfaz de 4 hilos distribuye 5V para la alimentacin y puede transmitir datos a
una velocidad de hasta 480 Mbps en su versin 2.0.
Es un bus serie que hace posible la conexin de hasta 127 perifricos a una nica
puerta de un PC, con deteccin y configuracin automticas, siendo esto posible con
el PC conectado a la red y sin tener que instalar software adicional, y sin tener que
reiniciar el ordenador (plug and play, algo que con los puertos convencionales serie y
paralelo no suceda. Tampoco hay que preocuparse por conflictos de IRQs o instalar
tarjetas de adaptador para cada perifrico.
Estos perifricos pueden ser: Ratones, teclados, impresoras, escneres, grabadoras,
discos duros, mdems, cmaras digitales, PLC, Microcontroladores, telfonos, en fin
una gama de productos y dispositivos existentes en el mercado tecnolgico.

Figura 1.26 Conexin dispositivos por el puerto USB.
Fuente: Los autores.
El xito de la interfaz USB ha sido tal que, actualmente todos los PCs tienen
integrados a lo menos dos puertos USB para la conexin de dispositivos. Los PCs
modernos adems de tener los dos traseros pueden tener ms puertos en el frontal
para facilitar su conexin. A falta de puertos se pueden acoplar hubs USB para
ampliar el nmero de dispositivos siempre que no se sobrepase el limite soportado de
127.
Como desventaja principal nos encontramos con que el ancho de banda debe
repartirse entre todos los dispositivos conectados a l. Lo que quizs no tendra
repercusin si intentramos conectar varios ratones, pero s que la tendra si
queremos grabar CDs en varias grabadoras en paralelo.

28

Uno de los grandes problemas que tienen los PCs (problemas que se han heredado a
travs de los tiempos debido a un diseo deficiente en algunos aspectos) es la escasez
de determinados recursos, bsicamente lneas de interrupcin IRQs y canales de
acceso directo a memoria DMAs. En ambos casos las capacidades del diseo inicial
tuvieron que ser dobladas en 1984, tres aos despus de su lanzamiento,
aprovechando la aparicin de la gama AT.
La instalacin de perifricos ha sido un constante quebradero de cabeza para los
ensambladores, que deban asignar los escasos recursos disponibles entre los
dispositivos del sistema. Aunque el estndar PnP ("Plug and Play") vino a aliviar en
parte las dificultades mecnicas de cambiar "jumpers" en las placas, el problema
segua ah, ya que desde la aparicin del AT el diseo del PC no haba sufrido
cambios sustanciales.
Por otra parte, a pesar de que haban persistido desde los inicios del PC, y de su
conveniencia para multitud de aplicaciones, los puertos serie y paralelo presentaban
claras limitaciones en cuanto a capacidad de expansin y rendimiento se refiere.
Por estas razones y como resultado de un intento de dotar al PC de un bus de alta
velocidad que ofreciera las caractersticas ideales (PnP, universalidad, facilidad de
conexin y desconexin incluso en caliente (Hot Swappable)...), un consorcio
formado por multitud de empresas las empresas que formaron el grupo inicial
fueron siete:
Compaq, Intel, IBM, Microsoft, Nec, Northern Telecom y Digital Equipment
desarroll una nueva interfaz estndar para la conexin de dispositivos externos del
PC, el denominado puerto USB Universal Serial Bus.
Como su nombre indica, es un bus serie bidireccional y de bajo coste, diseado como
una extensin en la arquitectura estndar del PC y orientado principalmente a la
integracin de perifricos y en sus orgenes dirigidos a la integracin de dispositivos
telefnicos CTI en los ordenadores (Computer Telephony Integrations).



29

1.1.3.1 Historia del puerto USB

Ao Mes Suceso
1994 Noviembre
Compaq, Intel y el resto de empresas iniciaron
las especificaciones del Universal Serial Bus
1994 30 Diciembre USB 0.8 (Borrador)
1995 13 Abril USB 0.9 (Borrador)
1996 15 Enero USB 1.0 - Velocidad Oficial 12 Mbps
1996 Febrero
Intel anuncia sus primeros chips controladores
de USB
1996 Agosto
Microsoft saca la versin de Windows 95 OSR
2.1 que introduce los controladores
correspondientes para el manejo de los
dispositivos USB
1998 Marzo
Sale a la venta el iMac de Apple que utilizaba el
USB 1.0 para la conexin de teclado y ratn
1998 24 J unio
Sale al mercado el Windows 98, el primer
Sistema Operativo con completo soporte para
USB
1998 23 Septiembre
USB 1.1 - Revisin completada (USB-IF-
>Compaq, Intel, Microsoft, NEC)
1998 Noviembre
USB-IF supera el record mundial de perifricos
conectados a un simple PC mediante USB (111
perifricos)
1999 Se forma el grupo promotor del USB 2.0

30

1999 Febrero Se propone 240 Mbps como velocidad
1999 12 Octubre
Versin 0.79 del USB 2.0. Se aumenta la
velocidad a 480 Mbps
1999 21 diciembre Versin 0.9 del USB 2.0
2000 29 febrero
In-Systems muestra la primera unidad de
almacenamiento USB 2.0, una unidad zip
modificada
2000 17 Marzo
Microtech y Netchip muestran su scanner USB
2.0 en el foro de desarrollo de Tokio
2000 27 Abril
USB 2.0 - Velocidad Oficial 480 Mbps (USB-
IF->Compaq, Hewlett-Packard, Intel, Lucent,
Microsoft, NEC, Philips)
2001 18 Diciembre
USB 2.0 OTG- (On-The-Go) Ampliacin del
USB 2.0.
2002 Mayo
Intel saca a la venta los primeros chipsets que
integran Hi-speed USB 2.0 en el Controlador de
Hub de I/O (ICH4). Estos chipsets fueron el
Intel 845E, 845G y el 845GL.
Tabla1.4: historial de progreso del puerto USB
Fuente: www.usb.org

Septiembre del 2007

Intel, integrante y principal impulsor del USB, hamontado junto a empresas como
HP, Microsoft, NEC Corporation, NXP o Texas Instruments, el USB 3.0 Promoter
Group. Durante una conferencia en San Francisco, hace unos das desvelaron algunas
de las caractersticas de la nueva versin. Aunque los datos no se confirmarn
oficialmente hasta el ao que viene, parece que el USB 3.0 alcanzar una tasa de
transferencia de 4,8 Gigabits por segundo, frente a los 480 Megabits por segundo a
los que llega el USB 2.0. La mejora se debe a que, adems de los pares de cobre que

31

ya llevaban las versiones anteriores, este nuevo tipo de conexin llevar tambin
fibra ptica.

Detallamos conector en la seccin siguiente

1.1.3.2 Caractersticas generales del USB
La especificacin del USB proporciona una serie de caractersticas que pueden ser
distribuidas en categoras. Estas caractersticas son comunes para todas las versiones
(desde la 1.0 hasta la 2.0)

a.- Fcil uso para los usuarios:

Modelo simple para el cableado y los conectores.
Detalles elctricos aislados del usuario (terminaciones del bus).
Perifricos auto-identificativos
Perifricos acoplados y reconfigurados dinmicamente (Hot Swappable)

b.- Flexibilidad

Amplio rango de tamaos de paquetes, permitiendo variedad de opciones de
buffering de dispositivos
Gran variedad de tasas de datos de dispositivos acomodando el tamao de
buffer para los paquetes y las latencias
Control de flujo para el manejo del buffer construido en el protocolo


c.- Ancho de banda iscrono

Se garantiza un ancho de banda y bajas latencias apropiadas para telefona,
audio...
Cantidad de trabajo iscrono que puede usar el ancho de banda completo del
bus.
Control de flujo para el manejo del buffer construido en el protocolo
Amplia gama de aplicaciones y cargas de trabajo
Adecuando el ancho de banda desde unos pocos Kbps hasta varios Mpbs.
Soporta tanto el tipo de transferencia iscrono como el asncrono sobre el
mismo conjunto de cables.

32

Conexiones mltiples, soportando operaciones concurrentes de varios
dispositivos.
Soporta hasta 127 dispositivos fsicos.
Soporta la transferencia de mltiples datos y flujos de mensajes entre el host
y los dispositivos

d.- Robustez

Manejo de errores y mecanismos de recuperacin ante fallos implementados
en el protocolo.
Insercin dinmica de dispositivos
Soporte para la identificacin de dispositivos defectuosos.

e.- Implementacin de bajo coste

Sub canal de bajo coste a 1.5 Mbps
Conectores y cables de bajo coste
Adecuado para el desarrollo de perifricos de bajo coste
1.1.3.3 Versiones del USB
a.- Versin 1.0
Esta versin, publicada en Enero 1996, fue iniciada por el USB-IF cuyos integrantes,
ya comentbamos antes (COMPAQ, Digital Equipment Corp., IBM, Intel Corp.,
Microsoft Corp., NEC y Northern Telecom).
Esta es la primera versin oficial que sali a la luz y que rene todas las
caractersticas arriba mencionadas, con un lmite mximo de velocidad de 12 Mbps
Inicialmente la especificacin USB fue diseada para conectar eficientemente
telfonos a PCs. Sin embargo, este nuevo estndar de conectividad tuvo tanto xito
que el Foro de implementadores decidi empujar al USB como un estndar de PC, a
pesar que el desarrollo de dispositivos USB para telefona an no se ha realizado.
En la siguiente tabla podemos observar el alcance de aplicacin del USB con
respecto a la velocidad mxima establecida por las caractersticas del bus. Esto es
tambin aplicable a las versiones 1.x del bus.

33

RENDIMIENTO APLICACIONES ATRIBUTOS
VELOCIDAD BAJA Teclado y ratn Bajo coste
Dispositivos Interactivos
Perifricos de
entretenimiento
(Des)Conexin en
caliente
10-100 Kb/s Configuracin del Monitor Fcil uso
VELOCIDAD MEDIA
Telfono ISDN/RDSI Bajo coste
Audio PBX
(Des)Conexin en
caliente
Video comprimido POTS Fcil uso
500 Kb/s - 10 Mb/s Audio
Mltiples dispositivos.
Garantizada la latencia
Garantizado el ancho
de banda
Tabla1.5: Velocidad del puerto USB
Fuente: www.usb.org


b.- Versin 1.1
El objetivo de esta segunda versin, que sali a la luz en Septiembre de 1998, era
solucionar problemas de ambigedad en la especificacin 1.0 para facilitar el trabajo
a los desarrolladores tanto de software como de hardware sin que hubiera que hacer
cambios en los dispositivos para hacerlos funcionar bajo esta versin.

No se hicieron cambios en los controladores de host para mantener esta
compatibilidad.
El alcance de aplicacin de esta versin coincide con la de su predecesora, as como
sus caractersticas generales.

34

Dado que el USB se le dio una aplicacin distinta a la de las telecomunicaciones,
IBM y Northern Telecom no continuaron como miembros. Para esta especificacin
solo quedaron COMPAQ, Intel, Microsoft y NEC ya que Digital Equipment Corp. es
ahora parte de COMPAQ.

c.- Versin 2.0
Esta versin que sali al mercado a mitad del 2000, tras la unin al consorcio de
otras 3 compaas (Hewlett Packard, Philips y Lucent), con lo que volvan a ser siete
las integrantes del USB-IF.
Como principal caracterstica nos encontramos con un aumento de velocidad hasta
480 Mbps (casi 40 veces la velocidad anterior) con una diferencia de coste casi
mnimo. De este aumento de velocidad le viene el nombre de Hi-Speed, que es fcil
de confundir con Full-Speed.
Full-Speed era el trmino que se le daba a las versiones USB 1.x que alcanzaban 12
Mbps, por lo que se debe tener en cuenta a la hora de hablar sobre ello.
Este incremento de velocidad ha permitido sustituir en muchos casos el interfaz SCSI
por el USB. En total USB 2.0 soporta tres tipos distintos de velocidad:
Hi-Speed 480 Mbps
Full-Speed 12 Mbps
Low-Speed 1.5 Mbps
El alcance de uso para la versin USB 2.0 se ve incrementada notablemente respecto
a sus predecesoras. As quedara la tabla anterior modificada.
RENDIMIENTO APLICACIONES ATRIBUTOS
VELOCIDAD
ALTA

Video Video Gran ancho de banda

35

Unidades de
almacenamiento
Discos duros y
grabadoras
Latencia garantizada
Video Comprimido Fcil uso
25-500 Mb/s
Bsicamente, USB 2.0 incluye todo lo que ofrece USB 1.1 y aade el modo de alta
velocidad. USB 2.0 tambin usa el mismo tipo de cables y conectores para conectar
los dispositivos de alta velocidad, sin embargo los hubs USB clsicos ralentizarn
los dispositivos USB 2.0. Otro requisito es que es necesario un controlador de host
para USB 2.0 si queremos tener disponibles la conexin de alta velocidad con un
dispositivo de este tipo.
Los hubs USB 2.0 tienen ahora mucho ms trabajo que hacer que en el USB 1.1 ya
que necesitan manejar todo el trfico de tres tipo de dispositivos con velocidades
distintas. Conectando un dispositivo USB 1.1 en uno USB 2.0 funcionara bien, pero
no lo hara si lo hiciramos al revs, adems de ralentizarse a 12 Mbps,
posiblemente, el sistema operativo avisara de su mal uso.
La forma de distinguir si tu ordenador tiene USB de alta velocidad es mediante los
logotipos registrados por el grupo promotor del USB (el USB-IF), que como se
puede ver ms arriba est etiquetado en rojo con Hi-Speed. Dicho logotipo slo lo
pueden usar las empresas desarrolladas de hardware que hayan pasados los tests del
USB-IF.
Cabe destacar que el USB 2.0 es simplemente una extensin y nunca llegara a
reemplazar completamente al 1.1 ya que hay productos como teclados genricos,
ratones, joysticks o altavoces que no requieren la gran velocidad que ofrece la
tecnologa USB 2.0. Slo dispositivos de alta velocidad como webcams o sistemas
de alta capacidad necesitarn el mximo de velocidad, aunque los ordenadores los
fabriquen slo con puertos USB 2.0.



36


Figura 1.28 Ejemplos Conexin USB OTG
Fuente: Los Autores
d.- Versin USB OTG
USB OTG o "USB-On-The-Go" es un variacin de la especificacin USB 2.0 que
permite a un slo puerto actuar como servidor o como dispositivo, ms
concretamente permitira comunicarse a todo tipo de unidades con USB directamente
entre ellas sin la necesidad de ordenador. Incluso despus de que el cable est
conectado y las unidades se estn comunicando, las dos unidades pueden "cambiar"
de rol bajo el control de un programa.

Figura 1.27 Logo Conexin USB OTG
Fuente: www.usb.org
En resumen, USB On-The-Go define las siguientes caractersticas aadidas a la
especificacin USB:
Un nuevo estndar para conectores USB y cables (Mini conectores)
El hecho de que dispositivos que antes eran solamente perifricos ahora
puedan ser hosts (dual-role devices) .
La capacidad de ser host y perifricos y cambiar dinmicamente de rol segn
convenga (el uso del Host Negotiation Protocolo HNP para el cambio de rol)
Protocolo de peticin sesin (Session Request Protocol o SRP).
Requisitos de bajo consumo para promocionar el USB en dispositivos
alimentados con bateras (opcin Micropower aadido a las ya existentes low
y high power).
Esta tecnologa podra ser muy til para dispositivos como el PDA, donde el enlace
USB podra conectarse a un PC como un dispositivo o conectarse como servidor a un
teclado o ratn.




37

Host Perifrico Aplicacin
Telfono mvil Telfono mvil
Cmara digital
Reproductor MP3
Scanner
Intercambiar informacin
de contactos
mandar por mail fotos
Subir fotos a una web
Subir/bajar msica
Cmara Digital Cmara digital
Telfono mvil
Impresora
Dispositivo de
almacenamiento
Intercambiar fotos
Mandar por mail fotos
Subir fotos a una web
Imprimir fotos
Almacenar fotos
Impresora Cmara digital
Scanner
Dispositivo de
almacenamiento
Imprimir fotos
Imprimir imgenes
escaneadas

Reproductor MP3 Reproductor MP3
Dispositivo de
almacenamiento
Intercambiar canciones
Subir/bajar canciones
Osciloscopio Impresora Imprimir imgenes
PDA PDA
Impresora
Telfono mvil
Reproductor MP3
Escner
Dispositivo de
almacenamiento
GPS
Cmara digital
Osciloscopio
Intercambiar ficheros
Imprimir ficheros
Subir/bajar ficheros
Subir/bajar msica
Escanear fotos
Obtener direcciones
Informacin de mapas
Subir fotos
Configurar un osciloscopio
Tabla1.6: Perifricos que utilizan el puerto USB
Fuente: www.usb.org

38

Dependiendo de la velocidad de transmisin (low-speed o Hi-Speed) existen dos
logotipos que identifica la existencia de un puerto USB On-The-Go en el dispositivo
y que es fcilmente identificable al igual que con el resto de especificaciones.

e.- Versin 3.0
USB 3.0, la prxima versin del estndar USB (fig.1.29), alcanzar una velocidad de
transferencia de 4.8Gbps, diez veces la velocidad de USB 2.0 (480Mbps)

Figura 1.29 Conector USB 2.0
Fuente: www.usb.org

Como podemos ver en la fig. 1.30, en USB 3.0 se aaden cinco contactos nuevos que
son los que utiliza el canal de alta velocidad. Los cuatro contactos clsicos se
mantienen, para mantener la compatibilidad con USB 2.0. Es decir, el conector
contiene nueve contactos en total.

Figura 1.30 Conector USB 3.0
Fuente: www.usb.org
El que es totalmente nuevo es la versin mini-USB (fig. 1.31); por lo que se puede
ver en el dibujo, parece que solo incluye los cinco contactos para el canal de alta
velocidad; si esto es as significa que no ser compatible con el conector mini-USB
actual.




Figura 1.30 Mini conector USB 3.0
Fuente: www.usb.org

39

1.1.3.4 Topologa del bus
El Universal Serial Bus conecta los dispositivos USB con el host USB. La
interconexin fsica USB es una topologa de estrellas apiladas donde un hub es el
centro de cada estrella. Cada segmento de cable es una conexin punto-a-punto entre
el host y los hubs o funcin, o un hub conectado a otro hub o funcin.
El nmero mximo de dispositivos que puede conectar USB es de 127, pero debido a
las constantes de tiempo permitidas para los tiempos de propagacin del hub y el
cable, el nmero mximo de capas permitido es de siete (incluida la capa raz) con un
mximo de longitud de cable entre el hub y el dispositivo de 5 metros. Cabe destacar
que en siete capas, slo se soportan cinco hubs que no sean raz en una ruta de
comunicacin entre el host y cualquier dispositivo. Un dispositivo compuesto ocupa
dos capas, por eso, no puede ser activado si est acoplado en la ltima capa de nivel
siete.

Figura 1.31 Topologa del bus
Fuente: http://usuarios.lycos.es/kurganz/datos_tecnicos/topologia.html
La topologa del bus USB se puede dividir en tres partes:
La capa fsica: Como estn conectados los elementos fsicamente
La capa lgica: Los roles y las responsabilidades de los elementos USB

40

La relacin software del cliente-funcin: Como se ven mutuamente el
software del cliente y los interfaces de las funciones relacionadas

Figura 1.31 Divisin de la topologa del bus
Fuente: http://usuarios.lycos.es/kurganz/datos_tecnicos/topologia.html

1.1.3.4.1 La capa fsica
La arquitectura fsica del USB se centra en las piezas de plstico y de metal con las
que el usuario debe tratar para construir un entorno USB.
Cada entorno fsico USB est compuesto por cinco tipos de componentes:
El host
El controlador del host
Los enlaces
Los dispositivos
Los hubs
Los dispositivos estn conectados fsicamente al host a travs de una topologa en
estrella, como se ilustra en la figura.

41

Los puntos de acople estn provistos de una clase de dispositivos USB llamados
hubs, los cuales tienen puntos de acople adicionales llamados puertos.
Estos hubs se conectan a otros dispositivos a travs de enlaces (cables de cuatro
hilos).
El host proporciona uno o ms puntos de acople a travs del hub raz.
Para prevenir los acoples circulares, se impone una estructura ordenada por capas en
la topologa de estrella y como resultado se obtiene una configuracin al estilo de un
rbol como se ve en la figura.
Todas las comunicaciones fsicas son iniciadas por el host.
Esto quiere decir que cada milisegundo, o en cada ventana de tiempo que el bus lo
permita, el host preguntar por nuevos dispositivos en el bus USB. Adems el host
inicia todas las transacciones fsicas y soporta todas las transferencias de datos sobre
la capa fsica
a.- El host USB
El host es el sistema de computacin completo, incluyendo el software y el hardware,
sobre el cual se sostiene el USB.
El host tiene la habilidad de procesar y gestionar los cambios de configuracin que
puedan ocurrir en el bus durante su funcionamiento. El host gestiona el sistema y los
recursos del bus como el uso de la memoria del sistema, la asignacin del ancho de
banda del bus y la alimentacin del bus. El host tambin ayuda al usuario con la
configuracin automtica de los dispositivos conectados y reaccionando cuando son
desconectados.
Un host puede soportar uno o ms buses USB. El host gestiona cada bus
independientemente de los dems. Los recursos especficos del bus como el ancho de
banda asignado son nicos a cada bus. Cada bus est conectado al host a travs de un
controlador del host.

42

Slo hay un host en cualquier sistema USB. Desde el interfaz USB hasta el sistema
de host del ordenador es lo que se le llama controlador de host y puede estar
implementado como combinacin de hardware, firmware o software. Integrado
dentro del sistema de host hay un hub raz que provee de un mayor nmero de
puntos de acople al sistema.
Siempre que es posible, el software del USB usa el interfaz existente del sistema de
host para gestionar las interacciones superiores. Por ejemplo, si un sistema de host
usa la Gestin de Energa Avanzada (APM), el software del USB conecta al APM
para interceptar, suspender las notificaciones.
b.- El controlador del host
El controlador de host est formado por el hardware y el software que permite a los
dispositivos USB ser conectados al host. Este controlador es el agente iniciador del
bus, es decir es el que comienza las transferencias en el bus.
El controlador de bus es el maestro en un bus USB. Otros buses como PCI, permiten
la presencia de mltiples maestros donde cada uno arbitra sus accesos al bus. El la
arquitectura USB slo hay un controlador de host por cada bus USB y por eso no hay
arbitracin para el acceso al bus.
Como las transferencias de datos de los dispositivos pueden ser basadas en datos o en
la disponibilidad espacial del dispositivo, la mayora de los controladores de host
estn implementados como dispositivos maestros de bus PCI.
Esto permite al controlador de host iniciar una transferencia de datos en el bus del
sistema cuando le sea necesario, sin requerir la intervencin del host de la CPU para
cada transferencia.
El controlador se comporta como un bus maestro PCI multicanal programable para dar
soporte a las necesidades de transferencia de datos de mltiples dispositivos conectados al
bus USB. La figura de la izquierda muestra una vista conceptual del controlador del
bus USB.

43

La parte software consiste en el driver del controlador de host (HCD). Este software
interacta con el hardware del controlador de host a travs del interfaz
hardware/software.
La parte hardware del controlador de host consiste en un hub raz que proporciona
los puertos USB y los buffers de datos (colas) donde son almacenadas cuando son
movidas a/desde memoria.
El host USB interacta con los dispositivos USB a travs del controlador. Las
funciones bsicas del controlador de host son:
Detectar la insercin o desconexin de dispositivos USB.
Gestionar el flujo de control entre el host y los dispositivos.
Gestionar el flujo de datos entre el host y los dispositivos
Coleccionar estadsticas de actividad y estado
Proveer una cantidad limitada de energa a los dispositivos conectados
Hay dos implementaciones estandarizadas de la parte hardware de los controladores
de host USB. Ambas proporcionan la misma funcionalidad y rendimiento para la
interconexin. Estas implementaciones son:
El Universal Host Controller Inteface (UHCI) definido por Intel
Open Host Controller Interface (OpenHCI o OHCI) definido por Microsoft
UHCI est definido como que la parte software tiene una gran responsabilidad para
mantener el hardware en funcionamiento. Esto permite a esta implementacin ser
relativamente simple y realizarse con un bajo nmero de puertas.
OHCI est definida como que la parte hardware tiene ms responsabilidad por el
mantenimiento del flujo de datos, para que la parte software tenga menos trabajo que
hacer. Esta otra implementacin tiende a ser ms compleja y tiene una cantidad
mayor de puertas que la UHCI
c.- Dispositivos USB
Un dispositivo es una coleccin de funcionalidad que lleva a cabo algn propsito de
utilidad. Por ejemplo, un dispositivo podra ser un ratn, un teclado, una cmara...

44

Puede haber mltiples dispositivos simultneamente en el mismo bus. Cada
dispositivo lleva consigo informacin que puede ser til para identificar sus
caractersticas. La informacin que describe al dispositivo se encuentra asociada con
el canal de control. Esta informacin se divide en tres categoras:
Estndar: Esta es la informacin cuya definicin es comn a todos los
dispositivos USB e incluye elementos como la identificacin del fabricante,
la clase, la gestin de energa....
Clase: La definicin de esta informacin vara dependiendo del aparato. Es
una clasificacin de los dispositivos en cuanto a sus prestaciones.
USB Vendor: El fabricante del perifrico puede poner aqu cualquier
informacin deseada.
El software del host es capaz de determinar el tipo de dispositivo conectado haciendo
uso de esta informacin y de un direccionamiento individual. Todos los dispositivos
USB son accedidos por una direccin USB que es asignada dinmicamente cuando
se conecta, asignndole tambin un nmero. Cada aparato soporta adems uno o ms
canales a travs de los cuales el host puede comunicarse con el dispositivo. Una vez
ha sido reconocido e identificado el dispositivo, el software del host puede hacer que
los drivers del dispositivo apropiados obtengan el control del nuevo dispositivo
conectado.
Cuando desconectamos el dispositivo, la direccin puede ser reutilizada para el
prximo dispositivo conectado.
En cuanto a los tipos de dispositivos nos encontramos con dos clases:
Hubs, que proporcionan los puntos de acople adicionales al USB.
Funciones, que le dan al sistema la funcionalidad (impresoras, unidades de
almacenamiento...).
Funciones
Una funcin es un dispositivo USB que es capaz de transmitir y recibir datos o
informacin de control sobre el bus. Tpicamente se implementa como un perifrico

45

separado con un cable que se conecta en un puerto del hub. Sin embargo hay una
gran flexibilidad a la hora de construir dispositivos. Una funcin simple pueden dar
una funcionalidad simple (un micrfono, unos altavoces...) o puede estar compuesto
en distintos tipos de funcionalidad, como unos altavoces con un panel LCD. Este tipo
de dispositivos se les llama funciones mltiples o dispositivo compuesto.
Otra forma de construir productos con mltiples funciones es creando un dispositivo
compuesto. Este es el trmino usado cuando un hub est acoplado junto a mltiples
dispositivos USB dentro de un mismo paquete. El usuario ver una sola unidad en el
extremo del cable, pero internamente tiene un hub y varios dispositivos. Este tipo de
"paquetes" tienen una direccin de bus para cada uno de los componentes, en
contraposicin a los dispositivos compuestos que tienen una nica direccin.
Un buen ejemplo de un dispositivo compuesto sera un teclado USB que tuviera una
conexin adicional para ratn. A pesar de que el teclado es un perifrico, en este caso
se le puede acoplar un ratn y por supuesto se necesitara de un hub interno en el
teclado para que esto pueda funcionar.
Cada funcin contiene la informacin sobre la configuracin que describe su
capacidad y requisitos en cuestin de recursos. Antes de que una funcin pueda ser
usado debe ser configurado por el host.
Algunos ejemplos de funciones pueden ser los siguientes:
Una interfaz humana (HID) como ratn, teclado, tablas digitalizadoras o
controladores de juegos
Dispositivos de imgenes: cmaras, escneres o impresoras
Dispositivos de almacenamiento: CD-ROMs, DVDs disqueteras...

1.1.3.4.2 La capa lgica
El punto de vista lgico presenta capas y abstracciones que son relevantes para los
distintos diseadores e implementadores. La arquitectura lgica describe como unir
el hardware del dispositivo USB a un driver del dispositivo en el host para que tenga
el comportamiento que el usuario final desea.

46

La vista lgica de esta conexin es la mostrada en el esquema siguiente. En el
podemos ver como el host proporciona conexin al dispositivo, donde esta conexin
es a travs de un simple enlace USB. La mayora de los dems buses como PCI, ISA,
etc. proporcionan mltiples conexiones a los dispositivos y los drivers lo manipulan
mediante algunas combinaciones de estas conexiones (I/O y direcciones de memoria,
interrupciones y canales DMA).
Fsicamente el USB tiene slo un cable simple de bus que es compartido por todos
los dispositivos del bus. Sin embargo, desde el punto de vista lgico cada dispositivo
tiene su propia conexin punto a punto al host.
Aunque la mayora de las actividades de los hosts o de los dispositivos lgicos usan
esta perspectiva lgica, el host mantiene el conocimiento de la topologa fsica para
dar soporte al proceso de desconexin de los hubs. Cuando se quita un hub, todos
los dispositivos conectados a l son quitados tambin de la vista lgica de la
topologa.

1.1.3.4.3 La relacin "Software del cliente-funcin"
A pesar de que la topologa fsica y lgica del USB refleja la naturaleza de
comparticin del bus, la manipulacin del interfaz de una funcin USB por parte del
software del cliente (CSw) se presenta con una vista distinta.
El software del cliente para las funciones USB debe usar el interfaz de programacin
software USB para manipular sus funciones en contraposicin de las que son
manipuladas directamente a travs de la memoria o los accesos I/O como pasa con
otros buses (PCI,EISA,PCMCIA,...). Durante esta operacin, el software del cliente
debera ser independiente a otros dispositivos que puedan conectarse al USB.

1.1.3.5 Tipos de transferencias
La interpretacin de los datos que se transmitan a travs de las tuberas,
independientemente de que se haga siguiendo o no una estructura USB definida,
corre a cargo del dispositivo y del software cliente. No obstante, USB proporciona

47

cuatro tipos de transferencia de datos sobre las tuberas para optimizar la utilizacin
del bus en funcin del tipo de servicio que ofrece la funcin.
Estos cuatro tipos son:
Transferencias de control
Transferencias iscronas
Transferencias de interrupcin
Transferencias de bultos.

a.- Transferencias de control
Es el nico tipo de transferencia que utiliza tuberas de mensajes, soporta por lo tanto
comunicaciones de tipo configuracin/comando/estado entre el software cliente y su
funcin. Una transferencia de tipo control se compone de una transaccin de setup
del host a la funcin, cero o mas transacciones de datos en la direccin indicada en la
fase de setup, y por ltimo una transaccin de estado de la funcin al host. La
transaccin de estado devolver xito cuando el end point haya completado
satisfactoriamente la operacin que se haba solicitado.
Por lo tanto este tipo de transferencia est pensado para configurar, obtener
informacin, y en general para manipular el estado de los dispositivos. El tamao
mximo de datos que se transmiten por el bus viene determinado por el end point. En
dispositivos de velocidad media los posibles tamaos mximos son de 8, 16, 32 o 64
bytes, en velocidad baja el tamao es de 8 bytes y en velocidad alta 64 bytes. El
porcentaje de (micro) frame utilizado ronda el 30% en velocidad baja, 5% en
velocidad media y el 2% en alta.
El end point puede estar ocupado durante la fase de envo de datos y la fase de
estado, en esos casos el end point indica al host que se encuentra ocupado, invitando
al host a intentarlo mas tarde. Si el end point recibe un mensaje de setup y se
encontraba en mitad de una transferencia de control, aborta la transferencia actual y
pasa a la nueva que acaba de recibir. Normalmente el host no inicia una nueva
transferencia de control con un end point hasta que no ha acabado la actual, si bien
debido a problemas de transmisin el host puede considerar que se han producido

48

errores y pasar a la siguiente. USB proporciona deteccin y recuperacin, va
retransmisin, de errores en las transferencias de control.

b.- Transferencias iscronas
Hacen uso de tuberas stream. Garantiza un acceso al bus USB con una latencia
limitada, asegura una transmisin constante de los datos a travs de la tubera
siempre y cuando se suministren datos, adems en caso de que la entrega falle debido
a errores no se intenta reenviar los datos.
USB limita el mximo tamao de datos para los end points con tipo de transferencia
iscrona a 1023 bytes para los end points de velocidad media y 1024 bytes para
velocidad alta. De hecho las transferencias iscronas solo se pueden usar en
dispositivos de velocidad alta o media. En funcin de la cantidad de datos que se
estn transmitiendo en un momento dado, en velocidad medio el porcentaje de frame
utilizado puede variar desde un 1% hasta un 69%, mientras que el porcentaje de
microframe utilizado en velocidad alta vara entre un 1% y un 41%.
c.- Transferencias de interrupcin
Utiliza tuberas stream. Este tipo de transferencia est diseado para servicios que
envan o reciben datos de forma infrecuente. Esta trasferencia garantiza el mximo
servicio para la tubera durante el periodo en el que enva. En caso de error al enviar
los datos se reenvan en el prximo periodo de envo de datos.
El tamao de paquete de datos mximo es de 1024 bytes para alta velocidad, 64
bytes para velocidad media y 8 bytes para baja velocidad. En ningn caso se precisa
que los paquetes sean de tamao mximo, es decir, no es necesario rellenar los
paquetes que no alcancen el mximo. Cuando en una transferencia de interrupcin se
necesite transmitir ms datos de los que permite el paquete mximo, todos los
paquetes a excepcin del ltimo paquete deben de tener el tamao mximo. De modo
que la transmisin de un paquete se ha llevado a cabo cuando se ha recibido la
cantidad exacta esperada o bien, se ha recibido un paquete que no alcanza el tamao
mximo. El porcentaje de (micro) frame utilizado ronda el 13% en velocidad baja y
el 2.5% en velocidad media, mientras que en velocidad alta para cantidades similares

49

utilizadas para obtener los anteriores porcentajes se obtienen resultados del 1%, pero
para cantidades muy superiores se puede llegar a una utilizacin del 42%.

d.- Transferencias de bultos ("Bulk")
Hace uso de tuberas stream. Est diseado para dispositivos que necesitan transmitir
grandes cantidades datos en un momento determinado sin importar mucho el ancho
de banda disponible en ese momento. Esta transferencia garantiza el acceso al USB
con el ancho de banda disponible, adems en caso de error se garantiza el reenvo de
los datos. Por lo tanto este tipo de transferencia garantiza la entrega de los datos pero
no un determinado ancho de banda o latencia.
El tamao mximo de paquete de datos para velocidad media es de 8, 16, 32 o 64
bytes, mientras que en velocidad alta es de 512 bytes. Los dispositivos de velocidad
baja no disponen de end points con este tipo de transferencia. No es necesario que los
paquetes se rellenen para alcanzar el tamao mximo. El porcentaje de frame
utilizado en velocidad media en funcin del nmero de bytes enviados vara entre el
1% y el 5%, mientras que el porcentaje de microframe en velocidad alta vara entre
un 1% y un 5%, eso s, teniendo en cuenta mayor cantidad de datos.

1.1.3.6 Parte Elctrica del USB.

a.- Identificacin de la velocidad del dispositivo
Para poder iniciar cualquier tipo de transaccin cuando se conecta el dispositivo al
host, es necesario que este conozca la velocidad a la que trabaja. Con esa finalidad
existe un mecanismo a nivel elctrico. La diferencia entre los dispositivos de
velocidad media y los de velocidad baja, es que en velocidad media tiene una
resistencia conectada al D+, en velocidad baja la misma resistencia se encuentra en
D- y no en D+
De forma que despus del reset el estado de reposo de la lnea es diferente si se trata
de baja o media velocidad. En el caso de dispositivos de alta velocidad lo que se hace

50

es que en un principio se conecta como un dispositivos de velocidad media y ms
tarde a travs de un protocolo se pasa a velocidad alta.

b.- Codificacin de datos
El USB utiliza la codificacin NRZI para la transmisin de paquetes. En esta
codificacin los "0" se representan con un cambio en el nivel, y por el contrario los
"1" se representan con un no cambio en el nivel. De modo que las cadenas de cero
producen transiciones consecutivas en la seal, mientras que cadenas de unos
produce largos periodos sin cambios en la seal. A continuacin un ejemplo:
c.- Relleno de bits
Debido a que cadenas de unos pueden producir largos periodos en los que la seal no
cambia dando lugar a problemas de sincronizacin, se introducen los bits de relleno.
Cada 6 bits consecutivos a "1" se inserta un bit a "0" para forzar un cambio, de esta
forma el receptor puede volverse a sincronizar. El relleno bits empieza con el patrn
de seal Sync. El "1" que finaliza el patrn de seal Sync es el primer uno en la
posible primera secuencia de seis unos.
En las seales a velocidad media o baja, el relleno de bits se utiliza a lo largo de todo
el paquete sin excepcin. De modo que un paquete con siete unos consecutivos ser
considerado un error y por lo tanto ignorado.
En el caso de la velocidad alta se aplica el relleno de bits a lo largo del paquete, con
la excepcin de los bits intencionados de error usados en EOP a velocidad alta.

d.- Sync
Teniendo en cuenta que K y J representan respectivamente nivel bajo y nivel alto, el
patrn de seal Sync emitido, con los datos codificados, es de 3 pares KJ seguidos de
2 K para el caso de velocidad media y baja. Para velocidad alta es una secuencia de
15 pares KJ seguidos de 2 K. El patrn de seal Sync siempre precede al envo de
cualquier paquete, teniendo como objetivo que el emisor y el receptor se sincronicen
y se preparen para emitir y recibir datos respectivamente.

51

Si partimos de que el estado de reposo de la seal es J , podemos interpretar Sync
como una secuencia impar de "0's" y un "1" que se inserta antes de los datos.

e. - EOP ("End Of Packet")
A todo paquete le sigue EOP, cuya finalidad es indicar el final del paquete.
En el caso de velocidad media y baja el EOP consiste en que, despus del ltimo bit
de datos en el cual la seal estar o bien en estado J , o bien en estado K, se pasa al
estado SE0 durante el periodo que se corresponde con el ocupado por dos bits,
finalmente se transita al estado J que se mantiene durante 1 bit. Esta ltima transicin
indica el final del paquete.
En el caso de la velocidad alta se utilizan bits de relleno errneos, que no estn en el
lugar correcto, para indicar el EOP. Concretamente, el EOP sin aplicar codificacin
consistira en aadir al final de los datos la secuencia 0111 1111.

1.1.3.7 Parte Mecnica del USB.
Como ya se ha visto la topologa fsica USB consiste en la conexin del puerto de
bajada de un hub o host, con el puerto de subida de algn otro dispositivo o hub. Para
facilitar la conexin de dispositivos de cara el usuario, USB utiliza dos tipos de
conectores totalmente diferentes, los conectores de Serie A y los conectores de serie
B. Los conectores de serie A permiten la conexin directa de dispositivos USB con el
host o con el puerto de bajada de un host, y es obligatorio que estn presentes en
todos los dispositivos y hubs USB. Los conectores de Serie B no son obligatorios y
sirven para conectar un cable USB con el puerto de subida de un dispositivo,
permitiendo por parte de los fabricantes de dispositivos la utilizacin de cables
estndar USB.
El cable USB consiste de cuatro conductores, dos conductores de potencia y dos de
seal, D+y D-. Los cables de media y alta velocidad estn compuestos por un par
trenzado de seal, adems de GND (Tierra) y Vbus.
Existen tres tipos de cables USB: cable estndar de quita y pon, cable fijo de media y
alta velocidad, y cable fijo de baja velocidad.

52

a.- Cable estndar de quita y pon
Se trata de un cable de velocidad alta y media, con un conector macho de Serie A en
un extremo y un conector macho de Serie B en el otro extremo. Esto permite a los
fabricantes de dispositivos fabricarlos sin cable y al usuario le facilita la sustitucin
del cable en caso de que se estropee.

Figura1.31.1: Cable USB
Fuente: Manual USB PLUS

b.- Cable fijo de velocidad alta y media
Con la denominacin de fijo nos referimos a los cables que son proporcionados por
el fabricante del dispositivo fijos a este, o bien sin ser fijos, con un conector
especifico del fabricante. Es obligatorio que en un extremo tenga un conector macho
de Serie A. Dado que lo suministra el fabricante, puede ser utilizado por dispositivos
tanto de velocidad alta y media, como de velocidad baja. En el caso de que se utilice
para un dispositivo de velocidad baja, adems de poder ser utilizado con dispositivos
de velocidad media y alta, deber cumplir con todos los requisitos propios de la
velocidad baja.

Figura1.31.2: Cable USB Fijo
Fuente: Manual del PLC DL06, 2a. edicin en espaol, 6/07

53

c.- Cable fijo de velocidad baja
Al igual que el cable fijo de alta y media velocidad tiene un conector macho de Serie
A en un extremo, mientras que el otro depende del fabricante. La diferencia es que
este tipo de cables slo funciona con dispositivos de velocidad baja.
Contacto Seal Cable
1 VBUS Rojo
2 Datos- Blanco
3 Datos+ Verde
4 GND Negro

Tabla1.7: Pines Cable Fijo de Velocidad Baja
Fuente: Manual del PLC DL06, 2a. edicin en espaol, 6/07
1.1.3.8 Icono USB.
El icono USB es obligatorio que se encuentre en los conectores de serie A y B, esto
facilita al usuario tanto el reconocimiento de que se trata de un cable USB, como la
orientacin a la hora de conectarlo. En los siguientes dibujos se puede observar el
diseo y la colocacin del logotipo.


Figura1.32: cono del USB
Fuente: www.usb.org
1.1.4 Radio Frecuencia.
Las ondas de radio son fciles de generar, pueden viajar distancias largas y penetrar
edificios sin problemas, de modo que se utilizan mucho en la comunicacin, tanto de
interiores como de exteriores. Las ondas de radio tambin son omnidireccionales,
sea viajan en todas las direcciones desde la fuente, por lo cual el transmisor y el
receptor no tienen que alinearse fsicamente.

54

Las propiedades de las ondas de radio dependen de la frecuencia. A bajas
frecuencias, las ondas de radio cruzan bien los obstculos, pero la potencia se reduce
drsticamente con la distancia a la fuente. A frecuencias altas, las ondas de radio
tienden a viajar en lnea recta y a rebotar en los obstculos. Tambin son absorbidas
por la lluvia. Todas las ondas de radio estn sujetas a interferencia por los motores y
equipos elctricos.
1.1.4.1 El Espectro Electromagntico
Cuando los electrones se mueven crean ondas electromagnticas que se pueden
propagar en el espacio libre, an en el vaco. La cantidad de oscilaciones por
segundo de una onda electromagntica es su frecuencia, f, y se mide en Hz (en
honor a Heinrich Herz). La distancia entre dos mximos o mnimos consecutivos se
llama longitud de onda y se designa con la letra griega.
En el vaco todas las ondas electromagnticas viajan a la misma velocidad, sin
importar su frecuencia. Esta velocidad, usualmente llamada velocidad de la luz, c, es
aproximadamente 3x10
8
m/seg.

Fig. 1.32.1 El espectro electromagntico.
Fuente: www.um.es/docencia/barzana/IMGTEORIA/espectro-em.jpg





55

En la grafica anterior se muestra el espectro electromagntico. Las porciones de
radio, microondas, infrarrojo y luz visible del espectro pueden servir para transmitir
informacin modulando la amplitud, la frecuencia o la fase de las ondas. Las bandas
que se listan en la parte inferior de la figura son los nombres oficiales de la ITU. Los
trminos LF, MF y HF se refieren a las frecuencias baja, media y alta,
respectivamente. Las bandas ms altas se denominan muy, ultra, sper,
extremadamente y tremendamente alta frecuencia (VHF, UHF, SHF, EHF, THF
respectivamente).

1.1.4.2 Redes Inalmbricas
Las redes inalmbricas son redes que resuelven toda o una parte de su capa fsica en
base a conexiones no cableadas. En particular, el documento se ocupar de WLAN
(Wireless Local rea Network), para estas redes se establecieron los estndares
802.11 y 802.11b que es una extensin del anterior y luego se comentar algo de
redes infrarrojas.
Proveen todas las caractersticas y beneficios de las tradicionales tecnologas LAN
como Ethernet y Token Ring, pero sin las limitaciones de los cables que stas
poseen.

Fig. 1.32.2 Frecuencia de operacin
Fuente: CCNA Mdulo Wireless de cisco

Una red inalmbrica puede ampliar la libertad de un usuario respecto de su ubicacin
fsica manteniendo la disponibilidad de la red sin estar atado a un escritorio,
brindando la posibilidad de estar conectado mientras desayuna en el saln comedor,
espera en una sala ... o bien atiende una reunin en la sala de juntas.

56


Figura 1.33: Esquema de redes Wireless
Fuente: www.radioptica.com/Radio/wlan.asp

Establecer una WLAN es ms rpido, flexible, muchas veces ms barato y ms
realizable que hacerlo con una red cableada, dado que tender los cables es un
problema en s mismo.
Hoy da dos tecnologas son las ms comunes, la Home RF y la Wi-Fi (IEEE
802.11), de estas la que parece ser la ms flexible es la 802.11.
Logotipo de WiFi.
Tenemos en la figura siguiente los inicios de esta tecnologa, los diferentes rangos de
velocidad que maneja, hay que recalcar que actualmente nos encontramos en el
protocolo 802.11 n.


Figura 1.34: Velocidad de redes Wireless
Fuente: CCNA Mdulo 2 de cisco

El acceso de un usuario a una WLAN supera los 11 Mb/s, que es un ancho de banda
ms que considerable para muchas aplicaciones o servicios a travs de PC o
dispositivos mviles.


57

1.1.4.2.1 Modo Ad Hoc
Solo punto a punto
Fcil de configurar
No hay relay va los puntos
Conjunto de Servicios Bsico Independiente

Figura 1.35: Topologa WLan
Fuente: CCNA Mdulo 2 de cisco

1.1.4.3 Mdulos de Radio Frecuencia
Transmisor y Receptor TWS-# y RWS-#

Figura 1.35.1: Mdulo Transmisor
Fuente: www.ishtronics.com/tws434a.jpg

El mdulo transmisor viene ya ajustado en una frecuencia, que puede ser de 303,875
MHz (TWS-303) ,315 MHz (TWS-315), 418 MHz (TWS-418) y 433,92 MHz
(TWS-433). Est listo para su uso. Slo se debe colocar una antena, conectarle la

58

alimentacin y comenzar a enviarle datos. Para facilitar la transmisin de datos
codificados, existe un codificador que hace juego, que es el Holtek HT12E.

Figura 1.35.2: TWS-434
Fuente: R-8Px.pdf

Pin 1: GND
Pin 2: IN
Pin 3: VCC
Pin 4: ANT
Potencia de salida de RF: 8 mW


ESPECIFICACIONES
Smbolo Caractersticas Condiciones Mn. Tipo. Mx. Unidad
V
cc
Voltaje de alimentacin 1,5 - 12 V
I
cc
Corriente mxima - 5 9 mA
V
ih
Voltaje mximo entrada I
dato
=100A
(alto)
V
cc
-0,5 - V
cc
V
V
il
Voltaje mnimo entrada I
dato
=0A (bajo) - - 0,3 V
P
out
Potencia RF sobre 50
ohm
-3 0 +2 dBm
T
bw
Ancho banda
modulacin

Codificacin
externa
- 5 - kHz
T
r
Flanco subida
modulacin
- - 100 S
T
f
Flanco bajada
modulacin
- - 100 S
Alcance 20 m
Tabla 1.8: Especificaciones del TWS
Fuente: R-8Px.pdf





Figura 1.35.3: Mdulo Receptor.
Fuente: www.ishtronics.com/tws434a.jpg
Los transmisores listados hacen juego con receptores de la misma frecuencia, que
tambin vienen en un valor predeterminado entre 300 MHz a 434 MHz Puede ser de
303,875 MHz (RWS-303), 315 MHz (RWS-315), 418 MHz (RWS-418) y 433,92
MHz (RWS-433). Posee en diseo pasivo de alta sensibilidad, que no requiere

59

componentes externos. Para decodificar las seales que llegan a este receptor se
pueden utilizar el decodificador asociado Holtek HT12D.

Figura 1.35.4: RWS-434
Fuente: R-8Px.pdf

Pin 1: GND
Pin 2: OUT
Pin 3: OUT LINEAL
Pin 4: VCC
Pin 5: VCC
Pin 6: GND
Pin 7: GND
Pin 8: ANT
Potencia de salida de RF: 8 mW



ESPECIFICACIONES
Smbolo Caractersticas Condiciones Mn. Tipo. Mx. Unidad
V
cc
Voltaje de alimentacin 4,9 5 5,1 V
I
tot
Corriente de operacin 4,5 mA
V
dato
Salida datos I
data
=+200A
(alto)
V
cc
-
0,5
- V
cc
V
I
dato
=-10A
(bajo)
- - 0,3 V
F
c
Frecuencia operacin 300 434 MHz
P
ref
Sensibilidad -106 dBm
Ancho de canal 500 kHz
NEB Ancho banda equivalente.
ruido
- 5 4 kHz
Velocidad transferencia
datos
3 Kb/s
Tiempo de encendido - - 5 ms.
Tabla 1.9: Especificaciones del RWS
Fuente: R-8Px.pdf

1.1.5 Micro controladores.
Hace unos aos, los sistemas de control se implementaban usando exclusivamente
lgica de componentes, lo que haca que fuesen dispositivos de gran tamao y muy
pesados.

Para facilitar una velocidad ms alta y mejorar la eficiencia de estos dispositivos de
control, se trat de reducir su tamao, apareciendo as los microprocesadores.
Siguiendo con el proceso de miniaturizacin, el siguiente paso consisti en la
fabricacin de un controlador que integrase todos sus componentes en un slo chip.

60

Las principales caractersticas que diferencian a un micro controlador de un
microprocesador son:

Son sistemas cerrados, ya que contiene todos los elementos de un
computador en un solo chip, frente a los microprocesadores que son sistemas
abiertos, ya que sacan las lneas de los buses de datos, direcciones y control
al exterior, para la conexin de memorias, interfaces de E/S, etc.

Son de propsito especfico, es decir, son programados para realizar una
nica tarea, mientras que los microprocesadores son de propsito general.


1.1.5.1 Historia

La historia del micro controlador surge desde dos vas de desarrollo paralelas; una
desde Intel y otra desde Texas Instruments. Los primeros micros controladores son el
4004 y 4040 de Intel que dieron lugar al 8048, a su vez predecesor del 8051. An as
el primer micro controlador fue el TMS1000 de Texas Instruments. ste integraba un
reloj, procesador, ROM, RAM, y soportes de E/S en un solo chip.


Figura 1.36: Grafica del primer integrado
Fuente: www.neoteo.com


1.1.5.2 Partes de un micro controlador

Figura 1.37: Parte del microprocesador
Fuente: Manual Bsico de Microprocesadores


61

CPU o procesador.- Es el cerebro del sistema que procesa todos los datos que
viajan a lo largo del bus.
Memorias.- Est formada por una no voltil (ROM, EEPROM, FLASH)
donde se almacenan los programas y una voltil (RAM) donde se almacenan
los datos.
Reloj principal.- Normalmente todos los micro controladores tienen
incorporados circuitos osciladores para el funcionamiento de stos.
Puertos E/S (Entrada/Salida).- Soportan las lneas que comunican al micro
controlador con los perifricos externos.
Perro guardin o Watchdog.- Contador que resetea al micro controlador cada
vez que rebosa. Sirve para evitar fallos de funcionamiento, por lo que hay que
inicializarlo peridicamente antes de que rebose.
Proteccin ante fallo de alimentacin o Browout.- Circuito que resetea al
micro controlador cuando la tensin de alimentacin baja de un cierto lmite.
Temporizadores.- Para controlar periodos de tiempo.
Convertidores A/D y D/A. (Analgico/Digital y Digital/Analgico)
Comparadores analgicos
Moduladores de anchura de impulsos.
Puertos de comunicacin.- Tanto serie como paralelo.
Control de interrupciones

1.1.5.3 Aplicaciones

El mercado del micro controlador est creciendo cada ao y parece no tener barreras.
Los micro controladores a menudo se encuentran en aplicaciones domsticas
(microondas, refrigeradores, televisin, equipos de msica, DVD), ordenadores con
sus componentes (impresoras, mdems, lectores de discos), coches (ingeniera de
control, diagnostico, control de climatizacin), control medioambiental
(invernaderos, fabricas, casas), instrumentacin, aeronutica, y miles de usos ms.
En muchos podemos encontrar ms de un micro controlador.


62



Figura 1.38: Grafica de iteracin
Fuente: www.national.com/diagrams

Los micro controladores son muy usados el rea mdica, en los procesos industriales
usarlos hace posible muchas tareas especficas al distribuir un gran nmero de los
mismos por todo el sistema. La comunicacin entre cada micro controlador y uno
central permitira procesar la informacin por un ordenador central, o transmitirlo a
otros micro controladores del sistema.


Figura 1.39: Diagrama bloques Proceso Industrial.
Fuente: www.national.com/diagrams

63

33%
25%
16%
15%
10%
1%
1
2
3
4
5
Son ampliamente utilizarlos para monitorizar y gravar parmetros medioambientales.
El uso en sistemas de navegacin por radar, cumplen tareas especficas y complejas.


Figura 1.40: Ejemplo usos de los microcontroladores.
Fuente: www.national.com/diagrams


1.1.5.4 Volmenes de Ventas.
La distribucin de las ventas segn su aplicacin es la siguiente:
Una tercera parte se absorbe en las aplicaciones relacionadas con los
ordenadores y sus perifricos.
La cuarta parte se utiliza en las aplicaciones de consumo (electrodomsticos,
juegos, TV, vdeo, etc.)
El 16% de las ventas mundiales se destin al rea de las comunicaciones.
Otro 16% fue empleado en aplicaciones industriales.
33 Industria
25 electrodomsticos
16 Sist. De comunicacin
15 Industria
10 Automocin
1 Otros


Figura 1.41: Distribucin de los Microcontroladores.
Fuente: www.google.com

64

2.- CAPTULO2
HERRAMIENTAS DE DESARROLLO PARA DISPOSITIVOS MVILES
Se estudiara la plataforma de trabajo con el cual se desarrollo la aplicacin para los
dispositivos mviles, as como una breve descripcin de los famosos telfonos
inteligentes.

2.1 Introduccin al J2ME
J 2ME es el acrnimo de J ava 2 Micro Edicin. J 2ME es la versin de J ava orientada
a los dispositivos mviles. Debido a que los dispositivos mviles tienen una potencia
de clculo baja e interfaces de usuario pobres, es necesaria una versin especfica de
J ava destinada a estos dispositivos, ya que el resto de versiones de J ava, J 2SE o
J 2EE, no encajan dentro de este esquema. J 2ME es por tanto, una versin reducida
de J 2SE.
2.2 Configuracin
La configuracin es un mnimo grupo de APIs (Application Program Interface),
tiles para desarrollar las aplicaciones destinadas a un amplio rango de dispositivos.
La configuracin estndar para los dispositivos inalmbricos es conocida como
CLDC (Connected Limited Device Configuration). El CLDC proporciona un nivel
mnimo de funcionalidades para desarrollar aplicaciones para un determinado
conjunto de dispositivos inalmbricos. Se puede decir que CLDC es el conjunto de
clases esenciales para construir aplicaciones. Hoy por hoy, slo tenemos una
configuracin, pero es de esperar que en el futuro aparezcan distintas
configuraciones orientadas a determinados grupos de dispositivos.
Los requisitos mnimos de hardware que contempla CLDC son:
160KB de memoria disponible para J ava
Procesador de 16 bits
Consumo bajo de batera
Conexin a red
Los dispositivos que claramente encajan dentro de este grupo, son los telfonos
mviles, los PDA (Personal Digital Assintant), los Pocket PC.

65

En cuanto a los requisitos de memoria, segn CLDC, los 160KB se utilizan de la
siguiente forma:
128KB de memoria no voltil para la mquina virtual J ava y
Para las libreras del API de CLDC
32KB de memoria voltil, para sistema de ejecucin (J ava
Runtime System).

En cuanto a las limitaciones impuestas por CLDC, tenemos por ejemplo las
operaciones en coma flotante. CLDC no proporciona soporte para matemtica en
coma flotante. Otra limitacin es la eliminacin del mtodo Object.finalize.

Este mtodo es invocado cuando un objeto es eliminado de la memoria, para
optimizar los recursos. Tambin se limita el manejo de las excepciones. Es
complicado definir una serie de clases de error estndar, que se ajuste a todos los
dispositivos contemplados dentro de CLDC. La solucin es soportar un grupo
limitado de clases de error y permitir que el API especfico de cada dispositivo
defina su propio conjunto de
Errores y excepciones.

La seguridad dentro de CLDC es sencilla, sigue el famoso modelo sandbox.
Las lneas bsicas del modelo de seguridad sandbox en CLDC son:
Los ficheros de clases, deben ser verificados como aplicaciones vlidas.
Slo las APIs predefinidas dentro de CLDC estn disponibles.
No se permite cargadores de clases definidos por el usuario.
Slo las capacidades nativas proporcionadas por CLDC son accesibles.

2.3 Perfiles
En la arquitectura de J 2ME, por encima de la configuracin, tenemos el perfil
(profile). El perfil es un grupo ms especfico de APIs, desde el punto de vista del
dispositivo. Es decir, la configuracin se ajusta a una familia de dispositivos, y el
perfil se orienta hacia un grupo determinado de dispositivos dentro de dicha familia.
El perfil, aade funcionalidades adicionales a las proporcionadas por configuracin.

66


La especificacin MIDP (Mobile Information Device Profile), describe un
dispositivo MIDP como un dispositivo, pequeo, de recursos limitados, mvil y con
una conexin inalmbrica.

2.4 MIDLet
Las aplicaciones J 2ME desarrolladas bajo la especificacin MIDP, se denominan
MIDLets. Las clases de un MIDLet, son almacenadas en bytecodes java, dentro de
un fichero .class. Estas clases, deben ser verificadas antes de su puesta en marcha,
para garantizar que no realizan ninguna operacin no permitida. Este pre
verificacin, se debe hacer debido a las limitaciones de la mquina virtual usada en
estos dispositivos. Esta mquina virtual se denomina KVM. Para mantener esta
mquina virtual lo ms sencilla y pequea posible, se elimina esta verificacin, y se
realiza antes de la entrada en produccin. El pre verificacin se realiza despus de la
compilacin, y el resultado es una nueva clase, lista para ser puesta en produccin.

Los MIDLets, son empaquetados en ficheros .jar. Se requiere alguna informacin
extra, para la puesta en marcha de las aplicaciones. Esta informacin se almacena en
el fichero de manifiesto, que va incluido en el fichero .jar y en un fichero
descriptor, con extensin .jad. Un fichero .jar tpico, por tanto, se compondr de:
Clases del MIDLet
Clases de soporte
Recursos (imgenes, sonidos...)
Manifiesto (fichero .mf)
Descriptor (fichero .jad)

Un fichero .jar puede contener varios MIDLets. Esta coleccin de MIDLets, se
suele llamar MIDLet Suite. Esta unin de varios MIDLets en una distribucin,
permite compartir recursos (imgenes, sonidos...), y por tanto optimizar los recursos
del dispositivo.




67

2.5 Herramienta Netbeans
Netbeans es un IDE (Integrated Development Environment), una herramienta de
desarrollo para escribir programas J ava pero tambin, gracias a sus mdulos, muchos
otros lenguajes, desde C y C++hasta XML, HTML y J ava Server Pages, pasando por
cualquier tecnologa de la calaa de J SP, RMI, CORBA, J INI, etc.
Brevemente, adrmonos camino en NetBeans con un rpido repaso por sus ms
interesantes caractersticas. Entre otras, un editor de cdigo con sistema de
coloracin de la sintaxis y de auto-completado, anotaciones, macros e identificacin
automtica del cdigo, soporte para J ava, C, C++, XML y HTML, as como para
J SP, RMI, CORBA, J INI, J DBC y Servlet. Y por ltimo, para los sistemas de control
de versin Ant y CVS, perfectamente integrados a NetBeans.
Netbeans 6 incorpora caractersticas de edicin para desarrollo mvil visual,
desarrollo en c++, ruby y soporte para rails, modelado visual de uml, y lo ms
importante, un editor visual de interfaces graficas.

2.5.1 Caractersticas del Netbeans 6.0
Smarter de cdigo. El editor de NetBeans es ms rpido y ms inteligente,
proporcionando terminaciones de las palabras clave, los campos, y las
variables. Tambin se enumeran la ms lgica de las opciones en la parte
superior, y le permite profundizar en la plena opciones en la parte inferior


Figura 2.1: Programando en Netbeans
Fuente: Autores

Destacados. Puede pensar de los aspectos ms destacados como una
caracterstica fcil de utilizar y ms correcta sustitucin de los editores de
bsqueda. El IDE pistas de la posicin del carcter y, basndose en ella, se
destacan algunas partes del cdigo. Entre los puntos ms destacados estn

68

marcados con un color de fondo en el editor tambin se puso en la banda de
error, que los permisos para tener visin de conjunto de todo el archivo.
Mejora de la navegacin y de la inspeccin. Adems de los ms destacados,
la fuente editor te permite navegar rpidamente a travs de su cdigo con una
mejor organizacin de la ventana del navegador y los diputados y jerrquico
Inspectores.

Ms que de cdigo. Con las plantillas de vivir y Surround Con funcionalidad, puede
introducir rpidamente de uso comn de los bloques de cdigo y centrarse en la
lgica empresarial.

Figura 2.2: Ejemplo de cdigo en Netbeans
Fuente: Autores

Apoyo a los Proyectos. Crea rpidamente Ruby proyectos con estructura lgica,
ejecute los archivos de Ruby, Ruby configurar otros intrpretes (como J Ruby o
nativos Ruby), localizar e instalar Ruby Gems grfica a travs de un asistente, crear y
ejecutar pruebas de unidad, ejecute RSpec especificacin de archivos, entre un salto
de Ruby Archivo y su correspondiente unidad de prueba o archivo especfico, y as
sucesivamente.
Edicin Avanzada Ruby. Avanzada para la edicin de cdigo Ruby, utilizando
informacin semntica sobre el programa para ofrecer de cdigo, que muestra las
clases y mtodos disponibles para la expresin actual, junto con la documentacin
asociada RDoc. La sintaxis es poner de relieve con mayor informacin semntica, de
tal manera que sin utilizar variables locales y los parmetros se muestran en gris. Hay
muchas otras funciones de edicin, incluida la Declaracin Goto para ir al punto de
declaracin de una clase o el mtodo de referencia.

Ruby Debugger. Solo pas o ejecutar cdigo a travs de Ruby, sistema de
interrupcin, ver variables locales, la llamada pila de navegar, cambiar los hilos, y

69

evaluar expresiones slo por encima de ellos el ratn sobre la variable en el Editor.
Tambin existe apoyo a la "rpida depuracin" de extensin.
Ruby on Rails Apoyo. Generar proyectos de Rails, o generar cdigo a travs del
generador de cdigo Rails asistente grfico, que ofrece documentacin sobre los
plugins en el propio asistente. Participacin de terceros en los generadores tambin
tienen soporte. Adems, hay acciones para saltar rpidamente entre un Rails accin y
su correspondiente ", o deformaciones en el navegador la URL para ms pertinentes
para el archivo que est editando. Base de datos de las migraciones y Rake objetivos
se apoyan tambin. Por ltimo, se destacan RHTML archivos (junto con la mejora de
NetBeans 6,0 apoyo a los archivos relacionados, tales como J avaScript y CSS).

Figura 2.3: Ventana de proyectos en Netbeans
Fuente: Autores
2.5.2 Ms fcil instalacin y la actualizacin.

Unificado de instalacin experiencia. El nuevo instalador NetBeans hace que sea ms
fcil obtener la funcionalidad que usted desea. No ms descargar e instalar paquetes
separados. Ahora usted elija la que mejor se adapte a descargar e instalar usted las
caractersticas y mdulos de ejecucin que necesita en un solo instalador. Puede

70

aadir la funcionalidad ms adelante por volver a ejecutar el instalador.
Mantener actualizado. El Centro de actualizaciones y Gestor de mdulos han sido
absorbidos por el administrador de complementos. Fcil de activar y desactivar la
funcionalidad, la bsqueda de actualizaciones y nuevas funcionalidades en un solo
lugar.
2.5.3 Swing GUI desarrollo

Adems de numerosas mejoras de la muy aclamada NetBeans GUI Designer (antes
conocido como "Proyecto Matisse"), el desarrollo de aplicaciones J ava de escritorio
de apoyo se ha visto mejorada con la siguientes caractersticas:
Base de datos de aplicaciones Swing. Tomando ventaja de la tecnologa de
encuadernacin Beans (J SR 295) y la persistencia de J ava API, es ahora ms fcil
que nunca para crear aplicaciones de bases de datos de escritorio Swing. Con los
nuevos proyectos de aplicaciones J ava Desktop plantilla, usted puede configurar una
forma que muestra una tabla de base de datos y le permite modificar la base de datos.
Vincular una tabla de base de datos a una forma existente arrastrando una tabla desde
la ventana de tiempo de ejecucin en un formulario.














E

Figura 2.4: Ejemplo de Aplicacin Con Base de Datos
Fuente: Autores


71

2.5.4 Perfiles.

Perfil integrado en Netbeans IDE. NetBeans Profiler se ha convertido en una parte
integral de NetBeans IDE de 6,0! No hay ahora ninguna necesidad de descargar e
instalar el NetBeans Profiler separado.

Comparar Memory Snapshots. Usted puede comparar guardado y sin guardar las
instantneas de memoria para ver qu objetos se han creado o puesto en libertad de
entre el montn, cuando se tomaron las instantneas. Para ms, vase la comparacin
de la memoria de instantneas.

DrillDown Grfico. Perfiles de los resultados se pueden visualizar en un grfico que
clasifica tiempo de CPU que se ha gastado. Puede hacer clic en el grfico de las
secciones para ver los detalles de las categoras de alto nivel para informacin ms
detallada de perfiles. Para ms, vase reas de Inters - Categorizacin normas
Heap Walker. Cuando un perfil de su aplicacin, podr ahora utilizar el Heap Walker
para ayudar a evaluar los contenidos de J ava heap y bsqueda de fugas de memoria.
Para obtener ms informacin acerca de Heap Walker, consulte la documentacin
sobre el Perfil del 6,0 Heap Walker.
Adjuntar dinmico en J DK 1,6.











Figura 2.5: Creando un proyecto nuevo
Fuente: Autores

72












Figura 2.6: Interfaz de Netbeans
Fuente: Autores

2.6 Web y Java EE.


Built-in visual para el diseo de aplicaciones web. La plantilla de proyecto de Visual
Web es ahora fusionada con la principal aplicacin web plantilla de proyecto. Slo
tiene que aadir la Visual Web J avaServer Faces marco de su proyecto web y la
palanca de una amplia biblioteca de Ajax permiti a los componentes J avaServer
Faces para construir su aplicacin.

Visual flujo de la pgina de edicin. Vinculacin de pginas de la aplicacin web
nunca ha sido ms fcil con el nuevo editor de Visual Page Flow, el apoyo a
J avaServer Faces, J SP, y las pginas HTML.

Mayor soporte de J avaScript. Completo de sintaxis, de cdigo, y la comprobacin de
errores de cdigo J avaScript est disponible tanto en el stand-alone y J avaScript en
los archivos de HTML, RHTML, y archivos J SP.

73


Mejora de los servicios web de apoyo. Arrastre y suelte el consumo de servicios web
visuales en pginas web app. La mejora de la interoperabilidad de servicios Web.

Soporte para Ajax habilitado componentes J avaServer Faces. Proyecto Woodstock
biblioteca de componentes encapsula J avascript y complejo del lado del servidor
dentro de los componentes J avaServer Faces. Usando un componente habilitado
Ajax-es como trabajar con cualquier otro componente: Arrastre y suelte el
componente, sistema propiedades, personalizar y del lado del servidor gestores de
eventos.

Fcil migracin de J ava Studio Creator. Situado en la ruta de migracin de J ava
Studio Creator 2, NetBeans 6 preserva su inversin en proyectos de J ava Studio
Creator vez que le permiten aprovechar las numerosas caractersticas de
productividad de la NetBeans IDE en una nica herramienta.

Aumento de la edicin de CSS. El editor de CSS permite una vista previa de los
cambios en su CSS como que se realicen.


Figura 2.7: Desarrollo de un proyecto
Fuente: Autores


74

2.7 Mobility
Nueva Integrado de IU para CLDC / MIDP CDC y el desarrollo. El paquete de
Movilidad ahora apoya el proyecto de propiedades que antes slo estaban disponibles
para CLDC / MIDP proyectos. Entre ellas figura el apoyo a proyectos de
configuracin de dispositivos de fragmentacin, la ofuscacin y la optimizacin
integrada de apoyo, y mltiples opciones de despliegue, todo construido en Apache
Ant para la codificacin y manejo ms fcil.

Nuevo juego constructor. Ahora es ms fcil de crear juegos mviles con el paquete
de la movilidad visual de la edicin de apoyo a la API MIDP 2,0 Game. La API
soporta sprites de animacin y la capacidad de disponer en capas de suelo de
baldosas escenas.
Nueva Mobile Visual Designer. El Visual Designer Mobile (VMD) se ha rediseado
para mejorar la funcionalidad y facilidad de uso.

Diseo de anlisis. Anlisis de diseo identifica los componentes no utilizados para
la separacin visual de los diseos complejos.
Nuevos componentes personalizados. Nuevos componentes para el mvil Visual
Designer simplificar la creacin y el diseo de los navegadores mviles de archivo,
servicio de mensajes cortos (SMS), los compositores, las pantallas de inicio de
sesin, y el Administrador de informacin personal (PIM) de los navegadores.
Nuevos componentes para el control de flujo.

Generado cdigo es ahora ms fcil de modificar.
Re-escrito J SR-172 taln compilador. El nuevo generador tiene soporte para Base64
tipo y es capaz de analizar la documentacin de los mtodos.

La mejora de los proyectos de gestin de la configuracin. Una nueva interfaz de
usuario para el asistente del proyecto hace que sea ms fcil de aadir nuevo
proyecto para las nuevas configuraciones de los dispositivos mviles. Ahora es ms
fcil crear varias compilaciones para mltiples configuraciones.

75


Figura 2.8: Referencias en Netbeans
Fuente: Autores

2.8 SOA

Artefactos para el servicio de composicin y montaje. El Composite Application
Service Asamblea Editor le permite editar la configuracin de proyectos
empresariales. Apoya la adicin y / o modificacin de fijaciones y el servicio de
puntos finales, aadir / eliminar conexiones entre las unidades de servicios para
conectar a los puntos finales de las unidades de servicios externos, y la creacin de
encuadernacin Componente-Componente de encuadernacin conexiones.

WSDL editor grfico. Crear resume documentos WSDL (WSDL sin ataduras)
fcilmente junto con la informacin de tipo socio enlace.

XSLT editor para editar transformaciones. Visualmente editar transformaciones.

Herramientas de apoyo para los componentes vinculante. Apoyo a Archivo, HTTP, y
J MS vinculante componentes.

J ava EE servicio Web de apoyo a los proyectos. Un J ava EE proyecto que ejecuta el
servicio de servidor Web o interfaces de cliente se puede agregar a un compuesto
como una aplicacin de servicios J BI Dependencia. El J ava EE proyecto pueden

76

comunicarse con otras unidades de servicios directamente mediante el interior J BI
normalizados Mensaje Router (RMN).

Figura 2.9: Abrir un proyecto
Fuente: Autores


Figura 2.10: Trabajando en el proyecto
Fuente: Autores

77

2.9 UML.


Plantilla basada en la generacin de cdigo ya disponible y personalizable. UML
ofrece ahora la plantilla para la generacin de cdigo basado Adelante Ingeniera. El
nuevo enfoque de generacin de cdigo utiliza FreeMarker plantillas, que permiten a
los usuarios personalizar la forma en el cdigo se genera por la simple modificacin
de las plantillas utilizadas. Los usuarios pueden mejorar la generacin de cdigo con
nuevas plantillas de generacin de cdigo usando las plantillas de dominio en el
panel de ventana de Opciones de UML.

Aumento de la generacin de cdigo de funcin. La capacidad de fusin de cdigo
fuente generado recientemente en los archivos de cdigo fuente ya est disponible.
Mejora de la gestin de las colecciones. Un usuario de la coleccin de tipos se
conserva durante Adelante y de ingeniera inversa y puede ser cambiado a travs de
conjunto y de dilogo de propiedades para la generacin de cdigo.

Herramientas de alineacin existentes en la actualidad. El diagrama de ahora, el
Editor ha alineacin herramientas disponibles. Seleccione el diagrama de los
elementos que se suman, clic con el botn derecho de la seleccin, y elija Alinear
desde el men emergente.

Nueva ventana de diseo. Por defecto, la ventana es ahora Documentacin acoplarse
a la ventana Propiedades de la zona. El Centro de Diseo de la ventana es ahora
acopl a la zona Explorer por defecto.

Guardar como ahora en el diagrama de accin nodo. El "Guardar como" la accin se
ha aadido al diagrama de nodos. La accin permite que un diagrama que se
dupliquen.

78


Figura 2.11: Ventana de opciones
Fuente: Autores


Figura 2.12: Test de parmetros
Fuente: Autores

79


Figura 2.13: Trabajando con clases
Fuente: Autores


Figura 2.14: Variables
Fuente: Autores


80


Figura 2.15: Configuracin Variables
Fuente: Autores


Figura 2.16: Arquitectura de un mdulo
Fuente: Autores


Figura 2.17: Ventana General
Fuente: Autores

81

2.10 Visual Biblioteca API.

La Biblioteca Visual API, que es la generacin siguiente grfico Biblioteca, es til
para la visualizacin de datos, como el grfico orientado a modelar, en los mdulos
de NetBeans.

Preferencias de la API de NetBeans. El NetBeans Preferencias NetBeans proporciona
una API especfica de aplicacin de la API de Preferencias del J DK. Por ejemplo,
que te permite almacenar las preferencias del usuario en el directorio de NetBeans.
Lexer. Mejora de la API de NetBeans para la creacin de fichas de un texto de
entrada. Las fichas se pueden utilizar para, por ejemplo, proporcionan sintaxis para
colorear.

Logger. NetBeans API ErrorManager obsoleto, en favor de la norma del J DK Logger
mecanismo. Para ms detalles, vase el registro en NetBeans.
Interfaces Generified. El J DK 1,5 genricos se utilizan en toda la API de NetBeans.

2.11 Dispositivos Mviles
Existen variedad de dispositivos Mviles, entre ellas 2 grandes y diferenciados
grupos:
a.- Computadoras de Mano
Palm
Pocket
b.- Telfonos Celulares
Nokia
Sony Ericson
2.11.1 Computadoras de Mano
Caractersticas:
Ordenador de mano con conectividad inalmbrica total, el ordenador de mano Palm T|X
es lo que esperabas. Utiliza las tecnologas Wi-Fi y Bluetooth integradas para consultar el
correo electrnico, navegar por Internet y acceder a archivos en redes. Se puede visualizar

82

pginas Web, presentaciones de PowerPoint, documentos de Word y hojas de clculo de
Excel, en la gran pantalla en color que cambia de posicin vertical a horizontal. Adems, es
totalmente compatible con Microsoft Outlook. El ordenador de mano Palm T|X resulta
atractivo a primera vista. Su diseo elegante es todo menos corriente.
Especificaciones Tcnicas:
Especificaciones del producto.
Sistema operativo
Palm OSGarnet 5.4
Memoria
128 MB (100 MB accesibles para el usuario)
Procesador
Procesador basado en ARM Intel a 312 MHz
Pantalla
Pantalla tctil TFT 320 x 480 transflectiva.
Compatible con ms de 65.000 colores Modos de orientacin horizontal y vertical
Inalmbrico.
Tecnologa inalmbrica Wi-Fi 802.11b.
Tecnologa inalmbrica Bluetooth1.1.
Audio
Altavoz
Toma estndar de 3,5 mm para auriculares estreo
Ranura de expansin
Compatible con tarjetas MultiMediaCard, SD y SDIO
Batera
De litio recargable

83

Cable/Alimentacin
Cable de sincronizacin USB
Adaptador de CA
AC adapter (108-32 VAC/60Hz)
Tamao
3.08" W x 4.76" H x .61" D
78.2mm W x 120.9mm H x 15.5mm D
Peso
149 g
Requisitos del ordenador de escritorio.
Ordenador Windows
Windows 2000 (SP4), Windows XP
Puerto de hardware USB y unidad de CD-ROM
Son necesarios derechos de administrador para instalarlo.
Para la sincronizacin con Outlook es necesario MS Outlook 2000, 2002 o 2003
Macintosh
Mac OS 10.2.8 a 10.4
Puerto de hardware USB y unidad de CD-ROM
Son necesarios derechos de administrador para instalarlo

2.12 WIFI
Wi-Fi (siglas del ingls Wireless-Fidelity) es un conjunto de estndares para redes
inalmbricas basados en las especificaciones IEEE 802.11. Fue creado para ser

84

utilizado en redes locales inalmbricas, sin embargo es frecuente que en la actualidad
tambin se utilice para acceder a Internet.
Wi-Fi es una marca de la Wi-Fi Alliance (anteriormente la WECA: Wireless
Ethernet Compatibility Alliance), la organizacin comercial que adopta, prueba y
certifica que los equipos cumplen los estndares 802.11.
2.12.1 Seguridad WIFI
Mecanismos para validar clientes en una red inalmbrica:
Open Autentication
Shared Key Authentication.
Validacin de estaciones basada en direccin MAC
a.- Open Autentication.
Este tipo de autenticacin se basa en la encriptacin posterior que se va a hacer de
los datos enviados a travs de la red inalmbrica.
Aunque un cliente pueda validarse contra el punto de acceso, si no conoce las claves
de encriptacin de los datos no podr enviar informacin.
b.- Shared Key Authentication.
Este mecanismo necesita que tanto clientes como puntos de acceso tengan
configurada una clave WEP esttica.
Para evitar el envo de la clave WEP a travs del medio inalmbrico se utiliza un
mecanismo del tipo peticin/respuesta.
El punto de acceso enva al cliente un texto aleatorio para que sea cifrado con la
clave WEP del cliente. Este texto es diferente cada vez que se solicita una validacin.
El cliente enva el texto cifrado al punto de acceso. Entonces el punto de acceso
descifra con su clave WEP el texto cifrado y comprueba si el texto de cifrado
coincide con el texto aleatorio original. Si ambos coinciden el punto de acceso da por
bueno el cliente.

85

c.- Validacin de estaciones basada en direccin MAC
El punto de acceso dispone de una lista de direcciones MAC de clientes que pueden
utilizar la red inalmbrica limitando de esta manera la posibilidad de que se
produzcan accesos no autorizados a la red.
MAC-Spoofing: Un posible intruso, con un analizador de protocolos, captura
direcciones MAC de clientes y configura su propia tarjeta WLAN para que tenga
una direccin MAC vlida.
2.12.2 WEP
Son las siglas de Wired Equivalent Privacy (Privacidad Equivalente a redes
cableadas) y es un mecanismo de cifrado continuo que utiliza clave simtrica. El
hecho de utilizar clave simtrica implica que la clave de encriptacin debe ser
conocida por los dos extremos.
No realiza un cifrado extremo a extremo como sera deseable.
Estas claves deben ser estticas y es necesario llevar a cabo una configuracin
manual de las mismas.
















86

3.- Captulo 3.
DESARROLLO DEL PROYECTO: CONTROL INDUSTRIAL POR DISPOSITIVOS
MVILES.
En este captulo contemplamos analizar y describir el desarrollo de nuestro sistema,
describiremos los componentes utilizados, as como plataformas de desarrollo y
dems.
3.1 Antecedentes
Cada da es ms frecuente el uso de tecnologa para aumentar la productividad
dentro de la industria, automatizar es la palabra ms utilizada en un proceso, la
electrnica industrial se ha convertido en una ciencia que busca alianzas con dems
ingenieras para poder integrar en un solo conjunto los sistemas de control industrial,
para as convertirlos en escalables, slidos, y fiables.
Los distintos campos como la electro medicina, la aeronutica, la robtica, la
domtica entre otras estn haciendo que ciencias converjan entre si y exigen de los
ingenieros una integracin de tecnologas de manera multidisciplinaria, tales como la
ingeniera en sistemas, las telecomunicaciones, la electrnica, la microelectrnica, y
la ingeniera industrial, todas juegan un papel importante para as ocupar un lugar
importante en la tecnologa moderna dentro de la industria.
3.2 Elementos de un sistema de control
La mayora de sistemas de control estn compuestos por tres partes:
Sensores.
Procesadores.
Actuadores.


Figura 3.1: Elementos Sistema de control.
Fuente: Electrnica industrial de CEKIT
Tenemos varios tipos de sensores como los detectores de proximidad, sensores de
posicin, de fuerza, tenemos los famosos transductores de presin, temperatura y de
ciertos parmetros de fluidos, sensores ultrasnicos, en fin una gran variedad de
sensores que nos permiten monitorear de alguna manera las seales analgicas
existentes en el medio, seales tales como presin, temperatura, presin, corriente,
Procesadores Actuadores Sensores

87

voltaje, y cabe recalcar que permite adquirir datos puntuales es decir seales de
encendido o apagado muy, datos muy tiles en el caso de tomar decisiones acertadas.

Figura 3.2: Tipo de Seales.
Fuente: Autores
Los procesadores no son ms que el controlador del sistema, es decir el que
gobierna a los actuadores dependiendo de su programacin y de las seales
adquiridas.
A continuacin mostramos una tabla con el resumen de las diferentes maneras de
controlar y monitorear un proceso industrial.

Los actuadores son una parte muy importante en los sistemas de control, ya que son
los encargados de regular la potencia del proceso y tambin se encargan de
amplificar las seales de mando, tenemos algunos tipos de actuadores tales como:
Usados en el control de fuidos gaseosos por medio de seales elctricas.
Por ejemplo se puede controlar el flujo de aire.
Control Electroneumtico.
Bien pueden usarse para controlar procesos sencillos y complejidad
media, controlan entradas y salidas de manera del que hayan sido
programados.
Microcontroladores.
Se pueden controlar los procesos industriales de manera remota con
protocolos de comunicacion tales como ModBus, ethernet, y demas.
Redes de Automatizacin.
Se obtiene informacion completa de determinado proceso y a la vez se
ejecutan labores automaticas, se pueden generar reportes, de manera facil
y comoda.
Control por Computadora.
Controladores Lgicos Programables, son dispositivos de procesamiento que
poseen entradas y salidas, de diferentes tipos de seal, su funcionamiento
depende del programa que previamente se le haya cargado
PLC o Autnomas.
Tenemos las computadoras industriales, tarjetas diseadas especialmente
para la adquisicion de seales, protocolos de comunicacin.
Otros Sistemas.
Seales
Analogas
Temperatura
Presin
Puntuales
On
Off

88


3.3 Motivacin.
La mayora de proceso estn compuestos por dos partes: el proceso controlado o
ambiente y el controlador, este interacta con el ambiente basndose en la
informacin que percibe de los sensores.
La iteracin permite al controlador percibir correctamente el estado de las variables,
de otra forma los efectos podran ser muy severos, es por eso el monitoreo peridico
del sistema y un procesamiento de esta informacin.
En nuestro proyecto se usa el controlador, la Computadora y varios
microcontroladores, combinados de manera correcta para adquirir seales y controlar
los diferentes actuadores de acuerdo al requerimiento del sistema, hay que recalcar
que este sistema es de lazo cerrado.
El sistema de control en tiempo real debe:
Realizar sus funciones dentro de plazos de respuesta, ejecutndose dentro de
su periodo, tal que se garantice la estabilidad del lazo cerrado.
Planificar todos los procesos de control que conforman una aplicacin y
garantizar en todos ellos el cumplimiento de plazos de respuesta.
Proporcionar robustez, es decir poco sensible a las variables presentadas.
Garantizar una operacin en forma confiable de los procesos ejecutndose.
Permitir accesibilidad a diferentes aplicaciones para controlar los procesos.
Permitir movilidad dentro y fuera de la industria.
3.4 Relaciones.
Las aplicaciones de procesos industriales, son desarrolladas en dos fases, la primera:
El diseo de las leyes de control
La implementacin del sistema de tiempo real.
Actuadores Elctricos:
Reles.
Contactores.
Motores Electricos, Servomotores, motores de paso.
Actuadores Hidrulicos y Neumticos:
Vlvulas.
Servovlvulas.

89

En el campo industrial grupos de investigacin trabajan en la integracin de
hardware y software de tal manera que convergen para optimizar varios o todos los
procesos dentro de una industria, tal que permita la optimizacin del desarrollo,
produccin o fabricacin de un producto de consumo.
3.5 Objetivos de la Tesis.
Implementar una estacin de monitoreo y control de un proceso de llenado y
vaciado de un tanque, y su respectivo censo de temperatura de las bombas utilizadas
de manera local y remota con movilidad hacia el operador.
3.5.1 Objetivos Especficos.
Llevar a cabo el objetivo general de esta tesis, subdividimos el trabajo en diferentes
actividades:


3.6 Trabajo Propuesto

En la industria local la mayor es comn visualizar y controlar procesos industriales
desde muy pequeos y otros ms grandes y peligrosos para ser operados de manera
manual, la tendencia de las industria ecuatorianas es de colocar e implementar un
departamento de sistema en sus instalaciones, para que de soluciones de correo,
acceso a internet, VozIP, en fin todas las tecnologas en el campo de redes e
1
Implementar un sistema de hardware que permita la interaccin con la PC, Palm y el telfono.
2
Implementar la arquitectura en una maqueta de manera acadmica.
3
Desarrollar e implementar una aplicacin para el control y monitoreo de seales del sistema (la parte de
la computadora de escritorio).
4
Desarrollar e implementar una aplicacin diferente para cumplir las mismas funciones del operador
central, pero de manera remota aprovechando la tecnologa de los dispositivos mviles (Telfono
inteligentes, Pocket PC, Palm).
5
Integrar varias tecnologas en la area de ingeniera para automatizar y otorgarle la movilidad y
aprovechar al mximo el sistema.

90

informtica, la finalidad de nuestro proyecto es integrar todos estos departamentos, y
darle robustez al rea industrial.
Se realizara un hardware de adquisicin de datos (variables fsicas como
temperatura, presin, variables discretas como encendido o apagado de algn
dispositivo), y control de variables discretas (encendido y apagado), estos datos se
visualizaran en un software de control y visualizacin realizado en la plataforma de
programacin Visual Basic 6.0, a la vez se guardaran de manera transparente para
el usuario en una base de datos realizada en MySQL 5.0, el software tipo SCADA
podr visualizarse desde un dispositivo mvil de ltima generacin tipo Smartphone,
Palm, Pocket, este dispositivo tendr la capacidad tal cual el operador este frente a su
computador, es decir monitoreara, controlara los procesos gracias a la interaccin
con la base de datos colocada en el servidor, el proyecto tiene dos valores agregados
muy tiles; el primero es que el operador podr controlar la planta y estar informado
de la misma por medio de SMS(mensajes cortos de textos), una vez fuera de la
empresa y del rea de la Wi-Fi, el segundo valor agregado es que dentro de la zona
Wi-Fi los dispositivos podrn estar siempre en contacto en otras palabras (chatear),
supongamos que existe un problema en una rea especfica por ejemplo carga de
combustible, y el operador visualiza en la pantalla del mvil una falla y este est
lejos del lugar, este tiene l posibilidad de ubicar a otros operadores por medio del
chat para que den solucin al problema.
En fin, es un proyecto totalmente integral, compromete tecnologas tal como las
comunicaciones, sistemas, electrnica.

3.7 Nuestro Sistema
Como fue detallado en parte del primer captulo el objetivo central es otorgarle al
operador la capacidad de moverse dentro y fuera de la industria sin llegar a
despegarse de ella, en este captulo detallamos como logramos esos objetivos,
explicando el funcionamiento de los diferentes mdulos. Se detallara el sistema de
manera general y se ahondar en la parte hardware tanto del mdulo PC-USB, como
de la parte de control.

91


Figura 3.3: Esquema de nuestro Sistema
Fuente: Autores



3.7.1 Arquitectura del Sistema.

Mdulo Hardware.
Control por USB. (Adquisicin y control de variables discretas.)
Comunicacin por Radio Frecuencia de las variables.
Sistema a controlar.
Comunicacin por SMS.
Acceso Inalmbrico desde dispositivos mviles y PC.
Dispositivos Mviles.

Mdulo Software.
Servidor de aplicaciones.
Servidor WEB.
Base de Datos.
Aplicaciones de monitoreo y control.


92

3.7.2 Descripcin general del proceso.

Empezamos por el sistema que no es ms que un proceso netamente acadmico y
demostrativo por cuestiones econmicas, tiempo, y fcil de interpretar, pero no con
esto damos poca complejidad al proyecto ya que lo que queremos demostrar es la
integracin de tecnologas para la implementacin del sistema completo.
Este puede migrar a procesos grandes e instalarse sin complicaciones en los mismos.

Figura 3.4: Descripcin de Nuestro Sistema
Fuente: Autores
Un claro posible aplicacin segura de este sistema es sin dunda en el monitoreo de
los tanques elevados ya que las bombas de llenado y vaciado estn a una
considerable distancia y lo operadores se encuentran en constante movimiento.
Contamos con un tanque elevado el cual tiene dos bombas, la primera que es de
llenado y la segunda de vaciado, ambas bombas cuentan con sensores de
temperatura, y el tanque tiene tres medidores puntuales que indican el nivel de agua
presente en el mismo.
El estado de las bombas (encendido, apagado, temperatura), niveles de agua presente
en el tanque son llevadas hacia la Servidor central de manera inalmbrica, para lograr
esto usamos los mdulos HT-12E (2 para el transmisin).

93

El mdulo PC-USB se encarga de tomar esas variables por otro mdulo de RF
llamado HT-12D (2 para la recepcin).
Estos valores son tomados y llevados al computador por medio del puerto de
comunicacin USB, son procesados, interpretados por un programa desarrollado bajo
la plataforma Visual Basic 6.0, este se encarga de monitorear estas variables y las
almacena en una base de datos, dependiendo de algoritmo, procedimiento o proceso
en el que se encuentre, esta base esta desarrolla bajo la plataforma MySQL 5.0, a su
vez el control o monitoreo puede hacerse desde un telfono inteligente, PocketPC o
palm, este o estos cuentan con un programa desarrollado bajo la plataforma J 2ME, el
cual acceda a la base de datos, consulta o modifica de acuerdo a la accin a realizar.
La comunicacin tambin la realiza desde el computador central hacia el sistema a
controlar, dependiendo de la accin a realizar de igual manera modifica los campos
de la tabla para dar oportunidad al operador mvil de ejecutar acciones desde el
mvil.
La distancia mxima de un dispositivo de comunicacin a otro es de 80 metros,
caractersticas tcnicas otorgadas por el fabricante, existen otros mdulos que
permiten comunicaciones a distancias mayores.
El rango de operacin de los dispositivos mviles est limitado a la red inalmbrica
implementada en la industria.
Como valor agregado contamos con un mdulo comunicacin dentro de cada
dispositivo mvil que permite a los operadores mantenerse comunicado dentro del
permetro de la red.
Adems tenemos un sistema de alarma cuando se est fuera de la empresa, por medio
de SMS, dando al operador la oportunidad de solucionar los problemas de manera
remota, como por ejemplo apagar una bomba si se disparo una temperatura.
Se detalla a continuacin el proceso subdivido en partes antes mencionadas.




94

3.8 Hardware del sistema
3.8.1 Control por USB. (Adquisicin y control de variables discretas.)

La parte principal de este mdulo lo constituye el integrado PIC 18F4550 del
fabricante Microchip, la funcin del mismo es de comunicar el software presente en
nuestro servidor hacia el mdulo de control de las bombas.

Su principio bsico es la de un puente, monitorea los pines de entrada, y enva esos
valores en formato de trama hacia la PC, por medio de la siguiente sentencia
usb_put_packet(1,envia,8,USB_DTS_TOGGLE), dentro del programa presente en
el servidor llevara el cdigo necesario para interactuar con el PIC y poder reconocer
cada una de esas entradas, as mismo podr ser capaz de recibir la trama de datos
desde el software del servidor por medio de la siguiente sentencia:
usb_get_packet(1, recibe, 8).

Una vez teniendo los datos en el buffer este los enviara hacia el codificador HT-12D,
y a la vez por medio de RF hacia el mdulo que controla las bombas de llenado y
vaciado, estos datos son descritos en la tabla 3.2.

Los bits que recibir el PIC, y que sern otorgados a la PC, sern los mencionados en
la tabla 3.1, los mismos que son capturados por los decodificadores HT-12E.

El puerto D del PIC 18F4550, est configurado como puerto de entradas, y el
puerto B, como salidas, el cdigo esta desarrollado en C, compilado en CCS C
versin 4.057.

Este PIC, gestiona tambin el inicio de comunicacin entre la PC, y el mdulo de
control de las bombas, se encarga de habilitar y deshabilitar al HT-12D, para enviar y
recibir los datos.

Se muestra la configuracin de los pines del PIC usado.

95


Figura 3.5: Descripcin del PIC 18F4550
Fuente: DataSheep microchip
Existen dos varias maneras de instalar el dispositivo por medio de plug and play,
que no es ms que instalar el dispositivo por medio de HID (Dispositivo de Interfaz
Humana), con velocidades bajas, no necesita drivers, un claro ejemplo de esto son
loslectores de cdigo de barras, termmetros, mouse, etc.
La manera que interactan con Windows estos dispositivos es por medio de un VID
(VENDOR IDENTIFICATION), y un PID (PRODUCT IDENTIFICATION), estos
valores son otorgados por Microsoft a los fabricantes de hardware con tecnologa
USB.

3.8.1.1 Instalando Drivers
Para que nuestra tarjeta pueda interactuar con el software es necesario instalar un
driver que permita la comunicacin entre el firmware del PIC y el firmware del
Software.
a.- Firmware del PIC.
El VID es un nmero de 16 bits que significa Vendor Identification o cdigo que
identifica al fabricante del hardware a conectar. En nuestro caso utilizamos el
nmero 04D8h que identifica a Microchip.

96

El PID es un nmero de 16 bits que significa Product Identification o cdigo que
identifica al dispositivo en concreto hardware a conectar. En nuestro caso utilizamos
el nmero 000Ah que identifica a la familia de los PIC18 de este fabricante.
Estos parmetros son colocados en la librera: PicUSB.h, hacemos referencia de esta
en el programa principal del PIC llamado MiUSB.c
Cuando el S.O. conecte con nuestro firmware recibir el VID&PID y buscar entre
sus drivers instalados para encontrar el que corresponde a esta identificacin, si no la
encuentra nos preguntar sobre donde ha de buscar un driver adecuado y deberemos
indicarle su ubicacin. Este driver deber estar configurado para conectar con un
hardware cuyo VID&PID sea el mismo.
A continuacin mostramos los pasos para instalar nuestro dispositivo.


Figura 3.6: Instalacin del PIC
Fuente: Autores
Podemos definir un nombre para que aparezca en el administrador de dispositivos.

97


Figura 3.7: Perifrico conectado.
Fuente: Autores
Estos valores deben de ser colocados dentro del archivo picusb.ini para lograr lo
descrito anteriormente.
[Strings]
MFGNAME="PROYECTO SALESIANO"
INSTDISK="PicUSB Device Driver Disc"
DESCRIPTION="CONTROL PIC-PC"
SVCDESC="PicUSB Device Driver"
ClassName="Control PC-PIC"
ClassDesc="PicUSB Sample Device"

b. - Firmware del Software.
Dentro de Visual Basic la manera de comunicacin entre la aplicacin y el hardware
es por medio de un mdulo llamado VBMPUSBAPI.BAS. Esta lleva las rutinas de
llamada a la librera MPUSBAPI.DLL. Mostramos un diagrama de flujo del mdulo.





Nuestro dispositivo.

Inicio
Llama DLL
Abre Puerto
Verifico VID y PID
Modulo envia y recibe
Cierra Puerto.

98

Por medio de la siguiente lnea de cdigo declaramos el VID y PID con el cual
vamos identificar nuestro dispositivo:
Public Const vid_pid ="vid_04d8&pid_0011" ' Vendor id (Microchip) y Perifrico id.

3.8.1.2 Circuito PIC-USB.

Mostramos el circuito de nuestro mdulo PIC-USB, notamos los pocos componentes
externos a utilizar.

Figura 3.8: Diagrama del circuito PIC-USB
Fuente: Autores

99

Bit Descripcin
D0 Status Sistema General.
D1 Confirmacin bomba2
D2 Confirmacin bomba1
D3 Tanque Lleno
D4 Tanque Medio
D5 Tanque Vacio
D6 Sensor temperatura bomba2
D7 Sensor temperatura bomba1
Tabla 3.1: Descripcin de entradas al PIC 18F4550
Fuente: Autores
As mismo se reciben los provenientes del sistema a controlar, estos son:
Bit Descripcin
B0 On/Off Sistema General
B1 On_Off Bomba 1
B2 On_Off Bomba 2
B3 Control Sistema Total
Tabla 3.2: Descripcin de salidas del PIC 18F4550
Fuente: Autores
3.8.2 Comunicacin por Radio Frecuencia de las variables.
En esta seccin mostraremos los transmisores y receptores de RF, que sern los
encargados de comunicar el mdulo PC-USB y el sistema a controlar (Control de
Bombas), como se menciono se utilizan los mdulos UHF TWS-418 y RWS-418,
que tienen un alcance mximo de 80 metros.

100


Figura 3.9: Principio de funcionamiento
Fuente: Autores
Estos mdulos son propiamente de RF, para lograr comunicarnos con mi PIC
utilizaos un par de chips para codificacin y decodificacin, los HT12E
(Codificador-Emisor) y HT12D (Decodificador-Receptor), respectivamente.
Este juego de integrados codifica y decodifica una palabra de 12 bits, compuesta por
una direccin de 8 bits y una seccin de datos de 4 bits. Con esta cantidad de bits se
pueden comandar 256 dispositivos diferentes, envindoles hasta 16 comandos
distintos a cada uno.
3.8.2.1 Transmisor para un enlace de RF

Figura 3.10: Mdulo de Transmisin
Fuente: Autores
Mostraos la manera de conexin del mdulo transmisor, el rango de voltaje que
permite es de 5 a 12 voltios DC.



101

3.8.2.2 Receptor para un enlace de RF

Figura 3.11: Mdulo de Transmisin
Fuente: Autores
El receptor, por las caractersticas tcnicas del chip decodificador HT12D, debe
funcionar exclusivamente con 5V.
3.8.2.3 Receptor-Emisores en mdulo PC-USB
Hay que recalcar que mientras se est recibiendo data, el mdulo emisor debe estar
desactivado, logramos manteniendo en alto la entrada TE (Transmission Enable =
Habilitacin de la transmisin), del integrado codificador HT12E.
Logramos esto con la interaccin del PIC y el programa desarrollado en Visual
Basic, de la siguiente manera: Supongamos que se quiere prender el sistema el
operador deber encender el bit 0 del puerto B, B0 y adicionalmente deber
habilitar la transmisin. Mostramos un fragmento de cdigo con lo cual se logra, por
cuestiones de seguridad tambin preguntamos si el dispositivo est conectado, y
podemos tambin transmitir manualmente con el interruptor conectado en el bit 0
del puerto A, A0.
#define LED0 PIN_B7
If (input (PIN_A0) && (usb_enumerated ())) {
Led off (led0);
led_on(Led1);
delay_ms (200);
led_on(Led0);
led_off(Led1);

102

delay_ms (400);
}

3.8.2.4 Receptor-Emisores en mdulo Sistema a Controlar.
La teora es idnticamente igual, ac manejamos dos mdulos transmisores ya que
enviamos 4 bits por cada uno de ellos.
Logramos esto ya no por software ni por el PIC mas bien lo hacemos con un reloj
externo para hacerlo totalmente independiente del PIC, logramos sincronizar el envo
de data hacia el mdulos conectado en la PC. As mismo recibimos 4 bits que son de
control Mostramos a continuacin el hardware de lo antes descrito:

Figura 3.12: Fuente externa de pulsos.
Fuente: Autores
3.8.2.5 Detalles Tcnicos HT-12D / HT-12E
Al tratarse de integrados que se fabrican para que trabajen asociados, uno tiende a
creer que la resistencia que determina la frecuencia del oscilador interno del chip
tendra el mismo valor en ambos circuitos. Sin embargo, para mi sorpresa, no es as.
Como se puede observar en los circuitos, los valores tienen una gran diferencia: 1M
para el transmisor y 47K para el receptor. Posiblemente se pueda afinar an ms la
sensibilidad del receptor ajustando el valor de este ltimo resistor.

103

Cuando se mantiene en bajo la entrada TE (Transmission Enable =Habilitacin de la
transmisin), el integrado codificador HT12E transmite constantemente, repitiendo
el cdigo una y otra vez. En estas condiciones, si se modifica el valor de las entradas
de datos se observa que el valor va cambiando en el receptor. As fue como hicimos
la prueba. El transmisor trabaja con 5 voltios.
En el integrado decodificador HT12D, la seal VT significa Valid Transmission
(Transmisin Vlida), es decir, cada vez que esta seal va a un nivel alto es porque el
cdigo presente en la salida de datos es un dato vlido para ese dispositivo. Si el
dispositivo no cumple con la direccin que viene en la palabra que ha recibido,
obviamente no se produce esta seal.

3.8.3 Sistema a controlar.
Es la parte del proyecto donde se va a monitorear el estado de las bombas, la
temperatura de las mismas, el nivel del tanque, la interaccin con el mdulo control
por telfono (va SMS). Vemos a continuacin la cisterna, el tanque de desecho y el
tanque principal junto a las bombas de llenado y vaciado.


Figura 3.13: Sistema de Llenado y Vaciado.
Fuente: Autores

El esquema general del control de bombas se muestra en la siguiente grafica:

104



Figura 3.14: Esquema general Control de Bombas
Fuente: Autores

Contamos con las siguientes secciones:

Tanque Principal.
Adquisicin de Temperatura.
Control bombas y confirmacin de bombas
Sistema remoto.
Variables de status.
Control principal.
Fuente de Alimentacin

3.8.3.1 Tanque Principal.
Fsicamente estarn colocados tres medidores en el tanque principal, el de nivel bajo,
nivel medio y nivel alto. Son de tipo puntual acoplados a un circuito anti rebote cada
uno de ellos y pasan al PIC, para ser procesados por el programa interno del mismo.
Con las siguientes lneas de cdigo sabemos si el tanque se encuentra lleno o vacio.
If Nivel_Bajo=0 or nivel_bajo=1 then AccionNivelBajo

105

if Nivel_bajo=1 and nivel_alto=1 then AccionNivelAlto
En caso de estar en nivel bajo el PIC enva el status al sistema PC-USB, para que
este pueda encender la bomba de llenado, si es el caso de que el tanque se encuentra
lleno, enva este status y espera la confirmacin de encendido de la bomba de
descarga.
El circuito anti rebote lo compone una compuerta tipo SCHMITT TRIGGER, de la
serie 4093, un condensador y 2 resistencias, tal cual indica el diagrama siguiente:

Figura 3.15: Esquema general Control de Bombas
Fuente: Autores
3.8.3.2 Adquisicin de temperatura.
No es ms que el acople para monitorear la temperatura de las bombas en lnea,
dependiendo de cul de ellas este encendida.
Lo constituye el sensor LM-35 que es un sensor de temperatura cuyo rango de
medicin va desde los -55 C a 150 C, el mismo que esta calibrado directamente en
grados centgrados, su factor de escala lineal es de +10.01 mV / C, y su precisin es
de +/- 0.5 C, el rango de operacin del mismo va desde los 4 voltios a 30 voltios
DC.

106


Figura 3.16: Esquema general Control de Bombas
Fuente: Autores
Como el sensor solo es capaz de entregar a su salida un voltaje de -0.55V a 1.5V
tenemos que acoplar esa seal para poderla llevar al PIC y ser procesada, logramos
esto colocando un amplificador seguidor unitario a la salida del sensor, y un
amplificador no inversor a la salida del primer operacional, esta seal ya acoplada es
enviada a la entrada del PIC, previamente configurada como entradas anlogas, y
referencia a 5 voltios, de la siguiente manera:
ADCON1 =%00000101; el puerto A.0, A.1 anlogos--A.2 Dig--A.3 +Vref--A.4 Dig
El comportamiento de dentro del PIC a lo que censa la temperatura en cada bomba
est traducido a continuacin en un diagrama de flujo.
Si la temperatura sobrepasa el lmite colocado en la memoria entonces indicara por
medio de los bits: S1 y S2 que corresponden a temperatura de bomba1 y bomba2
respectivamente.

107

DATO >TEMP1
EPROM 0,[45,45]
READ 0, TEMP1
READ 1, TEMP2
ADCIN 0, DATO
SENSA 1
ALARMA 1
DATO2 >TEMP2
ADCIN 1, DATO 2
ALARMA 2
PROGRAMA
PRINCIPAL
SENSA 2
F
F
V
V

Figura 3.17: Diagrama flujo Temperatura
Fuente: Autores
A continuacin el fragmento de cdigo del diagrama de flujo antes descrito.
;-----------------------------------------------------------------------
eeprom 0,[45,45] ;contenido inicial de la EEPROM
READ 0,temp1 ;lee la EEPROM 0 y lo guarda en temp1
READ 1,temp2 ;lee la EEPROM 1 y lo guarda en temp2
Sensa1:
ADCIN 0, dato ;leer el canal 0 (A0) y guarde en dato
dato =dato /2 ;el dato dividir para 2
if dato >temp1 then Alarma1
Sensa2:
ADCIN 1, dato2 ;leer el canal 0 (A0) y guarde en dato
dato2 =dato2 /2 ;el dato dividir para 2
if dato2 >temp2 then Alarma2

108

3.8.3.3 Control Bombas y confirmacin bombas.
Tenemos tres maneras de encender las bombas.
La primera es de manera manual, es decir habr en campo una botonera capaz de
encender y apagar la misma.
Supongamos que el sistema arranca de manera normal y verifica que el tanque esta
vacio por medio de los sensores, este enva el estatus del mismo, esperando que el
operador encienda la bomba de llenado por medio del software ubicado en el PC o
por medio del POCKET, esta es la segunda forma de prender las bombas. En
operacin normal el tanque seguir llenndose hasta que el nivel del mismo este a su
mxima capacidad, en ese instante la bomba se apagara, y estar lista para ser
encendida y empezar la descarga cuyo proceso es el mismo.
En caso de haber un calentamiento en cualquiera de las bombas en pleno proceso, el
sistema indica al operador que deber apagar la bomba.
La tercera es por medio de Sistema Remoto, que no es ms que la interaccin entre
un PIC y un mvil, se hablara ms delante de esta etapa.
Se ha considerado l confirmacin de encendido de bombas gracias a que los relay
cuentan con dos comunes y cuatro contactos, internamente en el PIC se coloco
cdigo capaz de controlar los picos (anti rebote) de los relays
Mostramos fragmento del cdigo, as como su circuito.
if On_Off_B2 =1 then ActivaB2
Goto AccionNivelAlto
Activa2_B2:
pause 100
high Conf2_B2
for i=1 to 100
pause 4
next
low Tanque_Lleno

109


Figura 3.18: Etapa encendido-apagado bombas.
Fuente: Autores
3.8.3.4 Sistema Remoto.
Su principal componente es el PIC 16F870, se encarga de monitorear el sistema de
manera paralela al PIC principal, para permitir al operador controlar las bombas
desde un telfono celular de cualquier marca, modelo y de cualquier operadora.
Todo status es monitoreado y avisado de manera de mensajes de texto hacia un
telfono destino, previamente configurado su nmero, de la misma manera hacemos
control.
Esto se logra gracias a la comunicacin AT, que realiza el telfono con el PIC de
manera serial, la seguridad del control radica en el programa del PIC, ya que aqu se
coloca el nmero telefnico nico capaz de comunicarse con el sistema.
Mostramos a continuacin fragmento del cdigo, junto a su circuito esquemtico.
SEROUT2 portb.1,84,[13]
SEROUT2 portb.1,84,["AT+CMGL=0",13]
SERIN2 portb.0,84,[dat0]
SERIN2 portb.0,84, [wait(", ,"),DEC2 dat1]

110

Serin2 portb.0,84, [wait("097482141"),SKIP 5,dec2 dat2]
serout2 portb.1,84, ["AT+CMGD=1",13]

Figura 3.19: Sistema Remoto.
Fuente: Autores

3.8.3.5 Variables de Status.
Son las variables del sistema, mostramos a continuacin la declaracin de las
mismas.

; Declaro los nombres de los pines
;-----------------------------------------------------------------------
Nivel_Bajo var portA.2 ; IN Nivel Bajo de la Cisterna
Nivel_Alto var portA.4 ; IN Nivel Alto de la Cisterna
Control_Sist_Total var portA.5 ; IN Encendido total del Sistema.
;---PUERTO B--- SALIDAS---
S_1 var portB.0 ; Indica temp alta de la bomba1, se conecta alarma1
S_2 var portB.1 ; Indica temp alta de la bomba2, se conecta alarma2
bomba1 var portB.2 ; Enciende bomba1
bomba2 var portD.1 ; Enciende bomba2
Tanque_LLeno var portB.4 ; Indica estado sensor Nivel_Alto

111

Tanque_Vacio var portB.6 ; Indica estado sensor Nivel_Bajo
On_Off_Sistema_Total var portB.7 ; habilita el sistema total
;---PUERTO C--- ENTRADAS Y SALIDAS---
Confirma_B1 var portC.0 ; IN confirmacin ON de bomba_1 desde Sist Electrnico
Confirma_B2 var portC.1 ; IN confirmacin ON de bomba_2 desde Sist Electrnico
On_Off_B1 var portC.2 ; IN confirmacin encendido bomba_1 desde receptor
On_Off_B2 var portC.3 ; IN confirmacin encendido bomba_2 desde receptor
Conf1_B1 var portC.4 ; Out conf ON de B1 hacia Emisor
Conf2_B2 var portC.5 ; Out conf ON de B2 hacia Emisor
Ok var portC.7 ; Out Indica estado del sistema

As tambin se muestra el diagrama esquemtico de las variables a recibir como a
enviar, en total son 12.

Figura 3.20: Variables del Sistema
Fuente: Autores


112

3.8.3.6 Control Principal.
Lo principal del sistema, podemos considerarlo como la parte medular del mismo,
aqu radica el programa principal desarrollado en BASIC, bajo la plataforma
MicroCode Studio Plus v2.3, y el compilador es PicBasic Pro v2.47.
Lo compone bsicamente el PIC16F877A, su descripcin se detalla a continuacin:

Tabla 3.3: Caractersticas Tcnicas PIC
Fuente: Autores

En el transcurso del documento del documento se ha descrito el funcionamiento del
sistema por mdulos, en esta etapa podemos mencionar que integramos todos ellos
para lograr el funcionamiento del sistema total.
Mostramos a continuacin el PIC en detalle con todas las seales que llegan y salen
de l.

Figura 3.21: Control Principal.
Fuente: Autores

113

3.8.3.7 Fuente de Alimentacin
Tenemos dos etapas, la primera corresponde a la alimentacin del sistema en s, que
es de 5 voltios DC, y la fuente de potencia que es de 12 voltios DC y sirve para
alimentar las bombas, y los relay.
Mostramos el circuito de la misma:
Figura 3.22: Fuente de Alimentacin.
Fuente: Autores

3.9 Firmware del Sistema
3.9.1 Introduccin a Visual Basic

Visual Basic es uno de los tantos lenguajes de programacin que podemos encontrar
hoy en da. Dicho lenguaje nace del BASIC (Beginners All-purpose Symbolic
Instruction Code) que fue creado en su versin original en el Dartmouth College, con
el propsito de servir a aquellas personas que estaban interesadas en iniciarse en
algn lenguaje de programacin.

Primero fue GW-BASIC, luego se transform en QuickBASIC y actualmente se lo
conoce como Visual Basic y la versin ms reciente es la 6 que se incluye en el
paquete Visual Studio 6 de Microsoft. Esta versin combina la sencillez del BASIC

114

con un poderoso lenguaje de programacin Visual que juntos permiten desarrollar
robustos programas de 32 bits para Windows.

Dentro de este Lenguaje de Programacin podemos destacar la amplitud que nos da
al permitir trabajar con puertos de entrada y salida del ordenador siendo as la
herramienta perfecta para destacar en el trabajo con puertos seriales, paralelo y USB
de igual manera el soporte en libreras DLL para acceder a los mencionados puertos
hacen de Visual Basic 6.0 sea la mejor opcin para el desarrollo de sistema que
deban de controlar y monitorear dispositivos externos al ordenador.

Su manejo de acoplamiento con las distintas base de datos por medio de la fuente
ODBC hace que visual BASIC permita integrar el sistema remoto con el monitoreo
ms cercano al hardware realizando un testeo de cada evento suscitado en el
hardware para que los dispositivos remotos accedan a la base de datos de esta
manera poder lograr un permanente control y monitoreo del hardware.

As tambin las libreras propias de visual Basic nos da un sistema de control de
eventos para poder manejar de manera ms precisa y exacta los sucesos del hardware
priorizando cada evento sucedido desde el hardware el mismo parmetro que al
acceder al sistema pasa a ser tratado para efectuar la accin referente ha dicho evento

3.9.1.1 Caractersticas Generales de Visual Basic
Diseador de entorno de datos: Es posible generar, de manera automtica,
conectividad entre controles y datos mediante la accin de arrastrar y colocar sobre
formularios o informes.
Los Objetos Actives son una nueva tecnologa de acceso a datos mediante la accin
de arrastrar y colocar sobre formularios o informes.
Asistente para formularios: Sirve para generar de manera automtica formularios que
administran registros de tablas o consultas pertenecientes a una base de datos, hoja
de clculo u objeto (ADO-ACTIVE DATA OBJ ECT)

115

Asistente para barras de herramientas es factible incluir barras de herramientas es
factible incluir barra de herramientas personalizada, donde el usuario selecciona los
botones que desea visualizar durante la ejecucin.
En las aplicaciones HTML: Se combinan instrucciones de Visual Basic con cdigo
HTML para controlar los eventos que se realizan con frecuencia en una pgina Web.
La Ventana de Vista de datos proporciona acceso a la estructura de una base de
datos. Desde esta tambin acceso al Diseador de Consultas y diseador de Base de
datos para administrar y registros.

3.9.1.2 Nociones de visual Basic
Es un lenguaje de fcil aprendizaje pensado tanto para programadores principiantes
como expertos, guiado por eventos, y centrado en un motor de formularios que
facilita el rpido desarrollo de aplicaciones grficas. Su sintaxis, derivada del antiguo
BASIC, ha sido ampliada con el tiempo al agregarse las caractersticas tpicas de los
lenguajes estructurados modernos. Se ha agregado una implementacin limitada de la
programacin orientada a objetos (los propios formularios y controles son objetos),
aunque s admite el polimorfismo mediante el uso de los Interfaces, no admite la
herencia. No requiere de manejo de punteros y posee un manejo muy sencillo de
cadenas de caracteres. Posee varias bibliotecas para manejo de bases de datos,
pudiendo conectar con cualquier base de datos a travs de ODBC (Informix, DBase,
Access, MySQL, SQL Server, etc) a travs de ADO.
Es utilizado principalmente para aplicaciones de gestin de empresas, debido a la
rapidez con la que puede hacerse un programa que utilice una base de datos sencilla,
adems de la abundancia de programadores en este lenguaje.
3.9.1.3 Entornos de desarrollo
Existen dos entornos de desarrollo IDE para Visual Basic:
Microsoft Visual Basic x.0 para versiones desde la 1.0 hasta la 6.0, (con las
diferencias entre las versiones desde la 1.0 (MS-DOS/Windows 3.1) hasta la

116

SISTEMA
MANTENIMIENTO
USUARIOS
DISPOSITIVOS
PROCESOS
MONITOREO CONTROL
CONSULTAS
CONSUMODE USUARIOS
VARIACIONES
ENCENDIDO/APAGADO
3.0 (16 bits, Windows 3.1) y las de la 4.0 (16/32 bits, Windows 3.1/95/NT)
hasta la 6.0 (32 bits, Windows 9x/Me/NT/2000/XP/Vista)
Microsoft Visual Studio .NET, entorno integrado para varios lenguajes entre
ellos Visual Basic .NET (32/64 Bits, Windows XP/Vista), con ediciones:
Express (ms limitada en herramientas pero gratuita)
Standard
Professional (Con licencia comercial)
Team Edition (Mucho ms completa en herramientas con licencia
comercial ms cara)
3.9.2 Descripcin del Sistema
El esquema del sistema de acuerdo a la interaccin ser el usuario ingresara
directamente al monitoreo del proceso por medio de la interface as mismo el sistema
estar conectado con el hardware por medio del puerto USB de esta manera se tendr
la interaccin del sistema con el hardware.
El mismo que llenara las tablas de las base de datos para el monitoreo mediante el
sistema remoto controlado por los Dispositivos mviles.

3.9.2.1 Descomposicin en subsistemas.
La aplicacin est dividida en los siguientes formularios permitiendo dar una
descripcin de manera global de la estructura del sistema.
A Figura 3.23: Mdulo del firmware
Fuente: Autores

117

SISTEMA
MANTENIMIENTO
PROCESOS
CONSULTAS

A continuacin detallaremos cada uno de los mdulos expuestos en este diagrama:

El sistema es dividido en tres grandes procesos cada uno de los cuales tendrn
mdulos internos de gran importancia para la adecuacin y funcionamiento del
sistema.

Dentro del mismo estarn mdulos de temperaturas el cual dentro de una interface
totalmente amigable desplegara el funcionamiento del mantenimiento de las
temperaturas.

Dentro del mismo estar el monitoreo y el control del sistema de las variables tanto
de entrada como de salidas y las debidas acciones a tomar para el correcto
funcionamiento del sistema industrial

Dentro de la cual podrn efectuarse la consulta del consumo de lquido para el
proceso industrial.
3.9.2.2 Diseo de objetos.

Figura 3.24: Secuencia del Firmware
Fuente: Autores



2
Procesamiento
de variables y
ejecucin de
acciones
3. Insercin y
actualizacin
de datos en la
base
1. Obtencin de
variables

118

3.9.3 Herramientas de desarrollo
3.9.3.1 Configuraciones ODBC Para MySQL
MySQL es una de las base de datos ms rpidas y potentes de la actualidad si a esto
le agregamos lo rpido que se torna desarrollar bajo Visual Basic sin dudas corremos
con grandes ventajas a la hora de crear potentes aplicaciones. No solo para acceder
de forma local a nuestra base de datos sino tambin puede que necesitemos acceder a
un servidor MySQL localizado en otra parte del mundo y hasta que este corra bajo
Linux.
Primero debemos de proceder a la instalacin del ODBC para integrar Mysql5.1 con
VB6.0 dicho componente es mysql-connector-odbc-5.1.0-alpha-win32 para proceder
a la configuracin del ODBC seguir los siguientes pasos: Inicio >Panel de
Control>Herramientas Administrativas>Orgenes de datos ODBC











Figura 3.25: Instalacin del Driver ODBC
Fuente: Autores
Como primer paso debemos crear la referencia a ADO (Ado Data Control 6.0) desde
nuestro Visual Basic, para esto vamos al men Proyecto >Componentes... y ah
seleccionamos Microsoft Ado Data Control 6.0.


119

Cdigo Para realizar la conexin con el ODBC.
Public rs As ADODB.Recordset
Public con As Connection
Public Sub Conectar()
Set con =New ADODB.Connection
con.ConnectionString ="DRIVER ={MySQL ODBC 5.51 Driver}; Server =localhost;
Uid=root; pwd=pasw; database=prueba; connection "
con.Open
If con.State =1 Then
MsgBox "Conectada"
Else
MsgBox "Error"
End If
End Sub
Sub registro()
Set rs =New ADODB.Recordset
With rs
.ActiveConnection =con
.CursorLocation =adUseClient
.CursorType =adOpenDynamic
.LockType =adLockOptimistic
.Open "Select * from usuario"
End With
End Sub
Private Sub Form_Load()
Conectar
End Sub

3.9.3.2 Instalacin de Componentes LabView

Acerca de LabView

LabVIEW es una herramienta grfica para pruebas, control y diseo mediante la
programacin. El lenguaje que usa se llama lenguaje G. Este programa fue creado
por National Instruments (1976) para funcionar sobre mquinas MAC, sali al
mercado por primera vez en 1986. Ahora est disponible para las plataformas
Windows, UNIX, MAC y Linux y va por la versin 8.5.1 con soporte para Windows
Vista.
Los programas desarrollados con LabVIEW se llaman Instrumentos Virtuales, o VIs,
lo que da una idea de su uso en origen: el control de instrumentos. El lema de
LabVIEW es: "La potencia est en el Software". Entre sus objetivos estn el reducir
el tiempo de desarrollo de aplicaciones de todo tipo (no slo en mbitos de Pruebas,
Control y Diseo) y el permitir la entrada a la informtica a programadores no

120

expertos. Esto no significa que la empresa haga nicamente software, sino que busca
combinar este software con todo tipo de hardware, tanto propio -tarjetas de
adquisicin de datos, PAC, Visin, y otro Hardware- como de terceras empresas.
Principales usos
Es usado principalmente por ingenieros y cientficos para tareas como:
Adquisicin de datos
Control de instrumentos
Automatizacin industrial o PAC (Controlador de Automatizacin
Programable)
Diseo de control: prototipaje rpido y hardware-en-el-ciclo (HIL)
Diseo Embebido
Domtica

Measurement Studio de National Instruments
National Instruments Measurement Studio es un conjunto de aplicaciones integrado
de clases y controles para aplicaciones de prueba, medida y automatizacin en Visual
Studio 6.0. Measurement Studio reduce drsticamente el tiempo de desarrollo de la
aplicacin, ya que ofrece Windows Forms, Web Forms y controles de interfaz de
usuario de ActiveX diseados para ingenieros, anlisis cientficos avanzados,
adquisicin de datos (DAQ) y bibliotecas de clases de instrumentos de control
optimizadas para pruebas.

Figura 3.26: Grficos de LabVIEW
Fuente: www.ni.com/mstudio/


121

Para la colocacin del componente de LabVIEW en nuestro proyecto simplemente
basta con instalar la aplicacin en nuestro PC y desde ah se proceder a realizar el
llamado desde Visual Basic de la siguiente manera:

















Figura 3.27: Agregar componente de LabVIEW
Fuente: Autores

A continuacin procedes a escogerlo desde la barra de herramientas y agregarlo al
formulario dentro del mismo se tiene varias opciones para realizar la configuracin
sobre el modo de presentacin del mismo



















Figura 3.28: Utilizacin del componente de LabVIEW sobre Vb 6.0
Fuente: Autores





122

3.9.3.3 Componentes utilizados en el firmware.

En este captulo examinaremos cada uno de los objetos utilizados en los sistemas as
como la utilizacin y los tipos de variables que hemos utilizado para obtener un
conocimiento global de la utilizacin de los mismos en los formularios realizado para
la presentacin del sistema al usuario.
TextBox: Mediante este control podremos realizar tanto la entrada
como la salida de datos en nuestras aplicaciones.
Figura 3.29: TexBox
Fuente: Visual Basic
Label: Este control es tambin uno de los ms utilizados, aunque su
utilidad queda restringida a la visualizacin de datos en el mismo, no
permitiendo la introduccin de datos por parte del usuario.
Figura 3.30: Label
Fuente: Visual Basic
CommandButton: Este control es el tpico botn que aparece en todas
las aplicaciones y que al hacer clic sobre l nos permite realizar alguna
operacin concreta, normalmente Aceptar o Cancelar.
Figura 3.31: CommandButton
Fuente: Visual Basic
Toolbar: Este control nos permite agregar una barra de control en
nuestro formulario el mismo que podr tener caractersticas y enlace
de diferentes dependiendo de la necesidad que genere la aplicacin.

Figura 3.32: Toolbar
Fuente: Visual Basic
CWSlide: Control obtenido de la librera de LabVIEW que ya
revisamos en la parte anterior, como instalar este componente el
mismo nos permite representar la grafica del nivel del tanque.


Figura 3.33 CWSlide
Fuente: Visual Basic

123


Figura 3.38: CheckBox
Fuente: Visual Basic

RichTextBox: Este control es un componente que nos da una opcin de
colocar un archivo RPT como una lista dentro de nuestro formulario,
pudiendo manipular el documento con las caractersticas de un archivo
plano
Figura 3.34: RichTextBox
Fuente: Visual Basic
Calendar: Control que nos brinda las propiedades de un calendario
dentro de nuestro formulario, permitiendo captura la fecha que el
usuario escoja es ideal para la consulta de reportes por rango de
fechas
Figura 3.35: Calendar
Fuente: Visual Basic
CrystalReport: Componente que nos brinda el programa Crystal
Report el mismo que nos brinda este componente par ser llamado
desde Vb 6.0, es utilizado para realizar la llamada de los archivos
creados bajo extensin RPT.
Figura 3.36: CrystalReport
Fuente: Visual Basic
Frame: Nos permite el agrupamiento de controles para poder realizar
una mejor presentacin del formulario al usuario final.



Figura 3.37: Frame
Fuente: Visual Basic
CHECK BUTTON Y OPTION BUTTON: El control CheckBox, o casilla de
verificacin, permite elegir una opcin (activada /
desactivada, True/False) que el usuario puede establecer o
anular haciendo clic. Una X en una casilla de verificacin
indica que est seleccionada, activada, o con valor True.
Cada casilla de verificacin es independiente de las dems
que puedan existir en el formulario, pudiendo tomar cada una de ellas el valor True o
False, a voluntad del operador. Un control OptionButton muestra una opcin que se
puede activar o desactivar, pero con dependencia del estado de otros controles
OptionButton que existan en el formulario.

124


Figura 3.39: ListBox
Fuente: Visual Basic

Figura 3.40: Timer
Fuente: Visual Basic

LIST BOX Y COMBO BOX: Un control ListBox muestra una lista de elementos en la que el
usuario puede seleccionar uno o ms. Si el nmero de elementos
supera el nmero que puede mostrarse, se agregar
automticamente una barra de desplazamiento al control
ListBox.

TIMER TEMPORIZADOR: Este objeto permite establecer temporizaciones.
Presenta una novedad respecto a los controles estudiados
hasta ahora. El control Timer solamente se ve durante el
tiempo de diseo. En tiempo de ejecucin, el control
permanece invisible. La temporizacin producida por el
Timer es independiente de la velocidad de trabajo del
ordenador.
Variable: Dim: Al declarar una variable con esta palabra estamos diciendo que la
variable sea local al mbito en que se declara. Puede ser dentro de un procedimiento
o dentro de un formulario, de esta forma no sera accesible desde los dems
procedimientos o formularios.
Public: Las variables declaradas sern pblicas y podrn estar accesibles desde todos
los formularios de la aplicacin. Para conseguirlo tendremos que declararlas en un
mdulo de cdigo, no en la seccin declaraciones de cualquier formulario de los que
conste la aplicacin. Para crear un mdulo de cdigo en el men principal de Visual
Basic marcamos en INSERT/MODULE y aparecer junto a los dems formularios de
la ventana de proyecto aunque con un icono distinto indicando que se trata de un
mdulo de cdigo.
Static: Con esta forma de declarar variables conseguiremos que las variables locales
no se creen y se destruyan al entrar y salir de los procedimientos donde fueron
declaradas sino que se mantenga su valor durante todo el periodo de ejecucin de la
aplicacin. De esta forma a entrar en algn procedimiento las variables recuerdan el
valor que tenan cuando se sali de l.


125

TIPOS DE VARIABLES
TIPO COMENTARIO
BOOLEAN Slo admite 2 valores TRUE o FALSE
BYTE admite valores entre 0 y 255
INTEGER admite valores entre -32768 y 32767
LONG admite valores entre -2.147.483.648 y 2.147.483.647
SINGLE admite valores decimales con precisin simple
DOUBLE admite valores decimales de doble precisin
CURRENCY vlido para valores de tipo moneda
STRING cadenas de caracteres
DATE fechas, permite operar con ellas
Tabla 3.4: Tipos de Variables
Fuente: www.lawebdelprogramador.com
Constantes: Declaracin de constantes que pueden ser usadas en cualquier punto en
lugar de su valor, permitiendo cambiarlo cuando sea necesario, sin tener que
cambiarlo en todos los sitios en que se utiliza. La expresin no puede utilizar
llamadas a funciones, pues la constante se calcula en tiempo de compilacin, no en
tiempo de ejecucin.
3.9.3.4 Creacin de archivo RPT mediante Crystal Report
Al abrir el Crystal Report con la primera pantalla que nos mostrara ser la siguiente:

Figura 3.41: Utilizacin de Crystal Report
Fuente: Autores
Selecciona la opcin de Crear un Nuevo Documento de Crystal Report utilizando el
Wizard.

126


La opcin que "En tat Expert" permite extraer los datos directamente de la base de
datos. Tambin puedes crear un Documento De Crystal vaco para configura
despus, m agregando campos y datos cuando sea necesario. Usted puede escoger el
tipo de informe (normal). Despus de este paso, pulse el botn en "OK."
Usted tambin puede acceder al Wizard escogiendo "Archivo", "Nuevo" del men
de Crystal
Seleccin de la Base de datos

Figura 3.42: Utilizacin de Crystal Report
Fuente: Autores

Usted debe seleccionar la base de datos de la que usted tomara los datos que se
usarn en el Reporte de Crystal. Pulse el botn en " Data base " y seleccione la base
de datos.
Agregando Tablas
Despus de la seleccin de la base de datos es necesario agregar las tablas de las
mismas al reporte.

Figura 3.43: Agregando tablas
Fuente: Autores

127

El explorador te permite escoger y visualizar la tabla de tu base de datos que desees
colocar en tu reporte
Escoger los datos de un reporte

Figura 3.44: Escoger datos de un reporte
Fuente: Autores
Su prximo paso es seleccionar campos que usted quiere mostrar en el informe.
Luego pulse el botn "Next". Los campos agregados estn en el brillo. Nosotros
podemos agregar tantos campos como sea necesario. Si usted quiere que su informe
este agrupado, usted puede seleccionar la columna por la cual quiere agrupar. Pulse
el botn adelante "Finish"
Ambiente de Reporte

Figura 3.45: Ambiente de un reporte
Fuente: Autores


El Documento De cristal est en el modo Design.
Usted podra ver los campos agregados al formulario. Usted puede anular o puede
agregar otros. La fecha de imprimir y el nmero de pginas son los campos
especiales. Usted tiene la posibilidad de mover los campos para modificar la
presentacin del informe de acuerdo a nuestra necesidad.

128

3.9.4 Descripcin del entorno de desarrollo en Visual Basic

Dentro de este captulo conoceremos un poco mas de los componentes utilizados en
el sistema para el desarrollo de nuestra aplicacin tanto en sus aplicacin como en su
utilizacin de los mismo, su manera de instalacin y la manera de llamarlo desde Vb
as mismo se tendr un vasto conocimiento en los componentes propios de Vb para
desarrollar la interface grafica del proyecto

Encontrando aplicativos de LabView los mismos que nos permitieron una mejor
traficacin mediante el slider para el visor de tanque de llenado.

Dentro de las fases de desarrollo en sistema de visual se podr denotar cada una de
los componentes utilizados para la creacin de formularios los mismos que sern de
la utilizacin directa para el usuario.

La creacin de los archivos RTP son desarrollados desde Crystal Report cuyos
parmetros son entregados desde el Vb 6.0 para realizar consultas especificas y as
lograr un reporte ms efectivo de acuerdo al requerimiento del usuario.


3.9.4.1 Justificacin del Firmware y su funcionamiento

A continuacin, se proceder con el desarrollo de las incursiones de los componentes
necesarios para obtener la forma del programa as como el anlisis del sistema y de
sus variables.
El sistema desarrollado es capaz de capturar y procesar las salidas del micro
controlador PIC realizando acciones de acuerdo a las necesidades del sistema y as
lograr el buen funcionamiento del mismo contemplando cada uno de los parmetros
de suceso posibles de ocurrir mientras este activo el proceso industrial. As mismo el
esquema del cdigo permite que el mismo sea escalable ya que contiene un cdigo
de procesos y acciones en manera modular
El sistema comprende de 8 entradas y 8salidas esquematizadas en los requerimientos
de nuestro sistema a continuacin se detallara las mismas

129

Salidas

Sistema General: El Bit B0 es el encargado de mantener el pulso para el
funcionamiento de la placa controladora.
Bomba de carga: El Bit B1 activa un destello para precisar el encendido de la bomba
Bomba Descarga: El Bit B2 activa un destello para precisar el encendido de la
bomba 2
Sistema remoto: El Bit B3 es el encargado de enviar la activacin al PIC de sistema
remoto
Entradas
Confirmaciones

Sistema General: Luego de que el sistema general arranca me enva un
Bit en alto para confirmarme q el sistema realmente arranco
Bomba de carga: El Bit D1 activa un destello para precisar el encendido de la bomba
Bomba Descarga: El Bit D2 activa un destello para precisar el encendido de la
bomba 2

Niveles de tanque

Nivel Alto: Activacin de D3 en el momento en que ocurre el llenado del tanque
Nivel Medio: Activacin de D4 en el momento en que el tanque se encuentra a
mitad de su volumen total
Nivel Bajo: Activacin de D. en el momento en q el tanque comienza a cargar

Sensores de temperatura

Sensor1: D7 se activa en caso de recibir una anormalidad en la temperatura de la
bomba1
Sensor2: D6 se activa en caso de recibir una anormalidad en la temperatura de la
bomba2

El mdulo de monitoreo arranca con la llamada a un mtodo de reconocimiento de
perifrico mediante un proceso desarrollado de comunicacin USB directa con el
PIC 18F4550 programado con comandos en lenguaje "C" el mismo que se encarga

130

de realizar la captura de la data de 8 bit que han sido enviados desde mi mdulo del
sistema a controlar.

De manera explcita y de manera paralela se proceden a ejecutar procedimientos de
limpieza a la base de datos y dems variables, as mismo el sistema se encarga de ser
informado del tipo de usuario que acceso el mismo.


Figura 3.46: Pantalla de Monitoreo del Proceso.
Fuente: Autores

El sistema consta de envi de data al hardware como el encendido de las Bombas las
mismas que realizan procesos paralelos al momento de ejecutar alguna accin
manejando un aplicativo de conexin tanto a la base de datos como al PIC para
detectar alguna novedad en el sistema. (Anexos- FRMUSB)

Mediante el acceso a la base se guardaran datos del proceso en la tabla registro_mc
tales como tipo de usuario, fecha/Hora de acceso, estado de los dispositivos y modos
en los cuales estn operando, la salida de parmetros de la base de datos se efecta en
el momento que se gravan los datos de manera paralela a la tabla temporal la misma

131

que elimina sus registros en el momento que se concluye un ciclo completo del
proceso (llenado y vaciado).

Mdulos como el de censo y activaciones de timers permiten mantener testeada la
base de datos para saber si los equipos remotos han enviado algn requerimiento as
mismo existe un proceso denominado alarma () el mismo que se mantiene en
permanente censo a las variables de temperatura de las bombas dicho dato es
provedo por el hardware.

El sistema no arrancara de manera general hasta que el hardware emita la seal de
que el sistema est preparada para el funcionamiento por el Bit 0 de la trama de 8 bit
enviados desde el puerto USB luego de lo cual estar listo el proceso para comenzar
con el llenado o vaciado del tanque de igual manera comienza el censo del proceso a
ejecutar por medio de la obtencin de dicho parmetros mediantes los mdulos de
Lectura del sistema que se encarga de capturar la trama de 8bits que nos enva
mediante el PIC 18F4550.

Las variables como las de bomba son una entrada al sistema ya que la confirmacin
de las mismas por parte del hardware permite comenzar con el proceso de censo e
insercin al registro de la base de datos de acuerdo a los parmetros que se vaya
obteniendo del proceso de llenado o vaciado tales como cantidad del tanque,
activacin de niveles, estados de las temperaturas, guardando el proceso lgico en un
archivo .INI el mismo que contiene datos de los procesos lgicos y de sistemas de
alertas que emita cada accin censada por el puerto USB con respecto al hardware

Dentro el procedimiento de censo de variaciones de temperatura tenemos la
activacin del cliente remoto y revisin de parmetros as como el acceso en la tabla
dispositivo.

Dentro de unas de las alertas que pueden ser suscitadas en el mdulo el sistema lo
tiene de la manera ms eficaz y eficiente de resolucin ya sea por el sistema
desarrollado en visual Basic, del mdulo remoto o del celular, dentro de suscitarse
algn inconveniente el proceso de continuar permitir proseguir con la carga del
tanque por medio del mdulo reset obteniendo parmetros de la tabla tanque que es

132

SISTEMA
PROCESOS
MONITOREO CONTROL
CHAT LOGS
la que almacena la incidencia niveles de tanque y la cantidad en la cual se suscito el
inconveniente.

El botn paro mantiene una programacin capaz de cerrar y enviar a apagar el
sistema, provocando el reseteo de variables y la limpieza en la base de datos.

Dentro del proceso de captura de datos del hardware es un proceso que se est
corriendo de manera paralela al de cualquier evento que suscite el procedimiento
desarrollado lleva el nombre de Private Sub Lectura() encargado de mantener
informado sobre el estado de las entradas al sistema.

De igual manera el proceso de envi de datos al hardware se realiza de manera serial
en trama de 8 bits por medio de mdulo de Sent_Receive (Form USB) el mismo que
se encarga de generar los pulsos necesarios para las activaciones de las bombas y del
PIC 16F877 encargado de la manipulacin del celular para la recepcin de mensajes
y control de proceso (Revisar Anexo E).


3.10 Software y Desarrollo del Mvil.

Figura 3.47: Diagrama del sistema
Fuente: Autores

133

3.10.1 Sistema MCC
El sistema es dividido en tres grandes procesos cada uno de los cuales tendrn
mdulos internos de gran importancia para la adecuacin y funcionamiento del
sistema.
a.- Monitoreo
Este proceso se encarga de obtener los datos de la base y presentarlos en un reporte
grfico en el dispositivo mvil, agilitando el proceso de monitoreo manual y teniendo
datos de los sucesos dentro de un Sistema Industrial (ej.: Sistema de Tanque
Elevado) en tiempo real.

b.- Control
Este proceso se encarga de enviar ordenes de encendido o apagado dentro del
Sistema, mediante la actualizacin de datos correspondiente.

c.- Chat
Este proceso mantiene comunicados en tiempo real a los usuarios para tener mayor
control dentro del Sistema y as si llegara a fallar el proceso automtico siempre
tener la apertura al accionar manual y directo.

3.10.2 Arquitectura del Sistema Controlado por Dispositivos Mviles











Figura 3.48: Arquitectura del sistema
Fuente: Autores

Ejecuta
funcin
Conection
Pool
WebServices
Base de Datos
SERVIDOR WEB
GLASS FISH, JAVA EE
Requerimiento
HTTP
Retorna los
Datos
Archivo WSDL
Archivo WSDL

134

Explicacin
1. El dispositivo mvil realiza un requerimiento http hacia el Servidor Web
donde est alojado el Servicio Web.
2. Este mediante un Pool de Conexiones se comunica con la base de datos
3. El Webservice ejecuta la funcin requerida y realiza la peticin a la base
4. La base le retorna los datos al Webservice
5. El Webservice formatea los datos recibidos de la base en un archivo wsdl
6. Enva el archivo wsdl hacia el dispositivo mvil que le realiz el
requerimiento


3.10.3 Aplicacin Web, Conexin a la Base de Datos
Problema
Muchas veces desarrollamos aplicaciones que se conectan a una o varias bases de
datos (MySQL, Oracle, PostgreSQL, etc.) y el gran problema siempre es la cantidad
de conexiones que deben soportar dichas bases de datos. Qu pasa si hay 4000
conexiones a la vez? Qu pasa si esta cifra aumenta? bueno, ya pueden imaginar
que cosas podran suceder, partiendo por que el servidor de base de datos se caiga.

Solucin
Uso de un DataSource mediante el cual el cliente se conectar a la base de datos.
Este datasource utiliza lo que se conoce como Connection Pool que no es ms que
una cantidad de conexiones disponibles para el uso y lo maneja un servidor de
aplicaciones (como glassfish).

Mediante un connection pool las conexiones a la base de datos pueden bajar de 4000
a solo 100 (esas son cifras reales), ya que no siempre se necesitan conexiones
activas. Esto no quiere decir que un cliente se quedar sin el recurso, sino ms bien
que el servidor de aplicaciones permitir un mejor uso de dicho recurso a travs de la
gestin que hace al administrar el pool de conexiones.

Pasos:
1. Establecer una conexin con la base de datos.

135

2. Crear una aplicacin web.
3. Crear un connection pool.
4. Crear un datasource.
5. Registrar el connection pool y el datasource en el servidor de aplicaciones.
6. Llamar un datasource desde una clase en nuestra aplicacin web.
Lo primero es lo primero, necesitamos algunas cosas antes de partir. Necesitamos
instalado:
7. Netbeans 6.0
8. J DK 1.6.0_02
9. Sun J ava System Application Server 9
10. MySQL 5.0.45
Una vez todo instalado debemos tener corriendo la base de datos.


Figura 3.49: Cargando la base de datos a nuestro sistema
Fuente: Autores

136

Ahora crearemos una conexin a la base de datos usando netbeans, pinchen la
pestaa "runtime", luego "Databases", clic derecho a "Drivers" y pinchan "New d

Figura 3.50: Creando el driver J DBC
Fuente: Autores
Aqu se pasa el driver JDBC como pueden ver en la imagen, luego clic en Ok.
Ahora vamos a crear una conexin utilizando el driver que le acabamos de pasar.
Haz clic derecho sobre "Databases" y pincha "New connection".


Figura 3.51: Creando una nueva conexin
Fuente: Autores

137

En la ventana que aparece ingresa los datos que corresponden como pueden ver en la
imagen. Luego pincha Ok.

Figura 3.52: Finalizando la Conexin
Fuente: Autores

Ahora ya tenemos una conexin a la base de datos desde netbeans, la cual podremos
usar cuando queramos en nuestras aplicaciones. Ahora levantaremos nuestro servidor
de aplicaciones, para esto pincha sobre "Servers", haz clic derecho sobre "Sun Java
System Application Server 9" y pincha "Start", esto levantar el servicio que
utilizaremos ms adelante.

Figura 3.53: Levantando el Servicio
Fuente: Autores

138

Ahora crearemos un "Web Application...


Figura 3.54: Creando un nuevo proyecto
Fuente: Autores


Figura 3.55: Colocando parmetros al proyecto
Fuente: Autores


139

Una vez creado el proyecto crearemos el connection pool, para esto haz clic derecho
sobre el proyecto, mueve el cursor a "New" y pincha "File/Folder".

Figura 3.56: Creando un Web Application
Fuente: Autores

Ahora debes colocar un nombre a tu connection pool y seleccionar la conexin a la
base de datos que previamente estableciste en netbeans.



Figura 3.57: Colocando el Netbeans
Fuente: Autores

140



Luego pinchas siguiente y vers los datos de la conexin a la base de datos, luego
pinchas "finish".

Figura 3.58: Creado el Web Application para la base de datos
Fuente: Autores

Ahora vamos a crear el datasource, para esto vas donde mismo para crear el
connection pool pero esta vez seleccionas "JDBC Resource".

Figura 3.59: Creando el pool de conexiones
Fuente: Autores

141

Ahora necesitamos crear una referencia al datasource en nuestro proyecto, para esto
haz doble clic en "web.xml" (est en Mi Proyecto ->Web Pages ->WEB-INF), luego
pinchas "References" ->"Add" y agregas el nombre que le pusiste al datasource.

Figura 3.60: Creando el referencia de conexin
Fuente: Autores


Figura 3.61: Agregada la referencia de conexin
Fuente: Autores



142

Ahora haz doble clic sobre "sun-web.xml", expande "Sun Web Aplication" y pincha
el datasource que aparece ah (es el que tu creaste). Fjate que donde dice "J NDI
Name" no hay nada, debes copiar y pegar lo que sale justo arribita (el nombre de tu
datasource) y guardas.

Figura 3.62: A tachando la referencia de conexin a tu aplicacin
Fuente: Autores.

Ahora debes registrar en el servidor de aplicaciones el connection pool y el
datasource que ha creado previamente, simplemente expande "Server resources" en
tu proyecto y haz clic derecho sobre el connection pool y pincha "Register", lo
mismo despus con el datasource.

Figura 3.63: Registrando servidor de aplicacin
Fuente: Autores

143

Ya tenemos listo el connection pool y el datasource en nuestra aplicacin y en el
servidor de aplicaciones. Ahora solo resta utilizarlos en nuestra aplicacin. Para esto
haz una clase java en tu proyecto colocando el nombre que t quieras.


Figura 3.64: Haciendo la clase en java con las aplicacin
Fuente: Autores
Una vez creada haz clic derecho en el editor de netbeans, sobre tu clase y mueve el
cursor a "Enterprise resources" y pincha "Use database".

Figura 3.65: Haciendo la clase en java con las aplicacin
Fuente: Autores





144

3.10.4 Creacin de WebService
Crear un Web service cliente para consumir dichos servicios.

Sin ms prembulo crearemos un web service, para esto haremos clic derecho sobre
el proyecto ->new ->web service [...]

Figura 3.66: Creando un web service
Fuente: Autores
Luego veremos lo siguiente...

Figura 3.67: Agregando una operacin
Fuente: Autores
Pinchamos Add operation para crear un servicio, en Name colocamos el nombre del
servicio que corresponde a un web method, que en ste caso retornar un dato de tipo

145

String y recibir un parmetro que corresponde al root del usuario y es de tipo String
[...]

Figura 3.68: Nombre y tipo de operacin
Fuente: Autores

Luego creamos un tercer servicio y lo nombraremos obtenerUsuario el cual retornar
un objeto de tipo UsuarioBean y recibe como parmetro el root del usuario de tipo
String...

Figura 3.69: Creando un nuevo servicio
Fuente: Autores

146

Ya tenemos declarados los web services, pero an no estn implementados. Si se
fijan en la pantalla donde agregaron las operaciones o servicios hay dos opciones,
una es Design y la otra es Source, si pinchan Source vern el editor de la clase con
los mtodos creados anteriormente pero sin implementacin, es ah donde ustedes
pueden llamar a la clase ConexionBDDataSource que habamos creado
anteriormente y agregar la lgica que corresponda para manejar los datos ingresados
por el usuario y consultar a la base de datos y responderle al usuario. Lo que yo
recomiendo es crear una capa de lgica intermedia que se encargue de hacer las
validaciones correspondientes (que el usuario exista, que tenga deuda, que no pague
cero pesos, etc.) y de esa forma el diseo queda en multicapas y es ms fcil despus
para cambiar alguna cosa y que su sistema sea adaptable a dicho cambio (flexible,
escalable, etc.).

3.10.5 Consumir WebServices.
Le damos Clic derecho sobre el proyecto ->New ->J ava ME Web Services Client

Figura 3.70: Creando un consumidor del web service
Fuente: Autores





147

Luego nos aparecer una pantalla como est

Figura 3.71: Creando un Cliente
Fuente: Autores

Despus de haber hecho esto le damos clic en finish

Figura 3.72: Parmetros del Cliente
Fuente: Autores

148

Por ltimo nos aparecer una ventana en la que notaremos que tenemos el ws client
agregado y el netbeans habr agregado un nuevo paquete con todo lo referente al
nuevo Web Service.

Figura 3.73: Finalizacin la creacin de Consumidor de WEB
Fuente: Autores




























149

4.- Bibliografa.
4.1 Direcciones Electrnicas.
Hardware.
www.rentron.com
www.microchip.com
www.neoteo.com
http://www.melabs.com/products/pbp.htm
http://www.winpic800.com
http://www.ccsinfo.com/content.php?page=ideoverview
http://www.garcia-cuervo.com/picmania.garcia-cuervo.net/PICC.php

Software.
http://www.ni.com/mstudio/
http://www.connectionstrings.com/default.aspx?carrier=mysql
http://dev.mysql.com/downloads/connector/odbc/3.51.html
http://www.mysql.com/products/connector/odbc/
http://www.mysql.com/about/contact/
http://www.trucoswindows.net/foro/topico-5900-manejo-de-puerto-usb.html
http://www.intel.com/intelpress/usb/examples/vboverview.htm
http://www.todoexpertos.com/categorias/tecnologia-e-
Internet/internet/respuestas/1707372/manejo-del-puerto-usb-desde-visual-basic
http://es.wikipedia.org/wiki

Arquitectura del mvil.
www.lexer.netbeans.org
http://www.radioptica.com/Radio/wlan.asp
http://metalklesk.blogspot.com/
http://www.netbeans.org/kb/index.html
http://metalklesk.blogspot.com/2007/09/connection-pool-y-datasource-en.html
http://metalklesk.blogspot.com/2007/12/instalacin-de-glassfish-v2-en-opensuse.html
http://metalklesk.blogspot.com/2007/10/web-service-y-web-service-client-en.html



150

4.2 Libros
SILER, Brian, y otros, Visual Basic 6.0, Edicin Especial, Editorial Prentice Hall,
Madrid Espaa, 1999.
Reyes, Carlos, Aprenda a programar Microcontroladores en Basic, 1era. Edicin,
Editorial Grficas Ayerve, Ecuador, 2004.
Ramos, Guillermo, y otros, Electrnica Industrial y automatizacin, 1era Edicin,
Editorial Cekit, Pereira-Colombia, 2002, Tomo 1.
Castao, J uan, Curso prctico sobre microcontroladores, 1era Edicin, Editorial
Cekit, Pereira-Colombia, 2002, Tomo 1.

































151






ANEXO A

Interfaces grficas de usuario

A.1 Descripcin del captulo

Dentro de este anexo procederemos a la explicacin de las opciones y caractersticas
del sistema para que el usuario tenga el conocimiento para el control del mismo.

As mismo se explicara de manera detallada las opciones de error y de sucesos que se
puede tener y la opciones necesarias para poderlo resolver en caso de presentarse
durante la ejecucin del control.

Se adjunta graficas del sistema en las mismas que ser debidamente explicada para
mejor comprensin por parte del operador.


A.2 Introduccin a las interfaces de usuario

El sistema es en su totalidad visual es por aquello que se lo desarrollo en un lenguaje
que permita realizar el proceso de manera interactiva con el operador este es una
razn ms para que el sistema encargado en manipular el hardware de manera directa
sea programado en Visual Basic.

Dentro de la cada una de las acciones se tiene su debido mensaje para que de esta
manera el operador decida qu accin realizar as mismo como el control de cada
uno de los eventos que suceda mientras la operacin de las maquinarias lo que le
permitir tener al operador un conocimiento general de lo que est sucediendo en las
maquinarias y en el proceso en s.


152

Cada una de las acciones realizadas por el usuario son registradas dentro de una base
de datos lo que permite saber cada accin que el operador realice sobre la interface y
sobre el proceso en s de esta manera podemos permitirnos saber quien, cuando y
desde donde realizo alguna alteracin en la manipulacin del proceso, as mismo se
cuenta con las debidas seguridades al momento de ingresar al sistema con un lapso
mximo de 3 intentos de acceso luego de aquello el sistema proceder a cerrar de de
manera automtica.

A.3 Descripcin de Interfaces Por mdulos

Se desarrollara la explicacin del sistema por cada uno de los mdulos desarrollados
en visual Basic esto quiere decir que dentro del formulario principal no se reflejara
algunas instrucciones propias del formulario como las opciones de salir en el MDI
Principal.

A.3.1 Login Acceso De clave

Interface de acceso la misma te permite un mximo de 3 intentos para acceder al
sistema sino proceder a cerrarse el mismo, desplegando los mensajes necesarios en
caso de presentarse este particular.


Figura A1.1: Pantalla de acceso
Fuente: Autores


A su vez esta lleva un registro del ingreso de cada usuario al sistema para registrar el
ingreso y salida del usuario.



153

Figura A1.2: Pantalla de error de usuario
Fuente: Autores

La misma contiene 2 botones el de acceso y salida y las validaciones necesarias para
que complete los datos antes de poder dar clic a la opcin de ingreso como se denoto
en la imagen

Figura A1.3: Pantalla de ingreso de usuario/clave
Fuente: Autores

Permitiendo el acceso al sistema


Figura A1.4: Pantalla de acceso al sistema
Fuente: Autores


A.3.2 Sistema de Monitoreo

La interface lo primero que censa ser la conexin de hardware al sistema en caso de
no darse dicha situacin emitir un problema de No hay perifrico conectado

154


Figura A1.5: Error si no hay dispositivo (PIC) conectado en el USB
Fuente: Autores
Dentro del sistema de monitoreo la secuencia de funcionamiento ser la siguiente
Botn que indicara el encendido general, el segundo botn indicara el Continuar
Proceso en caso de haber sucedido una incidencia un Botn de paro que permita
detener el sistema y activar la opcin de celular en proceso remoto y la opcin de
terminar el proceso de manera definitiva y salir del formulario.


Figura A1.6: Monitoreo Bsico del proceso
Fuente: Autores



155

Nota cabe enfatizar que una vez cerrado el sistema las variables regresaran a NULL
de esta manera ser un proceso independiente al anterior es decir no arrancara de
niveles 0 y no del estado anterior, el desarrollo fue procesado de esta manera con la
intencin de que los procesos ni el monitoreo trabajen de manera indistinta.


Figura A1.7: Pantalla de monitoreo
Fuente: Autores
Dentro del sistema se maneja los Sucesos que ocurren en el sistema el mismo que
nos permite estar alerta del suceso de cada uno de los proceso en los cuales no indica
que accin realizar o que parmetro se necesita para continuar el proceso estos
mensajes son desplegados a partir de los datos que se est obteniendo del hardware

Sucesos de alertas registrados por el sistema antes de poder continuar el proceso de
llenado o vaciado segn lo indique su ltimo estado


156


Figura A1.8: Pantalla de problema en las bombas
Fuente: Autores


As mismo el sistema informa de las alertas posibles que pueden suscitarse durante el
proceso y que accin ha decidido tomar el sistema.

Figura A1.9: Continua proceso
Fuente: Autores

A.3.3 Consulta por Dispositivo

Dentro de esta interface se realizara la debida consulta por dispositivo emitindose
un reporte de acuerdo a lo deseado por el usuario



157

En esta pantalla debe de estar todos los datos llenados para poder emitir el debido
reporte caso contrario saldr error. Esta consulta se realiza por medio de rangos de
fechas.

A.3.4 Consulta Monitoreo por usuario

La consulta por usuario puedes realizarla escogiendo todos los usuarios registrados o
en su defecto por user especfico el mismo que se desplegaran en el combo de igual
manera su impresin podr ser por user o por grupo

Figura A1.10: Consulta por usuario
Fuente: Autores

A.3.5 Consulta Monitoreo de Encendido y Apagado

Dentro de la misma podrs realizar la consulta debida con respecto a el dispositivo el
estado que se mantuvo dependiendo del rango de fecha que Ud. dese escoger o por
una fecha especifica que Ud. decida colocar, se le desplegaran calendarios para un
definicin de fecha ms acertad y que no surja inconvenientes por parte del usuario

158


Figura A1.11: Consulta por dispositivo encendido y apagado
Fuente: Autores



A.3.6 Mantenimiento de Usuario

Dentro del mantenimiento de usuario puedes realizar la insercin de nuevos usuarios
disponiendo el tipo de usuario que ser as mismo podes ingresar su password y sus
datos personales.

Figura A1.12: Mantenimiento de usuario
Fuente: Autores

A.3.7 Mantenimiento de Dispositivos


159

Dentro de los mantenimiento de dispositivo podes ingresar nuevos dispositivos
lamentablemente no podes utilizar este mdulo de manera completa ya que para
realizar su monitoreo debe de existir el debido ingreso de hardware lo mismo que
sera otro requerimiento indistinto al propuesto como tema de tesis.

Figura A1.13: Mantenimiento de dispositivo
Fuente: Autores


A.3.8 Eventos de Suceso

Dentro de esta interface tu puedes ver todos los sucesos del sistema acontecidos des
de el da en que proceso de monitoreo fue puesto en marcha la herramienta toolbar
permite tener un mayor control sobre los datos ya insertados, este no permite la
modificacin de los mismos pues son datos de registros del sistema no pueden ser
alterados solo visualizados. Podis imprimirlos abrir otros archivos registrados por ti
y guardados mas no los guardados por el sistema

Figura A1.14: Evento de Suceso Normal
Fuente: Autores


160

A.3.9 Eventos de Alertas

Esta interface maneja la misma temtica de procesos puedes abrir archivos, guardar e
imprimir mas no puedes alterar el archivo de origen ya que estos de uso exclusivos
del sistema.

Figura A1.15: Evento de Alertas
Fuente: Autores

A.3.10 Ventana Cascada

Este permite el mantener 2 interfaces en modo de cascada para su apreciacin como
a continuacin se ilustra en la siguiente grafica

Figura A1.16: Ventana en cascada
Fuente: Autores


161

A.3.11 Ventana Mosaico

Permite la visualizacin en estilo de mosaico de los eventos que desees mantener
sobre la ventana operativa del MDI Principal.


Figura A1.17: Ventanas en mosaico
Fuente: Autores
A.3.12 Ventana Vertical

Permite observa de manera vertical las interfaces activas sobre el MDI Principal para
tener una mejor apreciacin sobre los procesos que estn ocurriendo en el sistema


Figura A1.18: Ventana en Vertical
Fuente: Autores



162

A.3.13 Ayuda del Sistema

Demuestra archivo de ayuda sobre el sistema el mismo que ser generado por un
grafico o por un documento.


Figura A1.19: Archivo de Ayuda
Fuente: Autores



A.3.14 Acerca de Carolina

Interface de informacin del sistema



Figura A1.20: Informacin del sistema
Fuente: Autores

Demuestra la informacin acerca del sistema como una resea sobre la creacin del
mismo, tambin tiene un botn sobre la informacin del sistema sobre la cual podr
observar los dispositivos de su PC



163

















ANEXO B
Interfaces grficas de usuario

B.1 Descripcin del captulo

Dentro de este anexo procederemos a la explicacin de las opciones y caractersticas
del sistema para que el usuario tenga el conocimiento para el control del mismo.

As mismo se explicara de manera detallada las opciones de error y de sucesos que se
puede tener y la opciones necesarias para poderlo resolver en caso de presentarse
durante la ejecucin del control.

Se adjunta graficas del sistema en las mismas que ser debidamente explicada para
mejor comprensin por parte del operador.


B.2 Introduccin a las interfaces de usuario


164

El sistema es en su totalidad visual es por aquello que se lo desarrollo en un lenguaje
que permita realizar el proceso de manera interactiva con el operador este es una
razn ms para que el sistema encargado en manipular el hardware de manera directa
sea programado en Visual Basic.

Dentro de la cada una de las acciones se tiene su debido mensaje para que de esta
manera el operador decida qu accin realizar as mismo como el control de cada
uno de los eventos que suceda mientras la operacin de las maquinarias lo que le
permitir tener al operador un conocimiento general de lo que est sucediendo en las
maquinarias y en el proceso en s.

Cada una de las acciones realizadas por el usuario son registradas dentro de una base
de datos lo que permite saber cada accin que el operador realice sobre la interface y
sobre el proceso en s de esta manera podemos permitirnos saber quien, cuando y
desde donde realizo alguna alteracin en la manipulacin del proceso, as mismo se
cuenta con las debidas seguridades al momento de ingresar al sistema con un lapso
mximo de 3 intentos de acceso luego de aquello el sistema proceder a cerrar de de
manera automtica.

B.2.1 Inicio de Sesin de usuario.

La primera pantalla que aparece en el sistema es para el ingresar al sistema, donde el
usuario debe ingresar su nombre y contrasea

165


Figura B1.1: Inicio de sesin de usuario
Fuente: Autores

Realiza el requerimiento hacia el Web Service de Autenticacin de usuario, por lo
que aparece una pantalla de advertencia de consumo de tiempo aire al realizar una
peticin web.

Figura B1.2: Mensaje de advertencia
Fuente: Autores

166

Pantalla de Bienvenida en la cual el usuario ve sus datos y las opciones para
comenzar a usar el Sistema entre ellas tenemos a el Monitoreo de Dispositivos,
Control y el Chat Cliente








Figura B1.3: Pantalla de Bienvenida
Fuente: Autores
Est pantalla indica los estados de Encendido/Apagado de las Bombas y el nivel del
Tanque.
B.2.2 Monitoreo








Figura B1.4: Monitoreo del sistema
Fuente: Autores

167



En el Reporte Grfico de Monitoreo se puede elegir para las opciones de









Figura B1.5: Opciones de software
Fuente: Autores


B.2.3 Control
Al elegir la opcin de Control podr observar y decidir que opcin tomar.








168


Figura B1.6: Opciones a Tomar
Fuente: Autores


En Apagado General podr tomar la decisin de mandar a realizar la accin de
apagado general el cual lo que realiza es una actualizacin de la tabla de
apagado_general.








Figura B1.7: Opcin de Apagado General
Fuente: Autores
En esta pantalla se podr elegir que bomba se proceder a apagar, luego de esto
aparecer un mensaje indicando el xito de la accin.

B.2.4 Chat
Al elegir Chat se da por entendido que en existe un Server Chat a la espera de una
conexin cliente, en ambas partes aparecer una pantalla de advertencia de consumo
de tiempo aire al realizar una peticin web.

169


Figura B1.8: Opciones a Chat
Fuente: Autores

Luego Se proceder a Ingresar a la pantalla de chat en la cual los usuarios podrn
realizar una conversacin va mensajera instantnea,

Figura B1.9: Chateo entre usuarios
Fuente: Autores


ANEXO C

Codificacin del sistema

C.1 Descripcin del Mdulo VBMPUSBAPI.bas

El mdulo comprende de variables globales, as como de un modulo para la conexin
de la base de datos el cual permite la conexin a la base desde cualquier modulo.

170

As mismo contiene mdulos de interaccin entre el hardware y el PIC el mismo que
permite enviar parmetros al PIC de control Ubicado en el hardware implementado

'============================================================
' CONEXION A LA BASE DE DATOS
'============================================================
Public con As Connection
'Public base1 As Connection


'============================================================
' VARIABLE USUARIO
'============================================================
Public usuario As String


'============================================================
' RUTINAS DE LLAMADA A LA LIBRERIA MPUSBAPI.DLL PARA
INTERACTUAR CON EL PIC
'============================================================
Option Explicit
'--------------------------------------------------------------------------------------
Convenciones de llamada en C
' DWORD _MPUSBGetDLLVersion(void)
' DWORD _MPUSBGetDeviceCount(PCHAR pVID_PID)
' HANDLE _MPUSBOpen(DWORD instance, PCHAR pVID_PID, PCHAR
pEP, DWORD dwDir, DWORD dwReserved);
' DWORD _MPUSBRead(HANDLE handle, PVOID pData, DWORD dwLen,
PDWORD pLength, DWORD dwMilliseconds);
' DWORD _MPUSBWrite(HANDLE handle, PVOID pData, DWORD dwLen,
PDWORD pLength, DWORD dwMilliseconds);
' DWORD _MPUSBReadInt(HANDLE handle, PVOID pData, DWORD
dwLen, PDWORD pLength, DWORD dwMilliseconds);


'--------------------------------------------------------------------------------------
FUNCIONES EQUIVALENTES PARA REALIZAR LA LLAMADA DESDE VB
6.0
'--------------------------------------------------------------------------------------
Public Declare Function MPUSBGetDLLVersion Lib "mpusbapi.dll" () As Long
Public Declare Function MPUSBGetDeviceCount Lib "mpusbapi.dll" (ByVal
pVID_PID As String) As Long
Public Declare Function MPUSBOpen Lib "mpusbapi.dll" (ByVal instance As Long,
ByVal pVID_PID As String, ByVal pEP As String, ByVal dwDir As Long, ByVal
dwReserved As Long) As Long
Public Declare Function MPUSBClose Lib "mpusbapi.dll" (ByVal handle As Long)
As Long

171

Public Declare Function MPUSBRead Lib "mpusbapi.dll" (ByVal handle As Long,
ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal
dwMilliseconds As Long) As Long
Public Declare Function MPUSBWrite Lib "mpusbapi.dll" (ByVal handle As Long,
ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long, ByVal
dwMilliseconds As Long) As Long
Public Declare Function MPUSBReadInt Lib "mpusbapi.dll" (ByVal handle As
Long, ByVal pData As Long, ByVal dwLen As Long, ByRef pLength As Long,
ByVal dwMilliseconds As Long) As Long

'--------------------------------------------------------------------------------------
CONSTANTES PARA LA WIN32 API
'--------------------------------------------------------------------------------------
Public Const INVALID_HANDLE_VALUE =-1
Public Const ERROR_INVALID_HANDLE =6&

'--------------------------------------------------------------------------------------
FUNCION DE LA WIN32 API
'--------------------------------------------------------------------------------------
Public Declare Function GetLastError Lib "kernel32" () As Long
Public Declare Function timeGetTime Lib "winmm.dll" () As Long

'--------------------------------------------------------------------------------------
Constantes de conectividad con el PIC
'--------------------------------------------------------------------------------------
Public Const vid_pid ="vid_04d8&pid_0011" ' Vendor id (Microchip) y
Perifrico id
Public Const out_pipe ="\MCHP_EP1"
Public Const in_pipe ="\MCHP_EP1"

Public Const MPUSB_FAIL =0
Public Const MPUSB_SUCCESS =1

Public Const MP_WRITE =0
Public Const MP_READ =1

'--------------------------------------------------------------------------------------
' IN_PIPE y OUT_PIPE VARIABLES PUBLICAS
'--------------------------------------------------------------------------------------
Public myInPipe As Long
Public myOutPipe As Long

'--------------------------------------------------------------------------------------
MDULO PARA ABRIR EL PERIFERICO
'--------------------------------------------------------------------------------------
Sub OpenMPUSBDevice()
Dim tempPipe As Long
Dim count As Long

tempPipe =INVALID_HANDLE_VALUE

172

count =MPUSBGetDeviceCount(vid_pid)

If count >0 Then
myInPipe =MPUSBOpen(0, vid_pid, in_pipe, MP_READ, 0)

If myOutPipe =INVALID_HANDLE_VALUE Or myInPipe =
INVALID_HANDLE_VALUE Then
MsgBox Str(myOutPipe) +" " +Str(myInPipe) +" Error al abrir los pipes"

myOutPipe =INVALID_HANDLE_VALUE
End If
Else
frmUSB.Command1.Enabled =False
MsgBox "No hay perifricos conectados"
End If
End Sub

'--------------------------------------------------------------------------------------
CERRANDO EL PERIFRICO
'--------------------------------------------------------------------------------------
Sub CloseMPUSBDevice()
If myOutPipe <>INVALID_HANDLE_VALUE Then
MPUSBClose (myOutPipe)
myOutPipe =INVALID_HANDLE_VALUE
End If

If myInPipe <>INVALID_HANDLE_VALUE Then
MPUSBClose (myInPipe)
myInPipe =INVALID_HANDLE_VALUE
End If
End Sub

'--------------------------------------------------------------------------------------
CERRANDO EL PERIFERICO DESDE EL FORMULARIO
'--------------------------------------------------------------------------------------

Sub cerradito()
MPUSBClose (myOutPipe)
MPUSBClose (myInPipe)

End Sub

'--------------------------------------------------------------------------------------
Funcin Send_Receive DATOS DESDE EL PIC
'___________________________________________________________
' SendData: Matriz de bytes con los datos a mandar
' SendLength: Longitud de datos a mandar
' ReceiveData: Matriz de datos a recibir
' ReceiveLength: Nmero de bytes a recibir
' SendDelay: Time-out para el envo en milisegundos

173

' ReceiveDelay: Time-out para la recepcin en milisegundos
'--------------------------------------------------------------------------------------

Function Send_Receive(ByRef SendData() As Byte, SendLength As Long, _
ByRef ReceiveData() As Byte, ByRef ReceiveLength As Long, _
ByVal SendDelay As Long, ByVal ReceiveDelay As Long) As Long


Dim SentDataLength As Long
Dim ExpectedReceiveLength As Long

ExpectedReceiveLength =ReceiveLength

If (myOutPipe <>INVALID_HANDLE_VALUE And myInPipe <>
INVALID_HANDLE_VALUE) Then
If (MPUSBWrite(myOutPipe, VarPtr(SendData(0)), SendLength,
SentDataLength, SendDelay) =MPUSB_SUCCESS) Then
If (MPUSBRead(myInPipe, VarPtr(ReceiveData(0)),
ExpectedReceiveLength, ReceiveLength, ReceiveDelay) =MPUSB_SUCCESS)
Then
If (ReceiveLength =ExpectedReceiveLength) Then
Send_Receive =1 ' Todo correcto
Exit Function
Else If (ReceiveLength <ExpectedReceiveLength) Then
Send_Receive =2 ' Envo
correcto pero
Exit Function ' Recepcin
fallida
End If
Else
CheckInvalidHandle ' Mensaje de
error
End If
Else
CheckInvalidHandle ' Mensaje de
error
End If
End If
Send_Receive =0 ' Operacin
fallida
End Function

'--------------------------------------------------------------------------------------
PRESENTA EL TIPO DE ERROR POSIBLE
'--------------------------------------------------------------------------------------
Sub CheckInvalidHandle()
If (GetLastError() =ERROR_INVALID_HANDLE) Then
La causa ms habitual es que el circuito est desconectado
CloseMPUSBDevice
Else

174

MsgBox "Cdigo de error: " +Str(GetLastError())
End If
End Sub

'--------------------------------------------------------------------------------------
FUNCION SEND
'_________________________________________________________
' SendData: Matriz de bytes con los datos a mandar
' SendLength: Longitud de datos a mandar
' SendDelay: Time-out para el envo en milisegundos
'--------------------------------------------------------------------------------------

Function Send(ByRef SendData() As Byte, SendLength As Long, ByVal SendDelay
As Long) As Long
Dim SentDataLength As Long
If (myOutPipe <>INVALID_HANDLE_VALUE And myInPipe <>
INVALID_HANDLE_VALUE) Then
If (MPUSBWrite(myOutPipe, VarPtr(SendData(0)), SendLength,
SentDataLength, SendDelay) =MPUSB_SUCCESS) Then
Send =1 ' Todo correcto
Exit Function
Else
CheckInvalidHandle ' Mensaje de error
End If
End If
Send =0 ' Operacin fallida
End Function

'--------------------------------------------------------------------------------------
'MDULO DE CONEXIN A LA BASE DE DATOS MYSQL
'--------------------------------------------------------------------------------------

Sub conexion()
Set con =New ADODB.Connection
con.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};
SERVER=localhost; DATABASE=tesis; PWD=root; UID=root;OPTION=3"
con.Open
End Sub

'--------------------------------------------------------------------------------------
'VARIABLE PARA EMITIR REPORTES CAPTURA EL TAMAO DE UN
ACADENA DE CARACTERES
'--------------------------------------------------------------------------------------

Sub SelText(i As Control)
i.SelStart =0
i.SelLength =Len(i.Text)
End Sub

'--------------------------------------------------------------------------------------

175

'MDULO DE RETARDO DE TIEMPO
'--------------------------------------------------------------------------------------
Sub time_late()
Dim i, x, y As Integer
DoEvents
For i =0 To 400
For x =0 To 800
For y =0 To 300
Next
Next
Next
End Sub














C.2 Descripcin de funcionamiento por formularios

Dentro del esquema de los formularios se presenta a continuacin el siguiente
diagrama que contiene un bosquejo del sistema completo


176



Figura C1.1: Esquemtico de los Formularios
Fuente: Autores



FORM2 (LOGIN)

El formulario comprende una variable tipo entero la misma q se encarga de llevar el
conteo para q el numero de intentos de acceso al sistema no sea mayor a 3.

FORM 2(LOGIN)
SISTEMA
FrmUSB
SALIR
CONSULTAS
FORM1
(DISPOSITIVOS)
FORM6
(USUARIO)
FORM7
(ENCENDIDO Y
APAGADO)
MANTENIMIENTO
FORMA3
(USUARIO)
FORM 4
(DISPOSITIVO)
EVENTOS
FRMPRESENT
A1 (SUCESOS)
FORM5
(ALERTAS)
VENTANA
FUNCION DE VB
FUNCION DE VB
FUNCION DE VB
AYUDA
ARCHIVO DE AYUDA
FRMABOUT
MDI (FRMAIN)

177

Dim contador As Integer
Dim tieso As Boolean
'------------------------------------------------------------------------------------------------------
MDULO QUE REALIZA LA BUSQUEDA DEL USUARIO DENTRO DE LA
BASE DE DATOS
'------------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
contador =contador +1
tieso =False
Dim tabla As ADODB.Recordset
sql ="SELECT * FROM usuario "
Set tabla =New Recordset
tabla.Open sql, con, adOpenDynamic, adLockReadOnly
Do Until tabla.EOF
If (tabla!usu_nombres =Text1.Text) And (tabla!usu_password =Text2.Text)
And (tabla!usu_privilegios ="v") And (tabla!usu_estado ="A") Then
Confirma si el usuario existe y si tiene permisos para acceder desde el sistema de
visual
tieso =True
usuario =tabla!usu_id
End If
tabla.MoveNext
Loop
If contador <=3 Then
If tieso Then
registro_acceso
frmMain.Show
Unload Me
Else
Text1.Text =""
Text2.Text =""
Me.Text1.SetFocus
MsgBox "Clave y Usuario No Valido", vbInformation
End If
End If
tabla.Close
Call pregunta(contador, tieso)
End Sub

Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Form_Load()
contador =0
Call conexion
End Sub

'------------------------------------------------------------------------------------------------------

178

PROCEDIMIENTO QUE CONSULTA SI YA REALIZO LOS 3 INTENTOS DE
ACCESO
'------------------------------------------------------------------------------------------------------
Private Sub pregunta(recive As Integer, bule As Boolean)
If recive =3 And bule =False Then
MsgBox "Intentos Mayor a 3 el Sistema Proceder a Cerrarse ", vbCritical
Unload Me
End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii =13 Then
Me.Text2.SetFocus
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii =13 Then
Me.Command1.SetFocus
End If
End Sub

'------------------------------------------------------------------------------------------------------
PROCEDIMIENTO QUE CAPTURA EL ACCESO DEL USUARIO Y LO
GRABA EN LA TABLA LOGS
'------------------------------------------------------------------------------------------------------
Public Sub registro_acceso()

Dim tabla As ADODB.Recordset
Set tabla =New Recordset
sql ="Select * from logs "
tabla.Open sql, con, 3, 3
tabla.AddNew
tabla!log_user_id =usuario
tabla!log_num_accion =4
tabla!log_estado ="N"
tabla!log_fecha =CStr(Format(Date, "yy/mm/dd")) +" " +CStr(Time)
tabla.Update
tabla.Close
End Sub



C.2.1MDI (FRMAIN)


179

Este formulario contiene bsicamente las llamadas a los form child que se hace
referencia de acuerdo a la peticin solicitada o aplicacin que se desee activar

'------------------------------------------------------------------------------------------------------
Declaracin de variables del API PROPIO DE WIN32
'------------------------------------------------------------------------------------------------------
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As
Any) As Long
Const EM_UNDO =&HC7
Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal
hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub condis_Click()
Form1.Show
End Sub

Private Sub conen_Click()
Form7.Show
End Sub

Private Sub conuser_Click()
Form6.Show
End Sub

Private Sub eveale_Click()
Form5.Show
End Sub

Private Sub evesuc_Click()
presenta1.Show
End Sub

Private Sub mandis_Click()
Form4.Show
End Sub

Private Sub manuser_Click()
Form3.Show
End Sub

'------------------------------------------------------------------------------------------------------
Alineacin de los formularios hijos
'------------------------------------------------------------------------------------------------------
Private Sub sismoni_Click()

180


Dim f As New frmUSB
f.Width =15000
f.Height =7665
f.Left =(Screen.Width - f.Width) / 2
f.Top =500
f.Show
End Sub

'------------------------------------------------------------------------------------------------------
Cierra el formulario
'------------------------------------------------------------------------------------------------------
Private Sub sisSalir_Click()
Unload Me
End Sub

Private Sub mnuHelpAbout_Click()
' MsgBox "Versin " & App.Major & "." & App.Minor & "." & App.Revision
frmAbout.Show
End Sub

Private Sub mnuHelpContents_Click()
Dim nRet As Integer
'si no hay archivo de ayuda para este proyecto, mostrar un mensaje al usuario
'puede establecer el archivo de Ayuda para la aplicacin en el cuadro
'de dilogo Propiedades del proyecto
If Len(App.HelpFile) =0 Then
MsgBox "No se puede mostrar el contenido de la Ayuda. No hay Ayuda
asociada a este proyecto.", vbInformation, Me.Caption
Else
On Error Resume Next
nRet =OSWinHelp(Me.hwnd, App.HelpFile, 3, 0)
If Err Then
MsgBox Err.Description
End If
End If
End Sub

Private Sub mnuWindowArrangeIcons_Click()
Me.Arrange vbArrangeIcons
End Sub

Private Sub mnuWindowTileVertical_Click()
Me.Arrange vbTileVertical
End Sub

Private Sub mnuWindowTileHorizontal_Click()
Me.Arrange vbTileHorizontal
End Sub
Private Sub mnuWindowCascade_Click()

181

Me.Arrange vbCascade
End Sub

'------------------------------------------------------------------------------------------------------
se encarga de centrar los formularios q se habrn sobre el
'------------------------------------------------------------------------------------------------------
Private Sub MDIForm_Load()
Me.Left =GetSetting(App.Title, "Settings", "MainLeft", 1000)
Me.Top =GetSetting(App.Title, "Settings", "MainTop", 1000)
Me.Width =GetSetting(App.Title, "Settings", "MainWidth", 6500)
Me.Height =GetSetting(App.Title, "Settings", "MainHeight", 6500)
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
If Me.WindowState <>vbMinimized Then
SaveSetting App.Title, "Settings", "MainLeft", Me.Left
SaveSetting App.Title, "Settings", "MainTop", Me.Top
SaveSetting App.Title, "Settings", "MainWidth", Me.Width
SaveSetting App.Title, "Settings", "MainHeight", Me.Height
End If
End Sub


C.2.2 SISTEMA

FRMUSB
Formulario que interacta con el mdulo VBMPUSBAPI.bas para realizar el
control del hardware en el mismo se manejan variables de tipo Boolean, String y
Variant.

Public d7 As Boolean
Public Bom1 As Boolean
Public bom2 As Boolean
Public temp1 As Boolean
Public temp2 As Boolean
Public flag As Boolean
Public flag1 As Boolean
Public vacio As Boolean
Public info As Variant
Public alertas As Variant
Public alert As String
Dim msjc001 As Boolean

'------------------------------------------------------------------------------------------------------
limpia variables booleans
'------------------------------------------------------------------------------------------------------
Private Sub clear()
temp1 =False

182

temp2 =False
Bom1 =False
bom2 =False
End Sub

'------------------------------------------------------------------------------------------------------
Comparacin de datos obtenidos con desde el hardware para realizar acciones en el
software
'------------------------------------------------------------------------------------------------------
Private Sub Arranque(pepito As Integer)
Select Case pepito
Case "7"
temp1 =True
Onremote (temp1)
Case "6"
temp2 =True
Onremote (temp2)
Case "5"
Bomba1.Visible =False
Case "3"
bomba2.Visible =True
Case "2"
Bom1 =True
Case "1"
bom2 =True
End Select
End Sub

'------------------------------------------------------------------------------------------------------
Lectura del puerto USB para ver si alguna alarma se activo desde el hardware
'------------------------------------------------------------------------------------------------------
Private Sub Lectura()
Dim Send_Buf(0 To 64) As Byte
Dim Rec_Buf(0 To 64) As Byte
Dim i As Long
d7 =True
If (myOutPipe <>INVALID_HANDLE_VALUE) And (myInPipe <>
INVALID_HANDLE_VALUE) And d7 Then
Send_Buf(0) =3
If (Send_Receive(Send_Buf, 1, Rec_Buf, 8, 1000, 1000) <>1) Then
MsgBox "Fallo en la lectura de entradas"
Else
If Rec_Buf(0) =1 Then
Timer1.Enabled =True
Else
d7 =False
End If
If Rec_Buf(5) =0 And d7 Then
Bomba1.Visible =True
End If

183

For i =0 To 7
If Rec_Buf(i) =1 And d7 Then
chkEntrada(i).Value =vbChecked
Arranque (i)
Else
chkEntrada(i).Value =vbUnchecked
End If
Next i
End If
End If
End Sub

'------------------------------------------------------------------------------------------------------
Activacin de la bomba de carga para empezar el procedo de llenado del tanque
'------------------------------------------------------------------------------------------------------
Private Sub Bomba1_Click()
Timer5.Enabled =False
llenado ("L")
Timer5.Enabled =True
End Sub

Private Sub bomba2_Click()
Timer5.Enabled =False
vaciado ("L")
Timer5.Enabled =True
End Sub

Private Sub Confirbom1()
Dim msja001 As Boolean
msja001 =True
While flag
Lectura
If chkEntrada(2).Value =vbChecked Then
flag =False
Bomba1.Enabled =False
Else
aguante
If msja001 Then
alertas ="Esperando Confirmacion de Bomba1" +Chr(9) +Chr(9) +
CStr(Time) +Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List2.AddItem alertas
msja001 =False
End If
End If
Wend
End Sub

Private Sub Confirbomba2()
Dim msja002 As Boolean
msja002 =True

184

While flag1
Lectura
If chkEntrada(1).Value =vbChecked Then
flag1 =False
bomba2.Enabled =False
Else
aguante
If msja002 Then
alertas ="Esperando Confirmacin de Bomba2" +Chr(9) +Chr(9) +
CStr(Time) +Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List2.AddItem alertas
msja002 =False
End If
End If
Wend
End Sub

--------------------------------------------------------------------------------------
'Detener el proceso por completo enviando a apagar la alimentacin del sistema
'--------------------------------------------------------------------------------------
Private Sub BtParar_Click()
Timer4.Enabled =False
sql ="update apagado_general set apg_estado ='A' where apg_id =1"
con.Execute sql
Info ="Sistema Apagado POR FAVOR REINICIE" +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
End Sub

--------------------------------------------------------------------------------------
' Procedimiento para Terminar proceso y cierre de formulario
'--------------------------------------------------------------------------------------
Private Sub cmdTerminar_Click()
ApagaLeds
CloseMPUSBDevice
cerradito
Unload Me
End Sub

--------------------------------------------------------------------------------------
Mdulo de control de Leds
'--------------------------------------------------------------------------------------
Private Sub Control_Leds(Comando As Byte, dato As Byte)
Dim Send_Buf(0 To 64) As Byte
If (myOutPipe <>INVALID_HANDLE_VALUE) And (myInPipe <>
INVALID_HANDLE_VALUE) Then
Send_Buf(0) =Comando
Send_Buf(1) =dato
If (Send(Send_Buf, 2, 1000) <>1) Then
MsgBox "Fallo en el LED"

185

End If
End If
End Sub

--------------------------------------------------------------------------------------
Arranque general del proceso
'--------------------------------------------------------------------------------------
Private Sub Command1_Click()
info ="Sistema Iniciado" +Chr(9) +Chr(9) +Chr(9) +CStr(Time) +Chr(9) +
CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
Control_Leds 1, 8
Genesis
Timer1.Enabled =True
temp1 =True
temp2 =True
Command1.Visible =False
End Sub

--------------------------------------------------------------------------------------
Carga principal del formulario
'--------------------------------------------------------------------------------------
Private Sub Form_Load()
myInPipe =INVALID_HANDLE_VALUE
myOutPipe =INVALID_HANDLE_VALUE
OpenMPUSBDevice
ApagaLeds
conexion
limpio_bd
Timer2.Enabled =True
End Sub

--------------------------------------------------------------------------------------
'Apagando todas las salidas
'--------------------------------------------------------------------------------------
Private Sub ApagaLeds()
Dim i As Byte
For i =1 To 8
Control_Leds 2, i
Next i
End Sub

--------------------------------------------------------------------------------------
' Reinicio del sistema para continuar con proceso de llamado o de vaciado
'-------------------------------------------------------------------------------------
Private Sub Reinicio_Click()
Dim msj002 As Boolean
Dim msj003 As Boolean
Dim msj004 As Boolean
Dim msj005 As Boolean

186

Dim nivel As Variant
Dim tabla As ADODB.Recordset
Dim i As Integer
limpio_bd
Timer4.Enabled =False
flag =True
flag1 =True
Set tabla =New Recordset
sql ="Select * from tanque "
tabla.Open sql, con, adOpenDynamic, adLockOptimistic
tabla.MoveLast
msj002 =True
msj003 =True
msj004 =True
msj005 =True

If temp1 Or temp2 Then
MsgBox "Revise Bombas"
Else
j =tabla!ta_descripcion
nivel =tabla!tan_tiempo
direccion =tabla!arriba
If direccion <>0 Then
Control_Leds 1, 7
aguante
aguante
aguante
aguante
aguante
aguante
Control_Leds 2, 7
While flag
Confirbom1
Wend
vacio =True
Carga_Decarga (vacio)
Nivel1.Value =nivel
For i =j To 80
If BtParar.Enabled Then
alertas ="Por Favor Confirme Bomba 1" +Chr(9) +Chr(9) +
CStr(Time) +Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem alertas
Reinicio.Visible =True
Call llamalo(Nivel1.Value, i, vacio)
alarma
Call registro_fallo(Nivel1.Value, vacio)
Timer4.Enabled =True
Exit For
Else
If msj002 Then

187

info ="Completando LLenado Bom1" +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
msj002 =False
End If
aguante
alarma
Nivel1.Value =Nivel1.Value +0.125
Call registro(Nivel1.Value, vacio, "L")
If Nivel1.Value =5 Then
info ="Nivel Medio Activado" +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
End If
If Nivel1.Value >=10 Then
Bomba1.Visible =False
info ="Nivel Alto Activado" +Chr(9) +Chr(9) +Chr(9) +
CStr(Time) +Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
info ="Llenado Exitoso " +Chr(9) +Chr(9) +Chr(9) +
CStr(Time) +Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
Event_Succes_Log
Event_Alert_Log
End If
Reinicio.Visible =False
End If
Next i
Limpia_Carga_Decarga
Else
Control_Leds 1, 6
aguante
aguante
aguante
aguante
aguante
aguante
Control_Leds 2, 6
While flag1
Confirbomba2
Wend
vacio =False
Carga_Decarga (vacio)
info ="Completando Vaciado Bom2" +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
Nivel1.Value =nivel
For i =1 To j
If BtParar.Enabled Then
alertas ="Por Favor Confirme Bomba2" +Chr(9) +Chr(9) +Chr(9) +

188

CStr(Time) +Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List2.AddItem alertas
Reinicio.Visible =True
Call llamalo(Nivel1.Value, j - i, vacio)
alarma
Call registro_fallo(Nivel1.Value, vacio)
Timer4.Enabled =True
Exit For
Else
If msj004 Then
info ="Vaciando Tanque" +Chr(9) +Chr(9) +Chr(9) +
CStr(Time) +Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
msj004 =False
End If
aguante
alarma
Nivel1.Value =Nivel1.Value - 0.125
Call registro(Nivel1.Value, vacio, "L")
If Nivel1.Value =5 Then
info ="Nivel Medio Desactivado" +Chr(9) +Chr(9) +CStr(Time)
+Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
End If
If Nivel1.Value =0.25 And msj003 Then
bomba2.Visible =False
info ="Nivel bajo Desactivado" +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
info ="Vaciado Exitoso" +Chr(9) +Chr(9) +Chr(9) +CStr(Time)
+Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
Event_Succes_Log
Event_Alert_Log
msj003 =False
End If
End If
Next i
Limpia_Carga_Decarga
End If
limpia_temporal
End If
tabla.Close
End Sub

--------------------------------------------------------------------------------------
Mdulo para sensar las temperaturas mediante un procedimiento llamado alarma
'--------------------------------------------------------------------------------------
Private Sub Timer1_Timer()
clear

189

DoEvents
alarma
End Sub

--------------------------------------------------------------------------------------
' Mdulo de las alarmas
'--------------------------------------------------------------------------------------
Public Sub alarma()
Dim alarm As Boolean
Lectura
aguante
If temp1 Or temp2 Then
Control_Leds 1, 5
alarm =True
BtParar.Enabled =True
Else
Control_Leds 2, 5
BtParar.Enabled =False
End If
End Sub

--------------------------------------------------------------------------------------
' Tiempo utilizado para la lectura de variables externas
'--------------------------------------------------------------------------------------
Public Sub aguante()
DoEvents
Dim i As Integer
Dim j As Integer
For i =1 To 1000
For j =1 To 3500
Next j
Next i
End Sub

--------------------------------------------------------------------------------------
'Procedimiento para el llenado de una tabla llamada tanque en el cual se almacena el
nivel cada vez que ocurre un problema
'--------------------------------------------------------------------------------------
Public Sub llamalo(tiempo As Variant, lazo As Integer, onde As Boolean)
For i =3 To 5
If chkEntrada(i).Value =vbChecked Then
valor =valor +i
Text1.Text =valor
End If
Next i
Dim tabla As ADODB.Recordset
Set tabla =New Recordset
sql ="Select * from tanque "
tabla.Open sql, con, adOpenDynamic, adLockOptimistic
tabla.AddNew

190

If Text1.Text ="5" Then
tabla!tan_dis_id =1
tabla!ta_descripcion =lazo
tabla!tan_nivel1 ="1"
tabla!tan_nivel2 ="0"
tabla!tan_nivel3 ="0"
tabla!tan_tiempo =tiempo
tabla!arriba =onde
End If
If Text1.Text ="9" Then
tabla!tan_dis_id =1
tabla!ta_descripcion =lazo
tabla!tan_nivel1 ="1"
tabla!tan_nivel2 ="1"
tabla!tan_nivel3 ="0"
tabla!tan_tiempo =tiempo
tabla!arriba =onde
End If
If Text1.Text ="12" Then
tabla!tan_dis_id =1
tabla!ta_descripcion =lazo
tabla!tan_nivel1 ="1"
tabla!tan_nivel2 ="1"
tabla!tan_nivel3 ="1"
tabla!tan_tiempo =tiempo
tabla!arriba =onde
End If
tabla.Update
tabla.Close
End Sub

--------------------------------------------------------------------------------------
' Seteo de variables en la base de datos
'--------------------------------------------------------------------------------------
Public Sub Genesis()
Dim tabla As ADODB.Recordset
Set tabla =New Recordset
sql1 ="SELECT * FROM apagado_general"
tabla.Open sql1, con, 3, adLockOptimistic
If tabla!apg_id =1 Then
sql ="update apagado_general set apg_estado ='I' where apg_id =1"
End If
con.Execute sql
tabla.Close
End Sub

--------------------------------------------------------------------------------------
Activacin del proceso remoto
'--------------------------------------------------------------------------------------
Public Sub Onremote(remo As Boolean)

191

If remo Then
sql ="update apagado_general set apg_estado ='A' where apg_id =2"
sql1 ="update tipo_mc set tmc_estado ='A' where tmc_id =2"
Else
sql ="update apagado_general set apg_estado ='I' where apg_id =2"
sql1 ="update tipo_mc set tmc_estado ='I' where tmc_id =2"
End If
con.Execute sql
con.Execute sql1
End Sub

--------------------------------------------------------------------------------------
'Mdulo para saber la direccion que se llevaba al momento de ocurrir una incidencia
'--------------------------------------------------------------------------------------
Public Sub Carga_Decarga(recep As Boolean)
If recep Then
sql ="update dispositivo set dis_estado ='A' where dis_id =2"
sql1 ="update dispositivo set dis_estado ='I' where dis_id =3"
Else
sql ="update dispositivo set dis_estado ='I' where dis_id =2"
sql1 ="update dispositivo set dis_estado ='A' where dis_id =3"
End If
con.Execute sql
con.Execute sql1
End Sub
Public Sub Limpia_Carga_Decarga()
sql ="update dispositivo set dis_estado ='I' where dis_id =2"
sql1 ="update dispositivo set dis_estado ='I' where dis_id =3"
con.Execute sql
con.Execute sql1
End Sub

--------------------------------------------------------------------------------------
' Gravo los datos que se van produciendo conforme el tanque se llena en la base de
datos llamada registro
'-------------------------------------------------------------------------------------
Public Sub registro(cant As Variant, loco As Boolean, confirmado As String)
Dim via As Integer
Dim via1 As Integer
Dim tabla22 As ADODB.Recordset
Set tabla22 =New Recordset

confirmado1 =confirmado
Text5.Text =Format(Date, "yyyy/mm/dd")
Text6.Text =Time
Text4.Text =Text5.Text +" " +Text6.Text
puro =loco
If puro <>0 Then
via ="2"
via1 ="1"

192

Else
via ="1"
via1 ="2"
End If

--------------------------------------------------------------------------------------
'Lleno la tabla registro con datos obtenidos del sistema
'--------------------------------------------------------------------------------------
sql ="Select * from registro_mc "
tabla22.Open sql, con, 3, 3
tabla22.AddNew
tabla22!rmc_dis_id =1
tabla22!rmc_tmc_id =1
tabla22!rmc_cantidad =cant
tabla22!rmc_fecha =Text4.Text
tabla22!rmc_estado_on_off =1
tabla22!rmc_estado_confirmacion =confirmado1
tabla22.AddNew
tabla22!rmc_dis_id =2
tabla22!rmc_tmc_id =2
tabla22!rmc_cantidad =1
tabla22!rmc_fecha =Text4.Text
tabla22!rmc_estado_on_off =via
tabla22!rmc_estado_confirmacion =confirmado1
tabla22.AddNew
tabla22!rmc_dis_id =3
tabla22!rmc_tmc_id =2
tabla22!rmc_cantidad =1
tabla22!rmc_fecha =Text4.Text
tabla22!rmc_estado_on_off =via1
tabla22!rmc_estado_confirmacion =confirmado1
tabla22.Update
tabla22.Close

--------------------------------------------------------------------------------------
'Lleno la tabla temporal de manera paralela a la de registro
'--------------------------------------------------------------------------------------
Dim tabla As ADODB.Recordset
Set tabla =New Recordset
sql1 ="Select * from temporal "
tabla.Open sql1, con, 3, 3
tabla.AddNew
tabla!tmp_dis_id =1
tabla!tmp_tmc_id =1
tabla!tmp_cantidad =cant
tabla!tmp_fecha =Text4.Text
tabla!tmp_estado_on_off =1
tabla!tmp_estado_confirmacion =confirmado1
tabla.AddNew
tabla!tmp_dis_id =2

193

tabla!tmp_tmc_id =2
tabla!tmp_cantidad =1
tabla!tmp_fecha =Text4.Text
tabla!tmp_estado_on_off =via
tabla!tmp_estado_confirmacion =confirmado1
tabla.AddNew
tabla!tmp_dis_id =3
tabla!tmp_tmc_id =2
tabla!tmp_cantidad =1
tabla!tmp_fecha =Text4.Text
tabla!tmp_estado_on_off =via1
tabla!tmp_estado_confirmacion =confirmado1
tabla.Update
tabla.Close
End Sub


--------------------------------------------------------------------------------------
'Almaceno la incidencia en caso de existir algn problema con alguna bomba
'--------------------------------------------------------------------------------------
Public Sub registro_fallo(tanq As Variant, loca As Boolean)
Dim via2 As Integer
Dim via3 As Integer
puro1 =loca
If puro1 <>0 Then
via2 ="2"
via3 ="1"
Else
via2 ="1"
via3 ="2"
End If
Dim tabla As ADODB.Recordset
Set tabla =New Recordset
sql ="Select * from registro_mc "
tabla.Open sql, con, adOpenDynamic, adLockOptimistic
tabla.AddNew
If temp1 Then
tabla!rmc_dis_id =1
tabla!rmc_tmc_id =1
tabla!rmc_cantidad =tanq
tabla!rmc_fecha =Text4.Text
tabla!rmc_estado_on_off =1
tabla!rmc_estado_confirmacion ="ok"
tabla.AddNew
tabla!rmc_dis_id =2
tabla!rmc_tmc_id =2
tabla!rmc_cantidad =0
tabla!rmc_fecha =Text4.Text
tabla!rmc_estado_on_off =via2
tabla!rmc_estado_confirmacion ="fallo"

194

tabla.AddNew
tabla!rmc_dis_id =3
tabla!rmc_tmc_id =2
tabla!rmc_cantidad =1
tabla!rmc_fecha =Text4.Text
tabla!rmc_estado_on_off =via3
tabla!rmc_estado_confirmacion ="ok"
Else
tabla!rmc_dis_id =1
tabla!rmc_tmc_id =1
tabla!rmc_cantidad =tanq
tabla!rmc_fecha =Text4.Text
tabla!rmc_estado_on_off =1
tabla!rmc_estado_confirmacion ="ok"
tabla.AddNew
tabla!rmc_dis_id =2
tabla!rmc_tmc_id =2
tabla!rmc_cantidad =1
tabla!rmc_fecha =Text4.Text
tabla!rmc_estado_on_off =via2
tabla!rmc_estado_confirmacion ="ok"
tabla.AddNew
tabla!rmc_dis_id =3
tabla!rmc_tmc_id =2
tabla!rmc_cantidad =0
tabla!rmc_fecha =Text4.Text
tabla!rmc_estado_on_off =via3
tabla!rmc_estado_confirmacion ="fallo"
End If
tabla.Update
tabla.Close

--------------------------------------------------------------------------------------
'Lleno de manera paralela la incidencia en la tabla temporal
'--------------------------------------------------------------------------------------
Dim tabla22 As ADODB.Recordset
Set tabla22 =New Recordset
sql1 ="Select * from temporal "
tabla22.Open sql1, con, adOpenDynamic, adLockOptimistic
tabla22.AddNew
If temp1 Then
tabla22!tmp_dis_id =1
tabla22!tmp_tmc_id =1
tabla22!tmp_cantidad =tanq
tabla22!tmp_fecha =Text4.Text
tabla22!tmp_estado_on_off =1
tabla22!tmp_estado_confirmacion ="ok"
tabla22.AddNew
tabla22!tmp_dis_id =2
tabla22!tmp_tmc_id =2

195

tabla22!tmp_cantidad =0
tabla22!tmp_fecha =Text4.Text
tabla22!tmp_estado_on_off =via2
tabla22!tmp_estado_confirmacion ="fallo"
tabla22.AddNew
tabla22!tmp_dis_id =3
tabla22!tmp_tmc_id =2
tabla22!tmp_cantidad =1
tabla22!tmp_fecha =Text4.Text
tabla22!tmp_estado_on_off =via3
tabla22!tmp_estado_confirmacion ="ok"
Else
tabla22!tmp_dis_id =1
tabla22!tmp_tmc_id =1
tabla22!tmp_cantidad =tanq
tabla22!tmp_fecha =Text4.Text
tabla22!tmp_estado_on_off =1
tabla22!tmp_estado_confirmacion ="ok"
tabla22.AddNew
tabla22!tmp_dis_id =2
tabla22!tmp_tmc_id =2
tabla22!tmp_cantidad =1
tabla22!tmp_fecha =Text4.Text
tabla22!tmp_estado_on_off =via2
tabla22!tmp_estado_confirmacion ="ok"
tabla22.AddNew
tabla22!tmp_dis_id =3
tabla22!tmp_tmc_id =2
tabla22!tmp_cantidad =0
tabla22!tmp_fecha =Text4.Text
tabla22!tmp_estado_on_off =via3
tabla22!tmp_estado_confirmacion ="fallo"
End If
tabla22.Update
tabla22.Close
End Sub

--------------------------------------------------------------------------------------
'Se activa para observar si el cliente remoto, no realiza alguna accin en la base de
datos
'--------------------------------------------------------------------------------------
Public Sub censo_ag()
Dim tabla As ADODB.Recordset
sql ="SELECT * FROM apagado_general where apg_id =1"
Set tabla =New Recordset
tabla.Open sql, con, adOpenDynamic, adLockReadOnly
If (tabla!apg_estado ="A") Then
ApagaLeds
CloseMPUSBDevice
cerradito

196

Else
If msjc001 Then
info ="Iniciado Sistema Remoto" +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
msjc001 =False
End If
End If
tabla.Close
End Sub

--------------------------------------------------------------------------------------
'Timer para el mantener el monitoreo de las temperaturas en las bombas
'--------------------------------------------------------------------------------------
Private Sub Timer2_Timer()
Control_Leds 1, 1
Timer3.Enabled =True
Timer2.Enabled =False
End Sub

--------------------------------------------------------------------------------------
'Timer para el mantener el monitoreo de las temperaturas en las bombas
'--------------------------------------------------------------------------------------
Private Sub Timer3_Timer()
Control_Leds 2, 1
Timer2.Enabled =True
Timer3.Enabled =False
End Sub

--------------------------------------------------------------------------------------
'Timer para el mantener el monitoreo de censo
'--------------------------------------------------------------------------------------
Private Sub Timer4_Timer()
censo_ag
End Sub

--------------------------------------------------------------------------------------
'Limpio la base de datos luego de alguna incidencia
'--------------------------------------------------------------------------------------
Public Sub limpio_bd()
sql ="update apagado_general set apg_estado ='I' where apg_id =1"
sql1 ="update apagado_general set apg_estado ='I' where apg_id =2"
sql2 ="update dispositivo set dis_estado ='I' where dis_id =2"
sql3 ="update dispositivo set dis_estado ='I' where dis_id =3"
sql4 ="update tipo_mc set tmc_estado ='I' where tmc_id =2"
sql5 ="update dispositivo set dis_remoto ='0' where dis_id =2"
sql6 ="update dispositivo set dis_remoto ='0' where dis_id =3"
con.Execute sql
con.Execute sql1
con.Execute sql2

197

con.Execute sql3
con.Execute sql4
con.Execute sql5
con.Execute sql6
End Sub

--------------------------------------------------------------------------------------
'Limpio la tabla del proceso que realiz remoto
'--------------------------------------------------------------------------------------
Public Sub limpio_Remoto_bd()
sql15 ="update dispositivo set dis_remoto ='0' where dis_id =2"
sql16 ="update dispositivo set dis_remoto ='0' where dis_id =3"
con.Execute sql15
con.Execute sql16
End Sub

--------------------------------------------------------------------------------------
'Proceso de vaciado del tanque
'--------------------------------------------------------------------------------------
Public Sub vaciado(confirma_vaciado As String)
Beep
Bomba1.Enabled =True
Dim msj003 As Boolean
msj003 =True
Dim i As Integer
Dim bandera As Variant
flag1 =True
Control_Leds 1, 6
aguante
aguante
aguante
aguante
aguante
aguante
Control_Leds 2, 6
While flag1
Confirbomba2
Wend
vacio =False
Carga_Decarga (vacio)
bandera =10
For i =1 To 80
If BtParar.Enabled Then
alertas ="ALERTA Suceso en las Bombas" +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List2.AddItem alertas
Reinicio.Visible =True
Call llamalo(bandera, 80 - i, vacio)
alarma
Call registro_fallo(bandera, vacio)

198

msjc001 =True
Timer4.Enabled =True
Exit For
Else
If msj003 Then
info ="Vaciando Bom2 ==>'OK'" +Chr(9) +Chr(9) +CStr(Time) +Chr(9)
+CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
info ="Nivel Alto Desactivado" +Chr(9) +Chr(9) +CStr(Time) +Chr(9) +
CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
msj003 =False
End If
aguante
alarma
Nivel1.Value =bandera - 0.125
bandera =Nivel1.Value
Call registro(bandera, vacio, confirma_vaciado)
If bandera =5 Then
info ="Nivel Medio Desactivado" +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
End If
If bandera =0 Then
bomba2.Visible =False
info ="Nivel bajo Desactivado" +Chr(9) +Chr(9) +CStr(Time) +Chr(9)
+CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
info ="Vaciado Exitoso" +Chr(9) +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
Event_Succes_Log
Event_Alert_Log
End If
End If
Next i
Limpia_Carga_Decarga
limpia_temporal
limpio_Remoto_bd
End Sub

--------------------------------------------------------------------------------------
'Comienzo el proceso de llenado del tanque
'--------------------------------------------------------------------------------------
Public Sub llenado(confirma_llenado As String)
Beep
Dim msj001 As Boolean
msj001 =True
bomba2.Enabled =True
Dim i As Integer

199

Dim bandera As Variant
flag =True
Control_Leds 1, 7
aguante
aguante
aguante
aguante
aguante
aguante
Control_Leds 2, 7
While flag
Confirbom1
Wend
vacio =True
Carga_Decarga (vacio)

For i =1 To 80
If BtParar.Enabled Then
alertas ="ALERTA Suceso en las Bombas" +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List2.AddItem alertas
Reinicio.Visible =True
Call llamalo(bandera, i, vacio)
alarma
Call registro_fallo(bandera, vacio)
msjc001 =True
Timer4.Enabled =True
Exit For
Else
If msj001 Then
info ="Llenando Bom1 ==>'OK'" +Chr(9) +Chr(9) +CStr(Time) +Chr(9)
+CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
msj001 =False
info ="Nivel Bajo Activado" +Chr(9) +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
End If
aguante
alarma
Nivel1.Value =bandera +0.125
bandera =Nivel1.Value
Call registro(bandera, vacio, confirma_llenado)
If bandera =5 Then
info ="Nivel Medio Activado" +Chr(9) +Chr(9) +CStr(Time) +Chr(9) +
CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
End If
If bandera >=10 Then
Bomba1.Visible =False

200

info ="Nivel Alto Activado" +Chr(9) +Chr(9) +Chr(9) +CStr(Time) +
Chr(9) +CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
info ="Llenado Exitoso " +Chr(9) +Chr(9) +Chr(9) +CStr(Time) +Chr(9)
+CStr(Format(Date, "yy/mm/dd"))
List1.AddItem info
Event_Succes_Log
Event_Alert_Log
End If
End If
Next i
Limpia_Carga_Decarga
limpio_Remoto_bd
End Sub

--------------------------------------------------------------------------------------
'Grabo en el registro el tipo de usuario que realizo el proceso un Local o un Remoto
'--------------------------------------------------------------------------------------
Public Sub Remoto_Bombas()
Dim tabla As ADODB.Recordset
sql ="SELECT * FROM dispositivo"
Set tabla =New Recordset
tabla.Open sql, con, adOpenDynamic, adLockReadOnly
Do Until tabla.EOF
If (tabla!dis_remoto =1) And (tabla!dis_id =2) Then
llenado ("R")
Else
If (tabla!dis_remoto =1) And (tabla!dis_id =3) Then
vaciado ("R")
End If
End If
tabla.MoveNext
Loop
tabla.Close
End Sub

--------------------------------------------------------------------------------------
'Censa actividad en el proceso remoto
'--------------------------------------------------------------------------------------
Private Sub Timer5_Timer()
Call Remoto_Bombas
End Sub

--------------------------------------------------------------------------------------
'Elimina los datos grabados en temporal luego de cada ciclo completo del proceso
'--------------------------------------------------------------------------------------
Public Sub limpia_temporal()
sql ="Delete from temporal"
con.Execute sql
End Sub

201


--------------------------------------------------------------------------------------
'Llenado del archivo para almacenar el evento log
'--------------------------------------------------------------------------------------
Public Sub Event_Succes_Log()
Dim ruta As String
ruta ="c:\EventSucces.ini"
Open ruta For Append Lock Write As 1
For i =0 To List1.ListCount - 1
Me.List1.ListIndex =i
Print #1, Me.List1.Text
Next
Close #1
time_late
Me.List1.clear
End Sub

--------------------------------------------------------------------------------------
'Llenado del archivo para almacenar el evento alarmas
'--------------------------------------------------------------------------------------
Public Sub Event_Alert_Log()
Dim ruta As String
ruta ="c:\EventAlert.ini"
Open ruta For Append Lock Write As 1
For i =0 To List2.ListCount - 1
Me.List2.ListIndex =i
Print #1, Me.List2.Text
Next
Close #1
time_late
Me.List2.clear
End Sub


C.2.3 CONSULTAS

FORM1
Consulta realizada por dispositivos en la misma se utiliza formulas parmetros que
son enviados al reporte para que se llene el mismo con datos de importancia para la
emisin del mismo

--------------------------------------------------------------------------------------
'Proceso para empezar a realizar la consulta
'--------------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim f1 As Date
Dim f2 As Date
se confirma que los datos estn correctamente ingresados

202

If Not IsDate(Mas1(0).Text) Then
Call MsgBox("Fecha inicial mal ingresada", vbExclamation, "Consultas")
Call SelText(Mas1(0))
Mas1(0).SetFocus
Exit Sub
End If
If Not IsDate(Mas1(1).Text) Then
Call MsgBox("Fecha final mal ingresada", vbExclamation, "Consultas")
Call SelText(Mas1(1))
Mas1(1).SetFocus
Exit Sub
End If

f1 =Mas1(0).Text
f2 =Mas1(1).Text

Creacin de parmetros que se enviaran a Crystal Report para que se muestren
Me.CrystalReport1.ReportFileName =App.Path & "\ReporteLlenado.rpt"
'
Dim formula As String
formula =""
For i =0 To Me.List2.ListCount - 1
If i =0 Then
formula = formula + " if {registro_mc.rmc_estado_on_off}='" &
Mid(Me.List2.List(i), 1, 1) & "' then "
formula =formula +" '" +Mid(Me.List2.List(i), 2, 100) +"' "
Else
formula = formula + " else if {registro_mc.rmc_estado_on_off}='" &
Mid(Me.List2.List(i), 1, 1) & "' then "
formula =formula +" '" +Mid(Me.List2.List(i), 2, 100) +"' "
End If
Next
Debug.Print formula

Dim formula1 As String
formula1 =""
For i =0 To Me.List3.ListCount - 1
If i =0 Then
formula1 =formula1 +" if {registro_mc.rmc_tmc_id}=" & Mid(Me.List3.List(i),
1, 1) & " then "
formula1 =formula1 +" '" +Mid(Me.List3.List(i), 2, 100) +"' "
Else
formula1 = formula1 + " else if {registro_mc.rmc_tmc_id}=" &
Mid(Me.List3.List(i), 1, 1) & " then "
formula1 =formula1 +" '" +Mid(Me.List3.List(i), 2, 100) +"' "
End If
Next
Debug.Print formula1

Me.CrystalReport1.Formulas(0) ="f=" & formula & ""

203

Me.CrystalReport1.Formulas(1) ="g='" & Me.List1.Text & "'"
Me.CrystalReport1.Formulas(2) ="h=" & formula1 & ""

Me.CrystalReport1.WindowState =crptMaximized

Carga de datos obtenidos desde la formula se los esta parametrizando para enviarlos
al reporte
CrystalReport1.ReplaceSelectionFormula ("{registro_mc.rmc_dis_id} = " &
Mid(Me.List1.Text, 1, 1) & " and {registro_mc.rmc_Fecha} in DateTime (" &
Year(f1) & ", " & Month(f1) & ", " & Day(f1) & ",00, 00, 00) to DateTime (" &
Year(f2) & ", " & Month(f2) & ", " & Day(f2) & ",00, 00, 00)")
If Me.Check1.Value =0 And Me.Check2.Value =1 Then
CrystalReport1.ReplaceSelectionFormula ("{registro_mc.rmc_estado_on_off} ='"
& Mid(Me.List2.Text, 1, 1) & "' and {registro_mc.rmc_dis_id} = " &
Mid(Me.List1.Text, 1, 1) & " and {registro_mc.rmc_Fecha} in DateTime (" &
Year(f1) & ", " & Month(f1) & ", " & Day(f1) & ",00, 00, 00) to DateTime (" &
Year(f2) & ", " & Month(f2) & ", " & Day(f2) & ",00, 00, 00)")
End If
Me.CrystalReport1.WindowTitle ="Informe detallado de Nivel de bombas"
Me.CrystalReport1.Action =1 Presentacin del reporte

End Sub

--------------------------------------------------------------------------------------
'Lleno los objetos del formulario con los datos de las tablas a los que pertenecen
'--------------------------------------------------------------------------------------
Private Sub Form_Load()
conexion
Dim tabla As ADODB.Recordset
Set tabla =New ADODB.Recordset
sql ="select * from dispositivo"
tabla.Open sql, con, 3, 3
Me.List1.clear
Do Until tabla.EOF
Me.List1.AddItem tabla!dis_id & " " & tabla!dis_descripcion
tabla.MoveNext
Loop
tabla.Close

sql ="select * from apagado_general"
tabla.Open sql, con, 3, 3
Me.List2.clear
Do Until tabla.EOF

Me.List2.AddItem tabla!apg_id & " " & tabla!apg_descripcion
tabla.MoveNext
Loop
tabla.Close
sql ="select * from tipo_mc"
tabla.Open sql, con, 3, 3

204

Me.List3.clear
Do Until tabla.EOF

Me.List3.AddItem tabla!tmc_id & " " & tabla!tmc_descripcion
tabla.MoveNext
Loop
tabla.Close
End Sub



FORM 6

Consulta realizada consulta por usuario en la misma se utiliza formulas parmetros
que son enviados al reporte para que se llene el mismo
--------------------------------------------------------------------------------------
' Contador para poder dar acciones al botn de avance y retroceso
'--------------------------------------------------------------------------------------
Public contador As Integer
Private Sub Check1_Click()
If Check1.Value =1 Then
Combo1.Enabled =False
Command1.Visible =True
Command2.Visible =True
Label7.Visible =True
Text5.Visible =True
Combo1.Text =""
limpia_text
Else
Combo1.Enabled =True
Command1.Visible =False
Command2.Visible =False
Label7.Visible =False
Text5.Visible =False
limpia_text
End If
End Sub

Mdulos de limpiar los text para la presentacin de los siguientes datos
Private Sub limpia_text()
Text1.Text =""
Text2.Text =""
Text3.Text =""
Text4.Text =""
Text5.Text =""
End Sub

--------------------------------------------------------------------------------------
Bsqueda de siguiente usuario
'--------------------------------------------------------------------------------------

205

Private Sub Command1_Click()
limpia_text
contador =contador - 1
Dim tabla As ADODB.Recordset
Set tabla =New ADODB.Recordset
sql ="select * from usuario"
tabla.Open sql, con, 3, 3
Do Until tabla.EOF
If tabla!usu_id =contador Then
Text5.Text =tabla!usu_nombres
Text1.Text =tabla!usu_apellidos
Text2.Text =tabla!usu_direccion
Text3.Text =tabla!usu_telefono
Text4.Text =tabla!usu_cedula
Exit Do
End If
tabla.MoveNext
Loop
If contador =0 Then
Command1.Enabled =False
Command2.Enabled =True
MsgBox "No hay mas registros en la tabla", vbInformation, "Consulta Usuarios"
End If
tabla.Close
End Sub

--------------------------------------------------------------------------------------
'Bsqueda de usuario anterior
'--------------------------------------------------------------------------------------
Private Sub Command2_Click()
limpia_text
contador =contador +1
Dim tabla As ADODB.Recordset
Set tabla =New ADODB.Recordset
sql ="select * from usuario"
tabla.Open sql, con, 3, 3
Do Until tabla.EOF
If tabla!usu_id =contador Then
Text5.Text =tabla!usu_nombres
Text1.Text =tabla!usu_apellidos
Text2.Text =tabla!usu_direccion
Text3.Text =tabla!usu_telefono
Text4.Text =tabla!usu_cedula
Exit Do
End If
tabla.MoveNext
Loop
If tabla.EOF Then
Command2.Enabled =False
Command1.Enabled =True

206

MsgBox "No hay mas registros en la tabla", vbInformation, "Consulta Usuarios"
End If
tabla.Close
End Sub

--------------------------------------------------------------------------------------
Formulario para llenar los combos
'--------------------------------------------------------------------------------------
Private Sub Form_Load()
contador =0
conexion
Dim tabla As ADODB.Recordset
Set tabla =New ADODB.Recordset
sql ="select * from usuario"
tabla.Open sql, con, 3, 3
Me.Combo1.clear
Do Until tabla.EOF

Combo1.AddItem tabla!usu_nombres
tabla.MoveNext
Loop
tabla.Close
End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "Buscar"
Call llena
Case "Imprimir"
llama_reporte
Case "Salir"
Unload Me
End Select
End Sub


--------------------------------------------------------------------------------------
'Llamada de reportes para imprimir
'--------------------------------------------------------------------------------------
Private Sub llama_reporte()
If Check1.Value =1 Then
Me.CrystalReport1.ReportFileName =App.Path & "\pepito.rpt"
Me.CrystalReport1.WindowState =crptMaximized
Me.CrystalReport1.WindowTitle ="Informe detallado de Nivel de bombas"
Me.CrystalReport1.Action =1
Else
Me.CrystalReport1.ReportFileName =App.Path & "\prueba.rpt"
Me.CrystalReport1.WindowState =crptMaximized
Me.CrystalReport1.WindowTitle ="Informe detallado de Nivel de bombas"

207

Me.CrystalReport1.Action =1

End If
End Sub

--------------------------------------------------------------------------------------
'Llena datos en el formulario para visualizarlos
'--------------------------------------------------------------------------------------
Private Sub llena()
Dim tabla As ADODB.Recordset
Set tabla =New ADODB.Recordset
sql ="select * from usuario"
tabla.Open sql, con, 3, 3
Do Until tabla.EOF
If Combo1.Text =tabla!usu_nombres Then
Text1.Text =tabla!usu_apellidos
Text2.Text =tabla!usu_direccion
Text3.Text =tabla!usu_telefono
Text4.Text =tabla!usu_cedula
End If
tabla.MoveNext
Loop
tabla.Close
End Sub



FORM7

Formulario que realiza la presentacin de datos de encendido y apagado de los
dispositivos dentro del sistema durante los procesos.

Public opcion As Boolean

--------------------------------------------------------------------------------------
'chequeo de opciones para saber si es una consulta por rango de fechas o por fecha
explicita
'--------------------------------------------------------------------------------------
Private Sub Option1_Click()
Label5.Visible =True
Label6.Visible =True
Combo3.Visible =True
Combo4.Visible =True
Label7.Visible =False
Combo5.Visible =False
opcion =True
End Sub

Private Sub Option2_Click()

208

Label5.Visible =False
Label6.Visible =False
Combo3.Visible =False
Combo4.Visible =False
Label7.Visible =True
Combo5.Visible =True
opcion =False
End Sub

--------------------------------------------------------------------------------------
'Mdulo de eleccin de accin por medio del toolbar
'--------------------------------------------------------------------------------------
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "Visualiza"
Call verifica
'Call visual
Case "Imprimir"
'Call imprime
Case "Salir"
Unload Me
End Select
End Sub

--------------------------------------------------------------------------------------
'Verifica la opcin que eligi el usuario de hacer la bsqueda por rango de fecha o
por fecha especifica
'--------------------------------------------------------------------------------------
Private Sub verifica()
If (Combo1.Text <>"" And Combo2.Text <>"") Then
If opcion Then
If Combo3.Text ="" Or Combo4.Text ="" Then
MsgBox "Por Favor Escoja Rango de Fechas", vbInformation
Else
visual
End If
Else
If Combo5.Text ="" Then
MsgBox "Por Favor Escoja la Fecha", vbInformation
Else
visual
End If

End If

Else
MsgBox "Llene por Favor Todos los datos", vbInformation
End If
End Sub

209



C.2.4 MANTENIMIENTO

FORM3
Formulario que permite realizar el ingreso de nuevos usuarios a la base de datos

--------------------------------------------------------------------------------------
'Permite grabar los datos obtenidos desde el formulario
'--------------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim tabla As ADODB.Recordset
sql ="SELECT * FROM usuario "
Set tabla =New Recordset

tabla.Open sql, con, adOpenDynamic, adLockReadOnly
Do Until tabla.EOF
If (tabla!usu_nombres =MaskEdBox1.Text) Then
MsgBox "Usuario ya existe"
MaskEdBox1.Text =""
Me.MaskEdBox1.SetFocus
End If
tabla.MoveNext
Loop
tabla.Close

--------------------------------------------------------------------------------------
'Confirma si los campos fueron correctamente llenados
'--------------------------------------------------------------------------------------
If MaskEdBox1.Text <>"" And MaskEdBox2.Text <>"" And MaskEdBox3.Text
<>"" And MaskEdBox4.Text <>"" And MaskEdBox5.Text <>"" And Text1.Text
<>"" Then
res =MsgBox("Confirma Realizar Insercin de Nuevo Usuario", vbYesNoCancel,
"Creacin de usuario")
If res =6 Then
llena
Else
If res =7 Then
MsgBox "No se realiz el ingreso"
End If
End If
Else
MsgBox "Por Favor Llene Todos los Campos", vbInformation, "Ingreso de
Usuarios"
End If
End Sub

--------------------------------------------------------------------------------------
'Salida del formulario

210

'--------------------------------------------------------------------------------------
Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Form_Load()
conexion
End Sub
Private Sub limpia()
MaskEdBox1.Text =""
MaskEdBox2.Text =""
MaskEdBox3.Text =""
MaskEdBox4.Text =""
MaskEdBox5.Text =""
Text1.Text =""
End Sub

--------------------------------------------------------------------------------------
'Procedimiento que llena la tabla de usuario
'--------------------------------------------------------------------------------------
Public Sub llena()
Dim tabla As ADODB.Recordset
sql ="select * from usuario"
Set tabla =New Recordset
tabla.Open sql, con, 3, 3
tabla.AddNew
tabla!usu_nombres =MaskEdBox1.Text
tabla!usu_apellidos =MaskEdBox2.Text
tabla!usu_direccion =MaskEdBox3.Text
tabla!usu_telefono =MaskEdBox4.Text
tabla!usu_cedula =MaskEdBox5.Text
tabla!usu_password =Text1.Text
tabla.Update
tabla.Close
limpia
MsgBox "El registro ha sido guardado satisfactoriamente", vbInformation,
"Ingreso de Clientes"

End Sub


--------------------------------------------------------------------------------------
'Control para que el despliegue sea realizado por medio de la tecla enter
'--------------------------------------------------------------------------------------
Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer)
If KeyAscii =13 Then
Me.MaskEdBox2.SetFocus
End If
End Sub
Private Sub MaskEdBox2_KeyPress(KeyAscii As Integer)

211

If KeyAscii =13 Then
Me.MaskEdBox3.SetFocus
End If
End Sub
Private Sub MaskEdBox3_KeyPress(KeyAscii As Integer)
If KeyAscii =13 Then
Me.MaskEdBox4.SetFocus
End If
End Sub

Private Sub MaskEdBox4_KeyPress(KeyAscii As Integer)
If Not (KeyAscii >=48 And KeyAscii <=57 Or KeyAscii =8 Or KeyAscii =13)
Then
KeyAscii =0
MsgBox "Ingrese solo valores Numricos"
Me.MaskEdBox4.SetFocus
End If
If KeyAscii =13 Then
If Len(MaskEdBox4.Text) =7 Then
Me.MaskEdBox5.SetFocus
Else
MsgBox "Este campo solicita 7 Dgitos"
Me.MaskEdBox4.SetFocus
End If
End If
End Sub

--------------------------------------------------------------------------------------
'Control para que solo permita ingresar datos numricos en el campo
'--------------------------------------------------------------------------------------
Private Sub MaskEdBox5_KeyPress(KeyAscii As Integer)
If Not (KeyAscii >=48 And KeyAscii <=57 Or KeyAscii =8 Or KeyAscii =13)
Then
KeyAscii =0
MsgBox "Ingrese solo valores Numricos"
Me.MaskEdBox5.SetFocus
End If
If KeyAscii =13 Then
If Len(MaskEdBox5.Text) =10 Then
Me.Text1.SetFocus
Else
MsgBox "Este campo solicita 10 Dgitos"
Me.MaskEdBox5.SetFocus
End If
End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii =13 Then
Me.Command1.SetFocus

212

End If
End Sub




FORM4

Mantenimiento de dispositivos en la base de datos ms no obstante se agregara al
ningn formulario

Dim radios As Boolean
--------------------------------------------------------------------------------------
'Control de verificacin si ira para monitoreo visual y remoto
'--------------------------------------------------------------------------------------
Public Sub radius()
If Frame1.Visible =True Then
If Option1.Value =True Or Option2.Value =True Then
radios =True
Else
radios =False
End If
Else
radios =True
End If
End Sub

--------------------------------------------------------------------------------------
Envo de focus a los siguientes niveles
'--------------------------------------------------------------------------------------
Private Sub Combo1_Click()
Me.Combo2.SetFocus
End Sub

Private Sub Combo1_LostFocus()
If Combo1.Text ="Sensor" Then
Frame1.Visible =True
Else
Frame1.Visible =False
End If
End Sub

--------------------------------------------------------------------------------------
Grabo en la base de datos
'--------------------------------------------------------------------------------------
Private Sub Command1_Click()
radius
confirma
End Sub


213

--------------------------------------------------------------------------------------
'Cierra el formulario
'--------------------------------------------------------------------------------------
Private Sub Command2_Click()
Unload Me
End Sub

--------------------------------------------------------------------------------------
'Confirmacin del ingreso de los datos
'--------------------------------------------------------------------------------------
Private Sub confirma()
If Combo1.Text <>"" And Combo2.Text <>"" And radios Then
res = MsgBox("Confirma Realizar Insercin", vbYesNoCancel, "Creacin de
Dispositivo")
If res =6 Then
inserto
Else
If res =7 Then
MsgBox "No se realiz el ingreso"
End If
End If
Else
MsgBox "Por Favor, Ingrese todos los datos"
End If
End Sub

--------------------------------------------------------------------------------------
'Ingreso a las tablas de la base de datos
'--------------------------------------------------------------------------------------
Public Sub inserto()
Dim tabla As ADODB.Recordset
sql ="select * from dispositivo"
Set tabla =New Recordset
tabla.Open sql, con, 3, 3
tabla.AddNew
tabla!dis_descripcion =Combo1.Text
If Combo2.Text ="Activo" Then
tabla!dis_estado ="A"
Else
tabla!dis_estado ="I"
End If
If Check1.Value =1 Then
tabla!dis_remoto =0
Else
tabla!dis_remoto =""
End If
tabla.Update
tabla.Close
limpia
End Sub

214


Private Sub Form_Load()
conexion
End Sub

--------------------------------------------------------------------------------------
'Limpio los campos luego del ingreso
'--------------------------------------------------------------------------------------
Public Sub limpia()
MsgBox "El registro ha sido guardado satisfactoriamente", vbInformation, "Ingreso
de Clientes"
Combo1.Text =""
Combo2.Text =""
Check1.Value =0
Check2.Value =0
Option1.Value =False
Option2.Value =False
Me.Combo1.SetFocus
End Sub



C.2.5 EVENTOS

FRMPRESENTA
Se encarga de presentar el evento del proceso que se desarrollaron axial como
contiene un toolbar con las aplicaciones de abrir, guardar, refrescar e imprimir los
datos

--------------------------------------------------------------------------------------
'Declaracin de variables utilizables propias del win32
'--------------------------------------------------------------------------------------
Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal
hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
List1.Visible =True
rtfText.Visible =False
Command1.Visible =False
tbToolBar.Visible =True
End Sub

Private Sub Form_Load()
actual

215

End Sub

--------------------------------------------------------------------------------------
'Control toolbar
'--------------------------------------------------------------------------------------
Private Sub tbToolBar_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "Actualiza"
Call actual
Case "Abrir"
Call abre
Case "Guardar"
Call guarda
Case "Imprimir"
Call imprime
Case "Salir"
Unload Me
End Select
End Sub

--------------------------------------------------------------------------------------
'Control para que solo permita ingresar actuales
'--------------------------------------------------------------------------------------
Public Sub actual()
List1.clear
Open "C:\EventSucces.ini" For Input Lock Read As #1
Do While Not EOF(1)
Input #1, linea_texto
List1.AddItem linea_texto
Loop
Close 1
End Sub

--------------------------------------------------------------------------------------
'Abre aplicaciones varias que se puedan desplegar en un archivo rpt
'-------------------------------------------------------------------------------------
Public Sub abre()
List1.Visible =False
rtfText.Visible =True
Command1.Visible =True
tbToolBar.Visible =False
Dim sFile As String
With dlgCommonDialog
.DialogTitle ="Abrir"
.CancelError =False
'Pendiente: establecer los indicadores y los atributos del control common dialog
.Filter ="Todos los archivos (*.*)|*.*"
.ShowOpen
If Len(.FileName) =0 Then

216

Exit Sub
End If
sFile =.FileName
End With
rtfText.LoadFile sFile
Caption =sFile
End Sub

--------------------------------------------------------------------------------------
'Guarda lo que se visualiza en la form rpt
'--------------------------------------------------------------------------------------
Public Sub guarda()
Dim sFile As String
If True Then
With dlgCommonDialog
.DialogTitle ="Guardar"
.CancelError =False
.Filter ="Todos los archivos (*.*)|*.*"
.ShowSave
If Len(.FileName) =0 Then
Exit Sub
End If
sFile =.FileName
End With
rtfText.LoadFile ("c:\EventSucces.ini")
rtfText.SaveFile sFile
Else
sFile =Caption
rtfText.SaveFile sFile
End If
End Sub

--------------------------------------------------------------------------------------
'Imprime el documento
'--------------------------------------------------------------------------------------
Public Sub imprime()
Dim res1 As Long
res1 =ShellExecute(Me.hwnd, "Print", "c:\EventSucces.ini", "", "", 1)
End Sub


FORM5
Se encarga de presentar el evento de alertas proceso que se desarrollaron as como
contiene un toolbar con las aplicaciones de abrir, guardar, refrescar e imprimir los
datos.
--------------------------------------------------------------------------------------
'Declaracin de variables utilizables propias del win32
'--------------------------------------------------------------------------------------

217

Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal
hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
List1.Visible =True
rtfText.Visible =False
Command1.Visible =False
tbToolBar.Visible =True
End Sub

Private Sub Form_Load()
actual
End Sub

--------------------------------------------------------------------------------------
'Control toolbar para llamar a los diferentes procesos
'--------------------------------------------------------------------------------------
Private Sub tbToolBar_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "Actualiza"
Call actual
Case "Abrir"
Call abre
Case "Guardar"
Call guarda
Case "Imprimir"
Call imprime
Case "Salir"
Unload Me
End Select
End Sub

--------------------------------------------------------------------------------------
'Control para que solo permita ingresar datos actuales
'--------------------------------------------------------------------------------------
Public Sub actual()
List1.clear
Open "C:\EventAlert.ini" For Input Lock Read As #1
Do While Not EOF(1)
Input #1, linea_texto
List1.AddItem linea_texto
Loop
Close 1
End Sub
Public Sub abre()
List1.Visible =False

218

rtfText.Visible =True
Command1.Visible =True
tbToolBar.Visible =False
Dim sFile As String
With dlgCommonDialog

.DialogTitle ="Abrir"
.CancelError =False
'Pendiente: establecer los indicadores y los atributos del control common dialog
.Filter ="Todos los archivos (*.*)|*.*"
.ShowOpen
If Len(.FileName) =0 Then
Exit Sub
End If
sFile =.FileName
End With
rtfText.LoadFile sFile
Caption =sFile
End Sub

--------------------------------------------------------------------------------------
'Guarda lo que se visualiza en la form rpt
'--------------------------------------------------------------------------------------
Public Sub guarda()
Dim sFile As String
If True Then
With dlgCommonDialog
.DialogTitle ="Guardar"
.CancelError =False
.Filter ="Todos los archivos (*.*)|*.*"
.ShowSave
If Len(.FileName) =0 Then
Exit Sub
End If
sFile =.FileName
End With
rtfText.LoadFile ("c:\EventAlert.ini")
rtfText.SaveFile sFile
Else
sFile =Caption
rtfText.SaveFile sFile
End If
End Sub

--------------------------------------------------------------------------------------
'Imprime el documento rpt
'--------------------------------------------------------------------------------------
Public Sub imprime()
Dim res1 As Long
res1 =ShellExecute(Me.hwnd, "Print", "c:\EventAlert.ini", "", "", 1)

219

End Sub


C.2.6 Ayuda

FRMABOUT
Presenta informacin acerca del sistema as como tambin respecto al desarrollo del
programa.

Option Explicit

' Opciones de seguridad de clave del Registro...
Const READ_CONTROL =&H20000
Const KEY_QUERY_VALUE =&H1
Const KEY_SET_VALUE =&H2
Const KEY_CREATE_SUB_KEY =&H4
Const KEY_ENUMERATE_SUB_KEYS =&H8
Const KEY_NOTIFY =&H10
Const KEY_CREATE_LINK =&H20
Const KEY_ALL_ACCESS =KEY_QUERY_VALUE +KEY_SET_VALUE +_
KEY_CREATE_SUB_KEY +KEY_ENUMERATE_SUB_KEYS +_
KEY_NOTIFY +KEY_CREATE_LINK +READ_CONTROL

' Tipos ROOT de clave del Registro...
Const HKEY_LOCAL_MACHINE =&H80000002
Const ERROR_SUCCESS =0
Const REG_SZ =1 ' Cadena Unicode terminada en valor nulo
Const REG_DWORD =4 ' Nmero de 32 bits

Const gREGKEYSYSINFOLOC ="SOFTWARE\Microsoft\Shared Tools Location"
Const gREGVALSYSINFOLOC ="MSINFO"
Const gREGKEYSYSINFO ="SOFTWARE\Microsoft\Shared Tools\MSINFO"
Const gREGVALSYSINFO ="PATH"

Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA"
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long,
ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String,
ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef
lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As
Long

Private Sub cmdSysInfo_Click()
Call StartSysInfo
End Sub


220

Private Sub cmdOK_Click()
Unload Me
End Sub

Private Sub Form_Load()
Me.Caption ="Acerca de " & App.Title
lblVersion.Caption ="Versin " & App.Major & "." & App.Minor & "." &
App.Revision
lblTitle.Caption =App.Title
End Sub

Public Sub StartSysInfo()
On Error GoTo SysInfoErr
Dim rc As Long
Dim SysInfoPath As String
' Intentar obtener ruta de acceso y nombre del programa de Info. Del sistema a
partir del Registro...
If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO,
gREGVALSYSINFO, SysInfoPath) Then
' Intentar obtener slo ruta del programa de Info. Del sistema a partir del
Registro...
Else If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC,
gREGVALSYSINFOLOC, SysInfoPath) Then
' Validar la existencia de versin conocida de 32 bits del archivo
If (Dir(SysInfoPath & "\MSINFO32.EXE") <>"") Then
SysInfoPath =SysInfoPath & "\MSINFO32.EXE"

' Error: no se puede encontrar el archivo...
Else
GoTo SysInfoErr
End If
' Error: no se puede encontrar la entrada del Registro...
Else
GoTo SysInfoErr
End If
Call Shell(SysInfoPath, vbNormalFocus)
Exit Sub
SysInfoErr:
MsgBox "La informacin del sistema no est disponible en este momento",
vbOKOnly
End Sub

Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef
As String, ByRef KeyVal As String) As Boolean
Dim i As Long ' Contador de bucle
Dim rc As Long ' Cdigo de retorno
Dim hKey As Long ' Controlador de una clave de Registro abierta
Dim hDepth As Long
Dim KeyValType As Long ' Tipo de datos de una clave de Registro

221

Dim tmpVal As String Almacenamiento temporal para un valor de clave
de Registro
Dim KeyValSize As Long ' Tamao de variable de clave de Registro

'------------------------------------------------------------
'Abrir clave de registro bajo KeyRoot {HKEY_LOCAL_MACHINE...}
'------------------------------------------------------------
rc =RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Abrir
clave de Registro

If (rc <>ERROR_SUCCESS) Then GoTo GetKeyError ' Error de
controlador...

tmpVal =String$(1024, 0) ' Asignar espacio de variable
KeyValSize =1024 ' Marcar tamao de variable

'------------------------------------------------------------
'Obtener valor de clave de Registro...
'------------------------------------------------------------
rc =RegQueryValueEx(hKey, SubKeyRef, 0, _
KeyValType, tmpVal, KeyValSize) ' Obtener o crear valor de clave

If (rc <>ERROR_SUCCESS) Then GoTo GetKeyError ' Controlar errores

If (Asc(Mid(tmpVal, KeyValSize, 1)) =0)
tmpVal =Left(tmpVal, KeyValSize - 1) ' Encontrado valor nulo, se va a
quitar de la cadena
Else ' En WinNT las cadenas no terminan en valor
nulo...
tmpVal =Left(tmpVal, KeyValSize) ' No se ha encontrado valor
nulo, slo se va a extraer la cadena
End If

'------------------------------------------------------------
' Determinar tipo de valor de clave para conversin...
'------------------------------------------------------------
Select Case KeyValType ' Buscar tipos de datos...
Case REG_SZ ' Tipo de datos String de clave de
Registro
KeyVal =tmpVal ' Copiar valor de cadena
Case REG_DWORD ' Tipo de datos Double Word de
clave del Registro
For i =Len(tmpVal) To 1 Step -1 ' Convertir cada bit
KeyVal =KeyVal +Hex(Asc(Mid(tmpVal, i, 1))) ' Generar valor carcter a
carcter
Next
KeyVal =Format$("&h" +KeyVal) ' Convertir Double Word a
cadena
End Select


222

GetKeyValue =True ' Se ha devuelto correctamente
rc =RegCloseKey(hKey) ' Cerrar clave de Registro
Exit Function ' Salir

GetKeyError: ' Borrar despus de que se produzca un error...
KeyVal ="" ' Establecer valor a cadena vaca
GetKeyValue =False ' Fallo de retorno
rc =RegCloseKey(hKey) ' Cerrar clave de Registro
End Function





































ANEXO D
Codificacin del sistema

223


D.1 Aplicacin Web
Web Services
o wsApagadoGeneral
o wsControlOnOffDispositivos
o wsObtenerRegistroDispositivo
o wsUsuario

Sources Package
org.cliente
o ApagadoGeneralBean
o RegistroBean Objetos
o UsuarioBean
org.servidor
o ConexionBDDataSource
o InterfaceConexionBD
o LogicaNegocio
o wsApagadoGeneral
o wsConotolOnOffDispositivos
o wsObtenerRegistroDispositivo
o wsUsuario

WebServices
wsApagadoGeneral
package org.servidor;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.cliente.ApagadoGeneralBean;
//Definimos el Webservice
@WebService()
public class wsApagadoGeneral {
//instanciamos el objeto de lgica de negocio

224

private LogicaNegocio ln =new LogicaNegocio();
//Definimos la operacin ObtenerApagadoGenreal la cual nos retornar
un //objeto de tipo apagadoGeneralBean
@WebMethod(operationName ="obtenerApagadoGeneral")
public ApagadoGeneralBean obtenerApagadoGeneral(@WebParam(name
="id")
int id) {
//
ApagadoGeneralBean apg =ln.obtenerApagadoGeneral(id);
return apg;
}
//Definimos la operacin apagadoGeneral, mandamos a ejecutar el mtodo
//que actualiza la tabla de apagado general, y nos retorna un boolean que
//nos indica si la accin se ejecuto con xito o no.
@WebMethod(operationName ="apagadoGeneral")
public boolean apagadoGeneral(@WebParam(name ="id")
int id) {
boolean ok =ln.apagadoGeneral(id);
return ok;
}
}

wsControlOnOffDispositivos
package org.servidor;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
//Definimos el Webservice
@WebService()
public class wsConotolOnOffDispositivos {
//instanciamos el objeto de lgica de negocio
private LogicaNegocio ln =new LogicaNegocio();
//ejecutamos el ControlOnOffDispositivos el cual actualiza el estado de
encendio

225

//o apagado de los dispositivos, y luego nos retorna un boolean que nos
indica si la accin se ejecuto con xito o no.

@WebMethod(operationName ="ControlOnOffDispositivos")
public boolean ControlOnOffDispositivos(@WebParam(name ="id")
int id) {
boolean ok =ln.ControlOnOffDispositivos(id);
return ok;
}
}

wsObtenerRegistroDispositivo
package org.servidor;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.cliente.RegistroBean;
//Definimos el Webservice
@WebService()
public class wsObtenerRegistroDispositivo {
//instanciamos el objeto de lgica de negocio
private LogicaNegocio ln =new LogicaNegocio();
//Definimos una clase de tipo RegistroBean, la cual me retorna el registro
de //todos los dispositivos
@WebMethod(operationName ="obtenerRegistroDispositivo")
public RegistroBean obtenerRegistroDispositivo(@WebParam(name =
"id")
int id) {
//TODO writes your implementation code here:
RegistroBean registro =ln.obtenerRegistroDispositivo(id);
return registro;
}
}


226

wsUsuario
package org.servidor;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import org.cliente.UsuarioBean;
//Definimos el Webservice
@WebService()
public class wsUsuario {
//instanciamos el objeto de lgica de negocio
private LogicaNegocio ln =new LogicaNegocio();
//Definimos una clase de tipo UsuarioBean, la cual me retorna el registro
del usuario correspondiente.
@WebMethod(operationName ="obtenerUsuario")
public UsuarioBean obtenerUsuario(@WebParam(name ="cedula")
String cedula,@WebParam(name ="password")
String password) {
UsuarioBean usuario =ln.obtenerUsuario(cedula,password);
return usuario;
}

Sources Packages
org.cliente
Objetos que registran tipos de datos especficos
ApagadoGeneralBean
RegistroBean
UsuarioBean
org.servidor
ConexionBDDataSource
package org.servidor;

import java.sql.Connection;

227

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.cliente.UsuarioBean;
import org.cliente.RegistroBean;
import java.util.ArrayList;
import javax.ejb.FinderException;
import org.cliente.ApagadoGeneralBean;

public class ConexionBDDataSource implements InterfaceConexionBD{

private Connection con;
private DataSource ds;
private PreparedStatement ps;
private ResultSet rs;

public ConexionBDDataSource() {
}

public boolean conectarBD() {
try {
ds =getJ dbcMyDatasourceMySQL();
try {
con =ds.getConnection();
} catch (SQLException ex) {
return false;
} catch(NullPointerException ex){
return false;
}
} catch (NamingException ex) {

228

return false;
}
return true;
}

//verifica si el usuario existe o no
public boolean existeUsuario(String cedula) {
try {
ps =con.prepareStatement("select * from usuario where usu_cedula =" +
"'" +cedula +"'");
rs =ps.executeQuery();
if(rs.next()){
return true;
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return false;
}

//obtiene los datos del usuario
public UsuarioBean obtenerUsuario(String cedula,String password) {
UsuarioBean usuario =new UsuarioBean();
String sqlUsuario="select * from usuario where usu_cedula ="+
" '" +cedula +"' and usu_password="+" '"+password +"'";
try {
ps =con.prepareStatement(sqlUsuario);
rs =ps.executeQuery();
if(rs.next()){
usuario.setNombres(rs.getString("usu_nombres"));
usuario.setApellidos(rs.getString("usu_apellidos"));
usuario.setDireccion(rs.getString("usu_direccion"));
usuario.setTelefono(rs.getString("usu_telefono"));
}

229

} catch (SQLException ex) {
ex.printStackTrace();
}
return usuario;
}

//obtiene el ltimo registro del dispositivo requerido
public RegistroBean obtenerRegistroDispositivo(Integer id) {
RegistroBean registro =new RegistroBean();
try {
String sql_registro="";
sql_registro="select dis.dis_descripcion as dispositivo,"+
" tmc.tmc_descripcion as tipo, rmc.rmc_cantidad as cantidad,"+
" rmc.rmc_estado_on_off as estado"+
" FROM registro_mc rmc, dispositivo dis, tipo_mc tmc"+
"where rmc.rmc_dis_id=dis.dis_id and
rmc.rmc_tmc_id=tmc.tmc_id"+
" and rmc.rmc_dis_id=" +id +
" order by rmc.rmc_id desc limit 3";
ps =con.prepareStatement(sql_registro);
rs =ps.executeQuery();
if(rs.next()){
registro.setDispositivo(rs.getString("dispositivo"));
registro.setTipo(rs.getString("tipo"));
registro.setCantidad(rs.getString("cantidad"));
registro.setEstado(rs.getString("estado"));
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return registro;
}

//Obtiene el estado del apagado general del sistema

230

public ApagadoGeneralBean obtenerApagadoGeneral(Integer id) {
ApagadoGeneralBean apg =new ApagadoGeneralBean();
try {
String sql_apg="";
sql_apg="select apg_id as id, apg_descripcion as descripcion,"+
" apg_estado as estado"+
" FROM apagado_general"+
" where apg_id=" +id ;

ps =con.prepareStatement(sql_apg);
rs =ps.executeQuery();
if(rs.next()){
apg.setDescripcion(rs.getString("descripcion"));
apg.setEstado(rs.getString("estado"));
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return apg;
}

//Actualiza el estado de los dispositivos para apagarlos o encenderlos
public boolean ControlOnOffDispositivos(Integer id) {
boolean ok =false;
try {
String sql_apg="";
sql_apg="update dispositivo "+
" set dis_estado='0' "+
" where dis_estado='A' and dis_id=" +id ;

ps =con.prepareStatement(sql_apg);
ps.executeUpdate();
ok=true;
} catch (SQLException ex) {

231

ex.printStackTrace();
}
return ok;
}

public boolean apagadoGeneral(Integer id) {
boolean ok =false;
try {
String sql_apg="";
sql_apg="update apagado_general "+
" set apg_estado='0' "+
" where apg_estado='I' and apg_id=" +id ;

ps =con.prepareStatement(sql_apg);
ps.executeUpdate();
ok=true;
} catch (SQLException ex) {
ex.printStackTrace();
}
return ok;
}

//Cdigo generado por Netbeans realiza el Data Source para la conexion con la
base
private DataSource getJ dbcMyDatasourceMySQL() throws NamingException
{
Context c =new InitialContext();
return (DataSource) c.lookup("java:comp/env/jdbc/myDatasourceMySQL");
}

@Override
public void finalize(){
try {
if(!con.isClosed())

232

con.close();
} catch (SQLException ex) {
} catch(NullPointerException ex){
}
}
}
LogicaNegocio
wsApagadoGeneral
wsConotolOnOffDispositivos
wsObtenerRegistroDispositivo
wsUsuario

LogicaNegocio
//Esta clase maneja la lgica del negocio
//Controla la clase de COnexionBDDatasource
package org.servidor;
import org.cliente.UsuarioBean;
import org.cliente.RegistroBean;
import java.util.ArrayList;
import javax.ejb.FinderException;
import org.cliente.ApagadoGeneralBean;
public class LogicaNegocio {
private ConexionBDDataSource con;
private boolean conectado =false;

public LogicaNegocio() {
conectado =conectarse();
}

public boolean conectarse(){
con =new ConexionBDDataSource();
if(!con.conectarBD())
return false;
else

233

return true;
}

public UsuarioBean obtenerUsuario(String cedula,String password){
if(conectado){
if(!con.existeUsuario(cedula)){
return null;
}
else{
UsuarioBean usuario =con.obtenerUsuario(cedula,password);
return usuario;
}
}else
return null;
}
public RegistroBean obtenerRegistroDispositivo(Integer id){
if(conectado){
RegistroBean registro =con.obtenerRegistroDispositivo(id);
return registro;
}else
return null;
}

public ApagadoGeneralBean obtenerApagadoGeneral(Integer id){
if(conectado){
ApagadoGeneralBean apg =con.obtenerApagadoGeneral(id);
return apg;
}else
return null;
}
public boolean ControlOnOffDispositivos(Integer id){
if(conectado){
boolean ok =con.ControlOnOffDispositivos(id);
return ok;

234

}else
return false;
}
public boolean apagadoGeneral(Integer id){
if(conectado){
boolean ok =con.apagadoGeneral(id);
return ok;
}else
return false;
}
}



D.2 Aplicacin Mvil
Package hello
httpMidlet
package hello;

import javax.microedition.rms.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
import java.rmi.Remote.*;

import wsusuarioservice.*;
import wsobtenerregistrodispositivoservice.*;
import wsapagadogeneralservice.*;
//import monitor.midlet.*;
import socket.Client;
//import socket.Server;


235


import java.util.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
//import socket.*;
import wsapagadogeneralservice.apagadoGeneralBean;
import wsapagadogeneralservice.wsApagadoGeneralService_Stub;
import
wsconotolonoffdispositivosservice.wsConotolOnOffDispositivosService_Stu
b;

public class HttpMidlet extends MIDlet implements CommandListener{
private Command salir, ingresar, mostrar;
private Command cmdLogin, cmdBack, cmdMonitoreo, cmdControl,
cmdChat, cmdBievenidaControl;
private Command cmdBackBienvenida, cmdBackMonitoreo,
cmdIniciarChat, cmdAceptarControl, cmdBackControl,
cmdAceptarApagado, cmdAceptarEncendido;
private Display display;
private Form pantallaLogin, pantallaBienvenida,pantallaControl,
pantallaApagadoGeneral,
pantallaEncendidoDispositivos,pantallaOKEncendidoDispositivos;
//private reporteGrafico pantallaMonitoreo;
public monitorear pantallaMonitoreo;
private TextField cedula, password;
private List elijeDispositivo;
private ChoiceGroup chOnOff,chEnciendeBomba, chApagadoGeneral;
private StringItem sUsuario, sBombaCarga ,sBombaDescarga, sTanque,
sApagadoGeneral, sEncendidoBombas;
private registroBean registro;
//Bloque Chat
private boolean isPaused;
// private Server server;
private Client client;

236

private boolean llenando=false;
private Timer tm; // Timer
private TestTimerTask tt; // Task

public HttpMidlet() {
display =Display.getDisplay(this);

//Pantalla Login
salir =new Command("Salir", Command.EXIT, 2);
cmdLogin =new Command("Login", Command.OK, 1);
cedula =new TextField("Cedula : ", "",50,TextField.ANY);
password = new TextField("Contrasea", "", 50,
TextField.ANY);
pantallaLogin =new Form("Login");
pantallaLogin.append(cedula);
pantallaLogin.append(password);
pantallaLogin.addCommand(salir);
pantallaLogin.addCommand(cmdLogin);
pantallaLogin.setCommandListener(this);


//Pantalla Bienvenida
cmdBack =new Command("Regresar", Command.BACK, 1);
cmdMonitoreo =new Command("Monitoreo", Command.OK, 1);
cmdBievenidaControl =new Command("Control", Command.OK,
2);
cmdChat =new Command("Chat", Command.OK, 3);
sUsuario =new StringItem("Bienvenido :","");
pantallaBienvenida = new Form("Sistema de Monitoreo y
Control");
pantallaBienvenida.append(sUsuario);
pantallaBienvenida.addCommand(cmdBack);
pantallaBienvenida.addCommand(cmdMonitoreo);
pantallaBienvenida.addCommand(cmdBievenidaControl);

237

pantallaBienvenida.addCommand(cmdChat);
pantallaBienvenida.setCommandListener(this);

//Pantalla Monitoreo
cmdBackBienvenida = new Command("Regresar",
Command.BACK, 1);
cmdChat =new Command("Chat", Command.OK, 1);
cmdControl =new Command("Control", Command.OK, 2);
pantallaMonitoreo =new monitorear();
pantallaMonitoreo.addCommand(cmdBackBienvenida);
pantallaMonitoreo.addCommand(cmdControl);
pantallaMonitoreo.addCommand(cmdChat);
pantallaMonitoreo.setCommandListener(this);

sBombaCarga =new StringItem("Bomba Carga :","");
sBombaDescarga =new StringItem("Bomba Descarga :","");
sTanque =new StringItem("Tanque", "");
//Pantalla Monitoreo

//Pantalla Control
cmdBackMonitoreo = new Command("Regresar",
Command.BACK, 1);
cmdAceptarControl = new Command("Aceptar", Command.OK,
1);
chOnOff = new ChoiceGroup("Apagado/Ecendido de
Dispositivos", Choice.EXCLUSIVE);
chOnOff.append("Apagado General", null);
chOnOff.append("Encendido de Bombas", null);
pantallaControl =new Form("Sistema de Control");
pantallaControl.append(chOnOff);
pantallaControl.addCommand(cmdAceptarControl);
pantallaControl.addCommand(cmdBackMonitoreo);
pantallaControl.setCommandListener(this);


238

cmdBackControl =new Command("Regresar", Command.BACK,
1);

pantallaApagadoGeneral =new Form("Sistema de Control");
chApagadoGeneral = new ChoiceGroup("Apagado General del
Sistema", Choice.EXCLUSIVE);
chApagadoGeneral.append("Si", null);
chApagadoGeneral.append("No", null);
cmdAceptarApagado =new Command("Aceptar", Command.OK,
1);
pantallaApagadoGeneral.append(chApagadoGeneral);
pantallaApagadoGeneral.addCommand(cmdBackControl);
pantallaApagadoGeneral.addCommand(cmdAceptarApagado);
pantallaApagadoGeneral.setCommandListener(this);

pantallaEncendidoDispositivos =new Form("Sistema de Control");
chEnciendeBomba = new ChoiceGroup("Enciende Bomba",
Choice.EXCLUSIVE);
chEnciendeBomba.append("Carga", null);
chEnciendeBomba.append("Descarga", null);
cmdAceptarEncendido =new Command("Aceptar", Command.OK,
1);
pantallaEncendidoDispositivos.append(chEnciendeBomba);
pantallaEncendidoDispositivos.addCommand(cmdBackControl);

pantallaEncendidoDispositivos.addCommand(cmdAceptarEncendido);
pantallaEncendidoDispositivos.setCommandListener(this);

}
public void startApp() {
display.setCurrent(pantallaLogin);
}
public boolean isPaused() {
return isPaused;

239

}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable s) {
if(c ==cmdBack){
display.setCurrent(pantallaLogin);
}
if(c==cmdBackBienvenida){
tm.cancel();
display.setCurrent(pantallaBienvenida);
}
if(c==cmdBackMonitoreo){
llamarTimer();
//wsObtenerRegistroDispotivo();
}

if (c ==salir) {

destroyApp(false);
notifyDestroyed();
}
/*if (c ==mostrar){
llamarTimer();
}*/
if(c ==cmdLogin){
wsLogin();
}
if(c ==cmdMonitoreo){
//display.setCurrent(pantallaMonitoreo);
//wsObtenerRegistroDispotivo();
llamarTimer();
//reporteGrafico();

240

}
if(c ==cmdChat){
client =new Client(this);
client.start();
}

if (c ==cmdIniciarChat) {
tm.cancel();
client =new Client(this);
client.start();
}
if(c ==cmdControl){
tm.cancel();
display.setCurrent(pantallaControl);
}
if(c ==cmdBievenidaControl){
//tm.cancel();
display.setCurrent(pantallaControl);
//display.setCurrent(elijeDispositivo);
}
if(c ==cmdAceptarControl){
//tm.cancel();
if(chOnOff.getSelectedIndex()==0){
display.setCurrent(pantallaApagadoGeneral);
}
if(chOnOff.getSelectedIndex()==1){
display.setCurrent(pantallaEncendidoDispositivos);
}
//display.setCurrent(elijeDispositivo);
}

if(c ==cmdBackControl){
display.setCurrent(pantallaControl);
}

241


if(c ==cmdAceptarApagado){
wsApagarGeneral();
//display.setCurrent(pantallaControl);
}

if(c ==cmdAceptarEncendido){
wsControlDispositivos();
//display.setCurrent(pantallaControl);
}
}

//Clase que maneja el logueo del usuario mediante el consumo del
servicio web y retorna los datos del usuario
public void wsLogin(){
Thread getinfo =new Thread(){/*pasamos como parmetro la instancia
del Thread Principal que no servir para regresar los datos*/
public void run(){
try{
usuarioBean usuario =new usuarioBean();
wsUsuarioService_Stub wsUsuario =new wsUsuarioService_Stub();
usuario
=wsUsuario.obtenerUsuario(cedula.getString(),password.getString());
sUsuario.setText(usuario.getNombres()+" "+usuario.getApellidos());

if(usuario.getNombres()==null){
Alert alertaUserInvalido = new Alert("Guardar, Usuario no
vlido...",null,AlertType.CONFIRMATION);
alertaUserInvalido.setTimeout(Alert.FOREVER);
cedula.setString("");
password.setString("");
display.setCurrent(alertaUserInvalido,pantallaLogin);
}else{
display.setCurrent(pantallaBienvenida);

242

}
}catch(IOException e){
e.printStackTrace();
}
}
};
getinfo.start();
}
//Clase que maneja el encendido y apagado de dispositivos dentro del
sistema mediante el consumo de un servicio web el cual actualiza los
estados en la tabla de dispositivos.
public void wsControlDispositivos (){
Thread getinfo =new Thread(){/*pasamos como parmetro la instancia
del Thread Principal que no servir para regresar los datos*/
public void run(){
try{
boolean ok;
wsConotolOnOffDispositivosService_Stub
wsControlOnOffDispositivos = new
wsConotolOnOffDispositivosService_Stub();
ok
=wsControlOnOffDispositivos.ControlOnOffDispositivos(chEnciendeBomba
.getSelectedIndex()+2);
if(ok==true){
Alert apgControlOnOffDispositivos = new Alert("OK", "Bomba
encendida", null,AlertType.CONFIRMATION);
apgControlOnOffDispositivos.setTimeout(Alert.FOREVER);

display.setCurrent(apgControlOnOffDispositivos,pantallaEncendidoDispositi
vos);
}/*else{
display.setCurrent(pantallaEncendidoDispositivos);
}*/
}catch(IOException e){

243

e.printStackTrace();
}
}
};
getinfo.start();
}
//Clase que maneja el encendido y apagado general del sistema mediante
el consumo de un servicio web el cual actualiza los estados en la tabla de
apagado general.
public void wsApagarGeneral (){
Thread getinfo =new Thread(){/*pasamos como parmetro la instancia
del Thread Principal que no servir para regresar los datos*/
public void run(){
try{
boolean ok=false;
wsApagadoGeneralService_Stub wsApagarGeneral = new
wsApagadoGeneralService_Stub();
if(chApagadoGeneral.getSelectedIndex()==0){
ok =wsApagarGeneral.apagadoGeneral(1);
}

if(ok==true){
Alert alertApagadoGeneral =new Alert("OK","Apagado General
desde Mbil",null,AlertType.CONFIRMATION);
alertApagadoGeneral.setTimeout(Alert.FOREVER);
display.setCurrent(alertApagadoGeneral,pantallaApagadoGeneral);
}/*else{
display.setCurrent(pantallaEncendidoDispositivos);
}*/
}catch(IOException e){
e.printStackTrace();
}
}
};

244

getinfo.start();
}

//Clase que realiza un reporte grfico mediante un servicio web que
retorna los registro de los datos actuales de todos y cada uno de los
dispositivos.
public void reporteGrafico(){
Thread getinfo =new Thread(){
public void run(){
try{
registroBean registroTanque =new registroBean();
registroBean registroBombaCarga =new registroBean();
registroBean registroBombaDescarga =new registroBean();
apagadoGeneralBean apg =new apagadoGeneralBean();

wsObtenerRegistroDispositivoService_Stub wsRegistro = new
wsObtenerRegistroDispositivoService_Stub();
wsApagadoGeneralService_Stub wsApg = new
wsApagadoGeneralService_Stub();

apg =wsApg.obtenerApagadoGeneral(2);

registroTanque =wsRegistro.obtenerRegistroDispositivo(1);
registroBombaCarga =wsRegistro.obtenerRegistroDispositivo(2);
registroBombaDescarga =wsRegistro.obtenerRegistroDispositivo(3);

pantallaMonitoreo.setregistroTanque(registroTanque);
pantallaMonitoreo.setregistroBombaCarga(registroBombaCarga);
pantallaMonitoreo.setregistroBombaDescarga(registroBombaDescarga);

pantallaMonitoreo.start();
display.setCurrent(pantallaMonitoreo);
}catch(IOException e){
e.printStackTrace();

245

}
}
};
getinfo.start();
}
public void llamarTimer(){
tm =new Timer();
tt =new TestTimerTask();
tm.schedule(tt,5000, 5000);
}
private class TestTimerTask extends TimerTask
{
public final void run()
{
reporteGrafico();
}
}
}

Monitorear
package hello;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
import java.io.*;
import javax.microedition.media.*;
import java.util.*;
import wsobtenerregistrodispositivoservice.*;
import wsapagadogeneralservice.*;

public class monitorear extends GameCanvas implements Runnable{
private boolean llenando =false;
private long delay;
private Timer tm; // Timer

246

private TestTimerTask tt; // Task
public int tanquex =0,tanquey =0;
public int fuenteBomba1X=0, fuenteBomba1Y=0;
public int fuenteBomba2X=0, fuenteBomba2Y=0;
public int fuenteOnOffX=0, fuenteOnOffY=0;
public int fuenteTempX=0, fuenteTempY=0;
public int centroX, centroY, anchoCisterna, altoCisterna;
public int ancho;
public int alto;
private Image image;
//private TiledLayer tiledMapa;
private LayerManager LM;
private Sprite cisterna;
private final Vector gotas =new Vector();
private final Player sonido;
public apagadoGeneralBean apg ;
public registroBean registroTanque;
public registroBean registroBombaCarga;
public registroBean registroBombaDescarga;
//HttpMidlet p;
//Instanciacin de Objetos
public void setApagadoGeneral(apagadoGeneralBean apg){
this.apg =apg;
}
public apagadoGeneralBean getApagadoGeneral(){
return apg;
}
public void setregistroTanque(registroBean registroTanque){
this.registroTanque =registroTanque;
}
public registroBean getregistroTanque(){
return registroTanque;
}
public void setregistroBombaCarga(registroBean registroBombaCarga){

247

this.registroBombaCarga =registroBombaCarga;
}
public registroBean getregistroBombaCarga(){
return registroBombaCarga;
}
public void setregistroBombaDescarga(registroBean
registroBombaDescarga){
this.registroBombaDescarga =registroBombaDescarga;
}
public registroBean getregistroBombaDescarga(){
return registroBombaDescarga;
}


//Constructor de la Clase
public monitorear() {
super(true);
ancho =getWidth();
alto =getHeight();

// getDatos();
try {
image=Image.createImage("/cisterna.png");
} catch (IOException e) {
throw new RuntimeException ("Unable to load Image: "+e);
}
cisterna = new Sprite (image,image.getWidth(),image.getHeight());
anchoCisterna=cisterna.getWidth();
altoCisterna=cisterna. GetHeight();
ancho =getWidth();
alto =getHeight();
//varibles de posicin de la barra que llena el tanque
//Variables de Fuente
fuenteBomba1X=70;

248

fuenteBomba1Y=(alto/2)+(altoCisterna/2)+20;
fuenteBomba2X=(ancho/2)+(anchoCisterna/2)+20;
fuenteBomba2Y=(alto/2)+(altoCisterna/2)+20;
fuenteOnOffX=10;
fuenteOnOffY=(alto/2)+(altoCisterna/2)+40;
fuenteTempX=10;
fuenteTempY=(alto/2)+(altoCisterna/2)+60;
centroX =(ancho/2)-(anchoCisterna/2);
centroY =(alto/2)-(altoCisterna/2);
cisterna.setPosition(centroX, centroY);
delay =20;
LM =new LayerManager();
LM.append(cisterna);
//LM.append(tiledMapa);
try {
image=Image.createImage("/gota2.png");
} catch (IOException e) {
throw new RuntimeException ("Unable to load Image: "+e);
}
sonido =createSoundPlayer("/disparo.wav", "audio/x-wav");
}
public void start() {
Thread t =new Thread(this);
t.start();
}
public void stop() {
}
public void run() {
//Instancia la variable grfica
Graphics g =getGraphics();
//llama a la funcin que dibuja la animacin
llenarCisterna();
while (true) {
//dibuja la pantalla

249

drawScreen(g);

try {
//manda un retardo al hilo que est ejecutndose
Thread.sleep(delay);
} catch (InterruptedException ie) {
}
}
}
//funcin que dibuja la pantalla
private void drawScreen(Graphics g) {
monitor(g);
//Seteo de Letras Temperatura Bomba de Carga
LM.paint(g,0,0);
flushGraphics();
}
//funcin que genera un sonido
private Player createSoundPlayer(String filename, String format) {
Player p =null;
try {
InputStream is =getClass().getResourceAsStream(filename);
p =Manager.createPlayer(is, format);
p.prefetch();
} catch (IOException ex){
}
catch (MediaException ex){
}
return p;
}
//funcin q genera la parte esttica del reporte grfico y muestra los
datos de los dispositivos y del tanque.
private void monitor(Graphics g){
tanquex =(ancho/2)-((anchoCisterna-40)/2);

250

tanquey =((alto/2)+(altoCisterna/2))-
(Integer.parseInt(registroTanque.getCantidad())*10);
g.setColor(0xffffff);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0x0000ff);
g.setColor(1,1,155);
//g.setColor(1,1,255);
//g.drawRect((ancho/2)-((anchoCisterna-1)/2),(alto/2)-
(altoCisterna/2),anchoCisterna,altoCisterna);
g.setColor(40,155,155);
g.fillRect(tanquex,tanquey,anchoCisterna-
40,Integer.parseInt(registroTanque.getCantidad())*10);
//Seteo Bomba Carga
g.setColor(1,1,155);
Font fBomba1 =
Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDI
UM);
g.setFont(fBomba1);
g.drawString("Bomba 1",fuenteBomba1X, fuenteBomba1Y,
Graphics.HCENTER | Graphics.BOTTOM);
//Seteo Bomba Descarga
g.setColor(1,1,155);
Font fBomba2 =
Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDI
UM);
g.setFont(fBomba2);
g.drawString("Bomba 2",fuenteBomba2X, fuenteBomba2Y,
Graphics.HCENTER | Graphics.BOTTOM);
//Seteo de Letras ON/OF
g.setColor(1,1,155);
Font fOnnOff =
Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDI
UM);
g.setFont(fOnnOff);

251

g.drawString("On/Off",fuenteOnOffX, fuenteOnOffY, Graphics.LEFT |
Graphics.BOTTOM);
//Seteo de Letras Temperatura
g.setColor(1,1,155);
Font fTemp =
Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDI
UM);
g.setFont(fTemp);
g.drawString("Temp",fuenteTempX, fuenteTempY, Graphics.LEFT |
Graphics.BOTTOM);
g.setColor(1,1,155);
Font fB1OnOff =
Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDI
UM);
g.setFont(fB1OnOff);
g.drawString(registroBombaCarga.getEstado(),fuenteBomba1X,
fuenteOnOffY, Graphics.LEFT | Graphics.BOTTOM);
//Seteo de Letras OnOFF Bomba de DesCarga
g.setColor(1,1,155);
Font fB2OnOff =
Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDI
UM);
g.setFont(fB2OnOff);
g.drawString(registroBombaDescarga.getEstado(),fuenteBomba2X,
fuenteOnOffY, Graphics.LEFT | Graphics.BOTTOM);
//Seteo de Letras Temperatura Bomba de Carga
g.setColor(1,1,155);
Font fB1Temp =
Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDI
UM);
g.setFont(fB1Temp);
g.drawString(registroBombaCarga.getCantidad(),fuenteBomba1X,
fuenteTempY, Graphics.LEFT | Graphics.BOTTOM);
//Seteo de Letras Temperatura Bomba de DesCarga

252

g.setColor(1,1,155);
Font fB2Temp =
Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDI
UM);
g.setFont(fB2Temp);
g.drawString(registroBombaDescarga.getCantidad(),fuenteBomba2X,
fuenteTempY, Graphics.LEFT | Graphics.BOTTOM);
}
private String estadoBomba(int numBomba, String tipoMonitoreo){
String estadoBomba="";

return estadoBomba;
}
//Funcin que genera la animacin de llenado del tanque
private void llenarCisterna(){
if(registroBombaCarga.getEstado().compareTo("1")==0){
if (!llenando) {
llenando =true;
Sprite misil =new Sprite(image);

misil.setPosition(cisterna.getX()+2,cisterna.getY()+cisterna.getHeight()-2);
gotas.addElement(misil);
LM.insert(misil, 1);
}
// llenando=false;
}else{
//llenando=false;
}
//llenando =false;
for (int i =0; i <gotas.size(); ++i) {
for (int j =0; j <2; ++j) {
Sprite misil =(Sprite)(gotas.elementAt(i));
if(misil.getX() == cisterna.getX()+2 || misil.getY() ==
cisterna.getY()+cisterna.getHeight()-2 ){

253

misil.move(0, -1);
}
if (misil.getY() <cisterna.getY()+cisterna.getHeight()-82 &&
misil.getX() <=cisterna.getX()+22){
misil.move(1, 0);
}
if(misil.getX() >=cisterna.getX()+22 &&
misil.getY() <=cisterna.getY()+cisterna.getHeight()-10){
misil.move(0,1);
}
if(misil.getY() ==cisterna.getY()+cisterna.getHeight()-10
&& misil.getX()==cisterna.getX()+22){
gotas.removeElementAt(i);
LM.remove(misil);
//misil.move(1, 0);
i--;
llenando =false;
break;
}
}
}
}
//funcin que maneja el tiempo de las tareas predeterminadas
private class TestTimerTask extends TimerTask
{
public final void run()
{
//fmMain.append("run count: " +++count +"\n");
//llenarCisterna();
}
}
}
ANEXO E


254

E.1 PROGRAMA DEL PIC 18F4550

//*******************************************************************
// Realizado por Universidad Politcnica Salesiana.
// Compilado con el PCW Compiler 4.057
// ******************************************************************
#include <18F4550.h>
#fuses
HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,V
REGEN
#use delay(clock=48000000)
#define USB_HID_DEVICE FALSE //Deshabilitamos el uso de las directivas
HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK // Activa
EP1(EndPoint1) para las transferencias IN Bulk/Interrupt
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK // Activa
EP1(EndPoint1) para las transferencias OUT Bulk/Interrupt
#define USB_EP1_TX_SIZE 8 // Tamao reservado para el Buffer
Tx EndPoint1
#define USB_EP1_RX_SIZE 8 // Tamao reservado para el Buffer
Rx EndPoint1
//===========================================================

#include <pic18_usb.h> // Microchip PIC18Fxx5x Hardware para el CCS PIC
USB Driver
#include <PicUSB.h> // Configuracin del USB y los descriptores para este
dispositivo
#include <usb.c> // Handles usb ,tokens y descriptores

#define LED0 PIN_B7 // sensor 1
#define LED1 PIN_B6 // sensor 2
#define LED2 PIN_B5 // nivel bajo
#define LED3 PIN_B4 // nivel medio
#define LED4 PIN_B3 // nivel alto

255

#define LED5 PIN_B2 // confirma bomba1
#define LED6 PIN_B1 // confirma bomba 2
#define LED7 PIN_B0 //on / off general

#define entrada_0 envia[0] //
#define entrada_1 envia[1] //
#define entrada_2 envia[2] //
#define entrada_3 envia[3] //
#define entrada_4 envia[4] //
#define entrada_5 envia[5] //
#define entrada_6 envia[6] //
#define entrada_7 envia[7] //

#define LED_ON output_high // Salida en alto
#define LED_OFF output_low // Salida en bajo
#define modo recibe[0] // Byte que indica el modo de operacin
#define param1 recibe[1] // Primer parmetro recibido
#define param2 recibe[2] // Segundo parmetro recibido
#define ENCIENDE_LED 1 // Modo de encender leds
#define APAGA_LED 2 // Modo de apagar leds
#define ENTRADAS 3 // Modo de leer las entradas
void main(void){ // Funcin Principal
int8 recibe[8]; // Declaramos la variable recibe de 8 bytes
int8 envia[8]; // Declaramos la variable enva de 8 bytes
LED_off(LED0);
LED_OFF(LED1);
LED_OFF(LED2);
LED_OFF(LED3);
LED_OFF(LED4);
LED_OFF(LED5);
LED_OFF(LED6);
LED_OFF(LED7);
set_tris_b(0x00); //pto b como salidas
usb_init(); // Inicializamos el USB

256

usb_task(); // Habilita el perifrico USB y las interrupciones
usb_wait_for_enumeration(); // Esperamos hasta que el PicUSB sea configurado
por el PC
while (true){
if (input(PIN_A0)&& (usb_enumerated()) ){
led_off(led0);
led_on(Led1);
delay_ms (200);
led_on(Led0);
led_off(Led1);
delay_ms (400);
}
led_off(Led1);

if(usb_enumerated()) // Si el PicUSB est configurado
{
if (usb_kbhit(1)) // Si el EndPoint de salida contiene datos del PC
{
usb_get_packet(1, recibe, 8); // Cogemos el paquete de tamao 8 bytes del
EP1
// y lo almacenamos en la variable recibe
if (modo==ENCIENDE_LED) // Modo Encender Leds
{
//if (param1==1) {LED_ON(LED0);} // Encendemos led 0
//if (param1==2) {LED_ON(LED1);} //
if (param1==3) {LED_ON(LED2);} //
if (param1==4) {LED_ON(LED3);} //
if (param1==5) {LED_ON(LED4);} //
if (param1==6) {LED_ON(LED5);} //
if (param1==7) {LED_ON(LED6);} //
if (param1==8) {LED_ON(LED7);} //
}
if (modo==APAGA_LED) // Modo Apaga Leds
{

257

//if (param1==1) {LED_OFF(LED0);} //
//if (param1==2) {LED_OFF(LED1);} //
if (param1==3) {LED_OFF(LED2);} //
if (param1==4) {LED_OFF(LED3);} //
if (param1==5) {LED_OFF(LED4);} //
if (param1==6) {LED_OFF(LED5);} //
if (param1==7) {LED_OFF(LED6);} //
if (param1==8) {LED_OFF(LED7);} //
}
if (modo==ENTRADAS) // Modo Entradas
{
entrada_0=input(PIN_D0); //
entrada_1=input(PIN_D1); //
entrada_2=input(PIN_D2); //
entrada_3=input(PIN_D3); //
entrada_4=input(PIN_D4); //
entrada_5=input(PIN_D5); //
entrada_6=input(PIN_D6); //
entrada_7=input(PIN_D7); //
usb_put_packet(1,envia,8,USB_DTS_TOGGLE); // Enviamos el
paquete de tamao 8 bytes del EP1 al PC
}
}
}
}
}










E.2 PROGRAMA DEL PIC 16F877

258


; Programa General PIC 16F877A
; UNIVERSIDAD POLITECNICA SALESIANA.
; SISTEMA CONTROL INDUSTRIAL MOVIL.
; ----Oscar Santistevan-----Rubn Puma----Roger Crdova----;
Define ADC_BITS 8 ;Fije nmero de BITS del resultado (5,8,10)
Define ADC_CLOCK 3 ;Fije EL CLOCK (rc =3)
Define ADC_SAMPLEUS 50 ;Fije el tiempo de muestreo en Us
;ADC_SAMPLEUS es el nmero de microsegundos que el programa espera
;entre fijar el canal y comenzar la conversin analgica/digital.
TRISA =%11111111 ;el puerto A es de entrada
TRISB =%00000000 ;el puerto B es de salida
TRISC =%01001111 ;C7..4 out, C3..0 in
TRISD =%11111101 ;el puerto D es de entrada
ADCON1 =%00000101;el puerto A.0,A.1 anlogos--A.2 Dig--A.3 +Vref--A.4 Dig
;---Declaracin de variables---
i var byte : k var byte
x var byte : y var byte
dato var BYTE ;dato para guardar temp1
dato2 var byte ;dato2 para guardar temp2
temp1 var byte ; temp1 inicial para comparar con dato
temp2 var byte ; temp2 inicial para comparar con dato2
; Declaro los nombres de los pines
;A.0 canal temp_1 ---------A.1 canal temp_2
;-----------------------------------------------------------------------
;-----------------------------------------------------------------------
Nivel_Bajo var portA.2 ;IN Nivel Bajo de la Cisterna
Nivel_Alto var portA.4 ;IN Nivel Alto de la Cisterna
Control_Sist_Total var portA.5 ;IN Encendido total del Sistema.
;---PUERTO B--- SALIDAS---
S_1 var portB.0 ;Indica tempertura alta de la bomba1, se conecta alarma1
S_2 var portB.1 ;Indica tempertura alta de la bomba2, se conecta alarma2
bomba1 var portB.2 ;Enciende bomba1
bomba2 var portD.1 ;Enciende bomb2

259

Tanque_LLeno var portB.4 ;Indica estado sensor Nivel_Alto
Tanque_Vacio var portB.6 ;Indica estado sensor Nivel_Bajo
On_Off_Sistema_Total var portB.7 ;habilita el sistema total
;---PUERTO C--- ENTRADAS Y SALIDAS---
Confirma_B1 var portC.0 ;IN confirmacin ON de bomba_1 desde Sist Electrnico
Confirma_B2 var portC.1 ;IN confirmacin ON de bomba_2 desde Sist Electrnico
On_Off_B1 var portC.2 ;IN confirmacin encendido bomba_1 desde receptor
On_Off_B2 var portC.3 ;IN confirmacin encendido bomba_2 desde receptor
Conf1_B1 var portC.4 ;Out conf. ON de B1 hacia Emisor
Conf2_B2 var portC.5 ;Out conf. ON de B2 hacia Emisor
Ok var portC.7 ;Out Indica estado del sistema
;-----------------------------------------------------------------------
reinicio var portD.0
temporal var word
temporal =0
;-----------------------------------------------------------------------
INICIO:
portb=%00000000
low portc.4
low portc.5
low portc.7
;-----------------
low bomba2
;-----------------------------------------------------------------------
eeprom 0,[45,45] ;contenido inicial de la EEPROM
READ 0,temp1 ;lee la EEPROM 0 y lo guarda en temp1
READ 1,temp2 ;lee la EEPROM 1 y lo guarda en temp2
low ok
;-----------------------------------------------------------------------
Sensa1:
ADCIN 0, dato ;leer el canal 0 (A0) y guarde en dato
dato =dato /2 ;el dato dividir para 2
if dato >temp1 then Alarma1


260

Sensa2:
ADCIN 1, dato2 ;leer el canal 0 (A0) y guarde en dato
dato2 =dato2 /2 ;el dato dividir para 2
if dato2 >temp2 then Alarma2
;-----------------------------------------------------------------------
SistemaTotal:
if Control_Sist_Total=1 then inicializa
goto INICIO
;-----------------------------------------------------------------------
inicializa :
for x=1 to 1
LOW Ok
pause 100
HIGH Ok
pause 100
next
PAUSE 100
;-----------------------------------------------------------------------
;-----------------------------------------------------------------------
Control1:
high ON_Off_Sistema_Total
low S_1 ; Apago led_Alarma1
low S_2 ; Apago led_Alarma2
low Bomba1
low bomba2
Estado1:
if (Nivel_Bajo=0 or nivel_bajo=1) and temporal =0 then AccionNivelBajo
if temporal =1 then high TANQUE_VACIO
if temporal =1 and nivel_bajo =1 then Temp_vaciado
if Nivel_bajo=1 and nivel_alto=1 then AccionNivelAlto
goto Estado1

AccionNivelBajo:
if Nivel_Bajo=1 and nivel_Alto=1 then AccionNivelAlto

261

LOW TANQUE_VACIO
low Tanque_LLeno
low bomba2
low conf2_B2

if On_Off_B1 =1 then ActivaB1
Goto AccionNivelBajo

ActivaB1:
high bomba1
if Confirma_B1 =1 then Activa2_B1
goto ActivaB1

Activa2_B1:
pause 100
HIGH TANQUE_VACIO ; INDICO QUE EL TANQUE LLENANDO
high Conf1_B1

Sensar1:
ADCIN 0, dato ;leer el canal 0 (A0) y guarde en dato
dato =dato /2 ;el dato dividir para 2
for y =1 to 2
if nivel_Alto=1 then AccionNivelAlto
pause 1
next
if dato >temp1 then Alarma1
goto Sensar1

Alarma1:
high S_1
low ok
goto Desactiva

Desactiva:

262

if Reinicio=1 then ApagaTotalS1
goto Desactiva

ApagaTotalS1:
low On_Off_Sistema_Total
low bomba1
low bomba2
LOW OK
goto finaliza
;-----------------------------------------------------------------------
Temp_vaciado:
temporal =0
high tanque_vacio
low tanque_lleno
low bomba1
low conf1_B1
if On_Off_B2 =1 then ActivaB2
Goto AccionNivelAlto

;-----------------------------------------------------------------------
AccionNivelAlto:
temporal =0
high Tanque_LLeno
high tanque_vacio
low bomba1
low conf1_B1

if On_Off_B2 =1 then ActivaB2
Goto AccionNivelAlto

ActivaB2:
high bomba2
if Confirma_B2 =1 then Activa2_B2
goto ActivaB2

263


Activa2_B2:
pause 100
high Conf2_B2

Sensar2:
ADCIN 1, dato2 ;leer el canal 0 (A0) y guarde en dato
dato2 =dato2 /2 ;el dato dividir para 2
for y =1 to 2
IF NIVEL_ALTO=0 THEN LOW TANQUE_LLENO
if Nivel_Bajo=0 then finaliza
pause 1
next
if dato2 >temp2 then Alarma2
goto Sensar2

Alarma2:
temporal =1
high S_2
low ok
goto Desactiva

;-----------------------------------------------------------------------
Finaliza:
LOW TANQUE_VACIO
low bomba2
low conf2_b2
goto inicio
;-----------------------------------------------------------------------
End



E.2 PROGRAMA DEL PIC 16F870 (Celular)

264


@ device HS_OSC

DEFINE OSC 4
include "modedefs.bas"
text var byte
dat0 VAR BYTE
dat1 var byte
dat2 VAR BYTE
ini:
SEROUT2 portb.1,84,[13]
pause 300
SEROUT2 portb.1,84,["AT+CMGL=0",13]
PAUSE 300

uno:
SERIN2 portb.0,84,[dat0]
IF dat0="O" THEN INI
IF dat0="E" THEN INI
IF dat0!="O" THEN dos
PAUSE 300
dos:
SERIN2 portb.0,84, [wait(", ,"),DEC2 dat1]
IF dat1 =27 then tres
IF dat1 <=26 then SEIS
IF dat1 >=28 then SEIS
PAUSE 300
tres:
Serin2 portb.0,84, [wait("097482141"),SKIP 5,dec2 dat2]
IF dat2 =11 then CUATRO
if dat2 >=13 then seis
if dat2<=10 then seis
IF dat2=12 then cinco
if dat2>=13 then seis

265

if dat2<=10 then seis
PAUSE 300

cuatro:
high portb.3
GOTO seis
PAUSE 300
cinco:
low portb.3
goto seis
pause 300

seis:
serout2 portb.1,84, [13]
PAUSE 300
serout2 portb.1,84, ["AT+CMGD=1",13]
pause 1000
goto ini
END










266

ANEXO F
Base de Datos

F.1 Introduccin

Una base de datos es una coleccin de informacin organizada de forma que un
programa de ordenador pueda seleccionar rpidamente los fragmentos de datos que
necesite. Una base de datos es un sistema de archivos electrnico. Las bases de datos
tradicionales se organizan por campos, registros y archivos. Un campo es una pieza
nica de informacin; un registro es un sistema completo de campos; y un archivo es
una coleccin de registros. Por ejemplo, una gua de telfono es anloga a un
archivo. Contiene una lista de registros, cada uno de los cuales consiste en tres
campos: nombre, direccin, y nmero de telfono.

Un Sistema Gestor de base de datos (SGBD) es un conjunto de programas que
permiten crear y mantener una Base de datos, asegurando su integridad,
confidencialidad y seguridad. Por tanto debe permitir:

Definir una base de datos: especificar tipos, estructuras y restricciones de datos.
Construir la base de datos: guardar los datos en algn medio controlado por el mismo
SGBD.
Manipular la base de datos: realizar consultas, actualizarla, generar informes.
As se trata de un software de propsito general. Ejemplo de SGBD son Oracle y
SQL Server de Microsoft, Mysql( SGBD el cual se usar para el Proyecto de
Tpico).
Algunas de las caractersticas deseables en un Sistema Gestor de base de datos
SGBD son:
Control de la redundancia: La redundancia de datos tiene varios efectos negativos
(duplicar el trabajo al actualizar, desperdicia espacio en disco, puede provocar
inconsistencia de datos) aunque a veces es deseable por cuestiones de rendimiento.

F.2 Anlisis
Se realiz un Anlisis minucioso y profundo de los procesos que se debera tener en
el Sistema y se lleg al Siguiente Modelo Entidad Relacin (MER).

267

F.3 Modelo Entidad-Relacin

268

F.4 Direccin de Datos
Acciones
Registra las posibles acciones que se pueden realizar dentro del Sistema de Tanque elevado
apagado_general
Campo Tipo Nulo Predeterminado Clave Ejemplo
acc_id int(11) No - Primaria 1
apg_descripcion varchar(50) S - - Apagado general, apagado
bomba carga, apagado
bomba descarga
apg_estado varchar(1) S A - A/I
Campo Tipo Nulo Predeterminado Clave Ejemplo
apg_id int(11) No - Primaria 1
apg_descripcion varchar(50) S - - General

269

Guarda los estados de encendido y apagado general, tabla que se actualiza constantemente dependiendo de los eventos de la parte
electrnica o requerimientos de dispositivos mviles
Dispositivo
Registra los datos de los dispositivos que se usurarn en el Sistema
Campo Tipo Nulo Predeterminado Clave Ejemplo
dis_id int(11) No - Primaria 1
dis_descripcion varchar(50) No - - Tanque
dis_estado varchar(11) No A - A/I
logs
Registra quien realiz determinada accin, permitiendo llevar un control de todos los sucesos dentro del Sistema.
Campo Tipo Nulo Predeterminado Clave Ejemplo
logs_id int(11) No - Primaria 1
logs_user_id int(11) S NULL Fornea 1
apg_estado varchar(1) S A - A/I

270

logs_accion_id int(11) S NULL Fornea 1
logs_estado varchar(1) S NULL - 1 o 2

registro_mc
Registro del historial de todos los sucesos de los dispositivos en lo referente a los tipo de monitoreo y control ej.: estados de
encendido/apagado, niveles o temperatura
Campo Tipo Nulo Predeterminado Clave Ejemplo
rmc_id int(11) No - Primaria 1
rmc_dis_id int(11) S NULL Fornea 1
rmc_tmc_id int(11) S NULL Fornea 1
rmc_cantidad int(11) S NULL - estados de
temperatura,
niveles de
tanque
rmc_estado_on_off varchar(1) S NULL - 1 o 2

271

rmc_estado_confirmacion varchar(1) S NULL - 1 o 2
temporal
Cumple las mismas funciones de la tabla de registro con la particularidad que esta va a ser accedida por los dispositivos mviles por la
razn que solo va a registrar los datos actuales, es decir cada vez que se cumpla un ciclo de llenado y vaciado esta tabla ser vaciada los
registros teniendo as solo temporalmente los registros actuales dentro del Sistema.
Campo Tipo Nulo Predeterminado Clave Ejemplo
tmp_id int(11) No - Primaria 1
tmp_dis_id int(11) S NULL Fornea 1
tmp_tmc_id int(11) S NULL Fornea 1
tmp_cantidad int(11) S NULL - estados de
temperatura,
niveles de
tanque
tmp_estado_on_off varchar(1) S NULL - 1 o 2
tmp_estado_confirmacion varchar(1) S NULL - 1 o 2


272

Tanque
Registra los niveles del tanque elevado de manera eventual
Campo Tipo Nulo Predeterminado Clave Ejemplo
tan_id int(11) No - Primaria 1
tan_dis_id int(11) S NULL Fornea 1
ta_descripcion varchar(50) S NULL - Tanque1
tan_nivel1 varchar(1) S NULL - 1
tan_nivel2 varchar(1) S NULL - 1
tan_nivel3 varchar(1) S NULL - 1
tan_tiempo varchar(50) S NULL - 2
tipo_mc
registra los tipo de monitoreo y control ej.: estado encendido/apagado, temperatura
Campo Tipo Nulo Predeterminado Clave Ejemplo
tmc_id int(11) No - Primaria 1

273

tmc_descripcion varchar(50) No - - Temperatura/Nivel
tmc_estado varchar(1) No A - A

Usuario.-Registro de los usuarios que usarn el sistema
Campo Tipo Nulo Predeterminado Clave Ejemplo
usu_id int(11) No - Primaria 1
usu_nombres varchar(50) S - - Oscar
usu_apellidos varchar(50) S - - Santistevan
usu_direccion varchar(50) S - - Cdla.
Montebello
usu_telefono varchar(10) S - - 096439657
usu_fechaNacimiento date S NULL - 12/03/85
usu_cedula varchar(10) S - - 0924101835
usu_password varchar(50) S - - 123

274

usu_estado var(1) S - A/I

ANEXO G
Diagramas
G.1 Diagramas DFD










Monitoreo
Requerimiento de Autenticacin
A
Monitoreo




Verificacin
de Usuario

Pantalla de
Bienvenida
Verificacin de
Estado:
Bomba Carga
Bomba Descarga
Nivel de Tanque
R
Reporte
Grfico



Chat Cliente
Registro
verificado
Peticin de
monitor
Entrega de
datos
Monitoreo

275



Tcnico




G1.2 Control de Dispositivos







Base de Datos
Peticin de
apagado
Base de Datos
Verificacin
de Usuario
Socket en
estado
escucha

Chat Server
Apagado
manual de
dispositivos
Apagado del sistema
general.
Esperando
conexin
Registro
verificado
Verificacin
de Usuario
Pantalla de
bienvenida
Control del
dispositivo
Verificacin
de estado de
dispositivos
Encendido.
Bomba Carga.
Bomba Descarga.
Apagado General.
Peticin de
estado
Peticin de
control
Registro
verificado
A
Control




Registro
Seleccin de
la accin

276

G.2 Diagramas IPO































Entrada
Ingreso de datos user y
password para validacin
Archivos de
usuarios
Proceso
Autentificacin Usuario
Monitoreo dispositivos
Control dispositivos
Salida
Reporte grfico monitoreo
Encender:
Bomba carga, bomba
descarga.
Apagado general.
Archivo de
dispositivos
Mensaje de
bienvenida a
usuarios

277

G2.1 Diagrama IPO Detallado Monitoreo































Entrada
Monitoriar
Archivos de
dispositivos
Proceso
Verificar estado.
Dsipositivos on/off, temperatura.
Nivel de tanque
Llamar Web Service (WS)
Consultar Dispositos
Manipular XML file
Salida
Reporte grfico de dispositivos:
Nivel del Tanque.
Estado on/off de las bombas.
Alertas de temperatura.

278

G2.2 Diagrama IPO Detallado Control































Entrada
Control
Archivos de
dispositivos
Proceso
Verificar estado.
Dsipositivos
on/off, temperatura.
Nivel de tanque
Llamar Web Service (WS)
Actualizar estados de Dispositos
Salida
Encerder bombas
carga, descarga.
Apagado general

279

G2.3 Diagrama IPO Detallado Chat






























Entrada
Monitorear
Controlar
Proceso
Iniciar semilla de chat.
(Tcnico de Planta)
Inicia cliente de chat.
(Jefe de Planta)
Salida
Apagado manual de
dispositivos.

280

G.3 Diagramas de Jerarqua




Sistema de
Monitoreo y
Control
Monitoreo
Autenticar
Usuario
Dispositivo
Control
Autenticar
Usuario
Encendido de
Bombas
Apagado
General

281

ANEXO H
COSTOS
H.1 Costo materiales elctricos de maqueta y tubera































Materiales de Elctricos de
Maqueta y tubera.

20,00%

Descripcin de Producto. Marca Costo Unit. P. Unit. Cantidad Unidad
Costo
Total
Precio
Total.
Envases de CDs IMATION $0,80 $1,00 2 U $1,60 $2,00
Rieles de hierro GENRICO $2,00 $2,50 1 U $2,00 $2,50
Neplo pequeos GENRICO $0,50 $0,63 2 U $1,00 $1,25
Cinta Teflon GENRICO $0,50 $0,63 1 U $0,50 $0,63
Codo PLASTIGAMA $0,65 $0,81 1 U $0,65 $0,81
Sellante de Tubo GENRICO $2,50 $3,13 1 U $2,50 $3,13
Fungibles (brocas, lijas, etc.) GENRICO $5,50 $6,88 2 U $11,00 $13,75
Canaletas plasticas 2" GENRICO $3,00 $3,75 3 U $9,00 $11,25
Cable UTP categora #5 NOGANET $0,60 $0,75 2 Mts. $1,20 $1,50
Borneras GENRICO $1,00 $1,25 3 U $3,00 $3,75
Sensores de Nivel GENRICO $1,00 $1,25 3 U $3,00 $3,75
Pulsante Marcha-Paro Bombas GENRICO $1,00 $1,25 2 U $2,00 $2,50


Subtotal.
1 $37,45 $46,81




282

H.2 Costos componentes electrnicos
Materiales electrnicos

20,00%

Descripcin de Producto. Marca C.U: P. Unit. Cantidad Unidad
Costo
Total
Precio
Total.
PIC 18F4550 MICROCHIP $15,00 $18,75 1 U $15,00 $18,75
PIC 16F877A MICROCHIP $10,00 $12,50 1 U $10,00 $12,50
PIC 16F870 MICROCHIP $8,00 $10,00 1 U $8,00 $10,00
HT-12D HOLTEK $6,00 $7,50 3 U $18,00 $22,50
HT-12E HOLTEK $6,00 $7,50 3 U $18,00 $22,50
TWS-434 N/A $7,00 $8,75 3 U $21,00 $26,25
RWS-434 N/A $7,00 $8,75 3 U $21,00 $26,25
LM-35 NATIONAL SEMICONDUCTOR $4,50 $5,63 2 U $9,00 $11,25
LM-358 NATIONAL SEMICONDUCTOR $1,25 $1,56 2 U $2,50 $3,13
74LS73 TEXAS INSTRUMENTS $0,50 $0,63 1 U $0,50 $0,63
LM-555 NATIONAL SEMICONDUCTOR $0,65 $0,81 1 U $0,65 $0,81
74LS32 FAIRCHILD SEMICONDUCTOR $0,50 $0,63 1 U $0,50 $0,63
74LS86 FAIRCHILD SEMICONDUCTOR $0,50 $0,63 1 U $0,50 $0,63
Relay 5 voltios (2 comues-4
contactos) GENRICO $2,00 $2,50 3 U $6,00 $7,50
Conector USB GENRICO $1,20 $1,50 1 U $1,20 $1,50
Capacitor 22pf GENRICO $0,15 $0,19 2 U $0,30 $0,38
Cristal 4Mhz GENRICO $0,70 $0,88 1 U $0,70 $0,88
Resistencias GENRICO $0,05 $0,06 25 U $1,25 $1,56
Celular 3220 NOKIA $51,50 $64,38 1 U $51,50 $64,38
Diodos led GENRICO $0,10 $0,13 10 U $1,00 $1,25
LM-317 NATIONAL SEMICONDUCTOR $0,65 $0,81 2 U $1,30 $1,63
Potencimetro 5k GENRICO $0,40 $0,50 2 U $0,80 $1,00
Puente diodos N/A $0,80 $1,00 2 U $1,60 $2,00

283

Transistor potencia TIP-42 NATIONAL SEMICONDUCTOR $0,85 $1,06 1 U $0,85 $1,06
Transistor 2N3906 NATIONAL SEMICONDUCTOR $0,26 $0,33 1 U $0,26 $0,33
Motores Elctricos (Bombas) GENRICO $3,00 $3,75 3 U $9,00 $11,25
Cristal 12Mhz GENRICO $0,70 $0,88 1 U $0,70 $0,88
Tarjetas Impresas PC-USB N/A $15,00 $18,75 1 U $15,00 $18,75
Tarjetas Impresas Sist. A
controlar N/A $30,00 $37,50 1 u $30,00 $37,50
Varios (Utileras) N/A $30,00 $37,50 1 U $30,00 $37,50

Subtotal.
2 $276,11 $345,14






















284

H.3 Costo Total
Mano de obra 20,00%
Descripcin de Producto. Marca C.U P. Unit. Cantidad Unidad Costo
Total
Precio
Total.
Desarrollo de Ingeniera AUTORES $ 5,00 6,25 300 Horas $1.500,00 $1.875,00
Desarrollo de Maqueta AUTORES $ 2,00 2,50 20 Horas $40,00 $50,00
Subtotal. 3 $1.540,00 $1.925,00
Costos indirectos 20,00%
Descripcin de Producto. Marca C.U P. Unit. Cantidad Unidad Costo
Total
Precio
Total.
Documentacin del proyecto N/A 25,00 31,25 3 $75,00 $93,75
Movilizacin de los autores N/A 3,00 3,75 100 $300,00 $375,00
Alimentacin N/A 2,00 2,50 100 $200,00 $250,00
Varios N/A 1,00 1,25 50 $50,00 $62,50
Subtotal. 4 $625,00 $781,25
CONSOLIDADO
Materiales de Elctricos de
Maqueta y tubera.
$37,45 $46,81
Materiales electrnicos $276,11 $345,14
Mano de obra $1.540,00 $1.925,00
Costos indirectos $625,00 $781,25
Precios no incluyen IVA TOTAL PROYECTO $2478,56 $2098,20

LICENCIA VISUAL STUDIO PROFESIONAL V 6.0 $200,00

LICENCIA MEASUREMENT STUDIO 8.5 $1.250,00

COSTO DEL PROYECTO PARA SU COMERCIALIZACIN $4.548,20

285

5.1 GLOSARIO.
HARDWARE
ASCII: es un cdigo de caracteres basado en el alfabeto latino tal como se usa en
ingls moderno y en otras lenguas occidentales
BIOS: El sistema Bsico de entrada/salida, es un software muy bsico instalado en la
placa base que permite que sta cumpla su cometido. Proporciona la comunicacin
de bajo nivel, el funcionamiento y configuracin del hardware del sistema que, como
mnimo, maneja el teclado y proporciona salida bsica (emitiendo pitidos
normalizados por el altavoz de la computadora si se producen fallos) durante el
arranque.
EEPROM: Es un tipo de memoria ROM que puede ser programado, borrado y
reprogramado elctricamente, a diferencia de la EPROM que ha de borrarse
mediante rayos ultravioletas. Aunque una EEPROM puede ser leda un nmero
ilimitado de veces, slo puede ser borrada y reprogramada entre 100.000 y 1.000.000
de veces.
HDX: significa que el mtodo o protocolo de envo de informacin es bidireccional
pero no simultneo.
ISO: Organizacin Internacional para la Estandarizacin (ISO) investig modelos de
conexin como la red de Digital Equipment Corporation (DECnet), la Arquitectura
de Sistemas de Red (SNA) y TCP/IP a fin de encontrar un conjunto de reglas
aplicables de forma general a todas las redes. Con base en esta investigacin, la ISO
desarroll un modelo de red que ayuda a los fabricantes a crear redes que sean
compatibles con otras redes. LF
MHz: Es una unidad de medida de frecuencia. Recordando que frecuencia es una
medida para indicar el nmero de repeticiones de cualquier fenmeno o suceso
peridico en una unidad de tiempo
MS-DOS: Sistema operativo de disco de Microsoft. Es un sistema operativo
comercializado por Microsoft perteneciente a la familia DOS. Fue un sistema
operativo para el IBM PC que alcanz gran difusin

286

PC: Tambin denominada como ordenador o computador, es una mquina
electrnica que recibe y procesa datos para convertirlos en informacin til. Una
computadora es una coleccin de circuitos integrados y otros componentes
relacionados que puede ejecutar con exactitud, sorprendente rapidez, y de acuerdo a
lo indicado por un usuario o automticamente por otro programa, una mltiple
variedad de secuencias o rutinas de instrucciones que son ordenadas, organizadas y
sistematizadas en funcin a una amplia gama de aplicaciones prcticas y
precisamente determinadas
PIC: El nombre completo es PICmicro, aunque generalmente se utiliza como
Peripheral Interface Controller (Controlador de Interfaz Perifrico)
RAM: La memoria de acceso aleatorio, o memoria de acceso, se compone de uno o
ms chips y se utiliza como memoria de trabajo para programas y datos. Es un tipo
de memoria temporal que pierde sus datos cuando se queda sin energa (por ejemplo,
al apagar la computadora), por lo cual es una memoria voltil
ROM: Es una memoria de semiconductor destinada a ser leda y no destructible, es
decir, que no se puede escribir sobre ella y que conserva intacta la informacin
almacenada, incluso en el caso de que se interrumpa la corriente (memoria no
voltil). La ROM suele almacenar la configuracin del sistema o el programa de
arranque de la computadora.
RS-232 : Es una interfaz que designa una norma para el intercambio serie de datos
binarios entre un DTE (Equipo terminal de datos) y un DCE (Data Communication
Equipment, Equipo de Comunicacin de datos), aunque existen otras situaciones en
las que tambin se utiliza la interfaz RS-232.
SMS: Son las inciales de Short Messages Standard o lo que es lo mismo: sistema de
mensajes cortos sin hilos. Se trata de una tecnologa europea que apareci en 1991 en
nuestro continente, donde tambin naci la tecnologa digital sin hilos que fue
bautizada GSM, Global Standard for Mobiles o patrn global para mviles
USB: Conductor Universal en Serie es un puerto que sirve para conectar perifricos a
una computadora, El estndar incluye la transmisin de energa elctrica al
dispositivo conectado. Algunos dispositivos requieren una potencia mnima, as que
se pueden conectar varios sin necesitar fuentes de alimentacin extra

287

Wi-Fi: Es un sistema de envo de datos sobre redes computacionales que utiliza
ondas de radio en lugar de cables.
WLAN: Es un sistema de comunicacin de datos inalmbrico flexible, muy utilizado
como alternativa a las redes LAN cableadas o como extensin de stas. Utiliza
tecnologa de radiofrecuencia que permite mayor movilidad a los usuarios al
minimizar las conexiones cableadas.

FIRMWARE
ADO: Conjunto de objetos COM para el acceso a recursos de datos. Prev una capa
entre los lenguajes de programacin y las base de datos OLE, lo que permite a los
programadores escribir programas que accedan a datos, sin saber cmo est
implementada la base de datos (slo se debe tener cuidado en la conexin a la
misma). Tampoco es necesario conocer sobre SQL cuando se usa ADO, aunque
tambin pueden utilizarse comandos SQL, pero esto creara en el programa una
dependencia del tipo de base de datos usado.
DAQ: La Adquisicin de Datos es la toma de muestras del mundo real para generar
datos que pueden ser manipulados por un ordenador. Consiste en tomar un conjunto
de variables fsicas, convertirlas en tensiones elctricas y digitalizarlas de manera
que se puedan procesar en una computadora o PAC. Se requiere una etapa de
acondicionamiento que adecua la seal a niveles compatibles con el elemento que
hace la transformacin a seal digital. El elemento que hace dicha transformacin es
el mdulo o tarjeta de Adquisicin de Datos (DAQ).
HTML: Es el lenguaje de marcado predominante para la construccin de pginas
web. Es usado para describir la estructura y el contenido en forma de texto, as como
para complementar el texto con objetos tales como imgenes. HTML se escribe en
forma de "etiquetas", rodeadas por corchetes angulares (<,>). HTML tambin puede
describir, hasta un cierto punto, la apariencia de un documento, y puede incluir un
script (por ejemplo J avascript), el cual puede afectar el comportamiento de
navegadores web y otros procesadores de HTML

288

IDE: Controla los dispositivos de almacenamiento masivo de datos, como los discos
duros y ATAPI (Advanced Technology Attachment Packet Interface) y adems
aade dispositivos como las unidades CD-ROM.
ODBC: Si escribimos una aplicacin para acceder a las tablas de una DB de Access,
qu ocurrir si despus queremos que la misma aplicacin, y sin reescribir nada,
utilice tablas de SQL Server u otra DB cualquiera? La respuesta es sencilla: no
funcionar. Nuestra aplicacin, diseada para un motor concreto, no sabr dialogar
con el otro. Evidentemente, si todas las DB funcionaran igual, no tendramos este
problema.... aunque eso no es probable que ocurra nunca.

SOFTWARE
APIs: es el conjunto de funciones y procedimientos (o mtodos si se refiere a
programacin orientada a objetos) que ofrece cierta biblioteca para ser utilizado por
otro software como una capa de abstraccin.
J2ME: La plataforma J 2ME es una familia de especificaciones que definen varias
versiones minimizadas de la plataforma J ava 2; estas versiones minimizadas pueden
ser usadas para programar en dispositivos electrnicos; desde telfonos celulares, en
PDAs, hasta en tarjetas inteligentes, etc. Estos dispositivos presentan en comn que
no disponen de abundante memoria ni mucha potencia en el procesamiento, ni
tampoco necesitan de todo el soporte que brinda el J 2SE, (la plataforma estndar de
J ava usada en sistemas de escritorio y servidor)
JSP: Son las inciales de J ava Server Pages, en espaol significa Pginas de Servidor
J ava. En s es una tecnologa orientada a crear pginas web con programacin en
J ava
KVM: Es una solucin para implementar virtualizacin completa con Linux sobre
hardware x86. Est formada por un mdulo del ncleo (con el nombre kvm.ko) y
herramientas en el espacio de usuario, siendo en su totalidad software libre. El
componente KVM para el ncleo est incluido en Linux desde la versin 2.6.20.
KVM permite ejecutar mquinas virtuales utilizando imgenes de disco que
contienen sistemas operativos sin modificar.

289

PDA: Es un computador de mano originalmente diseado como agenda electrnica
(calendario, lista de contactos, bloc de notas y recordatorios) con un sistema de
reconocimiento de escritura. Hoy da se puede usar como una computadora
domstica (ver pelculas, crear documentos, juegos, correo electrnico, navegar por
Internet, reproducir archivos de audio, etc.).
VMD: Es una interfaz grfica dentro de NetBeans Mobility que le permite disear
aplicaciones mviles usando arrastrar y soltar los componentes. El VMD le permite
definir la aplicacin de flujo y el diseo de su interfaz grfica utilizando los
componentes suministrados por el IDE, o componentes que usted mismo diseo, El
VMD contiene muchas estndar de interfaz de usuario (UI) componentes que puede
utilizar para crear aplicaciones como listas, Alertas, formas e imgenes
UML: Es el lenguaje de modelado de sistemas de software ms conocido y utilizado
en la actualidad; est respaldado por el OMG (Object Management Group). Es un
lenguaje grfico para visualizar, especificar, construir y documentar un sistema de
software. UML ofrece un estndar para describir un "plano" del sistema (modelo),
incluyendo aspectos conceptuales tales como procesos de negocios y funciones del
sistema, y aspectos concretos como expresiones de lenguajes de programacin,
esquemas de bases de datos y componentes de software reutilizables.
WEP: Es el sistema de cifrado incluido en el estndar IEEE 802.11 como protocolo
para redes Wireless que permite cifrar la informacin que se transmite. Proporciona
un cifrado a nivel 2. Est basado en el algoritmo de cifrado RC4, y utiliza claves de
64 bits (40 bits ms 24 bits del vector de iniciacin IV) o de 128 bits (104 bits ms
24 bits del IV). Los mensajes de difusin de las redes inalmbricas se transmiten por
ondas de radio, lo que los hace ms susceptibles, frente a las redes cableadas, de ser
captados con relativa facilidad. Presentado en 1999, el sistema WEP fue pensado
para proporcionar una confidencialidad comparable a la de una red tradicional
cableada.
XML: Es un metalenguaje extensible de etiquetas desarrollado por el World Wide
Web Consortium (W3C). Es una simplificacin y adaptacin del SGML y permite
definir la gramtica de lenguajes especficos (de la misma manera que HTML es a su
vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un lenguaje
en particular, sino una manera de definir lenguajes para diferentes necesidades.

290

5.2 VOCABULARIO
HARDWARE
ASCII (American Standard Code for Information Interchange,)
AWG (American Wire Gauge)
BIOS (Basic Input Output System
BSAP (Bristol Synchronous/Asynchronous Protocol
BSC (Binary Synchronous Communications)
CTI (Computer Telephony Integrations)
CTS (Clear To Send)
DDCMP (Digital Data Communication Message Protocol
DSR (Data Set Ready)
DTR (Data Terminal Ready)
ECP (Extended Capability Port)
EEPROM (Electrically Erasable Programmable Read Only Memory
EPP (Enhanced Parallel Port)
HART (Highway Addressable Remote Transducer)
HDLC (High-Level Data Link Control Protocol)
HDX (Half Duplex)
HF (Higth Frecuency)
HNP (Host Negotiation Protocol)
HSSI (High Speed Serial Interface)
HT12D (Decodificador asociado Holtek)
IBM (International Business Machines)
ISO/OSI (International Standards Organization/ Open Systems Interconnection)
LF (Low Frecuency)
MF (Medium Frecuencia)
MHz (Mega Hertz)
MS-DOS (System Operator Dir Microsoft)
MTU (Master Terminal Unit)
PC (Personal Computer)
PIC (Peripheral Interface Controller)
PS/2 (Port Serial Bidireccional)
RAM (Random Access Memory)

291

ROM (Read Only Memory)
RS-232 (Modo de comunicacin va serial)
RTS (Request to Send)
RTU (Unidades remotas de transmisin)
SMS (Small Message)
TE (Transmission Enable)
UART (Transmisor-Receptor-Asncrono Universal
UHCI (Universal Host Controller Interface)
USB (Universal Series Bus)
VT (Valid Transmission )
Wi-Fi (Wireless Fidelity)
WLAN (Wireless Local Area Network)
FIRMWARE
ADO (Active Data Object)
DAQ (Data Adquision Quality)
HTML (HyperText Markup Language)
IDE (Integrated Device Electronics)
ODBC (Open Database Connectivity)

SOFTWARE
APIs (Application Program Interface)
CLDC (Connected Limited Device Configuration)
J 2ME (J ava 2 Edicin micro)
J SP (J ava Server Page)
KVM (Kernel-based Virtual Machine)
MIDP (Mobile Information Device Profile)
PIM (Protocol Independent Multicast)
PDA (Personal Digital Assintant),
VMD (Visual Designer Mobile)
UML (Unified Modeling Language)
WEP (Wired Equivalent Privacy)
WSDL (Web Services Description Language)
XML (Extensible Markup Language)

Vous aimerez peut-être aussi