Control de la iluminación de una vivienda mediante la red eléctrica

Anuncio
Control de la iluminación de una vivienda mediante la
red eléctrica y un PC.
AUTOR:
José Luis Pelegrí Santamaría
DIRECTOR: J.A. Barrado
FECHA:
Abril / 2003.
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
INDICE
ÍNDICE
CONTENIDOS ........................................................................................................................................................ 2
FIGURAS .................................................................................................................................................................. 7
TABLAS .................................................................................................................................................................... 9
CÓDIGOS FUENTE............................................................................................................................................ 10
FÓRMULAS .......................................................................................................................................................... 10
ÍNDICE DE CONTENIDOS
1 MEMORIA DESCRIPTIVA..................................................... 11
1.1 OBJETIVO DEL PROYECTO. ............................................................... 12
1.2 TITULAR. .................................................................................................. 12
1.3 INTRODUCCIÓN A LAS COMUNICACIONES ENTRE DISPOSITIVOS. 13
1.3.1
Características de la línea de transmisión......................................... 13
1.3.1.1 Introducción. ................................................................................... 13
1.3.1.2 El ruido en las líneas de transmisión. .............................................. 14
1.3.1.3 La distorsión en las líneas de transmisión. ...................................... 16
1.3.1.4 Método de Línea Asimétrica. .......................................................... 19
1.3.1.5 Método de Línea Diferencial. .......................................................... 19
1.3.1.6 Diferencias entre una línea Diferencial y una Asimétrica............... 20
1.3.1.7 Conclusiones. .................................................................................. 21
1.3.1.8 Definiciones. ................................................................................... 21
1.3.2
Comunicación entre equipos electrónicos ......................................... 21
1.3.2.1 Comunicación en paralelo. .............................................................. 21
1.3.2.1.1 Bus paralelo SPP, EPP, ECP................................................... 21
1.3.2.1.2 Bus SCSI (Small Computer System Interface).......................... 23
1.3.2.2 Comunicación en serie. ................................................................... 24
1.3.2.2.1 EIA RS-232. .............................................................................. 24
1.3.2.2.2 Descripción de las señales. ...................................................... 25
1.3.2.2.3 TIA/EIA RS-422B. .................................................................... 27
1.3.2.2.4 EIA RS-485. .............................................................................. 29
1.3.2.2.5 Comparación entre los “drivers” y receptores de EIA-485 y EIA-42.. 30
1.3.2.2.6 Lazo de corriente 4-20 mA. ...................................................... 32
1.3.2.2.7 HART. ....................................................................................... 33
1.3.2.2.8 IEE 1451.2................................................................................ 34
1.3.2.2.9 INTERBUS. .............................................................................. 36
1.3.2.2.10 V/F – F/V.................................................................................. 36
1.3.2.2.11 Fibra Óptica Versátil. .............................................................. 37
1.3.2.2.12 CAN (Controller Area Network ). ............................................. 39
1.3.2.2.13 J1850 SAE (Society of Automotive Engineers recommended practice).. 41
1.3.2.2.14 Power Line Modem. ................................................................. 42
1.3.2.2.15 GPIB (General Purpose Instrumentation Bus). ....................... 44
1.3.2.2.16 LonWorks ................................................................................. 44
1.3.2.2.17 Instabus EIB (European Installation Bus). .............................. 44
-2-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
INDICE
1.3.2.2.18 One Wire. ................................................................................. 45
1.3.2.2.19 USB (Universal Serial Bus)...................................................... 47
1.3.2.2.20 IEEE1394 Fire Wire................................................................. 48
1.3.2.2.21 IrDA (Infrared Data Association). ........................................... 49
1.3.2.2.22 Wireless RF 434 MHz. ............................................................. 50
1.4 ANTECEDENTES. EL PROTOCOLO X-10 ......................................... 50
1.4.1
Líneas de Distribución de Energía Eléctrica..................................... 50
1.4.2
Tecnología X-10.................................................................................. 51
1.4.3
Funcionamiento del X-10................................................................... 51
1.5 POSIBLES SOLUCIONES Y SOLUCIÓN ADOPTADA. .................... 53
1.5.1
Entorno................................................................................................ 53
1.5.2
Lenguaje de programación................................................................. 54
1.5.3
Interface PC - dispositivos.................................................................. 54
1.5.4
Suministro........................................................................................... 55
1.5.5
Comunicaciones.................................................................................. 55
1.5.6
Procesamiento de la información....................................................... 56
1.5.7
Control de los dispositivos. ................................................................. 57
1.6 DESCRIPCIÓN GENERAL. .................................................................... 57
1.6.1
Esquema global................................................................................... 57
1.6.2
Programa............................................................................................. 58
1.6.2.1 Principal. ......................................................................................... 58
1.6.2.2 Adquisición de datos. ...................................................................... 60
1.6.2.3 Presentación de información. .......................................................... 62
1.6.2.4 Nuevo elemento............................................................................... 63
1.6.2.5 Transmisión de datos a Internet. ..................................................... 65
1.6.2.6 Almacenamiento de datos. .............................................................. 67
1.6.2.7 Ficheros de apoyo............................................................................ 68
1.6.3
Dispositivos.......................................................................................... 70
1.6.3.1 Problema del módem de eléctrica. .................................................. 70
1.6.3.1.1 Descripción. ............................................................................. 70
1.6.3.1.2 Solución. ................................................................................... 73
1.6.3.2 Circuito Maestro.............................................................................. 76
1.6.3.2.1 Estructura................................................................................. 76
1.6.3.2.2 Descripción de funcionamiento................................................ 77
1.6.3.2.3 Descripción de elementos......................................................... 82
1.6.3.3 Circuito Satélite, 1 salida. ............................................................... 82
1.6.3.3.1 Estructura................................................................................. 82
1.6.3.3.2 Descripción de funcionamiento................................................ 83
1.6.3.3.3 Descripción de elementos......................................................... 86
1.6.3.4 Circuito Satélite, 2 salidas. .............................................................. 86
1.6.3.4.1 Estructura................................................................................. 86
1.6.3.5 Trama de mensajes. ......................................................................... 87
1.6.3.5.1 Determinación del tipo e ID de un dispositivo......................... 88
1.6.3.5.2 Instrucciones del PC. ............................................................... 89
1.6.3.5.3 Status del dispositivo................................................................ 89
1.6.3.5.4 Cálculo de BCC (Block Check Calculation) ............................ 90
1.6.3.5.5 Secuencia de comunicación entre PC y µcontrolador. ............ 91
-3-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
INDICE
1.7 PRESCRIPCIONES TÉCNICAS. ........................................................... 93
1.7.1
Entorno................................................................................................ 93
1.7.2
Interface. ............................................................................................. 93
1.7.3
Suministro........................................................................................... 95
1.7.4
Comunicaciones.................................................................................. 95
1.7.5
µcontrolador........................................................................................ 96
1.7.6
Actuador.............................................................................................. 97
1.7.7
Sensor. ................................................................................................. 98
1.8 PUESTA EN MARCHA Y FUNCIONAMIENTO. ............................... 98
1.8.1
Mediciones eléctricas.......................................................................... 98
1.8.2
Otras mediciones................................................................................. 99
1.9 RESUMEN DEL PRESUPUESTO. ......................................................... 99
2 MEMORIA DE CÁLCULO .....................................................100
2.1 SUMINISTRO NECESARIO. ................................................................ 101
2.1.1
Aportado por el puerto serie del PC................................................. 101
2.1.2
Aportado por la red eléctrica............................................................ 101
2.2 CÁLCULO DE ELEMENTOS ELECTRÓNICOS. ............................ 102
2.2.1
Alimentación..................................................................................... 102
2.2.2
Interface. ........................................................................................... 103
2.2.3
Comunicación................................................................................... 104
2.2.4
Sensor. ............................................................................................... 106
2.2.5
Actuador............................................................................................ 107
2.2.6
Grabación.......................................................................................... 108
2.3 CÁLCULOS EN EL PROGRAMA ....................................................... 109
2.4 NÚMERO DE DISPOSITIVOS CONECTABLES .............................. 110
3 PLANOS...................................................................................112
3.1
3.2
3.3
3.4
3.5
3.6
ESQUEMA ELÉCTRONICO DE CIRCUITO MÁSTER .................
ESQUEMA ELECTRÓNICO DE CIRCUITO SATELITE 1 SALIDA.
ESQUEMA ELECTRÓNICO DE CIRCUITO SATELITE 2 SALIDAS
CROQUIS PCB DE CIRCUITO MÁSTER ........................................
CROQUIS PCB DE CIRCUITO SATÉLITE 1 SALIDA ..................
CROQUIS PCB DE CIRCUITO SATELITE 2 SALIDAS ................
113
114
115
116
117
118
4 PRESUPUESTO.......................................................................119
4.1
4.2
4.3
4.4
MEDICIONES. ........................................................................................ 120
CUADRO DE PRECIOS. ....................................................................... 135
APLICACIÓN DE PRECIOS. ............................................................... 147
RESUMEN DEL PRESUPUESTO. ....................................................... 160
5 PLIEGO DE CONDICIONES..................................................161
5.1 PLIEGO DE CONDICIONES GENERALES. ..................................... 162
5.1.1
Condiciones generales. ..................................................................... 162
5.1.1.1 Reglamentos y normas. ................................................................. 162
5.1.1.2 Materiales. ..................................................................................... 162
5.1.1.3 Ejecución de las obras. .................................................................. 163
5.1.1.3.1 Comienzo................................................................................ 163
5.1.1.3.2 Plazo de ejecución.................................................................. 163
5.1.1.3.3 Libro de órdenes..................................................................... 163
5.1.1.4 Interpretación y desarrollo del proyecto........................................ 164
5.1.1.5 Obras complementarias. ................................................................ 164
5.1.1.6 Modificaciones. ............................................................................. 164
5.1.1.7 Obra defectuosa. ............................................................................ 165
-4-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
INDICE
5.1.1.8 Medios auxiliares. ......................................................................... 165
5.1.1.9 Conservación de las obras. ............................................................ 165
5.1.1.10 Recepción de las obras. ............................................................... 166
5.1.1.10.1 Recepción provisional. ........................................................... 166
5.1.1.10.2 Plazo de garantía. .................................................................. 166
5.1.1.10.3 Recepción definitiva. .............................................................. 166
5.1.1.11 Contratación de la empresa. ........................................................ 166
5.1.1.11.1 Modo de contratación. ........................................................... 166
5.1.1.11.2 Presentación........................................................................... 167
5.1.1.11.3 Selección................................................................................. 167
5.1.1.12 Fianza. ......................................................................................... 167
5.1.2
Condiciones económicas................................................................... 167
5.1.2.1 Abono de la obra. .......................................................................... 167
5.1.2.2 Precios. .......................................................................................... 168
5.1.2.3 Revisión de precios. ...................................................................... 168
5.1.2.4 Penalizaciones. .............................................................................. 168
5.1.2.5 Contrato. ........................................................................................ 168
5.1.2.6 Responsabilidades. ........................................................................ 169
5.1.2.7 Rescisión del contrato. .................................................................. 169
5.1.2.7.1 Causas de rescisión. ............................................................... 169
5.1.2.8 Liquidación en caso de rescisión del contrato............................... 170
5.1.3
Condiciones facultativas................................................................... 171
5.1.3.1 Normas a seguir............................................................................. 171
5.1.3.2 Personal. ........................................................................................ 171
5.1.3.3 Reconocimiento y ensayos previos. .............................................. 172
5.1.3.4 Ensayos.......................................................................................... 172
5.1.3.5 Aparellaje. ..................................................................................... 173
5.1.3.6 Varios. ........................................................................................... 174
5.2 PLIEGO DE CONDICIONES TÉCNICAS. ......................................... 175
5.2.1
Generalidades.................................................................................... 175
5.2.1.1 Resistencias. .................................................................................. 175
5.2.1.2 Inductores. ..................................................................................... 176
5.2.1.3 Condensadores. ............................................................................. 176
5.2.1.4 Placas de circuito impreso. ............................................................ 177
5.2.1.5 Soldadura....................................................................................... 177
5.2.1.5.1 Reflujo. ................................................................................... 177
5.2.1.5.2 Ondas. .................................................................................... 177
5.2.1.5.3 Soldadura manual. ................................................................. 178
5.2.1.6 Reglamento Electrotécnico de Baja Tensión. ............................... 178
5.2.1.7 Especificaciones mecánicas .......................................................... 178
5.2.2
Entorno.............................................................................................. 179
5.2.3
Interface. ........................................................................................... 179
5.2.4
Suministro......................................................................................... 179
5.2.5
Comunicaciones................................................................................ 180
5.2.6
µcontrolador...................................................................................... 180
5.2.7
Actuador............................................................................................ 180
5.2.8
Sensor. ............................................................................................... 180
-5-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
INDICE
6 ANEXOS ..................................................................................182
6.1 CÓDIGO FUENTE DEL PROGRAMA. .............................................. 183
6.1.1
MDIRaiz.frm ..................................................................................... 183
6.1.2
Frm_AdquisicionDatos.frm.............................................................. 189
6.1.3
Frm_Estado.frm................................................................................ 199
6.1.4
Frm_Vida.frm ................................................................................... 212
6.1.5
Frm_Electrodomesticos.frm ............................................................. 216
6.1.6
Frm_Catalogo.frm ............................................................................ 228
6.1.7
Frm_Programador.frm ..................................................................... 236
6.1.8
Frm_Tiempo.frm............................................................................... 245
6.1.9
Frm_Consumo.frm ........................................................................... 248
6.1.10 Frm_Grafica.frm .............................................................................. 251
6.1.11 Frm_ConfigFTP.frm ........................................................................ 256
6.1.12 Frm_Internet.frm.............................................................................. 258
6.1.13 Frm_ConfigUsuario.frm .................................................................. 263
6.1.14 Frm_Desbloquear.frm ...................................................................... 268
6.1.15 Frm_Adquirir_Mapa.frm ................................................................. 271
6.1.16 Frm_Config_Mapa.frm .................................................................... 274
6.1.17 Frm_Mostrar_Mapa.frm .................................................................. 277
6.1.18 Frm_Acerca.frm ............................................................................... 282
6.1.19 Frm_Ayuda.frm ................................................................................ 287
6.1.20 Variables............................................................................................ 287
6.1.21 AyudaHTML.bas............................................................................... 288
6.1.22 Funciones.bas ................................................................................... 289
6.2 CÓDIGO DE PÁGINAS EN ASP. ......................................................... 314
6.2.1
Estilo.css............................................................................................ 314
6.2.2
Index.html ......................................................................................... 315
6.2.3
Adovbs.inc ......................................................................................... 316
6.2.4
Login.asp........................................................................................... 321
6.2.5
Iluminacion.asp ................................................................................ 324
6.2.6
Cambio.asp........................................................................................ 328
6.2.7
Electrodomesticos.asp....................................................................... 330
6.2.8
Elecambio.asp ................................................................................... 333
6.3 MANUAL DE USUARIO DEL PROGRAMA. .................................... 335
6.3.1
Introducción...................................................................................... 335
6.3.2
Primeros pasos. ................................................................................. 335
6.3.2.1 Conectar dispositivos. ................................................................... 336
6.3.2.2 Instalar aplicación. ........................................................................ 336
6.3.2.3 Iniciar aplicación. .......................................................................... 338
6.3.2.4 Adquisición de datos. .................................................................... 340
6.3.2.5 Antes de añadir dispositivos.......................................................... 345
6.3.3
Iluminación....................................................................................... 346
6.3.3.1 Nuevo elemento............................................................................. 347
6.3.3.2 Cambiar tipo de luminaria. ............................................................ 351
6.3.3.3 Cambiar estado. ............................................................................. 355
6.3.3.4 Programar. ..................................................................................... 356
6.3.3.5 Asignar punto. ............................................................................... 357
6.3.3.6 Consumo & tiempo. ...................................................................... 359
6.3.3.7 Borrar registro. .............................................................................. 362
6.3.3.8 Horas de vida................................................................................. 363
-6-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
INDICE
6.3.4
Electrodomésticos. ............................................................................ 363
6.3.4.1 Nuevo elemento............................................................................. 365
6.3.4.2 Cambiar estado. ............................................................................. 367
6.3.4.3 Programar. ..................................................................................... 368
6.3.4.4 Asignar punto. ............................................................................... 369
6.3.4.5 Consumo & tiempo. ...................................................................... 370
6.3.4.6 Modificar. ...................................................................................... 374
6.3.4.7 Borrar registro. .............................................................................. 374
6.3.5
Internet.............................................................................................. 375
6.3.5.1 Datos del servidor.......................................................................... 375
6.3.5.2 Iniciar sesión. ................................................................................ 376
6.3.5.3 Página de control. .......................................................................... 377
6.3.5.3.1 Identificación ......................................................................... 377
6.3.5.3.2 Control de Iluminación y Electrodomésticos. ........................ 377
6.3.6
Usuarios. ........................................................................................... 378
6.3.6.1 Acceder al menú de usuario. ......................................................... 378
6.3.6.2 Ver usuarios................................................................................... 379
6.3.6.3 Crear usuario. ................................................................................ 379
6.3.6.4 Modificar usuario. ......................................................................... 380
6.3.6.5 Eliminar usuario. ........................................................................... 381
6.3.6.6 Bloquear y desbloquear aplicación. .............................................. 382
6.3.7
Acerca de… ....................................................................................... 383
6.3.7.1 Acerca de la aplicación. ................................................................ 383
6.3.7.2 Acerca del autor. ........................................................................... 384
6.3.7.3 Contacto. ....................................................................................... 384
ÍNDICE DE FIGURAS
Figura 1(a). Línea de transmisión de señal asimétrica................................................................................................ 14
Figura 1(b). Línea de transmisión de señal diferencial............................................................................................... 14
Figura 2. Fuente de ruido externas................................................................................................................................. 15
Figura 3. Fuentes de ruido internas................................................................................................................................ 15
Figura 4. Efecto de la distorsión..................................................................................................................................... 16
Figura 5. Respuesta de la señal en el receptor.............................................................................................................. 17
Figura 6. Distorsión de la señal debida al ciclo de servicio....................................................................................... 18
Figura 7. Análisis del nivel de distorsión...................................................................................................................... 18
Figura 8. Método asimétrico. .......................................................................................................................................... 19
Figura 9. Método diferencial. Cruce de señales........................................................................................................... 20
Figura 10. Medida de la impedancia en una línea Asimétrica y una diferencial. .................................................. 20
Figura 11. Circuito típico de un puerto bidireccional paralelo y conexionado...................................................... 22
Figura 12. Conexionado del puerto paralelo Centronics a SubD25 y diagrama de señales................................. 22
Figura 13. Aplicación típica de EIA/TIA-232-E. ........................................................................................................ 24
Figura 14. Esquema de conector serie Sub-D macho 9 pins..................................................................................... 24
Figura 15. Muestra el conexionado del conector Sub-D de 25 pins......................................................................... 25
Figura 16. Dos ejemplos de comunicación RS-232C aislada con optoacoplador simple o completo.......................... 26
Figura 17. Aplicación típica de TIA/EIA -422-B punto a punto y multipunto....................................................... 27
Figura 18. Configuración de una terminación RS-422. .............................................................................................. 27
Figura 19. Longitud de Cable vs. Velocidad de Transmisión................................................................................... 28
Figura 20. Ejemplo de comunicación RS-422 aislada................................................................................................ 29
Figura 21. Aplicación típica de EIA-485. ..................................................................................................................... 29
Figura 22. Ejemplo de comunicación RS-485 aislada................................................................................................ 30
Figura 23. AD693 Transmisor de tensión a lazo de corriente de 4-20 mA............................................................. 32
Figura 24. Ejemplo de un sistema de lazo de corriente punto a punto “simple”, con el receptor aislado. ............................ 32
Figura 25. Ejemplo de un sistema de lazo de corriente punto a punto “full duplex”............................................ 33
-7-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
INDICE
Figura 26. Ejemplo de un sistema de lazo de corriente “half duplex” multiterminal............................................ 33
Figura 27. Transmisión HART de señales digitales.................................................................................................... 33
Figura 28. Diagrama de bloques del transmisor inteligente. ..................................................................................... 34
Figura 29. Aplicación de un transmisor Smart AD421. ............................................................................................. 34
Figura 30. Red de sensores inteligentes “plug and play”........................................................................................... 35
Figura 31. Componentes típicos de un Smart Sensor. ................................................................................................ 35
Figura 32. Smart Sensor con el Microconverter AduC812........................................................................................ 36
Figura 33. Ejemplo de una comunicación V/F a F/V aislada. ................................................................................... 37
Figura 34. Transmisor y Receptor de fibra óptica versátil de Hewlett Packard..................................................... 37
Figura 35. Opciones disponibles.................................................................................................................................... 38
Figura 36. Implementación de una conexión tipo RS-485 con la familia HFBR de HP. ..................................... 38
Figura 37. Trama de mensaje mediante CAN. ............................................................................................................. 39
Figura 38. Implementación del bus CAN. .................................................................................................................... 40
Figura 39. Sistema de aislar un bus CAN con optoacopladores de Hewlett Packard. .......................................... 40
Figura 40. Interconexión J1850...................................................................................................................................... 41
Figura 41. Aplicación domótica utilizando la red eléctrica....................................................................................... 42
Figura 42. Aplicación de Power Line Modem con ST7537. ..................................................................................... 43
Figura 43. Aplicación de Power Line Modem con TDA5051A. .............................................................................. 43
Figura 44. Ejemplo de una red con One Wire.............................................................................................................. 46
Figura 45. Conexión de un reloj de tiempo real (1-Wire) a un microcontrolador 68HC05................................. 47
Figura 46. Corte transversal del cable para USB......................................................................................................... 48
Figura 47. Corte transversal del cable Fire Wire. ........................................................................................................ 48
Figura 48. Enlace por infrarrojos IrDA......................................................................................................................... 49
Figura 49. Implementación de una conexión tipo RS-323 con IrDA....................................................................... 49
Figura 50. Transmisor y Receptor de datos de Motorola........................................................................................... 50
Figura 51. Pulsos de 1 ms para la transmisión en sistema trifásico.......................................................................... 52
Figura 52. Códigos de transmisión................................................................................................................................. 52
Figura 53. Trama de mensajes........................................................................................................................................ 53
Figura 54. Diagrama de conexión global. ..................................................................................................................... 57
Figura 55. Diagrama de flujo del formulario principal............................................................................................... 60
Figura 56. Diagrama de flujo de la adquisición secuencial de datos....................................................................... 61
Figura 57. Diagrama de flujo de los eventos asociados la presentación de información. .................................... 62
Figura 58. Diagrama de flujo de la creación de un nuevo elemento........................................................................ 64
Figura 59. Diagrama de flujo de transmisión de datos a Internet............................................................................. 66
Figura 60. Diagrama de flujo de almacenamiento de datos....................................................................................... 68
Figura 61. Esquema de conexión normal entre un PC y el módem de red. ............................................................ 71
Figura 62. Esquema de conexión entre un microcontrolador y el módem de red.................................................. 71
Figura 63. Comportamiento normal de la modulación de la portadora. .................................................................. 72
Figura 64. Operación incorrecta de la modulación, la “cola” de la portadora se pierde....................................... 72
Figura 65. Muestra de la distorsión que se produce en el dispositivo receptor tras una mala modulación. El canal A1
muestra el dato entrante por el pin DATAIN en el dispositivo emisor y el canal A2 muestra el dato saliente del pin
DATAOUT en el dispositivo receptor. ...................................................................................................................... 73
Figura 66. Señal de reloj al microcontrolador y este sincroniza las comunicaciones con el módem.................................... 73
Figura 67. Señal de reloj al módem y este sincroniza las comunicaciones con el microcontrolador.................................... 74
Figura 68. Esquema de conexión del 74AHCT1G79GW entre el módem de red y el PC. .................................. 74
Figura 69. Muestra de la señal que se produce en el dispositivo receptor tras sincronizar con el 74AHCT1G79GW. El canal
A1 muestra el dato entrante por el pin DATAIN en el dispositivoemisor y el canal A2 muestra el dato saliente del pin
DATAOUT en el dispositivo receptor. ...................................................................................................................... 75
Figura 70. Esquema del circuito Maestro..................................................................................................................... 76
Figura 71. Esquema electrónico de la etapa de alimentación.................................................................................... 77
Figura 72. Esquema electrónico de la etapa de interface. .......................................................................................... 78
Figura 73. Esquema electrónico de la etapa de comunicación. Subetapa módem de red..................................... 80
Figura 74. Esquema electrónico de la etapa de comunicación. Subetapa de acoplamiento................................. 81
Figura 75. Esquema del circuito Satélite de 1 salida. ................................................................................................. 82
Figura 76. Esquema electrónico de la etapa de µControlador................................................................................... 83
Figura 77. Esquema electrónico de la etapa de grabación......................................................................................... 84
Figura 78. Esquema electrónico de la etapa de sensor. .............................................................................................. 85
Figura 79. Esquema electrónico de etapa de actuador................................................................................................ 85
Figura 80. Esquema del circuito Satélite de 2 salidas................................................................................................. 86
Figura 81. Esquema electrónico de etapa de actuador................................................................................................ 87
-8-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
INDICE
Figura 82. Trama de mensaje de enviado por el PC. .................................................................................................. 88
Figura 83. Trama de mensaje de respuesta del microcontrolador. ........................................................................... 88
Figura 87. Diagrama de flujo del proceso de comunicación. .................................................................................... 92
Figura 88. Vista del formulario MDIRaiz. ..................................................................................................................183
Figura 89. Vista del formulario Frm_AdquisicionDatos..........................................................................................189
Figura 90. Vista del formulario Frm_Estado..............................................................................................................199
Figura 91. Vista del formulario Frm_Vida. ................................................................................................................212
Figura 92. Vista del formulario Frm_Electrodomesticos.........................................................................................216
Figura 93. Vista del formulario Frm_Catalogo..........................................................................................................228
Figura 94. Vista del formulario Frm_Programador. .................................................................................................236
Figura 95. Vista del formulario Frm_Tiempo............................................................................................................245
Figura 96. Vista del formulario Frm_Consumo.........................................................................................................248
Figura 97. Vista del formulario Frm_Grafica. ...........................................................................................................251
Figura 98. Vista del formulario Frm_ConfigFTP......................................................................................................256
Figura 99. Vista del formulario Frm_Internet............................................................................................................258
Figura 100. Vista del formulario Frm_ConfigUsuario.............................................................................................263
Figura 101. Vista del formulario Frm_Desbloquear.................................................................................................268
Figura 102. Vista del formulario Frm_Adquirir_mapa. ...........................................................................................271
Figura 103. Vista del formulario Frm_Config_Mapa...............................................................................................274
Figura 104. Vista del formulario Frm_Mostrar_Mapa.............................................................................................277
Figura 105. Vista del formulario Frm_Acerca. ..........................................................................................................282
Figura 106. Vista del formulario Frm_Ayuda............................................................................................................287
Figura 107. Vista de la página index.html. .................................................................................................................315
Figura 108. Vista de la página iluminacion.asp.........................................................................................................325
Figura 109. Vista de la página electrodomesticos.asp..............................................................................................330
ÍNDICE DE TABLAS
Tabla 1. Interconexión entre equipos electrónicos...................................................................................................... 13
Tabla 2. Resumen de estándares de comunicación. .................................................................................................... 31
Tabla 3. Comparación entre el CAN y J1850 SAE. .................................................................................................... 42
Tabla 4. Resumen de los archivos de apoyo................................................................................................................. 70
Tabla 5. Resumen de componentes de las tramas. ...................................................................................................... 88
Tabla 6. Relación instrucción/byte................................................................................................................................. 89
Tabla 7. Relación status/byte.......................................................................................................................................... 90
Tabla 8. Parámetros operativos del MAX233A........................................................................................................... 94
Tabla 9. Parámetros operativos de los optoacopladores............................................................................................. 94
Tabla 10. Parámetros operativos del regulador............................................................................................................ 94
Tabla 11. Parámetros operativos del regulador............................................................................................................ 95
Tabla 12. Parámetros operativos del módem de red. .................................................................................................. 96
Tabla 13. Parámetros operativos del µcontrolador...................................................................................................... 96
Tabla 14. Parámetros operativos del actuador. ............................................................................................................ 97
Tabla 15. Parámetros operativos del sensor. ................................................................................................................ 98
Tabla 16. Resumen de corrientes consumidas del puerto serie...............................................................................101
Tabla 17. Resumen de corrientes consumidas por cada dispositivo. .....................................................................102
Tabla 18. Resumen de los controles del formulario MDIRaiz.frm. .......................................................................184
Tabla 19. Resumen de los controles del marco principal.........................................................................................191
Tabla 20. Resumen de los controles del marco de desglosado en modo normal. ................................................192
Tabla 21. Resumen de los controles del marco de desglosado en modo ahorro..................................................193
Tabla 22. Resumen de los controles del formulario Frm_Estado...........................................................................201
Tabla 23. Resumen de los controles del formulario Frm_Vida. .............................................................................213
Tabla 24. Resumen de los controles del formulario Frm_Electrodomesticos......................................................219
Tabla 25. Resumen de los controles del formulario Frm_Catalogo.......................................................................230
Tabla 26. Resumen de los controles del formulario Frm_Programador................................................................238
Tabla 27. Resumen de los controles del formulario Frm_Tiempo.........................................................................246
Tabla 28. Resumen de los controles del formulario Frm_Consumo......................................................................249
Tabla 29. Resumen de los controles del formulario Frm_Grafica..........................................................................253
Tabla 30. Resumen de los controles del formulario Frm_ConfigFTP. ..................................................................257
Tabla 31. Resumen de los controles del formulario Frm_Internet.........................................................................259
-9-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Tabla 32.
Tabla 33.
Tabla 34.
Tabla 35.
Tabla 36.
Tabla 37.
INDICE
Resumen de los controles del formulario Frm_ConfigUsuario.............................................................266
Resumen de los controles del formulario Frm_Desbloquear.................................................................269
Resumen de los controles del formulario Frm_Adquirir_Mapa. ..........................................................272
Resumen de los controles del formulario Frm_Config_Mapa. .............................................................275
Resumen de los controles del formulario Frm_Mostrar_Mapa.............................................................278
Resumen de los controles del formulario Frm_Acerca. .........................................................................283
ÍNDICE DE CÓDIGOS FUENTE
Código 1. Código fuente del formulario MDIRaiz. ..................................................................................................189
Código 2. Código fuente del formulario Frm_AdquisicionDatos...........................................................................198
Código 3. Código del formulario Frm_Estado...........................................................................................................211
Código 4. Código del formulario Frm_Vida. .............................................................................................................215
Código 5. Código del formulario Frm_electrodomesticos.......................................................................................227
Código 6. Código del formulario Frm_Catalogo.......................................................................................................235
Código 7. Código del formulario Frm_Programador................................................................................................245
Código 8. Código del formulario Frm_Tiempo.........................................................................................................247
Código 9. Código del formulario Frm_Consumo......................................................................................................250
Código 10. Código del formulario Frm_grafica........................................................................................................255
Código 11. Código del formulario Frm_ConfigFTP. ...............................................................................................257
Código 12. Código del formulario Frm_Internet.......................................................................................................263
Código 13. Código del formulario Frm_ConfigUsuario..........................................................................................268
Código 14. Código del formulario Frm_Desbloquear..............................................................................................270
Código 15. Código del formulario Frm_Adquirir_Mapa.........................................................................................273
Código 16. Código del formulario Frm_Config_Mapa............................................................................................276
Código 17. Código del formulario Frm_Mostrar_Mapa..........................................................................................281
Código 18. Código del formulario Frm_Acerca. .......................................................................................................286
Código 19. Código del formulario Frm_Ayuda.........................................................................................................287
Código 20. Código del módulo Variables...................................................................................................................288
Código 21. Código del módulo AyudaHTML. ..........................................................................................................289
Código 22. Código del módulo Funciones.................................................................................................................313
Código 23. Código fuente de la hoja de estilo estilo.css..........................................................................................314
Código 24. Código fuente de la página Index.html...................................................................................................316
Código 25. Código fuente de la página adovbs.inc ..................................................................................................321
Código 26. Código fuente de la página login.asp......................................................................................................324
Código 27. Código fuente de la página iluminacion.asp .........................................................................................328
Código 28. Código fuente de la página cambio.asp .................................................................................................329
Código 29. Código fuente de la página electrodomesticos.asp ..............................................................................333
Código 30. Código fuente de la página elecambio.asp ............................................................................................334
ÍNDICE DE FÓRMULAS
Fórmula (1). Números de dispositivos conectables teóricos.................................................................................... 88
Fórmula (2). Cálculo de BCC (A)................................................................................................................................. 90
Fórmula (3). Cálculo de BCC (B) ................................................................................................................................. 90
Fórmula (4). Cálculo de elementos de comunicación........................................................................................ 95,104
Fórmula (5). Ley de Ohm............................................................................................................................................. 103
Fórmula (6). Intensidad en el conductor.................................................................................................................... 106
Fórmula (7). Número de vueltas del conductor al toroide ...................................................................................... 107
Fórmula (8). Resistencia limitadore del actuador..................................................................................................... 108
Fórmula (9). Resistencia limitadora de la grabación................................................................................................ 108
Fórmula (10). Intervalo de muestreo .......................................................................................................................... 109
Fórmula (11). Energía consumida ............................................................................................................................... 109
Fórmula (12). Tiempo de ejecución de programa de µcontrolador....................................................................... 110
Fórmula (13). Número de dispositivos conectables reales...................................................................................... 110
-10-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1
MEMORIA DESCRIPTIVA
1.1 OBJETIVO DEL PROYECTO
1.2 TITULAR
1.3 INTRODUCCIÓN A LAS COMUNICACIONES ENTRE DISPOSITIVOS
1.4 ANTECEDENTES. EL PROTOCOLO X-10
1.5 POSIBLES SOLUCIONES Y SOLUCIÓN ADOPTADA
1.6 DESCRIPCIÓN GENERAL
1.7 PRESCRIPCIONES TÉCNICAS
1.8 PUESTA EN MARCHA Y FUNCIONAMIENTO
1.9 RESUMEN DEL PRESUPUESTO
-11-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1.1
MEMORIA DESCRIPTIVA
OBJETIVO DEL PROYECTO.
El objetivo del proyecto es el de proporcionar control cualquier elemento conectado
a la red eléctrica. Las posibles aplicaciones son el control de la iluminación pública, tanto
exterior, calles y plazas, como interior, centros comerciales, y también la iluminación de
viviendas.
Para posibilitar un control de zonas públicas, se ha considerado la existencia e
implantación de diversos módulos que regulan el consumo. Estos módulos se gestionan
mediante dos entradas conectadas a la red sobre las que se actúa para obtener el resultado
deseado.
En un entorno doméstico proporciona una instalación pseudo-domótica sin el
desembolso económico que ello conlleva. Aprovechando elementos de los que el usuario
puede contar normalmente, como son un PC que disponga de puerto serie, acceso a
Internet e instalación eléctrica con una tensión de 220 V a 50 Hz.
Con esto se consigue un amplio control sobre todo dispositivo eléctrico de la
vivienda cuya dependencia del suministro de la red eléctrica convencional sea evidente.
El control y actuación sobre estos elementos se realizará mediante tomas
convencionales de corriente y las tomas para iluminación.
1.2
TITULAR.
El titular del presente proyecto es:
- Nombre: DomoKit S.A.
- CIF: 98364457 H
- Dirección: Pol. Ind. Francolí. Calle 5, Nav23.
- Representante legal: Francisco Fernández Soto
- Teléfono : 977 226 458
-12-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1.3
MEMORIA DESCRIPTIVA
INTRODUCCIÓN A LAS COMUNICACIONES ENTRE DISPOSITIVOS.
A continuación se van a comentar los diferentes tipos de comunicaciones existentes y
que son vigentes para enlazar dispositivos electrónicos, ya sea en ambientes domóticos o
industriales.
Para empezar se puede hacer una primera clasificación entre comunicaciones en
paralelo o comunicaciones serie, siendo este segundo grupo más extenso.
Comunicación en Paralelo
Comunicación en Serie
SPP
RS232
CAN
EPP
RS422
GPIB
ECP
RS485
Profibus
LVDS
4-20 mA
Lonworks
SCSI
V/F - F/V
InstantBus
IrDA
One Wire
Fibra Óptica
USB
FDDI
FIRE WIRE
HART
Ethernet
MIDI
RF
Power Line Modem
GSM
Tabla 1. Interconexión entre equipos electrónicos.
Antes de empezar con los diferentes tipos de métodos de comunicación se hace
referencia a la línea de transmisión, sus características y métodos para evitar interferencias
en los datos transmitidos.
1.3.1 Características de la línea de transmisión.
1.3.1.1 Introducción.
Los sistemas digitales requieren, generalmente, la transmisión de señales digitales,
desde y a otros elementos del sistema. La componente de la longitud de onda de las señales
digitales generalmente será más corta que la longitud eléctrica del cable utilizado para
-13-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
conectar los subsistemas juntos y, por lo tanto, los cables se deberían tratar como líneas de
transmisión. Además, las señales digitales están expuestas generalmente a fuentes de ruido
eléctrico hostil y requerirán más inmunidad al ruido que la requerida en el entorno de
subsistemas individuales.
En las figuras 1(a) y 1(b) se muestran dos métodos utilizados como solución técnica:
un circuito con una línea de transmisión de señal asimétrica y otro con una línea de
transmisión de señal diferencial.
Figura 1(a). Línea de transmisión de señal asimétrica.
Figura 1(b). Línea de transmisión de señal diferencial.
A continuación se muestran las características de las señales digitales en líneas de
transmisión, las características de la línea y la comparación entre líneas de señal asimétrica
y de señal diferencial en los sistemas digitales.
1.3.1.2 El ruido en las líneas de transmisión.
Los cables utilizados para transmitir señales digitales externas a un subsistema, están
expuestos al ruido electromagnético externo provocado por los transitorios de las
conmutaciones de los dispositivos de sistemas de control vecinos. También externo a un
subsistema específico, otro subsistema puede tener un problema de tierra que inducirá
ruido en el sistema, como se muestra en la figura 2.
-14-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 2. Fuente de ruido externas.
Figura 3. Fuentes de ruido internas.
Las señales en los hilos adyacentes dentro de un cable pueden inducir ruido
electromagnético en otros hilos del cable. El ruido electromagnético inducido es peor
cuando una línea terminada al final del cable está cerca de un "driver" en el mismo final,
como se muestra en la figura 3. Se puede inducir algún ruido desde relés que tengan
transitorios muy grandes comparados con las señales digitales en el mismo cable. Otra
fuente de ruido inducido es la corriente en el cable de tierra común o en los hilos de un
cable.
-15-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.1.3 La distorsión en las líneas de transmisión.
En un sistema de transmisión, las características de los datos recuperados se tienen
que semejar a las características de los datos transmitidos. En la figura 4 se muestra la
diferencia entre el ancho de pulso del dato transmitido y el tiempo de la señal transmitida y
la señal recibida correspondiente. Hay además, una diferencia posterior con el tiempo de la
señal cuando, al final, el dato pasa por una puerta "AND". La distorsión de la señal que
ocurre en la línea de transmisión y la del "driver" y el receptor. Una causa principal de la
distorsión es el efecto que la línea de transmisión tiene en el tiempo de subida de la
información transmitida. En la figura se muestra que pasa a un voltaje al ser transmitido a
lo largo de una línea, pasa que el tiempo de subida de la señal se incrementa con la
distancia de la línea. Este efecto tenderá a afectar al tiempo de la señal recuperada.
Figura 4. Efecto de la distorsión.
-16-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 5. Respuesta de la señal en el receptor.
El tiempo de subida en una línea de transmisión no es una función exponencial, pero
es una función de error complementaria. Las componentes de alta frecuencia en el paso de
entrada serán atenuadas y retrasadas más que a bajas frecuencias. Esta atenuación es
inversamente proporcional a la frecuencia, la señal toma mucho más tiempo para alcanzar
su valor final. Este efecto es más significativo con tiempos de subida más rápidos.
El ciclo de servicio de la señal transmitida también causa distorsión. El efecto está
relacionado con el tiempo de subida de la señal como se muestra en la figura 6. La señal no
alcanza un nivel lógico antes de los cambios de la señal a otro nivel. Si la señal tiene 1/2
ciclo de servicio (50%) y el umbral del receptor es la mitad del camino entre los niveles
lógicos, la distorsión es pequeña. Pero, si el ciclo de servicio es de 1/8, como se muestra en
el segundo caso, la señal está distorsionada considerablemente. En algunos casos, la señal
no puede alcanzar en absoluto el valor de umbral del receptor.
-17-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 6. Distorsión de la señal debida al ciclo de servicio.
Figura 7. Análisis del nivel de distorsión.
En el ejemplo previo, se supone que el umbral del receptor está a la mitad del camino
entre los niveles lógicos "1" y "0". Si el umbral del receptor no está en la mitad del camino,
el receptor contribuirá a la distorsión de la señal recuperada. Como se muestra en la figura
7, el tiempo del pulso está estirado o reducido, dependiendo de la polaridad de la señal en
el receptor. Esto es debido al "offset" del umbral del receptor.
-18-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.1.4 Método de Línea Asimétrica.
Otra fuente de distorsión está provocada por las perdidas en el hilo. La figura 8
muestra las perdidas que ocurren en unos 600 metros de un hilo nº 22 AWG. En este
ejemplo, las pérdidas reducen la señal por debajo del umbral del receptor con el método
asimétrico. También se puede ver que la parte de la caída de tensión en el hilo de tierra es
común a los otros circuitos, esta señal de tierra aparecerá como una fuente de ruido a los
otros receptores de línea asimétrica en el sistema.
Figura 8. Método asimétrico.
1.3.1.5 Método de Línea Diferencial.
En el método de Línea diferencial, como muestra la figura 9, las transiciones de
voltajes y de corrientes en la línea son iguales y opuestas, de esta manera se cancela
cualquier ruido. También, con este método, se genera muy poco ruido de tierra, por lo que
no contribuye a introducir ruido en ele entorno.
-19-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 9. Método diferencial. Cruce de señales.
1.3.1.6 Diferencias entre una línea Diferencial y una Asimétrica.
•
•
•
•
La característica de impedancia de una línea de transmisión asimétrica es menor
que la impedancia de una línea diferencial.
En el método de transmisión de línea asimétrica es más capacitiva y menos
inductiva que el método diferencial.
En el método de transmisión de línea diferencial, la reactancia a los hilos
adyacentes es siempre cancelada.
La medida de la impedancia de una línea asimétrica y una diferencial se tiene que
hacer de otro modo. La impedancia diferencial se tiene que medir con una señal
diferencial. Si hay cualquier desequilibrio en la señal en la línea diferencial,
habrá un reflejo asimétrico en el terminador. La figura 10 muestra la perfecta
configuración de terminación de una línea de transmisión diferencial. Este
método de terminación se requiere principalmente para mediciones de
impedancia exactas.
Figura 10. Medida de la impedancia en una línea Asimétrica y una diferencial.
-20-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.1.7 Conclusiones.
En el mercado hay una línea completa tanto de transmisores y receptores de línea
diferencial como asimétrica. Ambos tipos de circuitos trabajan bien cuando se usan dentro
de sus límites. Pero, se puede decir que el método diferencial es preferible para línea de
largas distancias y en entornos eléctricos ruidosos. Por otra parte, el circuito asimétrico
trabaja perfectamente con líneas más cortas y velocidades de transmisión reducidas.
1.3.1.8 Definiciones.
Velocidad de transmisión máxima absoluta: es la tasa de datos en que la salida del
receptor de la línea está comenzando a estar degradada.
Velocidad de transmisión en baudios: es la velocidad de bits del canal y está definido
como el recíproco del ancho de pulso mínimo.
Bits/sec (bps): es la velocidad de transmisión del canal y está definido como la
cantidad de bits transmitida en un segundo.
Codificación NZR (Non Zero Return): la velocidad de transmisión en baudios es
igual a la velocidad de transmisión de bits. Para codificación manchester, la velocidad de
transmisión en baudios es igual a dos veces la velocidad de transmisión de bits.
1.3.2 Comunicación entre equipos electrónicos
1.3.2.1 Comunicación en paralelo.
1.3.2.1.1 Bus paralelo SPP, EPP, ECP.
Este sistema de comunicación se adoptó para poder aumentar la velocidad de
transferencia de datos entre dos equipos, enviando en una sola vez los datos (palabra de 8
bits) y se aplicó en los ordenadores llamándolo "puerto paralelo" SPP (Estándar Parallel
Port), con el estándar IEEE1284, comúnmente conocido como Centronics. Se utiliza en las
impresoras, en programadores de dispositivos programables, en emuladores, en escáneres,
etc. Utiliza 8 líneas de datos, y 9 líneas de control, figura 11. Se utiliza un conector de 36
pins Centronics o el más utilizado hoy día el Sub-D hembra de 25 pins, figura 12. La
velocidad de transferencia entre 50 kbytes/s y 150 kbytes/s.
-21-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 11. Circuito típico de un puerto bidireccional paralelo y conexionado.
Figura 12. Conexionado del puerto paralelo Centronics a SubD25 y diagrama de señales.
-22-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Existen también dos extensiones del puerto paralelo, el EPP (Enhanced Parallel Port)
y el ECP (Extended Capabilities Port) que mejoran principalmente en velocidad. El EPP
típicamente trabaja a una velocidad de transferencia entre 500 kbytes/s y 2 Mbytes/s. El
ECP fue diseñado por Hewlett Packard y Microsoft, funciona a mucha más velocidad que
el EPP, pero funciona mejor bajo Windows. El puerto ECP tiene la ventaja de utilizar
canales DMA y "buffers" FIFO, así lo datos se pueden desplazar sin utilizar instrucciones
de entrada/salida.
Para más información www.geocities.com/SiliconValley/Bay/8302/parallel.html
1.3.2.1.2 Bus SCSI (Small Computer System Interface).
El bus paralelo diferencial SCSI es un estándar de interconexión ANSI (American
National Standards Institute) que define un bus de entrada/salida. El estándar SCSI se
diseñó para tener un bus paralelo multiterminal, rápido, que sea fácilmente actualizable y
para mantener el paso de las nuevas tecnologías. El bus SCSI es comúnmente escogido
para el control de discos duros, discos ópticos, escáneres, impresoras, CD-ROM, DVD,
etc. El SCSI-1 (asimétrico) y el SCSI-2 (diferencial) son buses multiterminal que permiten
conectar hasta ocho diferentes dispositivos, mientras que el SCSI-3 permitirá conectar
hasta 32 dispositivos.
En comparación con el SCSI asimétrico, el SCSI diferencial es más caro y necesita
alimentación adicional. Sin embargo, los beneficios son: el costo de circuitos integrados
adicionales y la potencia requerida en muchas aplicaciones. Además, es capaz de transferir
a 10 MT/s (Fast SCSI) sin atención especial a las terminaciones y a velocidades más altas
de 20 MT/s. La longitud del cable puede llegar a los 25 metros, comparada con los 3
metros para el asimétrico.
El bus SCSI está teniendo un mínimo de 18 líneas de señal, de las cuales 9 son de
datos (datos más paridad) y las demás son de control. Tiene una opción para añadir bytes
extras si lo requiere la aplicación. Los "drivers" utilizados para el SCSI-1, asimétrico, son
típicamente "open drain" de 48 mA y los receptores están comúnmente integrados en los
circuitos controladores de SCSI. Para el SCSI-2, diferencial, se requieren los típicos
transmisores RS-485 externos.
Para más información www.analog.com
-23-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.2.2 Comunicación en serie.
1.3.2.2.1 EIA RS-232.
Es un estándar de comunicación para la transmisión de datos en serie entre equipos,
figura 13. La transmisión de datos digital se hace en serie a través de una línea asimétrica,
no terminada, entre dos equipos. La versión europea está bajo la especificación CCIT
V.24. La distancia máxima de enlace está sobre los 15 metros y la velocidad de
transmisión máxima es de 20 kbps.
Figura 13. Aplicación típica de EIA/TIA-232-E.
Anteriormente se utilizó un conector Sub-D macho de 25 pins, pero más
comúnmente se utiliza un conector Sub-D macho de 9 pins. A continuación se muestra el
conexionado y la trama de bits de datos seria.
Figura 14. Esquema de conector serie Sub-D macho 9 pins.
-24-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.2.2.2 Descripción de las señales.
TXD (transmit Data): línea de transmisión de datos serie al módem.
RXD (Receive Data): línea de recepción de datos serie desde el módem.
CTS (Clear To Send): línea que indica que el módem está preparado para recibir datos
desde el PC.
RTS (Request To Send): línea que indica que al módem que el PC va a enviar datos.
DSR (Data Set Ready): línea que indica que el módem está preparado.
DCD (Data Carrier Detect): línea que indica que el módem tiene conexión remota.
RI (Ring Indicator): línea que indica que el módem ha detectado la señal de "llamada".
GND (GrouND): línea de tierra.
Figura 15. Muestra el conexionado del conector Sub-D de 25 pins.
La figura 16 muestra una comunicación de datos RS-232C aislada, utilizando un
optoacoplador 6N139 que típicamente produce un retardo de 20 µs en la propagación y una
nueva configuración como único circuito de Hewlett Packard, el HCPL-0560 que reduce el
espacio de circuito impreso.
-25-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 16. Dos ejemplos de comunicación RS-232C aislada con optoacoplador simple o
completo.
Para más información:
www.analog.com
www.dalsemi.com/DocControl/PDFs/app83.pdf
www.dalsemi.com/TechBriefs/tb10.html
www.hp.com
www.mot-sps.com
www.st.com
www.onsemi.com
www.fairchildsemi.com
-26-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.2.2.3 TIA/EIA RS-422B.
Es un estándar de la industria que especifica las características eléctricas de un
circuito de interconexión diferencial, figura 17. Se introdujo en 1975 para resolver los
problemas de limitación de un solo terminal del estándar EIA-232-E.
Figura 17. Aplicación típica de TIA/EIA-422-B punto a punto y multipunto.
Las interconexiones de un solo terminal carecen de capacidad de rechazo de ruido en
modo común; ideales para entornos ruidosos. También, las velocidades de transmisión de
datos están limitadas generalmente a menos de 0.5 Mbps. Una interconexión RS-422 puede
vencer estas limitaciones. In "driver" de RS-422 puede llegar hasta diez unidades de carga
(por ejemplo, 4 kΩ para un circuito común, es una unidad de carga). El "driver" es capaz
de transmitir datos a través de 1200 m de cable (límite recomendado), pero no a
velocidades de transmisión máxima (véase figura 25). Los "drivers" del estándar RS-422
están garantizados para suministrar y aceptar un mínimo de 20 mA a través de una carga de
100 ohmios. Esto corresponde a un voltaje de salida mínimo, VOD 2 V a través de la carga
(véase la figura 18).
Figura 18. Configuración de una terminación RS-422.
El receptor complemento de RS-422 tiene que ser igual o menos que una unidad de
carga. Los "drivers" y los receptores RS-422 están diseñados para configuraciones "p2p"
(peer-to-peer) y multiterminal, pero no para multipunto. Para configuraciones
multiterminal, la más recomendada de interconexión es en forma de margarita (daisy
chain). Hay que tener precaución, en largas distancias o velocidades de transmisión altas,
la terminación está recomendada para reducir reflejos provocados por un desacoplo en la
impedancia del cable y la impedancia de entrada del receptor.
-27-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 19. Longitud de Cable vs. Velocidad de Transmisión.
La longitud del cable y la velocidad de transmisión tienen un efecto inverso la una de
la otra. Cuando se trabaja a máxima longitud de cable no se puede obtener la máxima
velocidad de transmisión. Por ejemplo, no es posible trabajar a 1200 m cuando se busca
una velocidad de transmisión de 10 Mb/s o viceversa. A 10 Mb/s se puede llegar a 40 m y
con 100 kb/s se puede llegar a 2 km.
Significativamente, el estándar RS-485 de interconexión diferencial es muy similar
al RS-422. Sin embargo, hay diferencias que distinguen a las dos normas; las cuales
incluyen: la etapa de salida del "driver", el rango en modo común de la interconexión, la
resistencia de entrada del receptor y la capacidad del "driver".
La figura 20 muestra el esquema de una comunicación utilizando dos
optoacopladores HCPL-2601 para una comunicación hasta 10 MBd.
-28-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 20. Ejemplo de comunicación RS-422 aislada.
1.3.2.2.4 EIA RS-485.
Es similar en muchos aspectos al estándar RS-422; de hecho, se puede considerar
como el resultado de la expansión del RS-422 para permitir "drivers" y receptores múltiple
multiterminal, compartiendo la misma línea de datos de transmisión. El estándar RS-485,
como el estándar RS-422, especifica únicamente las características eléctricas del "driver" y
del receptor para ser utilizado en la línea de transmisión, pero no especifica ni recomienda
ningún protocolo.
Figura 21. Aplicación típica de EIA-485.
El estándar EIA RS-485 ha tenido mucha aceptación. Los usuarios son ahora capaces
de configurar redes de área local económicas y enlaces en comunicaciones multiterminal
utilizando cables de par trenzado y el protocolo de su opción. Dicha aceptación del
estándar RS-485 está también reflejado por el hecho de que otras normas la refieren
cuando se especifica un enlace de datos multiterminal, ANSI (American National
Standards Institute), normas IPI (Intelligent Peripheral Interface) y SCSI (Small Computer
Systems Interface), han utilizado el estándar RS-485 como la base para la interconexión en
modo diferencial. El estándar IPI especifica la interconexión entre controladores de disco y
-29-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
adaptadores de “host” a velocidades de transmisión de 2.5 Mbauds sobre un enlace de
datos hasta 50 m NRZ (Non Zero Return). El SCSI especifica la interconexión entre
computadores personales, “drivers” de disco, impresoras, escáneres y otros periféricos a
velocidades de transmisión de 4 Mbauds sobre un enlace de 25 m. Hasta la introducción
del estándar RS-485, el estándar RS-422 fue la interconexión estándar más ampliamente
aceptada para la transmisión de datos en modo diferencial. La distancia máxima de enlace
del RS-485 es de 1200 m y la velocidad de transmisión es de 10 Mbps. La figura 22
muestra el esquema de una comunicación RS-485 utilizando un optoacoplador HCPL-2631
para poder transmitir datos hasta 10 Mbauds.
Figura 22. Ejemplo de comunicación RS-485 aislada.
Más información www.agilent.com
1.3.2.2.5 Comparación entre los “drivers” y receptores de EIA-485 y EIA-422 en montaje
multiterminal.
EIA-485 es un estándar de interconexión único, porque de todas las normas EIA,
sólo el EIA-485 permite trabajar con múltiples “drivers”. A primera vista el EIA-485 y el
EIA-422A parecen ser muy similares, pero el EIA-485 se confunde comúnmente con el
EIA-422A. Los “drivers” y receptores EIA-485 son compatibles con los dispositivos EIA422A y se pueden intercambiar. Sin embargo, los “drivers” EIA-422A no se deberían
-30-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
utilizar en aplicaciones EIA-485 dado que si se usan en aplicaciones multiterminal
(multiple “driver”), tendrán tres problemas importantes:
•
El primero tienen que ver con el rango en modo común de los “drivers”, el rango
“Tri-State” en modo común para un “driver” EIA-422 es de 250 mV a +6 V. Si existe
una diferencia de potencial de tierra entre los “drivers”, el “driver” desactivado puede
salir del estado de alta impedancia y bloquear la línea.
•
El segundo problema tiene que ver con los “drivers” activos. Los fallos pueden
ocurrir por causa de habilitarse dos “drivers” al mismo tiempo. Si esto ocurre y los
“drivers” quedan en estado opuesto, entonces circularían altas corrientes entre los dos
dispositivos, por lo que fácilmente se puede exceder la máxima potencia disipada en el
encapsulado de los dispositivos, dañando térmicamente los dispositivos.
•
El tercer problema tiene que ver con la corriente suministrada. Para un flujo de datos
bidireccional, la línea debería estar terminada con una resistencia en ambos extremos
del cable. Por lo tanto, se quiere que los “drivers” suministren/acepten dos veces la
corriente requerida para una terminación EIA-422 (resistencia única).
Los “drivers” EIA-485 son la mejor opción para aplicaciones multiterminal (donde
hay múltiples “drivers”). Pueden tolerar una diferencia de potencial de hasta 7 V. Son
seguros y térmicamente protegidos. Finalmente, los “drivers” EIA-485 pueden soportar
hasta 32 transceptores de carga, comparado con el EIA-422-A, limitado a 10 receptores.
Estándar
RS-232C
RS-423
RS-422A
RS-485
Modo de trabajo.
Asimétrica
Asimétrica
Diferencial
Diferencial
Nº drivers/receivers.
1 driver
1 driver
1 driver
32 drivers
1 receiver
10 receivers
10 receivers
32 receivers
Longitud máx. Cable.
15 m
1200 m
1200 m
1200 m
Velocidad máx.
20 kb/s
100 kb/s
10 Mb/s
10 Mb/s
Carga por driver
3 kΩ a 7 kΩ
450 Ω
100 Ω
54 Ω
±12 V
±7 V
-7 V a 12 V
±200 mV
±200 mV
±200 mV
Rango tensión entrada en ±15 V
receptor.
Sensibilidad del receptor.
±3 V
Tabla 2. Resumen de estándares de comunicación.
-31-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.2.2.6 Lazo de corriente 4-20 mA.
EL lazo de corriente 4-20 mA se utiliza para las comunicaciones entre equipos
industriales. De hecho es enviar una señal analógica a través de un lazo de corriente con un
par de cables trenzado, en la figura 23 se muestra un transmisor de tensión 4-20 mA de
Analog Devices. También desde un microcontrolador se puede a través de un DAC con
salida 4-20 mA de Analog Devices AD420 o AD421 se puede implementar un lazo.
Figura 23. AD693 Transmisor de tensión a lazo de corriente de 4-20 mA.
Para hacer un lazo de corriente 4 a 20 mA optoacoplado se puede hacer de las
siguientes maneras:
- Aislando el transmisor
- Aislando el receptor
Tanto en modo simple (“half duplex”) como en modo completo (“full duplex”),
utilizando los optoacopladores de Hewlett Packard HCPL-4100 para el transmisor o
HLPC-4200 para el receptor.
Figura 24. Ejemplo de un sistema de lazo de corriente punto a punto “simple”, con el
receptor aislado.
-32-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 25. Ejemplo de un sistema de lazo de corriente punto a punto “full duplex”.
Figura 26. Ejemplo de un sistema de lazo de corriente “half duplex” multiterminal.
1.3.2.2.7 HART.
HART es una marca registrada de la Fundación de Comunicación HART (HFC). El
protocolo HART utiliza una técnica de modulación de frecuencia digital (FSK) basada en
el estándar de comunicación Bell 202, que es uno de los estándares más severos para
transmitir señales digitales sobre líneas telefónicas. Esta técnica se utiliza para superponer
una comunicación digital en un lazo de corriente de 4 a 20 mA, conectando el sistema
central al transmisor en el campo.
Se utilizan dos frecuencias diferentes, 1200 Hz o 2200 Hz, para representar un “1” o
un “0” lógico respectivamente, como se muestra en la figura 27. Estos tonos de onda
senoidal están superpuestos a la señal DC. La figura 28 muestra el diagrama de bloques de
un transmisor inteligente.
Figura 27. Transmisión HART de señales digitales.
-33-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 28. Diagrama de bloques del transmisor inteligente.
La figura 29 muestra un ejemplo del convertidor de digital a 4-20 mA AD421 en una
aplicación de transmisor HART. La información transmitida HART en el lazo, se recibe
por el transmisor utilizando un filtro pasa-banda y el módem, entonces la información
HART se transfiere a la UART de un microcontrolador o puerto serie asíncrono al módem,
entonces se acopla al transmisor a través a través del pin C3. Los bloques enmarcados con
una línea discontinua contienen el módem Bell 202 y el filtro pasa-banda, llegando a esta
solución completa con el circuito 20C15 de Symbios Logia, Inc, o HT2012 de SMAR
Research Corp.
Figura 29. Aplicación de un transmisor Smart AD421.
Más información www.fieldbus.com/hart
1.3.2.2.8 IEE 1451.2.
Es un nuevo estándar de comunicación de sensores colocados en una red industrial.
Se basa en sensores inteligentes “Smart Sensors” que se pueden interconectar “plug and
play” en una red. La figura 30 muestra los componentes básicos de un sistema compatible
con IEEE 1451.2. El sensor inteligente (o el actuador inteligente) está conectado al módulo
de interconexión STIM. Este contiene uno o más sensores y/o actuadotes, un
acondicionador de señal y un convertidor A/D o D/A que interconecta el sensor/actuador
con el microcontrolador residente. El microcontrolador accede también a una memoria no
volátil que contiene las TEDS (las especificaciones del sensor/actuador que van a ser leídas
-34-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
a través de la red industrial). El NCAP es básicamente un nodo donde el STIM va a ser
conectado, a través de una interconexión de 10 hilos serie, llamada TII, con este sistema,
cuando un sensor inteligente se conecta a un nodo, la información del TEDS está
disponible en la red; esta identifica que tipo de sensor o actuador tiene o indica los valores
que hay disponibles de entrada o salida, así como las unidades de dichos valores (grados
centígrados, metros cúbicos, kilopascal, etc), la precisión del sensor (por ejemplo: +2%) y
otras informaciones varias sobre el sensor o actuador. De esta forma se eliminan los pasos
de configuración del software, cada vez que hay que hacer un cambio de un
sensor/actuador o al añadir un sensor/actuador. Y todo esto con “plug and play”.
Figura 30. Red de sensores inteligentes “plug and play”.
NCAP =
Network Capable Application Processor.
TII
=
Transducer Independent Interface.
TEDS
=
Transducer Electronic Datasheet.
STIM
=
Smart Transducer Interface Module.
Los componentes que contiene un “smart sensor” se muestra en la figura 31. Analog
Devices ha diseñado un primer producto que incorpora todos esos componentes en un solo
chip, el AduC812, figura 32. Este dispositivo contiene un convertidor de 8 entradas
analógicas a digital y con dos convertidores de digital a analógico de alta precisión,
memoria no volátil Flash EEPROM y un microcontrolador.
Figura 31. Componentes típicos de un Smart Sensor.
-35-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 32. Smart Sensor con el Microconverter AduC812.
1.3.2.2.9 INTERBUS.
El Interbus es un bus de campo estándar IEC 61158, para aplicaciones industriales y
procesos de producción. Está basado en el estándar RS-485, requiere doble línea de
transmisión (5 cables entre dos dispositivos), con una velocidad de transmisión de 500
kb/s, y alcanzan una distancia de 400 m entre dos puntos. El número de dispositivos
máximo es de 512.
Para más información www.interbusclub.com
1.3.2.2.10 V/F – F/V.
Mediante la técnica de conversión tensión a frecuencia (V/F) y de frecuencia a
tensión (F/V), se puede transmitir señales analógicas en forma de frecuenc ia, esta es
proporcional a l valor analógico, después se puede volver a pasar esta frecuencia a tensión
o tratarla directamente con un microcontrolador. Se aplica en sistemas donde hay que
transmitir valores de señales analógicos a cierta distancia, donde el ruido acoplado puede
ser importante comparado con el nivel de señal analógica.
La figura 33 muestra el esquema de una comunicación V/F a F/V aislada, utilizando
un optoacoplador HCPL-2601. La frecuencia de trabajo de este circuito es de hasta 5 MHz
y se puede utilizar el HCPL-7101 para llegar hasta 25 MHz.
-36-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 33. Ejemplo de una comunicación V/F a F/V aislada.
Para más información www.agilent.com
1.3.2.2.11 Fibra Óptica Versátil.
Hasta hace muy poco, hablar de fibra óptica era pensar en altos costos y dificultades
en la manipulación y conexión de sus componentes, así como en herramientas especiales y
por supuesto en personal especializado. Hewlett Packard con la familia
de
transmisores/receptores HFBR, figura 34, ha dado un salto muy importante para su
utilización en todos los campos.
Tanto el transmisor como el receptor se puede conectar directamente a un circuito
lógico TTL o CMOS, los terminales de la fibra óptica de plástico (POF) se puede montar
con herramientas simples o manualmente, y para pulir el terminal de la fibra se hace
sencillamente con un kit de muy bajo costo, con lo que se pueden implementar enlaces
simples, baratos y eficaces.
Figura 34. Transmisor y Receptor de fibra óptica versátil de Hewlett Packard.
-37-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Todos los transmisores/receptores tienen una pinza de cierre para acoplarse a los
conectores. Los conectores simples están codificados con los colores para facilitar la
identificación de las conexiones del receptor y del emisor. Los conectores dobles se
orientan con una guía para garantizar la posición durante la inserción, también hay
conectores para hacer empalmes. En el caso de los conectores simples, existe un modelo de
montaje manual para el que tan solo son necesarios unos alicates de corte para realizar el
montaje.
Los conectores están disponibles en cuatro opciones:
Conector simple.
Conector simple con
enclavamiento.
Conector doble, con
orientador de posición.
Conector doble con
enclavamiento y
orientador de posición
Figura 35. Opciones disponibles.
Otra forma de comunicación basada en el RS-232 o RS-485 (figura 36), se puede
implementar con fibra óptica de plástico para distancias de hasta 150 m utilizando fibra
óptica de plástico (POF) y hasta 500 m con fibra óptica de vidrio y los emisores y
receptores de la familia versátil HFBR de Hewlett Packard.
Figura 36. Implementación de una conexión tipo RS-485 con la familia HFBR de HP.
-38-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.2.2.12 CAN (Controller Area Network ).
El bus CAN desarrollado por Bosch GMBH en Alemania, ha sido utilizado
principalmente para la comunicación en automoción, pero también se ha introducido en la
industria como estándar. El incremento en la complejidad y el número de componentes
electrónicos en los automóviles ha hecho aumentar el número de hilos en el cableado de un
vehículo y ha provocado el desarrollo de un sistema de comunicación serie multiplexado,
que ha hecho reducir el número de hilos y ha aumentado la seguridad del sistema. CAN es
un canal de comunicación serie multiplexado, en el cual los datos son transferidos entre
módulos electrónicos distribuidos; muy similar al SPI o SCI, aunque algo más complejo.
Este protocolo permite la creación de redes dentro de un vehículo o sistema industrial con
una gran tolerancia de errores en ambientes industriales. La velocidad del bus es
programable, a alta velocidad hasta 1 Mbit/s sobre distancias de 40 m y a baja velocidad 5
kbit/s sobre distancias de 10000 m.
Figura 37. Trama de mensaje mediante CAN.
Actualmente se utiliza el estándar CAN 2.0A y una expansión del mismo que es el
CAN 2.0B. El CAN 2.0B es capaz de recibir mensajes CAN 2.0A y utiliza un mensaje de
29 bits de identificador, 11 bits para CAN 2.0A + 18 bits para CAN 2.0B.
El bus CAN se puede implementar a partir de un microcontrolador con puerto CAN
o utilizando un microcontrolador convencional y el SAJ1000 para el control de protocolo,
posteriormente se utiliza se utiliza en los dos casos el circuito P82C250 “driver” de bus
CAN, figura 38. El enlace con el SAJ1000 es en paralelo y el enlace con el “driver” utiliza
las señales TX y RX.
-39-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 38. Implementación del bus CAN.
En la figura 39 se muestra una aplicación optoacoplada con el “driver” de CAN.
Figura 39. Sistema de aislar un bus CAN con optoacopladores de Hewlett Packard.
Para más información: www.mot-sps.com
http://www-us.semiconductors.philips.com/can/
-40-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.2.2.13 J1850 SAE (Society of Automotive Engineers recommended practice).
En EEUU ha sido adoptado como estándar el bus J1850 SAE, es parecido al CAN en
cuanto al campo de aplicación, la automoción. El J1850 permite el uso de uno o dos hilos
para el bus, dos velocidades de transmisión (10.4 kbps o 41.7 kbps), dos técnicas de
codificación del bit ya sea modulación por ancho de pulso (PWM) o modulación variable
del ancho de pulso (VPW), y utilizar para la detección de errores CRC o Checksum,
dependiendo del formato del mensaje y de la técnica de modulación seleccionada, figura
40.
El J1850 Communications Interface (JCI) puede fácilmente interconectar una amplia
variedad de microcontroladores utilizados para transmitir y recibir mensajes con el
protocolo J1850, mientras que sólo requiere una mínima intervención del microcontrolador
principal.
Figura 40. Interconexión J1850.
-41-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
CAN 2.0A/B
SAE J1850
Bit Encoding
NRZ
PWM or VPW
Bus Wire Medium
Single or Dual
Single (10.4 kbps) or Dual (41.7 kbps)
Data Rate
1 Mbps
10.4 kbps VPW or 41.7 kbps PWM
# of SOF Bits
1 bit
Unique symbol
# of Identifier Bits
11/29 bits
8 to 24 bits
Data Length Code
4 bits
None
Message Length Field
0 to 24 bits
0 to 24 bits
CRC Field
15 bits
8 bits
ACK Field
2 bits
None
End of Frame
7 bits
Unique symbol
EOF
1 bit
1 bit
Tabla 3. Comparación entre el CAN y J1850 SAE.
Para más información www.semiconductors.philpis.com
1.3.2.2.14 Power Line Modem.
Sistema de comunicación empleando las líneas de red eléctrica para interconectar dos
o más equipos. Las normas CENELEC EN 50065-1 y FCC las describe. Se aplica
principalmente para mando a distancia y control doméstico, figura 41.
Figura 41. Aplicación domótica utilizando la red eléctrica.
-42-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
ST ha desarrollado un circuito integrado ST7537, figura 42, que es un módem FSK
(modulación en frecuencia) asíncrono "half duplex" a 2400 bps transportados a 132.45
kHz. Se interconecta con la red eléctrica con un transformador/aislador.
Figura 42. Aplicación de Power Line Modem con ST7537.
Como réplica, Philips también sacó al mercado un dispositivo módem, el TDA5051,
en este caso modula en amplitud (ASK) y transmite a una velocidad máxima de 1200 bps.
Se puede interconectar a la red eléctrica mediante un transformador aislador o una etapa
RLC que adapta la tensión de la red a las necesidades del dispositivo.
Figura 43. Aplicación de Power Line Modem con TDA5051A.
Para más información: www.st.com
www.semiconductors.philips.com
-43-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.2.2.15 GPIB (General Purpose Instrumentation Bus).
Es un bus serie de interconexión de instrumentos de medida con el estándar IEEE488, desarrollado por Hewlett Packard en 1965. Este estándar utiliza un conector para
cable plano de 24 vías tipo americano. En cambio, el estándar europeo IEC-625 utiliza un
conector Sub-D 25. Cuando todos los dispositivos interconectados están activados, la
velocidad de transferencia de datos se reduce drásticamente. La longitud de la
interconexión puede llegar a los 15 m.
1.3.2.2.16 LonWorks
LonWorks es un bus serie para aplicaciones domóticas, se basa en una plataforma
completa para implementar el control de un sistema de redes. Estas redes consisten en
dispositivos inteligentes o nodos que actúan recíprocamente con su ambiente y comunica
entre si con una variedad de medios de comunicaciones que usan un protocolo común de
mensajes. La denominación viene de LON (Local Operating Network), similar a una LAN
(Local Area Network), pero transmite pequeños paquetes de datos en lugar de grandes
paquetes de datos. Desarrollado por Echellon, se trata de un control inteligente distribuido,
que necesita microcontroladores (Neuron Chip), transmisores y un protocolo (LonTalk)
para las comunicaciones y una interconexión de entrada/salida para los sensores y
actuadores. Utiliza un par de hilos trenzado con una velocidad de transmisión máxima de
1.25 Mbps. Sobre una línea de red eléctrica puede ir a 9600 bps.
Para más información
www.echellon.com
www.lonmark.org
www.mot.com/SPS/MCTG/MDAD/lonworks/lon_docs.html
1.3.2.2.17 Instabus EIB (European Installation Bus).
Instabus es un bus serie para aplicaciones domóticas, se basa en una plataforma
similar a LonWorks, pero en versión europea. Diseñada por Siemens, se basa en un
microcontrolador de Motorola MC68HC705B y últimamente el MC68HC11 como
acoplador de bus, con una velocidad de transmisión de 9600 bauds y distancias hasta 1000
m. Permite controlar, conmutar, utilizar sensores y supervisar todos los servicios del bus en
un solo cable de par trenzado. También utiliza la red eléctrica para interconectar dos
equipos a 1200 bps o en radiofrecuencia a 866 MHz.
-44-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Después de la instalación le sigue un sistema verdaderamente modular que le permite
agregar, cambiar o llevar a cabo muchos aspectos de control diferentes. No está limitado a
un solo fabricante, hay muchos registrados en la EIBA (Asociación EIB), lo que garant iza
que todos los interruptores, sensores y productos se pueden comunicar entre sí.
Instabus EIB permite al usuario controlar y supervisar una combinación de sistemas
del edificio que usan una red de comunicación común. Una vez conectados, todos los
dispositivos pueden intercambiar información. Los datos se transmiten consecutivamente y
según reglas fijas o protocolo del bus. Para poder trabajar, todos los sensores y actuadores
tienen una dirección física. Más de 12000 dispositivos se pueden comunicar entre sí en el
bus. A cada dispositivo se le asigna una dirección estructurada. Para Instabus, la jerarquía
es como sigue: 64 dispositivos forman una línea de bus, 12 líneas se combinan para formar
una zona funcional y 15 zonas combinan para formar un sistema global. La conexión con
otros equipos no EIB utiliza conectores RJ12 de 6 pins y el típico Sub-D 9 para conectar el
PC al sistema para programar los aparatos del bus.
Para más información: www.eiba.com
www.siemens- industry.co.uk/instabus
1.3.2.2.18 One Wire.
One Wire es un bus serie para aplicaciones domóticas, diseñado por Dallas
Semiconductors, es un protocolo de comunicación de un solo hilo bidireccional "half
duplex", se transmite o se recibe dentro de un tiempo definido, puede llegar a una longitud
de comunicación de unos 300 m. En cada caso, el microcontrolador como "master"
(maestro) inicializa la transferencia enviando una palabra de control al dispositivo que
actúa como "slave " (esclavo). Esta definición limpia evita conflictos en el momento de
comunicarse. Los comandos y los datos se envían bit a bit hasta completar un byte,
comenzando con el bit menos significativo. La sincronización del maestro y el esclavo está
basada en el flanco de bajada que el maestro genera en la línea de datos. En la figura 44 se
muestra una estructura One Wire.
-45-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 44. Ejemplo de una red con One Wire.
Además de los típicos dispositivos 1-Wire, existe otra familia que cumple con el
mismo protocolo, estos son los iButtons. Un iButton es un chip encapsulado en acero
inoxidable. Para mantener el costo bajo, la interconexión eléctrica se ha reducido al
mínimo absoluto, una línea de datos y masa. La energía necesaria para las comunicación
proviene de la línea de datos (energía parasitaria, son de tecnología CMOS y consume
solamente la corriente de fuga cuando está en estado desocupado. Para mantener el
consumo de energía tan bajo como sea posible durante el tiempo activo y para ser
compatible con las familias lógicas existentes, se ha diseñado una línea de datos del
iButton con una salida "open drain", esta interconexión es compatible con todos los
microprocesadores y sistemas lógicos estándar, en tecnología CMOS, solamente hay poner
una resistencia de 5k a positivo (5V) para poner en condiciones normales de trabajo un
puerto bidireccional.
Los iButtons permiten a los usuarios tener información en el transporte y la
identificación de datos en un sistema completamente electrónico. Son el equivalente a un
número de documento, el número de orden único de cada iButton actúa como una
dirección de un nodo dentro de una red ilimitada. Hay modelos con memoria, que actúan
como almacenamiento intermedio, recopilando la información aisladamente de la red. La
información, entonces, se deposita en la red con un simple contacto. Los iButtons tienen
una alta inmunidad a la tensión mecánica, a los campos electromagnéticos y a al suciedad.
Se pueden reprogramar con la misma sonda que los leen. Con los iButtons se consigue una
-46-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
gran flexibilidad y una excelente relación precio/prestaciones, basándose en la producción
en masa.
En la figura 45 se muestra una interconexión One-Wire a un microcontrolador
convencional. Como se puede observar, a parte se puede interconectar a otros dispositivos
One-Wire.
Figura 45. Conexión de un reloj de tiempo real (1-Wire) a un microcontrolador 68HC05.
Para más información www.dalsemi.com.
1.3.2.2.19 USB (Universal Serial Bus).
El Bus Seria Universal (USB) es un estándar de entrada/salida para periféricos del
PC que aporta a los usuarios conexiones simples y conectividad "plug-and-play".
Desarrollado inicialmente por un consorcio de compañías líderes dentro de la industria del
PC, el USB puede acomodar simultáneamente hasta 127 dispositivos periféricos. Con un
único conector USB, en la parte posterior de los PC, reemplaza a los usuales puertos serie
y paralelo.
Las transacciones USB, generalmente, son isócronas, con dos velocidades de
transmisión: un rango de baja velocidad hasta 1.5 Mbps y un rango de media velocidad
hasta 12.5 Mbps. El USB está centrado en aplicaciones de bajo costo y alto volumen. En el
rango de baja velocid ad, el USB se centra en dispositivos interactivos, tales como ratones,
trackballs, teclados, sistema de realidad virtual, etc. El rango de velocidad media se centra
en aplicaciones ISDN y PNX, audio, transferencia de datos y video limitado. La telefonía
digital es el mayor objetivo para USB, debería tener un rango de alta velocidad de 50 hasta
1000 Mbps todavía no disponible para las necesidades de video completo y redes locales.
El cable para USB, como se muestra en la figura 46, es un simple cable con doble par
de hilos, con una señal a un nivel CMOS de 3.3 V y un par de hilos que llevan
-47-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
alimentación de 5 V (los periféricos se pueden alimentar del mismo). Los dispositivos se
incluyen al USB en una topología en estrella: varios periféricos se pueden incluir en un
concentrador llamado "hub".
Figura 46. Corte transversal del cable para USB.
Para más información: www.cypress.com/udb/index.html
www.usb.org
http://developer.intel.com/design/usb/
http://www-us.semiconductors.philips.com/usb
1.3.2.2.20 IEEE1394 Fire Wire.
El IEEE1394 Fire Wire es un bus para aplicaciones multimedia y PC. Desarrollado
por Apple Computer, ofrece alta velocidad de transmisión y un alto ancho de banda para el
transporte en tiempo real: 100, 200, 400 Mb/s para la versión IEEE1394A y para un
próximo futuro 800 Mb/s y 1.6 Mb/s. Cubre las aplicaciones de bajo coste de audio y
vídeo. Puede conectar hasta 63 dispositivos al bus con un máximo de 4.5 m entre cada
dispositivo. Soporta los dos modos de transmisión, la asíncrona (se envían los datos a una
dirección y posteriormente se recibe un dato de reconocimiento de destino) y la isócrona
(para garantizar una velocidad de transmisión establecida).
El cable Fire Wire, como se muestra en la figura 47, consta de dos pares de hilos
trenzados apantallados y dos hilos más para la alimentación y tierra. Los pares trenzados
son para llevar los datos transmitidos y el reloj.
Figura 47. Corte transversal del cable Fire Wire.
Para más información: http://www-us.semiconductors.philips.com/1349/
www.1349ta.org
-48-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.3.2.2.21 IrDA (Infrared Data Association).
La Asociación IrDA se formó para promover un estándar de comunicación por
infrarrojos. Hay mucho productos que se pueden beneficiar de las comunicaciones en
movimiento, en entornos abiertos, donde una variedad de dispositivos se pueden
comunicar mediante infrarrojos, figura 48.
Figura 48. Enlace por infrarrojos IrDA.
Típicamente la distancia de enlace es de 1 m, pero se puede agregar un LED emisor
en paralelo pudiéndose llegar a distancias de 10 m con un ángulo de visión de 17º o 30º.
Las cadencias de transferencia de datos varían dependiendo de la aplicación y como
resultado IrDA ha creado dos normas en infrarrojos. IrDA 1.0, que define el estándar de
IrDA para los productos a 115.2 kb/s, e IrDA 1.1, que define el más rápido, a 4 Mb/s. Por
el contrario, IrDA 1.1 es compatible a 115.2 kb/s con el IrDA 1.0.
En la figura 49 se muestra otra forma de comunicaciones basadas en el RS-232, se
puede implementar con emisores y receptores de infrarrojo de Hewlett Packard, con el
estándar IrDA.
Figura 49. Implementación de una conexión tipo RS-323 con IrDA.
-49-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Para más información: www.hp.com
www.sharpmeg.com
www.irda.org
1.3.2.2.22 Wireless RF 434 MHz.
Sistema de comunicación digital empleado en la radiofrecuencia. Se trata de un
transmisor integrado en un circuito, exceptuando la antena, el cristal y algunos
componentes externos, sin necesidad de ajustes de RF. La frecuencia de trabajo y la
potencia de salida son las permitidas sin necesidad de licencia, de 314 MHz (USA) a 434
MHz (Europa) en AM o FM. Tiene una entrada de datos y reloj, la velocidad de
transmisión es seleccionable entre cuatro posibilidades: 9.6 / 4.8 / 2.4 / 1.2 kbits/s. El
receptor también es un circuito integrado, con pocos componentes externos y sin ajustes
RF. El receptor dispone de un sistema para dejar dormido y activarse rápidamente, en 1
ms. La potencia de salida es de 1mW y puede trabajar en un rango de 3 a 30 m. En la
figura 50 se muestra la pareja de circuitos integrados diseñados por Motorola para esta
aplicación.
Figura 50. Transmisor y Receptor de datos de Motorola.
Para más información: www.mot-sps.com
1.4
ANTECEDENTES. EL PROTOCOLO X-10
1.4.1 Líneas de Distribución de Energía Eléctrica (Corrientes portadoras)
Si bien no es el medio más adecuado para la transmisión de datos, es una alternativa
a tener en cuenta para las comunicaciones domesticas, dado el bajo costo que implica su
uso, ya que se trata de una instalación ya existente.
Para aquellos casos en que la velocidad de transmisión no es un requerimiento, la
línea de distribución de energía eléctrica puede ser suficiente como soporte de dicha
transmisión.
-50-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Dada las especiales características de este medio, a continuación se detallan sus
principales ventajas e inconvenientes:
- Nulo costo de instalación.
- Facilidad de conexión.
- Poca confiabilidad en la transmisión de datos.
- Baja velocidad de transmisión.
El sistema está constituido por una unidad de control, que se encarga de gestionar el
protocolo, almacenar las órdenes y transmitirlas a la red; una interfase de conexión de los
equipos, es el elemento que recibe las órdenes de la unidad de control y las ejecuta; y por
un filtro requerido para evitar que las señales puedan contaminar la red eléctrica exterior a
la vivienda.
1.4.2 Tecnología X-10
X-10 es un lenguaje de comunicación que permite controlar las luces y los
electrodomésticos del hogar, mediante la utilización de tecno logía de portadoras. La
instalación es sencilla, basta conectar los módulos a la red eléctrica, quedando
interconectados sin necesidad de ningún tipo de cableado especial.
La ventaja de usar la Tecnología de Portadoras, es que el usuario puede empezar con
un producto en particular, por ejemplo un mando a distancia, y expandir luego el sistema
según sea la necesidad. Aprovechando para ello la instalación eléctrica existente de 220V
de la casa, evitando la instalación extra de cables. Se instalan los productos fácilmente, y se
asigna una de las 256 direcciones de envío y respuesta.
1.4.3 Funcionamiento del X-10
Las transmisiones X-10 se sincronizan en el paso por el cero de la corriente alterna.
Los interfaces Power Line proporcionan una onda de 50 Hz con un retraso máximo de 100
µs Desde el paso por el cero de la corriente alterna. El máximo retraso entre el comienzo
del envío y los pulsos de 120 kHz es de 50 µs.
Un 1 binario se representa por un pulso de 120 kHz durante 1 milisegundo, en el
punto cero, y el 0 binario se representa por la ausencia de ese pulso de 120 kHz. El pulso
de 1 milisegundo se transmite tres veces para que coincida con el paso por el cero en las
tres fases para un sistema trifásico.
-51-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Para una mayor claridad, las señales se muestran tal como se verían a través de un
filtro paso-alto. La forma de la curva de 50 Hz sólo se muestra como referencia. En
realidad, las señales van superpuestas con la curva de 50 Hz y su resultado es más similar
al de la figura 51.
Figura 51. Pulsos de 1 ms para la transmisión en sistema trifásico.
La transmisión completa de un código X-10 necesita once ciclos de corriente.
-Los dos primeros ciclos representan el Código de Inicio.
-Los cuatro siguientes ciclos representan el Código de Casa (letras A-P), los
siguientes cinco representan o bien el Código Numérico (1-16) o bien el Código de
Función (Encender, Apagar, Aumento de Intensidad, etc.).
Este bloque completo (Código de Inicio, Código de Casa y Código de Función o
Numérico) se transmite siempre dos veces, separando cada 2 códigos por tres ciclos de la
corriente, excepto para funciones de regulación de intensidad, que se transmiten de forma
continua (por lo menos dos veces) sin separación entre códigos. Ver Figura 52.
Figura 52. Códigos de transmisión.
-52-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Dentro de cada bloque de códigos, cada cuatro o cinco bits de código deben ser
transmitidos en modo normal y complementario en medios ciclos alternados de corriente.
Por ejemplo, si un pulso de 1 milisegundo se transmite en medio ciclo (1 binario), entonces
no se transmitirá nada en la siguiente mitad del ciclo (0 binario). Ver Figura 53.
Figura 53. Trama de mensajes.
1.5
POSIBLES SOLUCIONES Y SOLUCIÓN ADOPTADA.
1.5.1 Entorno.
Para el entorno con el que tendría que interactuar el usuario se podría haber optado
por uno de los siguientes
1) LINUX.
2) UNIX.
3) DOS.
4) Microsoft WINDOWS.
Se podría haber optado por utilizar un entorno en LINUX o UNIX, dado que su tasa
de implantación en el mercado aun no está consolidada no se podría llegar a la mayoría de
la población, o en caso de utilizar dicho sistemas operativos se obligaría a esta mayoría a
instalar un sistema desconocido para la gran mayoría.
MS-DOS es un entorno conocido por mucha gente pero que está condenado a la
desaparición, los inconvenientes que plantea, además de su desaparición, es el costo en
horas de programación que supone programar un entorno amigable para el usuario final en
este sistema operativo, además del costo a la hora de programar comunicaciones con
dispositivos externos mediante el puerto serie.
-53-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Por lo tanto, la solución adoptada es la de usar Microsoft Windows, un entorno
conocido por gran parte del usuario medio. Entorno bastante extendido y que cuenta con
buenas herramientas de programación.
1.5.2 Lenguaje de programación.
Se ha optado por utilizar Microsoft Visual Basic, dado que el realizar entornos
amigables para el usuario es una tarea bastante sencilla, con lo que se gana tiempo de
programación para implementar las tareas realmente necesarias. Además gestionan
eficientemente las comunicaciones, tanto con dispositivos externos mediante el puerto
serie, sino que también proporcionan conectividad con Internet.
1.5.3 Interface PC - dispositivos.
1) Puerto paralelo.
2) Puerto PS/2.
3) Puerto USB.
4) Puerto Wire Fire.
5) IrDA.
6) Puerto serie.
Se podría haber usado como interface entre el PC y el dispositivo actuador el puerto
paralelo del PC, pero este es un recurso bastante limitado y que normalmente esta ocupado
por impresoras o scanners. Por lo que la información tiene que gestionarse con suma
precisión y limita mucho el alcance de los datos, dado que las comunicaciones en paralelo
se usan para distancias cortas, evitando así capacidades parásitas que alteren la
información.
Se podría haber usado un puerto PS/2, pero habitualmente están ocupados por
teclado y ratón, por lo que resultaría bastante complicada su implantación en un sistema
doméstico normal.
El puerto USB presenta complicaciones a la hora de su programación, además, cada
día más, su uso está bastante solicitado por diversos periféricos, que van desde teclados,
ratones, hasta impresoras, scanners o monitores y módems.
El puerto Wire Fire es un puesto que comúnmente se encuentra en los PCs portátiles,
por lo que el campo de actuación mediante este puerto se reduce, que existe la posibilidad
-54-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
de adaptar este puerto a los PCs de sobremesa, cosa que encarece sustancialmente la
instalación.
El puerto IrDA es un puerto que está experimentando un auge dada la amplia gama
de dispositivos portables que disponen de la posibilidad de comunicar mediante infrarrojos,
pero de todos modos aun no cuenta con una implantación plausible y la interface de
adaptación a los PCs convencionales es sustancialmente más cara que otras posibles
soluciones.
Por lo tanto la solución adoptada es la de usar el puerto seria, un puerto muy
extendido, que poco a poco va ganando disponibilidad, dado que la tendencia actual es la
de implementar periféricos para puerto USB, y que las comunicaciones son sencillas de
implementar. Otra ventaja es la de disponer de múltiples controladores que disponen de
puerto USART que se puede usar para comunicar mediante RS-232C si se adapta
previamente la señal de TTL a V24 y a la inversa.
1.5.4 Suministro.
1) Suministro eléctrico independiente.
2) Red eléctrica convencional.
Se podría haber utilizado un sistema de suministro eléctrico independiente, como
pueden ser las baterías, pero esto limita la autonomía del dispositivo y resulta caro para el
usuario. También aumenta el espacio ocupado, por lo que la fabricación de las placas se
encarece.
Por lo tanto la solución adoptada es la de usar la red eléctrica convencional. Con
esto, a parte de situar el dispositivo cerca del lugar donde controlará el suministro eléctrico
de elementos externos, puede abastecerse del mismo suministro, aumentando así la
autonomía de funcionamiento, además se debe tener en cuenta que sin suministro eléctrico,
tampoco se puede alimentar a los dispositivos externos, por lo que se evita tener el
dispositivo funcionando innecesariamente.
1.5.5 Comunicaciones.
1) Bus dedicado.
2) Inalámbricas.
3) Red eléctrica.
-55-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Se podría haber optado por un bus dedicado para realizar las comunicaciones, las
opciones que se podrían haber barajado son las de un bus GPIB, un LonWork, Instabus
EIB u One Wire pero este sistema requiere la instalación de dicho bus y cablear para cada
dispositivo. Esto encarece la instalación de la vivienda y requiere de personal
especializado.
Se podría haber optado por un sistema de comunicaciones inalámbricas, descartando
las comunicaciones por infrarrojos, dado que necesitan espacio abierto, cosa que es
bastante complicado en una vivienda. O sólo considerándolas como interface entre el PC y
el dispositivo maestro, pero, aunque la implementación en el PC es sencilla, esta opción
resulta cara, y aún más si se tiene en cuenta que se debe implementar mediante el protocolo
Bluetooth. Para las comunicaciones entre dispositivos se podría haber optado por un
sistema de comunicaciones V/F – F/V el Wireless RF 434 MHz . Pero el sistema V/F-F/V
se basa en la transmisión de información analógica, cosa que comportaría un mayor
tiempos de adaptación para procesar la señal como binaria. El Wireless RF 343 MHz
supone la implementación de una antena y del dispositivo receptor cosa que aumenta
considerablemente el espacio necesario para los dispositivos.
Por lo tanto la solución adoptada es la de usar la red eléctrica de la vivienda. Con
esta opción se posibilita la utilización de los dispositivos en casi cualquier ubicación de la
vivienda de manera rápida y sin preinstalación. El usuario puede instalar el dispositivo sin
problemas y donde quiera. Como método de comunicación se adopta la solución de
modular en amplitud.
1.5.6 Procesamiento de la información.
1) Microprocesador.
2) Microcontrolador con juego reducido de instrucciones.
Se podría haber optado por utilizar un microcontrolador, pero dado el tipo de
instrucciones a implementar sería sobredimensionar el circuito, además estos dispositivos
son mucho más caros y requieren que se dispongan varios elementos externos, como
pueden ser memoria de programa e interface entrada/salida.
Por lo tanto se ha optado por utilizar un microcontrolador con arquitectura de juego
reducido de instrucciones dado que el juego de instrucciones de que dispone es más que
suficiente para las operaciones que se van a realizar. Además su coste es relativamente
bajo y tiene la memoria de programa y el interface I/O integrados. Otra ventaja es la de
disponer de un puerto USART para gestionar las comunicaciones serie, como el
PIC16F627.
-56-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.5.7 Control de los dispositivos.
1) Relés.
2) Triacs.
Se podría haber optado por interrumpir el suministro eléctrico mediante relés, pero
producen mucho ruido en la señal eléctrica para comunicaciones veloces, además son más
caros que los triacs y su tamaño influye en la placa de cada dispositivo.
La solución adoptada es la de controlar es suministro eléctrico mediante triacs,
interruptores que son fácilmente excitables usando un microcontrolador y poca intensidad.
Por su tamaño y consumo es el elemento idea para implementarlos en el circuito.
1.6
DESCRIPCIÓN GENERAL.
1.6.1 Esquema global.
El proyecto se basa en la interconexión de diversos dispositivos a la red eléctrica y
un PC. Para tal fin dicha interconexión debe seguir el esquema mostrado por la figura 54.
INTERNET
S2
S2
S2
S1
S1
S1
M
S1
Figura 54. Diagrama de conexión global.
-57-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.2 Programa.
La aplicación está formada por un conjunto de rutinas que desarrollan diversas
funciones que aportan las siguientes prestaciones:
•
Control sobre todo tipo de elementos que se abastecen de la red eléctrica
convencional.
•
Adquisición de datos que reflejan la realidad del estado de los dispositivos.
•
Almacenaje y procesamiento de los datos adquiridos.
•
Procesamiento de los datos y volcado para que el usuario obtenga
información referente al sistema.
•
Conectividad con Internet, permitiendo el control de la aplicación desde la
red.
A continuación se muestran algunos diagramas de flujo de las funciones que aportan
mayores prestaciones a la aplicación.
1.6.2.1 Principal.
La estructura del formulario que más va a utilizar el usuario va a ser la que gestiona
todas las funcionalidades de la aplicación.
Esta estructura se compone de una fase donde se inicializan los ficheros necesarios
para almacenar y transferir la información que gestiona la aplicación e inicializar las
comunicaciones con el dispositivo maestro.
Esta fase permite que la aplicación no necesite de ninguna interacción externa y la
independiza del entorno.
A continuación la aplicación iniciará la fase de eventos, donde dependiendo de la
sucesión de eventos que acontezcan en la aplicación, se llevarán acabo unas acciones
determinadas y asociadas a tales eventos.
-58-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Estos eventos se pueden dividir en cuatro categorías principales:
1. Menú de herramientas. Este evento está ligado al menú de la aplicación,
donde cada opción tiene asociada una acción. Este menú clarifica la gestión
de las prestaciones de la aplicación y da al usuario una herramienta que
permite su movilidad y facilidad de manejo.
2. Barra de herramientas. Este evento va ligado a la barra de herramientas,
donde cada icono representa una prestación de la aplicación, esta barra de
herramientas contiene las mismas posibilidades que el menú de herramientas.
3. Estado de la ventana de la aplicación. Este evento esta asociado a si la
ventana de la aplicación esta minimizada o en estado normal, de estar
minimizada se gestiona un icono que se ubica en la barra de tareas del
sistema operativo.
4. Estado de los dispositivos. Este evento está ligado a un temporizador que
controla el tiempo que ha de pasar entre encuestas de estado a los
dispositivos.
5. Estado de la programación de los dispositivos. Este evento está ligado a un
temporizador que controla el tiempo que ha de pasar entre comprobaciones
de la programación de dispositivos y el estado de éstos.
La figura 55 muestra el diagrama de flujo principal de la aplicación.
-59-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
INICIALIZAR
FICHEROS
INICIALIZAR
COMUNIACIONES
CARGAR
FORMULARIO DE
ADQUISICION DE
DATOS
NO
PULSAR
MENU
NO
PULSAR
BOTONERA
SI
NO
VENTANA
MINIMIZADA
SI
EJECUTAR ACCION
ASOCIADA
¿HAN
PASADO 5s?
SI
EJECUTAR ACCION
ASOCIADA
NO
NO
SI
GESTIONAR ICONO
EN BARRA DE
TAREAS
¿HAN
PASADO
10s?
SI
COMPROBAR ESTADO
DISPOSITIVOS
COMPROBAR
PROGRAMACION
Figura 55. Diagrama de flujo del formulario principal.
1.6.2.2 Adquisición de datos.
La adquisición de datos es un apartado fundamental para el funcionamiento de la
aplicación. A partir de los datos almacenados se procesa la información y generan los
informes correspondientes.
-60-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
El primer paso es inicializar el formulario que se encarga de adquirir los datos e
impedir que el usuario inactive la adquisición puesto que es una función crítica de la
aplicación.
Cada 5 segundos se verifica en estado de los dispositivos, si están encendidos, se
actualiza la información en función de la situación del dispositivo. Si el dispositivo está
apagado se mantiene la información almacenada con anterioridad. Si el usuario solicita que
se muestren los datos, la aplicación los mostrará
INICIALIZAR
FORMULARIO
DESHABILITAR CERRAR
FORMULARIO
NO
EVENTOS
¿HAN PASADO 5s?
CONTINÚA EN LA
FIGURA
SI
COMPROBAR ESTADO
DISPOSITIVOS
NO
¿ENCENDIDO?
SI
REALIZAR CALCULOS Y
ACUMULAR
GUARDAR
INFORMACION
NO
¿HAY SOLICITUD
DE DATOS?
SI
MOSTRAR DATOS
Figura 56. Diagrama de flujo de la adquisición secuencial de datos.
-61-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.2.3 Presentación de información.
En función de los eventos la información se puede presentar al usuario con diversos
formatos.
En principio el evento principal es el cambio en el cuadro de texto “ID”. Esto actúa
como iniciador y muestra la información con el dispositivo con dicha “ID”. La información
puede ser, según las opciones elegidas, referente a iluminación o a electrodomésticos,
consumos o tiempos, o, en caso de disponer de modo de bajo consumo, bajo consumo.
EVENTOS
NO
CAMBIO EN
TEXTO ID
NO
PULSADO “>>”
O “<<”
SI
SI
MOSTRAR
INFORMACION
GENERAL
ILUMINACION
¿”>>”?
NO
SI
MOSTRAR
INFORMACION
AVANZADA
SI
INFORMACIÓN DE
ILUMINACIÓN
NO
NO
OCULTAR
INFORMACION
AVANZADA
INFORMACIÓN DE
ELENTRODOMÉSTICOS
BAJO
CONSUMO
SI
MOSTRAR INFO BAJO
CONSUMO
¿CONSUMO?
NO
SI
MODO
AVANZADO
NO
MODO
AVANZADO
SI
MOSTRAR
INFORMACION
NORMAL
CONSUMOS
NO
SI
MOSTRAR
INFORMACION
AVANZADA
CONSUMOS
MOSTRAR
INFORMACION
AVANZADA
TIEMPOS
MOSTRAR
INFORMACION
AVANZADA
TIEMPOS
Figura 57. Diagrama de flujo de los eventos asociados la presentación de información.
-62-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.2.4 Nuevo elemento.
La creación de un nuevo elemento es una acción cotidiana que requiere que los datos
sean lo más precisos posibles y se ajusten a la realidad de la vivienda.
Tanto para luminarias como para electrodomésticos, el esquema es bastante parecido,
ya que los datos que apoyaran los cálculos con los referentes a ubicación, tiempo en
funcionamiento, consumo del elemento y una ID que le diferencia del resto de elementos
almacenados.
La aplicación verifica si los datos introducidos son correctos o si no se han
introducido datos necesarios para el funcionamiento.
Un dato crítico es la ”ID”, puesto que cada vez que se elimina un elemento queda su
“ID” libre y el programa, por defecto, rellena estos huecos, pero puede ser que el usuario
vea la necesidad de agrupar los elementos y asignar grupos de “ID” para gestionar dichos
grupos. Con esta finalidad se permite al usuario que fuerce la “ID”, asignando así una
determinada para aquel elemento. La aplicación comprueba, no obstante, que la “ID” no se
duplique, evitando así conflictos.
Tras haber introducido la información para la luminaria, se procede a la
configuración específica de los parámetros del elemento, esta configuración puede ser
manual, introduciendo los datos según se necesiten, o mediante un catálogo que
introduciría los datos automáticamente.
Debido a pormenores de la programación, la actualización de estos cambios se debe
realizar manualmente en la inserción de luminarias, una vez introducidos y verificados los
datos. Ya que de no ser así no se generaría un registro con los datos de consumos, tiempos
ni propiedades del elemento introducido.
En el caso de los electrodomésticos, la configuración de las características se realiza
de manera manual y esta información se actualiza automáticamente
-63-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
PULSAR BOTON NUEVO
REDIMENSIONAR FORMULARIO
MENSAJE ERROR
DATOS
CORRECTOS
NO
SI
NO
SE FUERZA ID
SI
COMPROBAR QUE
LA ID NO ESTE
DUPLICADA
CALCULAR ID
NO
¿DUPLICADA?
SI
ALMACENAR DATOS
MENSAJE ERROR
RESTAURAR FORMULARIO
NO
LUMINARIA
SI
CAMBIAR TIPO
LUMINARIA
NO
AUTOMATICO
SI
ACCEDER A
CATALOGO
INTRODUCIR
DATOS
SELECCIONAR
LUMINARIA
CORRECTO
MENSAJE ERROR
NO
SI
ACTUALIZAR DATO
MANUALMENTE
GRABAR ID EN
DISPOSITIVO
FIN
Figura 58. Diagrama de flujo de la creación de un nuevo elemento.
-64-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.2.5 Transmisión de datos a Internet.
Para la transmisión de datos es necesaria la existencia del algún enlace entre el PC e
Internet, ya sea mediante módem sobre línea RTB o conexión de banda ancha, aunque
dependiendo del tipo de conexión, la velocidad de transferencia se verá afectada
seriamente y los tiempos de refresco no se cumplirán.
La configuración del servidor se realiza en un paso previo y se almacena en un
fichero, el cual se carga al iniciar el proceso de transmisiones. A parte de esta información
es necesario volcar la información referente al estado de los dispositivos sobre un archivo
que hará de enlace entre la información que se envía al servidor y la que se recibe de este.
El primer paso es enviar la información actualizada al servidor para que desde
Internet se tenga una información fiable, si el envío de datos es correcto se sigue con el
resto del proceso. Si el envío, por el contrario, no es correcto, se vuelve a enviar y se
acumula el error.
Tras un envío correcto, se produce una espera de 20 segundos, tiempo considerable
para no saturar las vías de transmisión, y una vez transcurrido este periodo se descarga la
información y se actualiza el fichero que gestiona la aplicación con los datos recibidos.
Este proceso de descarga se repite hasta 3 veces, una vez finalizadas las descarga s se
vuelve a enviar la información para que se tenga constancia de que los cambios solicitados
se han realizado.
Tras cada error de transferencia se incrementa un contador interno, al llegar a un
número de errores determinado (en esta caso de 10), se apagan todos los dispositivos como
medida preventiva para evitar cualquier tipo de incidente en la instalación.
A continuación, en la figura 59 se muestra el diagrama de flujo de la transmisión de
datos.
-65-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
CARGAR
INFORMACIÓN DE
SERVIDOR FTP
COPIAR
INFORMACIÓN EN LA
BD A ENVIAR
ENVIAR
INFORMACIÓN AL
SERVIDOR
NO
CORRECTO
SI
INCREMENTAR
CONTADOR ERRORES
ACTIVAR
TEMPORIZADOR
UMBRAL DE
ERRORES
NO
¿HAN PASADO
20s?
SI
SI
APAGAR TODOS LOS
DISPOSITIVOS
DESCARGAR BASE DE
DATOS
INCREMENTAR
CONTADOR
NO
¿TOCA ENVIAR
INFORMACIÓN?
SI
Figura 59. Diagrama de flujo de transmisión de datos a Internet.
-66-
NO
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.2.6 Almacenamiento de datos.
El almacenaje de datos es fundamental para poder procesar la información y
mostrarla al usuario.
La secuencia de almacenaje de datos comienza por buscar si existe información
previa sobre el dispositivo en general y para esa fecha en particular.
De ser así, se comprueba si el dispositivo cuenta con un modo de ahorro de energía y
se guardan los datos en concordancia con esta información.
Si no existe información anterior, se genera un nuevo registro, ya sea simplemente la
fecha o el fichero completo para el dispositivo. Una vez gene rada la logística necesaria se
procede a procesar el estado del dispositivo.
Si el dispositivo está encendido se comprueba si el dispositivo controla a una
luminaria con la prestación de bajo consumo. De controlar una luminaria que no disponga
de esta prestación o de controlar un electrodoméstico, se actualiza la información normal
asociada al dispositivo.
Si el dispositivo controla una luminaria que dispone de modo de bajo consumo se
comprueba si está activado dicho modo. Si no está activado se tratará la información como
la de un elemento normal y se actualizará la información asociada al dispositivo.
Si el modo de bajo consumo está operando, se tendrá en cuenta a la hora de
almacenar o actualizar la información asociada al dispositivo.
Esta operación de almacenamiento de datos se realiza cada 5 segundos dado que el
control de estos elementos en una instalación convencional de una vivienda no resulta
crítico.
A continuación, en la figura 60, se muestra el diagrama de flujo del almacenaje de
datos.
-67-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
SE BUSCA SI YA EXISTE UN
REGISTRO DEL DISPOSITIVO
Y SI LAS FECHAS COINCIDEN
NO
CORRECTO
SI
BAJO
CONSUMO
NO
NO
SI
ENCENDIDO
SE GUARDAN DATOS
GENERALES Y BAJO
CONSUMO
SE CONSERVAN
DATOS
ANTERIORES
SI
LUMINARIA &
BAJO
CONSUMO
NO
SI
ACTIVADO
BAJO
CONSUMO
SI
SE ACTUALIZA LA
INFORMACIÓN DE
BAJO CONSUMO
FIN
NO
SE
ACTUALIZA
INFORMACIÓN
NORMAL
SE CREA NUEVO
REGISTRO
Figura 60. Diagrama de flujo de almacenamiento de datos.
1.6.2.7 Ficheros de apoyo.
La aplicación se sirve de diversos tipos de archivos de apoyo para realizar las
operaciones y guardar información y configuraciones.
A continuación se muestra una tabla resumen con los ficheros y su función.
-68-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
UBICACIÓN
MEMORIA DESCRIPTIVA
NOMBRE
TIPO
FUNCIÓN
Proporciona información de
tipos de luminarias para
poder
aplicar
una
configuración
automáticamente.
\bases\
“catalogo.mdb”
Base
de
datos
de
Microsoft
Access 97.
\bases\
“info07.mdb”
Base
de Gestiona el estado de los
datos
de dispositivos y su información
Microsoft
asociada.
Access 97.
\ilum\
“ilu” + nº dispositivo + Datos.
”.dat”
Archico de registros donde
se guarda un histórico con
datos
de
tiempo
en
funcionamiento, potencia y
fecha de cada dispositivo (un
archivo por dispositivo).
\ilum\
“programa.dat”
Datos.
Archivo de registros donde
se almacena la información
referente a la programación
de los dispositivos.
\ilum\
“punts.dat”
Texto.
Archivo donde se guarda
información
para
pode
realizar gráficas.
\electro\
“ele” + nº dispositivo + Datos.
”.dat”
Idem
pero
electrodomésticos.
con
\electro\
“programa.dat”
Datos.
Idem
pero
electrodomésticos.
con
\electro\
“punts.dat”
Texto.
Idem
pero
electrodomésticos.
con
\
“PFC.exe”
Ejecutable.
Ejecutable
aplicación.
\
“AyudaHTML.chm”
Ayuda
en Archivo que muestra la
formato
ayuda
referente
al
HTML
de funcionamiento y manejo de
Windows.
la aplicación.
\
“plano.bmp”
Mapa de bits Representa el plano de la
de Windows. vivienda.
\
“ConfigInet.dat”
Texto.
Carpeta
sistema
operativo+
del “info.mdb”
Contiene
referente
internet.
que
inicia
la
la información
al servidor de
Base
de Es una copia del archivo que
datos
de contiene la información
Microsoft
referente a los dispositivos
-69-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
“\PFC\”
Access 97.
(ID, ubicación, tipo, etc.)
gerenada para transferir a un
servidor.
Carpeta
del “info2.mdb”
sistema
operativo+\bases\
Base
de
datos
de
Microsoft
Access 97.
Es el archivo descargado del
servidor que contiene la
información referente a los
dispositivos (ID, ubicación,
tipo, etc.) que se copiará en
el archivo que utiliza la
aplicación
Servidor
Varios.
Archivos necesarios para el
control de la aplicación
desde Internet.
“iluminación.asp”
“cambio.asp”
“electrodomesticos.asp”
“elecambio.asp”
“advbs.inc”
“index.html”
“login.asp”
“logo.gif”
“logo_etse.jpg”
Tabla 4. Resumen de los archivos de apoyo.
1.6.3 Dispositivos.
1.6.3.1 Problema del módem de eléctrica.
1.6.3.1.1 Descripción.
Existe un bug en el diseño digital de este dispositivo, en muchas aplicaciones son
causa daños importantes en la información, pero sí a altas velocidades de transferencia de
datos, p.e. 1200 bauds, donde los tiempos de desmodulación son críticos, este es el caso de
este diseño.
El problema aparece cuando se aplica una señal al pin DATAIN completamente
asíncrona al reloj digital del TDA5051A.
-70-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Se puede dar este caso en uno de los casos siguientes:
- El uso de una señal de datos asíncrona, como puede ser el puerto serie de un PC
conectado al pin DATAIN del TDA5051A sin una señal que sincronice los datos con el
reloj digital interno de este dispositivo.
Figura 61. Esquema de conexión normal entre un PC y el módem de red.
- El uso de un microcontrolador que no comparta el mismo reloj digital con el
módem.
Figura 62. Esquema de conexión entre un microcontrolador y el módem de red.
En estos casos, una cierta relación entre el flanco de subida de DATAIN y el reloj
digital del módem provoca un mal comportamiento del modulador. Esto puede desembocar
en un error al generar la señal portadora, perdiendo la “cola” de la desmodulación como se
muestra en las figuras
-71-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 63. Comportamiento normal de la modulación de la portadora.
Figura 64. Operación incorrecta de la modulación, la “cola” de la portadora se pierde.
Este problema tiene dos consecuencias principales:
- La pérdida de la “cola” producirá un final de modulación abrupto, causando que
el espectro de la señal TX ser más largo que el que se espera de una señal normal.
-72-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
- El módem receptor desmodulará un bit menos de los esperados, esto puede
causar una incorrecta detección del nivel del bit, especialmente a altas tasas de velocidad,
1200 bauds como en este caso.
Figura 65. Muestra de la distorsión que se produce en el dispositivo receptor tras una mala
modulación. El canal A1 muestra el dato entrante por el pin DATAIN en el dispositivo
emisor y el canal A2 muestra el dato saliente del pin DATAOUT en el dispositivo receptor.
1.6.3.1.2 Solución.
Para solucionar esto existen dos posibilidades. Para ambas el principio es definir la
relación entre el reloj interno del módem y el origen de los datos serie.
1- Usar el mismo reloj para el microcontrolador y para el módem de red.
La idea es la de compartir la misma señal de reloj digital entre ambos dispositivos.
Para ello se alimentan la señal de reloj del microcontrolador y se comparte con el módem
de red. O aplicar una señal de reloj externa al módem de red y compartirla con el
microcontrolador.
Figura 66. Señal de reloj al microcontrolador y este sincroniza las comunicaciones con el
módem.
-73-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 67. Señal de reloj al módem y este sincroniza las comunicaciones con el
microcontrolador.
La solución adoptada es la de usar el reloj externo para el módem de red y
sincronizar la señal con el microcontrolador.
2- Usar un dispositivo externo para sincronizar los datos entrantes por DATAIN y el
módem de red.
Por la topología del origen de datos, en este caso el puerto serie del PC, no es posible
sincronizar los datos compartiendo reloj digital. La solución que se propone para estos
casos es la de sincronizar los datos de entrada al módem de red y el reloj digital de éste
mediante un dispositivo externo que gestiona los datos entre el módem de red y el origen
de datos, el puerto serie del PC
Este dispositivo puede ser un 74 HCT/HC/LS estándar con un encapsulado SOT-353
para ahorrar espacio, el que se va a utilizar es el 74AHCT1G79GW de “Philips”
Figura 68. Esquema de conexión del 74AHCT1G79GW entre el módem de red y el PC.
Con cualquiera de los métodos aplicados para resolver la desincronización de datos
se obtiene una señal más nítida y que el módem de red interpreta correctamente.
-74-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 69. Muestra de la señal que se produce en el dispositivo receptor tras sincronizar
con el 74AHCT1G79GW. El canal A1 muestra el dato entrante por el pin DATAIN en el
dispositivo emisor y el canal A2 muestra el dato saliente del pin DATAOUT en el
dispositivo receptor.
Así pues, para evitar los problemas derivados a alta velocidad de de transferencia, se
incluirá el 74AHCT1G79GW para sincronizar la comunicación entre el dispositivo
Maestro y el PC. Ya para resolver el problema de comunicación entre el microcontrolador
y el módem de red se aplicara la señal de CLK OUT del módem en el pin CLK IN del
microcontrolador.
-75-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.3.2 Circuito Maestro.
1.6.3.2.1 Estructura.
RED ELÉCTRICA
ALIMENTACIÓN
220 V / 50 Hz
RED ELÉCTRICA
220 V / 50 Hz
PC
Vcc
TXD
RXD
INTERFACE
MODEM
TXD
RXD
Figura 70. Esquema del circuito Maestro.
Este circuito se compone de varios módulos funcionales y tiene tres funciones bien
definidas: alimentar a los elementos del circuito, facilitar una interface entre el PC y los
dispositivos y comunicar diversos dispositivos con el PC.
El PC está conectado con el resto del dispositivo mediante una interface que adapta
la señal asíncrona de datos para sincronizarla con el módem de red eléctrica. Aparte de
sincronizar los datos, la interface aísla eléctricamente el puerto seria del PC evitando que
sobretensiones dañen la placa base del PC. Esta interface recibe los datos del PC y una
línea d alimentación para evitar al máximo la interacción entre el PC y la línea eléctrica de
la vivienda. Al mismo tiempo recibe alimentación, adaptada por el módulo de
alimentación, de la red eléctrica para suplir las deficiencias d e la alimentación del puerto
seria, que sólo puede suministrar corriente suficiente para pocos elementos.
La interface envía lo s datos al módem de red y este modula la señal en amplitud y la
inserta en la red eléctrica. Y a la inversa, recibe los datos desmodulados del módem y los
envía al PC para que éste los procese.
El módem es el encargado de modular y desmodular la señal, de manera conveniente,
para la correcta transmisión de los datos.
-76-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
La etapa de alimentación se encarga de obtener suministro eléctrico de la red
convencional y adaptarla mediante una red rectificadora para, posteriormente, distribuirla a
los diferentes elementos del circuito.
1.6.3.2.2 Descripción de funcionamiento.
1.6.3.2.2.1 Etapa de alimentación.
Figura 71. Esquema electrónico de la etapa de alimentación.
El circuito toma el suministro principal de la red eléctrica convencional. Para evitar
problemas de sobretensiones o picos de corriente que puedan afectar a los elementos del
circuito se dispone de dos elementos: un fusible que evita las corrientes dañinas y un
supresor de sobretensiones (MOV – Metal Oxide Varistor) que opera hasta 250 V. Para
más seguridad, se aísla el circuito mediante un transformador, que pasa de la tensión de red
a una tensión de 6 V, con una potencia aparente de 1 VA, suficiente para el suministro del
circuito. Para rectificar la tensión se utiliza un puente de diodos y un condensador que
elimina el rizado. El regulador de tensión estabiliza la tensión que proviene de la etapa
rectificadora a 5 V, suministrando la corriente necesaria que depende del modelo de
regulador, que va de los 100 mA, para el circuito maestro, a 500 mA, para los circuitos
satélites.
-77-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.3.2.2.2 Etapa de interface.
Figura 72. Esquema electrónico de la etapa de interface.
La interface tiene como objetivo el servir de enlace entre el PC y la circuitería y la de
alimentar parte de esta circuitería mediante el puerto serie.
Las comunicaciones entre el módem y el PC necesitan una sincronización en la
transferencia de datos, dados los problemas originados por la transmisión asíncrona de
datos a 1200 bps, y una adaptación de los niveles de tensión de TTL a V24 y a la inversa,
ya que el módem y el microcontrolador de los dispositivos satélite interpretan un "0"
lógico como 0V y un "1" lógico como 5 V y el estándar RS-232C establece que un "0"
lógico se corresponde a una tensión que va desde los -5 V a los -15 V y un "1" lógico, de
los 5 V a los 15 V, según información del puerto seria facilitada por IBM.
Dado la configuración del estándar RS-232C, hay 3 líneas que son de salida de datos,
es decir, de salida de tensión, por lo que se pueden usar para suministrar corriente a los
integrados del circuito. Estas líneas son DTR (Data Terminal Ready), RTS (Request To
Send) y TD (Transmit Data). Aunque el voltaje de dichas salidas decrece a medida que se
requiere corriente de ellos a una tasa de 1 V por cada mA de incremento en la carga. En un
modo operativo normal, las señales DTR y RTS dan un voltaje de +12V. La señal TD
aserta un “1” lógico cuando no se envían datos, lo que significa que la mayor parte del
tiempo tiene una tensión negativa.
El puerto serie de un PC es el elemento ideal para el suministro de corriente, esto se
puede comprobar en los ratones serie que usan las líneas DTR (Data Terminal Ready) y
RTS (Request To Send) para generar un suministro de +5V para el microcontrolador del
ratón.
-78-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Se usan diodos para sustraer corriente de las líneas DTR y RTS y alimentar, a través
de resistores, el resto de integrados. Con esto se consigue una tensión regulada de 5V y 15
mA. La línea DTR corresponde al pin 4, la línea GND corresponde al 5 y la línea RTS al
pin 7.
El módem envía una trama de datos al PC, esta señal pasa a través de un
optoacoplador PC817, de bajo consumo, que aísla eléctricamente el puerto seria del PC de
una posible sobretensión en el circuito que pueda dañar la placa del PC. Con este paso, la
información ha sufrido una transformación lógica, dado que el optoacoplador invierte la
señal, esto tiene en cuenta a la hora de transmitir/enviar el mensaje transformando la
información invertida en información útil.
La señal se adapta de TTL a V4 mediante un MAX233A, que como particularidad se
puede destacar la ausencia de condensadores externos, cuestión que abarata costes y reduce
el espacio necesario en la placa. Esta señal es recibida por el puerto serie del PC y
procesada por la aplicación instalada en el PC.
Si es el PC el dispositivo que envía una trama de datos al módem, esta señal pasa a
través de un MAX233A que adapta la señal de V24 a TTL. Tras esto pasa por un
optoacoplador 6N139, de bajo consumo, que aísla eléctricamente los dispositivos e invierte
la señal. La señal se sincroniza, mediante un 74AHCT1G79 y el reloj interno del módem
de red, para evitar problemas de comunicación asíncrona a 1200 bps, para, finalmente,
llegar al módem de red.
1.6.3.2.2.3 Etapa de comunicación.
La etapa de comunicación se encuentra dividida entre el elemento que genera la señal
de comunicación y la estructura que adapta la señal a la red eléctrica.
Como muestra la figura 73, en la entrada de alimentación, se sitúan dos
condensadores con la misión de de prevenir una distorsión extra de la señal de salida y
proporcionar un buen desacoplamiento de la línea de alimentación. Es conveniente
situarlos lo más próximos posible.
Para generar una frecuencia de muestreo de la ROM para modular la señal y generar
una señal de reloj para sincronizar comunicaciones con microcontroladores, se utiliza un
oscilador externo compuesto por un cristal de cuarzo.
-79-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Figura 73. Esquema electrónico de la etapa de comunicación. Subetapa módem de red.
La red de acoplamiento con la red eléctrica consta de una red LC, un transformador
de alta frecuencia y una protección de transitorios y de sobretensiones.
La red LC (Lp y Cp en paralelo) se debe comportar como filtro paso banda para la
frecuencia de la portadora, no proporciona aislamiento para la línea de comunicaciones. El
filtro debe suponer una baja impedancia, para mantener esta condición se incorpora en
paralelo una resistencia Rp de bajo valor.
Para desacoplar la señal DC de las líneas de transmisión y recepción de datos se
utilizan dos condensadores, CdTx par ala de transmisión y CdRx para la de recepción. Los
valores de dichos condensadores no son críticos, pero el condensador de la línea de
transmisión debe proporcionar una baja impedancia para la frecuencia de la portadora
(menos de 1 Ω).
El transformador de alta frecuencia, además de proporcionar asilamiento respecto a
la red eléctrica, realiza la función de filtro para la recepción y la transmisión.
-80-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
El condensador tipo X2 (Cs) y la bobina Ls se utilizan para acoplar la señal a la
línea eléctrica. El condensador debe ser el apropiado para la tensión a la que se va a operar
y la bobina debe tener una baja resistencia en serie. Esto en conjunción con los elementos
de la etapa de alimentación (MOV y fusible) son el sistema de protección y acoplamiento
de las comunicaciones y la red eléctrica.
Para evitar los transitorios de voltaje negativo que podría destruir el amplificador de
salida del módem, se utiliza un supresor de transitorios unidireccional.
Figura 74. Esquema electrónico de la etapa de comunicación. Subetapa de acoplamiento.
-81-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.3.2.3 Descripción de elementos.
1.6.3.3 Circuito Satélite, 1 salida.
1.6.3.3.1 Estructura.
RED ELÉCTRICA
220 V / 50 Hz
ALIMENTACIÓN
RED ELÉCTRICA
220 V / 50 Hz
µCONTROLADOR
MODEM
TXD
RXD
LED
RED ELÉCTRICA
RED ELÉCTRICA
220 V / 50 Hz
220 V / 50 Hz
SENSOR
ACTUADOR
Figura 75. Esquema del circuito Satélite de 1 salida.
Este dispositivo cuenta con varias etapas bien diferenciadas con unas funciones
determinadas: el suministro de energía a los elementos del circuito, la comunicación con el
dispositivo maestro, la gestión y procesamiento de las tramas y la actuación sobre el
suministro eléctrico de elementos externos al dispositivo.
La etapa de alimentación actúa igual que en el dispositivo maestro, utiliza la red
eléctrica convencional para aportar un suministro continuo de corriente. Pero en este caso
las necesidades energéticas son mayores, por lo que el regulador deberá ser capaz de cubrir
la demanda de corriente.
La etapa de comunicaciones mediante el módem de red eléctrica proporciona
conectividad a través de la red con el dispositivo maestro y es el elemento esencial en las
comunicaciones entre dispositivos, su funcionamiento es el mismo que en el dispositivo
maestro pero con l particularidad de que la línea CLK va conectada a la línea CLK IN del
microcontrolador para sincronizar la transferencia de datos.
-82-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
La etapa de microcontrolador gestiona las tramas recibidas y, dependiendo del tipo
de mensaje, procesa la información que contienen y aplica el comando requerido por el
programa principal.
La etapa de actuador se encarga de actuar directamente sobre el suministro de red
eléctrica del elemento externo, controlando así su estado a modo de interruptor de
corriente.
La etapa de sensor comprueba que la acción que ejecuta el microcontrolador tiene
efecto sobre el suministro de corriente del elemento externo, siendo este el que indicará el
estado del dispositivo y evitando, que si el “interruptor” está activo y el elemento externo
está inactivo, el microcontrolador suministre una información errónea al programa
principal.
Existe una última etapa que se encarga de habilitar la grabación de una ID
determinada en el microcontrolador para que sólo procese las tramas que contengan dicha
ID.
1.6.3.3.2 Descripción de funcionamiento.
1.6.3.3.2.1 Etapa µControlador.
Figura 76. Esquema electrónico de la etapa de µControlador.
-83-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
El microcontrolador gestiona las tramas recibidas, las procesa y aplica la orden
recibida desde el programa principal, tras recibir una trama, comprueba su significado.
Estas tramas pueden ser para encender el dispositivo en modo normal, para encender el
dispositivo en modo bajo consumo, para apagar el dispositivo o para grabar una nueva ID
en la EEPROM del microcontrolador.
Dependiendo de la trama, la acción que ejerce sobre el triac que controla el
suministro eléctrico al elemento externo será la de excitar el triac para suministrar corriente
o dejar de excitarlo para cortar el suministro.
Una vez aplicada la orden, el microcontrolador envía una trama donde indica el
estado actual del elemento externo según la información que recibe del sensor de efecto
hall, que indica si circula o no corriente en la línea que suministra alimentación al
dispositivo externo que se pretende controlar. Para evitar oscilación de la información en
equipos que dispongan de electrónica para rectificar la señal, se muestrea periódicamente
la señal enviada por el sensor Hall y se busca un patrón que se utilizará para determinar si
circula corriente o no por el conductor.
1.6.3.3.2.2 Etapa de grabación.
Figura 77. Esquema electrónico de la etapa de grabación.
Para indicar al dispositivo que la siguiente trama que indique al microcontrolador
adquirir una nueva ID, se dispone de un interruptor que maneja el usuario. Una vez
activado el modo de grabación se enciende un LED rojo que indica que el dispositivo está
en dicho modo. La resistencia limita e induce corriente a través del LED para que este se
excite y emita luz cuando en la resistencia se produzca una caída de tensión.
-84-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.3.3.2.3 Etapa de sensor.
Figura 78. Esquema electrónico de la etapa de sensor.
Para verificar que la orden expedida por el programa principal se cumple, este
elemento comprueba si existe corriente en la línea de suministro eléctrico a elementos
externos.
El microcontrolador verificará la señal enviada por un interruptor Hall A3212UA y
con esta información implementará la trama de respuesta al programa principal.
El campo magnético generado por el paso de la corriente eléctrica se amplifica
mediante un toroide hasta asumir un campo magnético suficiente como para hacer
reaccionar el sensor Hall con dicho campo.
1.6.3.3.2.4 Etapa de actuador.
Figura 79. Esquema electrónico de etapa de actuador.
Se compone de un triac (TRIAC1) que opera 10 mA y un fusible para evitar
problemas con la red eléctrica. Si el microcontrolador debe excitar al triac, en el pin
correspondiente aserta un "1" lógico durante el tiempo necesario. Este "1" lógico
-85-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
representa 5 V en DC, el triac necesita 10 mA para cerrar el circuito y permitir así que el
elemento externo reciba suministro eléctrico. Para ello se usa una resistencia limitadora
que, a partir de la tensión en el pin del microcontrolador y mediante la ley de Ohm,
proporciona la corriente necesaria al triac para cumplir su función.
1.6.3.3.3 Descripción de elementos.
1.6.3.4 Circuito Satélite, 2 salidas.
1.6.3.4.1 Estructura.
RED ELÉCTRICA
220 V / 50 Hz
ALIMENTACIÓN
RED ELÉCTRICA
220 V / 50 Hz
µCONTROLADOR
MODEM
TXD
RXD
LED
ACTUADOR1
SENSOR
RED ELÉCTRICA
ACTUADOR2
220 V / 50 Hz
Figura 80. Esquema del circuito Satélite de 2 salidas.
Este dispositivo cuenta con casi los mismos elementos y además añade un actuador
más para poder controlar el modo de bajo consumo de módulos especiales con dos entradas
que tienen esta prestación.
-86-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
La manera de realizar las funciones es la misma que en el dispositivo anterior, pero
en este, además, se debe actuar sobre otra línea de suministro eléctrico del elemento
externo. Tal y como se puede observar en la figura 81.
Figura 81. Esquema electrónico de etapa de actuador.
1.6.3.5 Trama de mensajes.
Las tramas de mensaje entre el PC y el microcontrolador se componen de 4 bytes
cada una. Las tramas tienen una estructura idéntica exceptuando segundo carácter que
indica que el mensaje se envía desde el PC o desde el µcontrolador.
A continuación, en la tabla 5, se muestra un esquema resumen de las partes de la
trama su el significado.
VALOR
HEXADECIMAL
DESCRIPCIÓN
TXD
12
Indica el inicio de una nueva trama
enviada al µcontrolador desde el PC.
RXD
14
Identificador de que el mensaje se
envía desde el µcontrolador al PC.
ID
XX
Codifica la identidad del dispositivo
emisor o receptor.
TIN
XX
Indica el tipo de dispositivo y codifica
las
instrucciones
del
PC
al
µcontrolador. 1 si es electrodoméstico,
0 si es lumiaria.
NOMBRE
-87-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
TIS
XX
Indica el tipo y
µcontrolador al PC.
el
estado
del
BCC
XX
Es el byte de detección de errores.
Realiza un checksum y si no es
correcto, la trama se desestima.
Tabla 5. Resumen de componentes de las tramas.
A continuación, en las figuras 82 y 83 se muestran los esquemas de las tramas de
mensajes entre el PC y el µcontrolador.
TXD
TIN
ID
BCC
Figura 82. Trama de mensaje de enviado por el PC.
RXD
TIS
ID
BCC
Figura 83. Trama de mensaje de respuesta del microcontrolador.
1.6.3.5.1 Determinación del tipo e ID de un dispositivo.
La aplicación, para aumentar el número de dispositivos que puede controlar,
distribuye los dispositivos en dos subredes de dispositivos según sean luminarias o
electrodomésticos. Por esto, el receptor debe ser capaz de interpretar los bytes que indican
la identidad y el tipo y contrastarlos con que los que tiene almacenado en la EEPROM del
µcontrolador.
El tipo de dispositivo se indica en el bit de más peso del byte TIN o TIS, si este bit es
“0”, el tipo asociado es el de luminaria, de lo contrario, el tipo asociado es el de
electrodoméstico.
número de dispositivos = tipos ⋅ bits libres = 2 ⋅ (2 8 − 1) = 510 dispositivos
(1)
Este número es orientativo puesto que el ancho de banda proporcionado por el
módem de red y el tiempo de scan del PC es reducido. Pero estos elementos se pueden ir
modificando a medida que nuevas tecnologías aparezcan en el mercado hasta conseguir
controlar este número de dispositivos.
-88-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.6.3.5.2 Intrucciones del PC.
El PC es capaz de iniciar 5 tipos de instrucciones:
1. Encender dispositivo.
2. Encender dispositivo en modo bajo consumo.
3. Apagar dispositivo.
4. Grabar ID en dispositivo.
5. Consultar estado de dispositivo.
A continuación se muestra una tabla resumen con el valor del byte TIN dependiendo
de la instrucción emitida por el PC.
INSTRUCCIÓN
VALOR DEL
BYTE TIN
Consultar estado de dispositivo.
X0
Encender dispositivo.
X1
Apagar dispositivo.
X2
Encender dispositivo en modo bajo consumo.
X3
Grabar ID en dispositivo.
X4
Tabla 6. Relación instrucción/byte.
La X indica que este campo es indefinido, estas instrucciones pueden aplicarse tanto
a electrodomésticos como a luminarias.
1.6.3.5.3 Status del dispositivo.
El controlador es capaz de distinguir y enviar cuatro estados posibles en respuesta a
una petición del PC.
1. Encendido.
2. Encendido en modo bajo consumo.
3. Apagado.
4. Nueva ID grabada.
-89-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
A continuación se muestra una tabla resumen con el valor del byte TIS dependiendo
de la instrucción emitida por el PC.
VALOR DEL
BYTE TIS
STATUS
Encendido.
X0
Apagado.
X1
Encendido en modo bajo consumo.
X2
Nueva ID grabada.
X3
Tabla 7. Relación status /byte.
La X indica que este campo es indefinido, estas instrucciones pueden aplicarse tanto
a electrodomésticos o a luminarias.
1.6.3.5.4 Cálculo de BCC (Block Check Calculation)
Es la suma en módulo 256 de los bytes comprendidos entre el primer y el último byte
antes del BCC.
Los pasos a seguir son los siguientes:
1. Sumar todos los bytes en decimal.
2. Dividir el resultado por 256 y el resto es el BCC.
En el caso de los mensajes enviados por el PC, el µcontrolador tendrá el siguiente
cálculo :
BCC =
(TXD + TIN + ID)
(2)
256
En el caso de los mensajes enviados por el µcontrolador, el cálculo a realizar por el
PC será el siguiente:
BCC =
(RXD + TIS + ID)
256
-90-
(3)
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
Si el BCC calculado tras la recepción de una trama no se corresponde con el byte
BCC transmitido al final de la trama, la trama se rechaza.
1.6.3.5.5 Secuencia de comunicación entre PC y µcontrolador.
La secuencia de comunicación se compone de los siguientes pasos:
El PC inicia el polling codificando una trama para cada dispositivo implementado en
la aplicación. Calcula el BCC y envía el mensaje a toda la red de dispositivos.
Todos los dispositivos reciben el mensaje y calculan el BCC de la trama recibida. De
ser correcto, determinan si el mensaje va dirigido a ese dispositivo o no. Si no es correcto,
se desestima la trama.
Si es el dispositivo destinatario, procesa la instrucción que hay en la trama y la
ejecuta. Tras esto comprueba el estado en e que se encuentra el elemento externo que se
controla y se codifica la información en una trama que se vuelve a enviar a la red.
Todos los dispositivos y el PC la reciben y calculan el BCC, y si es correcto sólo el
PC será el destinatario y se encarga de actualizar la información de estado recibida. Si no
es correcto, se desestima la trama.
Tras esto el PC vuelve a repetir la operación. Para evitar colapsar la red por el retraso
en la recepción de un mensaje, se dispone de un tiempo reducido para esperar un mensaje
de respuesta. Una vez vencido este tiempo, se envía un mensaje a otro dispositivo y se
espera respuesta, y dado que cada trama de respuesta lleva codificado la identidad del
dispositivo emisor, se evitarían problemas de información cruzada o desplazada en el
tiempo.
La diferencia entre tratar una lámpara incandescente radica en que para una lámpara
de descarga o cualquier dispositivo electrónico, la potencia medida es la eficaz, por lo que
el µcontrolador debe ir muestreando los picos de campo magnético y establecer un patrón
para determinar si está en funcionamiento o no. En el caso de las lámparas incandescentes,
la intensidad es más regular y se puede cuantificar de inmediato.
-91-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
INICIO TRANSMISIÓN
PC CODIFICA LA
T RAMA CON TIPO, ID
E INSTRUCCIÓN Y
CALCULA EL BCC
ENVIA LA TRAMA
LOS
DISPOSITIVOS
RECIVEN LA TRAMA
CALCULAN EL BCC Y
LA COMPARAN CON
EL DE LA TRAMA
CORRECTO
TODOS RECIBEN LA
TRAMA, PERO SÓLO
EL PC RECONOCERÁ
EL DESTINATARIO
PROCESAN TIPO E ID
CALCULAN EL BCC Y
LA COMPARAN CON
EL DE LA TRAMA
ES EL
DISPOSITIVO
CORRECTO
EJECUTAR
INSTRUCCIÓN
DESCARTAR
TRAMA
ANALIZAR ESTADO
ANALIZAR ESTADO
ACTIALIZAR
INFORMACIÓN
CODIFICAR TRAMA
CON TIPO, ID Y STS Y
CALCULAR EL BCC
ENVIAR LA TRAMA
Figura 87. Diagrama de flujo del proceso de comunicación.
-92-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1.7
MEMORIA DESCRIPTIVA
PRESCRIPCIONES TÉCNICAS.
1.7.1 Entorno.
Para que la aplicación pueda desempeñar todas sus funciones correctamente requiere
que la plataforma sopo tenga varías características.
La primera es que el sistema operativo que contenga la aplicación de be ser
Microsoft Windows 98 o superior.
La segunda es la de tener un módulo que proporcione conectividad entre bases de
datos de Microsoft Access y programación ADO. Para esto se debe contar o bien con el
paquete ofimático que contenga dicha aplicación o instalar un programa que proporciones
las mimas funcionalidades de conectividad. La información necesaria para entender como
utilizar e instalar dichas aplicaciones se puede encontrar en:
http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28001860
http://msdn.microsoft.com/library/default.asp?url=/library/enus/odeopg/html/deovrworkingwithdataaccesscomponentsofofficesolution.asp
http://www.microsoft.com/com/tech/dcom.asp
Para facilitar el acceso a estas aplicaciones, en el soporte que contiene el instalable
de la aplicación, se ha creado una carpeta con las herramientas necesarias con el nombre de
“Utilidades”.
La tercera es que disponga de las librerías estándar utilizadas por Visual Basic 6 para
ejecutar la aplicación. Por esto se incluyen las librerías de Visual Basic 6 necesarias para
que, en caso de que sea necesario, se habilite la ejecución de rutinas no contenidas en el
sistema operativo y que permitan la ejecució n normal del programa.
1.7.2 Interface.
El puerto serie debe cumplir con el estándar RS-232C. La longitud del cable no
puede exceder los 15 metros. Lugar seco, sin polvo y ventilado.
El dispositivo electrónico utilizado para adaptar la señal de TTL a V24 y viceversa es
un MAX233A con encapsulado DIL20.
-93-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
PARÁMETROS
MAX233A
CORRIENTE A LIMENTACIÓN
4 mA
5V
TENSIÓN ALIM ENTACIÓN
AISLAMIENTO ELÉCTRICO
VELOCIDAD
TRANSFERENCIA
200 kb/s
DE
-40º C ÷ 85º C
TEMPERATURA OPERATIVA
Tabla 8. Parámetros operativos del MAX233A.
Los dispositivos electrónicos para aislar eléctricamente el puerto serie de la red
eléctrica son un par de optoacopladores. El optoacoplador encargado de aislar la señal RX
del puerto serie es un 6N139, de bajo consumo Para aislar la señal TX de puerto serie se
utilizará un optoacoplador PF817.
PARÁMETROS
6N139
PC817
CORRIENTE A LIMENTACIÓN
0.5 mA
2 mA
TENSIÓN ALIM ENTACIÓN
5V
5V
AISLAMIENTO ELÉCTRICO
2500 VRMS
5000 VRMS
143 kHz
80 kHz
-55º C ÷ 100º C
-30º C ÷ 100º C
FRECUENCIA
TRANSFERENCIA
DE
TEMPERATURA OPERATIVA
Tabla 9. Parámetros operativos de los optoacopladores.
Para regular la tensión de alimentación de los dispositivos que conforma la interface
entre el PC y el dispositivo se utiliza un 78L05.
PARÁMETROS
78L05
CORRIENTE A LIMENTACIÓN
3 mA
4V ÷6 V
TENSIÓN ENTRADA
5V
TENSIÓN REGULADA
CORRIENTE PROPOCIONADA
100 mA
TEMPERATURA OPERATIVA
0º C ÷ 125º C
Tabla 10. Parámetros operativos del regulador.
-94-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.7.3 Suministro.
La alimentación de todos los elementos del dispositivo se extrae de la red eléctrica
convencional, para ello se utiliza un transformados 230V~6V de 1 VA, junto con un
puente de diodos y un condensador para rectificar la señal y un regulador KA7805 que
aporta 500 mA para alimentar a todos los elementos electrónicos del dispositivo.
PARÁMETROS
KA7805
CORRIENTE A LIMENTACIÓN
5 mA
4V ÷6 V
TENSIÓN ENTRADA
5V
TENSIÓN REGULADA
CORRIENTE PROPOCIONADA
500 mA
TEMPERATURA OPERATIVA
0º C ÷ 125º C
Tabla 11. Parámetros operativos del regulador.
Para evitar incidentes causados con una sobre tensión se utiliza un fusible de alta
sensibilidad de 630 mA y un varistor que suprima los sobre picos de tensión hasta 250
VAC.
1.7.4 Comunicaciones.
Para establecer comunicación entre dispositivos debe utilizarse un TDA5051A que
proporciona conectividad a través de la red eléctrica. Este sistema requiere inmunidad a
interferencias mediante filtros, además la impedancia de entrada del equipo debe ajustarse
al número de módems conectados a la red. La impedancia se ha establecido en 5 Ω para un
rango de frecuencias de 95 kHz a 148.5 kHz.
La red LC encargada de acoplar la señal con la red eléctrica se debe ajustar según la
siguiente expresión:
FC =
1
2π ⋅ L S ⋅ C S
=
1
2π ⋅ LP ⋅ C P
Donde:
FC= Frecuencia de la portadora, en Hertzios.
FOSC= Frecuencia del oscilador, en Hertzios.
LS= Inductancia en serie, en Henrios.
LP = Inductancia en paralelo, en Henrios.
-95-
=
FOSC
64
(4)
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
CS= Condensador en serie, en Faradios.
CP = Condensador en paralelo, en Faradios.
Los condensadores de desacoplo de la red Cdtx y Cdrx no tienen valores críticos,
siendo los valores más comunes, de 1 µF a 10 µF de un condensador electrolítico no
polarizado para Cdtx y 1 nF de cerámica o plástico para Cdrx.
PARÁMETROS
TDA5051A
CORRIENTE A LIMENTACIÓN
TRANSMISIÓN
47 mA
RECEPCIÓN
28 mA
5V
TENSIÓN ENTRADA
VELOCIDAD TRANSMISIÓN
600~1200 bauds
TEMPERATURA OPERATIVA
0º C ÷ 70º C
Tabla 12. Parámetros operativos del módem de red.
Para aislar la zona de comunicaciones del módem de red de la red eléctrica se utiliza
un transformador de baja señal. En este caso se utiliza un NEWPORT 76250 y para
protegerlo de transitorios perniciosos se utiliza un SA5.0A bidireccional.
1.7.5 µcontrolador.
Como µcontrolador se utiliza un PIC16F627, dispositivo de bajo consumo y de altas
prestaciones que cuenta con un puerto USART para comunicaciones síncronas y
asíncronas
PARÁMETROS
PIC16F627
CORRIENTE A LIMENTACIÓN
2 mA (a 4 MHz)
5V
TENSIÓN ENTRADA
1024 x 14
FLASH
EEPROM
128 x 8
RAM
224 x 8
800 mW
POTENCIA
-40º C ÷ 125º C
TEMPERATURA OPERATIVA
Tabla 13. Parámetros operativos del µcontrolador.
-96-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
El µcontrolador se ha de configurar para sincronizar con el módem de red y permitir
la transferencia de datos. Además la configuración del patillaje bidireccional debe ser
asignada en función de las tareas a desempeñar.
El controlador debe ser programado para funcionar con una frecuencia de oscilación
de 4 MHz, que se consigue externamente mediante el módem de red. El modo de
comunicación para poder asumir la velocidad de transferencia de 1200 bauds debe ser
asíncrono, y aún así se tiene un error de 1.67 %.
Para operar de modo asíncrono se debe activar la interrupción del puerto USART,
tanto para modo recepción como transmisión.
1.7.6 Actuador.
El actuador debe ser un BTA240-600E, este triac se excita con una corriente de 10
mA y es capaz de interrumpir una tensión de 600 V.
PARÁMETROS
BTA240-600E
10 mA
CORRIENTE EXCITACIÓN
600
TENSIÓN MÁXIMA
0º C ÷ 125º C
TEMPERATURA OPERATIVA
Tabla 14. Parámetros operativos del actuador.
La naturaleza de los dispositivos a controlar debe ser resistiva, en caso de no ser así,
como lámparas de descarga, el sistema no funcionará correctamente.
-97-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.7.7 Sensor.
El sensor utilizado es un A3212UA, sensor de alta sensibilidad que en función del
punto de trabajo se comporta como interruptor.
PARÁMETROS
A3212UA
CORRIENTE A LIMENTACIÓN
2 mA
TENSIÓN ALIMENTACIÓN
5V
TENSIÓN REGULADA
5V
PUNTO DE TRABAJO
<-40 G y 40 G>
-45º C ÷ 85º C
TEMPERATURA OPERATIVA
Tabla 15. Parámetros operativos del sensor.
1.8
PUESTA EN MARCHA Y FUNCIONAMIENTO.
1.8.1 Mediciones eléctricas.
Comprobación de las conexiones: se comprobará un porcentaje suficiente de
conexiones y empalmes.
Comprobación de las protecciones: se comprobarán las protecciones contra
sobrecargas y cortocircuitos, tanto los fusibles como los supresores de sobre tensiones o
transitorios perniciosos.
Caída de tensión: se comprobará la caída de tensión de los puntos más desfavorables
de la etapa de alimentació n, midiendo la tensión a la salida de los reguladores y la corriente
suministrada.
Temperatura funcional: se comprobará el margen de temperatura para la operatividad
de todos los componentes. Esta queda establecida entre 0º C y 70º C
-98-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DESCRIPTIVA
1.8.2 Otras mediciones.
Comprobación de la operatividad de los dispositivos: se comprobará que tanto el
programa principal, como los dispositivos actuadores operan bajo los parámetros
establecidos en el proyecto.
Comprobación de acabados y estética general: se realizará una comprobación general
de los materiales usados (deformaciones del soporte, estado de soldaduras, etiquetado,
etc.), así como el impacto que suponga en el entorno habitual de una vivienda
convencional.
1.9
RESUMEN DEL PRESUPUESTO.
El precio del presupuesto de licitación resultante es de 2.728’96 € (dos mil
setecientos veintiocho euros con noventa y seis céntimos), gastos generales, beneficio
industrial e IVA incluidos. Tal y como se encuentra detallado en el apartado 4 del
presupuesto.
Tarragona, a 7 de Abril de 2003-02-21
Firmado: José Luis Pelegrí
Ingeniero técnico industrial
Nº colegiado: 477234
-99-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
2
MEMORIA DE CÁLCULO
2.1 SUMINISTRO NECESARIO
2.2 CÁLCULO DE ELEMENTOS ELECTRÓNICOS
2.3 CÁLCULOS EN EL PROGRAMA
2.4 NÚMERO DE DISPOSITIVOS CONECTABLES
-100-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2.1
MEMORIA DE CÁLCULO
SUMINISTRO NECESARIO.
2.1.1 Aportado por el puerto serie del PC.
Se debe tener en cuenta que por cada miliamperio que se obtiene del puerto seria, la
caída de tensión se reduce en 1 voltio, por lo que no se puede obtener un gran suministro
de corriente. Suponiendo una tensión en los pines del puerto serie de 12 V y que el
regulador puede adaptar hasta 4 V, la corriente que se puede obtener es de 8 mA.
Para que esta etapa funcione, la suma de las corrientes absorbidas por los elementos
debe ser menos que la que puede suministrar el puerto serie.
La tabla 16 es un resumen de la corriente que consume cada dispositivo, en régimen
normal, que se alimenta del puerto serie.
DISPOSITIVO
CORRIENTE
NECESARIA
MAX233A
4 mA
78L05
3 mA
6N139
0.5 mA
7.5 mA
Tabla 16. Resumen de corrientes consumidas del puerto serie.
2.1.2 Aportado por la red eléctrica.
Esta corriente sólo está limitada por el elemento regulador de línea y la corriente que
este suministre, el dispositivo elegido es un KA7805 que suministra 500 mA.
La corriente que se considera para el módem de red es la máxima que necesita, que
es en el modo de transmisión.
La tabla 17 es un resumen de la corriente que consume cada dispositivo, en régimen
normal, que se alimenta del suministro de línea eléctrica convencional.
-101-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
CIRCUITO
DISPOSITIVO
CORRIENTE
NECESARIA
MAESTRO
KA7805
6 mA
TDA5051A
(modo transmisión)
47 mA
PC817
2 mA
74AHCT1G79
75 mA
TOTAL
132 mA
KA7805
6 mA
TDA5051A
(modo transmisión)
47 mA
A3212UA
10 µA
PIC16F627 (4 MHz)
0.7 mA
BTA204-600E
10.63 mA
LED
22.72 mA
TOTAL
87.06 mA
KA7805
6 mA
TDA5051A
(modo transmisión)
47 mA
A3212UA
10 µA
PIC16F627
11.3 mA
BTA204-600E (x2)
21.26 mA
LED
22.72 mA
TOTAL
97.69 mA
SATELITE 1 SALIDA
SATELITE 2 SALIDAS
Tabla 17. Resumen de corrientes consumidas por cada dispositivo.
Para todos los circuitos, las corrientes necesarias están por debajo de la corriente que
el regulador de línea proporciona.
2.2
CÁLCULO DE ELEMENTOS ELECTRÓNICOS.
2.2.1 Alimentación.
La etapa de alimentación a partir de la red eléctrica convencional se compone de
varios elementos:
•
Transformador 230V~6V.
•
Puente de diodos 6 V.
-102-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
•
Condensador rectificador de rizado.
•
Regulador de línea KA7804.
•
Fusible de protección.
•
Varistor supresor de sobretensiones 250 VAC.
Los elementos a cuyo valor se debe determinar son el fusible, la potencia del
transformador y el condensador.
El condensador debe ser elegido para proporcionar el mínimo voltaje requerido por
el regulador de línea, para ello se elige un valor típico para fuentes de tensión de 5 V, por
lo que CF= 470 µF (16 V).
El transformador debe ser capaz de adaptar la tensión de 230 V a 6 V y proporcionar
la corriente necesaria para el circuito, por lo que si la potencia aparente es de 1 VA, la
corriente proporcionada es de 166.67 mA, suficiente para el circuito.
El fusible de protección debe ser capaz de detectar y actuar (de forma pasiva) antes
una corriente que pueda perjudicar seriamente los componentes del circuito.
2.2.2 Interface.
Para forzar que una corriente pase a través de los diodos y a su vez limitarla, se
utilizan resistencias limitadoras y mediante la ley de Ohm se obtendrán los valores teóricos
necesario para tal fin.
R=
V
I
(5)
Donde:
R= Resistencia limitadora, en ohmios.
V= Caída de tensión en los pines utilizados del puerto serie, en voltios.
I= Intensidad necesaria para los dispositivos, en amperios.
V
I
R
(V)
(A)
(Ω )
4
8·10-3
500
-103-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
El valor comercial que más se ajusta al calculado es 470 Ω, con lo que se obtienen
8.5 mA. Este valor se aplica a todas las resistencias cuya misión sea limitar la corriente del
puerto serie.
Para almacenar la energía mientras se producen las transiciones en la señal del puerto
serie se utiliza un condensador electrolítico de 47 µF y 10 V.
2.2.3 Comunicación.
La frecuencia del cristal de cuarzo es de 8 MHz, este valor condiciona el valor del
resto de elementos de la etapa módem porque la frecuencia del cristal de cuarzo tiene
incidencia directa en la señal de reloj de salida y la frecuencia de la señal portadora.
La frecuencia de salida del reloj es directamente la mitad de la frecuencia del
oscilador de cristal de cuarzo. El resto de elementos se calcula tal y como se describió en la
expresión (4), y que se reproduce a continuación, los condensadores se determinan de un
valor de 33 nF, valor comercial, para que los cálculos se ajusten a valores comerciales:
FC =
1
2π ⋅ L S ⋅ C S
=
1
2π ⋅ LP ⋅ C P
=
FOSC
64
(4)
Donde:
FC= Frecuencia de la portadora, en Hertzios.
FOSC= Frecuencia del oscilador, en Hertzios.
LS= Inductancia en serie, en Henrios.
LP = Inductancia en paralelo, en Henrios.
CS= Condensador en serie, en Faradios.
CP = Condensador en paralelo, en Faradios.
FOSC
FCLOCK_OUT
FC
LS
CS
LP
CP
(Hz)
(Hz)
(Hz)
(H)
(F)
(H)
(F)
8·106
4·106
125·103
49.12·10-6
33·10-9
49.12·10-6
33·10-9
El valor de las inductancias se cambia por el valor comercial más próximo, que es el
de 47 µH.
-104-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
Para limitar la impedancia máxima del filtro paralelo, se coloca en paralelo una
resistencia de valor 5.6 Ω. Un valor mínimo de impedancia asegura que se puedan colocar
mayor número de dispositivos conectados a la red eléctrica.
Para limitar la impedancia máxima del filtro seria, la inductancia debe tener un valor
de resistencia interna serie muy pequeño. Un valor mínimo de impedancia asegura que se
puedan colocar mayor número de dispositivos conectados a la red eléctrica.
Como el protocolo para enviar tramas no sigue ningún estándar, la banda elegida de
125 kHz se puede utilizar sin problemas.
Los valores de los condensadores Cdtx y Cdrx para desacoplar la continua de las
líneas TX y RX no son críticos y vienen definido por el fabricante del módem de red.
Cdtx
Cdrx
(F)
(F)
10-6 (16 V no polarizado)
10·10-9 (plástico o cerámico)
El valor del los condensadores cerámicos que se conectan con el cristal de cuarzo
puede variar de 22 pF a 47 pF y la resistencia entre 1 MΩ y 10 MΩ. Los valores elegidos
son los siguientes:
C1
C2
ROSC
(F)
(F)
(F)
27·10-12
27·10-12
2.2·106
Para prevenir distorsión extra de la señal de salida y un buen desacoplamiento del
suministro de alimentación, es necesario conectar, tan cerca como sea posible, dos
condensadores CDC1 y CDC2. Un condensador electrolítico de valor alto y un
condensador cerámico de valor bajo. El condensador electrolítico se encargará de realizar
un primer filtrado con la ventaja de que absorberá las variaciones de tensión más
pronunciadas y el condensador cerámico realizará un filtrado más preciso. El rango de
valores varía para el condensador electrolítico de 100 µF a 220 µF (10 V) y de 47 nF a 100
nF para el condensador cerámico.
Los valores elegidos son los siguientes:
CDC1
CDC2
(F)
(F)
100·10-6 (10 V)
47·10-9
-105-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
2.2.4 Sensor.
La etapa de sensor utiliza un interruptor de efecto hall A3212UA que detecta si
existe circulación de corriente en el suministro eléctrico del elemento a controlar.
Dicho interruptor puede actuar de manera bipolar, por lo que es indiferente el sentido
de conexión el suministro y el elemento a controlar. Su punto de trabajo es de 40 Gauss
(1 G = 10-4 T en cualquiera de las dos polaridades (Norte o Sur).
El dispositivo está diseñado para el conexionado de equipos de más de 15 W de
potencia, por lo que a partir de la tensión de alimentación y la potencia se obtiene la
corriente que circula por los conductores, para el cálculo se supone un factor de potencia
normal dentro de una instalación doméstica. La expresión para este cálculo:
I=
P
(6)
V ⋅ cos ϕ
Donde:
I= Intensidad eficaz en el conductor, en amperios.
V= Tensión eficaz de alimentación, en voltios.
P= Potencia teórica del elemento externo, en vatios.
Cosϕ= factor de potencia, adimensional.
P
V
(W)
(V)
15
220
Cos ϕ
0.85
I
(A)
80.21·10-3
Esta intensidad se corresponde a equipos electrónicos, (como lámparas de descarga)
en los que se produce una rectificación de la señal y por lo tanto, la potencia indicada es la
potencia eficaz, a una potencia de 15 W.
Para potenciar el campo magnético resultante de la circulación de corriente por los
conductores se utiliza un toroide con entrehierro. La longitud del entrehierro debe ser
suficiente para colocar el sensor en dicho hueco.
-106-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
El entrehierro necesario corresponde a 0.06 pulgadas, por lo que el coeficiente a
aplicar a la fórmula (considerando la permeabilidad del aire) es de 6.9.
Para determinar el número de vueltas del conductor en el toroide se utiliza la
siguiente expresión:
n=
B
6 .9 ⋅ I
(7)
Donde:
B= Inducción magnética, en Gauss.
n= Número de vueltas del conductor en el toroide.
I= Intensidad mínima que circula por el conductor, en amperios.
B
I
(T)
(A)
40
80.21·10-3
n
73
Como se puede comprobar, la longitud y el grosor del toroide se desprecian frente a
la longitud del entrehierro dado que las pérdidas producidas por el espacio al aire son
mayores que las que se producen en el núcleo del toroide.
2.2.5 Actuador.
La corriente necesaria para excitar al triac debe proceder del patillaje del
µcontrolador, es decir, de la tensión que pueda generar el µcontrolador en sus pines de
salida.
Para reducir el suministro necesario, el triac debe poder ser excitado con 10 mA, por
ello se dispone una resis tencia limitadora entre el triac y el pin del µcontrolador. Dado que
el triac está conectado directamente a la red eléctrica, se debe evitar un choque eléctrico
entre la red eléctrica y el µcontrolador, por eso es necesaria la colocación de un fusible
entre la resistencia limitadora y el pin del µcontrolador.
Para evitar que la corriente que llega al pin el µcontrolador sea perniciosa, el fusible
debe ser de 20 mA.
-107-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
Para obtener una corriente limitada de 10 mA, se determina la resistencia limitadora
necesaria mediante la siguiente expresión:
RLIMITADORA =
VµCONTROLADOR
I TRIAC
(8)
Donde:
RLIMITADORA= Resistencia limitadora en Ω.
VµCONTROLADOR= Tensión en el pin de salida del µcontrolador en voltios.
ITRIAC= Corriente necesaria para excitar el triac en amperios.
ITRIAC
VµCONTROLADOR
RLIMITADORA
(A)
(V)
(Ω )
10·10-3
5
500
El valor comercial que más se ajusta al calculado es 470 Ω, con lo que se obtienen
10.63 mA. Este valor se aplica a todas las resistencias cuya misión sea limitar la corriente
del puerto serie.
2.2.6 Grabación.
La etapa encargada de indicar al µcontrolador si se procede a grabar una nueva ID se
compone de un interruptor de 2 posiciones, una resistencia limitadora y un LED rojo que
indica al usuario el estado del dispositivo.
Para excitar al LED es necesaria una corriente de 20 mA. Para obtener dicha
corriente se utiliza una resistencia limitadora. El valor de esta resistencia se obtiene, tal y
como se calcula en el apartado anterior, mediante la siguiente expresión:
RLIMITADORA =
VALIMENTACIÓN
I LED
Donde:
RLIMITADORA= Resistencia limitadora en Ω.
-108-
(9)
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
VALIMENTACIÓN = Tensión estabilizada por el regulador de línea, en voltios.
ILED= Corriente necesaria para excitar el LED.
ILED
VALIMENTACIÓN
RLIMITADORA
(A)
(V)
(Ω )
20·10-3
5
250
El valor comercial que más se ajusta al calculado es 220 Ω, con lo que se obtienen
22.72 mA. Este valor se aplica a todas las resistencias cuya misión sea limitar la corriente
del puerto serie.
2.3
CÁLCULOS EN EL PROGRAMA
El programa calcula el consumo de cada elemento a partir de su potencia y estado
para cada intervalo de muestreo.
Estos intervalos de muestreo son de 5 segundos, para convertir el intervalo de
muestreo de segundos a horas se utiliza la expresión:
∆t(s) = ∆t(s) ⋅
1h
1 min uto
⋅
60 min utos 60 segundos
(10)
Donde:
∆t(h)= Intervalo de muestreo, en horas.
∆t(s)= Intervalo de muestreo, en segundos.
∆t(s)
∆t(h)
(s)
(h)
1
0.27·10-3
5
1.38·10-3
La energía consumida está caracterizada según la expresión:
E = P ⋅ ∆t(h)
-109-
(11)
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
Donde:
E= Energía consumida por el dispositivo, en kWh.
∆t(h)= Intervalo de muestreo, en horas.
P= Potencia del dispositivo indicada por el fabricante, en vatios.
2.4
NÚMERO DE DISPOSITIVOS CONECTABLES
Para determinar el número total de dispositivos conectables a la red es necesario
hacer un cálculo que determine, en función de la longitud de una trama, el tiempo que tarda
el sistema en realizar un ciclo de transmisión (envío de una trama y recepción de la trama
respuesta) y con esto comprobar cuantos ciclos es capaz de realizar en el tiempo de scan,
en el caso de la aplicación, el tiempote scan se ha fijado en 5 segundos.
El tiempo que el µcontrolador dedica a ejecutar y procesar la trama se puede calcular
teniendo en cuenta que le programa puede llegar a albergar 500 instrucciones de las cuales
un 10% son de salto, que computan doble ciclo, mediante la expresión:
TEJECUCION = 90% INTRUCCION ES ⋅
4
FOSC
+ 10% INTRUCCIONES ⋅
2⋅4
FOSC
(12)
Donde:
TEJECUCION= Tiempo de ejecución de un programa en µcontrolador, en segundos.
90%INTRUCCIONES= 90% del total de instrucciones de un programa en µcontrolador.
10%INTRUCCIONES= 10% del total de instrucciones de un programa en µcontrolador.
FOSC= Frecuencia del oscilador que establece el ciclo de instrucción, en hertzios.
90%INTRUCCIONES
10%INTRUCCIONES
450
50
FOSC
TEJECUCION
(Hz)
(s)
4·106
550·10-6
V
⋅
N DISPOSITIVOS =  TRANSFERENCIA + TEJECUCION
 2 ⋅ LTRAMA
-110-

 ⋅ TSCAN (13)

CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
MEMORIA DE CÁLCULO
Donde:
NDISPOSITIVOS= Número de dispositivos conectables.
VTRANSFERENCIA= Velocidad de transferencia máxima, en bit/s.
LTRAMA = Longitud de la trama, en bytes.
TSCAN= Tiempo de muestreo de los dispositivos, en segundos.
TEJECUCION= Tiempo de ejecución de un programa en µcontrolador, en segundos.
LTRAMA
VTRANSFERENCIA
TEJECUCION
TSCAN
(bit)
(bit/s)
(s)
(s)
32
1200
550·10-6
5
NDISPOSITIVOS
92
Con estos datos se comprueba que el cuello de botella está en el módem de red, por
lo que si se quiere aumentar la velocidad, se deberá o bien aumentar el tiempo de scan o
utilizar un módem de red más rápido.
Tarragona, a 7 de Abril de 2003-02-21
Firmado: José Luis Pelegrí
Ingeniero técnico industrial
Nº colegiado: 477234
-111-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLANOS
3
PLANOS
3.1 ESQUEMA ELÉCTRONICO DE CIRCUITO MÁSTER
3.2 ESQUEMA ELECTRÓNICO DE CIRCUITO SATELITE 1 SALIDA
3.3 ESQUEMA ELECTRÓNICO DE CIRCUITO SATELITE 2 SALIDAS
3.4 CROQUIS PCB DE CIRCUITO MÁSTER
3.5 CROQUIS PCB DE CIRCUITO SATÉLITE 1 SALIDA
3.6 CROQUIS PCB DE CIRCUITO SATELITE 2 SALIDAS
-112-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PRESUPUESTO
4
4.1 MEDICIONES
4.2 CUADRO DE PRECIOS
4.3 APLICACIÓN DE PRECIOS
4.4 RESUMEN DEL PRESUPUESTO
-119-
PRESUPUESTO
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
4.1
PRESUPUESTO
MEDICIONES.
Código
Uds. Designación
Uds. Long
Alto Ancho Subtotal Total
CAPÍTULO 1 : CIRCUITO MAESTRO
1-001
U
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
DE
1
1
1-002
U
RESISTENCIA 100 Ω (0.5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
1
1
1
1-003
U
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRETENSIONES
DE HASTA 250 VAC
1
1
1
1-004
U
TRANSFORMADOR
TRANSFORMADOR
PRINCIPAL
DEL CIRCUITO 230~6 V Y 1 VA
1
1
1
1-005
U
FDB08
PUENTE DE DIODOS PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
1
1
1
-120-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-006
U
PRESUPUESTO
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
1
1
1
1-007
U
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
1
1
1
1-008
U
CONDENSADOR 100 µF(10 V)
CONDENSADOR ELECTROLÍTICO
DE 100 µF Y 10 V
1
1
1
1-009
U
CONDENSADOR 47 nF
CONDENSADOR CERÁMICO DE 47
nF
1
1
1
1-010
U
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
1
1
1
1-011
U
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
1
1
1
1-012
U
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
1
1
1
-121-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-013
U
PRESUPUESTO
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
1
1
1
1-014
U
INDUCTANCIA 47 µH
INDUCTANCIA DE 47 µH
1
1
1
1-015
U
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
TRANSITORIOS
1
1
1
1-016
U
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
1
1
1
1-017
U
NEWPORT 76250
TRANSFORMADOR
CONVERTIDOR
1
1
1
1-018
U
CONDENSADOR DE 1 µF (16
V)
CONDESADOR
ELECTROLÍTICO
DE 1 µF Y 16 V DE TENSIÓN
1
1
1
1-019
U
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
1
1
1
-122-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-020
U
PRESUPUESTO
RESISTENCIA 2,2 MΩ
RESISTENCIA
1
1
1
1-021
U
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF
2
2
2
1-022
U
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA
DE
DE
1
1
1
1-023
U
RESISTENCIA 470 Ω
RESISTENCIAS DE 470 Ω Y 0.25 W
2
2
2
1-024
U
1N4148
DIODOS DE ALTA VELOCIDAD
2
2
2
1-025
U
CONDESADOR 10 µF Y 10 V
CONDENSADOR ELECTROLÍTICO
DE 10 µF Y 10 V
1
1
1
1-026
U
MAX233A
ADAPTADOR DE SEÑAL TTL A RS232C Y A LA INVERSA
1
1
1
-123-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-027
U
PRESUPUESTO
PC817
OPTOACOPLADOR
1
1
1
1-028
U
6N139
OPTOACOPLADOR
CONSUMO
DE
BAJO
1
1
1
1-029
U
RESISTENCIA 1 kΩ
RESISTECIA DE 1 kΩ Y 0.25 W
2
2
2
1-030
U
78L05
REGULADOR DE LINEA A 5 V Y
100 mA
1
1
1
1-031
U
74AHCT1G79GW
FLIP-FLOP TIPO D DE FLANCO
POSITIVO
1
1
1
1-032
U
CONECTOR
CONECTOR
CONECTAR
ELÉCTRICA
2 POLOS
CON
LA
PARA
RED
1
1
1
1-033
U
PLACA PCB
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
1
1
1
-124-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Código
Uds. Designación
PRESUPUESTO
Uds. Long
Alto Ancho Subtotal Total
CAPÍTULO 2 : CIRCUITO SATÉLITE 1 SALIDA
2-001
U
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
DE
1
1
2-002
U
RESISTENCIA 100 Ω (0.5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
1
1
1
2-003
U
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRETENSIONES
DE HASTA 250 VAC
1
1
1
2-004
U
TRANSFORMADOR
TRANSFORMADOR
PRINCIPAL
DEL CIRCUITO 230~6 V Y 1 VA
1
1
1
2-005
U
FDB08
PUENTE DE DIODOS PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
1
1
1
2-006
U
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
1
1
1
-125-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-007
U
PRESUPUESTO
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
1
1
1
2-008
U
CONDENSADOR 100 µF(10 V)
CONDENSADOR ELECTROLÍTICO
DE 100 µF Y 10 V
1
1
1
2-009
U
CONDENSADOR 47 nF
CONDENSADOR CERÁMICO DE 47
nF
1
1
1
2-010
U
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
1
1
1
2-011
U
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
1
1
1
2-012
U
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
1
1
1
2-013
U
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
1
1
1
-126-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-014
U
PRESUPUESTO
INDUCTANCIA 47 µH
INDUCTANCIA DE 47 µH
1
1
1
2-015
U
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
TRANSITORIOS
1
1
1
2-016
U
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
1
1
1
2-017
U
NEWPORT 76250
TRANSFORMADOR
CONVERTIDOR
1
1
1
2-018
U
CONDENSADOR DE 1 µF (16
V)
CONDESADOR
ELECTROLÍTICO
DE 1 µF Y 16 V DE TENSIÓN
1
1
1
2-019
U
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
1
1
1
2-020
U
RESISTENCIA 2,2 MΩ
RESISTENCIA.
1
1
1
-127-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-021
U
PRESUPUESTO
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF.
2
2
2
2-022
U
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA.
DE
DE
1
1
1
2-023
U
PIC16F627
MICROCONTROLADOR
CASA MICROCHIP
DE
LA
1
1
1
2-024
U
INTERRUPTOR
INTERRUPTOR MECÁNICOD
DOS POSICIONES
E
1
1
1
2-025
U
LED
LED ROJO
1
1
1
2-026
U
RESISTENCIA 220 Ω
RESISTECIA DE 220 Ω
1
1
1
2-027
U
RESISTENCIA 470 Ω
RESISTECIA DE 470 Ω
1
1
1
-128-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-028
U
PRESUPUESTO
BTA204-600E
TRIAC QUE PUEDE INTERRUMPIR
HASTA TENSIONES DE 600 V
1
1
1
2-029
U
FUS IBLE 20 mA
FUSIBLE 20 mA
1
1
1
2-030
U
A3212UA
INTERRUPTOR DE EFECTO HALL
1
1
1
2-031
U
28-794C36S
TOROIDE CON ENTREHIERRO DE
2 mm. SECCION DE 21 mm2 Y
DIAMETRO EXTERIOR DE 9 mm
1
1
1
2-032
U
PLACA PCB
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
1
1
1
2-033
U
CONECTOR
CONECTOR DOS POLOS PARA
CONEXIÓN CON RED ELÉCTRICA
3
3
3
-129-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Código
Uds. Designación
PRESUPUESTO
Uds. Long
Alto Ancho Subtotal Total
CAPÍTULO 3 : CIRCUITO SATÉLITE 2 SALIDAS
3-001
U
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
DE
1
1
3-002
U
RESISTENCIA 100 Ω (0.5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
1
1
1
3-003
U
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRETENSIONES
DE HASTA 250 VAC
1
1
1
3-004
U
TRANSFORMADOR
TRANSFORMADOR
PRINCIPAL
DEL CIRCUITO 230~6 V Y 1 VA
1
1
1
3-005
U
FDB08
PUENTE DE DIODOS PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
1
1
1
3-006
U
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
1
1
1
-130-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-007
U
PRESUPUESTO
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
1
1
1
3-008
U
CONDENSADOR 100 µF(10 V)
CONDENSADOR ELECTROLÍTICO
DE 100 µF Y 10 V
1
1
1
3-009
U
CONDENSADOR 47 nF
CONDENSADOR CERÁMICO DE 47
nF
1
1
1
3-010
U
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
1
1
1
3-011
U
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
1
1
1
3-012
U
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
1
1
1
3-013
U
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
1
1
1
-131-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-014
U
PRESUPUESTO
INDUCTANCIA 47 µH
INDUCTANCIA DE 47 µH
1
1
1
3-015
U
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
TRANSITORIOS
1
1
1
3-016
U
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
1
1
1
3-017
U
NEWPORT 76250
TRANSFORMADOR
CONVERTIDOR
1
1
1
3-018
U
CONDENSADOR DE 1 µF (16
V).
CONDESADOR
ELECTROLÍTICO
DE 1 µF Y 16 V DE TENSIÓN
1
1
1
3-019
U
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
1
1
1
3-020
U
RESISTENCIA 2,2 MΩ
RESISTENCIA
1
1
1
-132-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-021
U
PRESUPUESTO
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF
2
2
2
3-022
U
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA.
DE
DE
1
1
1
3-023
U
PIC16F627
MICROCONTROLADOR
CASA MICROCHIP
DE
LA
1
1
1
3-024
U
INTERRUPTOR
INTERRUPTOR MECÁNICOD
DOS POSICIONES
E
1
1
1
3-025
U
LED
LED ROJO
1
1
1
3-026
U
RESISTENCIA 220 Ω
RESISTECIA DE 220 Ω
1
1
1
3-027
U
RESISTENCIA 470 Ω
RESISTECIA DE 470 Ω
2
2
2
-133-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-028
U
PRESUPUESTO
BTA204-600E
TRIAC QUE PUEDE INTERRUMPIR
HASTA TENSIONES DE 600 V
2
2
2
3-029
U
FUS IBLE 20 mA
FUSIBLE 20 mA
2
2
2
3-030
U
A3212UA
INTERRUPTOR DE EFECTO HALL
1
1
1
3-031
U
28-794C36S
TOROIDE CON ENTREHIERRO DE
2 mm. SECCION DE 21 mm2 Y
DIAMETRO EXTERIOR DE 9 mm
1
1
1
3-032
U
PLACA PCB
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
1
1
1
3-033
U
CONECTOR
CONECTOR DOS POLOS PARA
CONEXIÓN CON RED ELÉCTRICA
4
4
4
-134-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Código
Uds. Designación
PRESUPUESTO
Uds. Long
Alto Ancho Subtotal Total
CAPÍTULO 4 : MANO DE OBRA
4-001
H
DISEÑO
HORAS
DE
DISEÑO
CIRCUITERÍA Y PROGRAMA
DE
30
30
30
4-002
H
PROGRAMACIÓN
HORAS DE PROGRAMACIÓN
40
40
40
4.2
CUADRO DE PRECIOS.
Código Uds. Designación
Precio
Precio en letra
CAPÍTULO 1: CIRCUITO MAESTRO
1-001
€
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
1-002
€
0’41
CUARENTA Y UN CÉNTIMO
0’02
DOS CÉNTIMOS
0’13
TRECE CÉNTIMOS
3’10
TRES CON DIEZ CÉNTIMOS
DE
RESISTENCIA 100 Ω (0.5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
1-003
€
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRET ENSIONES
DE HASTA 250 VAC
1-004
€
TRANSFORMADOR
TRANSFORMADOR PRINCIPAL DEL
CIRCUITO 230~6 V Y 1 VA
-135-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-005
€
FDB08
PRESUPUESTO
1’26
UNO CON VEINTISEIS
0’15
QUINCE CÉNTIMOS
0’76
SETENTA Y SEIS CÉNTIMOS
0’10
DIEZ CÉNTIMOS
0’10
DIEZ CÉNTIMOS
9’18
NUEVE CON DIECIOCHO CÉNTIMOS
0’15
QUINCE CÉNTIMOS
0’12
DOCE CÉNTIMOS
0’10
DIEZ CÉNTIMOS
PUENTE
DE
DIODOS
PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
1-006
€
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
1-007
€
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
1-008
€
CONDENSADOR 100 µF(10 V)
CONDENSADOR
DE 100 µF Y 10 V
1-009
€
ELECTROLÍTICO
CONDENSADOR 47 nF
CONDENSADOR CERÁMICO DE 47
nF
1-010
€
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
1-011
€
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
1-012
€
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
1-013
€
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
-136-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-014
€
INDUCTANCIA 47 µH
PRESUPUESTO
0’11
ONCE CÉNTIMOS
0’36
TREINT A Y SEIS CÉNTIMOS
0’02
DOS CÉNTIMOS
5’80
CINCO CON OCHENTA CÉNTIMOS
0’08
OCHO CÉNTIMOS
0’08
OCHO CÉNTIMOS
0’20
VEINTE CÉNTIMOS
0’15
QUINCE CÉNTIMOS
0’89
OCHENTA Y NUEVE CÉNTIMOS
INDUCTANCIA DE 47 µH
1-015
€
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
1-016
€
TRANSITORIOS
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
1-017
€
NEWPORT 76250
TRANSFORMADOR CONVERTIDOR
1-018
€
CONDENSADOR DE 1 µF (16
V)
CONDESADOR ELECTROLÍTICO DE
1 µF Y 16 V DE TENSIÓN
1-019
€
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
1-020
€
RESISTENCIA 2,2 MΩ
RESISTENCIA
1-021
€
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF
1-022
€
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA
DE
DE
-137-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-023
€
RESISTENCIA 470 Ω
PRESUPUESTO
0’02
DOS CÉNTIMOS
0’13
TRECE CÉNTIMOS
0’08
OCHO CÉNTIMOS
4’53
CUATRO CON
CÉNTIMOS
0’28
VEINTIOCHE CÉNTIMOS
2’06
DOS CON SEIS CÉNTIMOS
0’15
QUINCE CÉNTIMOS
0’47
CUARENTA Y SIETE CÉNTIMOS
0’40
CUARENTA CÉNTIMOS
0’30
TREINTA CÉNTIMOS
RESISTENCIAS DE 470 Ω Y 0.25 W
1-024
€
1N4148
DIODOS DE ALTA VELOCIDAD
1-025
€
CONDESADOR 10 µF Y 10 V
CONDENSADOR
DE 10 µF Y 10 V
1-026
€
ELECTROLÍTICO
MAX233A
CINCUENTA
ADAPTADOR DE SEÑAL TTL A RS232C Y A LA INVERSA
1-027
€
PC817
OPTOACOPLADOR
1-028
€
6N139
OPTOACOPLADOR
CONSUMO
1-029
€
DE
BAJO
RESISTENCIA 1 kΩ
RESISTECIA DE 1 kΩ Y 0.25 W
1-030
€
78L05
REGULADOR DE LINEA A 5 V Y 100
mA
1-031
€
74AHCT1G79GW
FLIP-FLOP TIPO D DE FLANCO
POSITIVO
1-032
€
CONECTOR
CONECTOR
CONECTAR
ELÉCTRICA
2
POLOS
CON
LA
PARA
RED
-138-
Y
TRES
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-033
€
PRESUPUESTO
PLACA PCB
6
SEIS
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
Código Uds. Designación
Precio
Precio en letra
CAPÍTULO 2: CIRCUITO SATÉLITE 1 SALIDA
2-001
€
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
2-002
€
0’41
CUARENTA Y UN CÉNTIMO
0’02
DOS CÉNTIMOS
0’13
TRECE CÉNTIMOS
3’10
TRES CON DIEZ CÉNTIMOS
1’26
UNO CON VEINTISEIS
0’15
QUINCE CÉNTIMOS
0’76
SETENTA Y SEIS CÉNTIMOS
DE
RESISTENCIA 100 Ω (0.5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
2-003
€
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRETENSIONES
DE HASTA 250 VAC
2-004
€
TRANSFORMADOR
TRANSFORMADOR PRINCIPAL DEL
CIRCUITO 230~6 V Y 1 VA
2-005
€
FDB08
PUENTE
DE
DIODOS
PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
2-006
€
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
2-007
€
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
-139-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-008
€
CONDENSADOR 100 µF(10 V)
CONDENSADOR
DE 100 µF Y 10 V
2-009
€
PRESUPUESTO
0’10
DIEZ CÉNTIMOS
0’10
DIEZ CÉNTIMOS
9’18
NUEVE CON DIECIOCHO CÉNTIMOS
0’15
QUINCE CÉNTIMOS
0’12
DOCE CÉNTIMOS
0’10
DIEZ CÉNTIMOS
0’11
ONCE CÉNTIMOS
0’36
TREINTA Y SEIS CÉNTIMOS
0’02
DOS CÉNTIMOS
ELECTROLÍTICO
CONDENSADOR 47 nF
CONDENSADOR CERÁMICO DE 47
nF
2-010
€
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
2-011
€
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
2-012
€
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
2-013
€
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
2-014
€
INDUCTANCIA 47 µH.
INDUCTANCIA DE 47 µH
2-015
€
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
2-016
€
TRANSITORIOS
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
-140-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-017
€
NEWPORT 76250
PRESUPUESTO
5’80
CINCO CON OCHENTA CÉNTIMOS
0’08
OCHO CÉNTIMOS
0’08
OCHO CÉNTIMOS
0’20
VEINTE CÉNTIMOS
0’15
QUINCE CÉNTIMOS
0’89
OCHENTA Y NUEVE CÉNTIMOS
5’71
CINCO CON SETENTA Y UNO
0’06
SEIS CÉNTIMOS
0’10
DIEZ CÉNTIMOS
TRANSFORMADOR CONVERTIDOR
2-018
€
CONDENSADOR DE 1 µF (16
V).
CONDESADOR ELECTROLÍTICO DE
1 µF Y 16 V DE TENSIÓN
2-019
€
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
2-020
€
RESISTENCIA 2,2 MΩ
RESISTENCIA
2-021
€
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF
2-022
€
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA
2-023
€
PIC16F627
MICROCONTROLADOR
CASA MICROCHIP
2-024
€
DE
DE
DE
LA
INTERRUPTOR
INTERRUPTOR MECÁNICOD E DOS
POSICIONES
2-025
€
LED
LED ROJO
-141-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-026
€
RESISTENCIA 220 Ω
PRESUPUESTO
0’02
DOS CÉNTIMOS
0’02
DOS CÉNTIMOS
0’51
CINCUENTA Y UN CÉNTIMOS
0’06
SEIS CÉNTIMOS
0’76
SETENTA Y SEIS CÉNTIMOS
1’47
UNO CON CUARENTA Y SIETE CÉNTIMOS
RESISTECIA DE 220 Ω
2-027
€
RESISTENCIA 470 Ω
RESISTECIA DE 470 Ω
2-028
€
BTA204-600E
TRIAC QUE PUEDE INTERRUMPIR
HASTA TENSIONES DE 600 V
2-029
€
FUSIBLE 20 mA
FUSIBLE 20 mA
2-030
€
A3212UA
INTERRUPTOR DE EFECTO HALL
2-031
€
28-794C36S
TOROIDE CON ENTREHIERRO DE 2
mm. SECCION DE 21 mm2 Y
DIAMETRO EXTERIOR DE 9 mm
2-032
€
PLACA PCB
6
SEIS
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
2-033
€
CONECTOR
0’30
CONECTOR DOS POLOS PARA
CONEXIÓN CON RED ELÉCTRICA
-142-
TREINTA CÉNTIMOS
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Código Uds. Designación
PRESUPUESTO
Precio
Precio en letra
CAPÍTULO 3: CIRCUITO SATÉLITE 2 SALIDAS
3-001
€
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
3-002
€
0’41
CUARENTA Y UN CÉNTIMO
0’02
DOS CÉNTIMOS
0’13
TRECE CÉNTIMOS
3’10
TRES CON DIEZ CÉNTIMOS
1’26
UNO CON VEINTISEIS
0’15
QUINCE CÉNTIMOS
0’76
SETENTA Y SEIS CÉNTIMOS
0’10
DIEZ CÉNTIMOS
DE
RESISTENCIA 100 Ω (0’5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
3-003
€
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRETENSIONES
DE HASTA 250 VAC
3-004
€
TRANSFORMADOR
TRANSFORMADOR PRINCIPAL DEL
CIRCUITO 230~6 V Y 1 VA
3-005
€
FDB08
PUENTE
DE
DIODOS
PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
3-006
€
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
3-007
€
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
3-008
€
CONDENSADOR 100 µF(10 V)
CONDENSADOR
DE 100 µF Y 10 V
ELECTROLÍTICO
-143-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-009
€
CONDENSADOR 47 nF
PRESUPUESTO
0’10
DIEZ CÉNTIMOS
9’18
NUEVE CON DIECIOCHO CÉNTIMOS
0’15
QUINCE CÉNTIMOS
0’12
DOCE CÉNTIMOS
0’10
DIEZ CÉNTIMOS
0’11
ONCE CÉNTIMOS
0’36
TREINTA Y SEIS CÉNTIMOS
0’02
DOS CÉNTIMOS
5’80
CINCO CON OCHENTA CÉNTIMOS
CONDENSADOR CERÁMICO DE 47
nF
3-010
€
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
3-011
€
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
3-012
€
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
3-013
€
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
3-014
€
INDUCTANCIA 47 µH
INDUCTANCIA DE 47 µH
3-015
€
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
3-016
€
TRANSITORIOS
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
3-017
€
NEWPORT 76250
TRANSFORMADOR CONVERTIDOR
-144-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-018
€
CONDENSADOR DE 1 µF (16
V)
PRESUPUESTO
0’08
OCHO CÉNTIMOS
0’08
OCHO CÉNTIMOS
0’20
VEINTE CÉNTIMOS
0’15
QUINCE CÉNTIMOS
0’89
OCHENTA Y NUEVE CÉNTIMOS
5’71
CINCO CON SETENTA Y UNO
0’06
SEIS CÉNTIMOS
0’10
DIEZ CÉNTIMOS
0’02
DOS CÉNTIMOS
CONDESADOR ELECTROLÍTICO DE
1 µF Y 16 V DE TENSIÓN
3-019
€
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
3-020
€
RESISTENCIA 2,2 MΩ
RESISTENCIA
3-021
€
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF
3-022
€
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA
3-023
€
PIC16F627
MICROCONTROLADOR
CASA MICROCHIP
3-024
€
DE
DE
DE
LA
INTERRUPTOR
INTERRUPTOR MECÁNICO DE DOS
POSICIONES.
3-025
€
LED
LED ROJO
3-026
€
RESISTENCIA 220 Ω
RESISTECIA DE 220 Ω
-145-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-027
€
PRESUPUESTO
RESISTENCIA 470 Ω
0’02
DOS CÉNTIMOS
0’51
CINCUENTA Y UN CÉNTIMOS
0’06
SEIS CÉNTIMOS
0’76
SETENTA Y SEIS CÉNTIMOS
1’47
UNO CON CUARENTA Y SIETE CÉNTIMOS
RESISTECIA DE 470 Ω
3-028
€
BTA204-600E
TRIAC QUE PUEDE INTERRUMPIR
HASTA TENSIONES DE 600 V
3-029
€
FUSIBLE 20 mA
FUSIBLE 20 mA
3-030
€
A3212UA
INTERRUPTOR DE EFECTO HALL
3-031
€
28-794C36S
TOROIDE CON ENTREHIERRO DE 2
mm. SECCION DE 21 mm2 Y
DIAMETRO EXTERIOR DE 9 mm
3-032
€
PLACA PCB
6
SEIS
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
3-033
€
CONECTOR
0’30
TREINTA CÉNTIMOS
CONECTOR DOS POLOS PARA
CONEXIÓN CON RED ELÉCTRICA
Código Uds. Designación
Precio
Precio en letra
CAPÍTULO 4: MANO DE OBRA
4-001
€
DISEÑO
HORAS
DE
DISEÑO
CIRCUITERÍA Y PROGRAMA.
4-002
€
30
TREINTA
24
VEINTICUATRO
DE
PROGRAMACIÓN
HORAS DE PROGRAMACIÓN
-146-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
4.3
PRESUPUESTO
APLICACIÓN DE PRECIOS.
Código Uds. Designación
Mediciones
Precio/Ud.
Total
CAPÍTULO 1: CIRCUITO MAESTRO
1-001
€
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
1-002
€
1
0’41
0’41
1
0’02
0’02
1
0’13
0’13
1
3’10
3’10
1
1’26
1’26
1
0’15
0’15
1
0’76
0’76
1
0’10
0’10
DE
RESISTENCIA 100 Ω (0.5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
1-003
€
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRETENSIONES
DE HASTA 250 VAC
1-004
€
TRANSFORMADOR
TRANSFORMADOR PRINCIPAL DEL
CIRCUITO 230~6 V Y 1 VA
1-005
€
FDB08
PUENTE
DE
DIODOS
PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
1-006
€
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
1-007
€
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
1-008
€
CONDENSADOR 100 µF(10 V)
CONDENSADOR
DE 100 µF Y 10 V
ELECTROLÍTICO
-147-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-009
€
PRESUPUESTO
CONDENSADOR 47 nF
1
0’10
0’10
1
9’18
9’18
1
0’15
0’15
1
0’12
0’12
1
0’10
0’10
1
0’11
0’11
1
0’36
0’36
1
0’02
0’02
1
5’80
5’80
CONDENSADOR CERÁMICO DE 47
nF
1-010
€
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
1-011
€
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
1-012
€
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
1-013
€
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
1-014
€
INDUCTANCIA 47 µH
INDUCTANCIA DE 47 µH
1-015
€
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
1-016
€
TRANSITORIOS
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
1-017
€
NEWPORT 76250
TRANSFORMADOR CONVERTIDOR
-148-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-018
€
PRESUPUESTO
CONDENSADOR DE 1 µF (16
V)
1
0’08
0’08
1
0’08
0’08
1
0’20
0’20
2
0’15
0’15
1
0’89
0’89
2
0’02
0’04
2
0’13
0’26
1
0’08
0’08
1
4’53
4’53
CONDESADOR ELECTROLÍTICO DE
1 µF Y 16 V DE TENSIÓN
1-019
€
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
1-020
€
RESISTENCIA 2,2 MΩ
RESISTENCIA
1-021
€
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF
1-022
€
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA
1-023
€
DE
DE
RESISTENCIA 470 Ω
RESISTENCIAS DE 470 Ω Y 0.25 W
1-024
€
1N4148
DIODOS DE ALTA VELOCIDAD
1-025
€
CONDESADOR 10 µF Y 10 V
CONDENSADOR
DE 10 µF Y 10 V
1-026
€
ELECTROLÍTICO
MAX233A
ADAPTADOR DE SEÑAL TTL A RS232C Y A LA INVERSA
-149-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
1-027
€
PRESUPUESTO
PC817
1
0’28
0’28
1
2’06
2’06
2
0’15
0’30
1
0’47
0’47
1
0’40
0’40
1
0’30
0’30
1
6
OPTOACOPLADOR
1-028
€
6N139
OPTOACOPLADOR
CONSUMO
1-029
€
DE
BAJO
RESISTENCIA 1 kΩ
RESISTECIA DE 1 kΩ Y 0.25 W
1-030
€
78L05
REGULADOR DE LINEA A 5 V Y 100
mA
1-031
€
74AHCT1G79GW
FLIP-FLOP TIPO D DE FLANCO
POSITIVO
1-032
€
CONECTOR
CONECTOR
CONECTAR
ELÉCTRICA
1-033
€
2
POLOS
CON
LA
PARA
RED
PLACA PCB
6
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
TOTAL CAPITULO 1
-150-
37’99
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Código Uds. Designación
PRESUPUESTO
Mediciones
Precio/Ud.
Total
CAPÍTULO 2: CIRCUITO SATÉLITE 1 SALIDA
2-001
€
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
2-002
€
1
0’41
0’41
1
0’02
0’02
1
0’13
0’13
1
3’10
3’10
1
1’26
1’26
1
0’15
0’15
1
0’76
0’76
1
0’10
0’10
DE
RESISTENCIA 100 Ω (0.5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
2-003
€
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRETENSIONES
DE HASTA 250 VAC
2-004
€
TRANSFORMADOR
TRANSFORMADOR PRINCIPAL DEL
CIRCUITO 230~6 V Y 1 VA
2-005
€
FDB08
PUENTE
DE
DIODOS
PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
2-006
€
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
2-007
€
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
2-008
€
CONDENSADOR 100 µF(10 V)
CONDENSADOR
DE 100 µF Y 10 V
ELECTROLÍTICO
-151-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-009
€
PRESUPUESTO
CONDENSADOR 47 nF
1
0’10
0’10
1
9’18
9’18
1
0’15
0’15
1
0’12
0’12
1
0’10
0’10
1
0’11
0’11
1
0’36
0’36
1
0’02
0’02
1
5’80
5’80
CONDENSADOR CERÁMICO DE 47
nF
2-010
€
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
2-011
€
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
2-012
€
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
2-013
€
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
2-014
€
INDUCTANCIA 47 µH
INDUCTANCIA DE 47 µH
2-015
€
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
2-016
€
TRANSITORIOS
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
2-017
€
NEWPORT 76250
TRANSFORMADOR CONVERTIDOR
-152-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-018
€
PRESUPUESTO
CONDENSADOR DE 1 µF (16
V)
1
0’08
0’08
1
0’08
0’08
1
0’20
0’20
2
0’15
0’30
1
0’89
0’89
1
5’71
5’71
1
0’06
0’06
1
0’10
0’10
1
0’02
0’02
CONDESADOR ELECTROLÍTICO DE
1 µF Y 16 V DE TENSIÓN
2-019
€
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
2-020
€
RESISTENCIA 2,2 MΩ
RESISTENCIA
2-021
€
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF
2-022
€
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA
2-023
€
PIC16F627
MICROCONTROLADOR
CASA MICROCHIP
2-024
€
DE
DE
DE
LA
INTERRUPTOR
INTERRUPTOR MECÁNICOD E DOS
POSICIONES
2-025
€
LED
LED ROJO
2-026
€
RESISTENCIA 220 Ω
RESISTECIA DE 220 Ω
-153-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
2-027
€
PRESUPUESTO
RESISTENCIA 470 Ω
1
0’02
0’02
1
0’51
0’51
1
0’06
0’06
1
0’76
0’76
1
1’47
1’47
1
6
3
0’30
RESISTECIA DE 470 Ω
2-028
€
BTA204-600E
TRIAC QUE PUEDE INTERRUMPIR
HASTA TENSIONES DE 600 V
2-029
€
FUSIBLE 20 mA
FUSIBLE 20 mA
2-030
€
A3212UA
INTERRUPTOR DE EFECTO HALL
2-031
€
28-794C36S
TOROIDE CON ENTREHIERRO DE 2
mm. SECCION DE 21 mm2 Y
DIAMETRO EXTERIOR DE 9 mm
2-032
€
PLACA PCB
6
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
2-033
€
CONECTOR
0’90
CONECTOR DOS POLOS PARA
CONEXIÓN CON RED ELÉCTRICA
TOTAL CAPITULO 2
-154-
39’03
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Código Uds. Designación
PRESUPUESTO
Mediciones
Precio/Ud.
Total
CAPÍTULO 3: CIRCUITO SATÉLITE 2 SALIDAS
3-001
€
FUSIBLE T 630 mA
FUSIBLE
PRINCIPAL
PROTECCIÓN DEL CIRCUITO
3-002
€
1
0’41
0’41
1
0’02
0’02
1
0’13
0’13
1
3’10
3’10
1
1’26
1’26
1
0’15
0’15
1
0’76
0’76
1
0’10
0’10
DE
RESISTENCIA 100 Ω (0.5 W)
RESISTENCIA DE 100 Ω Y MEDIO
VATIO
3-003
€
MOV 250 VAC
METAL
OXIDE
VARISTOR.
SUPRESOR DE SOBRETENSIONES
DE HASTA 250 VAC
3-004
€
TRANSFORMADOR
TRANSFORMADOR PRINCIPAL DEL
CIRCUITO 230~6 V Y 1 VA
3-005
€
FDB08
PUENTE
DE
DIODOS
PARA
ELIMINAR
LA
COMPONENTE
NEGATIVA DE TENSIÓN
3-006
€
CONDENSADOR 470 µF (16 V)
CONDENSADOR ELECTROLÍTICO
DE 470 µF Y 16 V DE TENSIÓN
3-007
€
KA7805
REGULADOR DE LÍNEA A 5 v Y 500
mA
3-008
€
CONDENSADOR 100 µF(10 V)
CONDENSADOR
DE 100 µF Y 10 V
ELECTROLÍTICO
-155-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-009
€
PRESUPUESTO
CONDENSADOR 47 nF
1
0’10
0’10
1
9’18
9’18
1
0’15
0’15
1
0’12
0’12
1
0’10
0’10
1
0’11
0’11
1
0’36
0’36
1
0’02
0’02
1
5’80
5’80
CONDENSADOR CERÁMICO DE 47
nF
3-010
€
TDA5051A
MÓDEM DE RED ELÉCTRICA,
PHILIPS SEMICONDUCTORS
3-011
€
CONDENSADOR 33 nF/X2 250
VAC
CONDENSADOR DE 33 nF. Y 250
VAC. SUPRESOR DE RUIDO DE
RADIO FRECUENCIA
3-012
€
INDUCTANCIA 47 µH BAJA Rs
INDUCTANCIA DE 47 µH DE BAJA
RESISTENCIA SERIE INTERNA
3-013
€
CONDENSADOR 33 nF
CONDENSADOR CERÁMICO DE 33
nF
3-014
€
INDUCTANCIA 47 µH
INDUCTANCIA DE 47 µH
3-015
€
SA5.0A
SUPRESOR DE
BIDIRECCIONAL
3-016
€
TRANSITORIOS
RESISTENCIA DE 5.6 Ω
RESISTENCIA DE 5.6 Ω
3-017
€
NEWPORT 76250
TRANSFORMADOR
CONVERTIDOR.
-156-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-018
€
PRESUPUESTO
CONDENSADOR DE 1 µF (16
V)
1
0’08
0’08
1
0’08
0’08
1
0’20
0’20
2
0’15
0’30
1
0’89
0’89
1
5’71
5’71
1
0’06
0’06
1
0’10
0’10
1
0’02
0’02
CONDESADOR ELECTROLÍTICO DE
1 µF Y 16 V DE TENSIÓN
3-019
€
CONDENSADOR DE 1 nF
CONDENSADOR CERÁMICO DE 1
nF
3-020
€
RESISTENCIA 2,2 MΩ
RESISTENCIA
3-021
€
CONDENSADOR DE 27 pF
CONDENSADOR CERÁMICO DE 27
pF
3-022
€
X-TAL 4 MHz
OSCILADOR DE CRISTAL
CUARZO
DE
4
MHz
FRECUENCIA
3-023
€
PIC16F627
MICROCONTROLADOR
CASA MICROCHIP
3-024
€
DE
DE
DE
LA
INTERRUPTOR
INTERRUPTOR MECÁNICOD E DOS
POSICIONES
3-025
€
LED
LED ROJO
3-026
€
RESISTENCIA 220 Ω
RESISTECIA DE 220 Ω
-157-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
3-027
€
PRESUPUESTO
RESISTENCIA 470 Ω
2
0’02
0’04
2
0’51
1’02
2
0’06
0’12
1
0’76
0’76
1
1’47
1’47
1
6
4
0’30
RESISTECIA DE 470 Ω
3-028
€
BTA204-600E
TRIAC QUE PUEDE INTERRUMPIR
HASTA TENSIONES DE 600 V
3-029
€
FUSIBLE 20 mA
FUSIBLE 20 mA
3-030
€
A3212UA
INTERRUPTOR DE EFECTO HALL
3-031
€
28-794C36S
TOROIDE CON ENTREHIERRO DE 2
mm. SECCION DE 21 mm2 Y
DIAMETRO EXTERIOR DE 9 mm
3-032
€
PLACA PCB
6
PLACA FOTOSENSIBLE DONDE
IMPLEMENTAR LA CIRCUITERIA.
88x71x1.6 mm
3-033
€
CONECTOR
1’20
CONECTOR DOS POLOS PARA
CONEXIÓN CON RED ELÉCTRICA
TOTAL CAPITULO 3
-158-
39’92
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Código Uds. Designación
PRESUPUESTO
Mediciones
Precio/Ud.
Total
CAPÍTULO 4: MANO DE OBRA
4-001
€
DISEÑO
HORAS
DE
DISEÑO
CIRCUITERÍA Y PROGRAMA
4-002
€
PROGRAMACIÓN
30
30
900
40
24
960
DE
HORAS DE PROGRAMACIÓN
TOTAL CAPITULO 4
-159-
1.860
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
4.4
PRESUPUESTO
RESUMEN DEL PRESUPUESTO.
CAPITULO 1.- CIRCUITO MAESTRO.
37’99
CAPITULO 2.- CIRCUITO SATÉTILE 1 SALIDA.
39’03
CAPITULO 3.- CIRCUITO SATÉLITE 2 SALIDAS.
39’92
CAPITULO 4.- MANO DE OBRA.
1.860
Presupuesto Ejecución Material
1976’94
Beneficio industrial ( 6 % )
118’61
Gastos generales ( 13 % )
257
Presupuesto Ejecución Contrato
2.352’55
I.V.A. ( 16 % )
376’41
PRESUPUESTO DE LICITACION
2.728’96
El presupuesto de licitación del proyecto de control de iluminación de una vivienda
mediante la red eléctrica y un PC asciende a la cantidad de dos mil setecientos veintiocho
euros con noventa y seis céntimos.
Tarragona, a 7 de Abril de 2003-02-21
Firmado: José Luis Pelegrí
Ingeniero técnico industrial
Nº colegiado: 477234
-160-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5
PLIEGO DE CONDICIONES
5.1 PLIEGO DE CONDICIONES GENERALES
5.2 PLIEGO DE CONDICIONES TÉCNICAS
-161-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
5.1
PLIEGO DE CONDICIONES
PLIEGO DE CONDICIONES GENERALES.
5.1.1 Condiciones generales.
El presente Pliego de Condiciones tiene por objeto definir al Contratista el alcance
del trabajo y la ejecución cualitativa del mismo.
El trabajo eléctrico consistirá en la instalación eléctrica completa para fuerza,
alumbrado y tierra.
El alcance del trabajo del Contratista incluye el diseño y preparación de todos los
planos, diagramas, especificaciones, lista de material y requisitos para la adquisición e
instalación del trabajo.
5.1.1.1 Reglamentos y normas.
Todas las unidades de obra se ejecutarán cumpliendo las prescripciones indicadas en
los Reglamentos de Seguridad y Normas Técnicas de obligado cumplimiento para este tipo
de instalaciones, tanto de ámbito nacional, autonómico como municipal, así como, todas
las otras que se establezcan en la Memoria Descriptiva del mismo.
Se adaptarán además, a las presentes condiciones particulares que complementarán
las indicadas por los Reglamentos y Normas citadas.
5.1.1.2 Materiales.
Todos los materiales empleados serán de primera calidad.
Cumplirán las
especificaciones y tendrán las características indicadas en el proyecto y en las normas
técnicas generales, y además en las de la Compañía Distribuidora de Energía, para este tipo
de materiales.
Toda especificación o característica de materiales que figuren en uno solo de los
documentos del Proyecto, aún sin figurar en los otros es igualmente obligatoria.
En caso de existir contradicción u omisión en los documentos del proyecto, el
Contratista obtendrá la obligación de ponerlo de manifiesto al Técnico Director de la obra,
-162-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
quien decidirá sobre el particular. En ningún caso podrá suplir la falta directamente, sin la
autorización expresa.
Una vez adjudicada la obra definitivamente y antes de iniciarse esta, el Contratista
presentara al Técnico Director los catálogos, cartas muestra, certificados de garantía o de
homologación de los materiales que vayan a emplearse. No podrá utilizarse materiales que
no hayan sido aceptados por el Técnico Director.
5.1.1.3 Ejecución de las obras.
5.1.1.3.1 Comienzo.
El contratista dará comienzo la obra en el plazo que figure en el contrato establecido
con la Propiedad, o en su defecto a los quince días de la adjudicación definitiva o de la
firma del contrato.
El Contratista está obligado a notificar por escrito o personalmente en forma directa
al Técnico Director la fecha de comienzo de los trabajos.
5.1.1.3.2 Plazo de ejecución.
La obra se ejecutará en el plazo que se estipule en el contrato suscrito con la
Propiedad o en su defecto en el que figure en las condiciones de este pliego.
Cuando el Contratista, de acuerdo, con alguno de los extremos contenidos en el
presente Pliego de Condiciones, o bien en el contrato establecido con la Propiedad, solicite
una inspección para poder realizar algún trabajo ulterior que esté condicionado por la
misma, vendrá obligado a tener preparada para dicha inspección, una cantidad de obra que
corresponda a un ritmo normal de trabajo.
Cuando el ritmo de trabajo establecido por el Contratista, no sea el normal, o bien a
petición de una de las partes, se podrá convenir una programación de inspecciones
obligatorias de acuerdo con el plan de obra.
5.1.1.3.3 Libro de órdenes.
El Contratista dispondrá en la obra de un Libro de Ordenes en el que se escribirán las
que el Técnico Director estime darle a través del encargado o persona responsable, sin
-163-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
perjuicio de las que le dé por oficio cuando lo crea necesario y que tendrá la obligación de
firmar el enterado.
5.1.1.4 Interpretación y desarrollo del proyecto.
La interpretación técnica de los documentos del Proyecto, corresponde al Técnico
Director. El Contratista está obligado a someter a éste cualquier duda, aclaración o
contradicción que surja durante la ejecución de la obra por causa del Proyecto, o
circunstancias ajenas, siempre con la suficiente antelación en función de la importancia del
asunto.
El contratista se hace responsable de cualquier error de la ejecución motivado por la
omisión de ésta obligación y consecuentemente deberá rehacer a su costa los trabajos que
correspondan a la correcta interpretación del Proyecto.
El Contratista está obligado a realizar todo cuanto sea necesario para la buena
ejecución de la obra, aún cuando no se halle explícitamente expresado en el pliego de
condiciones o en los documentos del proyecto.
El contratista notificará por escrito o personalmente en forma directa al Técnico
Director y con suficiente antelación las fechas en que quedarán preparadas para inspección,
cada una de las partes de obra para las que se ha indicado la necesidad o conveniencia de la
misma o para aquellas que, total o parcialmente deban posteriormente quedar ocultas. De
las unidades de obra que deben quedar ocultas, se tomaran antes de ello, los datos precisos
para su medición, a los efectos de liquidación y que sean suscritos por el Técnico Director
de hallarlos correctos. De no cumplirse este requisito, la liquidación se realizará en base a
los datos o criterios de medición aportados por éste.
5.1.1.5 Obras complementarias.
El contratista tiene la obligación de realizar todas las obras complementarias que
sean indispensables para ejecutar cualquiera de las unidades de obra especificadas en
cualquiera de los documentos del Proyecto, aunque en el, no figuren explícitamente
mencionadas dichas obras complementarias. Todo ello sin variación del importe
contratado.
5.1.1.6 Modificaciones.
El contratista está obligado a realizar las obras que se le encarguen resultantes de
modificaciones del proyecto, tanto en aumento como disminución o simplemente
-164-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
variación, siempre y cuando el importe de las mismas no altere en más o menos de un 25%
del valor contratado.
La valoración de las mismas se hará de acuerdo, con los valores establecidos en el
presupuesto entregado por el Contratista y que ha sido tomado como base del contrato. El
Técnico Director de obra está facultado para introducir las modificaciones de acuerdo con
su criterio, en cualquier unidad de obra, durante la construcción, siempre que cumplan las
condiciones técnicas referidas en el proyecto y de modo que ello no varíe el importe total
de la obra.
5.1.1.7 Obra defectuosa.
Cuando el Contratista halle cualquier unidad de obra que no se ajuste a lo
especificado en el proyecto o en este Pliego de Condiciones, el Técnico Director podrá
aceptarlo o rechazarlo; en el primer caso, éste fijará el precio que crea justo con arreglo a
las diferencias que hubiera, estando obligado el Contratista a aceptar dicha valoración, en
el otro caso, se reconstruirá a expensas del Contratista la parte mal ejecutada sin que ello
sea motivo de reclamación económica o de ampliación del plazo de ejecución.
5.1.1.8 Medios auxiliares.
Serán de cuenta del Contratista todos los medios y máquinas auxiliares que sean
precisas para la ejecución de la obra. En el uso de los mismos estará obligado a hacer
cumplir todos los
Reglamentos de Seguridad en el trabajo vigentes y a utilizar los medios de protección
a sus operarios.
5.1.1.9 Conservación de las obras.
Es obligación del Contratista la conservación en perfecto estado de las unidades de
obra realizadas hasta la fecha de la recepción definitiva por la Propiedad, y corren a su
cargo los gastos derivados de ello.
-165-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5.1.1.10 Recepción de las obras.
5.1.1.10.1 Recepción provisional.
Una vez terminadas las obras, tendrá lugar la recepción provisional y para ello se
practicará en ellas un detenido reconocimiento por el Técnico Director y la Propiedad en
presencia del Contratista, levantando acta y empezando a correr desde ese día el plazo de
garantía si se hallan en estado de ser admitida.
De no ser admitida se hará constar en el acta y se darán instrucciones al Contratista
para subsanar los defectos observados, fijándose un plazo para ello, expirando el cual se
procederá a un nuevo reconocimiento a fin de proceder a la recepción provisional.
5.1.1.10.2 Plazo de garantía.
El plazo de garantía será como mínimo de un año, contado desde la fecha de la
recepción provisional, o bien el que se establezca en el contrato también contado desde la
misma fecha. Durante este período queda a cargo del Contratista la conservación de las
obras y arreglo de los desperfectos causados por asiento de las mismas o por mala
construcción.
5.1.1.10.3 Recepción definitiva.
Se realizará después de transcurrido el plazo de garantía de igual forma que la
provisional. A partir de esta fecha cesará la obligación del Contratista de conservar y
reparar a su cargo las obras si bien subsistirán las responsabilidades que pudiera tener por
defectos ocultos y deficiencias de causa dudosa.
5.1.1.11 Contratación de la empresa.
5.1.1.11.1 Modo de contratación.
El conjunto de las instalaciones las realizará la empresa escogida por concursosubasta.
-166-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5.1.1.11.2 Presentación.
Las empresas seleccionadas para dicho concurso deberán presentar sus proyectos en
sobre lacrado, antes del 15 de septiembre de 1.993 en el domicilio del propietario.
5.1.1.11.3 Selección.
La empresa escogida será anunciada la semana siguiente a la conclusión del plazo de
entrega. Dicha empresa será escogida de mutuo acuerdo entre el propietario y el director de
la obra, sin posible reclamación por parte de las otras empresas concursantes.
5.1.1.12 Fianza.
En el contrato se establecerá la fianza que el contratista deberá depositar en garantía
del cumplimiento del mismo, o, se convendrá una retención sobre los pagos realizados a
cuenta de obra ejecutada.
De no estipularse la fianza en el contrato se entiende que se adopta como garantía
una retención del 5% sobre los pagos a cuenta citados.
En el caso de que el Contratista se negase a hacer por su cuenta los trabajos para
ultimar la obra en las condiciones contratadas, o a atender la garantía, la Propiedad podrá
ordenar ejecutarlas a un tercero, abonando su importe con cargo a la retención o fianza, sin
perjuicio de las acciones legales a que tenga derecho la Propiedad si el importe de la fianza
no bastase.
La fianza retenida se abonará al Contratista en un plazo no superior a treinta días una
vez firmada el acta de recepción definitiva de la obra.
5.1.2 Condiciones económicas.
5.1.2.1 Abono de la obra.
En el contrato se deberá fijar detalladamente la forma y plazos que se abonarán las
obras. Las liquidaciones parciales que puedan establecerse tendrán carácter de documentos
-167-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
provisionales a buena cuenta, sujetos a las certificaciones que resulten de la liquidación
final. No suponiendo, dichas liquidaciones, aprobación ni recepción de las obras que
comprenden.
Terminadas las obras se procederá a la liquidación final que se efectuará de acuerdo
con los criterios establecidos en el contrato.
5.1.2.2 Precios.
El contratista presentará, al formalizarse el contrato, relación de los precios de las
unidades de obra que integran el proyecto, los cuales de ser aceptados tendrán valor
contractual y se aplicarán a las posibles variaciones que puedan haber.
Estos precios unitarios, se entiende que comprenden la ejecución total de la unidad
de obra, incluyendo todos los trabajos aún los complementarios y los materiales así como
la parte proporcional de imposición fiscal, las cargas laborales y otros gastos repercutibles.
En caso de tener que realizarse unidades de obra no previstas en el proyecto, se fijará
su precio entre el Técnico Director y el Contratista antes de iniciar la obra y se presentará a
la propiedad para su aceptación o no.
5.1.2.3 Revisión de precios.
En el contrato se establecerá si el contratista tiene derecho a revisión de precios y la
fórmula a aplicar para calcularla. En defecto de esta última, se aplicará a juicio del Técnico
Director alguno de los criterios oficiales aceptados.
5.1.2.4 Penalizaciones.
Por retraso en los plazos de entrega de las obras, se podrán establecer tablas de
penalización cuyas cuantías y demoras se fijarán en el contrato.
5.1.2.5 Contrato.
El contrato se formalizará mediante documento privado, que podrá elevarse a
escritura pública a petición de cualquiera de las partes. Comprenderá la adquisición de
todos los materiales, transporte, mano de obra, medios auxiliares para la ejecución de la
-168-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
obra proyectada en el plazo estipulado, así como la reconstrucción de las unidades
defectuosas, la realización de las obras complementarias y las derivadas de las
modificaciones que se introduzcan durante la ejecución, éstas últimas en los términos
previstos.
La totalidad de los documentos que componen el Proyecto Técnico de la obra serán
incorporados al contrato y tanto el contratista como la Propiedad deberán firmarlos en
testimonio de que los conocen y aceptan.
5.1.2.6 Responsabilidades.
El Contratista es el responsable de la ejecución de las obras en las condiciones
establecidas en el proyecto y en el contrato. Como consecuencia de ello vendrá obligado a
la demolición de lo mal ejecutado y a su reconstrucción correctamente sin que sirva de
excusa el que el Técnico Director haya examinado y reconocido las obras.
El contratista es el único responsable de todas las contravenciones que él o su
personal cometan durante la ejecución de las obras u operaciones relacionadas con las
mismas. También es responsable de los accidentes o daños que por errores, inexperiencia
o empleo de métodos inadecuados se produzcan a la propiedad a los vecinos o terceros en
general.
El Contratista es el único responsable del incumplimiento de las disposiciones
vigentes en la materia laboral respecto de su personal y por tanto los accidentes que puedan
sobrevenir y de los derechos que puedan derivarse de ellos.
5.1.2.7 Rescisión del contrato.
5.1.2.7.1 Causas de rescisión.
Se consideraran causas suficientes para la rescisión del contrato las siguientes:
•
Primero: Muerte o incapacitación del Contratista.
•
Segunda: La quiebra del contratista.
•
Tercera: Modificación del proyecto cuando produzca alteración en más o
menos 25% del valor contratado.
-169-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
•
Cuarta: Modificación de las unidades de obra en número superior al 40% del
original.
•
Quinta: La no iniciación de las obras en el plazo estipulado cuando sea por
causas ajenas a la Propiedad.
•
Sexta: La suspensión de las obras ya iniciadas siempre que el plazo de
suspensión sea mayor de seis meses.
•
Séptima: Incumplimiento de las condiciones del Contrato cuando implique
mala fe.
•
Octava : Terminación del plazo de ejecución de la obra sin haberse llegado a
completar ésta.
•
Décima: Actuación de mala fe en la ejecución de los trabajos.
•
Undécima: Destajar o subcontratar la totalidad o parte de la obra a terceros
sin la autorización del Técnico Director y la Propiedad.
5.1.2.8 Liquidación en caso de rescisión del contrato.
Siempre que se rescinda el Contrato por causas anteriores o bien por acuerdo de
ambas partes, se abonará al Contratista las unidades de obra ejecutadas y los materiales
acopiados a pie de obra y que reúnan las condiciones y sean necesarios para la misma.
Cuando se rescinda el contrato llevará implícito la retención de la fianza para obtener
los posibles gastos de conservación de el período de garantía y los derivados del
mantenimiento hasta la fecha de nueva adjudicación.
-170-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5.1.3 Condiciones facultativas.
5.1.3.1 Normas a seguir.
El diseño de la instalación eléctrica estará de acuerdo con las exigencias o
recomendaciones expuestas en la última edición de los siguientes códigos:
1. Reglamento
Electrotécnico
Complementarias.
de
Baja
Tensión
e
Instrucciones
2. Normas UNE.
3. Publicaciones del Comité Electrotécnico Internacional (CEI).
4. Plan nacional y Ordenanza General de Seguridad e Higiene en el trabajo.
5. Normas de la Compañía Suministradora.
6. Lo indicado en este pliego de condiciones con preferencia a todos los códigos
y normas.
5.1.3.2 Personal.
El Contratista tendrá al frente de la obra un encargado con autoridad sobre los demás
operarios y conocimientos acreditados y suficientes para la ejecución de la obra.
El encargado recibirá, cumplirá y transmitirá las instrucciones y ordenes del Técnico
Director de la obra.
El Contratista tendrá en la obra, el número y clase de operarios que haga falta para el
volumen y naturaleza de los trabajos que se realicen, los cuales serán de reconocida aptitud
y experimentados en el oficio. El Contratista estará obligado a separar de la obra, a aquel
personal que a juicio del Técnico Director no cumpla con sus obligaciones, realice el
trabajo defectuosamente, bien por falta de conocimientos o por obrar de mala fe.
-171-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5.1.3.3 Reconocimiento y ensayos previos.
Cuando lo estime oportuno el Técnico Director, podrá encargar y ordenar el análisis,
ensayo o comprobación de los materiales, elementos o instalaciones, bien sea en fábrica de
origen, laboratorios oficiales o en la misma obra, según crea más conveniente, aunque
estos no estén indicados en este pliego.
En el caso de discrepancia, los ensayos o pruebas se efectuarán en el laboratorio
oficial que el Técnico Director de obra designe.
Los gastos ocasionados por estas pruebas y comprobaciones, serán por cuenta del
Contratista.
5.1.3.4 Ensayos.
Antes de la puesta en servicio del sistema eléctrico, el Contratista habrá de hacer los
ensayos adecuados para probar, a la entera satisfacción del Técnico Director de obra, que
todo equipo, aparatos y cableado han sido instalados correctamente de acuerdo con las
normas establecidas y están en condiciones satisfactorias del trabajo.
1. Todos los ensayos serán presenciados por el Ingeniero que representa el
Técnico Director de obra.
2. Los resultados de los ensayos serán pasados en certificados indicando fecha y
nombre de la persona a cargo del ensayo, así como categoría profesional.
3. Los cables, antes de ponerse en funcionamiento, se someterán a un ensayo de
resistencia de aislamiento entre las fases y entre fase y tierra, que se hará de
la forma siguiente:
4. Alimentación a motores y cuadros. Con el motor desconectado medir la
resistencia de aislamiento desde el lado de salida de los arrancadores.
5. Maniobra de motores. Con los cables conectados a las estaciones de maniobra
y a los dispositivos de protección y mando medir la resistencia de aislamiento
entre fases y tierra solamente.
-172-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
6. Alumbrado y fuerza, excepto motores. Medir la resistencia de aislamiento de
todos los aparatos (armaduras, tomas de corriente, etc...), que han sido
conectados, a excepción de la colocación de las lámparas.
7. En los cables enterrados, estos ensayos de resistencia de aislamiento se harán
antes y después de efectuar el rellenado y compactado.
5.1.3.5 Aparellaje.
5.1.3.5.1 - Antes de poner el aparellaje bajo tensión, se medirá la resistencia de
aislamiento de cada embarrado entre fases y entre fases y tierra. Las medidas deben
repetirse con los interruptores en posición de funcionamiento y contactos abiertos.
5.1.3.5.2 - Todo relé de protección que sea ajustable será calibrado y ensayado,
usando contador de ciclos, caja de carga, amperímetro y voltímetro, según se necesite.
5.1.3.5.3 - Se dispondrá, en lo posible, de un sistema de protección selectiva. De
acuerdo con esto, los relés de protección se elegirán y coordinarán para conseguir un
sistema que permita actuar primero el dispositivo de interrupción más próximo a la falta.
5.1.3.5.4 - El contratista preparará curvas de coordinación de relés y calibrado de
éstos para todos los sistemas de protección previstos.
5.1.3.5.5 - Se comprobarán los circuitos secundarios de los transformadores de
intensidad y tensión aplicando corrientes o tensión a los arrollamientos secundarios de los
transformadores y comprobando que los instrumentos conectados a estos secundarios
funcionan.
5.1.3.5.6 - Todos los interruptores automáticos se colocarán en posición de prueba y
cada interruptor será cerrado y disparado desde su interruptor de control. Los interruptores
deben ser disparados por accionamiento manual y aplicando corriente a los relés de
protección. Se comprobarán todos los enclavamientos.
5.1.3.5.7 - Se medirá la rigidez dieléctrica del aceite de los interruptores de pequeño
volumen.
-173-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5.1.3.6 Varios.
5.3.7.1.- Se comprobará la puesta a tierra para determinar la continuidad de los
cables de tierra y sus conexiones y se medirá la resistencia de los electrodos de tierra.
5.3.7.2.- Se comprobarán todas las alarmas del equipo eléctrico para comprobar el
funcionamiento adecuado, haciéndolas activar simulando condiciones anormales.
5.3.7.3.- Se comprobaran los cargadores
de baterías para comprobar su
funcionamiento correcto de acuerdo con las recomendaciones de los fabricantes.
-174-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
5.2
PLIEGO DE CONDICIONES
PLIEGO DE CONDICIONES TÉCNICAS.
5.2.1 Generalidades.
Para una correcta realización del montaje existen una serie de puntos a seguir,
haciendo especial hincapié en el orden en que éstos deben desarrollarse.
1. Encargo y compra de materiales y componentes necesarios.
2. Construcción de los inductores.
3. Fabricación de las placas de cir cuito impreso.
4. Montaje de los componentes en las placas fabricadas anteriormente.
5. Ajuste y comprobación de los parámetros para un correcto funcionamiento.
6. Puesta en marcha del equipo.
7. Controles de calidad y de fiabilidad.
8. Mantenimiento del equipo. Información regular de las personas que estén al
cargo del equipo.
Todas estas partes que en su conjunto forman la obra, deberán ser ejecutadas por
montadores que se someterán a las normas y reglas que la comunidad autónoma, país o
comunidades internacionale s tengan previstas para este tipo de montajes, no haciéndose así
cargo el proyectista de los desperfectos ocasionados por su incumplimiento.
5.2.1.1 Resistencias.
Existen una serie de tolerancias de acuerdo con la precisión del sistema a
implementar. El valor de esta tolerancia se expresa en tanto por ciento del valor nominal de
la misma. Las más comunes son del 5%, 10% y 20%, aunque en el mercado existen
resistencias con tolerancias menores, siendo su coste bastante superior.
-175-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
De acuerdo con el valor óhmico y su correspondiente tolerancia, existe una
clasificación estandarizada de resistencias en tres series: la E6, E12 y E24. El valor de las
resistencias se identifica mediante unos códigos de colores que se encuentran en las
mismas. Los dos primeros anillos corresponden con las dos primeras cifras del valor,
mientras que el tercero se conoce como factor de multiplicidad. El último indica el valor de
la tolerancia.
Otro aspecto interesante en cuanto a la elección de la resistencia apropiada es tener
en cuenta la disipación máxima de la misma. En la mayoría de los casos se usan de ¼ W,
siendo sólo necesaria la presencia de resistencias de mayor potencia para cargas en
aplicaciones que lo requieran.
5.2.1.2 Inductores.
La elección del tipo de núcleo, así como del tipo de conductor para el devanado son
factores básicos para la construcción de un inductor apropiado. Los valores necesarios, se
detallan en el apartado correspondiente de la elección de los componentes en la memoria
de cálculo.
5.2.1.3 Condensadores.
La capacidad no minal es la especificada por el fabricante y marcada sobre el cuerpo
del componente, mediante un código de colores (similar al empleado para el marcaje de
resistores). También puede estar marcada una cifra y la letra de unidades (p para
picofaradios, η para nanofaradios, µ para microfaradios y m para milifaradios). En los
condensadores cerámicos, cuya capacidad se expresa en pF, se elimina a veces el marcaje
de la p y se utiliza, si fuera necesario, la letra k correspondiente al prefijo “mil”.
Cada valor nominal ha de llevar asociada una tolerancia, que se marca mediante un
color o mediante una segunda letra. Además suele marcarse también la tensión nominal, y
en el caso de condensadores cerámicos con coeficiente de temperatura establecido, el
coeficiente de temperatura, ya sea con una franja de color o con una letra.
La elección del tipo de condensador a utilizar es también un punto a tener muy a
tener en cuenta en el montaje de un equipo de potencia. El mercado de este tipo de
componente electrónico es muy amplio, existiendo así un amplio abanico de donde elegir.
-176-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
Los dos tipos de condensadores que se utilizarán son cerámicos y electrolíticos:
Condensadores cerámicos: Los materiales cerámicos son buenos aislantes térmicos y
eléctricos. El proceso de fabricación consiste básicamente en la metalización de las dos
caras del material cerámico. Se fabrican de 1pF a 1nF (grupo I) y de 1pF a 470nF (grupo
II) con tensiones comprendidas entre 3 y 10000v. Su identificación se realiza mediante
código alfanumérico. Se utilizan en circuitos que necesitan alta estabilidad y bajas pérdidas
en altas frecuencias.
Condensadores electrolíticos: Pueden ser de aluminio o de tántalo, y su principal
diferencia con los anteriores en cuanto a la apariencia física es que las dimensiones de
éstos no son demasiado elevadas incluso para grandes capacidades. Uno de los
inconvenientes que presentan es que la resistencia serie que presentan es bastante elevada,
con lo que las pérdidas se disparan, reduciéndose así considerablemente la vida media de
este tipo de condensadores.
5.2.1.4 Placas de circuito impreso.
La totalidad de los componentes que forman los diferentes dispositivos se montan
sobre una placa de circuito impreso de doble cara con presensibilización positiva (PCB,
printed circuit board), cuyas características y medidas son las más adecuadas para la
implementación de la circuitería.
5.2.1.5 Soldadura.
5.2.1.5.1 Reflujo.
Este método requiere una pasta especial compuesta de finas partículas de soldar que
es aplicada sobre el circuito impreso de diversas formas antes de disponer sobre esta los
componentes. Este método engloba la soldadura por infrarrojos, por convección, por
calentamiento, etc. Los dispositivos deben ser capaces de soportar elevadas temperaturas
5.2.1.5.2 Ondas.
No se recomienda para dispositivos con encapsulado específico de superficie o para
planas de circuito impreso con una alta densidad de componentes
-177-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5.2.1.5.3 Soldadura manual.
Fijar el componente soldando, en primera instancia, los pines diagonalmente
opuestos. Usar un soldador de bajo voltaje (24 V o menos) de estaño aplicado a la parte
plana del pin. El tiempo de contacto debe limitarse a 10 segundos a 300 ºC. Cuando se use
una herramienta dedicada, el resto de los pines pueden ser soldados en una operación en
intervalos de 2 a 5 segundos a una temperatura comprendida entre 270 y 300 ºC.
5.2.1.6 Reglamento Electrotécnico de Baja Tensión.
Este reglamento dispone de unas normas necesarias en su cumplimiento, y que está
relacionado con los aspectos técnicos a la hora de realizar el montaje. Las normas
esenciales que el presente proyecto requiere son las que se presentan a continuación:
M.I.B.T. 017: Instalaciones interiores o receptores. Prescripciones de carácter
general.
M.I.B.T. 029: Instalaciones para tensiones pequeñas. M.I.B.T. 030: Instalacio nes para
tensiones especiales.
M.I.B.T. 031: Receptores. Prescripciones generales.
M.I.B.T. 035: Receptores. Transformadores y autotransformadores. Reactancias y
rectificadores. Condensadores.
M.I.B.T. 044: Normas U.N.E. de obligado cumplimiento.
5.2.1.7 Especificaciones mecánicas
Los requerimientos mecánicos en el montaje del prototipo son un punto muy a tener
en cuenta para una correcta ejecución, siendo necesarias unas ciertas calidades en los
materiales con el fin de que la solidez mecánica sea aceptable.
La mayoría de los componentes presentan una sujeción estable por soldadura
directamente con la placa. Sin embargo, los circuitos impresos se insertan en la placa
mediante zócalos (en algunos casos de doble cara) con el claro objetivo de realizar
sustitucione s de los integrados con una cierta facilidad, ya sea porque se han dañado o
porque se quieren realizar otras pruebas. Por otro lado, los inductores se sustentan
mediante unas abrazaderas de plástico que fijan éstos sobre la placa de una manera
bastante sólida.
-178-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5.2.2 Entorno.
El usuario deberé disponer de un sistema operativo Microsoft Windows 98/Me/XP
con la API necesaria para ejecutar aplicaciones de Visual Basic 6. El proveedor sólo es
responsable de suministrar la API necesaria, el sistema operativo deberá ser propiedad del
usuario.
La responsabilidad de aportar un sistema operativo legal es del usuario, eximiendo de
cualquier responsabilidad de daños en caso de producirse un malfuncionamiento debido a
un sistema operativo sin licencia legal.
5.2.3 Interface.
El puerto serie del PC debe contar con un conector Sub-D9 macho, o en su defecto,
un conector Sub-D25 macho. Para este caso será responsabilidad del usuario el proveerse
con un adaptador Sub-D25/Sub-D9.
El puerto serie debe cumplir con el estándar RS-232C, proporcionando tensiones a
partir de -12 V para el valor lógico “0” o tensiones a partir de +12 V para el valor lógico
“1”.
La toma de corriente a la que se conecta el dispositivo maestro debe estar contenida
en la red general donde se conecten el resto de dispositivos de red.
5.2.4 Suministro.
Se debe comprobar la regulación de línea del sistema de alimentación mediante red
eléctrica convencional, para que asegure una aportación de 5 V y 500 mA. Los elementos
pasivos de seguridad deben estar homologados y probados (los que puedan usarse
repetidamente).
El suministro eléctrico debe ser regular y no sufrir constantes variaciones de tensión
en la red eléctrica, de ser así el responsable de los desperfectos será la compañía
suministradora de electricidad.
-179-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
5.2.5 Comunicaciones.
Los dispositivos módem de red eléctrica deben ser testados antes del montaje
mediante el uso de las técnicas especificadas por el fabricante.
Los filtros deben actuar correctamente para la frecuencia de la portadora, al igual que
el transformador de alta frecuencia, que debe ser configurado para un óptimo
funcionamiento de las comunicaciones.
Los diferentes dispositivos deberán estar conectados bajo un mismo diferencial,
evitando el paso por transformadores intermedios que atenúen la señal o incluso la anulen,
evitando que las tramas lleguen a los dispositivos a partir de ciertas zonas.
Es conveniente que elementos que puedan ocasionar alteraciones y ruido en la red
eléctrica estén debidamente aislados, siendo esto responsabilidad del proveedor de dicho
elemento.
5.2.6 µcontrolador.
El µcontrolador debe ser configurado para comunicar a 1200 bauds, aceptando
interrupciones por el pin RX y procesando mensajes. Los pines deben ser configurados
según su función, si son de adquisición, de entrada y si son de actuación, de salida.
El programa debe ser almacenado en memoria flash y la ID del dispositivo en
memoria EEPROM.
5.2.7 Actuador.
El actuador debe ser capaz de interrumpir el suministro eléctrico al elemento externo
en un tiempo muy reducido, durante periodos indefinidos.
5.2.8 Sensor.
El toroide debe tener el número de espiras acordado en la memoria de cálculo y
éstas deben estar aisladas mediante una película de barniz que evite cortocircuitos.
-180-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
PLIEGO DE CONDICIONES
Para el correcto funcionamiento de los dispositivos y la veracidad de la información
transmitida, los elementos a controlar deben tener una potencia mínima de 15 W.
Tarragona, a 7 de Abril de 2003-02-21
Firmado: José Luis Pelegrí
Ingeniero técnico industrial
Nº colegiado: 477234
-181-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6
6.1 CÓDIGO FUENTE DEL PROGRAMA
6.2 CÓDIGO DE PÁGINAS EN ASP
6.3 MANUAL DE USUARIO DEL PROGRAMA
-182-
ANEXOS
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
6.1
ANEXOS
CÓDIGO FUENTE DEL PROGRAMA.
6.1.1 MDIRaiz.frm
Figura 88. Vista del formulario MDIRaiz.
El formulario MDIRaiz.frm es el contenedor del resto de los elementos de la
aplicación, a excepción de los formularios Frm_desbloquear y Frm_Ayuda. El resto de los
formularios tienen cabida en este y se comunican entre ellos gracias a este.
La función principal es la de ofrecer al usuario el entorno en el que poder desarrollar
su actividad de control, aportando sencillez y una buena distribución de los controles, cosa
que facilita el acceso a cualquier función de la aplicación.
Esta facilidad la aportan conjuntamente la barra de tareas, con una lista de iconos que
reflejan las operaciones a las que se accede si se pulsa sobre el icono correspondiente, y un
menú que posibilita las mismas funciones, distribuidas por categorías.
-183-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Como tarea inicial, este formulario se encarga de lanzar un formulario que almacena
y gestiona el estado de los dispositivos, nada más iniciarse la aplicación.
A parte de esto, el formulario gestiona otras operaciones secundarias como el
parpadeo del icono de la barra de tareas cuando la aplicación está minimizada.
La tabla es un resumen de los controles usados en el formulario.
CONTROL
Toolbar1
tmrChange
TmrProgramar
Tmr_Comm
PROPIEDAD
TIPO
Barra de herramientas
CAPTION
-
TAREA ASOCIADA
Acceso a todas las operaciones.
TIPO
Temporizador
INTERVALO (ms)
500
TAREA ASOCIADA
tmrChange_Timer()
TIPO
Temporizador
INTERVALO (ms)
10000
TAREA ASOCIADA
TmrProgramar_Timer()
TIPO
Temporizador
INTERVALO (ms)
500
TAREA ASOCIADA
Tmr_Comm_Timer()
TIPO
Icono en la bandeja del sistema.
CAPTION
-
TAREA ASOCIADA
TrayIcon1_LeftDblClick(),
TrayIcon1_MouseUp(Button As Integer,
Shift As Integer)
TIPO
Lista de imagenes.
CAPTION
-
TAREA ASOCIADA
-
TIPO
Gestor de comunicaciones.
PROPIEDADES
1200,n,8,1
TAREA ASOCIADA
MSComm1_OnComm()
TrayIcon1
ImageList2
MsComm1
VALOR
Tabla 18. Resumen de los controles del formulario MDIRaiz.frm.
A continuación se muestra el código utilizado en este formulario.
'Declaracion de variable de archivo de ayuda
-184-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Private h As Long
Private Sub MDIForm_Load()
Load Frm_Ayuda
inicializarficheros
'1200 baudios, sin paridad, 8 bits de datos y 1 bit de parada.
'Indicar al control que lea todo el búfer al usar Input.
tmrChange.Enabled = False
Set TrayIcon1.Picture = imgPic.Picture
Frm_AdquisicionDatos.Show
End Sub
'''''TRAY ICON
Private Sub cmdShow()
'Mostrar en la barra de tareas
Hide
TrayIcon1.Add
'Cambia el icono cada 500ms
tmrChange.Enabled = True
End Sub
Private Sub MDIForm_MouseDown(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If Me.Enabled = False Then
Frm_Desbloquear.Show
End If
End Sub
Private Sub MDIForm_Resize()
If WindowState = vbMinimized Then
'Mostrar en la barra de tareas
cmdShow
End If
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
h = HtmlHelp(vbNull, vbNull, HH_CLOSE_ALL, 0)
Unload Frm_Ayuda
MsgBox "Si cierra esta ventana se dejarán
vbOKOnly + vbCritical, "Atención!!"
End Sub
de
guardar
'Procedimiento para la aparicion del icono en
'la barra de tareas cuando se minimiza la aplicacion
Private Sub mnuTray_Click(Index As Integer)
Select Case Index
Case 0 ' Mostrar
TrayIcon1.Restore 'Restaurar
TrayIcon1.Remove 'Eliminar de la barra de tareas
-185-
datos",
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
MDIRaiz.WindowState = vbMaximized
tmrChange.Enabled = False
Case 2 'Salir
Unload Me
End Select
End Sub
Private Sub Tmr_Comm_Timer()
End Sub
'Procedimiento que cambia la imagen del icono de la
'barra de tareas
Private Sub tmrChange_Timer()
Static bState As Boolean
'Cambiar el icono cada 500 ms
If bState = False Then
Set TrayIcon1.Picture = imgAltPic.Picture
Else
Set TrayIcon1.Picture = imgPic.Picture
End If
bState = Not bState 'Alternar estado
End Sub
'Procedimiento que comrpueba que los dispositivos que cuentan
'con una programacion para su encendido y apagado
'se activen de acuerdo con esa planificacion, esto se mira cada 10
segundos
Private Sub TmrProgramar_Timer()
If
ExisteFichero(App.path
&
"\ilum\programa.dat")
Then
ProgramadorIluminacion
If
ExisteFichero(App.path
&
"\electro\programa.dat")
Then
ProgramadorElectrodomesticos
End Sub
'Al hacer doble click sobre el icono de la barra
'de tareas, se restaura la ventana de la aplicacion
Private Sub TrayIcon1_LeftDblClick()
mnuTray_Click (0) 'Equivale a dar le al boton Restaurar
End Sub
'Al pulsar con el boton derecho sobre el icono de la barra
'de tareas, aparece un menu que posibilita la restauracion
'de la palicacion o salir de la misma
Private Sub TrayIcon1_MouseUp(Button As Integer, Shift As Integer)
If Button = vbRightButton Then
PopupMenu mnuTrayTOP, , , , mnuTray(0) 'Mistrar menu Restaurar
como valor por defecto
End If
End Sub
'''''BARRA DE HERRAMIENTAS
-186-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "Datos": Frm_AdquisicionDatos.Show
Frm_AdquisicionDatos.SetFocus
Case "Iluminacion": Frm_Estado.Show
Frm_Estado.SetFocus
Case "Electrodomesticos": Frm_Electrodomesticos.Show
Frm_Electrodomesticos.SetFocus
Case "Off": ApagarDispositivos
Case "ConfigFTP": Frm_ConfigFTP.Show
Frm_ConfigFTP.SetFocus
Case "Internet": Frm_Internet.Show
Frm_Internet.SetFocus
Case "ConfigUsuario": Frm_ConfigUsuario.Show
Frm_ConfigUsuario.SetFocus
Case "Bloquear": MDIRaiz.Enabled = False
Frm_Desbloquear.Show
Case "AdquirirPlano": Frm_Adquirir_Mapa.Show
Frm_Adquirir_Mapa.SetFocus
Case "VerPlano": Frm_Mostrar_Mapa.Show
Frm_Mostrar_Mapa.SetFocus
Case
"Ayuda":
HH_DISPLAY_TOPIC, 0&)
h
=
HtmlHelp(Me.hWnd,
"AyudaHTML.chm",
End Select
End Sub
'''''''''''MENUS
'''''MENU ARCHIVO
Private Sub SubSalir_Click()
h = HtmlHelp(vbNull, vbNull, HH_CLOSE_ALL, 0)
Unload Frm_Ayuda
MsgBox "Si cierra esta ventana se dejarán
vbOKOnly + vbCritical, "Atención!!"
End
End Sub
'''''MENU VER
Private Sub SubAdquisicionDatos_Click()
Frm_AdquisicionDatos.Show
Frm_AdquisicionDatos.SetFocus
End Sub
Private Sub SubIluminacion_Click()
Frm_Estado.Show
Frm_Estado.SetFocus
-187-
de
guardar
datos",
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End Sub
Private Sub SubElectrodomesticos_Click()
Frm_Electrodomesticos.Show
Frm_Electrodomesticos.SetFocus
End Sub
Private Sub SubApagarDispositivos_Click()
ApagarDispositivos
End Sub
Private Sub SubVidaUtil_click()
Frm_Vida.Show
Frm_Vida.SetFocus
End Sub
'''''MENU INTERNET
Private Sub SubConfigurarFTP_Click()
Frm_ConfigFTP.Show
Frm_ConfigFTP.SetFocus
End Sub
Private Sub SubIniciarSesion_Click()
Frm_Internet.Show
Frm_Internet.SetFocus
End Sub
'''''MENU USUARIO
Private Sub SubConfigUsuario_Click()
Frm_ConfigUsuario.Show
Frm_ConfigUsuario.SetFocus
End Sub
Private Sub SubBloquearAcceso_Click()
MDIRaiz.Enabled = False
Frm_Desbloquear.Show
End Sub
'''''MENU PLANO
Private Sub SubAdquirirPlano_Click()
Frm_Adquirir_Mapa.Show
Frm_Adquirir_Mapa.SetFocus
End Sub
Private Sub SubVerPlano_Click()
Frm_Mostrar_Mapa.Show
Frm_Mostrar_Mapa.SetFocus
End Sub
-188-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'''''MENU AYUDA
Private Sub SubManual_Click()
h = HtmlHelp(Me.hWnd, "AyudaHTML.chm", HH_DISPLAY_TOPIC, 0&)
End Sub
Private Sub SubAcercade_Click()
Frm_Acerca.Show
Frm_Acerca.SetFocus
End Sub
Código 1. Código fuente del formulario MDIRaiz.
6.1.2 Frm_AdquisicionDatos.frm
Figura 89. Vista del formulario Frm_AdquisicionDatos.
Este formulario está contenido en el formulario MDIRaiz, y es el encargado de
almacenar toda la información referente a los diversos dispositivos según su estado y tipo.
Muestrea datos cada 5 segundos dado que el tiempo no es una variable crítica para una
instalación doméstica.
-189-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Este formulario, además, sirve para tener un histórico detallado de cada dispositivo,
siendo capaz de mostrar diversos datos del dispositivo, como pueden ser: potencia, tiempo
en funcionamiento en una determinada fecha, consumo en una determinada fecha y los
mismo datos pero desglosados por franjas horarias y por modo de funcionamiento (normal
o bajo consumo).
A continuación se muestra un cuadro resumen de los controles utilizados en este
formulario.
En el marco principal:
CONTROL
Frame1
Label1(0)
Label1(1)
Label1(2)
Label1(3)
Label1(4)
Label1(5)
Label1(6)
Text1(0)
PROPIEDAD
VALOR
TIPO
Marco que contiene comandos comunes.
CAPTION
“Datos globales.”
TAREA ASOCIADA
-
TIPO
Etiqueta
CAPTION
“ID”
TAREA ASOCIADA
-
TIPO
Etiqueta
CAPTION
“Fecha”
TAREA ASOCIADA
-
TIPO
Etiqueta
CAPTION
“Potencia”
TAREA ASOCIADA
-
TIPO
Etiqueta
CAPTION
“Consumo”
TAREA ASOCIADA
-
TIPO
Etiqueta
CAPTION
“Tiempo”
TAREA ASOCIADA
-
TIPO
Etiqueta
CAPTION
“Hora”
TAREA ASOCIADA
-
TIPO
Etiqueta
CAPTION
“Día”
TAREA ASOCIADA
-
TIPO
Cuadro de text o.
CAPTION
“”
TAREA ASOCIADA
Text1_Change(Index As Integer)
-190-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Text1(1)
Text1(2)
Text1(3)
Text1(4)
Text1(5)
Option3
Option4
Command1(0)
Command1(1)
Command1(4)
CmdAvanzado
Timer1
ANEXOS
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_Change(Index As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_Change(Index As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_Change(Index As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_Change(Index As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_Change(Index As Integer)
TIPO
Botón de opción.
CAPTION
“Iluminación”
TAREA ASOCIADA
Option3_Click()
TIPO
Botón de opción.
CAPTION
“Electrodomésticos”
TAREA ASOCIADA
Option4_Click()
TIPO
Botón de comando.
CAPTION
“<”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“>”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Ocultar”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“>>” o “<<”
TAREA ASOCIADA
CmdAvanzado_Click()
TIPO
Temporizador.
INTERVALO
5000
TAREA ASOCIADA
Timer1_Timer()
Tabla 19. Resumen de los controles del marco principal.
-191-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
En el marco de desglose norma l:
CONTROL
Frame2
Option1
Option2
Text2(0..23)
Label3(0..23)
PROPIEDAD
VALOR
TIPO
Marco que contiene comandos comunes.
CAPTION
“Datos en Parciales”
TAREA ASOCIADA
-
TIPO
Botón de opción.
CAPTION
“Tiempos”
TAREA ASOCIADA
Option1_Click()
TIPO
Botón de opción.
CAPTION
“Consumos”
TAREA ASOCIADA
Option2_Click()
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“00:00” -a- “23:00”
TAREA ASOCIADA
-
Tabla 20. Resumen de los controles del marco de desglosado en modo normal.
En el marco de desglose en modo ahorro:
CONTROL
Frame3
Label5(0)
Label5(1)
Label5(2)
Text4(0)
PROPIEDAD
VALOR
TIPO
Marco que contiene comandos comunes.
CAPTION
“Bajo consumo”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Potencia”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Consumo”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Tiempo”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
-192-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Text4(1)
Text4(2)
Text3(0..23)
Label4(0..23)
ANEXOS
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
De “00:00” a “23:00”
TAREA ASOCIADA
-
Tabla 21. Resumen de los controles del marco de desglosado en modo ahorro.
A continuación se muestra el código utilizado en este formulario.
'Declaracion de variables globales del formulario
'Variable para indicar el tipo de informacion
'desglosada a mostrar
Private TipoInfo As Integer
Private TipoAparato As Integer
'Variables para evitar que el usuario descargue el
'formulario
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As
Long, ByVal bRevert As Long) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA"
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long,
ByVal wIDNewItem As Long, ByVal lpString As Any) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As
Long) As Long
Private Const MF_BYCOMMAND = &H0&
Private Const MF_ENABLED = &H0&
Private Const MF_GRAYED = &H1&
Private Const SC_CLOSE = &HF060&
'Al cargar el formulario se activa el temporizador
'e indice que los datos avanzados a mostrar por
'defecto van a ser los tiempos de funcionamiento
Private Sub Form_Load()
TipoInfo = 1
TipoAparato = 0
-193-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Me.Height = 3450
Me.Width = 5400
' Deshabilitar el botón de cerrar el formulario
Dim hMenu As Long
hMenu = GetSystemMenu(hWnd, 0)
' Deshabilitar el menú cerrar del formulario
Call ModifyMenu(hMenu, SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED, -10,
"Close")
'
End Sub
'Control que muestra el estado en formato desglosado
'de los datos almacenados en los registros
Private Sub CmdAvanzado_Click()
If CmdAvanzado.Caption = ">>" Then
'muestra los datos desglosados
CmdAvanzado.Caption = "<<"
Me.Height = 6800
Me.Width = 8800
Else
'deja de mostrar los datos desglosados
CmdAvanzado.Caption = ">>"
Me.Height = 3450
Me.Width = 5400
End If
End Sub
'Dependiendo del boton pulsado se ejecuta una determinada accion
Private Sub Command1_Click(Index As Integer)
Select Case (Index)
Case 0: Call Anterior 'va al registro anterior
Case 1: Call Siguiente 'va al registro siguiente
Case 4: Me.Hide 'Oculta la aplicacion, pero no la descarga
End Select
End Sub
'Procedimiento que retrocede un registro del fichero
Private Sub Anterior()
PosicionFichero = PosicionFichero - 1
Mostrar 'llamada a procedimiento que muestra los datos
End Sub
'Procedimiento que avanza un registro del fichero
Private Sub Siguiente()
PosicionFichero = PosicionFichero + 1
Mostrar 'llamada a procedimiento que muestra los datos
End Sub
Private Sub Mostrar()
Dim NomFic As String
Dim ilumin As tiluminacion
Dim hora, minuto, segundo As Integer
-194-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
nfic = FreeFile
'se abre el archivo referente a lo escrito en el
'cuadro de texto ID
If TipoAparato = 0 Then
NomFic = App.path & "\ilum\ilu" & Text1(0).Text & ".dat"
If Text1(0).Text <> "" Then
Set db = OpenDatabase(App.path & "\bases\info97.mdb")
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion where ID="
& Int(Text1(0).Text), dbOpenDynaset)
End If
Else
NomFic = App.path & "\electro\ele" & Text1(0).Text & ".dat"
End If
If
Text1(0).Text
<>
""
And
Text1(0).Text
<>
"0"
And
ExisteFichero(NomFic) Then
Open NomFic For Random As nfic Len = Len(ilumin)
If PosicionFichero < 1 Then PosicionFichero = 1
Get #nfic, PosicionFichero, ilumin
If Not EOF(nfic) Then
With ilumin
'Se muestran todos los datos generales
'de la luminaria indicada
Text1(1).Text = .fecha
Text1(2).Text = .Potencia
Text1(3).Text = CDec(.tiempo * 0.000277 * .Potencia)
segundo = .tiempo
hora = segundo \ 3600
minuto = (segundo Mod 3600) \ 60
segundo = (segundo Mod 3600) Mod 60
Text1(4).Text = Format(TimeSerial(hora, minuto, segundo),
"H:mm:ss")
Text4(0).Text = ""
Text4(1).Text = ""
Text4(2).Text = ""
For i = 0 To 23
Text3(i).Text = ""
Next
'lo mismo para el modo de ahorro energetico
If TipoAparato = 0 Then
If rs.Fields("BajoConsumo") = True Then
Text4(0).Text = .BajoPotencia
Text4(1).Text
=
CDec(.BajoTiempo
*
0.000277
*
.BajoPotencia)
segundo = .BajoTiempo
hora = segundo \ 3600
minuto = (segundo Mod 3600) \ 60
segundo = (segundo Mod 3600) Mod 60
Text4(2).Text = Format(TimeSerial(hora, minuto, segundo),
"H:mm:ss")
End If
-195-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End If
For i = 0 To 23
'Para cada una de las franjas horarias se formatea
'y se muestra la informacion
If TipoInfo Then
'si se trat de tiempos se adaptan los datos para mostrar
'horas, minutos y segundos
segundo = .T(i)
hora = segundo \ 3600
minuto = (segundo Mod 3600) \ 60
segundo = (segundo Mod 3600) Mod 60
Text2(i).Text = Format(TimeSerial(hora, minuto, segundo),
"H:mm:ss")
'Lo mismo pero con bajo consumo
If TipoAparato = 0 Then
If rs.Fields("BajoConsumo") = True Then
If rs.Fields("BajoEstado") = True Then
Text4(0).Enabled = True
Text4(1).Enabled = True
Text4(2).Enabled = True
Else
Text4(0).Enabled = False
Text4(1).Enabled = False
Text4(2).Enabled = False
End If
segundo = .BajoT(i)
hora = segundo \ 3600
minuto = (segundo Mod 3600) \ 60
segundo = (segundo Mod 3600) Mod 60
Text3(i).Text
=
Format(TimeSerial(hora,
segundo), "H:mm:ss")
Else
'si no es de bajo consumo no se muestra nada
Text4(0).Text = ""
Text4(1).Text = ""
Text4(2).Text = ""
For j = 0 To 23
Text3(j).Text = ""
Next
End If
minuto,
End If
Else
'sino, se muestran los datos tal cual dato que son
'numeros
Text2(i).Text = CDec(.T(i) * 0.000277 * .Potencia)
If TipoAparato = 0 Then
If rs.Fields("BajoConsumo") = True Then Text3(i).Text =
CDec(.BajoT(i) * 0.000277 * .BajoPotencia)
End If
End If
Next
If TipoAparato = 0 Then
-196-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Set db = Nothing
Set rs = Nothing
End If
End With
Else
PosicionFichero = PosicionFichero - 1
End If
'Indica la posicion del fichero a la que se está accediendo
Label2.Caption = PosicionFichero
Close #nfic
Else
'Si no se pide información, no se muestra
Text1(1).Text = ""
Text1(2).Text = ""
Text1(3).Text = ""
Text1(4).Text = ""
Text4(0).Text = ""
Text4(1).Text = ""
Text4(2).Text = ""
For i = 0 To 23
Text2(i).Text = ""
Text3(i).Text = ""
Next
End If
End Sub
'Al seleccionar el optionbutton de tiempo
'muestra los datos relativos a tiempos
'de ejecucion
Private Sub Option1_Click()
TipoInfo = 1
Mostrar 'llamada a procedimiento que muestra los datos
End Sub
'Al seleccionar el optionbutton de consumo
'muestra los datos relativos a consumos
Private Sub Option2_Click()
TipoInfo = 0
Mostrar 'llamada a procedimiento que muestra los datos
End Sub
'Al seleccionar el optionbutton de Iluminacion
'muestra los datos relativos a iluminacion
Private Sub Option3_Click()
TipoAparato = 0
Mostrar 'llamada a procedimiento que muestra los datos
End Sub
'Al seleccionar el optionbutton de electrodomesticos
'muestra los datos relativos a electrodomesticos
Private Sub Option4_Click()
TipoAparato = 1
Mostrar 'llamada a procedimiento que muestra los datos
-197-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End Sub
'Cuando se cambia un dato de cualquiera
'de los campos de texto se actualiza la
'informacion
Private Sub Text1_Change(Index As Integer)
Mostrar 'llamada a procedimiento que muestra los datos
End Sub
'Cada 5 segundos se guarda el estado
'actual de las luminarias
Private Sub Timer1_Timer()
Text1(5).Text = Time 'muestra la hora en la casilla hora
Guardar (0) 'llamada a procedimiento que guarda los datos
Guardar (1)
Mostrar 'llamada a procedimiento que muestra los datos
End Sub
Código 2. Código fuente del formulario Frm_AdquisicionDatos
-198-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.3 Frm_Estado.frm
Figura 90. Vista del formulario Frm_Estado.
Este formulario es el encargado de proporcionar al usuario información referente al
estado de los dispositivos que controlan la iluminación de la vivienda, además ofrece la
posibilidad de insertar un nuevo dispositivo en el sistema y operar con los diferentes
dispositivos tal y como se explica en el Anexo 6.3 .
La información de los dispositivos es:
•
Número de dispositivos conectados a la red de iluminación.
•
Icono que informa del estado.
•
Identidad del dispositivo.
•
Ubicación del dispositivo.
-199-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
•
Descripción del elemento al que va asociado el dispositivo.
•
Estado.
•
Referencia de catálogo del elemento controlado.
•
Marca del elemento controlado.
•
Potencia del elemento controlado.
•
Precio del elemento controlado.
•
Horas de vida, estimadas por el fabricante, del elemento controlado.
•
Si dispone de modo de ahorro de energía, es decir, bajo consumo, o no. En caso de
disponer de este modo, el estado del mismo.
•
Si dispone de modo de ahorro, la potencia del elemento en esta situación.
A continuación se muestra un cuadro resumen de los controles utilizados en este
formulario.
CONTROL
Frame1
PROPIEDADES
TIPO
Marco que engloba comandos comunes.
CAPTION
Números despositivos + " Dispositivos online"
TAREA ASOCIADA
-
TIPO
Lista.
CAPTION
ListView2_columnClick(ByVal
ColumnHeader As ColumnHeader),
ListView2
TAREA ASOCIADA
CmdNuevo
CmdActualizar
CmdSalir
Frame2
Label1(0)
VALOR
ListView2_MouseUp(Button As Integer,
Shift As Integer, X As Single, Y As Single)
TIPO
Botón de comando.
CAPTION
“Nuevo”
TAREA ASOCIADA
Cmd Nuevo_Click()
TIPO
Botón de comando.
CAPTION
“Actualizar”
TAREA ASOCIADA
CmdActualizar_Click()
TIPO
Botón de comando.
CAPTION
“Salir”
TAREA ASOCIADA
CmdSalir_Click()
TIPO
Marco que engloba controles comunes.
CAPTION
“Nuevo Dispositivo”
TAREA ASOCIADA
-
TIPO
Etiqueta.
-200-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Label1(1)
Label1(2)
Text1(0)
Text1(1)
Text1(2)
Command2(0)
Command2(1)
ListaIconos
ANEXOS
CAPTION
“Habitación:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Tipo:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Forzar ID. Atencion, sólo recomendado a
usuarios avanzados”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Botón de comando.
CAPTION
“OK”
TAREA ASOCIADA
Command2_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Cancelar”
TAREA ASOCIADA
Command2_Click(Index As Integer)
TIPO
Lista de imágenes.
CAPTION
-
TAREA ASOCIADA
-
Tabla 22. Resumen de los controles del formulario Frm_Estado.
A continuación se muestra el código utilizado en este formulario.
'Declaracion de variables globales del formulario
Private db As Database
Private rs As Recordset
Private dispositivos As Integer
'Cuando se activa el formulario se avisa
'a la aplicacion que se esta trabajando con iluminacion
-201-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Private Sub Form_Activate()
TipoInformacion = 0
End Sub
Private Sub Form_Load()
Me.Height = 5000
sPathBase = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(sPathBase)
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
ListarRegistros
End Sub
'Al salir del formulario se liberan los controles sobre
'la base de datos
Private Sub Form_Unload(Cancel As Integer)
Set rs = Nothing
Set db = Nothing
End Sub
Private Sub ListarRegistros()
On Error Resume Next
With ListView2
' El tipo de Listview que queremos es del tipo "reporte"
.View = lvwReport
' Que no se puedan modificar los datos del listview
.LabelEdit = lvwManual
' Añadimos las cabeceras
If .ListItems.Count = 0 Then
.ColumnHeaders.Add , , "ID", 300
.ColumnHeaders.Add , , "Habitacion", 1500
.ColumnHeaders.Add , , "Tipo", 1800
.ColumnHeaders.Add , , "Estado", 900
.ColumnHeaders.Add , , "Referencia", 900
.ColumnHeaders.Add , , "Marca", 900
.ColumnHeaders.Add , , "Potencia", 600
.ColumnHeaders.Add , , "Precio", 600
.ColumnHeaders.Add , , "Horas de vida", 900
.ColumnHeaders.Add , , "Modo ahorro", 900
.ColumnHeaders.Add , , "Potencia ahorro", 900
End If
End With
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
With rs
' Si no hay datos...
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
rs.MoveFirst
While Not rs.EOF
-202-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
rs.MoveNext
Wend
dispositivos = rs.RecordCount
Frame1.Caption = rs.RecordCount & " Dispositivos on-line"
' Mostrar los datos hallados
ListView2.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set tli = ListView2.ListItems.Add(, , .Fields("ID")
& "")
If .Fields("Estado") = True Then
If .Fields("BajoEstado") = True Then
tli.SmallIcon
=
ListaIconos.ListImages("Ahorro").Key
Else
tli.SmallIcon
=
ListaIconos.ListImages("Encendido").Key
End If
Else
tli.SmallIcon
=
ListaIconos.ListImages("Apagado").Key
End If
tli.SubItems(1) = .Fields("Habitación") & ""
tli.SubItems(2) = .Fields("Tipo") & ""
If .Fields("Estado") = True Then
tli.SubItems(3) = "Encendido" & ""
Else
tli.SubItems(3) = "Apagado" & ""
End If
tli.SubItems(4) = .Fields("Referencia") & ""
tli.SubItems(5) = .Fields("Marca") & ""
tli.SubItems(6) = Format(.Fields("Potencia"), "0 W")
& ""
tli.SubItems(7) = Format(.Fields("Precio"), "0.00
€") & ""
tli.SubItems(8) = Format(.Fields("Horas de vida"),
"0 h") & ""
If .Fields("BajoConsumo") = True Then
If .Fields("BajoEstado") = True Then
tli.SubItems(9) = "Activo" & ""
Else
tli.SubItems(9) = "Inactivo" & ""
End If
tli.SubItems(10) = Format(.Fields("BajoPotencia"),
"0 W") & ""
Else
tli.SubItems(9) = "No disponible" & ""
tli.SubItems(10) = "-" & ""
End If
.MoveNext
Loop
End If
.MoveFirst
-203-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End With
Set rs = Nothing
End Sub
'Al pulsar el boton aparece al opcion para introducir
'un nuevo dispositivo
Private Sub CmdNuevo_Click()
Me.Height = 6800
'Se borran los datos introducidos anteriormente
Text1(0).SetFocus
Text1(0).Text = ""
Text1(1).Text = ""
Text1(2).Text = ""
End Sub
'Al pulsar el boton salir se oculta el formulario
Private Sub CmdSalir_Click()
Unload Me
End Sub
'Accede a la actualizacion de registros
Private Sub CmdActualizar_Click()
ActualizarRegistro
End Sub
'Procedimiento que actualiza los datos despues de que se hayan
'modificado parametros mediante el catalogo de luminarias
Public Sub ActualizarRegistro()
If ActualizarReg Then
Set trs = db.OpenRecordset("SELECT * FROM Iluminacion WHERE ID="
& newID, dbOpenDynaset)
With trs
' Antes de actualizar los datos del recordset,
' hay que ponerlo en modo edición
.Edit
.Fields("Referencia") = newReferencia
.Fields("Marca") = newMarca
.Fields("Potencia") = newPotencia
.Fields("Precio") = newPrecio
.Fields("Horas de vida") = newHoras
.Fields("BajoConsumo") = newBajoConsumo
.Fields("BajoPotencia") = newBajoPotencia
' Actualizar los datos en el recordset
.Update
End With
ActualizarReg = 0
Set trs = Nothing
End If
ListarRegistros
End Sub
'Procedimiento que borra un determinado registro de la base
-204-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'de datos del usuario
Private Sub BorrarRegistro()
If dispositivos > 1 Then
Set trs = db.OpenRecordset("SELECT * FROM Iluminacion WHERE ID="
& newID, dbOpenDynaset)
trs.Delete
Set trs = Nothing
If newID <> 0 Then
BorrarFichero (App.path & "\ilum\ilu" & newID & ".dat")
End If
ListarRegistros
Else
MsgBox "Sólo hay un dispositivo, no se puede eliminar por
motivos de la aplicación.", vbOKOnly + vbInformation, "No se puede
realizar esta operación."
End If
End Sub
'Se activa el menu popup
Private Sub ListView2_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
newID = Int(ListView2.SelectedItem.Text)
Set trs = db.OpenRecordset("SELECT * FROM Iluminacion WHERE ID=" &
newID, dbOpenDynaset)
If trs.Fields("BajoConsumo") = True Then
MenuBajoConsumo.Visible = True
Else
MenuBajoConsumo.Visible = False
End If
Set trs = Nothing
If Button = 2 Then PopupMenu MenuPop
End Sub
Private
Sub
ListView2_columnClick(ByVal
ColumnHeader
ColumnHeader)
' Cuando se hace clic en un objeto ColumnHeader, el
' control ListView se ordena por los subelementos de
' esa columna.
Dim currSortKey As Integer
ListView2.SortKey = ColumnHeader.Index - 1
currSortKey = ListView2.SortKey
ListView2.SortOrder = Abs(Not ListView2.SortOrder = 1)
ListView2.Sorted = True
As
End Sub
'Actualiza el estado de la luminaria despues de que se
'haya intentado modificar
Private Sub ActualizarEstado()
If ActualizarEst Then
Set trs = db.OpenRecordset("SELECT * FROM Iluminacion WHERE ID="
& newID, dbOpenDynaset)
With trs
-205-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
' Antes de actualizar los datos del recordset,
' hay que ponerlo en modo edición
.Edit
.Fields("Estado") = newEstado
If .Fields("BajoConsumo") = True Then .Fields("BajoEstado")
= newBajoEstado
' Actualizar los datos en el recordset
.Update
End With
ActualizarEst = 0
Set trs = Nothing
End If
ListarRegistros
End Sub
'Verifica los datos introducidos por el usuario a la
'un nuevo registro, los campos de Habitacion y Tipo
vacios
Private Sub Command2_Click(Index As Integer)
Select Case Index
Case 0:
If ((Text1(0).Text = "") Or (Text1(1).Text
MsgBox
"Faltan
parametros,
revise
introducida", vbOKInly, "Alerta interna"
Else
NuevoRegistro
End If
Case 1:
End Select
Me.Height = 5000
ListView2.SetFocus
End Sub
hora de crear
no pueden quedar
= "")) Then
la
información
'Inserta un nuevo registro con la informacion suministrada
'por el usuario
Private Sub NuevoRegistro()
Dim i As Integer
Dim salir, iguales As Boolean
salir = False
iguales = False
i = 1
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
With rs
If Text1(2).Text <> "" Then
newID = Int(Text1(2).Text)
.MoveFirst
If newID = 4098 Or newID = 4099 Or newID = 4100 Then
iguales = True
MsgBox "ID fuera de intervalo válido", vbOKOnly +
vbCritical, "Error al forzar ID"
End If
-206-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
While Not .EOF
If newID = .Fields("ID") Then
iguales = True
MsgBox "ID duplicada", vbOKOnly + vbCritical, "Error
al forzar ID"
End If
.MoveNext
Wend
Else
.MoveFirst
While (((Not .EOF) And (salir = False)))
If (i <> .Fields("ID")) And (newID <> 4098 Or newID <>
4099 Or newID <> 4100) Then
salir = True
newID = i
End If
.MoveNext
i = i + 1
Wend
If salir = False Then
newID = i
End If
End If
If iguales = False Then
.AddNew
.Fields("Habitación") = Text1(0).Text
.Fields("Tipo") = Text1(1).Text
.Fields("ID") = newID
.Update
ListarRegistros
'Se consulta si se desea introducir el tipo de
'luminaria automaticamente mediante catalogo
'o manualmente
respuesta = MsgBox("¿Indicar tipo de luminaria desde
catálogo?", vbYesNo + vbInformation, "Tipo de luminaria")
If respuesta = vbNo Then
'introduccion manual
Frm_Catalogo.ListView1.Enabled = False
Frm_Catalogo.CmdOK.Enabled = True
Frm_Catalogo.Cmd_Abrir.Enabled = False
Frm_Catalogo.CmdAcceder.Enabled = False
Frm_Catalogo.Show
Else
'introduccion automática
Frm_Catalogo.ListView1.Enabled = True
Frm_Catalogo.CmdOK.Enabled = False
Frm_Catalogo.Cmd_Abrir.Enabled = True
Frm_Catalogo.CmdAcceder.Enabled = True
Frm_Catalogo.Show
End If
End If
End With
Set rs = Nothing
-207-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End Sub
'Procedimiento que fuerza numeros en un campo de texto
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If Index = 2 Then
If Not ((Asc("0") <= KeyAscii) And (KeyAscii <= Asc("9")))
Then
'KeyAscii = 8 es el retroceso o BackSpace
If KeyAscii <> 8 Then
KeyAscii = 0
End If
End If
End If
End Sub
'''''''''''MENUS
'''''MENU ARCHIVO
Private Sub SubSalir_Click()
MsgBox "Si cierra esta ventana
vbOKOnly + vbCritical, "Atención!!"
End
End Sub
se
dejarán
'''''MENU VER
Private Sub SubAdquisicionDatos_Click()
Frm_AdquisicionDatos.Show
Frm_AdquisicionDatos.SetFocus
End Sub
Private Sub SubIluminacion_Click()
Frm_Estado.Show
Frm_Estado.SetFocus
End Sub
Private Sub SubElectrodomesticos_Click()
Frm_Electrodomesticos.Show
Frm_Electrodomesticos.SetFocus
End Sub
Private Sub SubApagarDispositivos_Click()
ApagarDispositivos
End Sub
Private Sub SubVidaUtil_click()
Frm_Vida.Show
Frm_Vida.SetFocus
End Sub
'''''MENU INTERNET
-208-
de
guardar
datos",
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Private Sub SubConfigurarFTP_Click()
Frm_ConfigFTP.Show
Frm_ConfigFTP.SetFocus
End Sub
Private Sub SubIniciarSesion_Click()
Frm_Internet.Show
Frm_Internet.SetFocus
End Sub
'''''MENU USUARIO
Private Sub SubConfigUsuario_Click()
Frm_ConfigUsuario.Show
Frm_ConfigUsuario.SetFocus
End Sub
Private Sub SubBloquearAcceso_Click()
MDIRaiz.Enabled = False
Frm_Desbloquear.Show
End Sub
'''''MENU PLANO
Private Sub SubAdquirirPlano_Click()
Frm_Adquirir_Mapa.Show
Frm_Adquirir_Mapa.SetFocus
End Sub
Private Sub SubVerPlano_Click()
Frm_Mostrar_Mapa.Show
Frm_Mostrar_Mapa.SetFocus
End Sub
'''''MENU AYUDA
Private Sub SubManual_Click()
h = HtmlHelp(Me.hWnd, "AyudaHTML.chm", HH_DISPLAY_TOPIC, 0&)
End Sub
Private Sub SubAcercade_Click()
Frm_Acerca.Show
Frm_Acerca.SetFocus
End Sub
''''''''''MENU POP UP
''''''''''CAMBIAR LUMINARIA
'Acceso al catalogo manual, para ello se desactiva el control
'listview del catalogo y se activa el boton OK de actualizacion
-209-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'manual
Private Sub MenuLumMan_Click()
newID = Int(ListView2.SelectedItem.Text)
Frm_Catalogo.ListView1.Enabled = False
Frm_Catalogo.CmdOK.Enabled = True
Frm_Catalogo.Cmd_Abrir.Enabled = False
Frm_Catalogo.CmdAcceder.Enabled = False
Frm_Catalogo.Show
End Sub
'Acceso al catalogo automatico, para ello se activa el control
'listview del catalogo y se desactiva el boton OK de actualizacion
'manual
Private Sub MenuLumCat_Click()
newID = Int(ListView2.SelectedItem.Text)
Frm_Catalogo.ListView1.Enabled = True
Frm_Catalogo.CmdOK.Enabled = False
Frm_Catalogo.Cmd_Abrir.Enabled = True
Frm_Catalogo.CmdAcceder.Enabled = True
Frm_Catalogo.Show
End Sub
''''''''''CAMBIAR ESTADO
'Cambia el estado del la luminaria seleccionada de OFF a ON
Private Sub MenuON_Click()
newID = Int(ListView2.SelectedItem.Text)
newEstado = True
newBajoEstado = False
ActualizarEst = 1
ActualizarEstado
End Sub
'Cambia el estado del la luminaria seleccionada de ON a OFF
Private Sub MenuOFF_Click()
newID = Int(ListView2.SelectedItem.Text)
newEstado = False
newBajoEstado = False
ActualizarEst = 1
ActualizarEstado
End Sub
Private Sub MenuBajoConsumo_click()
newID = Int(ListView2.SelectedItem.Text)
newEstado = True
newBajoEstado = True
ActualizarEst = 1
ActualizarEstado
End Sub
''''''''''PROGRAMAR
-210-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Private Sub MenuProgramar_click()
newID = Int(ListView2.SelectedItem.Text)
Frm_Programador.Show
End Sub
''''''''''ASIGNAR PUNTO
Private Sub SubAsignar_Click()
newID = Int(ListView2.SelectedItem.Text)
Frm_Config_Mapa.Show
End Sub
''''''''''CONSUMO
'Llamada al formulario encargado del calculod e consumos
Private Sub menuConsumo_Click()
newID = Int(ListView2.SelectedItem.Text)
newHabitacion = ListView2.SelectedItem.SubItems(1)
newTipo = ListView2.SelectedItem.SubItems(2)
newPotencia = ListView2.SelectedItem.SubItems(6)
Frm_Consumo.Show
End Sub
''''''''''TIEMPO
'Llamada al formulario encargado del calculo de tiempos
Private Sub MenuTiempo_Click()
newID = Int(ListView2.SelectedItem.Text)
newHabitacion = ListView2.SelectedItem.SubItems(1)
newTipo = ListView2.SelectedItem.SubItems(2)
newPotencia = ListView2.SelectedItem.SubItems(6)
Frm_Tiempo.Show
End Sub
''''''''''BORRAR
'Llamada al procedimiento que borra un registro, le pasa
'como parametro la ID del registro a elminar
Private Sub MenuBorrar_Click()
newID = Int(ListView2.SelectedItem.Text)
BorrarRegistro
End Sub
Código 3. Código del formulario Frm_Estado.
-211-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.4 Frm_Vida.frm
Figura 91. Vista del formulario Frm_Vida.
Este formulario informa al usuario de las horas de vida transcurridas para los
elementos que conforman la iluminación de la vivienda, y calcula, en función de la
información proporcionada por el fabricante, las horas de vida restantes del elemento o, en
caso de superar esta vida estimada, las horas de funcionamiento adicional que arrastra.
La información que aporta es:
•
Número de dispositivos conectados a la red de iluminación.
•
Icono indicativo de si el dispositivo funciona dentro de las horas establecidas o si
las ha superado.
•
Identidad del dispositivo.
•
Ubicación del dispositivo.
•
Descripción del elemento al que va asociado el dispositivo.
•
Horas de vida del elemento, estimadas por el fabricante.
•
Horas en funcionamiento del elemento.
•
Horas restantes, o llegado el caso sobrantes, para que le dispositivo cumpla con su
vida estimada.
-212-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
PROPIEDADES
TIPO
VALOR
Marco que contiene comandos comunes.
Inicialmente: “Lista de luminarias”
Frame1
CAPTION
Después: número dispositivos + "
dispositivos"
TAREA ASOCIADA
ListView1
Lis taIconos
Timer1
CmdSalir
TIPO
Lista.
CAPTION
-
TAREA ASOCIADA
ListView1_columnClick(ByVal
ColumnHeader As ColumnHeader)
TIPO
Lista de imágenes.
CAPTION
-
TAREA ASOCIADA
-
TIPO
Temporizador.
INTERVALO (ms)
60000
TAREA ASOCIADA
Timer1_Timer()
TIPO
Botón de comando.
CAPTION
Salir
TAREA ASOCIADA
CmdSalir_Click()
Tabla 23. Resumen de los controles del formulario Frm_Vida.
A continuación se muestra el código de programa de este formulario:
'Al pulsar el boton salir se dercarga el formulario
Private Sub CmdSalir_Click()
Unload Me
End Sub
'Inicializacion de parametros del formulario
Private Sub Form_Load()
Me.Top = 0
ListarRegistros
End Sub
'Procedimiento que lista los elementos
Private Sub ListarRegistros()
Dim salir As Boolean
Set db = OpenDatabase(App.path & "\bases\info97.mdb")
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by ID",
dbOpenDynaset)
'On Error Resume Next
With ListView1
-213-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
' El tipo de Listview que queremos es del tipo "reporte"
.View = lvwReport
' Que no se puedan modificar los datos del listview
.LabelEdit = lvwManual
' Añadimos las cabeceras
If .ListItems.Count = 0 Then
.ColumnHeaders.Add , , "ID", 300
.ColumnHeaders.Add , , "Habitacion", 1500
.ColumnHeaders.Add , , "Tipo", 1800
.ColumnHeaders.Add , , "Estimada", 800
.ColumnHeaders.Add , , "Transcurrida", 800
.ColumnHeaders.Add , , "Restante", 800
End If
End With
With rs
' Si no hay datos...
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
'Si hay datos se muestran
ListView1.ListItems.Clear
.MoveFirst
Do While Not .EOF
''Para cada elemento se calcula el tiempo en
'funcionamiento
total = ComprobacionVida(.Fields("ID"))
Set tli = ListView1.ListItems.Add(, , .Fields("ID") &
"")
If (.Fields("Horas de vida") - total) > 0 Then
tli.SmallIcon = ListaIconos.ListImages(2).Index
Else
tli.SmallIcon = ListaIconos.ListImages(1).Index
End If
tli.SubItems(1) = .Fields("Habitación") & ""
tli.SubItems(2) = .Fields("Tipo") & ""
tli.SubItems(3) = Format(.Fields("Horas de vida"), "0
h") & ""
tli.SubItems(4) = Format(total, "0 h") & ""
tli.SubItems(5) = Format(.Fields("Horas de
vida")
-
total, "0 h") & ""
.MoveNext
Loop
End If
Frame1.Caption = rs.RecordCount & " dispositivos"
End With
Set rs = Nothing
End Sub
Private
Sub
ListView1_columnClick(ByVal
ColumnHeader
ColumnHeader)
' Cuando se hace clic en un objeto ColumnHeader, el
-214-
As
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
' control ListView se ordena por los subelementos de
' esa columna.
Dim currSortKey As Integer
ListView1.SortKey = ColumnHeader.Index - 1
currSortKey = ListView1.SortKey
ListView1.SortOrder = Abs(Not ListView1.SortOrder = 1)
ListView1.Sorted = True
End Sub
'Se listan los elementos cada minuto, para mantener una
'información más verídica
Private Sub Timer1_Timer()
ListarRegistros
End Sub
Código 4. Código del formulario Frm_Vida.
-215-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.5 Frm_Electrodomesticos.frm
Figura 92. Vista del formulario Frm_Electrodomesticos.
Este formulario es el encargado de proporcionar al usuario información referente al
estado de los dispositivos que controlan los elentrodomésticos de la vivienda, además
ofrece la posibilidad de insertar un nuevo dispositivo en el sistema y operar con los
diferentes dispositivos tal y como se explica en el Anexo 6.3 .
La información de los dispositivos es:
•
Número de dispositivos conectados a la red de iluminación.
•
Icono que informa del estado.
•
Identidad del dispositivo.
-216-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
•
Ubicación del dispositivo.
•
Descripción del elemento al que va asociado el dispositivo.
•
Estado.
•
Potencia del elemento controlado.
•
Precio del elemento controlado.
•
Observaciones adicionales que el usuario considere pertinentes.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
ListView2
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
Número de dispositivos + " Dispositivos
on-line"
TAREA ASOCIADA
-
TIPO
Lista.
CAPTION
-
TAREA ASOCIADA
ListView2_columnClick(ByVal
ColumnHeader As Colu mnHeader),
ListView2_MouseUp(Button As Integer,
Shift As Integer, X As Single, Y As
Single)
CmdNuevo
CmdSalir
ListaIconos
Label1(0)
Label1(1)
Label1(2)
TIPO
Botón de comando.
CAPTION
“Nuevo”
TAREA ASOCIADA
CmdNuevo_Click()
TIPO
Botón de comando.
CAPTION
“Salir”
TAREA ASOCIADA
CmdSalir_Click()
TIPO
Lista de imágenes.
CAPTION
-
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Habitación:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Tipo:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Forzar ID. Atencion, sólo recomendado
a usuarios avanzados”
-217-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Label1(4)
Label1(5)
Label1(6)
Frame2
Text1(0)
Text1(1)
Text1(2)
Text1(3)
Text1(4)
Text2
Commnad2(0)
Command2(1)
ANEXOS
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Observación:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Precio”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Potencia”
TAREA ASOCIADA
-
TIPO
Marco que engloba controles comunes.
CAPTION
“Nuevo Dispositivo”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“OK”
TAREA ASOCIADA
Command2_Click(Index As Integer)
TIPO
Botón de comando.
-218-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
CAPTION
“Cancelar”
TAREA ASOCIADA
Command2_Click(Index As Integer)
Tabla 24. Resumen de los controles del formulario Frm_Electrodomesticos.
A continuación se muestra el código de programa de este formulario:
'Declaracion de variables globales del formulario
Private db As Database
Private rs As Recordset
Private dispositivos As Integer
Private Modificar As Boolean
'Cuando se activa el formulario se avisa
'a la aplicacion que se esta trabajando con
'electrodomesticos
Private Sub Form_Activate()
TipoInformacion = 1
End Sub
'Se inicializan los parámetros del formulario al cargalo
Private Sub Form_Load()
Me.Height = 5000
'On Error Resume Next
BaseCargada = False
sPathBase = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(sPathBase)
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos Order
by ID", dbOpenDynaset)
rs.MoveFirst
While Not rs.EOF
rs.MoveNext
Wend
Frame1.Caption = rs.RecordCount & " Dispositivos on-line"
ListarRegistros
End Sub
'Al salir del formulario se liberan los controles sobre
'la base de datos
Private Sub Form_Unload(Cancel As Integer)
Set rs = Nothing
Set db = Nothing
End Sub
Private Sub ListarRegistros()
On Error Resume Next
With ListView2
' El tipo de Listview que queremos es del tipo "reporte"
.View = lvwReport
' Que no se puedan modificar los datos del listview
-219-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
.LabelEdit = lvwManual
' Añadimos las cabeceras
If .ListItems.Count = 0 Then
.ColumnHeaders.Add , , "ID", 300
.ColumnHeaders.Add , , "Habitacion", 1500
.ColumnHeaders.Add , , "Tipo", 1800
.ColumnHeaders.Add , , "Estado", 900
.ColumnHeaders.Add , , "Potencia", 600
.ColumnHeaders.Add , , "Precio", 700
.ColumnHeaders.Add , , "Observaciones", 2000
End If
End With
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos Order
by ID", dbOpenDynaset)
With rs
' Si no hay datos...
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
rs.MoveFirst
While Not rs.EOF
rs.MoveNext
Wend
dispositivos = rs.RecordCount
Frame1.Caption = rs.RecordCount & " Dispositivos on-line"
' Mostrar los datos hallados
ListView2.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set tli = ListView2.ListItems.Add(, , .Fields("ID")
& "")
If .Fields("Estado") = True Then
tli.SmallIcon
=
ListaIconos.ListImages("Encendido").Key
Else
tli.SmallIcon
=
ListaIconos.ListImages("Apagado").Key
End If
tli.SubItems(1) = .Fields("Habitación") & ""
tli.SubItems(2) = .Fields("Tipo") & ""
If .Fields("Estado") = True Then
tli.SubItems(3) = "Encendido" & ""
Else
tli.SubItems(3) = "Apagado" & ""
End If
tli.SubItems(4) = Format(.Fields("Potencia"), "0 W")
& ""
tli.SubItems(5) = Format(.Fields("Precio"), "0.00
€") & ""
tli.SubItems(6) = Format(.Fields("Observaciones"),
"") & ""
.MoveNext
-220-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Loop
End If
.MoveFirst
End With
Set rs = Nothing
End Sub
'Al pulsar el boton aparece al opcion para introducir
'un nuevo dispositivo
Private Sub CmdNuevo_Click()
Modificar = False
Frame2.Caption = "Nuevo Dispositivo"
Me.Height = 7400
'Se borran los datos introducidos anteriormente
Text1(0).SetFocus
Text1(0).Text = ""
Text1(1).Text = ""
Text1(2).Text = ""
Text2.Text = ""
End Sub
'Al pulsar el boton salir se oculta el formulario
Private Sub CmdSalir_Click()
Unload Me
End Sub
'Procedimiento que borra un determinado registro de la base
'de datos del usuario
Private Sub BorrarRegistro()
If dispositivos > 1 Then
Set trs = db.OpenRecordset("SELECT * FROM Electrodomesticos
WHERE ID=" & newID, dbOpenDynaset)
trs.Delete
Set trs = Nothing
If newID <> 0 Then
BorrarFichero (App.path & "\electro\ele" & newID & ".dat")
End If
ListarRegistros
Else
MsgBox "Sólo hay un dispositivo, no se puede eliminar por
motivos de la aplicación.", vbOKOnly + vbInformation, "No se puede
realizar esta operación."
End If
End Sub
'Se activa el menu popup
Private Sub ListView2_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If Button = 2 Then PopupMenu MenuPop
End Sub
Private
ColumnHeader)
Sub
ListView2_columnClick(ByVal
-221-
ColumnHeader
As
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
' Cuando se hace clic en un objeto ColumnHeader, el
' control ListView se ordena por los subelementos de
' esa columna.
Dim currSortKey As Integer
ListView2.SortKey = ColumnHeader.Index - 1
currSortKey = ListView2.SortKey
ListView2.SortOrder = Abs(Not ListView2.SortOrder = 1)
ListView2.Sorted = True
End Sub
'Actualiza el estado de la luminaria despues de que se
'haya intentado modificar
Private Sub ActualizarEstado()
If ActualizarEst Then
Set trs = db.OpenRecordset("SELECT * FROM Electrodomesticos
WHERE ID=" & newID, dbOpenDynaset)
With trs
' Antes de actualizar los datos del recordset,
' hay que ponerlo en modo edición
.Edit
'
.Fields("Estado") = newEstado
' Actualizar los datos en el recordset
.Update
End With
'Text1(0).Text = "Actualizado"
ActualizarEst = 0
Set trs = Nothing
End If
'Text1(0).Text = "NO Actualizado"
ListarRegistros
End Sub
'Verifica los datos introducidos por el usuario a la hora de crear
'un nuevo registro, los campos de Habitacion y Tipo no pueden quedar
vacios
Private Sub Command2_Click(Index As Integer)
Select Case Index
Case 0:
If ((Text1(0).Text = "") Or (Text1(1).Text = "") Or
(Text1(3).Text = "") Or (Text1(4).Text = "")) Then
MsgBox
"Faltan
parametros,
revise
la
información
introducida", vbOKInly, "Alerta interna"
Else
NuevoRegistro
Me.Height = 5000
End If
Case 1: Me.Height = 5000
End Select
ListView2.SetFocus
End Sub
'Inserta un nuevo registro con la informacion suministrada
-222-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'por el usuario
Private Sub NuevoRegistro()
Dim i As Integer
Dim salir, iguales As Boolean
salir = False
i = 1
If Modificar = False Then
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos
Order by ID", dbOpenDynaset)
With rs
If Text1(2).Text <> "" Then
'Si el campo ID contiene datos se procede
'comprobar que no este duplicada
newID = Int(Text1(2).Text)
.MoveFirst
While Not .EOF
If newID = .Fields("ID") Then
iguales = True
'se esta duplicada se muestra un mensaje de error
'y se invalidan todos los cambios
MsgBox "ID duplicada", vbOKOnly + vbCritical, "Error
al forzar ID"
End If
Wend
Else
'Si el campo ID está en blanco se procede
'al calculo automatico de este
.MoveFirst
While (((Not .EOF) And (salir = False)))
If (i <> .Fields("ID")) And (.Fields("ID") <> 0) Then
salir = True
newID = i
End If
.MoveNext
i = i + 1
Wend
If salir = False Then
newID = i
End If
End If
If iguales = False Then
'Si la ID no estaba duplicada se almacenan todos
'los cambios
.AddNew
.Fields("Habitación") = Text1(0).Text
.Fields("Tipo") = Text1(1).Text
.Fields("ID") = newID
.Fields("Precio") = CCur(Text1(3).Text)
.Fields("Potencia") = Int(Text1(4).Text)
If Text2.Text <> "" Then
.Fields("Observaciones") = Text2.Text
Else
-223-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
.Fields("Observaciones") = "-"
End If
.Update
End If
End With
Else
'Si no se desea introducir un dispositivo nuevo, sino que se
'quiere modificar uno existente, el único campo que no
'deja modificar es la ID
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos
WHERE ID=" & newID, dbOpenDynaset)
With rs
.Edit
.Fields("Habitación") = Text1(0).Text
.Fields("Tipo") = Text1(1).Text
.Fields("Precio") = Text1(3).Text
.Fields("Potencia") = Text1(4).Text
.Fields("Observaciones") = Text2.Text
.Update
End With
End If
Set rs = Nothing
ListarRegistros
End Sub
'Procedimiento que fuerza numeros en un campo de texto
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If (Index = 2) Or (Index = 4) Then
If Not ((Asc("0") <= KeyAscii) And (KeyAscii <= Asc("9")))
Then
'KeyAscii = 8 es el retroceso o BackSpace
If KeyAscii <> 8 Then
KeyAscii = 0
End If
End If
End If
If (Index = 3) Then
If Not ((Asc("0") <= KeyAscii) And (KeyAscii <= Asc("9"))) Then
'KeyAscii = 8 es el retroceso o BackSpace
If (KeyAscii <> 8) And (KeyAscii <> Asc(",")) Then
KeyAscii = 0
End If
End If
End If
End Sub
'''''''''''MENUS
'''''MENU ARCHIVO
-224-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Private Sub SubSalir_Click()
MsgBox "Si cierra esta ventana
vbOKOnly + vbCritical, "Atención!!"
End
End Sub
se
dejarán
'''''MENU VER
Private Sub SubAdquisicionDatos_Click()
Frm_AdquisicionDatos.Show
Frm_AdquisicionDatos.SetFocus
End Sub
Private Sub SubIluminacion_Click()
Frm_Estado.Show
Frm_Estado.SetFocus
End Sub
Private Sub SubElectrodomesticos_Click()
Frm_Electrodomesticos.Show
Frm_Electrodomesticos.SetFocus
End Sub
Private Sub SubApagarDispositivos_Click()
ApagarDispositivos
End Sub
Private Sub SubVidaUtil_click()
Frm_Vida.Show
Frm_Vida.SetFocus
End Sub
'''''MENU INTERNET
Private Sub SubConfigurarFTP_Click()
Frm_ConfigFTP.Show
Frm_ConfigFTP.SetFocus
End Sub
Private Sub SubIniciarSesion_Click()
Frm_Internet.Show
Frm_Internet.SetFocus
End Sub
'''''MENU USUARIO
Private Sub SubConfigUsuario_Click()
Frm_ConfigUsuario.Show
Frm_ConfigUsuario.SetFocus
End Sub
Private Sub SubBloquearAcceso_Click()
-225-
de
guardar
datos",
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
MDIRaiz.Enabled = False
Frm_Desbloquear.Show
End Sub
'''''MENU PLANO
Private Sub SubAdquirirPlano_Click()
Frm_Adquirir_Mapa.Show
Frm_Adquirir_Mapa.SetFocus
End Sub
Private Sub SubVerPlano_Click()
Frm_Mostrar_Mapa.Show
Frm_Mostrar_Mapa.SetFocus
End Sub
'''''MENU AYUDA
Private Sub SubManual_Click()
h = HtmlHelp(Me.hWnd, "AyudaHTML.chm", HH_DISPLAY_TOPIC, 0&)
End Sub
Private Sub SubAcercade_Click()
Frm_Acerca.Show
Frm_Acerca.SetFocus
End Sub
''''''''''MENU POP UP
''''''''''CAMBIAR ESTADO
'Cambia el estado del la luminaria seleccionada de OFF a ON
Private Sub MenuON_Click()
newID = Int(ListView2.SelectedItem.Text)
newEstado = True
ActualizarEst = 1
ActualizarEstado
End Sub
'Cambia el estado del la luminaria seleccionada de ON a OFF
Private Sub MenuOFF_Click()
newID = Int(ListView2.SelectedItem.Text)
newEstado = False
ActualizarEst = 1
ActualizarEstado
End Sub
''''''''''PROGRAMAR
Private Sub MenuProgramar_click()
newID = Int(ListView2.SelectedItem.Text)
Frm_Programador.Show
End Sub
-226-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
''''''''''ASIGNAR PUNTO
Private Sub SubAsignar_Click()
newID = Int(ListView2.SelectedItem.Text)
Frm_Config_Mapa.Show
End Sub
''''''''''CONSUMO
'Llamada al formulario encargado del calculod e consumos
Private Sub menuConsumo_Click()
newID = Int(ListView2.SelectedItem.Text)
newHabitacion = ListView2.SelectedItem.SubItems(1)
newTipo = ListView2.SelectedItem.SubItems(2)
newPotencia = ListView2.SelectedItem.SubItems(4)
Frm_Consumo.Show
End Sub
''''''''''TIEMPO
'Llamada al formulario encargado del calculo de tiempos
Private Sub MenuTiempo_Click()
newID = Int(ListView2.SelectedItem.Text)
newHabitacion = ListView2.SelectedItem.SubItems(1)
newTipo = ListView2.SelectedItem.SubItems(2)
newPotencia = ListView2.SelectedItem.SubItems(4)
Frm_Tiempo.Show
End Sub
''''''''''MODIFICAR
Private Sub SubModificar_Click()
Frame2.Caption = "Modificar Dispositivo"
Modificar = True
newID = Int(ListView2.SelectedItem.Text)
Text1(0).Text = ListView2.SelectedItem.SubItems(1)
Text1(1).Text = ListView2.SelectedItem.SubItems(2)
Text1(4).Text
=
Left(ListView2.SelectedItem.SubItems(4),
Len(ListView2.SelectedItem.SubItems(4)) - 2)
Text1(3).Text
=
Left(ListView2.SelectedItem.SubItems(5),
Len(ListView2.SelectedItem.SubItems(5)) - 2)
Text2.Text = ListView2.SelectedItem.SubItems(6)
Me.Height = 7400
End Sub
''''''''''BORRAR
'Llamada al procedimiento que borra un registro, le pasa
'como parametro la ID del registro a elminar
Private Sub MenuBorrar_Click()
newID = Int(ListView2.SelectedItem.Text)
BorrarRegistro
End Sub
Código 5. Código del formulario Frm_electrodomesticos.
-227-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.6 Frm_Catalogo.frm
Figura 93. Vista del formulario Frm_Catalogo.
Este formulario ofrece apoyo a la información de las luminarias, pudienco cambiar el
tipode luminaria (Re ferencia, marca, potencia, precio, horas de vida, modo ahorro y
potencia modo ahorro) de una manera sencilla. La información puede ser insertada de
manera automática, accediendoa un catálogo de un proveedor o manualmente si la
luminaria en cuestión no se encuentra en dicho catálogo.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
CmdAcceder
PROPIEDADES
VALOR
TIPO
Botón de comando.
CAPTION
“Acceder”
TAREA ASOCIADA
CmdAcceder_Click()
-228-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Txt_Ruta
CmdAbrir
CdbArchivo
Fra_Manual
Label1(0)
Label1(1)
Label1(2)
Label1(3)
Label1(4)
Text1(0)
Text1 (1)
Text1 (2)
ANEXOS
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“...”
TAREA ASOCIADA
CmdAbrir_Click()
TIPO
Dialogo del sistema.
CAPTION
-
TAREA ASOCIADA
-
TIPO
Marco que reune comandos relacionados.
CAPTION
“Inserción Manual”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Referencia:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Marca:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Potenci:a”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Precio:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Horas de vida:”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
-229-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Text1 (3)
Text1 (4)
Check1
Label2
Text2
CmdOK
Fra_Auto
ANEXOS
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text1_KeyPress(Index As Integer,
KeyAscii As Integer)
TIPO
Casilla de verificación.
CAPTION
“Bajo consumo”
TAREA ASOCIADA
Check1_Click()
TIPO
Etiqueta.
CAPTION
“Potencia:”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
Text2_KeyPress(KeyAscii As Integer)
TIPO
Botón de comando.
CAPTION
“OK”
TAREA ASOCIADA
CmdOK_ Click()
TIPO
Marco que reune comandos relacionados.
CAPTION
“Inserción Automática”
TAREA ASOCIADA
-
TIPO
Lista.
CAPTION
-
TAREA ASOCIADA
ListView1_ItemClick(ByVal Item As
ListItem),
ListView1
ListView1_columnClick(ByVal
ColumnHeader As ColumnHeader),
ListView1_DblClick()
Tabla 25. Resumen de los controles del formulario Frm_Catalogo.
A continuación se muestra el código de programa de este formulario:
'Declaracion de variables globales del formulario
Private db As Database
Private rs As Recordset
Private sPathBase As String
'Este procedimiento comprueba si el dispositivo a añadir
'dispone de modo de bajo consumo, de ser así habilita la
-230-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'insercion de la potencia para modo de bajo consumo
Private Sub Check1_Click()
If Check1.Value = Checked Then
Text2.Enabled = True
Else
Text2.Enabled = False
End If
End Sub
'Procedimiento por el cual se llama a la shell de windows
'para abrir la ruta del fichero que contiene las luminarias
'que se necesitan
Private Sub Cmd_Abrir_Click()
On Error Resume Next
'Se filtran los archivos por bases de datos
'de microsoft access 97
With cdbArchivo
.DialogTitle = "Abrir Base de Datos"
.Filter = "Archivo Access(*.mdb)|*.mdb"
.FilterIndex = 1
.ShowOpen
'si no se devuelve ningun valor muestra un mensaje de error
If Dir(.FileName, vbArchive) = "" Then
MsgBox
"
El
archivo
no
fué
encontrado
....",
vbInformation, "Aviso"
Exit Sub
End If
'Si se encuentra el archivo se muestra y guarda la ruta
Txt_Ruta.Text = .FileName
sPathBase = .FileName
End With
CmdAcceder.SetFocus
End Sub
'Procedimiento por el cual se abre la base de datos indicada
Private Sub CmdAcceder_Click()
If ExisteFichero(sPathBase) And sPathBase <> "" Then
Set db = OpenDatabase(sPathBase)
Set
rs
=
db.OpenRecordset("SELECT
*
FROM
Catalogo",
dbOpenDynaset)
ListarRegistros
End If
End Sub
'Procedimiento para mostrar los datos del registro actual
'a este procedimiento hay que llamarlo cada vez que
'se quiera mostrar los datos del registro actual.
Private Sub MostrarRegistro()
With rs
Text1(0) = .Fields("Referencia")
Text1(1) = .Fields("Marca")
Text1(2) = .Fields("Potencia")
-231-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Text1(3) = .Fields("Horas de vida")
Text1(4) = .Fields("Precio")
End With
End Sub
'Procedimiento que lista los registros de la base de datos
'en un control listview
Private Sub ListarRegistros()
'Dim tLi As ListItem
With ListView1
' El tipo de Listview que queremos es del tipo "reporte"
.View = lvwReport
' Que no se puedan modificar los datos del listview
.LabelEdit = lvwManual
' Añadimos las cabeceras
If .ListItems.Count = 0 Then
.ColumnHeaders.Add , , "Referencia", 900
.ColumnHeaders.Add , , "Marca", 900
.ColumnHeaders.Add , , "Potencia", 600, lvwColumnRight
.ColumnHeaders.Add , , "Precio", 600, lvwColumnRight
.ColumnHeaders.Add , , "Horas", 600, lvwColumnRight
.ColumnHeaders.Add , , "Modo ahorro", 900, lvwColumnRight
.ColumnHeaders.Add
,
,
"Potencia
ahorro",
900,
lvwColumnRight
End If
End With
With rs
' Si no hay datos...
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
' Mostrar los datos hallados
ListView1.ListItems.Clear
.MoveFirst
Do While Not .EOF
Set
tli
=
ListView1.ListItems.Add(,
,
.Fields("Referencia") & "")
tli.SubItems(1) = .Fields("Marca") & ""
tli.SubItems(2) = Format(.Fields("Potencia"), "0 W")
& ""
tli.SubItems(3) = Format(.Fields("Precio"), "0.00
€") & ""
tli.SubItems(4) = Format(.Fields("Horas de vida"),
"0 h") & ""
If .Fields("Ahorro Energetico") = True Then
tli.SubItems(5) = "Disponible" & ""
tli.SubItems(6)
=
Format(.Fields("Potencia
de
ahorro"), "0 W") & ""
Else
tli.SubItems(5) = "No disponible" & ""
tli.SubItems(6) = "-" & ""
-232-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End If
.MoveNext
Loop
End If
.MoveFirst
End With
End Sub
'se aceptan los datos introducidos maualmente y se actualiza
'la base de datos del usuario
Private Sub CmdOK_Click()
If Text1(0).Text <> "" And Text1(1).Text <> "" And Text1(2).Text
<> "" And Text1(3).Text <> "" And Text1(4).Text <> "" Then
newReferencia = Text1(0).Text
newMarca = Text1(1).Text
newPotencia = Int(Text1(2).Text)
newHoras = Int(Text1(3).Text)
newPrecio = CCur(Text1(4).Text)
If Check1.Value = Checked Then
newBajoConsumo = True
If Text2.Text <> "" Then
newBajoPotencia = Int(Text2.Text)
Else
'si no se introducen todos los datos, se muestra un mensaje de
error
MsgBox "Faltan parametros, revise la información introducida
para bajo consumo", vbOKInly, "Alerta interna"
GoTo fin
End If
Else
newBajoConsumo = False
newBajoPotencia = 0
End If
ActualizarReg = 1
Frm_Estado.Show
Unload Me
Else
'si no se introducen todos los datos, se muestra un mensaje de
error
MsgBox "Faltan parametros, revise la información introducida",
vbOKInly, "Alerta interna"
End If
fin:
End Sub
Private Sub Form_Load()
Text2.Enabled = False
End Sub
'Libera los control de base de datos y esconde el fomulario
Private Sub Form_Unload(Cancel As Integer)
Set rs = Nothing
Set db = Nothing
-233-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Me.Hide
End Sub
'Al hacer un click simple sobre los elementos del
'listview, los datos aparecen en cuadros de texto
'simple informacion para el usuario
Private Sub ListView1_ItemClick(ByVal Item As ListItem)
' Mostramos el contenido del item seleccionado
Text1(0) = Item.Text
Text1(1) = Item.SubItems(1)
Text1(2) = Item.SubItems(2)
Text1(3) = Item.SubItems(3)
Text1(4) = Item.SubItems(4)
End Sub
' Cuando se hace clic en un objeto ColumnHeader, el
' control ListView se ordena por los subelementos de
' esa columna.
Private
Sub
ListView1_columnClick(ByVal
ColumnHeader
ColumnHeader)
Dim currSortKey As Integer
ListView1.SortKey = ColumnHeader.Index - 1
currSortKey = ListView1.SortKey
ListView1.SortOrder = Abs(Not ListView1.SortOrder = 1)
ListView1.Sorted = True
End Sub
As
'Al hacer dobleclick sobre un elemento se almacenan los datos
'de dicho eleemento y se pasan a la base de datos del usuario
Private Sub ListView1_DblClick()
If ListView1.SelectedItem.Selected Then
Call
PasarParametros(ListView1.SelectedItem.Text,
ListView1.SelectedItem.SubItems(1),
ListView1.SelectedItem.SubItems(2),
ListView1.SelectedItem.SubItems(3),
ListView1.SelectedItem.SubItems(4),
ListView1.SelectedItem.SubItems(5), ListView1.SelectedItem.SubItems(6))
Frm_Estado.Show
ActualizarReg = 1
Set rs = Nothing
Set db = Nothing
Unload Me
End If
'ActualizarRegistro
End Sub
'Procedimiento manual de acceso a la base de datos, sirve
'para encontrar manualmente un tipo de luminaria y editarla
'ajustandola a las necesidades del usuario
'Procedimiento que fuerza que sólo se puedan implementar numeros
'en determinados cuadros de texto donde se piden necesariamente
'numeros para la correcta introduccion de los datos
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Select Case Index
Case 2:
-234-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
If Not ((Asc("0") <= KeyAscii) And (KeyAscii <= Asc("9")))
Then
'KeyAscii = 8 es el retroceso o BackSpace
If KeyAscii <> 8 Then
KeyAscii = 0
End If
End If
Case 3:
If Not ((Asc("0") <= KeyAscii) And (KeyAscii <= Asc("9")))
Then
'KeyAscii = 8 es el retroceso o BackSpace
If KeyAscii <> 8 Then
KeyAscii = 0
End If
End If
Case 4:
If Not ((Asc("0") <= KeyAscii) And (KeyAscii <= Asc("9")))
Then
'KeyAscii = 8 es el retroceso o BackSpace, para el campo
'precio se acepta tambien la coma decimal
If (KeyAscii <> 8) And (KeyAscii <> Asc(",")) Then
KeyAscii = 0
End If
End If
End Select
End Sub
'Procedimiento para evitar que el usuario escriba letras
'en el campo potecia de modo de bajo consumo
Private Sub Text2_KeyPress(KeyAscii As Integer)
If Not ((Asc("0") <= KeyAscii) And (KeyAscii <= Asc("9"))) Then
'KeyAscii = 8 es el retroceso o BackSpace
If KeyAscii <> 8 Then
KeyAscii = 0
End If
End If
End Sub
Código 6. Código del formulario Frm_Catalogo.
-235-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.7 Frm_Programador.frm
Figura 94. Vista del formulario Frm_Programador.
Este formulario ofrece la posibilidad de poder programar la hora de encendido o
apagado de cualquier dispositivo conectado, esta lista es cíclica y para cada semana se
aplica. Para poder gestionar mejor los dispositivos programados, se puede ver una lista de
los dispositivos programados, el dia y la hora para el que están programados y si lo están
en modo normal o modo ahorro de energía.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Horario”
TAREA ASOCIADA
-
-236-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Label1(0)
Label1(1)
Label1(2)
Label1(3)
Label1(4)
Label1(5)
Label1(6)
Label1(7)
Label1(8)
TxtInicio(0..6)
ANEXOS
TIPO
Etiqueta.
CAPTION
“LUN”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“MAR”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“MIE”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“JUE”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“VIE”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“SÁB”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“DOM”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Inicio”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Fin”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
TIPO
TxtFin(0..6)
Cuadro de texto.
CAPTION
TAREA ASOCIADA
Ckeck1(0..6)
Ckeck2(0..6)
TIPO
Casilla de veridicación.
CAPTION
“Activo”
TAREA ASOCIADA
-
TIPO
Casilla de verificación.
CAPTION
“Ahorro”
-237-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
CmdLista
ANEXOS
TAREA ASOCIADA
Check2_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
Inicialmente: “Ver lista”
Después: “Ocultar lista”
CmdBorrar
CmdProgramar(0)
CmdProgramar(1)
Frame2
LisView1
TAREA ASOCIADA
CmdLista_Click()
TIPO
Botón de comando.
CAPTION
“Borrar Programación”
TAREA ASOCIADA
Cmd Borrar_Click()
TIPO
Botón de comando.
CAPTION
“OK”
TAREA ASOCIADA
CmdProgramar_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Cancelar”
TAREA ASOCIADA
CmdProgramar_Click(Index As Integer)
TIPO
Marco que engloba controles comunes.
CAPTION
"Iluminación" o "Electrodomésticos"
TAREA ASOCIADA
-
TIPO
Lista.
CAPTION
-
TAREA ASOCIADA
ListView1_columnClick(ByVal
ColumnHeader As ColumnHeader)
Tabla 26. Resumen de los controles del formulario Frm_Programador.
A continuación se muestra el código de programa de este formulario:
'Si no se activa la casilla del día, no se habilitará la
'opcion de modo ahorro
Private Sub Check2_Click(Index As Integer)
If Check1(Index).Value = Unchecked Then Check2(Index).Value
Unchecked
End Sub
=
'Al pulsar el botón borrar se eliminará el archivo que contiene la
programacion
'de todosd los dispositivos por lo que se muestra
'un mensaje de aviso
Private Sub CmdBorrar_Click()
If TipoInformacion Then
mensaje = "Se procederá a borrar toda la programación para todas
los electrodomésticos. ¿Continuar?"
Else
mensaje = "Se procederá a borrar toda la programación para todas
las luminarias. ¿Continuar?"
-238-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End If
respuesta = MsgBox(mensaje, vbYesNo + vbInformation,
programación")
If respuesta = vbYes Then
If TipoInformacion Then
path = App.path & "\electro\programa.dat"
Else
path = App.path & "\ilum\programa.dat"
End If
BorrarFichero (path)
End If
CmdProgramar(0).SetFocus
End Sub
"Borrado
'Al pulsar sobre el boton Ver/Ocultar lista se producen
'una serie de cambios en el formulario y se muestra/oculta
'la lista de los elementos programados
Private Sub CmdLista_Click()
If CmdLista.Caption = "Ver lista" Then
CmdLista.Caption = "Ocultar lista"
Me.Height = 7300
Else
CmdLista.Caption = "Ver lista"
Me.Height = 3200
End If
If TipoInformacion Then
Frame2.Caption = "Electrodomésticos"
Else
Frame2.Caption = "Iluminación"
End If
ListarRegistros
End Sub
'Procedimiento que lista la programcion de los dispositivos
Private Sub ListarRegistros()
Dim programa As tprogramacion
Dim nfic As Integer
Dim salir As Boolean
Dim Modo(0 To 6) As String
Set db = OpenDatabase(App.path & "\bases\info97.mdb")
'On Error Resume Next
With ListView1
' El tipo de Listview que queremos es del tipo "reporte"
.View = lvwReport
' Que no se puedan modificar los datos del listview
.LabelEdit = lvwManual
' Añadimos las cabeceras
If .ListItems.Count = 0 Then
.ColumnHeaders.Add , , "ID", 100
.ColumnHeaders.Add , , "Habitacion", 1500
.ColumnHeaders.Add , , "Tipo", 1800
.ColumnHeaders.Add , , "Lunes", 1000
-239-
de
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
.ColumnHeaders.Add
.ColumnHeaders.Add
.ColumnHeaders.Add
.ColumnHeaders.Add
.ColumnHeaders.Add
.ColumnHeaders.Add
End If
ANEXOS
,
,
,
,
,
,
,
,
,
,
,
,
"Martes", 1000
"Miercoles", 1000
"Jueves", 1000
"Viernes", 1000
"Sábado", 1000
"Domingo", 1000
End With
If TipoInformacion Then
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos
Order by ID", dbOpenDynaset)
path = App.path & "\electro\programa.dat"
Else
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
path = App.path & "\ilum\programa.dat"
End If
With rs
' Si no hay datos...
If (.BOF And .EOF) Then
MsgBox "No se han encontrado los datos buscados"
Else
ListView1.ListItems.Clear
.MoveFirst
Do While Not .EOF
nfic = FreeFile
Open path For Random As nfic Len = Len(programa)
While (Not EOF(nfic)) And salir = False
Get #nfic, , programa
If programa.ID = rs.Fields("ID") Then salir = True
Wend
Close #nfic
If salir = True And programa.Datos = True Then
salir = False
Set tli = ListView1.ListItems.Add(, , .Fields("ID")
& "")
tli.SubItems(1) = .Fields("Habitación") & ""
tli.SubItems(2) = .Fields("Tipo") & ""
For i = 0 To 6
Modo(i) = "N"
Next
'Esta lista muestra por dispositivo y dia de la
semana
'las horas de inicio y final y si tiene modo ahorro
o no
If programa.Lunes(4) = True Then Modo(0) = "A"
If programa.Martes(4) = True Then Modo(1) = "A"
If programa.Miercoles(4) = True Then Modo(2) = "A"
If programa.Jueves(4) = True Then Modo(3) = "A"
If programa.Viernes(4) = True Then Modo(4) = "A"
If programa.Sabado(4) = True Then Modo(5) = "A"
If programa.Domingo(4) = True Then Modo(6) = "A"
-240-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
If programa.Lunes(1) = True Then tli.SubItems(3) =
programa.Lunes(2) & "-" & programa.Lunes(3) & "(" & Modo(0) & ")" & ""
If programa.Martes(1) = True Then tli.SubItems(4) =
programa.Martes(2) & "-" & programa.Martes(3) & "(" & Modo(1) & ")" & ""
If programa.Miercoles(1) = True Then tli.SubItems(5)
= programa.Miercoles(2) & "-" & programa.Miercoles(3) & "(" & Modo(2) &
")" & ""
If programa.Jueves(1) = True Then tli.SubItems(6) =
programa.Jueves(2) & "-" & programa.Jueves(3) & "(" & Modo(3) & ")" & ""
If programa.Viernes(1) = True Then tli.SubItems(7) =
programa.Viernes(2) & "-" & programa.Viernes(3) & "(" & Modo(4) & ")" &
""
If programa.Sabado(1) = True Then tli.SubItems(8) =
programa.Sabado(2) & "-" & programa.Sabado(3) & "(" & Modo(5) & ")" & ""
If programa.Domingo(1) = True Then tli.SubItems(9) =
programa.Domingo(2) & "-" & programa.Domingo(3) & "(" & Modo(6) & ")" &
""
End If
.MoveNext
Loop
End If
.MoveFirst
End With
Set rs = Nothing
End Sub
'Al pulsar sobre el boton Programar, se almacenan todos los cambios
'realizados por el usuario por dia de la semana
Private Sub CmdProgramar_Click(Index As Integer)
Dim programa As tprogramacion
Dim tmp As tprogramacion
Dim nfic As Integer
Dim salir As Boolean
If Index = 0 Then
With programa
.ID = newID
'para cada dia de la semana se comprueba si esta marcado
'y si tb hay marcado la opcion de modo ahorro. Al
'mismo tiempo se verifica el formato de las horas para evitar
fallos
If (Check1(0).Value = Checked) And (TxtInicio(0).Text <> "") And
(TxtFin(0).Text
<>
"")
And
ValidarHoras(TxtInicio(0).Text)
And
ValidarHoras(TxtFin(0).Text) Then
If Check2(0).Value = Checked Then .Lunes(4) = True
.Lunes(1) = True
.Lunes(2) = TxtInicio(0).Text
.Lunes(3) = TxtFin(0).Text
'esta variable sirve para indicar si este dia ha sido
programado
'para que cuando se vuelva a cargar el formulario se verifique
'su programacion
.Datos = True
End If
-241-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
If (Check1(1).Value = Checked) And (TxtInicio(1).Text <> "")
(TxtFin(1).Text
<>
"")
And
ValidarHoras(TxtInicio(1).Text)
ValidarHoras(TxtFin(1).Text) Then
If Check2(1).Value = Checked Then .Martes(4) = True
.Martes(1) = True
.Martes(2) = TxtInicio(1).Text
.Martes(3) = TxtFin(1).Text
.Datos = True
End If
If (Check1(2).Value = Checked) And (TxtInicio(2).Text <> "")
(TxtFin(2).Text
<>
"")
And
ValidarHoras(TxtInicio(2).Text)
ValidarHoras(TxtFin(2).Text) Then
If Check2(2).Value = Checked Then .Miercoles(4) = True
.Miercoles(1) = True
.Miercoles(2) = TxtInicio(2).Text
.Miercoles(3) = TxtFin(2).Text
.Datos = True
End If
If (Check1(3).Value = Checked) And (TxtInicio(3).Text <> "")
(TxtFin(3).Text
<>
"")
And
ValidarHoras(TxtInicio(3).Text)
ValidarHoras(TxtFin(3).Text) Then
If Check2(3).Value = Checked Then .Jueves(4) = True
.Jueves(1) = True
.Jueves(2) = TxtInicio(3).Text
.Jueves(3) = TxtFin(3).Text
.Datos = True
End If
If (Check1(4).Value = Checked) And (TxtInicio(4).Text <> "")
(TxtFin(4).Text
<>
"")
And
ValidarHoras(TxtInicio(4).Text)
ValidarHoras(TxtFin(4).Text) Then
If Check2(4).Value = Checked Then .Viernes(4) = True
.Viernes(1) = True
.Viernes(2) = TxtInicio(4).Text
.Viernes(3) = TxtFin(4).Text
.Datos = True
End If
If (Check1(5).Value = Checked) And (TxtInicio(5).Text <> "")
(TxtFin(5).Text
<>
"")
And
ValidarHoras(TxtInicio(5).Text)
ValidarHoras(TxtFin(5).Text) Then
If Check2(5).Value = Checked Then .Sabado(4) = True
.Sabado(1) = True
.Sabado(2) = TxtInicio(5).Text
.Sabado(3) = TxtFin(5).Text
.Datos = True
End If
If (Check1(6).Value = Checked) And (TxtInicio(6).Text <> "")
(TxtFin(6).Text
<>
"")
And
ValidarHoras(TxtInicio(6).Text)
ValidarHoras(TxtFin(6).Text) Then
If Check2(6).Value = Checked Then .Domingo(4) = True
.Domingo(1) = True
.Domingo(2) = TxtInicio(6).Text
.Domingo(3) = TxtFin(6).Text
.Datos = True
End If
-242-
And
And
And
And
And
And
And
And
And
And
And
And
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End With
nfic = FreeFile
If TipoInformacion Then
path = App.path & "\electro\programa.dat"
Else
path = App.path & "\ilum\programa.dat"
End If
Open path For Random As nfic Len = Len(tmp)
'Localizar si el registro ya existia
posicion = 1
While (Not EOF(nfic)) And salir = False
Get #nfic, posicion, tmp
If tmp.ID = programa.ID Then salir = True
posicion = posicion + 1
Wend
If salir = True Then
Put #nfic, posicion - 1, programa
Else
'de no ser así se escribe uno nuevo
Put #nfic, posicion, programa
End If
Close #nfic
Unload Me
Else
Unload Me
End If
End Sub
'Inicializacion de parametros del formulario
Private Sub Form_Load()
Dim nfic As Integer
Dim programa As tprogramacion
Dim salir As Boolean
Dim path As String
Me.Top = 0
Me.Height = 3200
'se verifican la programción a la que estaba sujeta
'el elemento a programar y se activan las casillas y las
'horas introducidas por el usuario en primera
'instancia, para que tenga constancia de la anterior
'programacion y la pueda cambiar a su gusto
Set db = OpenDatabase(App.path & "\bases\info97.mdb")
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion where ID=" &
newID, dbOpenDynaset)
If rs.Fields("BajoConsumo") = False Then
For i = 0 To 6
Check2(i).Enabled = False
Next
End If
If TipoInformacion Then
path = App.path & "\electro\programa.dat"
Else
-243-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
path = App.path & "\ilum\programa.dat"
End If
'Si existe un fichero de programcion se investiga si el
'elemento a programar estaba contenido en él
If ExisteFichero(path) Then
nfic = FreeFile
Open path For Random As nfic Len = Len(programa)
While (Not EOF(nfic)) And salir = False
Get nfic, , programa
If programa.ID = newID Then salir = True
Wend
If salir = True Then
'Se determina para cada dia de la semana el valor de la
'programcion y la hora de inicio y fin de esta
If programa.Lunes(1) = True Then
Check1(0).Value = Checked
If programa.Lunes(4) = True Then Check2(0).Value = Checked
TxtInicio(0).Text = programa.Lunes(2)
TxtFin(0).Text = programa.Lunes(3)
End If
If programa.Martes(1) = True Then
Check1(1).Value = Checked
If programa.Martes(4) = True Then Check2(1).Value = Checked
TxtInicio(1).Text = programa.Martes(2)
TxtFin(1).Text = programa.Martes(3)
End If
If programa.Miercoles(1) = True Then
Check1(2).Value = Checked
If programa.Miercoles(4) = True Then Check2(2).Value = Checked
TxtInicio(2).Text = programa.Miercoles(2)
TxtFin(2).Text = programa.Miercoles(3)
End If
If programa.Jueves(1) = True Then
Check1(3).Value = Checked
If programa.Jueves(4) = True Then Check2(3).Value = Checked
TxtInicio(3).Text = programa.Jueves(2)
TxtFin(3).Text = programa.Jueves(3)
End If
If programa.Viernes(1) = True Then
Check1(4).Value = Checked
If programa.Viernes(4) = True Then Check2(4).Value = Checked
TxtInicio(4).Text = programa.Viernes(2)
TxtFin(4).Text = programa.Viernes(3)
End If
If programa.Sabado(1) = True Then
Check1(5).Value = Checked
If programa.Sabado(4) = True Then Check2(5).Value = Checked
TxtInicio(5).Text = programa.Sabado(2)
TxtFin(5).Text = programa.Sabado(3)
End If
If programa.Domingo(1) = True Then
Check1(6).Value = Checked
-244-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
If programa.Domingo(4) = True Then Check2(6).Value = Checked
TxtInicio(6).Text = programa.Domingo(2)
TxtFin(6).Text = programa.Domingo(3)
End If
End If
Close #nfic
End If
End Sub
Private
Sub
ListView1_columnClick(ByVal
ColumnHeader
ColumnHeader)
' Cuando se hace clic en un objeto ColumnHeader, el
' control ListView se ordena por los subelementos de
' esa columna.
Dim currSortKey As Integer
ListView1.SortKey = ColumnHeader.Index - 1
currSortKey = ListView1.SortKey
ListView1.SortOrder = Abs(Not ListView1.SortOrder = 1)
ListView1.Sorted = True
As
End Sub
Código 7. Código del formulario Frm_Programador.
6.1.8 Frm_Tiempo.frm
Figura 95. Vista del formulario Frm_Tiempo.
Este formulario encabeza la selección de tipo de gráfica que el usuario desea obtener,
en este caso se trata de información de tiempos en funcionamiento. Este formulario
gestiona la petición del usuario y realiza las operacione necesarias para recopilar los datos
y almacenarlos en un formate que el formulario Frm_Grafica.frm interprete para realizar
una gráfica.
-245-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
Command1(0)
Command1(1)
Command1(2)
Command1(3)
Frame2
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Tiempo Total”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“Total”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Franjas Horarias”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Total”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Franjas Horarias”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Marco que reune comandos relacionados.
CAPTION
“Tiempo Individual”
TAREA ASOCIADA
-
Tabla 27. Resumen de los controles del formulario Frm_Tiempo.
A continuación se muestra el código de programa de este formulario:
'Declaracion de variables globales del formulario
Private nuevaIdentidad As Integer
'Procedimiento que gestiona y discrimina el comando pulsado
'y establece su modo de operacion
Private Sub Command1_Click(Index As Integer)
Dim fechaini, fechafin As Date
Dim ilumin As tiluminacion
Dim fichero As String
Dim nfic As Integer
TipoGrafica = 0
nfic = FreeFile
'Se abre el fichero de resgitros del elemento indicado
'para avaeriguar la primera fecha dicponible para la
'visualizacion de datos. Es para agilizar las pesquisas
'del usuario
If TipoInformacion = 0 Then
fichero = App.path & "\ilum\ilu" & newID & ".dat"
-246-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Else
fichero = App.path & "\electro\ele" & newID & ".dat"
End If
Open fichero For Random As nfic Len = Len(ilumin)
Get #nfic, 1, ilumin
Close #nfic
'On Error GoTo fin:
'Acotamos la busqueda a dos fechas
fechaini = InputBox("Introduce la fecha inicial:", "Busqueda por
fecha", ilumin.fecha) 'forzar primera fecha válida
fechafin = InputBox("Introduce la fecha inicial:", "Busqueda por
fecha", Date) 'forzar fecha actual del sistema
Select Case Index
'Se llama a la rutina asociada para el calculo de tiempos
'y despues a la rutina encargada de realizar las
'graficas correspondientes
Case 0: 'Call TiemposComunes(fechaini, fechafin)
Call DatosComunes(fechaini, fechafin, TipoGrafica)
Titulo = "Tiempo total entre " & fechaini & " y " &
fechafin
Call RealizarGrafica(Titulo)
Case 1: 'Call TiemposComunesFranja(fechaini, fechafin)
Call DatosComunesFranja(fechaini, fechafin, TipoGrafica)
Titulo = "Tiempo total por franjas horarias entre " &
fechaini & " y " & fechafin
Call RealizarGraficaFranja(Titulo)
Case 2: 'Call TiemposIndividuales(fechaini, fechafin, newID)
Call
DatosIndividuales(fechaini,
fechafin,
nuevaIdentidad, TipoGrafica)
Titulo = "Tiempo individual entre " & fechaini & " y " &
fechafin
Call RealizarGrafica(Titulo)
Case 3: 'Call TiemposIndividualesFranja(fechaini, fechafin,
newID)
Call
DatosIndividualesFranja(fechaini,
fechafin,
nuevaIdentidad, TipoGrafica)
Titulo = "Tiempo individual por franjas horarias entre "
& fechaini & " y " & fechafin
Call RealizarGraficaFranja(Titulo)
End Select
GoTo salir
fin:
fechaini = Date
fechafin = Date
salir:
End Sub
Private Sub Form_Load()
nuevaIdentidad = newID
End Sub
Código 8. Código del formulario Frm_Tiempo.
-247-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.9 Frm_Consumo.frm
Figura 96. Vista del formulario Frm_Consumo.
Este formulario encabeza la selección de tipo de gráfica que el usuario desea obtener,
en este caso se trata de información de consumos de energía. Este formulario gestiona la
petición del usuario y realiza las operacione necesarias para recopilar los datos y
almacenarlos en un formate que el formulario Frm_Grafica.frm interprete para realizar una
gráfica.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
Command1(0)
Command1(1)
Command1(2)
Command1(3)
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Consumo Total”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“Total”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Franjas Horarias”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Total”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Franjas Horarias”
TAREA ASOCIADA
Command1_Click(Index As Integer)
-248-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Frame2
ANEXOS
TIPO
Marco que reune comandos relacionados.
CAPTION
“Cosumo Individual”
TAREA ASOCIADA
-
Tabla 28. Resumen de los controles del formulario Frm_Consumo.
A continuación se muestra el código de programa de este formulario:
'Declaracion de variables globales del formulario
Private nuevaIdentidad As Integer
'Procedimiento que gestiona y discrimina el comando pulsado
'y establece su modo de operacion
Private Sub Command1_Click(Index As Integer)
Dim fechaini, fechafin As Date
Dim ilumin As tiluminacion
Dim fichero As String
Dim nfic, total As Integer
TipoGrafica = 1
nfic = FreeFile
'Se abre el fichero de resgitros del elemento indicado
'para avaeriguar la primera fecha dicponible para la
'visualizacion de datos. Es para agilizar las pesquisas
'del usuario
If TipoInformacion = 0 Then
fichero = App.path & "\ilum\ilu" & newID & ".dat"
Else
fichero = App.path & "\electro\ele" & newID & ".dat"
End If
Open fichero For Random As nfic Len = Len(ilumin)
Get #nfic, 1, ilumin
Close #nfic
On Error GoTo fin:
'Acotamos la busqueda a dos fechas
fechaini = InputBox("Introduce la fecha inicial:", "Busqueda por
fecha", ilumin.fecha) 'forzar primera fecha disponible
fechafin = InputBox("Introduce la fecha final:", "Busqueda por
fecha", Date) 'forzar fecha actual del sistema
Select Case Index
'Se llama a la rutina asociada para el calculo de consumos
'y despues a la rutina encargada de realizar las
'graficas correspondientes
Case 0: 'Call ConsumosComunes(fechaini, fechafin)
Call DatosComunes(fechaini, fechafin, TipoGrafica)
Titulo = "Consumo total entre " & fechaini & " y " &
fechafin
Call RealizarGrafica(Titulo)
Case 1: 'Call ConsumosComunesFranja(fechaini, fechafin)
Call DatosComunesFranja(fechaini, fechafin, TipoGrafica)
-249-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Titulo = "Consumo total por franjas horarias entre " &
fechaini & " y " & fechafin
Call RealizarGraficaFranja(Titulo)
Case 2: 'Call ConsumosIndividuales(fechaini, fechafin, newID)
Call
DatosIndividuales(fechaini,
fechafin,
nuevaIdentidad, TipoGrafica)
Titulo = "Consumo individual entre " & fechaini & " y "
& fechafin
Call RealizarGrafica(Titulo)
Case 3: 'Call ConsumosIndividualesFranja(fechaini, fechafin,
newID)
Call
DatosIndividualesFranja(fechaini,
fechafin,
nuevaIdentidad, TipoGrafica)
Titulo = "Consumo individual por franjas horarias entre
" & fechaini & " y " & fechafin
Call RealizarGraficaFranja(Titulo)
End Select
GoTo salir
fin:
fechaini = Date
fechafin = Date
salir:
End Sub
Private Sub Form_Load()
nuevaIdentidad = newID
End Sub
Código 9. Código del formulario Frm_Consumo.
-250-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.10 Frm_Grafica.frm
Figura 97. Vista del formulario Frm_Grafica.
Este formulario procesa la información almacenada por los formulario
Frm_Tiempos.frm y Frm_Consumo.frm y realiza la gráfica a partir de la petición del
usuario. Estas grágicas se pueden imprimir o exportar a hojas de cálculo, prestación que
posibilita que el usuario tenga un control sobre la información que la aplicación recopila.
A continuación se muestra una tabla resumen de los controles de este formulario:
-251-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
CONTROL
ANEXOS
PROPIEDADES
TIPO
VALOR
Marco que reune comandos relacionados.
"Tiempo total entre " + fecha inicial + " y
" + fecha final
“Tiempo total por franjas horarias entre "
+ fecha inicial + " y " + fecha fina l
"Tiempo individual entre " + fecha inicial
+ " y " + fecha final
"Tiempo individual por franjas horarias
entre " + fecha inicial + " y " + fecha
final
Frame1
CAPTION
"Consumo total entre " + fecha inicial + "
y " + fecha final
“Consumo total por franjas horarias entre
" + fecha inicial + " y " + fecha final
"Consumo individual entre " + fecha
inicial + " y " + fecha fina l
"Consumo individual por franjas horarias
entre " + fecha inicial + " y " + fecha
final
Picture1
Label1(0)
Label1(1)
Label1(2)
Label1(3)
Text1(0)
Text1(1)
TAREA ASOCIADA
-
TIPO
Imagen.
CAPTION
-
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“ID”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Potencia”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Habitación”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Tipo”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
-252-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Text1(2)
Text1(3)
CmdExcel
CmdImprimir
ANEXOS
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“Exportar a Excel”
TAREA ASOCIADA
CmdExcel_Click()
TIPO
Botón de comando.
CAPTION
“Imprimir”
TAREA ASOCIADA
CmdImprimir_Click()
Tabla 29. Resumen de los controles del formulario Frm_Grafica.
A continuación se muestra el código de programa de este formulario:
'Procedimiento que exporta los datos de un fichero
'de texto que contiene puntos representativos para
'elaborar graficas a una hoja de excel
Private Sub CmdExcel_Click()
Dim ApExcel As Variant
Dim EjeY() As Single
Dim EjeX() As Date
nfic = FreeFile
If TipoInformacion = 0 Then
Open App.path & "\ilum\punts.dat" For Input As nfic
Else
Open App.path & "\electro\punts.dat" For Input As nfic
End If
Input #nfic, NumPuntos
'Se extrae el numero de puntos del que consta el archivo
'si el valor es nulo, quiere decir que se trata de valores
'por franja horaria
If NumPuntos = 0 Then
'Datos de franja horaria, por lo tanto el numero de
'puntos esta fijado a 24 (24H)
ReDim EjeY(0 To 23)
Input #nfic, EjeY(0)
'Se pasan los datos a un vector
For i = 1 To 23
Input #nfic, i, dato
EjeY(i) = dato
Next i
Else
-253-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'Datos normales, se redimensionan los vectores para
'albergar todos los puntos
ReDim EjeY(1 To NumPuntos)
ReDim EjeX(1 To NumPuntos)
For i = 1 To NumPuntos
Input #nfic, fecha
EjeX(i) = fecha
Input #nfic, dato
EjeY(i) = dato
Next i
End If
Close #nfic
'Se crea una shell de excel
Set ApExcel = CreateObject("Excel.application")
' Hace que Excel se vea
ApExcel.Visible = True
'Agrega un nuevo Libro
ApExcel.Workbooks.Add
'Poner Titulos
ApExcel.cells(1, 1).Formula = Titulo
ApExcel.cells(2, 1).Formula = "ID:"
ApExcel.cells(3, 1).Formula = "Potencia:"
If newID = 0 Then
ApExcel.cells(2, 2).Formula = "---"
ApExcel.cells(3, 2).Formula = "---"
Else
ApExcel.cells(2, 2).Formula = newID
ApExcel.cells(3, 2).Formula = newPotencia
End If
ApExcel.cells(2, 3).Formula = "Habitación:"
ApExcel.cells(2, 4).Formula = newHabitacion
ApExcel.cells(3, 3).Formula = "Tipo:"
ApExcel.cells(3, 4).Formula = newTipo
If NumPuntos <> 0 Then
'si son datos normales se crean 2 columnas, la primera
'contiene fechas y la segunda valores
For i = 1 To NumPuntos
ApExcel.cells(i + 3, 1).NumberFormat = "d/m/yyyy"
ApExcel.cells(i + 3, 1) = EjeX(i)
If TipoGrafica Then
'Se trata de consumos y se formatean los datos como tal
ApExcel.cells(i + 3, 2).NumberFormat = "#,##0.00"
ApExcel.cells(i + 3, 2) = EjeY(i)
Else
'se trata de tiempos y se formatean los datos como tal
ApExcel.cells(i + 3, 2).NumberFormat = "[h]:mm:ss;@"
segundo = EjeY(i)
hora = segundo \ 3600
minuto = (segundo Mod 3600) \ 60
segundo = (segundo Mod 3600) Mod 60
-254-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ApExcel.cells(i
+
ANEXOS
3,
2)
=
TimeSerial(hora,
minuto,
segundo)
End If
Next
Else
'si son datos por franja horaria, la primera columan
'alberga las franjas, de 0 a 23 y la segunda valores
For i = 0 To 23
ApExcel.cells(i + 4, 1) = i
ApExcel.cells(i + 4, 2).NumberFormat = "#,##0.00"
ApExcel.cells(i + 4, 2) = EjeY(i)
Next
End If
'Se finaliza el control sobre el objeto
Set ApExcel = Nothing
End Sub
'Procedimiento que permite imprimir la grafica
Private Sub CmdImprimir_Click()
Chart1.EditCopy
Set Picture1.Picture = Clipboard.GetData
Printer.PaintPicture Picture1.Picture, 0, 0
End Sub
'Al cargar el formulario se actualiza la informacion
'del dispositivo que seva a visualizar
Private Sub Form_Load()
Me.Top = 0
Me.Left = 0
If newID = 0 Then
Text1(0).Text = "---"
Text1(1).Text = "---"
Else
Text1(0).Text = newID
Text1(1).Text = newPotencia
End If
Text1(2).Text = newHabitacion
Text1(3).Text = newTipo
End Sub
'Al descargar formulario restablecemos el
conocido
Private Sub Form_Unload(Cancel As Integer)
newID = 1
End Sub
Código 10. Código del formulario Frm_grafica.
-255-
sistema
a
un
punto
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.11 Frm_ConfigFTP.frm
Figura 98. Vista del formulario Frm_ConfigFTP.
Este formulario sirve para que el usuario configure su cuenta en un servidor FTP
para poder utilizar la opción de control a través de internet, utilizando un servidor que
interprete los comandos de código ASP 3.0 y bases de datos de Microsoft Acces 97
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
Label1(0)
Label1(1)
Label1(2)
Label1(3)
Text1(0)
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Datos”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
Ftp:
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Usuario:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Clave:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Carpeta destino”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
-256-
ftp://
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Text1(1)
Text1(2)
Text1(3)
Command1(0)
Command1(1)
ANEXOS
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“Guardar”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Cancelar”
TAREA ASOCIADA
Command1_Click(Index As Integer)
Tabla 30. Resumen de los controles del formulario Frm_ConfigFTP.
A continuación se muestra el código de programa de este formulario:
'Al pulsar el boton "Guardar" se alamcenan los datos de
'configuracion del servidor FTP en un ficehro de texto
'de no ser así se cancela la operacion
Private Sub Command1_Click(Index As Integer)
newFtp = "ftp://" & Text1(0).Text
newUsuario = Text1(1).Text
newClave = Text1(2).Text
newDestino = Text1(3).Text
Select Case Index
Case 0: ConfigurarFTP 'boton "Guardar"
End Select
Unload Me
End Sub
Código 11. Código del formulario Frm_ConfigFTP.
-257-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.12 Frm_Internet.frm
Figura 99. Vista del formulario Frm_Internet.
A través de este formulario se gestiona la comunicación entre la aplicación y un
servidor, préviamente configurado por el usuario. Se puede comprobar el estado de la
comunicación para cada transferencia y gestiona los errores de transferencia de tal forma
que si se produce un número crítico de errores en la transmisión, la aplicación apagará
todos los dispositivos.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
TxtData
TxtArch
CmdIniciar
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Estado de la transferencia”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“Iniciar”
TAREA ASOCIADA
CmdIniciar_Click()
-258-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
CmdCancelar
Frame2
Label3(0)
Label3(1)
Label3(2)
Label3(3)
Timer1
Inet1
ANEXOS
TIPO
Botón de comando.
CAPTION
“Cancelar”
TAREA ASOCIADA
Cmd Cancelar_Click()
TIPO
Marco qeu engloba controles comunes.
CAPTION
“Información FTP”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“URL”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“USUARIO”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“CLAVE”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“DESTINO”
TAREA ASOCIADA
-
TIPO
Temporizador
INTERVALO
1000
TAREA ASOCIADA
Timer1_Timer()
TIPO
Control de internet.
PROPIEDADES
Protocolo : icFTP
Puerto: 21
TAREA ASOCIADA
Inet1_StateChanged(ByVal State As
Integer)
Tabla 31. Resumen de los controles del formulario Frm_Internet.
A continuación se muestra el código de programa de este formulario:
'Declaracion de variables globales del formulario
Private seguir, ErrorConexion As Integer
Private iniciar, ErrorProducido As Boolean
'Esta accion cancela el control mediante internet
Private Sub CmdCancelar_Click()
'Si el proceso lo permite descarga el formulario
If iniciar = True Then
Timer1.Enabled = False
Unload Me
Else
-259-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'de no ser así avisa al usuario
MsgBox "Espere a que se descargue
"Atencion"
End If
End Sub
el
archivo",
vbOKOnly,
'Esta accion inicia el proceso de intercambio de ficheros entre el
servidor
'y el ordenador
Private Sub CmdIniciar_Click()
If iniciar = True Then
'Copiar de base de datos de info97.mdb, la tabla de informacion
personal
Call CopiaTablas(App.path & "\bases\info97.mdb", DirectorioWindows
& "\PFC\info.mdb", "Personal")
SubirArchivo
End If
End Sub
'Inicializa los elementos necesarios, como son la informacio
'del servidor, del usuario e inicia la conexión
Private Sub Form_Load()
Dim nfic As Integer
Dim fichero As String
fichero = App.path & "\ConfigInet.dat"
'Si existe el fichero de configuracion se toman los datos
'que contiene
If ExisteFichero(fichero) Then
nfic = FreeFile
Open fichero For Input As nfic
Input #nfic, newFtp, newUsuario, newClave, newDestino
Close #nfic
Label3(0).Caption = "Url: " & newFtp
Label3(1).Caption = "Usuario: " & newUsuario
Label3(2).Caption = "Clave: " & newClave
Label3(3).Caption = "Destino: " & newDestino
iniciar = True
With Inet1
.URL = newFtp
.UserName = newUsuario
.Password = newClave
End With
Else
'de no ser así, se invita al usuario a rellenarlos
Frm_ConfigFTP.Show
iniciar = False
End If
End Sub
'Esta accion determina el cambio en los estados de la
'comunicacion con el servidor
Private Sub Inet1_StateChanged(ByVal State As Integer)
-260-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Timer1.Enabled = False
iniciar = False
Select Case State
Case 1:
TxtData.Text = "Buscando"
Case 2:
TxtData.Text = "Encontrado"
Case 3:
TxtData.Text = "Conectando..."
Case 4:
TxtData.Text = "Conectado!!"
Case 10:
'Se produce un error de conexion, este error
'se acumula y cuando llega a 10 errores
'se apagan los dispositivos para evitar
'accidentes
TxtData.Text = "Desconectado"
ErrorProducido = True
Do Until Inet1.StillExecuting = False
DoEvents
Loop
ErrorConexion = ErrorConexion + 1
Timer1.Enabled = True
iniciar = True
TxtArch.Text = "Intentando iniciar..."
Case 11:
TxtData.Text = "Error de conexion"
ErrorProducido = True
Do Until Inet1.StillExecuting = False
DoEvents
Loop
ErrorConexion = ErrorConexion + 1
Timer1.Enabled = True
iniciar = True
TxtArch.Text = "Recuperando de error..."
Case 12:
'En este caso la transferencia se ha completado, se
'alterna el envio de datos con la receopción de estos
'para que el usuario sea consciente de la realidad
'de los cambios
If ErrorProducido Then
'si se produce un error de conexion se vuelve a enviar
'la información al servidor
SubirArchivo
seguir = 1
ErrorProducido = False
Else
seguir = seguir + 1
If seguir = 2 Then
'Se copian las tablas "iluminacion" y "electrodomesticos"
'de la base de datos bajada a la que usa la aplicacion
-261-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Call
CopiaTablas(DirectorioWindows
&
"\PFC\info2.mdb",
App.path & "\bases\info97.mdb", "Iluminacion")
Call
CopiaTablas(DirectorioWindows
&
"\PFC\info2.mdb",
App.path & "\bases\info97.mdb", "Electrodomesticos")
Else
'Se sube el archivo
SubirArchivo
seguir = 1
End If
'Se habilita el temporizador para que a los 20 segs
'se envie el archivo, así se reduce el trafico de datos
Timer1.Enabled = True
iniciar = True
End If
End Select
'Si se producen 10 errores de conexión, el sistema apaga
'todos los dispositivos por si acaso
If ErrorConexion = 10 Then
ApagarDispositivos
End
End If
End Sub
'Esta accion sube el archivo al servidor
Private Sub SubirArchivo()
Dim origen0 As String
'Se copian las tablas que contienen informacion para el
'usuario.
Call CopiaTablas(App.path & "\bases\info97.mdb", DirectorioWindows
& "\PFC\info.mdb", "Iluminacion")
Call CopiaTablas(App.path & "\bases\info97.mdb", DirectorioWindows
& "\PFC\info.mdb", "Electrodomesticos")
TxtArch.Text = "Enviando info.mdb..."
'se evita que haya una bajada de archivos simultanea
Timer1.Enabled = False
'Se envia el archivo
With Inet1
origen0 = DirectorioWindows & "\PFC\info.mdb " & newDestino &
"info.mdb"
.Execute , "SEND " & origen0
End With
End Sub
'Esta accion baja el archivos del servidor
Private Sub BajarArchivo()
Dim origen As String
'Se borra el archivo existente en el PC del usuario
BorrarFichero (DirectorioWindows & "\PFC\info2.mdb")
TxtArch.Text = "Recibiendo info2.mdb..."
'Se baja el archivo
With Inet1
origen
=
newDestino
&
"info.mdb
"
&
DirectorioWindows
"\PFC\info2.mdb"
-262-
&
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
.Execute , "GET " & origen
End With
'Se deshabilita el temporizador para uqe no se solapen acciones
'de bajada y subida
Timer1.Enabled = False
End Sub
'Temporizador que espacia en tiempo la recepcion de
'archivos y el envio
Private Sub Timer1_Timer()
Static acumulado As Integer
acumulado = acumulado + 1
Label2.Caption = "Tiempo: " & 20 - acumulado
If acumulado = 20 Then
'Cuando pasan 20 segundos se baja el archivo
BajarArchivo
acumulado = 0
End If
End Sub
Código 12. Código del formulario Frm_Internet.
6.1.13 Frm_ConfigUsuario.frm
Figura 100. Vista del formulario Frm_ConfigUsuario.
-263-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Este formulario permite al usuario configurar usuarios que puedan desbloquear la
aplicación o acceder al control mediante Internet.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
Label1(0)
Label1(1)
Label1(2)
Label1(3)
Text1(0)
Text1(1)
Text1(2)
Text1(3)
Command1(0)
Command1(2)
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Información
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Nombre:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Apellidos”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Usuario:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Clave:”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“<”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
-264-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Command1(1)
Command1(3)
Command1(4)
Command1(5)
Label2(0)
Label2(1)
Label2(2)
Label2(3)
Text2(0)
Text2(1)
Text2(2)
Text2(3)
ANEXOS
CAPTION
“>”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Actualizar”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Nuevo”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Eliminar”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Salir”
TAREA ASOCIADA
Command1_Click(Index As Integer)
TIPO
Etiqueta.
CAPTION
“Nombre:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Apellidos:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Usuario:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Clave:”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
-265-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Command2(0)
Command2(1)
ANEXOS
TIPO
Botón de comando.
CAPTION
“OK”
TAREA ASOCIADA
Command2_Click(Index As Integer)
TIPO
Botón de comando.
CAPTION
“Cancelar”
TAREA ASOCIADA
Command2_Click(Index As Integer)
Tabla 32. Resumen de los controles del formulario Frm_ConfigUsuario.
A continuación se muestra el código de programa de este formulario:
'Inicializacion de variables globales del formulario
Private db As Database
Private rs As Recordset
'Al pulsar cualquiera de los botones del formulario
'se ejecuta la accion correspondiente
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0: rs.MovePrevious
'Si se pulsa el boton < se muestra el usuario anterior
If rs.BOF Then rs.MoveFirst
MostrarInfo
Case 1: rs.MoveNext
'Si se pulsa el boton > se muestra el usuario siguiente
If rs.EOF Then rs.MoveLast
MostrarInfo
Case 2:
'Si se pulsa el boton Actualizar, se modifica la infor.
'de dicho usuario
If Text1(2).Text <> "" Or Text1(3).Text <> "" Then
With rs
.Edit
.Fields("Nombre") = Text1(0).Text
.Fields("Apellidos") = Text1(1).Text
.Fields("usuario") = Text1(2).Text
.Fields("password") = Text1(3).Text
.Update
End With
Else
MsgBox "Faltan o el usuario o la clave", vbOKOnly
vbCritical, "Error en parametros"
End If
Case 3: Me.Height = 6000
'si se pulsa el boton Nuevo, se muestra parte del formulario
'para la introduccion de nueva informacion de usuario
Text2(0).SetFocus
Case 4:
'Si se pulsa el boton Eliminar, se elimina la informacion
-266-
+
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'almacenada del usuario actual
respuesta = MsgBox("Se dispone a borrar un usuario de la
base de datos", vbOKCancel, "Información del programa")
If respuesta = 1 Then
If rs.RecordCount > 1 Then
rs.Delete
rs.MoveFirst
MostrarInfo
Else
'Si sólo existe ese usuairo no se podrá eliminar
'y aparacera un mensaje de error
MsgBox "No se puede eliminar el único usuario que hay
creado", vbOKOnly + vbInformation, "Atención!"
End If
End If
Case 5: Unload Me
'Si se pulsa el boton Salir, se descargará el formulario
End Select
End Sub
'Con este comando se introduce o desestima
'la informacion para un nuevo usuario
Private Sub Command2_Click(Index As Integer)
Select Case Index
Case 0:
'se se pulsa el boton OK, se almacena
'un nuevo usuario
If Text2(2).Text <> "" Or Text2(3).Text <> "" Then
With rs
.AddNew
.Fields("Nombre") = Text2(0).Text
.Fields("Apellidos") = Text2(1).Text
.Fields("usuario") = Text2(2).Text
.Fields("password") = Text2(3).Text
.Update
End With
Me.Height = 3200
Else
'si falta informacion se muestra un mensaje de error
MsgBox "Faltan o el usuario o la clave", vbOKOnly
vbCritical, "Error en parametros"
End If
Case 1: Me.Height = 3200
'Si se puela el boton cancelar no se almacena la inforamcion
End Select
Command1(1).SetFocus
End Sub
'Procedimiento que inicializa parámetros del formulario
Private Sub Form_Load()
Me.Height = 3200
sPathBase = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(sPathBase)
-267-
+
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Set rs = db.OpenRecordset("SELECT
usuario", dbOpenDynaset)
MostrarInfo
End Sub
*
FROM
Personal
'Este procedimiento muestra la información del usuario
'seleccionado
Private Sub MostrarInfo()
With rs
'se comprueba que los datos pedidos existan
If .Fields("Nombre") <> "" Then
Text1(0).Text = .Fields("Nombre")
Else
Text1(0).Text = ""
End If
If .Fields("Apellidos") <> "" Then
Text1(1).Text = .Fields("Apellidos")
Else
Text1(1).Text = ""
End If
Text1(2).Text = .Fields("usuario")
Text1(3).Text = .Fields("password")
End With
End Sub
'Al descargar el formulario se desvinculan las variables
'de la base de datos
Private Sub Form_Unload(Cancel As Integer)
Set rs = Nothing
Set db = Nothing
End Sub
Código 13. Código del formulario Frm_ConfigUsuario.
6.1.14 Frm_Desbloquear.frm
Figura 101. Vista del formulario Frm_Desbloquear.
-268-
Order
by
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Cuando se bloquea la apliacción, aparece este formulario que permite a los usuarios
autorizados desbloquearla y acceder así al resto de las operaciones de la aplicación.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
Label1(0)
Label1(1)
Text1(0)
Text1(1)
CmdDesbloquear
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Información Usuario”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Usuario:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Clave:”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“Desbloquear”
TAREA ASOCIADA
CmdDesbloquear_Click()
Tabla 33. Resumen de los controles del formulario Frm_Desbloquear.
A continuación se muestra el código de programa de este formulario:
'Declaracion de variables globales del formulario
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As
Long, ByVal bRevert As Long) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA"
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long,
ByVal wIDNewItem As Long, ByVal lpString As Any) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As
Long) As Long
Private Const MF_BYCOMMAND = &H0&
Private Const MF_ENABLED = &H0&
Private Const MF_GRAYED = &H1&
Private Const SC_CLOSE = &HF060&
-269-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Private Sub Form_Load()
' Deshabilitar el botón de cerrar el formulario
Dim hMenu As Long
'
hMenu = GetSystemMenu(hWnd, 0)
' Deshabilitar el menú cerrar del formulario
Call ModifyMenu(hMenu, SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED, -10,
"Close")
'
End Sub
'Procedimiento que verifica la informacion
'introducida con la de la base de datos
Private Sub CmdDesbloquear_Click()
Dim usuario, clave, path As String
Dim salir As Boolean
salir = False
usuario = Text1(0).Text
clave = Text1(1).Text
path = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(path)
Set rs = db.OpenRecordset("SELECT * FROM Personal ORDER by ID",
dbOpenDynaset)
rs.MoveFirst
salir = False
While (Not rs.EOF) And (Not salir)
If usuario = rs.Fields("usuario") Then
salir = True
End If
If salir = False Then rs.MoveNext
Wend
If salir Then
If clave = rs.Fields("password") Then
'Si ha encontrado el usuario y la clave es correcta
'desbloquea el equipo
MsgBox rs.Fields("Nombre") & " " & rs.Fields("Apellidos"),
vbOKOnly, "Usuario correcto"
MDIRaiz.Enabled = True
Unload Me
Else
'de no ser así, indica que alguno de los datos
'no es correcto mediante un mensaje de error
MsgBox "Clave incorrecta", vbOKOnly + vbExclamation, "Error"
End If
Else
MsgBox "Usuario incorrecto", vbOKOnly + vbExclamation, "Error"
End If
End Sub
Código 14. Código del formulario Frm_Desbloquear.
-270-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.15 Frm_Adquirir_Mapa.frm
Figura 102. Vista del formulario Frm_Adquirir_mapa.
Este formulario se utiliza para adquirir un plano que el usuario debe poseer
préviamente. Este plano puede presentarse como archivo de imagen JPG, GIF o BMP.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
Imagen
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Plano”
TAREA ASOCIADA
-
TIPO
Imagen.
CAPTION
-
TAREA ASOCIADA
-
-271-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
cpicArchivo
CmdAbrir
CmdOK
CmdCancelar
ANEXOS
TIPO
Dialogo del sistema.
CAPTION
-
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“...”
TAREA ASOCIADA
CmdAbrir_Click()
TIPO
Botón de comando.
CAPTION
“OK”
TAREA ASOCIADA
Cmd OK_Click()
TIPO
Botón de comando.
CAPTION
“Cancelar”
TAREA ASOCIADA
CmdCancelar_Click()
Tabla 34. Resumen de los controles del formulario Frm_Adquirir_Mapa.
A continuación se muestra el código de programa de este formulario:
'Declaracion de variables globales del formulario
Private RutaImagen As String
'Procedimiento que abre una shell de windows para seleccionar un
'fichero de imagen, ya sea jpg, bmp o gif.
Private Sub Cmd_Abrir_Click()
Dim path As String
On Error Resume Next
With cpicArchivo
.DialogTitle = "Abrir Base de Datos"
.Filter
=
"Imagen
JPG(*.jpg)|*.jpg|Imagen
BMP(*.bmp)|*.bmp|Imagen GIF(*.gif)|*.gif"
.FilterIndex = 1
.ShowOpen
If Dir(.FileName, vbArchive) = "" Then
'si no hay nada seleccionado
MsgBox
"
El
archivo
no
fué
encontrado
....",
vbInformation, "Aviso"
Exit Sub
End If
'Se guarda la ruta y se carga la imagen
RutaImagen = .FileName
Imagen.Picture = LoadPicture(RutaImagen)
Imagen.Stretch = True
End With
CmdOK.SetFocus
End Sub
'Descarga el formulario
-272-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Private Sub CmdCancelar_Click()
Unload Me
End Sub
'Guarda la imagen seleccionada como imagen bmp
'en un path conocido por el resto del programa
Private Sub CmdOK_Click()
If RutaImagen <> "" Then
SavePicture Imagen, App.path & "\plano.bmp"
Unload Me
Else
'si no hay ruta valida sale un mensage de error
MsgBox "Falta la imagen de plano", vbOKOnly, "Atencion, faltan
parametros"
End If
End Sub
'Inicializa el formulario
Private Sub Form_Load()
'Posiciona el formulario nada más cargarse, es para su mejor
'visualizacion
Me.Top = 0
End Sub
Código 15. Código del formulario Frm_Adquirir_Mapa.
-273-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.16 Frm_Config_Mapa.frm
Figura 103. Vista del formulario Frm_Config_Mapa.
Este formulario se encarga de asociar un punto del plano, elegido por el usuario, con
el elemnto que se trara de ubicar en el plano. Además proporciona información de las
coordenadas del plano adquirido con anterioridad.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
Imagen
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Plano”
TAREA ASOCIADA
-
TIPO
Imagen.
CAPTION
-
TAREA ASOCIADA
-
-274-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Label1(0)
Label1(1)
Text1(0)
Text1(1)
CmdCancelar
ANEXOS
TIPO
Etiqueta.
CAPTION
“X:”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Y:”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Cuadro de texto.
CAPTION
“”
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“Cancelar”
TAREA ASOCIADA
CmdCancelar_Click()
Tabla 35. Resumen de los controles del formulario Frm_Config_Mapa.
A continuación se muestra el código de programa de este formulario:
'Si se cancela se descarga el formulario
Private Sub CmdCancelar_Click()
Unload Me
End Sub
'Al cargar el formulario se carga la imagen
'del plano de la casa, si no existe da el mensaje de error
'y se descarga el formulario
Private Sub Form_Load()
If ExisteFichero(App.path & "\plano.bmp") Then
Imagen.Picture = LoadPicture(App.path & "\plano.bmp")
Imagen.Stretch = True
'Me.Height = Imagen.Picture.Height
'Me.Width = Imagen.Picture.Width
Else
MsgBox "Imposible encontrar plano de la casa, por favor elija la
opcion adquirir plano", vbOKOnly + vbCritical, "Error en carda de
parametros"
Unload Me
End If
End Sub
'Al pulsar con cualquier boton sobre la imagen se guardan las
'coordenadas de ese punto en el registro de la base de datos
-275-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'indicada anteriormente
Private Sub Imagen_MouseDown(boton As Integer, mayús As Integer, X
As Single, Y As Single)
Set db = OpenDatabase(App.path & "\bases\info97.mdb")
If TipoInformacion = 0 Then
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Where ID=" &
newID, dbOpenDynaset)
Else
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos Where
ID=" & newID, dbOpenDynaset)
End If
'Pregunta al usuario si se desea guardar el punto
respuesta
=
MsgBox("¿Desea
guardar
este
punto
para
dicho
dispositivo?", vbOKCancel, "Guardar Punto")
If respuesta = vbOK Then
rs.Edit
rs.Fields("X") = X
rs.Fields("Y") = Y
rs.Update
Me.Hide
End If
Set rs = Nothing
Set db = Nothing
End Sub
'Con cada movimiento del raton muestra las coordenadas por donde se
'mueve el usuario
Private Sub Imagen_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Text1(0).Text = X
Text1(1).Text = Y
End Sub
Código 16. Código del formulario Frm_Config_Mapa.
-276-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.17 Frm_Mostrar_Mapa.frm
Figura 104. Vista del formulario Frm_Mostrar_Mapa.
Este formulario, aparte de mostrar el mapa adquirido, muestra las posiciones
asignadas por el susario ac ada elemento y su estado, mediante iconos identificativos de si
está pagado, encendido y, si procede, en modo ahorro de energía.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
Frame1
Image1(0..num_dispositivos)
PROPIEDADES
VALOR
TIPO
Marco que reune comandos relacionados.
CAPTION
“Plano”
TAREA ASOCIADA
-
TIPO
Imagen.
CAPTION
-
TAREA ASOCIADA
-
-277-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
CmdCambiar
CmdCancelar
ANEXOS
TIPO
Botón de comando.
CAPTION
“Ver Electrodomésticos” o “Ver
Iluminación”
TAREA ASOCIADA
CmdCambiar_Click()
TIPO
Botón de comando.
CAPTION
“Cancelar”
TAREA ASOCIADA
CmdCancelar_Click()
Tabla 36. Resumen de los controles del formulario Frm_Mostrar_Mapa.
A continuación se muestra el código de programa de este formulario:
'Declaracion de variables globales del formulario
'Variable que sirve apra determinar en que posicion
'del array de imagenes se carga la imagen del plano
Private indice As Integer
'Al cancelar, se descarga el formulario
Private Sub CmdCancelar_Click()
Unload Me
End Sub
'Al cargar el formulario se determina si existe el plano
'de la casa, si existe se actualiza la informacion de las
'luminarias en el mapa, de lo contrario se da un mensaje
'de error y se descarga el formulario
Private Sub Form_Load()
Unload Frm_Electrodomesticos
Unload Frm_Estado
Me.Top = 0
If ExisteFichero(App.path & "\plano.bmp") Then
ActualizarMapa
If TipoInformacion = 0 Then
Me.Caption = "Iluminación"
CmdCambiar.Caption = "Ver Electrodomésticos"
Else
Me.Caption = "Electrodomésticos"
CmdCambiar.Caption = "Ver Iluminación"
End If
Else
MsgBox "Imposible encontrar plano de la casa, por favor elija la
opcion adquirir plano", vbOKOnly + vbCritical, "Error en carda de
parametros"
Unload Me
End If
End Sub
'Al pulsar cobre una de las imagenes que no sean el plano en si
-278-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'se busca en la base de datos su estado
Private Sub Image1_Click(Index As Integer)
If Index <> indice Then
Set db = OpenDatabase(App.path & "\bases\info97.mdb")
If TipoInformacion = 0 Then
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion where
ID=" & Index, dbOpenDynaset)
Else
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos
where ID=" & Index, dbOpenDynaset)
End If
With rs
.Edit
'si está encendida, se apaga
If .Fields("Estado") = True Then
If TipoInformacion = 0 And .Fields("BajoConsumo") = True
Then
If .Fields("BajoEstado") = False Then
.Fields("BajoEstado") = True
Else
.Fields("BajoEstado") = False
.Fields("Estado") = False
End If
Else
.Fields("Estado") = False
End If
Else
'y a la inversa
.Fields("Estado") = True
End If
'se actualiza el registro
.Update
End With
Set rs = Nothing
Set db = Nothing
'para ver los datos correctamente, se descarga
'y carga el formulario
Unload Frm_Mostrar_Mapa
Load Frm_Mostrar_Mapa
End If
End Sub
Private Sub ActualizarMapa()
'se ajusta la posicion inicial del formulario
Frm_Mostrar_Mapa.Top = 0
Frm_Mostrar_Mapa.Left = 0
'se abre al base de datos
Set db = OpenDatabase(App.path & "\bases\info97.mdb")
If TipoInformacion = 0 Then
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
Else
-279-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos
Order by ID", dbOpenDynaset)
End If
With rs
.MoveFirst
'Mientras haya registros en la base de datos
While Not .EOF
'si se produce un error se salta a la siguiente instruccion
On Error Resume Next
'se descargan als imagenes cargadas anteriormente
Unload Image1(.Fields("ID"))
'Almacemnamos el mayor indice disponible en
'la base de datos
If .Fields("ID") > indice Then indice = .Fields("ID")
'Si la ID es diferetnte de 0
If .Fields("X") <> 0 Then
'Se carga la imagen en la posicion del array
'que concuerde con su ID
Load Image1(.Fields("ID"))
Image1(.Fields("ID")).ToolTipText = .Fields("Tipo")
'se posiciona en funcion de los datos de coordenadas
'almacenados en la base de datos con un pequeño ajuste
Image1(.Fields("ID")).Left = .Fields("X") - 70
Image1(.Fields("ID")).Top = .Fields("Y") + 200
'Si la luminaria esta encendida se carga la imagen
'de una bombilla encendida
If .Fields("Estado") = True Then
If TipoInformacion Then
Image1(.Fields("ID")) = imgPicPow.Picture
Else
If
.Fields("BajoConsumo")
=
True
And
.Fields("BajoEstado") = True Then
Image1(.Fields("ID")) = MDIRaiz.imgPicBajo.Picture
Else
Image1(.Fields("ID")) = MDIRaiz.imgPic.Picture
End If
End If
Else
'de lo contrario se carga la imagen de una
'bombilla apagada
If TipoInformacion Then
Image1(.Fields("ID")) = imgAltPicPow.Picture
Else
Image1(.Fields("ID")) = MDIRaiz.imgAltPic.Picture
End If
End If
'que sea visible y que la imagen se ajuste
'al cuadro de imagen definido en las dimensiones
Image1(.Fields("ID")).Stretch = True
Image1(.Fields("ID")).Visible = True
End If
.MoveNext
-280-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Wend
End With
'Una vez recorridos todos los registros de la base
'de datos, se procede a cargar la imagen del plano
'en una nueva posicion del array de imagenes
indice = indice + 1
Load Image1(indice)
Image1(indice) = LoadPicture(App.path & "\plano.bmp")
'se fija la posicion inicial
Image1(indice).Left = 120
Image1(indice).Top = 240
'las dimensiones
Image1(indice).Height = 6255
Image1(indice).Width = 8655
'que sea visible y que la imagen se ajuste
'al cuadro de imagen definido en las dimensiones
Image1(indice).Stretch = True
Image1(indice).Visible = True
Set rs = Nothing
Set db = Nothing
End Sub
'Al pulsar el boton se cambia el tipo de visualización
'si se estaba visualizando el plano de las luminarias
'se pasará a visualizar el plano de electrodomésticos
'y a la inversa
Private Sub CmdCambiar_Click()
If TipoInformacion = 0 Then
TipoInformacion = 1
Else
TipoInformacion = 0
End If
Unload Me
Load Me
End Sub
Código 17. Código del formulario Frm_Mostrar_Mapa.
-281-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.18 Frm_Acerca.frm
Figura 105. Vista del formulario Frm_Acerca.
Este formulario muestra información referenta a la aplicación, tal y como se puede
observar en la figura 105. Además, permite visualizar la información del sistema del
ordenador del usuario.
A continuación se muestra una tabla resumen de los controles de este formulario:
CONTROL
PicIcon
lblTitulo
lblVersion
PROPIEDADES
VALOR
TIPO
Imagen.
CAPTION
-
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“PFC”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Versión 1.0”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Aplicación destinada al control de las
luminarias y electrodomésticos en el
entorno acotado de una vivienda.”
TAREA ASOCIADA
-
lblDescripcion
-282-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
lblPFC
lblAutor
lblProfesion
lblInstitucion
Line1(1)
cmdOK
ANEXOS
TIPO
Etiqueta.
CAPTION
“Aplicación resultado del proyecto de
final de carrera.”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Autor: José Luis Pelegrí Santamaría”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Ingeniero Técnico Industrial en
Electrónica Industrial”
TAREA ASOCIADA
-
TIPO
Etiqueta.
CAPTION
“Escola Tècnica Superior d'Enginyeria
(URV- Tarragona)”
TAREA ASOCIADA
-
TIPO
Línea.
CAPTION
-
TAREA ASOCIADA
-
TIPO
Botón de comando.
CAPTION
“Aceptar”
TAREA ASOCIADA
cmdSysInfo
TIPO
Botón de comando.
CAPTION
“Info. del sistema...”
TAREA ASOCIADA
Tabla 37. Resumen de los controles del formulario Frm_Acerca.
A continuación se muestra el código de programa de este formulario:
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
-283-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
' 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
' Número de 32 bits
Const
Const
Const
Const
gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location"
gREGVALSYSINFOLOC = "MSINFO"
gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO"
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
Private Sub CmdOK_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Caption = "Acerca de " & App.Title
lblVersion.Caption = "Versión " & App.Major & "." & App.Minor &
"." & App.Revision
lblTitulo.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 sólo ruta del programa de Info. del sistema a
partir del Registro...
ElseIf
GetKeyValue(HKEY_LOCAL_MACHINE,
gREGKEYSYSINFOLOC,
gREGVALSYSINFOLOC, SysInfoPath) Then
-284-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
' Validar la existencia de versión 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 información 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
' Código 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
Dim tmpVal As String
' Almacenamiento temporal para un valor de clave de Registro
Dim KeyValSize As Long
' Tamaño 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 tamaño de variable
'------------------------------------------------------------
-285-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
' 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) Then
' Win95 agregar cadena terminada en valor nulo...
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, sólo se va a extraer la cadena
End If
'-----------------------------------------------------------' Determinar tipo de valor de clave para conversión...
'-----------------------------------------------------------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 carácter a carácter
Next
KeyVal = Format$("&h" + KeyVal)
' Convertir Double Word a cadena
End Select
GetKeyValue = True
' Se ha devuelto correctamente
rc = RegCloseKey(hKey)
' Cerrar clave de Registro
Exit Function
' Salir
GetKeyError:
' Borrar después de que se produzca un error...
KeyVal = ""
' Establecer valor a cadena vacía
GetKeyValue = False
' Fallo de retorno
rc = RegCloseKey(hKey)
' Cerrar clave de Registro
End Function
Código 18. Código del formulario Frm_Acerca.
-286-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.1.19 Frm_Ayuda.frm
Figura 106. Vista del formulario Frm_Ayuda.
Este formulario sirve para lanzar la ayuda en formato chm. A continuación se
muestra el código de programa de este formulario:
'Option Explicit
'Este formulario carga la ayuda en formato chm
Private Sub Form_Load()
hWndAyudaHTML = Me.hWnd
End Sub
Código 19. Código del formulario Frm_Ayuda.
6.1.20 Variables
Este módulo es el utilizado para declarar las variable globales y los tipos
estructurados que se utilizan para generar registros.
A continuación se muestra el código fuente de este módulo:
Option Explicit
'Declaracion de variables globales para pasar información
'al resto de la aplicacion
Global TipoInformacion As Integer '0 se refiere a iluminacion, 1 se
refiere a electrodomesticos
Global newReferencia, newMarca, newHabitacion, newTipo As String
Global newID, newPotencia, newHoras, newEstado, newDescripcion As
Integer
Global newPrecio As Currency
-287-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Global
Global
Global
Global
Global
Global
Global
Global
ANEXOS
newBajoConsumo, newBajoEstado As Boolean
newBajoPotencia As Integer
newFtp, newUsuario, newClave, newDestino As String
ActualizarReg, ActualizarEst, BorrarReg, NuevoReg As Integer
PosicionFichero, PosicionID As Integer
BaseCargada As Boolean
Titulo As String
TipoGrafica As Integer '1 consumos, 0 tiempos
'Definicion de tipos
Type tiluminacion
ID As Integer
fecha As Date
Potencia As Integer
tiempo As Integer
T(0 To 23) As Integer
BajoPotencia As Integer
BajoTiempo As Integer
BajoT(0 To 23) As Integer
End Type
Type tprogramacion
ID As Integer
Datos As Boolean
Lunes(1 To 4) As Variant '7 dias de la semana
Martes(1 To 4) As Variant
Miercoles(1 To 4) As Variant
Jueves(1 To 4) As Variant
Viernes(1 To 4) As Variant
Sabado(1 To 4) As Variant
Domingo(1 To 4) As Variant
End Type
'y por cada dia si
'esta la programcion activada
'hora de inicio y
'hora final
Código 20. Código del módulo Variables.
6.1.21 AyudaHTML.bas
Este módulo contiene las funciones y llamadas al sistema necesarias para poder
mostrar el archivo de ayuda en formato chm (ayuda html) que utiliza la plataforma
Windows comúnmente.
A continuación se muestra el código fuente de este módulo:
-288-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Option Explicit
Public hWndAyudaHTML As Long
Const MAX_CAMPOS = 2
Public Enum HH_COMMAND
HH_DISPLAY_TOPIC = &H0
HH_HELP_FINDER = &H0 ' WinHelp equivalent
HH_DISPLAY_TOC = &H1 ' not currently implemented
HH_DISPLAY_INDEX = &H2 ' not currently implemented
HH_DISPLAY_SEARCH = &H3 ' not currently implemented
HH_SET_WIN_TYPE = &H4
HH_GET_WIN_TYPE = &H5
HH_GET_WIN_HANDLE = &H6
HH_GET_INFO_TYPES = &H7 ' not currently implemented
HH_SET_INFO_TYPES = &H8 ' not currently implemented
HH_SYNC = &H9
HH_ADD_NAV_UI = &HA ' not currently implemented
HH_ADD_BUTTON = &HB ' not currently implemented
HH_GETBROWSER_APP = &HC ' not currently implemented
HH_KEYWORD_LOOKUP = &HD
HH_DISPLAY_TEXT_POPUP = &HE ' display string resource id or text in
a popup window
HH_HELP_CONTEXT = &HF ' display mapped numeric value in dwData
HH_TP_HELP_CONTEXTMENU ' Text pop-up help,
' similar to WinHelp's HELP_CONTEXTMENU
HH_TP_HELP_WM_HELP = &H11 ' text pop-up help, similar to WinHelp's
HELP_WM_HELP.
HH_CLOSE_ALL = &H12 ' close all windows opened directly or
indirectly by the caller
HH_ALINK_LOOKUP = &H13 ' ALink version of HH_KEYWORD_LOOKUP
End Enum
Public Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA"
_
(ByVal hwndCaller As Long, ByVal pszFile As String, _
ByVal uCommand As HH_COMMAND, ByVal dwData As Long) As Long
Código 21. Código del módulo AyudaHTML.
6.1.22 Funciones.bas
Este mñodulo contiene todas las funciones que son utilizadas en diversos
formularios. Actúa a modo de librería de donde se extraer funciones para aplicarlas sobre
datos externos, inicializar la aplicación o generar bases de datos y gráficas. Cada función
esta comentada debidamente, por lo que su cometido se puede averiguar en pocos
instantes.
A continuación se muestra el código fuente de este módulo:
-289-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Declare
Function
GetWindowsDirectory
Lib
"Kernel32"
Alias
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As
Long
'Funciones publicas
Public Sub inicializarficheros()
Dim CarpetaBases, CarpetaIlum, CarpetaElectro, CarpetaAsp As
String
CarpetaBases = App.path & "\bases"
CarpetaIlum = App.path & "\ilum"
CarpetaElectro = App.path & "\electro"
CarpetaAsp = App.path & "\asp"
CarpetaWindows = DirectorioWindows & "\PFC"
'Determinar si las carpetas existen, de no ser así las creará
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FolderExists(CarpetaBases) = False Then
'MsgBox CarpetaBases & " existe", vbOKOnly, "Carpetas"
MkDir CarpetaBases
End If
If fs.FolderExists(CarpetaIlum) = False Then
'MsgBox CarpetaIlum & " existe", vbOKOnly, "Carpetas"
MkDir CarpetaIlum
End If
If fs.FolderExists(CarpetaElectro) = False Then
'MsgBox CarpetaElectro & " existe", vbOKOnly, "Carpetas"
MkDir CarpetaElectro
End If
If fs.FolderExists(CarpetaAsp) = False Then
'MsgBox CarpetaAsp & " existe", vbOKOnly, "Carpetas"
MkDir CarpetaAsp
'Crear archivos .asp y .inc
End If
If fs.FolderExists(CarpetaWindows) = False Then
'MsgBox CarpetaAsp & " existe", vbOKOnly, "Carpetas"
MkDir CarpetaWindows
'Crear archivos .asp y .inc
End If
Set fs = Nothing
'Determinar si los ficheros indispensables para la
'ejecución de la aplicación existen, de no ser así
'se crearán
If ExisteFichero(App.path & "\bases\info97.mdb") = False Then
CrearBaseDatos (App.path & "\bases\info97.mdb")
'crear un registro de control para la prevención de
'errores
Set db = OpenDatabase(App.path & "\bases\info97.mdb")
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
rs.AddNew
rs.Fields("ID") = 0
rs.Update
-290-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos Order
by ID", dbOpenDynaset)
rs.AddNew
rs.Fields("ID") = 0
rs.Update
Set rs = db.OpenRecordset("SELECT * FROM Personal Order by ID",
dbOpenDynaset)
rs.AddNew
rs.Fields("Nombre") = "Administrador"
rs.Fields("usuario") = "Admin"
rs.Fields("password") = "Admin"
rs.Update
End If
If ExisteFichero(DirectorioWindows & "\PFC\info.mdb") = False Then
CrearBaseDatos (DirectorioWindows & "\PFC\info.mdb")
End If
End Sub
'Funcion que determina si el fichero en cuestion existe
'Y evitar así error
Function ExisteFichero(unFichero As String) As Boolean
On Local Error Resume Next
'unFichero = "internet.dat"
ExisteFichero = Len(Dir$(unFichero))
If Err Then
ExisteFichero = False
End If
Err = 0
End Function
'Funcion que crea un fichero de control para
'la actividad sobre la base de datos
Function CrearFichero(fichero) As Boolean
On Local Error Resume Next
'Asignamos un fichero libre y abrimos en
numfic = FreeFile
Open App.path & "\" & fichero For Output
CrearFichero = Len(Dir$(numfic))
'Si se produce un error al crear fichero
If Err Then
CrearFichero = False
End If
Err = 0
Erase numfic
End Function
delimitar
nuevo fichero
As numfic
devolvemos falso
'Funcion que almacena los datos de la configuracion FTP para bajar
'y subir ficheros al servidor
Public Sub ConfigurarFTP()
Dim fichero As String
Dim nfic As Integer
'Indica que fichero contendrá la cofiguracion de FTP
-291-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
fichero = "ConfigInet.dat"
nfic = FreeFile
Open App.path & "\" & fichero For Output As nfic
'Escribimos la direccion del FTP, el usuario, la
carpeta de destino
Write #nfic, newFtp, newUsuario, newClave, newDestino
Close #nfic
End Sub
clave
y
la
'Funcion que dado una cadena de entrada como nombre de fichero
Public Sub BorrarFichero(ByVal fichero As String)
'Si el fichero que vamos a borrar existe
'se borrará
On Error Resume Next
If ExisteFichero(fichero) Then
Kill fichero
End If
End Sub
'Crea una base de datos en blanco con los campos y tablas
'necesarias para iniciar la aplicacion
Public Sub CrearBaseDatos(PathBase As String)
'Crear la base de datos indicada
'
Dim db As Database
Dim Fd As Field
Dim Tb As New TableDef
'Definir una Tabla
Dim Idx As New Index
'Para crear un índice
Dim i As Integer
'Crear base de datos, idioma español y para la versión 2.0 del
Jet de Access
Set db = CreateDatabase(PathBase, dbLangGeneral, dbVersion30)
'Primero la tabla de Iluminacion
Set Tb = db.CreateTableDef("Iluminacion")
'Vamos a crear cada uno de los campos
Set Fd = Tb.CreateField("ID", dbLong)
'Ahora vamos a asignar las propiedades de contador, etc.
Tb.Fields.Append Fd
'El resto de los campos
Set Fd = Tb.CreateField("Habitación", dbText, 25)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Tipo", dbText, 30)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Estado", dbBoolean)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Referencia", dbText, 10)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Marca", dbText, 15)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Potencia", dbLong)
Tb.Fields.Append Fd
-292-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Set Fd = Tb.CreateField("Precio", dbCurrency)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Horas de vida", dbLong)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("X", dbLong)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Y", dbLong)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("BajoConsumo", dbBoolean)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("BajoPotencia", dbLong)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("BajoEstado", dbBoolean)
Tb.Fields.Append Fd
'Creamos un índice con el ID
Idx.Name = "PrimaryKey"
Idx.Unique = True
Idx.Primary = True
Idx.Fields = "ID"
Tb.Indexes.Append Idx
'Añadimos la tabla a la base
db.TableDefs.Append Tb
'
'Creamos la otra tabla: Anotaciones
Set Tb = db.CreateTableDef("Electrodomesticos")
'El campo ID, es el contador, etc.
Set Fd = Tb.CreateField("ID", dbLong)
'Fd.Attributes
=
dbAutoIncrField
Or
dbUpdatableField
dbFixedField
Tb.Fields.Append Fd
'El resto de los campos
Set Fd = Tb.CreateField("Habitación", dbText, 25)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Tipo", dbText, 30)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Estado", dbBoolean)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Potencia", dbLong)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Precio", dbCurrency)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Observaciones", dbMemo)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("X", dbLong)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Y", dbLong)
Tb.Fields.Append Fd
'Creamos un índice con el ID
Set Idx = Nothing
'Quitar la referencia anterior
Idx.Name = "PrimaryKey"
Idx.Unique = True
Idx.Primary = True
-293-
Or
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Idx.Fields = "ID"
Tb.Indexes.Append Idx
'Añadimos la segunda tabla a la base
db.TableDefs.Append Tb
'Se crea la tabla Personal
Set Tb = db.CreateTableDef("Personal")
'Vamos a crear cada uno de los campos
Set Fd = Tb.CreateField("ID", dbLong)
'Ahora vamos a asignar las propiedades de contador, etc.
Fd.Attributes
=
dbAutoIncrField
'Or
dbUpdatableField
dbFixedField
Tb.Fields.Append Fd
'El resto de los campos
Set Fd = Tb.CreateField("Nombre", dbText, 20)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("Apellidos", dbText, 30)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("usuario", dbText, 10)
Tb.Fields.Append Fd
Set Fd = Tb.CreateField("password", dbText, 10)
Tb.Fields.Append Fd
'Creamos un índice con el ID
Set Idx = Nothing
Idx.Name = "PrimaryKey"
Idx.Unique = True
Idx.Primary = True
Idx.Fields = "ID"
Tb.Indexes.Append Idx
'Añadimos la tabla a la base
db.TableDefs.Append Tb
'
'Cerramos la base
db.Close
'MsgBox
vbInformation
End Sub
"Nueva
base
de
datos
"
&
sBase
&
"
Or
creada.",
'Copia la tabla indicada de la base de datos que usa el
'programa pricipal a la base de datos que usa el control
'mediante internet. De la misma manera copia las modificaciones
'desde internet a la base del programa principal
Public Sub CopiaTablas(strOrigen As String, strDestino As String,
TablaOrigen As String)
Dim dbOrigen As Database, dbDestino As Database
Dim tdOrigen As TableDef, tdDestino As TableDef
Dim fdOrigen As Field, fdDestino As Field
Dim idOrigen As Index, idDestino As Index
Dim prOrigen As Property, prDestino As Properties
Dim i As Long
'abrir origen y destino
Set dbOrigen = OpenDatabase(strOrigen, False)
Set dbDestino = OpenDatabase(strDestino, True)
-294-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'hay propiedades que no se pueden copiar como el value de los
campos, etc
On Error Resume Next
'para cada tabla de origen
For Each tdOrigen In dbOrigen.TableDefs
If tdOrigen.Name = TablaOrigen Then
If
(tdOrigen.Attributes
And
(dbSystemObject
Or
dbHiddenObject)) = 0 Then
'si la tabla no es del sistema
'mirar si existe la tabla en destino
For Each tdDestino In dbDestino.TableDefs
If tdDestino.Name = tdOrigen.Name Then
'si existe la borro
dbDestino.TableDefs.Delete tdDestino.Name
Exit For
End If
Next
'creo la tabla en el destino
Set tdDestino = dbDestino.CreateTableDef(tdOrigen.Name,
tdOrigen.Attributes, tdOrigen.SourceTableName, tdOrigen.Connect)
'le añado los campos
For Each fdOrigen In tdOrigen.Fields
Set fdDestino = tdDestino.CreateField(fdOrigen.Name,
fdOrigen.Type, fdOrigen.Size)
'copio las propiedades del campo
For Each prOrigen In fdOrigen.Properties
fdDestino.Properties(prOrigen.Name)
=
fdOrigen.Properties(prOrigen.Name)
Next
tdDestino.Fields.Append fdDestino
Next
'le añado los indices
For Each idOrigen In tdOrigen.Indexes
Set idDestino = tdDestino.CreateIndex(idOrigen.Name)
'añado los campos al índice
For Each fdOrigen In idOrigen.Fields
Set
fdDestino
=
idDestino.CreateField(fdOrigen.Name)
idDestino.Fields.Append fdDestino
Next
'copio las propiedades del índice
For Each prOrigen In idDestino.Properties
idDestino.Properties(prOrigen.Name)
=
idOrigen.Properties(prOrigen.Name)
Next
tdDestino.Indexes.Append idDestino
Next
dbDestino.TableDefs.Append tdDestino
'copio los datos de la tabla, si se solicitó
dbOrigen.Execute ("INSERT INTO " + tdDestino.Name + " IN
'" + strDestino + "' SELECT * FROM " + tdDestino.Name)
End If
-295-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End If
Next
'cerrar origen y destino
dbOrigen.Close
dbDestino.Close
Set dbOrigen = Nothing: Set
Set tdOrigen = Nothing: Set
Set fdOrigen = Nothing: Set
Set idOrigen = Nothing: Set
Set prOrigen = Nothing: Set
End Sub
dbDestino
tdDestino
fdDestino
idDestino
prDestino
=
=
=
=
=
Nothing
Nothing
Nothing
Nothing
Nothing
'Funcion que pasa los parametros del formulario a las variables
globales que
'se usan para ajustar los cambios en los elemetos de la base de
datos
Public Sub PasarParametros(ByVal ref As String, ByVal marca As
String, ByVal pot As String, ByVal preu As String, ByVal horas As String,
ByVal bajtipo As String, ByVal bajpot As String)
newReferencia = ref
newMarca = marca
newPotencia = Int(Mid(pot, 1, Len(pot) - 2))
newHoras = Int(Mid(horas, 1, Len(horas) - 2))
newPrecio = Int(Mid(preu, 1, Len(preu) - 2))
If bajtipo = "Disponible" Then
newBajoConsumo = True
newBajoPotencia = Int(Mid(pot, 1, Len(bajpot) - 2))
Else
newBajoConsumo = False
newBajoPotencia = 0
End If
End Sub
'Funcion que indica en que franja horaria está el usuario
ajustar
'a las franjas horarias, util para almaecnar dichos datos
Function SituacionHoraria() As Integer
Dim tiempo, tmp As String
Dim situacion As String
Dim hora As Integer
'Se obtiene la hora actual del sistema
tiempo = Time
'Se determina si la hora pasa de las 9
tmp = Left(tiempo, 1)
If ((tmp = "1") Or (tmp = "2")) Then
tmp = Mid(tiempo, 2, 1)
If (tmp = ":") Then
'si no es así se coge una única cifra
hora = Int(Left(tiempo, 1))
Else
'si pasa de las 10 se cogen 2 cifras
hora = Int(Left(tiempo, 2))
End If
-296-
para
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Else
hora = Int(Left(tiempo, 1))
End If
'Se determina si el formato horario es PM/am O 24H
tmp = UCase(Mid(tiempo, Len(tiempo) - 1, 2))
'si el formato es PM/AM se ajusta para tener 24H
If (tmp = "PM") Then
If hora <> 12 Then
hora = hora + 12
End If
End If
If (tmp = "AM") Then
If hora = 12 Then
hora = hora - 12
End If
End If
SituacionHoraria = hora
End Function
'Este procedimiento alamcena los datos obtenidos en la base
'de datos del programa principal en un archivo de registros
'que almacena los datos para cada dia de funcionamiento
Public Sub Guardar(ByVal TipoAparato As Integer)
Dim ilumin As tiluminacion
Dim ilumin2 As tiluminacion
Dim Dia As Date
Dim db As Database
Dim rs As Recordset
Dim NomFic As String
Dim posicion As Integer
'Se conecta el programa con la base de datos
sPathBase = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(sPathBase)
If TipoAparato = 0 Then
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
Else
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos Order
by ID", dbOpenDynaset)
End If
On Error GoTo fin
Dia = Date
With rs
'Se determina si el registro concuerda con el dia de hoy
'para esto recorremos todos los registros de la base
'de datos y guardamos en una variable los datos extraidos
.MoveFirst
While Not .EOF
If .Fields("ID") <> 0 Then
posicion = 1
nfic = FreeFile
-297-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
If TipoAparato = 0 Then
NomFic = App.path & "\ilum\ilu" & .Fields("ID") & ".dat"
Else
NomFic = App.path & "\electro\ele" & .Fields("ID") & ".dat"
End If
Open NomFic For Random As nfic Len = Len(ilumin)
While Not EOF(nfic)
'con los datos extraidos comparamos por fechas y determinamos
si
'hay concordancia de fechas
Get #nfic, posicion, ilumin2
If Not EOF(nfic) Then posicion = posicion + 1
If ilumin2.fecha = Dia Then
iguales = 1
GoTo salida
End If
Wend
'posicion = 1
salida:
'Si concuerda se actualizan los datos existenes
'con los nuevos datos
If iguales = 1 Then
posicion = posicion - 1
ilumin.fecha = ilumin2.fecha
ilumin.Potencia = .Fields("Potencia")
If .Fields("BajoConsumo") = True Then ilumin.BajoPotencia =
.Fields("BajoPotencia")
If (.Fields("Estado") = True) Then
If (TipoAparato = 0) And (.Fields("BajoConsumo") = True)
Then
If .Fields("BajoEstado") = True Then
ilumin.BajoTiempo = ilumin2.BajoTiempo + 5
ilumin.tiempo = ilumin2.tiempo
For i = 0 To 23
ilumin.T(i) = ilumin2.T(i)
If i = Hour(Time) Then 'If i = SituacionHoraria Then
ilumin.BajoT(i) = ilumin2.BajoT(i) + 5
Else
ilumin.BajoT(i) = ilumin2.BajoT(i)
End If
Next
Else
ilumin.tiempo = ilumin2.tiempo + 5
ilumin.BajoTiempo = ilumin2.BajoTiempo
For i = 0 To 23
ilumin.BajoT(i) = ilumin2.BajoT(i)
If i = Hour(Time) Then 'If i = SituacionHoraria Then
ilumin.T(i) = ilumin2.T(i) + 5
Else
ilumin.T(i) = ilumin2.T(i)
End If
Next
End If
-298-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Else
ilumin.tiempo = ilumin2.tiempo + 5
For i = 0 To 23
If i = Hour(Time) Then 'If i = SituacionHoraria Then
'Si se accede a un registro cuya situacion horaria es
la misma
'y el estado del dispositivo es en funcionamientose
actualizan
'los datos de tiempo en funcionamiento y de consumo,
como los
'datos
se
guardan
cada
5
segundos,
incrementar
el
valor en 5
ilumin.T(i) = ilumin2.T(i) + 5
Else
'De no ser así se deja tal y como está
ilumin.T(i) = ilumin2.T(i)
End If
Next
End If
Else
'''''''''''''''''''''''''''''''''''''''''''''''''
'Si está apagado
ilumin.BajoTiempo = ilumin2.BajoTiempo
ilumin.tiempo = ilumin2.tiempo
For i = 0 To 23
ilumin.BajoT(i) = ilumin2.BajoT(i)
ilumin.T(i) = ilumin2.T(i)
Next
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''
Else
'Si no concuerdan las fechas se insertan los nuevos datos
'inicializar las variables
For i = 0 To 23
ilumin.T(i) = 0
ilumin.BajoT(i) = 0
Next
ilumin.BajoTiempo = 0
ilumin.ID = .Fields("ID")
ilumin.fecha = Dia
ilumin.Potencia = .Fields("Potencia")
If .Fields("BajoConsumo") = True Then ilumin.BajoPotencia =
.Fields("BajoPotencia")
If (.Fields("Estado") = True) Then
If (TipoAparato = 0) And (.Fields("BajoConsumo") = True)
Then
If .Fields("BajoEstado") = True Then
ilumin.BajoTiempo = 5
ilumin.BajoT(Hour(Time)) = 5
ilumin.tiempo = 0
ilumin.T(Hour(Time)) = 0
Else
-299-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
ilumin.tiempo = 5
ilumin.T(Hour(Time)) = 5
ilumin.BajoTiempo = 0
ilumin.BajoT(Hour(Time)) = 0
End If
Else
'Si el dispositivo esta Encendido se implemetan
'los valores indicados
ilumin.tiempo = 5
ilumin.T(Hour(Time)) = 5
ilumin.BajoTiempo = 0
ilumin.BajoT(Hour(Time)) = 0
End If
Else
If (TipoAparato = 0) And (.Fields("BajoConsumo") = True)
Then
'sino, se ponen a 0
'If .Fields("BajoEstado") = False Then
ilumin.BajoTiempo = 0
ilumin.BajoT(Hour(Time)) = 0
'Else
ilumin.tiempo = 0
ilumin.T(Hour(Time)) = 0
'End If
Else
ilumin.tiempo = 0
ilumin.T(Hour(Time)) = 0
End If
End If
End If
iguales = 0
'Se actualiza o escribe el registro
Put #nfic, posicion, ilumin
Close #nfic
End If
.MoveNext
Wend
End With
fin:
End Sub
'Procedimiento que a partir de un fichero de texto realiza una
'interpretacion grafica de los datos contenidos en este,
'Estos datos se disponen en franjas horarias a modo de grafico
'de barras
Public Sub RealizarGraficaFranja(ByVal Titulo As String)
Dim nfic, i As Integer
Dim fecha As Date
Dim tiempo As Single
Dim EjeY(0 To 23)
nfic = FreeFile
If TipoInformacion = 0 Then
-300-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Open App.path & "\ilum\punts.dat" For Input As nfic
Else
Open App.path & "\electro\punts.dat" For Input As nfic
End If
'se abre el archivo que contiene los datos y se extraen los
'datos para las 24 franjas existentes (24H) y se almacenan
'en un vector
For i = 0 To 23
Input #nfic, i, tiempo
EjeY(i) = tiempo
Next i
Close #nfic
'Se visualiza el formulario de la grafica
Frm_Grafica.Show
Frm_Grafica.Frame1.Caption = Titulo
'Se establecen los parametros del control de grafica
With Frm_Grafica.Chart1
.chartType = VtChChartType2dBar
.ColumnCount = 1
.RowCount = 24
For Row = 1 To 24
.Column = 1
.Row = Row
.RowLabel = Row - 1 & " h"
.Data = EjeY(Row - 1)
Next Row
End With
End Sub
'Procedimiento que a partir de un fichero de texto realiza una
'interpretacion grafica de los datos contenidos en este,
'Estos datos se disponen en fechas a modo de grafico de lineas
Public Sub RealizarGrafica(ByVal Titulo As String)
Dim nfic, NumPuntos, i As Integer
Dim fecha As Date
Dim consumo, maximo As Single
Dim EjeY() As Single
Dim EjeX() As Date
nfic = FreeFile
'Se abre el fichero que contiene los datos y se extraen
If TipoInformacion = 0 Then
Open App.path & "\ilum\punts.dat" For Input As nfic
Else
Open App.path & "\electro\punts.dat" For Input As nfic
End If
Input #nfic, NumPuntos
'el primer dato es el numero de puntos que contendrá
'la gráfica, con este se redimensionan los vectores
'con los valores de los puntos (ejey) y de las fechas (ejex)
ReDim EjeY(1 To NumPuntos)
ReDim EjeX(1 To NumPuntos)
'Se almacenan los datos en orden
-301-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
For i = 1 To NumPuntos
Input #nfic, fecha
EjeX(i) = fecha
Input #nfic, consumo
EjeY(i) = consumo
Next i
Close #nfic
Frm_Grafica.Show
Frm_Grafica.Frame1.Caption = Titulo
'Se establecen los parametros para el control de grafica
With Frm_Grafica.Chart1
.chartType = VtChChartType2dLine
.ColumnCount = 1
.RowCount = NumPuntos
For Row = 1 To NumPuntos
.Column = 1
.Row = Row
.RowLabel = EjeX(Row)
.Data = EjeY(Row)
Next Row
End With
End Sub
'Este procedimiento determina a partir de una fecha inicial y una
fecha final
'el consumo y tiempo en funcionamiento de un dispositivo y escribe
los datos en un fichero de texto
'que posteriormente será utilizado por el entorno gráfico para crear
'una gráfica con los datos aportados
Public Sub DatosIndividuales(ByVal fechaini As Date, ByVal fechafin
As Date, ByVal ID As Integer, ByVal tipo As Integer)
Dim ilumin As tiluminacion
Dim nfic, numfic As Integer
Dim path As String
Dim puntos As Variant
nfic = FreeFile
'Se abre el fichero que contiene los registros del dispositivo
If TipoInformacion = 0 Then
path = App.path & "\ilum\ilu" & ID & ".dat"
Else
path = App.path & "\electro\ele" & ID & ".dat"
End If
Open path For Random As nfic Len = Len(ilumin)
numfic = FreeFile
'se crea un fichero donde se alamcenarán todos los puntos
If TipoInformacion = 0 Then
Open App.path & "\ilum\punts.dat" For Output As numfic
Else
Open App.path & "\electro\punts.dat" For Output As numfic
End If
'Determina el numero de puntos que se van a guardar
puntos = DateDiff("d", fechaini, fechafin)
puntos = puntos + 1
-302-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'Se escribe como priemr parametro del fichero con los puntos
'el numero total de puntos del que constará la grafica
Write #numfic, puntos
Close #nfic
Dia = fechaini
For i = 1 To puntos
'Para cada fecha se determina si había un valor diferente de 0
'de ser así se utiliza el valor del registro, si no, se almacena
'un 0
Open path For Random As nfic Len = Len(ilumin)
Get #nfic, , ilumin
While ((Dia <> ilumin.fecha) And (Not (EOF(nfic))))
Get #nfic, , ilumin
Wend
If EOF(nfic) Then
Write #numfic, Dia, 0
Else
If tipo = 0 Then 'tiempos
Write #numfic, Dia, ilumin.tiempo + ilumin.BajoTiempo
Else 'consumos
Write #numfic, Dia, CDec(ilumin.tiempo * 0.000277 *
ilumin.Potencia)
+
CDec(ilumin.BajoTiempo
*
0.000277
*
ilumin.BajoPotencia)
End If
End If
Close #nfic
'incrementa en 1 la fecha de comparacion
Dia = DateAdd("d", 1, Dia)
Next
'Se cierran los ficheros
Close #numfic
End Sub
'Este procedimiento determina a partir de una fecha inicial y una
fecha final
'el tiempo en funcionamiento o consumo de un dispositivo en las
diferentes franjas horarias del dia
'y escribe los datos en un fichero de texto que posteriormente será
utilizado
'por el entorno gráfico para crear una gráfica con los datos
aportados
Public Sub DatosIndividualesFranja(ByVal fechaini As Date, ByVal
fechafin As Date, ByVal ID As Integer, ByVal tipo As Integer)
Dim ilumin As tiluminacion
Dim nfic, numfic, puntos As Integer
Dim valores(0 To 23) As Single
Dim path As String
nfic = FreeFile
'Se abre el fichero de resgistros para la obtencion de datos
If TipoInformacion = 0 Then
path = App.path & "\ilum\ilu" & ID & ".dat"
Else
path = App.path & "\electro\ele" & ID & ".dat"
-303-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
End If
Close #nfic
Open path For Random As nfic Len = Len(ilumin)
'Se determina los datos validos que hay entre la fechas de
busqueda
While Not EOF(nfic)
Get #nfic, , ilumin
If (ilumin.fecha >= fechaini) And (ilumin.fecha <= fechafin)
Then
For i = 0 To 23
'Para cada registro válido almacenamos los valores que
contenga
'por franjas horarias
If tipo = 0 Then 'tiempos
valores(i) = valores(i) + ilumin.T(i) + ilumin.BajoT(i)
Else 'consumos
valores(i) = valores(i) + CDec(ilumin.T(i) * 0.000277 *
ilumin.Potencia) + CDec(ilumin.BajoT(i) * 0.000277 * ilumin.BajoPotencia)
End If
Next
End If
Wend
Close #nfic
numfic = FreeFile
'Se introducen los datos obtenidos en un fichero de texto
'que luego se utilizará para realizar la gráfica
If TipoInformacion = 0 Then
Open App.path & "\ilum\punts.dat" For Output As numfic
Else
Open App.path & "\electro\punts.dat" For Output As numfic
End If
For i = 0 To 23
Write #nfic, i, valores(i)
Next
'Se cierra el fichero
Close #numfic
End Sub
'Este procedimiento determina a partir de una fecha inicial y una
fecha final
'el consumo o tiempo de funcionamiento de todos los dispositivos y
escribe los datos en un fichero de texto
'que posteriormente será utilizado por el entorno gráfico para crear
'una gráfica con los datos aportados
Public Sub DatosComunes(ByVal fechaini As Date, ByVal fechafin As
Date, ByVal tipo As Integer)
Dim ilumin As tiluminacion
Dim nfic, puntos, dias, i, j As Integer
Dim ValoresID() As Integer
Dim valores()
Dim path, fichero As String
'Se determina el numero de registros que hay en la base de datos
-304-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
path = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(path)
If TipoInformacion = 0 Then
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
Else
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos Order
by ID", dbOpenDynaset)
End If
rs.MoveFirst
While Not rs.EOF
rs.MoveNext
Wend
'Redimensionamos la matriz de valores al numero total de
'de registros
ReDim ValoresID(1 To rs.RecordCount)
rs.MoveFirst
i = 1
'Se almacenan las ID's en orden dado que hay huecos y se
'necesitan las ID's exietentes para la veracidad de los
'datos
While Not rs.EOF
ValoresID(i) = rs.Fields("ID")
i = i + 1
rs.MoveNext
Wend
'Se redimensiona la matriz valores dependiendo del numero de dias
'entre las fechas de busqueda
dias = DateDiff("d", fechaini, fechafin) + 1
ReDim valores(1 To dias, 1 To 2)
'El primer valor es la fecha inicial de busqueda
valores(1, 1) = fechaini
'Para el resto de valores se van determinando fechas correlativas
For i = 2 To dias
valores(i, 1) = DateAdd("d", 1, valores(i - 1, 1))
Next
'Para todos los registros existentes abrimos su fichero de datos
'asociado
For i = 1 To rs.RecordCount
nfic = FreeFile
If TipoInformacion = 0 Then
path = App.path & "\ilum\ilu" & ValoresID(i) & ".dat"
Else
path = App.path & "\electro\ele" & ValoresID(i) & ".dat"
End If
'Para todos los dias se almacena la fecha y el valor
'acumulado de todos los dispositivos
For j = 1 To dias
Open path For Random As nfic Len = Len(ilumin)
While Not EOF(nfic)
Get #nfic, , ilumin
If ilumin.fecha = valores(j, 1) Then
-305-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
If tipo = 0 Then 'tiempos
valores(j,
2)
=
valores(j,
2)
+
ilumin.tiempo
ilumin.BajoTiempo
Else 'consumos
valores(j, 2) = valores(j, 2) + CDec(ilumin.tiempo
0.000277 * ilumin.Potencia) + CDec(ilumin.BajoTiempo * 0.000277
ilumin.BajoPotencia)
End If
End If
Wend
Close #nfic
Next
+
*
*
Next
Set rs = Nothing
nfic = FreeFile
'Se almacenan los datos en un fichero de texo
If TipoInformacion = 0 Then
Open App.path & "\ilum\punts.dat" For Output As nfic
Else
Open App.path & "\electro\punts.dat" For Output As nfic
End If
Write #nfic, dias
For i = 1 To dias
Write #nfic, valores(i, 1), valores(i, 2)
Next
Close #nfic
'Se ajustan los iguientes parametro para la correcta visualizacion
'en el formulario de grafica
newID = 0
newPotencia = 0
newHabitacion = "---"
newTipo = "---"
End Sub
'Este procedimiento determina a partir de una fecha inicial y una
fecha final
'el tiempo en funcionamiento o consumo de todos los dispositivos en
las diferentes franjas horarias del dia
'y escribe los datos en un fichero de texto que posteriormente será
utilizado
'por el entorno gráfico para crear una gráfica con los datos
aportados
Public Sub DatosComunesFranja(ByVal fechaini As Date, ByVal fechafin
As Date, ByVal tipo As Integer)
Dim ilumin As tiluminacion
Dim nfic, puntos, dias, i, j As Integer
Dim ValoresID() As Integer
Dim valores(0 To 23) As Variant
Dim path, fichero As String
'Se determina el numero total de registros de la base de datos
' y se redimensionba la matriz a este valor
path = App.path & "\bases\info97.mdb"
-306-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Set db = OpenDatabase(path)
If TipoInformacion = 0 Then
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by
ID", dbOpenDynaset)
Else
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos Order
by ID", dbOpenDynaset)
End If
rs.MoveFirst
While Not rs.EOF
rs.MoveNext
Wend
ReDim ValoresID(1 To rs.RecordCount)
'Se almacenan las ID's en orden dado que hay huecos y se
'necesitan las ID's exietentes para la veracidad de los
'datos
rs.MoveFirst
i = 1
While Not rs.EOF
ValoresID(i) = rs.Fields("ID")
i = i + 1
rs.MoveNext
Wend
'Para todos los registros existentes abrimos su fichero de datos
'asociado
For i = 1 To rs.RecordCount
nfic = FreeFile
If TipoInformacion = 0 Then
path = App.path & "\ilum\ilu" & ValoresID(i) & ".dat"
Else
path = App.path & "\electro\ele" & ValoresID(i) & ".dat"
End If
Open path For Random As nfic Len = Len(ilumin)
'Se determina los datos validos entre las fechas de busqueda
While Not EOF(nfic)
Get #nfic, , ilumin
If ((ilumin.fecha >= fechaini) And (ilumin.fecha <= fechafin))
Then
For j = 0 To 23
If tipo = 0 Then 'tiempos
valores(j) = valores(j) + ilumin.T(j) + ilumin.BajoT(j)
Else 'consumos
valores(j) = valores(j) + CDec(ilumin.T(j) * 0.000277 *
ilumin.Potencia) + CDec(ilumin.BajoT(j) * 0.000277 * ilumin.BajoPotencia)
End If
Next
End If
Wend
Close #nfic
Next
Set rs = Nothing
'Para todos los valores obtenidos almacenamos los datos
'en un fichero de texto
-307-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
nfic = FreeFile
If TipoInformacion = 0 Then
Open App.path & "\ilum\punts.dat" For Output As nfic
Else
Open App.path & "\electro\punts.dat" For Output As nfic
End If
For i = 0 To 23
Write #nfic, i, valores(i)
Next
Close #nfic
'Se ajustan los iguientes parametro para la correcta visualizacion
'en el formulario de grafica
newID = 0
newPotencia = 0
newHabitacion = "---"
newTipo = "---"
End Sub
Public Sub ApagarDispositivos()
Dim
Top_Estado,
Top_Electrodomesticos,
Left_Estado,
Left_electrodomesticos As Integer
Dim path As String
path = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(path)
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by ID",
dbOpenDynaset)
rs.MoveFirst
While Not rs.EOF
rs.Edit
rs.Fields("Estado") = False
rs.Update
rs.MoveNext
Wend
Set trs = db.OpenRecordset("SELECT * FROM Electrodomesticos Order by
ID", dbOpenDynaset)
trs.MoveFirst
While Not trs.EOF
trs.Edit
trs.Fields("Estado") = False
trs.Update
trs.MoveNext
Wend
Set db = Nothing
Set rs = Nothing
Set trs = Nothing
'Descargamos los formularios y los cargamos de nuevo
'para actualizar la informacion
Left_Estado = Frm_Estado.Left
Top_Estado = Frm_Estado.Top
Left_electrodomesticos = Frm_Electrodomesticos.Left
Top_Electrodomesticos = Frm_Electrodomesticos.Top
-308-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Unload Frm_Estado
Unload Frm_Electrodomesticos
Load Frm_Estado
Load Frm_Electrodomesticos
Frm_Estado.Left = Left_Estado
Frm_Estado.Top = Top_Estado
Frm_Electrodomesticos.Left = Left_electrodomesticos
Frm_Electrodomesticos.Top = Top_Electrodomesticos
End Sub
Public Function ComprobacionVida(ByVal ID As Integer) As Integer ',
ByVal horas As Integer)
Dim path As String
Dim nfic As Integer
Dim ilumin As tiluminacion
nfic = FreeFile
path = App.path & "\ilum\ilu" & ID & ".dat"
Open path For Random As nfic Len = Len(ilumin)
While Not EOF(nfic)
Get #nfic, , ilumin
suma = suma + ilumin.tiempo + ilumin.BajoTiempo
Wend
Close #nfic
ComprobacionVida = suma \ 3600
End Function
Public Function ValidarHoras(ByVal hora As String) As Boolean
Dim i As Integer
Dim temp As String
If Len(hora) <> 0 Then
If (Len(hora) <= 5) And (Asc(Mid(hora, 1, 1)) <= Asc("2")) Then
i = 2
While i <= Len(hora)
If Not ((Asc("0") <= Asc(Mid(hora, i, 1))) And (Asc(Mid(hora, i,
1)) <= Asc("9")) Or (Mid(hora, i, 1) = ":")) Then
ValidarHoras = False
MsgBox "Hora Incorrecta", vbOKOnly
i = 6
Else
ValidarHoras = True
End If
i = i + 1
Wend
Else
MsgBox "Hora Incorrecta", vbOKOnly
ValidarHoras = False
End If
End If
End Function
Public Function DirectorioWindows() As String
-309-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Dim WinDir As String
Dim Cadena As String
Dim ret As Long
Cadena = String$(300, Chr$(0))
ret = GetWindowsDirectory(Cadena, Len(Cadena))
DirectorioWindows = Left$(Cadena, ret)
'MsgBox DirectorioWindows, vbOKOnly
End Function
Public Sub ProgramadorIluminacion()
Dim total, nfic_i, nfic, salir As Integer
Dim programa As tprogramacion
Dim ValoresID() As Integer
Dim path, path_i As String
'Control de la programacion de las luminarias
'primero se determina el numero de registros y la ID de cada uno
de ellos
path = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(path)
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion Order by ID",
dbOpenDynaset)
rs.MoveFirst
While Not rs.EOF
rs.MoveNext
Wend
'Redimensionamos la matriz de valores al numero total de
'de registros
ReDim ValoresID(1 To rs.RecordCount)
rs.MoveFirst
i = 1
'Se almacenan las ID's en orden dado que hay huecos y se
'necesitan las ID's exietentes para la veracidad de los
'datos
While Not rs.EOF
ValoresID(i) = rs.Fields("ID")
i = i + 1
rs.MoveNext
Wend
total = rs.RecordCount
Set db = Nothing
Set rs = Nothing
nfic_i = FreeFile
path_i = App.path & "\ilum\programa.dat"
For i = 1 To total
Open path_i For Random As nfic_i Len = Len(programa)
While (Not EOF(nfic_i)) And (salir = 0)
Get #nfic_i, , programa
If programa.ID = ValoresID(i) Then salir = 1
-310-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Wend
If salir = 1 Then
salir = 0
'Mirar si hay algo programado para hoy
Select Case Weekday(Date, vbMonday)
Case
1:
Call
ComprobarEstado(0,
programa.ID,
programa.Lunes(1),
programa.Lunes(4),
programa.Lunes(2),
programa.Lunes(3))
Case
2:
Call
ComprobarEstado(0,
programa.ID,
programa.Martes(1),
programa.Martes(4),
programa.Martes(2),
programa.Martes(3))
Case
3:
Call
ComprobarEstado(0,
programa.ID,
programa.Miercoles(1),
programa.Miercoles(4),
programa.Miercoles(2),
programa.Miercoles(3))
Case
4:
Call
ComprobarEstado(0,
programa.ID,
programa.Jueves(1),
programa.Jueves(4),
programa.Jueves(2),
programa.Jueves(3))
Case
5:
Call
ComprobarEstado(0,
programa.ID,
programa.Viernes(1),
programa.Viernes(4),
programa.Viernes(2),
programa.Viernes(3))
Case
6:
Call
ComprobarEstado(0,
programa.ID,
programa.Sabado(1),
programa.Sabado(4),
programa.Sabado(2),
programa.Sabado(3))
Case
7:
Call
ComprobarEstado(0,
programa.ID,
programa.Domingo(1),
programa.Domingo(4),
programa.Domingo(2),
programa.Domingo(3))
End Select
End If
Close #nfic_i
Next
End Sub
Public Sub ProgramadorElectrodomesticos()
Dim total, nfic_e, nfic, salir As Integer
Dim programa As tprogramacion
Dim ValoresID() As Integer
Dim path, path_e As String
'Control de la programacion de los electrodomesticos
'primero se determina el numero de registros y la ID de cada uno
de ellos
path = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(path)
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos Order
by ID", dbOpenDynaset)
rs.MoveFirst
While Not rs.EOF
rs.MoveNext
Wend
'Redimensionamos la matriz de valores al numero total de
'de registros
ReDim ValoresID(1 To rs.RecordCount)
rs.MoveFirst
i = 1
-311-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'Se almacenan las ID's en orden dado que hay huecos y se
'necesitan las ID's exietentes para la veracidad de los
'datos
While Not rs.EOF
ValoresID(i) = rs.Fields("ID")
i = i + 1
rs.MoveNext
Wend
total = rs.RecordCount
Set db = Nothing
Set rs = Nothing
nfic_e = FreeFile
path_e = App.path & "\electro\programa.dat"
For i = 1 To total
Open path_e For Random As nfic_e Len = Len(programa)
While (Not EOF(nfic_e)) And (salir = 0)
Get #nfic_e, , programa
If programa.ID = ValoresID(i) Then salir = 1
Wend
If salir = 1 Then
salir = 0
'Mirar si hay algo programado para hoy
Select Case Weekday(Date, vbMonday)
Case
1:
Call
ComprobarEstado(1,
programa.ID,
programa.Lunes(1),
programa.Lunes(4),
programa.Lunes(2),
programa.Lunes(3))
Case
2:
Call
ComprobarEstado(1,
programa.ID,
programa.Martes(1),
programa.Martes(4),
programa.Martes(2),
programa.Martes(3))
Case
3:
Call
ComprobarEstado(1,
programa.ID,
programa.Miercoles(1),
programa.Miercoles(4),
programa.Miercoles(2),
programa.Miercoles(3))
Case
4:
Call
ComprobarEstado(1,
programa.ID,
programa.Jueves(1),
programa.Jueves(4),
programa.Jueves(2),
programa.Jueves(3))
Case
5:
Call
ComprobarEstado(1,
programa.ID,
programa.Viernes(1),
programa.Viernes(4),
programa.Viernes(2),
programa.Viernes(3))
Case
6:
Call
ComprobarEstado(1,
programa.ID,
programa.Sabado(1),
programa.Sabado(4),
programa.Sabado(2),
programa.Sabado(3))
Case
7:
Call
ComprobarEstado(1,
programa.ID,
programa.Domingo(1),
programa.Domingo(4),
programa.Domingo(2),
programa.Domingo(3))
End Select
End If
Close #nfic_e
Next
End Sub
Public Sub ComprobarEstado(ByVal tipo As Integer, ByVal ID As
Integer, ByVal Estado As Boolean, ByVal Ahorro As Boolean, ByVal
HoraInicio As String, ByVal HoraFin As String)
Dim path As String
-312-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
path = App.path & "\bases\info97.mdb"
Set db = OpenDatabase(path)
If tipo = 0 Then
Set rs = db.OpenRecordset("SELECT * FROM Iluminacion WHERE ID=" &
ID, dbOpenDynaset)
Else
Set rs = db.OpenRecordset("SELECT * FROM Electrodomesticos WHERE
ID=" & ID, dbOpenDynaset)
End If
If Estado = True Then
rs.Edit
If Time >= HoraInicio Then
If Time <= HoraFin Then
rs.Fields("Estado") = True
If tipo = 0 Then rs.Fields("BajoEstado") = Ahorro
Else
rs.Fields("Estado") = False
If tipo = 0 Then rs.Fields("BajoEstado") = False
End If
End If
rs.Update
End If
Set rs = Nothing
Set db = Nothing
End Sub
Código 22. Código del módulo Funciones.
Tarragona, a 7 de Abril de 2003-02-21
Firmado: José Luis Pelegrí
Ingeniero técnico industrial
Nº colegiado: 477234
-313-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
6.2
ANEXOS
CÓDIGO DE PÁGINAS EN ASP.
6.2.1 Estilo.css
Este código generará un estilo predefinido en las páginas web que contengan esta
hoja de estilo. A continuación se muestra el código fuente de la hoja de estilo:
BODY {
font-family: Arial;
font-size: 10pt;
color: black;
background-color: silver;
SCROLLBAR-FACE-COLOR: silver;
SCROLLBAR-HIGHLIGHT-COLOR: #000000;
SCROLLBAR-SHADOW-COLOR: black;
SCROLLBAR-3DLIGHT-COLOR: silver;
SCROLLBAR-ARROW-COLOR: #000000;
SCROLLBAR-TRACK-COLOR: silver;
SCROLLBAR-DARKSHADOW-COLOR: silver}
TD {
font-family: Arial;
font-size: 10pt;
color: black;}
A{text-decoration:none;color: #333333; font-weight: bold; }
A: visited{text-decoration:none; color: #333333; }
A: active{text-decoration:none; color: #333333; }
A: hover{text-decoration:underline; color: #333333; }
Código 23. Código fuente de la hoja de estilo estilo.css
-314-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.2.2 Index.html
Figura 107. Vista de la página index.html.
Esta es la página inicial para el acceso al control de la iluminación y de los
electrodomésticos. Se debe introducir el código de usuario y la clave y se enviarán estos
datos a la página login.asp, que se encarga de comprobar estos datos y, si son correctos,
abre las páginas web que controlan las luminarias y los electrodomésticos.
A continuación se muestra el código fuente de esta página:
<HTML>
<HEAD>
<TITLE>Verificacion de usuario</TITLE>
<link rel="stylesheet" type="text/css" href="estilo.css">
</HEAD>
<body>
Página de acceso al control de dispositivos, por favor introduzca
código de usuario y contraseña.
<p>
<center>
<img src=logo.gif>
<form action="login.asp" method="POST">
-315-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
<table border="0" width="40%">
<tr>
<td width="30%"><b>Nombre de usuario:</td>
<td
width="20%"><input
type="text"
name="UserID"
size="12"></td>
</tr>
<tr>
<td width="30%"><b>Clave de acceso:</td>
<td
width="20%"><input
type="password"
name="Password"
size="12"></td>
</tr>
</table>
<p><input type="submit" value="Entrar"> </p>
</form>
</center>
<p>
Proyecto de control de la iluminación de una vivienda mediante red
eléctrica y un PC.<br>
José Luis Pelegrí Santamaría<br>
Ingenieria Técnica Industrial en Electronica Industrial<br>
<b>E</b>scola <b>T</b>écnica <b>S</b>uperior d'<b>E</b>nginyeria<br>
<b>U</b>niversitat <b>R</b>ovira i <b>V</b>irgili<br>
<center><img src="logo_etse.jpg"></center>
</BODY>
</HTML>
Código 24. Código fuente de la página Index.html.
6.2.3 Adovbs.inc
En este código se declaran constantes de visual basic script, estas constantes se
incluirán en las páginas en asp. A continuación se muestra el código fuente de esta página:
<%
'---Const
Const
Const
Const
CursorTypeEnum Values ---adOpenForwardOnly = 0
adOpenKeyset = 1
adOpenDynamic = 2
adOpenStatic = 3
'---Const
Const
Const
Const
Const
Const
Const
CursorOptionEnum Values ---adHoldRecords = &H00000100
adMovePrevious = &H00000200
adAddNew = &H01000400
adDelete = &H01000800
adUpdate = &H01008000
adBookmark = &H00002000
adApproxPosition = &H00004000
-316-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Const adUpdateBatch = &H00010000
Const adResync = &H00020000
Const adNotify = &H00040000
'---Const
Const
Const
Const
LockTypeEnum Values ---adLockReadOnly = 1
adLockPessimistic = 2
adLockOptimistic = 3
adLockBatchOptimistic = 4
'---- ExecuteOptionEnum Values ---Const adRunAsync = &H00000010
'---Const
Const
Const
Const
ObjectStateEnum Values ---adStateClosed = &H00000000
adStateOpen = &H00000001
adStateConnecting = &H00000002
adStateExecuting = &H00000004
'---- CursorLocationEnum Values ---Const adUseServer = 2
Const adUseClient = 3
'---Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
DataTypeEnum Values ---adEmpty = 0
adTinyInt = 16
adSmallInt = 2
adInteger = 3
adBigInt = 20
adUnsignedTinyInt = 17
adUnsignedSmallInt = 18
adUnsignedInt = 19
adUnsignedBigInt = 21
adSingle = 4
adDouble = 5
adCurrency = 6
adDecimal = 14
adNumeric = 131
adBoolean = 11
adError = 10
adUserDefined = 132
adVariant = 12
adIDispatch = 9
adIUnknown = 13
adGUID = 72
adDate = 7
adDBDate = 133
adDBTime = 134
adDBTimeStamp = 135
adBSTR = 8
adChar = 129
adVarChar = 200
-317-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Const
Const
Const
Const
Const
Const
Const
adLongVarChar = 201
adWChar = 130
adVarWChar = 202
adLongVarWChar = 203
adBinary = 128
adVarBinary = 204
adLongVarBinary = 205
'---Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
FieldAttributeEnum Values ---adFldMayDefer = &H00000002
adFldUpdatable = &H00000004
adFldUnknownUpdatable = &H00000008
adFldFixed = &H00000010
adFldIsNullable = &H00000020
adFldMayBeNull = &H00000040
adFldLong = &H00000080
adFldRowID = &H00000100
adFldRowVersion = &H00000200
adFldCacheDeferred = &H00001000
'---Const
Const
Const
Const
EditModeEnum Values ---adEditNone = &H0000
adEditInProgress = &H0001
adEditAdd = &H0002
adEditDelete = &H0004
'---Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
RecordStatusEnum Values ---adRecOK = &H0000000
adRecNew = &H0000001
adRecModified = &H0000002
adRecDeleted = &H0000004
adRecUnmodified = &H0000008
adRecInvalid = &H0000010
adRecMultipleChanges = &H0000040
adRecPendingChanges = &H0000080
adRecCanceled = &H0000100
adRecCantRelease = &H0000400
adRecConcurrencyViolation = &H0000800
adRecIntegrityViolation = &H0001000
adRecMaxChangesExceeded = &H0002000
adRecObjectOpen = &H0004000
adRecOutOfMemory = &H0008000
adRecPermissionDenied = &H0010000
adRecSchemaViolation = &H0020000
adRecDBDeleted = &H0040000
'---- GetRowsOptionEnum Values ---Const adGetRowsRest = -1
'---- PositionEnum Values ---Const adPosUnknown = -1
Const adPosBOF = -2
-318-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Const adPosEOF = -3
'---Const
Const
Const
enum Values ---adBookmarkCurrent = 0
adBookmarkFirst = 1
adBookmarkLast = 2
'---- MarshalOptionsEnum Values ---Const adMarshalAll = 0
Const adMarshalModifiedOnly = 1
'---Const
Const
Const
AffectEnum Values ---adAffectCurrent = 1
adAffectGroup = 2
adAffectAll = 3
'---- FilterGroupEnum Values ---Const
Const
Const
Const
Const
adFilterNone = 0
adFilterPendingRecords = 1
adFilterAffectedRecords = 2
adFilterFetchedRecords = 3
adFilterPredicate = 4
'---- SearchDirection Values ---Const adSearchForward = 1
Const adSearchBackward = -1
'---Const
Const
Const
Const
ConnectPromptEnum Values ---adPromptAlways = 1
adPromptComplete = 2
adPromptCompleteRequired = 3
adPromptNever = 4
'---Const
Const
Const
Const
Const
Const
Const
Const
ConnectModeEnum Values ---adModeUnknown = 0
adModeRead = 1
adModeWrite = 2
adModeReadWrite = 3
adModeShareDenyRead = 4
adModeShareDenyWrite = 8
adModeShareExclusive = &Hc
adModeShareDenyNone = &H10
'---Const
Const
Const
Const
Const
Const
Const
IsolationLevelEnum Values ---adXactUnspecified = &Hffffffff
adXactChaos = &H00000010
adXactReadUncommitted = &H00000100
adXactBrowse = &H00000100
adXactCursorStability = &H00001000
adXactReadCommitted = &H00001000
adXactRepeatableRead = &H00010000
-319-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Const adXactSerializable = &H00100000
Const adXactIsolated = &H00100000
'---- XactAttributeEnum Values ---Const adXactCommitRetaining = &H00020000
Const adXactAbortRetaining = &H00040000
'---Const
Const
Const
Const
Const
PropertyAttributesEnum Values ---adPropNotSupported = &H0000
adPropRequired = &H0001
adPropOptional = &H0002
adPropRead = &H0200
adPropWrite = &H0400
'---Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
ErrorValueEnum Values ---adErrInvalidArgument = &Hbb9
adErrNoCurrentRecord = &Hbcd
adErrIllegalOperation = &Hc93
adErrInTransaction = &Hcae
adErrFeatureNotAvailable = &Hcb3
adErrItemNotFound = &Hcc1
adErrObjectInCollection = &Hd27
adErrObjectNotSet = &Hd5c
adErrDataConversion = &Hd5d
adErrObjectClosed = &He78
adErrObjectOpen = &He79
adErrProviderNotFound = &He7a
adErrBoundToCommand = &He7b
adErrInvalidParamInfo = &He7c
adErrInvalidConnection = &He7d
adErrStillExecuting = &He7f
adErrStillConnecting = &He81
'---Const
Const
Const
ParameterAttributesEnum Values ---adParamSigned = &H0010
adParamNullable = &H0040
adParamLong = &H0080
'---Const
Const
Const
Const
Const
ParameterDirectionEnum Values ---adParamUnknown = &H0000
adParamInput = &H0001
adParamOutput = &H0002
adParamInputOutput = &H0003
adParamReturnValue = &H0004
'---Const
Const
Const
Const
CommandTypeEnum Values ---adCmdUnknown = &H0008
adCmdText = &H0001
adCmdTable = &H0002
adCmdStoredProc = &H0004
'---- SchemaEnum Values ----
-320-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
Const
%>
ANEXOS
adSchemaProviderSpecific = -1
adSchemaAsserts = 0
adSchemaCatalogs = 1
adSchemaCharacterSets = 2
adSchemaCollations = 3
adSchemaColumns = 4
adSchemaCheckConstraints = 5
adSchemaConstraintColumnUsage = 6
adSchemaConstraintTableUsage = 7
adSchemaKeyColumnUsage = 8
adSchemaReferentialContraints = 9
adSchemaTableConstraints = 10
adSchemaColumnsDomainUsage = 11
adSchemaIndexes = 12
adSchemaColumnPrivileges = 13
adSchemaTablePrivileges = 14
adSchemaUsagePrivileges = 15
adSchemaProcedures = 16
adSchemaSchemata = 17
adSchemaSQLLanguages = 18
adSchemaStatistics = 19
adSchemaTables = 20
adSchemaTranslations = 21
adSchemaProviderTypes = 22
adSchemaViews = 23
adSchemaViewColumnUsage = 24
adSchemaViewTableUsage = 25
adSchemaProcedureParameters = 26
adSchemaForeignKeys = 27
adSchemaPrimaryKeys = 28
adSchemaProcedureColumns = 29
Código 25. Código fuente de la página adovbs.inc .
6.2.4 Login.asp
Esta página comprueba los datos obtenidos de la página de inicio con los existentes
en la base de datos y si son correctos muestra las páginas de cont rol de los dispositivos, de
lo contrario, devuelve al usuario a la página inicial.
A continuación se muestra el código fuente de esta página:
<%@LANGUAGE="VBSCRIPT"%>
<html>
<head><title>Control de dispositivos desde Internet</title>
-321-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
<link rel="stylesheet" type="text/css" href="estilo.css">
</head>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function MakeArrayday(size) {
this.length = size;
for(var i = 1; i <= size; i++) {
this[i] = "";
}
return this;
}
function MakeArraymonth(size) {
this.length = size;
for(var i = 1; i <= size; i++) {
this[i] = "";
}
return this;
}
function funClock() {
if (!document.layers && !document.all)
return;
var runTime = new Date();
var hours = runTime.getHours();
var minutes = runTime.getMinutes();
var seconds = runTime.getSeconds();
if (minutes <= 9) {
minutes = "0" + minutes;
}
if (seconds <= 9) {
seconds = "0" + seconds;
}
movingtime = ""+ hours + ":" + minutes + ":" + seconds + " ";
if (document.layers) {
document.layers.clock.document.write(movingtime);
document.layers.clock.document.close();
}
else if (document.all) {
clock.innerHTML = movingtime;
}
setTimeout("funClock()", 1000)
}
window.onload = funClock;
// End -->
</script>
</HEAD>
<body>
<%
-322-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
Dim strUsuario
strUsuario = "x"
if(Request.Form("UserID")
Request.Form("UserID")
Dim strPassword
strPassword = "1"
if(Request.Form("Password")
Request.Form("Password")
ANEXOS
<>
<>
"")
"")
then
strUsuario
=
then
strPassword
=
%> <%
Dim RS, oConn, sql
Dim path 'guardamos en la variable path lo que devuelve la función
'Es la ruta de acceso a la base de datos, puede ser modificada
'por usuarios avanzados
path = Server.MapPath("./info.mdb")
'Conectamos con la base de datos para despues aplicar
'sentencias SQL
Conex= "DRIVER={Microsoft Access Driver (*.mdb)};"
Conex= Conex & "DBQ=" & path
Set RS = Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection = Conex
RS.Source
=
"Select
*
from
Personal
where
'"+Replace(strUsuario,
"'",
"''")+
"'
AND
password
Replace(strPassword, "'", "''") + "'"
RS.CursorLocation = 3
'RS.LockType = 3
RS.Open
%>
<font color=#999999>
<%
If strUsuario <> "x" Then
If Not RS.EOF Then
Response.Write "Bienvenido " & RS.Fields("Nombre")
RS.Fields("Apellidos")
%>
<SCRIPT LANGUAGE="JavaScript1.2">
<!-- Begin
var months=new Array(13);
months[1]="Enero";
months[2]="Febrero";
months[3]="Marzo";
months[4]="Abril";
months[5]="Mayo";
months[6]="Junio";
months[7]="Julio";
months[8]="Agosto";
months[9]="Septiembre";
months[10]="Octubre";
-323-
=
&
usuario=
'"
+
"
"
&
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
months[11]="Noviembre";
months[12]="Diciembre";
var time=new Date();
var lmonth=months[time.getMonth() + 1];
var date=time.getDate();
var year=time.getYear();
if (year < 2000)
year = year + 1900;
document.write(", hoy es " + date + " de ");
document.write(lmonth + " de " + year);
// End -->
</SCRIPT>
, son las <span id=clock style="position:relative;"></span>
</font>
<p>
<b>ILUMINACION</b>
<iframe src="iluminacion.asp" width="100%" height=520></iframe>
<p>
<b>ELECTRODOMESTICOS</b>
<iframe
src="electrodomesticos.asp"
width="100%"
height=520></iframe>
<%
else
Response.Write "Usuario o contraseña incorrectos, vuelva a
probar"
%>
<center>
<a href="index.htm"> VOLVER </a>
</center>
<%
End If
End If
RS.Close
set RS=nothing
%>
</body>
</html>
Código 26. Código fuente de la página login.asp.
6.2.5 Iluminacion.asp
-324-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Figura 108. Vista de la página iluminacion.asp.
Esta página se encarga del control del estado de la iluminación de la vivienda, los
campos que se muestran son:
•
•
•
•
Ubicación del dispositivo.
Descripción del elemento que gestiona el dispositivo asociado.
El estado de los elementos.
Botón mediante el que se cambia el estado de las luminarias.
A continuación se muestra el código fuente de esta página:
<%@ Language=VBScript %>
<!-- #include file="adovbs.inc" -->
<html>
<head><title>Iluminación</title></head>
<body bgColor=silver>
<font face="arial" size=5>
<%
'Recibimos del formulario la dirección del movimiento y
-325-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
'lo guardamos en una variable de sesión para este usuario
xx=request.form("direccion")
if xx = "Atras" then
session("pagina")=session("pagina")-1
if session("pagina")< 1 then
session("pagina")=1 'evitamos el error por reload
end if
else
if xx="Adelante" then
session("pagina")=session("pagina")+1
else
session("pagina")=1 'primera pasada
'Si no ha sido llamdo ni "Adelante" ni "Atras"
'es que ha llegado desde una modificacion
if request.querystring("num")<> "" then
session("pagina")=int(request.querystring("num"))
end if
end if
end if
Dim RS, oConn, sql
Dim path 'guardamos en la variable path lo que devuelve la función
'Es la ruta de acceso a la base de datos, puede ser modificada
'por usuarios avanzados
path = Server.MapPath("./info.mdb")
'Conectamos con la base de datos para despues aplicar
'sentencias SQL
Conex= "DRIVER={Microsoft Access Driver (*.mdb)};"
Conex= Conex & "DBQ=" & path
Set RS = Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection = Conex
RS.Source = "Select * from Iluminacion order by Habitación"
RS.CursorLocation = 3
'RS.LockType = 3
RS.Open
'Numero de registros por pagina de resultados
RS.pagesize=8
if session("pagina")>RS.pagecount then
session("pagina")=RS.pagecount 'evitamos el error de reload
end if%>
<%
'situamos el cursor en el inicio de la pagina a mostrar y
'calculamos los valores de inicio y fin para mostrarlos en
'las cabeceras
RS.absolutepage=session("pagina")
inicio=1+(session("pagina")-1)*RS.pagesize
fin=inicio+7
if fin > RS.recordcount then
-326-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
fin =RS.recordcount
end if
%>
<table border="0" width="100%" bgcolor="#C0C0C0">
<td
align="left"
width="50%">Registros
<font
color="#FF0000"><%=inicio%>
</font>al
<font
color="#FF0000"><%=fin%></font>
de
un
total
de<font
color="#FF0000"><%=RS.recordcount%></font></td>
<td
align="right"
width="50%">Página
<font
color="#FF0000"><%=session("pagina")%></font>
de
<font
color="#FF0000"><%=RS.pagecount%></font></td>
</table>
<hr>
<table
BORDER="1"
CELLSPACING="0"
BORDERCOLOR="#000000"
CELLPADDING="0" width="100%">
<td
BGCOLOR="#C0C0C0"
align="center"
width="30%"><b>Habitación</b></td>
<td BGCOLOR="#C0C0C0" align="center"><b>Tipo</b></td>
<td
BGCOLOR="#C0C0C0"
align="center"
width="15%"><b>Estado</b></td>
<td
BGCOLOR="#C0C0C0"
align="center"
width="10%"
height=10><b>Acción</b></td>
<%
'Bucle para mostrar los registros
contador=0
Do While contador < RS.pagesize and NOT RS.EOF%>
<tr>
<td><%= RS("Habitación")%></td>
<td><%= RS("Tipo")%></td>
<td align="center"<%
if RS("Estado")=True then
if RS("BajoConsumo")=true and RS("BajoEstado")=True then
Response.Write " bgcolor=blue><Font color=white><b>Bajo
Consumo</b></font>"
else
Response.Write
"
bgcolor=green><Font
color=white><b>Encendido</b></font>"
end if
else
Response.Write
"
bgcolor=red><Font
color=white><b>Apagado</b></font>"
end if%></td>
<td align="center" valign="middle" ><%
Response.Write
"<FORM
ACTION=cambio.asp?pagina="
&
session("pagina") & " METHOD=post id=form1 name=form1 hidden><INPUT
value=" & RS("ID") & " name=IDreg SIZE=3 type=hidden><INPUT TYPE=submit
value=Cambiar hidden></form>" %></td>
</tr>
<% RS.MoveNext
contador=contador+1
Loop
%>
</table>
<center>
-327-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
<hr>
<!-- mostramos los botones de adelante y atras segun proceda -->
<table border="0" width="38%" height="1">
<tr><%if session("pagina")<> 1 then %>
<td width="50%" height="1" align="center">
<form method="POST" action="iluminacion.asp">
<p><input type="submit" value="Atras" name="direccion"></p>
</form>
</td><%end if%>
<%if session("pagina")< rs.pagecount then%>
<td width="50%" height="1" align="center">
<form method="POST" name="iluminacion.asp">
<p><input
type="submit"
value="Adelante"
name="direccion"></p>
</form>
</td>
<%end if%>
</tr>
</table>
</center>
<%
'Cerramos el RecordSet
RS.Close
%>
</body></html>
Código 27. Código fuente de la página iluminacion.asp .
6.2.6 Cambio.asp
Esta página gestiona los cambios de estado en los dispositivos accediendo a la base
de datos y cambiando el estado desde allí. A continuación se muestra el código fuente de
esta página:
<%@ Language=VBScript %>
<%
Dim RS, oConn, sql, pasar
'Conectamos con la base de datos para despues aplicar
'sentencias SQL
Conex= "DRIVER={Microsoft Access Driver (*.mdb)};"
'Es la ruta de acceso a la base de datos, puede ser modificada
'por usuarios avanzados
path=Server.MapPath("./info.mdb")
Conex= Conex & "DBQ=" & path
Const adOpenKeyset = 1
-328-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Const adLockOptimistic = 3
'Indicamos la ID del registro escogido
Dim respuesta
respuesta=int(request.form("IDreg"))
Set RS = Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection = Conex
RS.Source = "Select Estado, BajoConsumo, BajoEstado,
Iluminacion where ID=" & respuesta
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.Open
ID
'Selecionamos los campos que necesitamos
'para modificar el estado de las luces
if RS("Estado")=True then
if RS("BajoConsumo")=true and RS("BajoEstado")=False then
'Si un dispositivo tiene la caracteristica de bajo
'consumo y esta está inactiva, esta se activa
RS("BajoEstado")=True
else
RS("Estado")="False"
if RS("BajoConsumo")=True then
RS("BajoEstado")=false
end if
end if
else
RS("Estado")="True"
end if
'primero cerramos los objetos y luego los limpiamos.
RS.update
RS.Close
Set RS = nothing
'Volvemos a la pagina anterior indicando que el registro
'se ha modificado. Tambien indicamos en que estado de paginacion
'de resultados nos encontrabamos
pagina=request.querystring("pagina")
Response.Redirect "iluminacion.asp?num=" & pagina
%>
Código 28. Código fuente de la página cambio.asp .
-329-
from
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.2.7 Electrodomesticos.asp
Figura 109. Vista de la página electrodomesticos.asp.
Esta página se encarga del control del estado de la iluminación de la vivienda, los
campos que se muestran son:
•
•
•
•
Ubicación del dispositivo.
Descripción del elemento que gestiona el dispositivo asociado.
El estado de los elementos.
Botón mediante el que se cambia el estado de los electrodomésticos.
A continuación se muestra el código fuente de esta página:
<%@ Language=VBScript %>
<!-- #include file="adovbs.inc" -->
<html>
<head><title>Electrodomésticos</title>
<link rel="stylesheet" type="text/css" href="estilo.css"></head>
<%
'Recibimos del formulario la dirección del movimiento y
'lo guardamos en una variable de sesión para este usuario
-330-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
xx=request.form("direccion")
if xx = "Atras" then
session("pagina")=session("pagina")-1
if session("pagina")< 1 then
session("pagina")=1 'evitamos el error por reload
end if
else
if xx="Adelante" then
session("pagina")=session("pagina")+1
else
session("pagina")=1 'primera pasada
'Si no ha sido llamdo ni "Adelante" ni "Atras"
'es que ha llegado desde una modificacion
if request.querystring("num")<> "" then
session("pagina")=int(request.querystring("num"))
end if
end if
end if
Dim RS, oConn, sql
Dim path 'guardamos en la variable path lo que devuelve la función
'Es la ruta de acceso a la base de datos, puede ser modificada
'por usuarios avanzados
path = Server.MapPath("./info.mdb")
'Conectamos con la base de datos para despues aplicar
'sentencias SQL
Conex= "DRIVER={Microsoft Access Driver (*.mdb)};"
Conex= Conex & "DBQ=" & path
Set RS = Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection = Conex
RS.Source = "Select * from Electrodomesticos order by Habitación"
RS.CursorLocation = 3
'RS.LockType = 3
RS.Open
'Numero de registros por pagina de resultados
RS.pagesize=8
if session("pagina")>RS.pagecount then
session("pagina")=RS.pagecount 'evitamos el error de reload
end if%>
<%
'situamos el cursor en el inicio de la pagina a mostrar y
'calculamos los valores de inicio y fin para mostrarlos en
'las cabeceras
RS.absolutepage=session("pagina")
inicio=1+(session("pagina")-1)*RS.pagesize
fin=inicio+7
if fin > RS.recordcount then
fin =RS.recordcount
-331-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
end if
%>
<table border="0" width="100%" bgcolor="#C0C0C0">
<td
align="left"
width="50%">Registros
<font
color="#FF0000"><%=inicio%>
</font>al
<font
color="#FF0000"><%=fin%></font>
de
un
total
de
<font
color="#FF0000"><%=RS.recordcount%></font></td>
<td
align="right"
width="50%">Página
<font
color="#FF0000"><%=session("pagina")%></font>
de
<font
color="#FF0000"><%=RS.pagecount%></font></td>
</table>
<hr>
<table
BORDER="1"
CELLSPACING="0"
BORDERCOLOR="#000000"
CELLPADDING="0" width="100%">
<td
BGCOLOR="#C0C0C0"
align="center"
width="30%"><b>Habitación</b></td>
<td BGCOLOR="#C0C0C0" align="center"><b>Tipo</b></td>
<td
BGCOLOR="#C0C0C0"
align="center"
width="15%"><b>Estado</b></td>
<td
BGCOLOR="#C0C0C0"
align="center"
width="10%"
height=10><b>Acción</b></td>
<%
'Bucle para mostrar los registros
contador=0
Do While contador < RS.pagesize and NOT RS.EOF%>
<tr>
<td><%= RS("Habitación")%></td>
<td><%= RS("Tipo")%></td>
<td align="center"<%
if RS("Estado")=True then
Response.Write
"
bgcolor=green><Font
color=white><b>Encendido</b></font>"
else
Response.Write
"
bgcolor=red><Font
color=white><b>Apagado</b></font>"
end if%></td>
<td align="center" valign="middle" ><%
Response.Write
"<FORM
ACTION=elecambio.asp?pagina="
&
session("pagina") & " METHOD=post id=form1 name=form1 hidden><INPUT
value=" & RS("ID") & " name=IDreg SIZE=3 type=hidden><INPUT TYPE=submit
value=Cambiar hidden></form>" %></td>
</tr>
<% RS.MoveNext
contador=contador+1
Loop
%>
</table>
<center>
<hr>
<!-- mostramos los botones de adelante y atras segun proceda -->
<table border="0" width="38%" height="1">
<tr><%if session("pagina")<> 1 then %>
<td width="50%" height="1" align="center">
<form method="POST" action="electrodomesticos.asp">
-332-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
<p><input type="submit" value="Atras" name="direccion"></p>
</form>
</td><%end if%>
<%if session("pagina")< rs.pagecount then%>
<td width="50%" height="1" align="center">
<form method="POST" name="electrodomesticos.asp">
<p><input
type="submit"
value="Adelante"
name="direccion"></p>
</form>
</td>
<%end if%>
</tr>
</table>
</center>
<%
'Cerramos el RecordSet
RS.Close
%>
</body>
</html>
Código 29. Código fuente de la página electrodomesticos.asp .
6.2.8 Elecambio.asp
Esta página gestiona los cambios de estado en los dispositivos accediendo a la base
de datos y cambiando el estado desde allí. A continuación se muestra el código fuente de
esta página:
<%@ Language=VBScript %>
<%
Dim RS, oConn, sql, pasar
'Conectamos con la base de datos para despues aplicar
'sentencias SQL
Conex= "DRIVER={Microsoft Access Driver (*.mdb)};"
'Es la ruta de acceso a la base de datos, puede ser modificada
'por usuarios avanzados
path=Server.MapPath("./info.mdb")
Conex= Conex & "DBQ=" & path
Const adOpenKeyset = 1
Const adLockOptimistic = 3
'Indicamos la ID del registro escogido
Dim respuesta
-333-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
respuesta=int(request.form("IDreg"))
Set RS = Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection = Conex
RS.Source = "Select Estado, ID from Electrodomesticos where ID=" &
respuesta
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.Open
'Selecionamos los campos que necesitamos
'para modificar el estado de las luces
if RS("Estado")=True then
RS("Estado")="False"
else
RS("Estado")="True"
end if
'primero cerramos los objetos y luego los limpiamos.
RS.update
RS.Close
Set RS = nothing
'Volvemos a la pagina anterior indicando que el registro
'se ha modificado. Tambien indicamos en que estado de paginacion
'de resultados nos encontrabamos
pagina=request.querystring("pagina")
Response.Redirect "electrodomesticos.asp?num=" & pagina
%>
Código 30. Código fuente de la página elecambio.asp .
Tarragona, a 7 de Abril de 2003-02-21
Firmado: José Luis Pelegrí
Ingeniero técnico industrial
Nº colegiado: 477234
-334-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
6.3
ANEXOS
MANUAL DE USUARIO DEL PROGRAMA.
6.3.1 Introducción.
Bienvenido a la ayuda que le proporciona PFC v1.0, en el
margen izquierdo puede ir consultando los diversos apartados
que contiene este fichero.
Para nuevos usuarios se recomienda empezar paso a paso
para familiarizarse con el entorno. Esta iniciación prevendrá el
sistema hardware de posibles conflictos o malfuncionamiento.
Esta aplicación ha nacido de la disponibilidad cada vez más presente de los
ordenadores domésticos y del interés de muchos usuarios de tener una herramienta que
proporcione características domóticas a su vivienda.
Además del control de la iluminación, esta aplicación puede controlar todo aparato
eléctrico que se conecte a los dispositivos actuadores.
Todo esto se gestiona mediante un programa con un entorno amigable que
proporciona conectividad entre el usuario y los dispositivos repartidos por la vivienda
mediante la red eléctrica común de esta.
También dispone de un sistema de control remoto, es decir, se pueden controlar las
funciones básicas de la aplicación mediante Internet.
Para más información se recomienda lea este manual, de necesitar asistencia no dude
en contactar con su distribuidor o con nuestro departamento de asistencia técnica.
6.3.2 Primeros pasos.
En este apartado se inicia al usuario al entorno que va a encontrar al arrancar la
aplicación.
-335-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.2.1 Conectar dispositivos.
Primero se debe conectar el dispositivo maestro con el PC a través el puerto serie,
tras esto se conecta con la red eléctrica.
Ahora se deben poner los diferentes dispositivos según convenga, entre la luminaria
o electrodoméstico y la red eléctrica. Si el dispositivo tiene 2 salidas, la salida que figura
como "N" se debe conectar con la luminaria y la salida que figura como "A" con el
elemento encargado de regular el consumo.
6.3.2.2 Instalar aplicación.
Al introducir el CD se iniciará la instalación de la aplicación, si no se ejecuta
automáticamente, abra el "Explorador de Windows " y pulse con el botón derecho elija la
opción "Reproducción automática".
La primera pantalla le indicará que la aplicación está apunto de instalarse en su
sistema operativo. Déle al botón "Aceptar".
-336-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Esta ventana pide información referente al directorio donde se desea instalar la
aplicación.
Una vez decidido pulse el siguiente botón:
La instalación proseguirá normalmente e indicará el progreso de la misma.
Una vez finalizada pulse el botón "Aceptar"
-337-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.2.3 Iniciar aplicación.
Para iniciar la aplicación acceda al menú "Inicio", despliegue el menú "Programas"
y, a su vez, el menú "PFC".
Dentro de esta carpeta podrá ver que hay dos iconos, el icono de la aplicación
"PFC" y el icono de la ayuda
aplicación.
"Ayuda de PFC". Pulse sobre "PFC" y se iniciará la
La primera pantalla que aparecerá será la principal, pantalla que contendrá el resto de
prestaciones.
-338-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Mediante la barra de herramientas o la barra de menús podrá acceder al resto de las
posibilidades de la aplicación.
Al minimizar la aplicación, un nuevo icono aparecerá en la barra de tareas del
sistema operativo y parpadeará intermitentemente, cambiando entre este icono
y este
otro
, este icono indica que la aplicación sigue en funcionamiento aunque no vea la
pantalla principal.
Para restaurar la aplicación simplemente pulse dos veces con el botón izquierdo de su
ratón o una sola vez con el botón izquierdo, esto último hará aparecer un menú que le
posibilitará el restaurar la aplicación o finalizarla.
-339-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.2.4 Adquisición de datos.
Nada más ejecutar la aplicación se abrirá una ventana que indica que datos hay
almacenados y que datos se están adquiriendo cada 5 segundos. Si no aparece existen dos
vías para acceder a él:
1.- Mediante el menú "Ver":
2.- Mediante la barra de herramientas:
Este es el formulario:
Los campos se describen a continuación:
-ID: Indica la identidad del dispositivo del que se está visualizando información.
-Fecha : Indica la fecha de los datos visualizados.
-Potencia: Indica la potencia del dispositivo en modo normal.
-Consumo: Indica el consumo total del dispositivo en esa fecha.
-Tiempo: Indica el tiempo de funcionamiento total del dispositivo en esa fecha.
-Día: Indica el día de funcionamiento del dispositivo. Es una manera de ver cuantos días
lleva almacenando información.
-Hora: Indica la hora de la última adquisición de datos del dispositivo a fecha actual.
-340-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
La manera de ver la información de un dispositivo es introducir su "ID " y elegir el tipo, si
"Iluminación" o "Electrodomésticos".
Este formulario permite ver los datos a través del tiempo, para ello se emplean los
botones de navegación
campo "Fecha ").
y se accederá a diferentes fechas (indicadas en el
Además permite la visualización de los datos desglosados por franja horaria, para
visualizar esta información se debe pulsar sobre el botón
información se debe pulsar el botón
.
-341-
. Para ocultar dicha
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
A continuación se muestran unos ejemplos de dicha vista:
1- Si el dispositivo no tiene modo de bajo consumo.
-342-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
2- Si el dispositivo tiene modo de bajo consumo, en el marco "Bajo Consumo " se
muestra la información referente a tiempo en que ha estado funcionando en bajo consumo
y consumo en dicha fecha.
-343-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Para ocultar el formulario se debe pulsare sobre el botón
-344-
.
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.2.5 Antes de añadir dispositivos.
Antes de añadir ningún dispositivo se puede observar que la aplicación ha creado en
los formularios "Iluminación" y "Electrodomésticos " un elemento con "ID "=0. Este
elemento es de control de la aplicación y no tiene validez a la hora de hacer cálculos.
Los campos se describen a continuación:
-Icono: Indica el estado del dispositivo mediante un icono ilustrativo.
-ID: Indica la identidad del dispositivo.
-Habitación: Indica la ubicación del dispositivo.
-Tipo: Indica el tipo de dispositivo.
-Estado : Indica el estado del dispositivo.
-Referencia: Indica la referencia del dispositivo.
-Marca: Indica la marca del dispositivo.
-Potencia: Indica la potencia del dispositivo.
-Precio: Indica el precio del dispositivo.
-Horas de vida : Indica las horas de vida previstas por el proveedor.
-Modo ahorro : Indica si el dispositivo dispone de modo de bajo consumo y el estado de
éste.
-Potencia ahorro : Indica la potencia del dispositivo si dispone de modo de bajo consumo.
-345-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Los campos se describen a continuación:
-Icono: Indica el estado del dispositivo mediante un icono ilustrativo.
-ID: Indica la identidad del dispositivo.
-Habitación: Indica la ubicación del dispositivo.
-Tipo: Indica el tipo de dispositivo.
-Estado : Indica el estado del dispositivo.
-Potencia: Indica la potencia del dispositivo.
-Precio: Indica el precio del dispositivo.
-Observaciones: Aquí se engloban características no contempladas en otros apartados.
Por esto, una vez el usuario ha creado un dispositivo en el formulario deseado, este
elemento debe ser eliminado mediante las operaciones comentadas en los apartados
referentes a las operaciones con dispositivos, ya sean luminarias o electrodomésticos.
Antes de añadir un nuevo dispositivo debe asegurarse de que todo está bien
conectado, tal y como se explica en la sección "Conectar dispositivos". Tras esto debe
habilitar la grabación del dispositivo en cuestión. Esto se realiza mediante el interruptor
que se encuentra en el propio dispositivo, esta operación encenderá un LED de color rojo
en el dispositivo, ahora el usuario puede añadir un nuevo dispositivo. Esta operación se
explica en otras secciones del archivo de ayuda.
6.3.3 Iluminación.
En este apartado se explica en profundidad como establecer una sistemática de
operación con los dispositivos que controlan las luminarias.
-346-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Antes de empezar se recomienda leer el apartado primeros pasos, donde se explica
como conectar el dispositivo a la red y al aparato que se desea controlar.
Para acceder a este formulario existen dos vías posibles:
1.- Mediante el menú "Ver" la opción "Iluminación":
2.- Mediante el botón de la barra de herramientas:
Una vez realizada una de estas acciones se accederá al formulario propio del control
de la iluminación.
6.3.3.1 Nuevo elemento.
Es la operación esencial para poder crear en la aplicación elementos que se
correspondan con la realidad de la vivienda o el entorno que se desea reproducir.
-347-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Para crear un nuevo elemento se debe pulsar sobre el botón
y a continuación
aparecerá un sección en el formulario para que el usuario introduzca información relativa
al dispositivo:
La información requerida debe ser cumplimentada por el usuario, el único campo que
debe quedar en blanco es el de ID en caso de usuarios inexpertos. Está opción permite al
usuario forzar la ID de un dispositivo concreto y ajustar la aplicación al máximo a las
necesidades del usuario.
Si la ID que se intenta forzar existe para otro dispositivo aparecerá el siguiente
mensaje de error:
Si no sabe como funciona, mejor deje este campo en blanco.
-348-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Si se ha omitido alguno de los parámetros necesarios para la introducción de un
nuevo elemento aparecerá el siguiente mensaje de error:
La introducción de los parámetros es una operación que conlleva el planear la
habitación donde irá situado el dispositivo y una descripción breve pero concisa del tipo de
dispositivo que se está controlando.
Una vez introducida la información pulse el botón
quedará reflejada en el formulario principal.
-349-
y la información
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Una vez realizada esta operación, la aplicación preguntará si desea cambiar el tipo de
luminaria mediante un catálogo o manualmente:
El siguiente paso es acabar de definir los parámetros del elemento, al igual que con la
opción "Cambiar tipo de luminaria" que se explica más adelante.
En este formulario se pueden realizar diversas operaciones simplemente pulsando el
botón derecho del ratón sobre el elemento sobre el cual se quiera operar. si se pulsa el
botón derecho aparece un menú contextual
-350-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Estas operaciones se describen a continuación:
6.3.3.2 Cambiar tipo de luminaria.
Esta operación permite cambiar las propiedades del elemento seleccionado. Dentro
de esta operación se encuentran dos opciones más:
Si se selecciona la opción "Catálogo" aparecerá el siguiente formulario, donde los
campos del marco "Inserción Manual" están deshabilitados.
Para acceder al catálogo se debe pulsar el botón
, con lo que aparecerá una
ventana mediante la cual el usuario deberá buscar el catálogo facilitado por el proveedor.
-351-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Tras abrir el catálogo, se debe pulsar el botón
y los elementos del catálogo
se cargarán en la parte inferior del formulario, en el marco "Inserción Automática, tal y
como se puede observar en la siguiente figura:
-352-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Ahora el usuario deberá decidir que luminaria se adapta más a la realidad de su
vivienda y hacer doble click sobre ese elemento. Tras esto automáticamente se accederá al
formulario de luminarias donde finalmente el usuario deberá pulsar el botón
.
A continuación se va a mostrar el proceso a seguir si se elige la opción "Manual" del
menú emergente "Cambiar tipo luminaria". El formulario que aparece es el siguiente,
con los campos del marco "Inserción Automática" desactivados. Como también los
botones para acceder al catálogo.
El usuario debe rellenar todos los campos tal y como se indica en la figura inferior.
-353-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Si hay alguno de los campos que se ha quedado en blanco la aplicación avisará al
usuario mediante un mensaje de error.
Si la luminaria a definir acepta el modo de bajo consumo, el usuario deberá marcar la
casilla correspondiente y rellenar la información sobre dicha característica.
Si no se indica la característica de potencia en bajo consumo, el programa advertirá
de dicho error.
-354-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Tras esto automáticamente se accederá al formulario de luminarias donde finalmente
el usuario deberá pulsar el botón
.
6.3.3.3 Cambiar estado.
Esta operación permite cambiar el estado del elemento, esta opción tiene dos
vertientes:
1.- Luminaria normal, dónde el estado sólo puede ser "Encendido " o "Apagado ":
2.- Luminaria que acepta el modo de bajo consumo, dónde el estado puede ser
"Encendido ", "Apagado " o "Bajo consumo":
Dependiendo del estado en que se encuentre el dispositivo, el icono lateral del
elemento puede ser:
1.- "Encendido "
2.- "Bajo consumo "
3.- "Apagado "
-355-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.3.4 Programar.
Con esta operación se pueden programar dispositivos para que se enciendan y
apaguen en unas horas determinadas y unos días de la semana determinados. Como en el
apartado "Cambiar estado " se tiene en cuenta la posibilidad del dispositivo de admitir no
un modo de bajo consumo.
El usuario debe marcar los días que desee programar (si procede, también activar el
modo de ahorro) e introducir las horas de funcionamiento. Tras esto bastará con que pulse
sobre el botón
.
Mediante el botón
programados hasta el momento.
se puede visualizar la lista de los elementos
-356-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Para ocultar la lista se debe pulsar sobre el botón
.
La lista indica la "ID " del dispositivo, la "Habitación" el "Tipo", También indica los días
y las horas para las que ha sido programado y en que modo, si a la derecha de las horas
aparece una "N" entre paréntesis indica modo normal, si por el contrario, es una "A", esto
indica modo ahorro.
Si se desea borrar algún día o todos de la programación de uno o varios dispositivos,
se tiene que acceder uno a uno y desmarcar las casillas de activación de cada dispositivo. si
por el contrario se desea borrar la programación de todos los dispositivos, pulse el botón
y eliminará le programación de todos los dispositivos
6.3.3.5 Asignar punto.
Con esta operación se podrá situar el elemento seleccionado en el lugar del plano que
se desee. Para esto antes de nada se tienen que haber adquirido un plano de la casa. Para
realizar esta operación revise el apartado "Adquirir plano " de la sección "Planos ".
-357-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Una vez se haya seleccionado la opción "Asignar punto" aparecerá el siguiente
formulario, donde se determinará la posición del elemento mediante un click de ratón.
Y la aplicación preguntará al usuario si se desea guardar dicho punto.
-358-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.3.6 Consumo & tiempo.
Estas dos operaciones siguen la misma metódica de actuación, por lo que se explican
a la vez, simplemente se tendrá una variación en la información percibida. Una vez elegida
la opción aparecerá una de estos formularios:
Los botones en los marcos "Consumo Total" o "Tiempo Total" aportan
información acerca del conjunto de los dispositivos implementados en la aplicación. Por el
contrario, los botones en los marcos "Consumo Individual" o "Tiempo Individual"
aportan información referente al dispositivo seleccionado.
Una vez elegida la opción deseada la aplicación pide que el usuario acote el periodo
de tiempo para el cual quiere la información.
-359-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Tanto como para cálculos totales o individuales existen dos posibilidades:
1.- Información global entre dos fechas.
Si se trata de la gráfica de un dispositivo, en la parte inferior del formulario aparecerá
la información referente a ese dispositivo.
-360-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
2.- Información desglosada en franjas horarias entre 2 fechas.
Si se trata de la gráfica de un dispositivo, en la parte inferior del formulario aparecerá
la información referente a ese dispositivo.
-361-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Si se dispone de la aplicación "Microsoft Excel" se podrán exportar los datos de la
gráfica a una hoja de datos de dicha aplicación para ser usada como el usuario considere
oportuno. Para esto se debe pulsar el botón
. También se puede sacar una
copia impresa de la gráfica que se está visualizando pulsando sobre el botón
.
6.3.3.7 Borrar registro.
Para eliminar alguno de los elementos se utiliza esta opción del menú emergente.
Esta opción borrará toda la información que se ha almacenado para dicho eleme nto, por
este motivo, el usuario debe tener suma prudencia. Si el elemento a eliminar es el único
que existe la aplicación informará del error.
-362-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.3.8 Horas de vida.
Esto posibilita el control periódico de la vida de las luminarias rigiéndose por las
horas de vida estimadas por el proveedor y las horas de funcionamiento transcurridas,
como se muestra en la figura:
-Icono: Indica el estado del dispositivo mediante un icono ilustrativo.
-ID: Indica la identidad del dispositivo.
-Habitación: Indica la ubicación del dispositivo.
-Tipo: Indica el tipo de dispositivo.
-Estimada : Indica el estado del dispositivo.
-Transcurrida : Indica la potencia del dispositivo.
-Restante: Indica el precio del dispositivo.
El icono puede ser
si aún tiene vida útil por delante o
si por el contrario ya
ha acabado la vida estimada, por lo que lo que quedan son horas de más. Si el indicador de
vida transcurrida es negativo son horas que han pasado desde que se acabaron las horas de
vida estimadas por el proveedor.
6.3.4 Electrodomésticos.
En este apartado se explica en profundidad como establecer una sistemática de
operación con los dispositivos que controlan los electrodomésticos.
Antes de empezar se recomienda leer el apartado primeros pasos, donde se explica
como conectar el dispositivo a la red y al aparato que se desea controlar.
-363-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Para acceder a este formulario existen dos vías posibles:
1.- Mediante el menú "Ver" la opción "Electrodomésticos":
2.- Mediante el botón de la barra de herramientas:
Una vez realizada una de estas acciones se accederá al formulario propio del control
de los electrodomésticos.
-364-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.4.1 Nuevo elemento.
Es la operación esencial para poder crear en la aplicación elementos que se
correspondan con la realidad de la vivienda o el entorno que se desea reproducir.
Para crear un nuevo elemento se debe pulsar sobre el botón
y a continuación
aparecerá un sección en el formulario para que el usuario introduzca información relativa
al dispositivo:
La información requerida debe ser cumplimentada por el us uario, el único campo que
debe quedar en blanco es el de ID en caso de usuarios inexpertos. Está opción permite al
usuario forzar la ID de un dispositivo concreto y ajustar la aplicación al máximo a las
necesidades del usuario.
Si la ID que se intenta forzar existe para otro dispositivo aparecerá el siguiente
mensaje de error:
-365-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Si no sabe como funciona, mejor deje este campo en blanco.
Si se ha omitido alguno de los parámetros necesarios para la introducción de un
nuevo elemento aparecerá el siguiente mensaje de error:
La introducción de los parámetros es una operación que conlleva el planear la
habitación donde irá situado el dispositivo y una descripción breve pero concisa del tipo de
dispositivo que se está controlando.
Una vez introducida la información pulse el botón
quedará reflejada en el formulario principal.
-366-
y la información
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
En este formulario se pueden realizar diversas operaciones simplemente pulsando el
botón derecho del ratón sobre el elemento sobre el cual se quiera operar. si se pulsa el
botón derecho aparece un menú contextual
Estas operaciones se describen a continuación:
6.3.4.2 Cambiar estado.
Esta operación permite cambiar el estado del elemento, éste puede ser "Encendido "
o "Apagado ":
-367-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Dependiendo del estado en que se encuentre el dispositivo, el icono lateral del
elemento puede ser:
1.- "Encendido "
2.- "Apagado "
6.3.4.3 Programar.
Con esta operación se pueden programar dispositivos para que se enciendan y
apaguen en unas horas determinadas y unos días de la semana determinados.
El usuario debe marcar los días que desee programar e introducir las horas de
funcionamiento.
Mediante el botón
hasta el momento.
Tras
esto
bastará con que pulse sobre el botón
se puede visualizar la lista de los elementos programados
-368-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Para ocultar la lista se debe pulsar sobre el botón
.
La lista indica la "ID " del dispositivo, la "Habitación" el "Tipo ", también indica los
días y las horas para las que ha sido programado.
Si se desea borrar algún día o todos de la programación de uno o varios dispositivos,
se tiene que acceder uno a uno y desmarcar las casillas de activación de cada dispositivo. si
por el contrario se desea borrar la programación de todos los dispositivos, pulse el botón
y eliminará le programación de todos los dispositivos
6.3.4.4 Asignar punto.
Con esta operación se podrá situar el elemento seleccionado en el lugar del plano que
se desee. Para esto antes de nada se tie nen que haber adquirido un plano de la casa. Para
realizar esta operación revise el apartado "Adquirir plano " de la sección "Planos ".
-369-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Una vez se haya seleccionado la opción "Asignar punto" aparecerá el siguiente
formulario, donde se determinará la posició n del elemento mediante un click de ratón.
Y la aplicación preguntará al usuario si se desea guardar dicho punto.
6.3.4.5 Consumo & tiempo.
Estas dos operaciones siguen la misma metódica de actuación, por lo que se explican
a la vez, simplemente se tendrá una variación en la información percibida. Una vez elegida
la opción aparecerá una de estos formularios:
-370-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Los botones en los marcos "Consumo Total" o "Tiempo Total" aportan
información acerca del conjunto de los dispositivos implementados en la aplicación. Por el
contrario, los botones en los marcos "Consumo Individual" o "Tiempo Individual"
aportan información referente al dispositivo seleccionado.
Una vez elegida la opción deseada la aplicación pide que el usuario acote el periodo
de tiempo para el cual quiere la información.
-371-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Tanto como para cálculos totales o individuales existen dos posibilidades:
1.- Información global entre dos fechas.
Si se trata de la gráfica de un dispositivo, en la parte inferior del formulario aparecerá la
información referente a ese dispositivo.
-372-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
2.- Información desglosada en franjas horarias entre 2 fechas.
Si se trata de la gráfica de un dispositivo, en la parte inferior del formulario aparecerá
la información referente a ese dispositivo.
-373-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Si se dispone de la aplicación "Microsoft Excel" se podrán exportar los datos de la
gráfica a una hoja de datos de dicha aplicación para ser usada como el usuario considere
oportuno. Para esto se debe pulsar el botón
. También se puede sacar una
copia impresa de la gráfica que se está visualizando pulsando sobre el botón
.
6.3.4.6 Modificar.
Se aplica el mismo principio que para añadir un nuevo elemento, pero llegados al
final de la operación, en vez de añadir un nuevo elemento, se modifican las características
de elemento seleccionado.
6.3.4.7 Borrar registro.
Para eliminar alguno de los elementos se utiliza esta opción del menú emergente.
Esta opción borrará toda la información que se ha almacenado para dicho elemento, por
este motivo, el usuario debe tener suma prudencia. Si el elemento a eliminar es el único
que existe la aplicación informará del error.
-374-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.5 Internet.
Para el correcto funcionamiento de esta prestación se recomienda seguir las
indicaciones que se exponen a continuación. Para que el control desde Internet tenga efecto
se debe disponer de un servidor bajo la plataforma Windows NT, con ASP y la posibilidad
de subir ficheros al servidor mediante FTP. De no ser así la página no será operativa.
6.3.5.1 Datos del servidor.
Antes de empezar se debe completar el formulario de datos del servidor. Para
acceder a este fo rmulario existen dos posibilidades:
1.- Mediante el menú "Configurar FTP".
2.- Mediante la barra de herramientas.
Con cualquiera de estas se accederá al siguiente formulario:
-375-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Una vez cumplimentado se debe pulsar sobre el botón
quedarán almacenados.
y los cambios
- En el campo "FTP" se debe introducir la dirección del servidor al que accederá la
aplicación y que cont endrá las páginas en ASP.
- En el campo "Usuario" y "Clave" se deben rellenar con los datos que el usuario tenga
registrados con el proveedor del servicio de hosting.
- El campo "Carpeta destino" es un campo clave que debe contener la carpeta donde se
encuentran ubicados los archivos ASP (para usuarios noveles). el formato a seguir es el
siguiente: "/carpeta_destino/". Si la carpeta de destino es la raíz simplemente "/".
6.3.5.2 Iniciar sesión.
Antes de poder hacer uso del control desde Internet se debe iniciar la sesión. Este
paso intercambiará la información entre el PC y el servidor y además se encarga de
actualizar los cambios que se realicen desde la red y reflejarlos en la aplicación. Para
acceder a este formulario existen dos posibilidades:
1.- Mediante el menú "Iniciar sesión".
2.- Mediante la barra de herramientas.
Tras realizar esta operación aparecerá el siguiente formulario:
-376-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Para iniciar el proceso basta con pulsar el botón
debe pulsar el botón
está en proceso.
. Para detener el proceso se
mientras este entre descargas, no mientras una descarga
La secuencia de comunicación es la siguiente:
a) La información original se envía al servidor al iniciar la sesión.
b) A los 20 segundos el ordenador descarga la información del servidor y así hasta tres
veces a intervalos de 20 segundos.
c) El proceso vuelve al paso a).
6.3.5.3 Página de control.
6.3.5.3.1 Identificación .
El primer paso para acceder a la página de control es identificarse como usuario de la
aplicación. Se deben introducir el "Usuario" y la "Clave" en los cuadros correspondientes.
De ser una identificación satisfactoria se abrirá una página con la información acerca
de la aplicación. De no ser correctos los datos los controles no serán efectivos.
6.3.5.3.2 Control de Iluminación y Electrodomésticos.
En el control de iluminación hay 2 controles básicos, el que se encarga de navegar
por los diversos dispositivos y el encargado de realizar cambios en el estado de cada
dispositivo. Son controles muy sencillos que no necesitan más comentarios.
-377-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
El resto de la información es relativa al número de dispositivos e información
referente al aparato que controla cada dispositivo, su ubicación y el estado en el que se
encuentra.
6.3.6 Usuarios.
Para esta aplicación es necesaria la existencia de usuarios para mantener cierta
seguridad, tanto en el ordenador que gestiona la aplicación como para las operaciones que
se realicen a través de Internet.
Como usuario inicial existe la figura del Administrador, que debe ser cambiado por
el usuario dado que es un procedimiento estándar de la aplicación y resta seguridad al
sistema.
A continuación se explica paso a paso el proceso para gestionar los usuarios y que
hacer cuando se bloquea la aplicación.
6.3.6.1 Acceder al menú de usuario.
Para acceder a las operacione s que gestionan a los usuarios existen dos posibilidades:
1.- Mediante el menú "Usuarios".
2.- Mediante la barra de herramientas.
Una vez dentro del formulario de Usuarios se presentan diversas operaciones que se
explican a continuación.
-378-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.6.2 Ver usuarios.
Para ver a los diferentes usuarios existentes y sus diferentes propiedades existen dos
botones de navegación que permiten ir cambiando de usuario, tal y como muestra la figura.
6.3.6.3 Crear usuario.
Para crear un nuevo usuario simplemente se pulsa sobre el botón
, en ese
momento el formulario se ampliará y aparecerán diversos campos que se deben
cumplimentar con la información que el usuario estime conveniente. Ninguno de los
campos debe quedar vacío.
-379-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
A continuación pulse sobre el botón
y la información se actualizará
automáticamente en el formulario principal y será completamente funcional.
6.3.6.4 Modificar usuario.
Para modificar las propiedades de un usuario existente simplemente se navega
mediante los botones hasta mostrar el usuario a modificar y se reemplaza la información,
tal y como se muestra en las figuras:
-380-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Una vez realizada esta operación se pulsa el botón
actualizada y será completamente funcional.
y la información será
6.3.6.5 Eliminar usuario.
Para eliminar un us uario simplemente se navega mediante los botones hasta mostrar
el usuario a eliminar y se pulsa sobre el botón
. Entonces aparecerá un mensaje
que informa de que se va a eliminar un usuario de la base de datos.
Si el usuario a eliminar es el único existente aparecerá un mensaje de error que indica
que no se puede eliminar.
-381-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
6.3.6.6 Bloquear y desbloquear aplicación.
Para acceder a la operación que bloquea la aplicación existiendo dos posibilidades:
1.- Mediante el menú "Usuarios".
2.- Mediante la barra de herramientas.
Una vez realizado esto, la aplicación seguirá funcionando, pero no será accesible a
los usuarios. En este momento aparece una ventana donde se piden los datos para
desbloquear la aplicación.
Para desbloquear la aplicación se deben introducir los datos requeridos en los
campos "Usuario" y "Clave" y pulsar sobre el botón
. Si alguno de estos
campos es erróneo aparecerá alguno de los siguientes mensajes de error.
-382-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
Si la información es correcta aparece un mensaje indicando el nombre y el apellido
de la persona que desbloquea la aplicación.
6.3.7 Acerca de…
6.3.7.1 Acerca de la aplicación.
Aplicación de control de la iluminación y los electrodomésticos de una vivienda.
Este control se realiza mediante la adquisición de datos de los diferentes dispositivos y la
-383-
CONTROL DE LA ILUMINACIÓN DE UNA
VIVIENDA MEDIANTE RED ELÉCTRICA Y UN PC
ANEXOS
actuación sobre los elementos externos. La adquisición se transmite a través de la red
eléctrica hacia el PC que controla la instalación.
Toda la gestión se realiza mediante un PC, que además de la gestión realiza cálculo
de consumos.
6.3.7.2 Acerca del autor.
José Luis Pelegrí Santamaría.
Ingeniería Técnica Industrial en Electrónica Industrial.
Escola Técnica Superior d'Enginyeria.
Universitat Rovira i Virgili
6.3.7.3 Contacto.
[email protected]
Tarragona, a 7 de Abril de 2003-02-21
Firmado: José Luis Pelegrí
Ingeniero técnico industrial
Nº colegiado: 477234
-384-
Descargar