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. jlps.ee@estudiants.urv.es Tarragona, a 7 de Abril de 2003-02-21 Firmado: José Luis Pelegrí Ingeniero técnico industrial Nº colegiado: 477234 -384-