DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE MONITOREO Y CONTROL AUTOMÁTICO (EMBEBIDO) CON COMUNICACIÓN VIA ETHERNET BAJO EL PROTOCOLO TCP/IP RONALD FEDRICK LINERO PINTO JORGE DANIEL MUÑOZ GALVIS CORPORACIÓN UNIVERSITARIA RAFAEL NÚÑEZ PROGRAMA DE INGENIERIA DE SISTEMAS AREA DE AUTOMATIZACIÓN INDUSTRIAL CARTAGENA DE INDIAS D.T. Y C. 2005
249
Embed
· DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE MONITOREO Y CONTROL AUTOMÁTICO (EMBEBIDO) CON COMUNICACIÓN VIA ETHERNET BAJO EL PROTOCOLO …
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE MONITOREO Y
CONTROL AUTOMÁTICO (EMBEBIDO) CON COMUNICACIÓN VIA ETHERNET
BAJO EL PROTOCOLO TCP/IP
RONALD FEDRICK LINERO PINTO
JORGE DANIEL MUÑOZ GALVIS
CORPORACIÓN UNIVERSITARIA RAFAEL NÚÑEZ
PROGRAMA DE INGENIERIA DE SISTEMAS
AREA DE AUTOMATIZACIÓN INDUSTRIAL
CARTAGENA DE INDIAS D.T. Y C.
2005
DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE MONITOREO Y
CONTROL AUTOMÁTICO (EMBEBIDO) CON COMUNICACIÓN VIA ETHERNET
BAJO EL PROTOCOLO TCP/IP
RONALD FEDRICK LINERO PINTO
JORGE DANIEL MUÑOZ GALVIS
Monografía para optar al título de Ingeniero de Sistemas
Director
Ing. Luís Fernando Murillo Fernández
Ingeniero Eléctrico Especializado en Informática Industrial
CORPORACIÓN UNIVERSITARIA RAFAEL NÚÑEZ
PROGRAMA DE INGENIERIA DE SISTEMAS
AREA DE AUTOMATIZACIÓN INDUSTRIAL
CARTAGENA DE INDIAS D.T. Y C.
2005
Nota de aceptación:
________________________________
________________________________
________________________________
________________________________
___________________________
Firma del presidente del jurado
___________________________
Firma del jurado
___________________________
Firma del jurado
Cartagena de Indias D.T. Y C, 8 de abril de 2005
A Dios por la vida, salud y sabiduría que me ha
dado en el logro de esta meta, a mi madre linda
Sara Pinto Cuesta por todo el esfuerzo y apoyo
que me ha brindado para ser de mí una persona
educada y hacer posible el triunfo que obtengo
hoy, a mi hijo y a Lorena por comprenderme y
por darme su amor, a mis hermanos Luís y Yerlis,
mi abuelita, mi tío Luís, Pedro Guzmán, la Sra.
Piedad y Consuelo por su apoyo incondicional en
todo momento y a todas las demás personas que
contribuyeron con mi crecimiento personal e
intelectual..
RONALD FEDRICK LINERO PINTO
RONALD FEDRICK LINERO PINTO
A Dios por darme la voluntad, la fortaleza y la
salud diaria, sin él jamás habría terminado, a
mis padres Jorge y Andrea, que con su apoyo y
sus oraciones persistentes incentivaron mi
espíritu a seguir en esta ardua tarea, a mis
hermanos Leonard, Deysi, y Andrea Carolina
por su gran interés demostrado en todo momento.
Además expreso mis más sinceros
agradecimientos a los docentes que creyeron en
mí, orientándome adecuadamente para la
consecución de este logro personal, y a todos mis
compañeros y demás familiares que
contribuyeron con esta causa directa e
indirectamente...
JORGE DANIEL MUÑOZ GALVIS
AGRADECIMIENTOS
Los autores expresan su sincero agradecimiento a:
Dios, nuestro padre celestial por habernos iluminado en los momentos más felices
y difíciles de nuestras vidas y por este triunfo que obtenemos hoy día.
A nuestros padres, por el apoyo incondicional que nos han brindado durante todo
el transcurso de esta profesión.
Ing. Luís Fernando Murillo Fernández, director de este trabajo de grado, por su
valiosa orientación y dedicación en cada una de las etapas de desarrollo del
proyecto.
Ing. Juan Pablo Paz, docente del programa de Ingeniería de Sistemas de la
CURN y asesor del proyecto, por compartir sus conocimientos y guiarnos en la
consecución del proyecto.
Ing. Juan Contreras Montes, docente del programa de Ingeniería de Sistemas de
la CURN y asesor del proyecto, por su orientación y colaboración desde un
principio en el desarrollo de este proyecto.
Ing. Maria Claudia Bonfante, coordinadora del programa de Ingeniería de
Sistemas de la CURN por su apoyo incondicional.
Ing. Lisbeth Urueta, docente del programa de Ingeniería de Sistemas de la CURN,
por los conocimientos y asesoría proporcionada en el área de la Ingeniería de
Software.
CONTENIDO
pág.
INTRODUCCIÓN 23 EL PROBLEMA Y OBJETIVOS DE LA INVESTIGACION 24 ANTECEDENTES DEL PROBLEMA 24 PLANTEAMIENTO DEL PROBLEMA 26 JUSTIFICACION DEL PROBLEMA 27 OBJETIVOS DE LA INVESTIGACION 28
OBJETIVO GENERAL 28
OBJETIVOS ESPECIFICOS 28 METAS DE LA INVESTIGACION 29 1. SISTEMAS DE CONTROL DIGITAL 30 1.1 SISTEMAS DE CONTROL 30 1.1.1 Clasificación de los sistemas de control. 31 1.1.2 Acciones de control. 33 1.1.3 Control proporcional integrativo derivativo. 34 1.2 CONTROLADORES ANÁLOGOS 35 1.3 CONTROLADORES DIGITALES 36 1.3.1 Diagrama de bloque de un controlador digital. 38 1.3.2 Módulo de control digital Rabbit. 39 1.3.3 Implementación del algoritmo de control PID digital. 41
2. REDES DE COMUNICACIÓN INDUSTRIALES 43 2.1 NIVELES EN UNA RED INDUSTRIAL 44 2.1.1 Nivel de gestión. 44 2.1.2 Nivel de control. 44 2.1.3 Nivel de campo y proceso. 44 2.1.4 Nivel de E/S. 44 2.2 TIPOS DE REDES INDUSTRIALES 45 2.2.1 Bus de campo. 45 2.2.1.1 Buses de campo reconocidos. 47 2.2.2 Redes LAN industriales. 48 2.2.2.1 Protocolo de automatización de manufactura (MAP). 48 2.2.2.2 Ethernet. 48 2.3 GENERALIDADES DE LA RED ETHERNET 49 2.3.1 Especificaciones Ethernet IEEE 802.3 a 10 Mbps. 50 2.3.2 Especificaciones Ethernet IEEE 802.3 a 100 Mbps. 51 2.3.3 Direcciones Ethernet. 51 2.4 PROTOCOLO TCP/IP 52 2.4.1 Arquitectura de protocolos TCP/IP. 52 2.4.2 Familia de protocolos TCP/IP. 54 2.4.3 Protocolos de la capa de aplicación. 54 2.4.4 Protocolos de la capa de transporte. 56 2.4.5 Protocolo de la capa internet. 57 2.4.6 Protocolo de la capa acceso a la red. 60
3. IMPLEMENTACIÓN DE PROTOCOLOS TCP/IP 61 3.1 PROTOCOLO HTTP 61 3.2 PROTOCOLO SMTP 72 3.3 PROTOCOLO TELNET 75 3.4 PROTOCOLO UDP 84 3.4.1Servidor UDP. 84 3.4.2 Cliente UDP. 88 3.5 SERVICIO DNS 92 4. ANALISIS Y DISEÑO DEL SISTEMA DE MONITOREO Y CONTROL 94 4.1 GENERALIDADES DEL SISTEMA 94 4.2 ANÁLISIS ESTRUCTURADO DEL SISTEMA 96 4.3 DICCIONARIO DE DATOS 101 4.3.1 Procesos. 101 4.3.2 Flujo de datos. 102 4.4 DISEÑO DE LA INTERFAZ DE MONITOREO SCAM WEB 105 4.4.1 Diseño arquitectónico. 105 4.4.2 Diseño de plantillas de la interfaz de usuario. 106 4.4.3 Diseño de entrada de datos. 108 4.4.4 Diseño de controles. 111 4.4.5 Diseño de salida. 112 4.5 DISEÑO APLICACIÓN DE ALMACENAMIENTO SCAM SERVER 114 4.5.1 Diseño de módulos. 114 4.5.2 Diseño de la base de datos. 114
5. PRUEBAS E IMPLEMENTACIÓN DEL SISTEMA 116 5.1 ASPECTOS METODOLÓGICOS 116 5.2 PRUEBAS DEL SISTEMA 119 5.2.1 Prueba de recuperación. 119 5.2.2 Prueba de seguridad. 120 5.2.3 Prueba de resistencia. 120 5.2.4 Prueba de rendimiento. 121 5.3 IMPLEMENTACIÓN DEL SISTEMA 121 5.3.1 Descripción de la plataforma. 121 6. CONCLUSIONES 123 7. RECOMENDACIONES 124 BIBLIOGRAFIA 125 ANEXOS 127
LISTA DE TABLAS
pág.
Tabla 1. Valores de configuración predefinidos de TCPCONFIG 63
Tabla 2. Tabla Variables de la base de datos SCAM 115
Tabla 3. Especificaciones Físicas RCM2200 131
Tabla 4. Configuración de pines del conector J5 135
Tabla 5. Configuración de pines del conector J4 136
Tabla 6. Configuración de red del RCM2200 en conexión directa 137
Tabla 7. Configuración de red Inalámbrica 139
Tabla 8. Comandos Ctrl del teclado 144
Tabla 9. Comandos Inicio del teclado 145
Tabla 10. Comandos Fin del teclado 145
Tabla 11. Familia de microcontroladores de Microchip 205
Tabla 12. Nomenclatura de la familia de microcontroladores de Microchip 206
Tabla 13. Rango de voltaje de los microcontroladores 206
Tabla 14. Familia del PIC 16Fxxx 207
Tabla 15. Selección del banco mediante el direccionamiento indirecto 219
Tabla 16. Selección del banco mediante el direccionamiento directo 219
Tabla 17. Archivo de registros del PIC 16F87X 222
Tabla 18. Asignación de los bits CHS2:0 del registro de control ADCON0 225
Tabla 19. Configuración de los pines del PIC según el valor de <PCFG3 - 0 > 227
LISTA DE FIGURAS
pág.
Figura 1. Elementos de un sistema de control 31
Figura 2. Diagrama de bloque de un sistema de lazo abierto 32
Figura 3. Sistema de control de nivel de líquido 33
Figura 4. Diagrama de bloque de un sistema de control de nivel liquido 33
Figura 5. Esquema simplificado del controlador PID análogo 36
Figura 6. Esquema general de un controlador digital 37
Figura 7. Diagrama de bloques de un sistema de control digital 39
Figura 8. Modulo de control Rabbit RCM 2200 40
Figura 9. Niveles en una red industrial 45
Figura 10. Capas del protocolo TCP/IP 53
Figura 11. Estructura de los protocolos de la familia TCP/IP 54
Figura 12. Esquema de una dirección IP 59
Figura 13. Autenticación Digest para ingresar a una página Web 71
Figura 14. Autenticación básica 71
Figura 15. Ventana Ejecutar de Windows XP 83
Figura 16. Ventana de salida de texto de Dynamic C 83
Figura 17. Diseño arquitectónico de la aplicación SCAM Web 105
Figura 18. Plantilla pagina inicio de sesión 106
Figura 19. Plantilla pagina principal 106
Figura 20. Plantilla paginas de configuración parámetros PID y usuarios 107
Figura 21. Plantilla pagina de ayuda 107
Figura 22. Plantilla para mensajes de alarma o error de ingreso de datos 108
Figura 23. Diseño de entrada de los datos nombre de usuario y contraseña 109
Figura 24. Diseño de entrada de datos gestión de usuario 110
Figura 25. Diseño de entrada de datos parámetros del controlador PID 111
Figura 26. Mensaje de error de introducción de datos 112
Figura 27. Mensaje de error indicando que un campo es obligatorio 112
Figura 28. Salida del valor del variable controlada 113
Figura 29. Salida de un mensaje de error 113
Figura 30. Módulos de la interfaz SCAM Server 114
Figura 31. Plataforma del sistema SCAM 122
Figura 32. Vista posterior y anterior del módulo Rabbit RCM2200 130
Figura 33. Subsistemas del módulo RCM2200 132
Figura 34. Configuración de los pines del microprocesador Rabbit 2000 133
Figura 35. Pines de E/S del módulo RCM2200 134
Figura 36. Configuración del RCM2200 en una Red LAN Ethernet 138
Figura 37. Entorno de desarrollo de Dynamic C 142
Figura 38. Menú principal de Dynamic C 145
Figura 39. Menú archivo de Dynamic C 146
Figura 40. Menú edición de Dynamic C 148
Figura 41. Menú compilar de Dynamic C 150
Figura 42. Mensaje de la BIOS 152
Figura 43. Menú ejecutar de Dynamic C 152
Figura 44. Menú opciones de Dynamic C 154
Figura 45. Caja de dialogo opciones de proyecto de Dynamic C 155
Figura 46. Selección del módulo Rabbit 157
Figura 47. Menú de ayuda de Dynamic C 158
Figura 48. Ventana de descripción de funciones de Dynamic C 159
Figura 49. Barra de direcciones navegador Web 163
Figura 50. Botón inicio de Windows XP 164
Figura 51. Acceso a SCAM Web a través de la ventana ejecutar 164
Figura 52. Iniciando SCAM Server 165
Figura 53. Página inicio de sesión de SCAM Web 166
Figura 54. Mensaje de error del campo nombre de usuario 166
Figura 55. Mensaje de verificación nombre de usuario y/o contraseña 167
Figura 56. Página principal de SCAM 167
Figura 57. Ventana de autenticación páginas Configuración PID y usuarios 168
Figura 58. Ventana de parámetros del controlador PID 169
Figura 59. Mensaje de error del campo valor de referencia (setpoint) 169
Figura 60. Mensaje valor de referencia (setpoint) es requerido 170
Figura 61. Ventana de configuración de usuarios 171
Figura 62. Campo de nueva contraseña es requerido 171
Figura 63. Mensaje de error de contraseñas inconsistentes 172
Figura 64. Mensaje de error del campo correo electrónico 172
Figura 65. Página de ayuda de SCAM Web 172
Figura 66. Pantalla principal de SCAM Server 173
Figura 67. Menú Operación 174
Figura 68. Pantalla históricos de variables 174
Figura 69. Pantalla de configuración de parámetros de variable 175
Figura 70. Pantalla Acerca de SCAM Server 175
Figura 71. Esquema Interno del PIC16F877/874 209
Figura 72. Esquema de pines del PIC16F877/874 210
Figura 73. Ciclo de instrucción de PC 211
Figura 74. Configuración de bits del registro STATUS 212
Figura 75. Operación con el archivo de registros orientada a bytes 213
Figura 76. Operación con el archivo de registros orientada a bits 213
Figura 77. Formato general 213
Figura 78. Formato para CALL y GOTO 213
Figura 79. Organización de la memoria de programa 214
Figura 80. Registro contador de programa 215
Figura 81. Actualización del registro PCH a través del registro PCLATH 216
Figura 82. Actualización del registro PCH a través del registro PCLATH 216
Figura 83. Asignación del contenido del registro PC a la pila 216
Figura 84. Asignación del contenido de la pila al registro PC 217
Figura 85. Direccionamiento directo e indirecto de la memoria de datos. 220
Figura 86. Asignación de los bits del registro de control ADCON0 224
Figura 87. Asignación de los bits ADCS1:0 del registro de control ADCON0 224
Figura 88. Asignación de los bits del registro de control ADCON1 225
Figura 89. Alineación izquierda y derecha del resultado digital de 10 bits 226
Figura 90. Estructura interna del convertidor análogo digital 228
Figura 91. Conexiones al bus I2C 232
Figura 92. Condiciones de inicio y parada de I2C 233
Figura 93. Bit de reconocimiento ACK 234
Figura 94. Formato de transmisión de datos de I2C 234
Figura 95. Conexiones de SDA y SCL de Rabbit 2000 y el PIC 16f877 235
Figura 96. Bits del registro SSPSTAT 238
Figura 97. Bits del registro SSPCON 239
Figura 98. Bits del registro SSPCON2 240
LISTA DE DIAGRAMAS
pág.
Diagrama 1. Diagrama de flujo del algoritmo PID Digital 41
Diagrama 2. DFD de contexto del sistema SCAM 96
Diagrama 3. DFD Nivel 1 del sistema SCAM 98
Diagrama 4. DFD Nivel 2 que refina el proceso de interactuar con operador 99
Diagrama 5. DFD Nivel 2 que refina el proceso de configuración parámetros
sistema 99
Diagrama 6. DFD Nivel 2 que refina el proceso de control de variables 100
Diagrama 7. DFD Nivel 3 que refina el proceso de iteración algoritmo de control
PID 100
LISTA DE ANEXOS
pág.
Anexo A. Manual de usuario del módulo Rabbit RCM2200 128
Anexo B. Manual de usuario de Dynamic C v8.1 140
Anexo C. Manual de usuario del sistema SCAM v1.0 160
Anexo D. Manual del sistema 177
Anexo E. Funcionamiento del PIC 16F877 204
Anexo F. Funcionamiento del bus I2C en el módulo Rabbit y PIC 16F877 229
Anexo G. RabbitCore RCM2200 Getting Started manual
Anexo H. Póster de referencia del procesador Rabbit 2000
Anexo I. Licencia del Software Dynamic C v. 8.1
GLOSARIO
A/D: acrónimo de Análogo/Digital.
ACTUADOR: es un dispositivo de potencia que produce la entrada para la planta,
de acuerdo con la señal de control, de tal forma que la señal de salida se aproxime
a la señal de entrada de referencia. Un actuador o accionador, puede ser un
motor o una válvula neumática, un motor hidráulico o uno eléctrico.
CANAL: medio de transmisión por el que viajan las señales portadoras de datos o
información.
CGI: acrónimo de Interfaz de Pasarela Común.
CMOS: acrónimo de Semiconductor de Óxido Metálico Complementario. Tipo
específico de tecnología de semiconductor que requiere muy poca energía.
CONTROL: significa medir el valor de la variable controlada del sistema, y aplicar
al sistema la variable manipulada para corregir o limitar la desviación del valor
medido, respecto al valor deseado.
CONTROL AUTOMÁTICO: es el mantenimiento de un valor deseado dentro de
una cantidad o condición, midiendo el valor existente, comparándolo con el valor
deseado, y utilizando la diferencia para proceder a reducirla.
CONTROLADOR: es el dispositivo hardware mediante el cual se lleva a cabo la
acción de control de regulación de energía suministrada al sistema.
CONTROL PID: es un controlador que con base en el error del sistema calcula la
acción del control que se deba tomar, esta compuesto de tres partes que son:
Una acción proporcional, una acción integral y una acción derivativa.
DATAGRAMAS: paquete o unidad de información que incluye información de
entrega relevante, como la dirección de destino, que se envía a través de una red
de conmutación de paquetes.
DNS: sistema de nombres de dominio. Base de datos jerárquica y distribuida que
contiene asignaciones de nombres de dominio DNS para varios tipos de datos,
como direcciones IP. DNS permite la búsqueda de equipos y servicios mediante
nombres descriptivos.
E/S: acrónimo de Entrada y Salida
ERROR: diferencia algebraica entre el valor leído o transmitido por el instrumento
y el valor real de la variable medida.
FTP: acrónimo de Protocolo de Transferencia de Archivos. Miembro del conjunto
de protocolos TCP/IP que se utiliza para copiar archivos entre dos equipos en
Internet. Ambos equipos deben admitir sus funciones FTP correspondientes: uno
debe ser un cliente FTP y el otro un servidor FTP.
HTTP: acrónimo de Protocolo de Transferencia de Hipertexto. Utilizado para
transferir información en Internet o una Intranet. Una dirección HTTP tiene el
siguiente formato: http://www.microsoft.com.
PAQUETE DE DATOS: unidad de información que se transmite de una vez entre
dos dispositivos de una red de computadores.
PIC: acrónimo de Controlador de Interface Periférico.
PLANTAS: unidad física o edificio en que se realizan los procesos de producción
industriales. Puede ser una parte de un equipo, tal vez un conjunto de las partes
de una maquina que funcionan juntas, el propósito de la cual es ejecutar una
operación particular.
PROCESOS: es una operación voluntaria o artificial progresivamente continua,
que consiste en una serie de acciones controladas o movimientos dirigidos
sistemáticamente hacia determinado resultado o fin.
PROTOCOLO: conjunto de normas y convenciones para enviar información a
través de una red.
PUNTO DE CONSIGNA: variable de entrada en el controlador que fija el valor
deseado de la variable controlada.
SISTEMAS: es una combinación de componentes que actúan conjuntamente y
cumplen determinado objetivo. El termino sistema hay que interpretarlo como
referido a sistemas físicos, biológicos y otros.
SENSOR: instrumento o sistema, capaz de percibir una señal, ya sea mecánica,
acústica, luminosa, calorífica, eléctrica o electrónica.
SMTP: acrónimo de Protocolo Simple de Transferencia de Correo. Miembro del
conjunto de protocolos TCP/IP que controla el intercambio de correo electrónico
entre agentes de transferencia de mensajes.
TCP: acrónimo de Protocolo de Control de Transmisión.
TCP/IP: acrónimo de Protocolo de Control de Transmisión/Protocolo de Internet.
Conjunto de protocolos de red muy utilizados en Internet que permiten la
comunicación entre redes interconectadas formadas por equipos con distintas
arquitecturas de hardware y sistemas operativos.
TELNET: protocolo de emulación de terminal muy utilizado en Internet para iniciar
sesión en equipos de red. Telnet hace referencia también a la aplicación que
utiliza el protocolo Telnet para los usuarios que inician sesión desde ubicaciones
remotas.
TFTP: acrónimo de protocolo trivial de transferencia de archivos. Protocolo
utilizado para descargar los archivos iniciales necesarios para comenzar el
proceso de instalación.
UDP: acrónimo de Protocolo de Datagramas de Usuario. Complemento de TCP
que ofrece un servicio de datagramas sin conexión que no garantiza la entrega o
la secuencia correcta de los paquetes entregados (de forma similar a IP).
UTP: acrónimo de par trenzado sin apantallar (Unshielded Twister Pair). Medio de
transmisión (cable) que se usa en las redes de área local.
VARIABLE CONTROLADA: es la cantidad o condición que se mide y controla,
esta es la señal de salida del sistema. Dentro del bucle de control es la variable
que se capta a través del transmisor y que origina una señal de realimentación.
VARIABLE MANIPULADA: es la cantidad o condición modificada por el
controlador, a fin de afectar la variable controlada.
RESUMEN
En este documento se presenta detalladamente las etapas de análisis, diseño e
implementación de un sistema integrado para la supervisión y control de procesos
industriales con comunicación vía Ethernet SCAM, basado en un módulo de
control digital RCM2200 que permite hacer control a bajo costo en un pequeño
microprocesador Rabbit 2000, y comunicación con dispositivos Rabbit/Z-World y
computadores en una red Ethernet bajo el protocolo TCP/IP.
Se da a conocer el soporte teórico del proyecto, relacionado a los sistemas de
control digital y las redes de comunicación industrial, haciendo mayor énfasis en la
red de comunicación Ethernet y el protocolo TCP/IP.
Palabras claves: control PID, ethernet, módulo de control digital, protocolo, Rabbit,
red, sistema, TCP/IP.
23
INTRODUCCIÓN
Hoy en día, muchos de los procesos de producción de las fábricas, están ligados a
sistemas que controlan cada una de las fases de producción de forma autónoma,
los cuales permiten minimizar costos y aumentar la eficiencia de estos procesos.
El inconveniente de estos sistemas de control es su elevado costo de
implementación para las pequeñas y medianas empresas del sector industrial.
Siendo una necesidad creciente para estas empresas se diseñó e implementó un
sistema como “SCAM” que permite hacer control y/o monitoreo de procesos
industriales a bajo costo y brinda conectividad a otros sistemas a través de redes
ethernet, gracias a que utiliza un módulo de control embebido RCM 2200 basado
en un microprocesador Rabbit 2000.
Este módulo se caracteriza por poseer canales de entradas y salidas digitales y
un canal de entrada análoga adoptada por medio de un conversor A/D, para la
conexión de los elementos de medición y control; además tiene un puerto de
comunicación serial (para la programación del módulo), y un puerto Ethernet para
la comunicación del sistema con otros dispositivos en una red. La programación
del modulo de control se realizó utilizando el entorno de desarrollo de Z-World
denominado Dynamic C, siendo éste un compilador basado en el lenguaje de
programación C ANSI, para uso especifico de la familia de microprocesadores
Rabbit 2000 y 3000.
Por otro lado, el sistema SCAM determina una alternativa factible para las
empresas de nuestra región, que busquen una solución integral para el control y
supervisión de procesos.
24
EL PROBLEMA Y OBJETIVOS DE LA INVESTIGACIÓN
ANTECEDENTES DEL PROBLEMA
En la actualidad el programa de Ingeniería de Sistemas de la Corporación
Universitaria Rafael Núñez CURN, ha realizado varias investigaciones en el área
de Automatización Industrial, principalmente en sistemas de control y monitoreo
con comunicación vía serial RS-232, como: la implementación de un sistema de
control de nivel de líquidos, controlador PID para regulación de un
servomecanismo de posición y un software para monitoreo de análisis en tiempo
real de la prensa multiuso digital del laboratorio de suelos del programa de
Ingeniería Civil de la CURN.
Igualmente en instituciones de educación superior en la ciudad como la
Universidad Tecnológica de Bolívar, Universidad Antonio Nariño, SENA Industrial,
Escuela Naval Almirante Padilla, etc. han realizado proyectos de sistemas de
control de temperatura, nivel de líquidos, entre otros, pero no se tiene información
acerca del desarrollo de sistemas de control embebidos con comunicación vía red
Ethernet, en Cartagena y en la región de la costa Caribe.
En el ámbito nacional se han realizado investigaciones relacionadas con sistemas
de control embebido con comunicación a una red, pero no se tiene evidencia del
uso de los microprocesadores Rabbit o Z-World en la implementación de estos,
entre las que cabe mencionar:
“Ajuste de controladores PID para sistemas de control en red”, realizada por
un estudiante de la Maestría en Ingeniería con énfasis en Automática de la
Universidad del Valle.
25
“Diseño e Implementación de un sistema de Control Distribuido para el
laboratorio de Automática de la Universidad del Valle”, ejecutado por
estudiantes de Ingeniería Electrónica de la Universidad del Valle.
“Sistema de Adquisición de Datos con PIC y PLD para un sistema
embebido", estudiante de Ingeniería Electrónica de la Universidad del Valle.
“Desarrollo de un controlador difuso para sistemas embebido utilizando
lenguaje C”, realizado en la Universidad de Antioquia
26
PLANTEAMIENTO DEL PROBLEMA
Actualmente la mediana y pequeña empresa del sector industrial de la ciudad de
Cartagena, tienen que recurrir a grandes inversiones en equipos de control y
medición para poder controlar sus respectivos procesos de producción y/o control
de calidad, con el fin de estar en un nivel de competitividad alto, la cual permita a
éstas competir con calidad en el mercado nacional e internacional por razones de
la globalización económica.
Sin embargo, muchas de estas PYMES (Pequeñas y Medianas empresas) no
poseen el capital económico ni la infraestructura tecnológica suficiente que
demanda implantar un sistema de control moderno y eficiente. Debido a esto, los
procesos son controlados casi por completo de manera manual, basándose en el
conocimiento y experiencia del personal. A pesar de que los resultados obtenidos
del proceso de control manual son relativamente buenos, la falta de monitoreo y
automatización del proceso impide minimizar costos y aumentar la calidad del
producto final, siendo estos dos argumentos factores primordiales para ser
competitivos en los mercados.
27
JUSTIFICACIÓN DE LA INVESTIGACIÓN
La problemática planteada anteriormente, evidencia la necesidad de desarrollar un
sistema de control automático y monitoreo de bajo costo en implementación,
embebido en una tarjeta con microprocesador de última generación y con
comunicación a una Red Ethernet (Intranet Corporativa), la cual a pesar de no
tener las mismas prestaciones que ofrecen los dispositivos de control que se
venden en el mercado, permite suplir las necesidades básicas de automatización y
monitoreo de los procesos de producción de estas PYMES, sin la necesidad de
acudir a grandes inversiones en equipos de elevado costo y con la ventaja de
utilizar una infraestructura de comunicación vía Ethernet, siendo ésta la mas
ampliamente utilizada en el sector empresarial en el campo de la ofimática y de
muy recientemente uso en la industria con un crecimiento vertiginoso debido a su
fácil implementación y configuración.
De igual forma, se determinó que el sistema de monitoreo y control automático
con comunicación vía Ethernet, se proyecta como una herramienta tecnológica
gestora de nuevos conocimientos, aplicando la Ingeniería de Sistemas al campo
de la Automatización Industrial, que es una de las áreas de profundización e
investigación que se promueve en el programa de Ingeniería de Sistemas de la
CURN. Además este proyecto, servirá de base a nuevas investigaciones
tecnológicas propiciadas por estudiantes y personas comprometidas con el
desarrollo de esta línea de investigación.
28
OBJETIVOS DE LA INVESTIGACIÓN
OBJETIVO GENERAL
El objetivo principal del proyecto es el diseño e implementación de una
herramienta hardware software para el control y supervisión de variables de un
proceso empleando un controlador PID digital, y con conectividad a una red
Ethernet, a fin de transmitir los datos obtenidos en la ejecución del sistema.
OBJETIVOS ESPECÍFICOS
Implementar un controlador PID embebido en el módulo de control
RabbitCore RCM2200.
Desarrollar la interfaz de monitoreo que permita la configuración de
parámetros en el módulo de control digital y la captura de dato(s)
provenientes de éste.
Documentar el uso de los protocolos de comunicación de la familia de
protocolos TCP/IP como son HTTP, SMTP, TELNET, el protocolo de
transporte UDP y el servicio DNS a través de ejemplos prácticos aplicados
al módulo de control RCM2200.
Implementar una librería de funciones que permita configurar los
parámetros de configuración de red (IP, Mascara de Red, Puerta de Enlace,
entre otros) y funciones básicas para los protocolos de comunicación
descritos anteriormente.
29
META DE LA INVESTIGACIÓN
Realizar un sistema de control y monitoreo con comunicación a una red Ethernet
que sea factible económica y técnicamente implementarlo a largo plazo en las
empresas del sector industrial a nivel local y regional, debido a que sus costos de
ejecución son mínimos en comparación con otros sistemas desarrollados por
multinacionales del sector que implican elevados costos en equipamiento de
desarrollo, medición y control.
30
1. SISTEMAS DE CONTROL DIGITAL
En el desarrollo del sistema de control automático del proyecto se empleó un
módulo de control digital basado en un microprocesador Rabbit1 2000 de última
generación, que mediante la implementación del algoritmo de control PID
embebido en la memoria de éste, permite hacer control directo y avanzado a un
proceso. Por tal motivo en este capitulo se describe las características principales
de un controlador digital, haciendo primeramente una introducción a los sistemas
de control y controladores análogos.
1.1 SISTEMAS DE CONTROL
Los procesos industriales a controlar pueden dividirse ampliamente en dos
categorías: procesos continuos y procesos por eventos. En ambos tipos, deben
mantenerse en general las variables (presión, caudal, nivel, temperatura, etc.), ya
sea en un valor deseado fijo, o en un valor variable con el tiempo de acuerdo con
una relación predeterminada, o bien guardando una relación determinada con otra
variable.
El sistema de control que permite regular estas variables puede definirse como
aquel que compara el valor de la variable o condición a controlar con un valor
deseado (punto de consigna o referencia) y toma una acción de corrección de
acuerdo con la desviación existente sin intervención humana (automáticamente).
Por consiguiente, para la comparación de estos dos valores y correspondiente
corrección sean posibles, se debe incluir en un sistema de control una unidad de
medida, una unidad de control, un elemento final de control (actuador) y el propio
1 Vea Anexo A “Manual de usuario del módulo Rabbit RCM2200”
31
proceso a controlar. Este conjunto de unidades forman un bucle o lazo que recibe
el nombre de lazo de control.
Figura 1. Elementos de un sistema de control
1.1.1 Clasificación de los sistemas de control. Los sistemas de control se
clasifican en sistemas de control de lazo abierto y de lazo cerrado. La distinción la
determina la acción de control, que activa al sistema para producir la salida.
Igualmente, estos sistemas de control pueden ser neumáticos, análogos y digitales
o discretos, siendo este último el de mayor trascendencia tecnológica en
aplicaciones informáticas de uso industrial recientemente.
Sistema de control de lazo abierto. Es aquel en el cual la acción de
control es independiente de la salida. Los sistemas de control a lazo
abierto tienen dos rasgos sobresalientes:
o La habilidad que éstos tienen para ejecutar una acción con exactitud
está determinada por su calibración. Calibrar significa establecer o
+
Valor de consigna
Suministro
-
Variable controlada
Proceso
Medición
Control
Actuador final
32
restablecer una relación entre la entrada y la salida con el fin de obtener
del sistema la exactitud deseada.
o Estos sistemas no tienen el problema de la inestabilidad, que presentan
los de lazo cerrado.
Un esquema de este sistema se muestra en la siguiente figura.
Figura 2. Diagrama de bloque de un sistema de lazo abierto
Sistema de control de lazo cerrado. Es aquel en donde la acción de
control es en cierto modo dependiente de la salida. Los sistemas de control
de lazo cerrado se llaman comúnmente sistemas de control por
realimentación (o retroacción).
Un sistema de control de nivel líquido es un ejemplo claro de un sistema de
lazo cerrado, debido a que aquí el controlador automático regula el nivel
del líquido comparando el nivel efectivo (real) con el deseado, y corrigiendo
cualquier error por medio del ajuste de la apertura de la válvula neumática.
Esto se puede ver claramente en la figura 3 y 4.
Controlador Indicador o registrador
Valor
deseado
Punto de
consigna
Elemento primario de medida
Proceso
33
Figura 3. Sistema de control de nivel de líquido
Figura 4. Diagrama de bloque de un sistema de control de nivel liquido
1.1.2 Acciones de control. La forma como el controlador automático produce la
señal de control, se denomina acción de control. En controladores industriales es
muy común encontrar los siguientes seis tipos de acción básica de control, según
lo manifestado por Katsuhiko Ogata en el libro Ingeniería de Control Moderna2
2 KATSUHIKO, Ogata. Ingeniería de Control Moderna. Madrid : Prentice Hall, 1999. p. 194 - 203
Señal de control
Controlador Válvula neumática
Deposito de Agua
Flotador
Nivel
deseado Nivel
real
Corrección
Controlador
Flujo de
entrada
Válvula
neumática
34
Control de dos posiciones o de encendido-apagado (On/Off).
Control proporcional.
Control integral.
Control proporcional e integral.
Control proporcional y derivativo.
Control proporcional integrativo derivativo.
En la implementación del controlador automático del proyecto se empleó el control
proporcional integrativo derivativo PID, para realizar las acciones correctivas al
proceso que se este controlando, dado que es eficaz si se emplea de manera
adecuada, posee una estructura simple y se adapta muy bien a numerosos tipos
de procesos.
1.1.3 Control proporcional integrativo derivativo. Es la combinación de los
efectos de acción proporcional, integral y derivativa. Esta combinación tiene las
ventajas de cada una de las tres acciones de control individuales. La ecuación
matemática general para ésta acción de control es:
t
dipdt
tdeTdtteTteKtu
0
)()()()(
Donde:
u(t) es la señal de salida del controlador o acción correctora de control.
e(t) es la señal de error siendo la diferencia entre el valor de referencia y el valor
de la variable controlada. e(t) = referencia – variable controlada.
Kp es la ganancia proporcional.
Ti es el tiempo integral.
Td es el tiempo derivativo.
35
1.2 CONTROLADORES ANÁLOGOS
Los controladores análogos actuales utilizados para obtener los diversos tipos de
control mencionados anteriormente hacen uso del amplificador operacional. Éste
es un dispositivo amplificador de la diferencia de sus dos entradas, con una alta
ganancia, una impedancia de entrada muy alta y una baja impedancia de salida, el
cual mediante la conexión de componentes electrónicos adecuados dispuestos en
forma de realimentación positiva o negativa, constituye el corazón de estos
controladores. Necesita sólo una corriente de entrada del orden de los 0.5 nA
(0.5*10-9 A) para dar lugar a un cambio total de la señal de salida (un valor
próximo a la corriente de alimentación).
La mayor parte de los amplificadores operacionales son amplificadores
diferenciales que, en esencia disponen de tres terminales, dos en la entrada y uno
de salida. Una señal de entrada aplicada al terminal denominado “no inversor”
hará que la salida cambie en la misma dirección: el símbolo aplicado es +Ve. Una
variación de señal en la otra entrada hará que la señal de salida cambie en
dirección inversa. Este segundo terminal se denomina “inversor” y se representa
por el símbolo -Ve.
Un ejemplo de la utilización del amplificador operacional es un controlador PID
análogo, que consiste en un módulo proporcional más integral, donde se fija la
ganancia o banda proporcional, se amplifica la desviación entre la variable de
proceso y el punto de consigna, se fija el valor del punto de consigna y se
selecciona la acción directa o la inversa del controlador, y un módulo de acción
derivada modificada. En la figura 5 puede verse un esquema simplificado del
controlador PID análogo.
36
Figura 5. Esquema simplificado del controlador PID análogo
1.3 CONTROLADORES DIGITALES
El controlador digital se basa para su funcionamiento de uno o más
microprocesadores, el cual permite realizar operaciones de cálculo complejas a
una alta velocidad de procesamiento, apoyándose en dispositivos como la
memoria RAM o Flash para poder almacenar datos y comunicarse con periféricos
a través de canales de señales o buses: bus de datos, de direcciones y el bus de
control. En la figura 6 puede verse el esquema general de un controlador digital.
37
Existen controladores digitales individuales, en particular para procesos continuos
(en línea) y por eventos (por lote), que llevan a cabo control multifunción3, actúan
como instrumentos reguladores (para variables como la presión, el caudal, el nivel,
la temperatura, etc.), con control lógico y control secuencial, efectúan operaciones
aritméticas, monitorizan entradas y salidas, y tienen capacidad gráfica con
representación de balance de materia. Este tipo de controladores permite incluso
la creación de software para definir todas las situaciones y secuencias de la
operación, como es el caso del módulo de control digital Rabbit 2200 empleado
en este proyecto.
Figura 6. Esquema general de un controlador digital
Se incluye la librería principal TCP/IP la cual hace el llamado a la librería de
funciones dns.lib, entre otras,
En el programa principal se declaran las variables que se utilizarán para
almacenar la dirección IP del nombre de dominio que será buscado.
void main()
{ longword ip;
char buffer[20];
sock_init(); // se inicializa la conexión
La función resolve( ), convierte una cadena de texto que contiene cualquier
dirección IP decimal punteada o un nombre de host a su correspondiente dirección
IP binaria. La cual retorna cero (0) si no resuelve el nombre de host, de lo contrario
devuelve diferente de cero (!0), es decir, la dirección IP encontrada. Si la función
recibe como parámetro una dirección IP punteada esta retornará la misma
dirección IP en su formato binario.
ip = resolve("www.curn.edu.co");
if(ip==0)
printf("no encontró www.curn.edu.co \n");
else
printf("%s esta es la dirección IP de www.curn.edu.co.\n",
inet_ntoa(buffer,ip));
} //cierra main
Luego de retornarse la dirección IP en formato binario se almacena en la variable
de tipo cadena ip, que sirve como uno de los parámetros de la función inet_ntoa(),
la cual convierte una dirección IP binaria a su formato decimal punteado, es decir,
cuatro (4) números decimales cada uno con valor que va de 0 a 255 separados
95
por punto "." , almacenándose este valor en el arreglo buffer que se declaró al
inicio del programa.
4. ANALISIS Y DISEÑO DEL SISTEMA DE MONITOREO Y CONTROL
4.1 GENERALIDADES DEL SISTEMA
En el proceso de recopilación de información relacionada a este proyecto y la
investigación correspondiente a los módulos de control embebidos Rabbit, surgió
la necesidad de diseñar e implementar un sistema integrado para la supervisión y
control de procesos industriales con comunicación vía red Ethernet SCAM.
Este sistema debe permitir monitorear, configurar y registrar información de la
variable controlada de un determinado proceso de control y, que a la vez sea de
bajo costo y de fácil implementación para las empresas del sector industrial local.
Teniendo en cuenta estos requerimientos, se optó por realizar dos aplicaciones:
una en formato Web para la interfaz de monitoreo y configuración del sistema,
aprovechando la funcionalidad que nos ofrece el módulo Rabbit de configurarse
como un servidor HTTP. La segunda es una aplicación de escritorio para
almacenar en una base de datos información de la variable controlada.
96
Las aplicaciones Web disminuyen los costos de implementación, mantenimiento y
manejo de recursos de sistema en una organización, debido a que fácilmente se
ejecutan en cualquier sistema operativo que tenga un navegador Web (Internet
Explorer, Netscape, otros) con conexión a una red LAN ethernet o a Internet.
Esta aplicación Web llamada SCAM Web, consiste en monitorear la(s) variable(s)
de un proceso automatizado, en este caso el monitoreo de temperatura y
configurar los parámetros del controlador PID digital, introduciendo los valores de
Kp (constante proporcional), Ti (tiempo integrativo), Td (tiempo derivativo),
Frecuencia de Muestreo y Valor de Referencia (Setpoint) de temperatura desde el
teclado, para así afectar el valor de la variable controlada. La lectura de esta
variable, es proporcionada al módulo de control Rabbit RCM2200 mediante un
sensor de señal análoga. Esta señal análoga es convertida a señal digital
mediante un conversor A/D, para así entregar un valor adecuado que el módulo
pueda procesar, ya que éste solo tiene entradas y salidas digitales. Luego de que
se compare el valor de entrada de la variable controlada con el valor de referencia
introducido y se realice el respectivo cálculo de error, se visualiza el nuevo valor
de la variable controlada en la aplicación Web.
Por otro lado, el procesamiento de las órdenes del operador/usuario desde la
aplicación Web se realiza por medio de CGI (interfaz de pasarela común) que es
una rutina que se ejecuta en tiempo real en un servidor Web o HTTP en respuesta
a una solicitud de un navegador Web (cliente). Cuando esto sucede el servidor
Web (Rabbit RCM2200) ejecuta una rutina programada especifica que recibirá los
datos que envía el operador/usuario para luego procesarlos en forma de variables
y responder con el recurso solicitado si es necesario.
Para llevar a cabo las etapas del proceso de software se utilizó el modelo lineal
secuencial como estrategia de desarrollo de software, en el cual se busca un
97
desarrollo de software de manera lineal, dando como resultado final la culminación
de un sistema completo. Esto es debido a que la naturaleza del sistema ameritó
emplear un modelo de proceso de ingeniería de software que comprendiera las
etapas de análisis, diseño, codificación, prueba y depuración para el sistema a
desarrollar.
Por consiguiente, para el análisis del sistema se apoyo del método de análisis
estructurado a fin de determinar los requerimientos funcionales de éste. En la
etapa de diseño se plasmó los requerimientos identificados durante la fase de
análisis, a través de bosquejos que representan el formato o pantalla que se
espera que aparezca cuando el sistema esté terminado. En la codificación se
utilizó el paradigma de programación estructurada (convencional) para desarrollar
el software, ya que éste es el empleado en la programación del módulo de control
Rabbit RCM2200.
4.2 ANÁLISIS ESTRUCTURADO DEL SISTEMA
Para el análisis de requerimientos y/o especificaciones del sistema desarrollado,
se empleó el análisis estructurado como método de modelado clásico, el cual
utiliza símbolos gráficos y diccionarios de datos para modelar un sistema nuevo o
existente. En la actividad de análisis de este sistema se aplicó las notaciones
ampliadas por Ward y Mellor11 para el análisis de flujo de datos en sistemas de
control o de tiempo real.
Diagrama 2. DFD de contexto del sistema SCAM
11 PRESSMAN, Rogers. Ingeniería del software: Un enfoque práctico. 5 ed. Madrid: McGraw Hill, 2002. p. 207 – 214.
98
El diagrama de contexto anterior es la representación a alto nivel del sistema de
control y monitoreo SCAM, en la cual elementos externos (fuentes) afectan con
sus entradas de alguna manera el proceso de software. Los elementos que hacen
parte de este modelo contextual son los siguientes:
Panel de Control. Este elemento externo, permite al usuario/operador
interactuar directamente con el sistema a través del teclado y el ratón del
equipo de computo, es decir, le proporciona a éste la posibilidad de digitar y
enviar datos y ordenes respectivamente al sistema de monitoreo y control.
Sensores. Son los elementos o dispositivos que perciben las señales
eléctricas, luminosas, mecánicas, etc. de las variables que se están
controlando en el sistema, para luego convertirlas en variables adecuadas
que se compararán con los valores de entrada de referencia de dichas
variables.
99
Monitor del panel de control. Es el dispositivo hardware del equipo de
cómputo que visualiza toda la información relacionada a la(s) variable(s)
que se controla(n), los parámetros de configuración del controlador PID,
etc., la cual es producida en la ejecución y operación del sistema.
Alarma. Mecanismo de prevención que indica al usuario/operador del
sistema posibles anormalidades, ya sea en algún proceso de control de
variable(s). Se presenta en forma de mensajes al correo electrónico del
operador/usuario o mensajes por pantalla.
Planta. Es la unidad física en la que se realiza el proceso control.
El siguiente diagrama de nivel 1 describe los respectivos procesos que son
ejecutados en el sistema de control y monitoreo. El operador/usuario
inicialmente interactúa con la interfaz de monitoreo SCAM Web para poder
ejercer la tarea de supervisión y operación del sistema o especificar los
parámetros de configuración del algoritmo de control PID que reside en la
memoria del módulo de control digital. Este módulo lee la señal proveniente
del sensor y la convierte en una señal adecuada para poderla interpretar y así
de esta manera realizar la acción de control de la variable de entrada al
sistema.
Diagrama 3. DFD Nivel 1 del sistema SCAM
100
Diagrama 4. DFD Nivel 2 que refina el proceso de interactuar con operador
101
Diagrama 5. DFD Nivel 2 que refina el proceso de configuración parámetros
sistema
Diagrama 6. DFD Nivel 2 que refina el proceso de control de variables
102
Diagrama 7. DFD Nivel 3 que refina el proceso de iteración algoritmo de control
PID
4.3 DICCIONARIO DE DATOS
103
4.3.1 Procesos. Descripción de los procesos de primer nivel.
PROCESO 1. Interactuar con operador
DESCRIPCIÓN Proceso por el cual el usuario/operador se pone en contacto con el software a través del teclado y ratón, para dar inicio al proceso de monitorización y operación de la planta o proceso.
ENTRADA Datos de operador
SALIDA Orden de inicialización Petición de configuración
PROCESO 2. Configurar parámetros sistema
DESCRIPCIÓN Permite al usuario/operador establecer parámetros de configuración de: gestión de usuarios, Valor(es) de referencia de la(s) variable(s) a controlar, constantes Kp, Ti, Td y Frecuencia de muestreo.
ENTRADA Petición de configuración
SALIDA Datos de configuración
PROCESO 3.Supervisión y operación sistema
DESCRIPCIÓN Permite visualizar el estado de la(s) variable(s) que se controla en el sistema de control, a través de valores reales proporcionados en cada instante por el módulo de control.
ENTRADA Orden de inicialización Estado de variable(s)
SALIDA Información a visualizar
104
PROCESO 4. Enviar parámetros al controlador vía red
DESCRIPCIÓN Los datos que han sido introducidos en el proceso de configuración de parámetros del sistema, son enviados a través de la red Ethernet al módulo de control RCM2200, el cual se encuentra conectado a un punto de red, para así ajustar o modificar los parámetros preestablecidos en este módulo.
ENTRADA Datos de configuración
SALIDA Ajuste de parámetros
PROCESO 5. Control de variable
DESCRIPCIÓN En este proceso se lee continuamente las señales que son enviadas por los distintos sensores, es decir los valores de las variables que se están controlando, que a su vez se comparan con los valores de referencia de dichas variables, para así emitir señales correctivas y de alarma al sistema en general.
ENTRADA Señale(s) de sensor(es) Ajuste de parámetros
SALIDA Estado de variable(s) Tipo de alarma Señal de control
4.3.2 Flujo de datos. Descripción de los flujos de datos de primer nivel.
NOMBRE DEL FLUJO DE DATOS Datos de operador/usuario
DESCRIPCIÓN Representa los datos de inicio de sesión como cuenta de usuario y contraseña
PROVENIENTE DE LA FUENTE Panel de control
PARA EL PROCESO Interactuar con operador
NOMBRE DEL FLUJO DE DATOS Señal de sensor
DESCRIPCIÓN Impulsos eléctricos que son enviados a un módulo de conversión de datos análogo/digital
PROVENIENTE DE LA FUENTE Sensor
PARA EL PROCESO Control de variable
105
NOMBRE DEL FLUJO DE DATOS Petición de configuración
DESCRIPCIÓN Permite que el operador/usuario asigne y/o modifique parámetros de referencia en el sistema, para el control de los diferentes eventos que han sido preestablecidos en éste.
PROVENIENTE DEL PROCESO Interactuar con operador
PARA EL PROCESO Configurar parámetros sistema
NOMBRE DEL FLUJO DE DATOS Orden de inicialización
DESCRIPCIÓN Orden que se le da al sistema de monitoreo para que inicialice el proceso de supervisión y operación.
PROVENIENTE DEL PROCESO Interactuar con operador
PARA EL PROCESO Supervisión y operación sistema
NOMBRE DEL FLUJO DE DATOS Estado de variable
DESCRIPCIÓN Indica el valor que toma la variable controlada en un instante de tiempo determinado. Este valor es enviado desde el módulo de control RCM2200 a la aplicación Web a través de la red Ethernet
PROVENIENTE DEL PROCESO Control de variable
PARA EL PROCESO Supervisión y operación sistema
NOMBRE DEL FLUJO DE DATOS Información a visualizar
DESCRIPCIÓN Conjunto de datos reales procesados desde el módulo de control o resultado de la configuración de parámetros del controlador con el fin de que el operador/usuario los observe de una manera clara y detallada.
PROVENIENTE DEL PROCESO Supervisión y operación sistema
PARA EL DESTINO Monitor panel de control
106
NOMBRE DEL FLUJO DE DATOS Tipo de alarma
DESCRIPCIÓN Representa un nivel de prioridad de la alarma cuando suceden anomalías en el normal desempeño del sistema de monitoreo y control. Se presenta en forma de mensajes al correo electrónico del operador/usuario o mensajes por pantalla.
PROVENIENTE DEL PROCESO Control de variable
PARA EL DESTINO Alarma
NOMBRE DEL FLUJO DE DATO Datos de configuración
DESCRIPCIÓN Representa cada uno de los datos parámetrizados en el sistema, como punto de ajuste de la variable a controlar, valores Kp, Ti, Td, frecuencia de muestreo, y datos de gestión de usuario.
PROVENIENTE DEL PROCESO Configuración parámetros sistema
PARA EL PROCESO Enviar parámetros al controlador vía red
NOMBRE DEL FLUJO DE DATO Ajuste de parámetros
DESCRIPCIÓN Son los datos que han sido introducidos previamente en el proceso de configuración del sistema, los cuales modificaran los valores de las variables preestablecidas en el módulo de control, como son Kp, Ti, Td, Ts, setpoint, etc
PROVENIENTE DEL PROCESO Enviar parámetros al controlador vía red
PARA EL PROCESO Control de variable
NOMBRE DEL FLUJO DE DATO Registro de variable
DESCRIPCIÓN Representa la información de la variable controlada que se registra en la base de datos, como lo es nombre de variable, valor, unidad, estado, hora y fecha de almacenamiento.
PROVENIENTE DEL PROCESO Control de variable
PARA EL ALMACEN Bases de Datos SCAM
107
4.4 DISEÑO DE LA INTERFAZ DE MONITOREO SCAM WEB
4.4.1 Diseño arquitectónico. Para el diseño de la aplicación Web se empleó la
notación de estructura jerárquica12 que es la arquitectura de aplicaciones Web
más común.
Figura 17. Diseño arquitectónico de la aplicación SCAM Web
12
PRESSMAN, Op.cit., p. 529
108
4.4.2 Diseño de plantillas de la interfaz de usuario. En el diseño de la interfaz
de usuario (pantallas) de una aplicación se comienza por reconocer que ésta está
compuesta por diferentes áreas. Por consiguiente en el diseño de la interfaz de
usuario de la aplicación SCAM Web, se elaboró una serie de plantillas que
esbozan como quedarán definidas las diferentes áreas de esta interfaz.
La plantilla de la página de inicio de la aplicación SCAM Web, consta de tres
zonas o áreas, las cuales son mostradas en la siguiente figura.
109
Figura 18. Plantilla página inicio de sesión
Área de Logotipo
Área de Contenido
Área de inicio de Sesión
En la plantilla de la página principal, también se encuentra establecida un área de
logotipo que es común para las demás, una de vínculo que son los enlaces a las
otras páginas de la aplicación y un área de supervisión respectivamente, como se
observa a continuación.
Figura 19. Plantilla página principal
Área de Logotipo
Área de Vínculos
Área de Supervisión
Para las páginas de configuración de parámetros PID y configuración de usuarios,
se tomó como base la misma plantilla, ya que ambas le proporcionan al
usuario/operador configurar parámetros en el sistema.
Figura 20. Plantilla páginas de configuración parámetros PID y de usuarios
110
El diseño de la plantilla de la página de ayuda, incluye un área de contenido en
donde se visualizará la información que solicita el usuario/operador sobre el
manejo de la aplicación Web e información pertinente de los desarrolladores de
ésta. Además contiene un área de vínculos como en las anteriores.
Figura 21. Plantilla página de ayuda
Por último, se diseño la
plantilla para mostrar los
mensajes de alarma o error
de ingreso de datos, para así
indicarle al usuario/operador que se presenta una anormalidad en el sistema.
Figura 22. Plantilla para mensajes de alarma o error de ingreso de datos
Área de Logotipo
Área de Vínculos
Área de Configuración
Área de
Vínculos
Área de contenido
111
4.4.3 Diseño de entrada de datos. El diseño de entrada se basa en el desarrollo
de especificaciones y procedimientos para la preparación de los datos que se
ingresarán en el sistema; de forma que puedan ser utilizables para el
procesamiento de información valiosa para el usuario. En el diseño de entrada de
datos de la aplicación SCAM Web, se tuvo presente el tipo de datos que se
ingresa en los respectivos formularios de captura de datos, para así aplicar
procedimientos como la validación de datos, es decir si la entrada tiene un formato
sólo numérico, texto o alfanumérico.
Para la entrada de los datos de identificación nombre de usuario y contraseña en
la página de inicio de sesión, se empleó cajas de texto básicas (Textbox) como se
muestra en la figura 23. Se consideró que estos datos pueden ser alfanuméricos y
con un tamaño máximo de veinte cinco (25) caracteres por campo, para una
mayor seguridad en el acceso al sistema. Además el campo contraseña es
definido como dato confidencial o privado, en donde el texto introducido se
sustituye por viñetas para ocultar éste a otras personas que pueden estar
mirándolo. Sin embargo las contraseñas que se envían al servidor Web mediante
campos de contraseña no están cifradas.
Figura 23. Diseño de entrada de los datos nombre de usuario y contraseña
Área de titulo
Área de mensaje
112
Igualmente, para los datos de configuración de usuario se emplea el mismo diseño
de entrada, cajas de texto para los datos de modificación de contraseña y correo
electrónico en formato alfanumérico, y una caja de selección para indicar el tipo
de usuario al que se le cambiarán los parámetros anteriores, como se muestra en
la figura 24.
Figura 24. Diseño de entrada de datos gestión de usuario
Datos Proporcionado por
el operador/usuario
113
En la siguiente figura se observa el área de configuración de los parámetros del
controlador PID. Aquí se introducen los valores de tipo numérico de las variables
valor de referencia de la variable controlada, Kp, Ti, Td y frecuencia de muestreo,
en cajas de texto para ser enviadas a través de la red Ethernet a la memoria del
módulo de control RCM2200, para así dar inicio o restaurar el proceso de control
automático.
Figura 25. Diseño de entrada de datos parámetros del controlador PID
Datos Proporcionado por
el operador/usuario
114
4.4.4 Diseño de controles. En esta aplicación, se han diseñado controles de
validación en la entrada de datos, con el fin de presentar mensajes de error y
advertencias al usuario/operador cuando éste introduce datos erróneos o se
contiene de ingresar datos en campos obligatorios.
En los campos de entrada nombre de usuario y contraseña se validó que estos
dos sean obligatorios para poder ingresar a la página principal de la aplicación.
Del mismo modo se validaron los campos de los parámetros de entrada del
controlador PID como obligatorios y solo números, para comprobar que los
campos contengan solamente caracteres numéricos; en caso contrario se
visualiza en pantalla un mensaje de error, como se muestra en las figura 26.
Figura 26. Mensaje de error de introducción de datos
Datos Proporcionado por
el operador/usuario
115
Figura 27. Mensaje de error indicando que un campo es obligatorio
En el campo correo electrónico de la página configuración de usuarios, se
comprueba por ejemplo, si la dirección de correo ingresada contiene un símbolo
arroba @.
4.4.5 Diseño de salida. En la aplicación SCAM Web las salidas del sistema
pueden ser: mensajes de alarma o error de ingreso de datos para informarle al
usuario/operador de cualquier anormalidad en el normal funcionamiento del
sistema de control y monitoreo, o la salida por pantalla del valor actual y valor de
referencia de la variable que se está controlando, en este caso la temperatura.
116
Figura 28. Salida del valor del variable controlada
Figura 29. Salida de un mensaje de error
4.5 DISEÑO DE LA APLICACIÓN DE ALMACENAMIENTO SCAM SERVER
Datos Proporcionados por
el sistema
117
La funcionalidad básica de SCAM Server es almacenar en una base de datos los
valores y estados de la variable controlada enviadas desde el módulo de control
RCM2200 a través de la red.
4.5.1 Diseño de módulos. La aplicación SCAM Server es un módulo del sistema
integrado SCAM, que a la vez esta constituido por los siguientes módulos.
Figura 30. Módulos de la interfaz SCAM Server
4.5.2 Diseño de la base de datos. La base de datos del sistema SCAM está
conformada por una tabla que almacena información de la variable controlada en
el módulo de control Rabbit RCM2200. Esta información permitirá crear históricos
de la variable, a fin de proporcionarle al usuario/operador del sistema la manera en
que se comporta ésta en un cualquier lapso de tiempo. La tabla llamada Variables
se compone de los campos nombre de la variable, valor, unidad, estado, hora y
fecha en que se tomo la lectura de la variable.
SCAM Server
Archivo Configuración Operación Ayuda
Salir C. Parámetros Iniciar escucha
Desconectar
Históricos
Acerca de
118
Tabla 2. Tabla Variables de la base de datos SCAM
Variable Valor Unidad Estado Hora Fecha
Texto Numérico Texto Texto Formato
corto
Formato
corto
5. PUEBAS E IMPLEMENTACIÓN DEL SISTEMA
119
5.1 ASPECTOS METODOLÓGICOS
En la realización de este proyecto de automatización de procesos industriales, se
utilizaron diversas metodologías en cada etapa que abarca el diseño e
implementación del sistema de control automático y monitoreo SCAM, estas
etapas se mencionan a continuación.
Recopilación de información. Inicialmente se realizó una recopilación de
información sobre los diferentes dispositivos de hardware disponibles en el
mercado que se emplean en el control de procesos industriales, de manera
que se ajustara a las necesidades básicas de automatización de las
pequeñas y medianas empresas a nivel local, y que presentara
características como bajo costo de implementación, conectividad con redes
Ethernet, programación a alto o bajo nivel, entre otras. Teniendo en cuenta
estos aspectos se decidió escoger el módulo de control digital Rabbit
RCM2200.
Documentación del dispositivo Rabbit RCM2200. Después de haber
seleccionado y adquirido el dispositivo, se realizó el estudio y
documentación de este sistema con el propósito de conocer su
funcionalidad y características más relevantes. Por ejemplo la forma de
programación, la conexión a redes Ethernet, los protocolos de
comunicación de red que soporta y compatibilidad con otros dispositivos
electrónicos.
Selección del algoritmo de control PID. Una vez conocida las
funcionalidades del módulo Rabbit RCM2200, se realizó un estudio sobre
los diferentes tipos de algoritmos de control que se podrían implementar en
este módulo, observando cual de los algoritmos se ajustaba mejor a las
necesidades del controlador a desarrollar. Finalmente se decidió escoger el
120
algoritmo de control Proporcional Integral Derivativo (PID) básico, dado que
es sencillo, ampliamente utilizado en el control de procesos industriales,
además se adapta muy bien a numerosos tipos de procesos.
Diseño del sistema de control. Luego de seleccionar el algoritmo de
control, se inició el diseño del sistema de control, con el propósito de definir
los principales componentes del software a desarrollar, como la
implementación del algoritmo PID, la interfaz de monitoreo, la interfaz de
almacenamiento de datos y la librería de funciones que permitan configurar
los parámetros de red (IP, Mascara de Red, Puerta de Enlace, entre otros)
y funciones básicas para los protocolos de comunicación.
Diseño y desarrollo de las interfaces de monitoreo y de
almacenamiento. Después de analizar los requerimientos del sistema de
monitoreo, se decidió realizar una aplicación en formato Web que pudiera
aprovechar las características y ventajas que ofrecen este tipo de aplicación
en un contexto empresarial, ya que se ejecutan en cualquier sistema
operativo que tenga un navegador Web con conexión a una red LAN
Ethernet o a Internet. Por consiguiente, para el diseño de la interfaz de
monitoreo se basó en la notación de estructura jerárquica, propia para el
diseño de aplicaciones Web. Luego para convertir este diseño a páginas
Web se utilizó la herramienta de desarrollo Web Macromedia Dreamweaver
MX 2004, que nos permitió desarrollar el código de las páginas en lenguaje
HTML incorporándole eventos JavaScript.
Además, se realizó el diseño y desarrollo de la aplicación de
almacenamiento, encargada de almacenar los valores de la variable
controlada registrados por el módulo de control. Esta aplicación de
escritorio se desarrolló con la herramienta Microsoft Visual Basic 6.0,
acoplándose a una base de datos desarrollada en Microsoft Access
121
mediante el objeto de datos ActiveX ADO. La característica principal de
esta aplicación es que presenta conectividad vía Ethernet con el sistema de
control por medio de la programación de socket's TCP.
Documentación e implementación de los protocolos TCP/IP. En esta
etapa se realizó la documentación de la familia de protocolos de
comunicación TCP/IP que se pueden implementar en el módulo de control
Rabbit RCM2200, siendo los de mayor aplicabilidad HTTP, UDP, SMTP,
TELNET, DNS. La implementación de los protocolos en este módulo
consistió en el desarrollo de programas ejemplos codificados en el entorno
de desarrollo Dynamic C v8.1013, cuyo objetivo primordial fue observar el
funcionamiento de cada programa y el comportamiento del módulo Rabbit
RCM2200 antes éstos.
Desarrollo de la librería de funciones. Esta librería contiene las librerías
de gestión de red del protocolo TCP/IP y funciones básicas de conexión con
otros sistemas empleando este protocolo. Para la escritura del código de la
librería se utilizó el entorno de programación de Dynamic C v8.10, el cual
posee funciones predefinidas propias para la implementación de este tipo
de librerías.
Programación del PIC 16F877. En esta etapa se efectuó la programación
del dispositivo que realiza la conversión de la señal análoga a señal digital,
proveniente del elemento de medición (sensor), antes que llegue al módulo
de control, debido a que éste maneja señales de E/S digital. La
programación del PIC fue realizada en código ensamblador utilizando la
herramienta MPLAB.
13
Vea Anexo B “Manual de usuario de Dynamic C”.
122
Integración del sistema de control y monitoreo. En esta etapa se verificó
el funcionamiento correcto de todo el sistema, integrando todos los
componentes tanto de hardware como de software, realizándose las
pruebas correspondientes. Inicialmente se adaptó el conversor A/D
PIC16F877 al módulo de control comprobándose el funcionamiento
adecuado entre estos dispositivos a través del protocolo I2C. Luego se
ejecutó todo el sistema de control y monitoreo, y la aplicación de
almacenamiento, con la finalidad de confirmar que se realizaran todos los
procesos de comunicación acorde a lo planteado en el diseño.
5.2 PRUEBAS DEL SISTEMA
La prueba del sistema, ésta constituida por una serie de pruebas diferentes cuyo
propósito primordial es ejercitar profundamente el sistema basado en
computadora. Aunque cada prueba tiene un propósito diferente, todas trabajan
para verificar que se han integrado adecuadamente todos los elementos del
sistema y que realizan las funciones apropiadas. A continuación se describirán los
resultados obtenidos en las pruebas que se le hicieron al sistema SCAM.
5.2.1 Prueba de recuperación. Con el propósito de saber que tan tolerante a
fallos es el sistema SCAM, conformado por las aplicaciones SCAM Web y SCAM
Server; se forzó al fallo de ambos, a fin de verificar que la recuperación se lleve a
cabo apropiadamente.
Primeramente, se interrumpió el suministro de energía al módulo de control
Rabbit, con el objetivo de constatar de que éste se recupere sin problemas al
momento del reestablecimiento de la energía, observándose que el módulo Rabbit
inicializa automáticamente el proceso de control; sin embargo la aplicación de
monitoreo SCAM Web debe inicializarse nuevamente de manera manual para
establecer la conexión con el módulo de control. Independientemente a esto, el
123
software SCAM Server continuará a la espera de establecer la comunicación con
el módulo de control cuando se reestablezca la energía. La forma como se
inicializa las aplicaciones SCAM Web y SCAM Server se explica en el anexo C.
El otro caso de prueba, es cuando falla la comunicación en el sistema, ya sea por
desconectar físicamente el cable de red en un punto de red donde está conectado
el módulo Rabbit o por congestión de la red. Se comprobó en este caso, que el
módulo Rabbit continúa realizando normalmente el proceso de control, siendo
interrumpida la comunicación entre las aplicaciones de monitoreo SCAM Web y
SCAM Server, por lo que los datos obtenidos en el proceso de control no serán
transmitidos a estas aplicaciones.
5.2.2 Prueba de seguridad. El sistema SCAM presenta mecanismos de
protección de accesos, a través de la validación de nombres de usuarios y
contraseñas, con el fin de evitar el ingreso al sistema de usuarios no autorizados.
Para confirmar lo anterior se le permitió a varias personas no comprometidas con
el desarrollo de este sistema a que digitaran claves de acceso seguidamente para
romper la barrera de seguridad del sistema, quienes después de varios intentos
fallidos no lograron ingresar al sistema.
5.2.3 Prueba de resistencia. Esta prueba determina la resistencia del sistema
ante situaciones anormales o que demanden recursos en cantidad. Al aplicar esta
prueba al sistema SCAM, se comprobó que el módulo rabbit (servidor Web)
funciona satisfactoriamente cuando recibe múltiples peticiones por parte de los
usuarios de la aplicación SCAM Web, presentando un tiempo de respuesta
considerable a estas peticiones. Igualmente se verificó que al ingresar datos al
sistema con una frecuencia mayor a la normal, las funciones de entrada de datos
respondieron de manera adecuada, sin alterar el normal desempeño del sistema.
124
5.2.4 Prueba de rendimiento. En base a las pruebas de resistencia realizadas
se observó el rendimiento del sistema SCAM en tiempo de ejecución. En este
caso el rendimiento del sistema se evidenció a través de la medición de los
tiempos de respuesta del servidor Web (Rabbit RCM2200). Estos tiempos de
respuesta fueron aproximadamente inferiores a los tres (3) segundos cuando el
tráfico de la red es relativamente bajo. Por lo tanto se puede afirmar que el
rendimiento del sistema es eficiente.
5.4 IMPLEMENTACIÓN DEL SISTEMA
En la implementación del sistema SCAM se utilizaron varios recursos de hardware
y software para lograr la integración y funcionamiento completo de éste, como por
ejemplo, equipos de cómputo con sistema operativo Windows XP y navegador
Web Internet Explorer, el módulo de control y un concentrador o Switch para la
conexión de estos equipos en una red Ethernet de topología estrella.
5.3.1 Descripción de la plataforma. El sistema de control y monitoreo SCAM
está conformado por los siguientes componentes: una aplicación Web de
monitoreo que se puede ejecutar desde cualquier equipo conectado a la red, un
módulo de control Rabbit RCM2200 que a la vez funciona como un servidor Web y
un software que permite el almacenamiento de los datos provenientes del módulo
de control en una base de datos realizada en Microsoft Access 2000, como se
muestra en la figura 31.
Figura 31. Plataforma del sistema SCAM
125
126
6. CONCLUSIONES
Con el desarrollo del sistema de control automático y monitoreo SCAM se observó
que los sistemas de control se pueden optimizar cada vez más gracias al
aprovechamiento de los avances tecnológicos en hardware y a la optimización y
mejoras en el software, consiguiendo una integración de tecnologías y una alta
funcionalidad para la medición y control de variables de procesos industriales.
La utilización del módulo Rabbit RCM2200 en este proyecto permitió enriquecer
los conocimientos relacionados con los sistemas de control embebidos, pues se
tuvo la oportunidad de interactuar con un dispositivo de alta tecnología que
soporta la programación de estrategias de control complejas, además brinda una
gran versatilidad en comunicaciones por la disponibilidad de puerto Ethernet,
siendo esta su mayor ventaja en el desarrollo y la implementación de sistemas de
control y monitoreo de bajo costo.
El desarrollo de SCAM dio como resultado un producto innovador, de gran interés
para las empresas del sector industrial, a razón de, que es una herramienta
eficiente en el monitoreo y control de procesos, y los costos de implementación no
son tan elevados en comparación con otros sistemas similares que ofrece
actualmente el mercado. Además se espera que este sistema sea de gran utilidad
en el laboratorio de automatización industrial de la CURN y se afiance como una
herramienta educativa para los estudiantes y docentes comprometidos con la
búsqueda de nuevos conocimientos en ésta área, tan importante de la ingeniería
de sistemas.
127
7. RECOMENDACIONES
Tras haber finalizado este proyecto, se sugiere las siguientes recomendaciones
con el propósito de realizar futuras mejoras al sistema desarrollado y poder brindar
así una herramienta que ofrezca más capacidades tanto de hardware y software
de las que ofrece esta versión inicial.
Se recomienda que para el desarrollo de futuros sistemas de control
embebidos basados en el módulo Rabbit RCM2200 se realice la expansión
de la memoria flash de éste, ya sea, a través del módulo SF1000 de
Z-World que tiene una capacidad de almacenamiento de 8 MB o con un
chip de memoria accesible en el mercado local; con la finalidad de
implementar programas que requieran mayor recurso de memoria.
Poder implementar nuevas estrategias de control utilizando algoritmos de
control difuso y control adaptativo, con el objetivo de evaluar el desempeño
de éstos con respecto al algoritmo de control PID convencional.
Poder efectuar la integración de varios módulos de control basados en la
familia de microprocesadores Rabbit, con el fin de desarrollar un sistema
completo para el control de varios procesos industriales en una
determinada planta.
Implementar una función al sistema de control que permita almacenar en la
memoria del módulo Rabbit los valores registrados por éste en un lapso de
tiempo determinado mientras no se establezca comunicación con la
aplicación de almacenamiento, con el objetivo de que una vez reestablecida
la comunicación estos datos se envíen a la base de datos.
128
BIBLIOGRAFIA
ABAD, Alfredo y MADRID Mariano. Redes de área local. Madrid : McGraw Hill,
1997. 238 p.
BALCELLS, Joseph y ROMERAL, José Luís. Autómatas programables. Madrid :
Alfaomega, 1998. 439 p.
BERRIO, Tatiana; JEREZ, Emilio y MONTIEL, Jesús. Diseño e implementación
de un sistema de control de nivel liquido. Cartagena, 2002, 140 p. Trabajo de
grado (Ingeniero de Sistemas). Corporación Universitaria Rafael Núñez. Facultad
de Ingeniería de Sistemas. Área de automatización industrial
} else { state->offset = 0; state->length = 0; } } else { datoreciv[0].name = "nombre_usuario"; //nombres del campo nombre_usuario formulario datoreciv[1].name = "contrasena";//nombres del campo contrasena del formulario /* inicializa el campo value de datoreciv */ datoreciv[0].value[0] = '\0'; datoreciv[1].value[0] = '\0'; state->p = state->buffer; if(analizar_post(state)) { //si es !=0 continua if (sauth_authenticate( datoreciv[0].value, datoreciv[1].value, SERVER_HTTP)>=0){ cgi_redirectto(state,REDIRECTTO); return 0; /*se retorna cero para que la conexión al servidor esta abierta en todo momento*/ }else{ //Aquí se manda un cgi_sendstring mostrando un mensaje de error sprintf(buffer,cadmensa,date,REDIRECTTO); //manda el contenido cadmensaje cgi_sendstring(state,buffer); //se usa para enviar la pagina return 0; } //cierra if de autenticación } //cierra if de parse post } //cierra if } //cierra función submit
187
FUNCIÓN ENVIAR PARAMETROS PID.
int env_paramPID(HttpState* state).
Descripción: La función CGI env_paramPID() se ejecuta al momento de
enviarse los datos de configuración del algoritmo de control PID desde la
página Configuración Parámetros PID. Los datos son almacenados en los
campos de la estructura FORMType, accediéndose a través del arreglo
datoreciv que posee cinco posiciones para almacenar cada una de las
parejas de parámetros PID (Nombre_parámetro, valor) que son modificadas
por el usuario.
Parámetro State: es un puntero al campo State de la estructura HttpState.
Valor de retorno:
_0 Para que la conexión al servidor HTTP este abierta en todo momento.
td = atof(datoreciv[3].value); fm = atof(datoreciv[4].value); cgi_redirectto(state,CONFPID_REDIRECTTO); return 0; } //cierra if de parse post } //cierra if de state->length }//cierra función
FUNCIÓN MODIFICAR PARAMETROS DE USUARIO.
int modif_par_user(HttpState* state)
Descripción: permite la modificación de los parámetros contraseña y correo
electrónico de los usuarios definidos en el sistema. Al igual que las otras
funciones CGI, ésta hace uso de la función analizar_post() para verificar el
contenido del búfer, una vez confirmado la consistencia del buffer se
permite modificar cada parámetro y registrar los nuevos cambios realizados
por el usuario.
Parámetro State: es un puntero al campo State de la estructura HttpState.
Valor de retorno:
_0 Para que la conexión al servidor HTTP este abierta en todo momento.
int modif_par_user(HttpState* state) { int i; if(state->length) { if(state->offset < state->length) {
Descripción: en la función principal del programa se encuentran
inicializadas de una manera global todas las variables que se manejan en la
función de configuración de parámetros PID, al igual que, la función de
191
inicio del socket para establecer la conexión de red con otras terminales y la
función de inicio del servidor HTTP, además se hace el llamado a la función
de manejo para la lista de objetos del servidor y el manejador del servidor
HTTP, entre otras funciones para el correcto desempeño del sistema.
void main(void) { //declaracion del socket tcp_Socket mysock; int i, retconex; char cadtempe[5]; #GLOBAL_INIT { tempe = 0; setpoint = 0.0; kp = 0.0; ti = 0.0; td = 0.0; fm = 0.0; } sock_init(); // inicializa la pila TCP/IP http_init(); // inicializa sevidor web http_setauthentication(HTTP_DIGEST_AUTH); //se agregan tres tipos de usuario usuario1 = sauth_adduser("Admin", "Ronald", SERVER_HTTP); usuario2 = sauth_adduser("Ingenieria", "Jorge", SERVER_HTTP); usuario3 = sauth_adduser("Operario", "Invit", SERVER_HTTP); objetos_servidor(); retconex = establecer_conex(&mysock,"192.168.0.15",1500); tcp_reserveport(80); //se reserva el pto por defecto para la aplicaciones web while(1) { http_handler(); //maneja el servidor HTTP tempe = func_pid(setpoint,kp,ti,td,fm); itoa(tempe,cadtempe);//convierte un entero a cadena de caracteres if (retconex == 1 && sockstate(&mysock)=="Established"){ sock_puts(&mysock, cadtempe); }else{ retconex = establecer_conex(&mysock,"192.168.0.15",1500); } if (tempe>60 || tempe<10) enviar_mens_alarm("[email protected]",tempe); } //ciera while } //cierra main
192
D.1.4 Descripción libreria RJTCPIP.LIB. La librería RJTCPIP.LIB realizada por
los ejecutores del proyecto para el uso de la familia de protocolos TCP/IP,
contiene una serie de macros que fijan la configuración de red del módulo
RCM2200, además se define la función que establece comunicación con la
aplicación SCAM Server dentro de la misma red Ethernet para efectos del envío
de datos desde el módulo. Esta librería al igual que otras implementadas por el
usuario se debe incluir en el archivo LIB.DIR de la carpeta raíz de Dynamic C.
Los siguientes macros permiten establecer los valores estáticos para la
configuración de red de la tarjeta RCM2200.
#ifndef CONFIG_RED #define CONFIG_RED 0 #endif #ifndef TIMEZONE #define TIMEZONE -5 #endif #define IP_STATICA "192.168.0.16" #define MASCARA_RED "255.255.255.0" #define NOMBRE_SERV "192.168.0.16" #ifndef PTA_ENLACE #define PTA_ENLACE "192.168.0.1" #endif #define MY_HOST "scam" #define MY_DOMAIN "curn.edu" #define SMTP_SERVER "192.168.0.15" /*"mymailserver.mydomain.com" Nombre o IP del Servidor del correo*/ #define SMTP_DOMAIN "curn.edu" //Nombre o IP del controlador #if CONFIG_RED == 1 /*CONFIGURACIÓN DE RED ESTATICA*/ #define USE_ETHERNET 1 #define IFCONFIG_ETH0 \ IFS_IPADDR,aton(IP_STATICA), \ IFS_NETMASK,aton(MASCARA_RED), \ IFS_NAMESERVER_SET, aton(NOMBRE_SERV), \ IFS_ROUTER_SET, aton(PTA_ENLACE), \ IFS_UP #endif
193
Luego de haber establecido la configuración de red, se hace el llamado a las
librerías básicas de gestión de red.
#use "neterrno.lib" // Números de error en la red #use "net.lib" // API General de red #use "arp.lib" // Protocolo de Resolución de Direcciones #use "ip.lib" // Protocolo de Internet #use "udp.lib" // Protocolo de Datagramas de usuarios #use "tcp.lib" // Protocolo de control de transporte #use "bootp.lib" // Bootstrap y Protocolo de Configuración Dinámica de Hosts #use "bsdname.lib" // BSD-compatible API #use "icmp.lib" // Protocolo de mensajes de control de Internet #use "dns.lib" // Protocolo de nombres de dominio #use smtp.lib // Protocolo de Transferencia de Simple Correo #use "http.lib" // Protocolo de Transferencia de Hipertexto #use "igmp.lib" // Protocolo de administración de grupos de Internet y Multicast
FUNCIÓN ESTABLECER CONEXIÓN.
int establecer_conex(tcp_Socket *mysocket, char *remip, int puertorem);
Descripción: permite que el módulo de control establezca comunicación con
un servidor remoto dentro de la misma red Ethernet a través del protocolo
TCPI/P. Esta comunicación es posible gracias a un conjunto de funciones
propias del lenguaje que se emplean para manipular el socket, la dirección
IP remota y el número del puerto que se escuchará en el servidor remoto.
Este módulo (cliente) envía la cadena "HELLO" para verificar que el
Servidor este activo a fin de establecer la conexión entre estos.
Parámetros:
mysocket: puntero al socket tcp para almacenar el estado de la conexión.
remip: contiene la dirección IP remota o nombre del host con que se
establecerá la conexión.
194
puertorem: número de puerto de escucha del equipo remoto.
int establecer_conex(tcp_Socket *mysocket, char *remip, int puertorem) {longword host; char mens1[5]; int retorno; if (!(host = resolve(remip))) { //retorna 0 si no puede resolver la direccion printf("No pudo resolver host"); return 0; } //retorna 0 si tcp_open no entra en sesion con el host remoto if (!tcp_open(mysocket, 0, host, puertorem, NULL)) { printf("falla de apertura \n"); return 0; } while (!sock_established(mysocket) && sock_bytesready(mysocket)== -1){ if (!tcp_tick(mysocket)){ printf("Falla al establecer la conexion\n"); return 0; break; } }//cierra ciclo printf("Establecida OK!\n"); strcpy(mens1,"HELLO"); sock_puts(mysocket, mens1); //Escribe una cadena a un socket. sock_flushnext(mysocket); //vacia los datos a la red retorno = recibir_mens(mysocket, mens1); if (retorno == 1){ printf("Servidor Activo \n"); return 1; }else{ return 0;} }
FUNCIÓN RECIBIR MENSAJE .
int recibir_mens (tcp_Socket *s, char *cadena);
Descripción: esta función trabaja en conjunto con la función establecer
conexión descrita anteriormente, ya que ésta permite recibir el mensaje de
confirmación (cadena HELLO) enviado desde el servidor para establecer la
comunicación. La función hace una comparación de la cadena recibida con
la enviada previamente para verificar que estas dos sean iguales.
195
Parámetros:
s: puntero al socket tcp para almacenar el estado de la conexión.
Cadena: puntero a un arreglo de cadena que contiene el mensaje.
Valor de retorno:
_ 1 cuando realiza la confirmación de la cadena correctamente.
_ 0 cuando no realiza la confirmación de la cadena correctamente.
int escuchar_conex_telnet(tcp_Socket *s, int puertolocal);
Descripción: esta función permite recibir una conexión entrante vía Telnet
para establecer comunicación entre la tarjeta y una Terminal remota.
Parámetros:
s: puntero al socket para almacenar el estado de la conexión.
puertolocal: número de puerto local de escucha del Servidor Telnet para
establecer la conexión.
Valor de retorno:
_0 cuando existe una falla al establecer la conexión.
196
_1 cuando entra en sesión con otra Terminal.
int escuchar_conex_telnet(tcp_Socket *s, int puertolocal) { char buffer[ 512 ]; int status; tcp_listen(s, puertolocal, 0L, 0, NULL, 0); while (!sock_established(s) && sock_bytesready(s)==-1){ if (!tcp_tick(s)){ printf("Falla al establecer la conexion\n"); return 0; break; } } puts("Recibiendo conexiones entrantes desde Telnet"); sock_mode(s, TCP_MODE_ASCII ); do { if (sock_bytesready(s) >= 0) { //Se debe fijar el modo ASCII con sock_mode() para esta funcion. sock_gets(s, buffer, sizeof(buffer)-1); puts (buffer); } } while (tcp_tick(s)==1); return 1; }
Descripción: envía un mensaje de correo electrónico a un servidor de correo
remoto siempre que el valor de la variable controlada por la tarjeta exceda
los límites del rango predefinido. La información tanto del destinatario como
la del remitente del mensaje se encuentra previamente definido por medio
de arreglos de cadenas.
Parámetros:
email_dest: cadena que contiene la dirección electrónica del destinatario del
mensaje.
Valtempe: variable que contiene el valor de la temperatura registrado por la
tarjeta.
197
void enviar_mens_alarm(char *email_dest, float valtempe){ char de[25]; char para[25]; char asunto[35]; char mensaje[60]; strcpy(de, "[email protected]"); strcpy(para,email_dest); strcpy(asunto,"Alarma"); if (valtempe < 0) strcpy(mensaje,"La Temperatura esta por debajo de su Rango Normal"); else if (valtempe > 100) strcpy(mensaje,"La Temperatura esta por Encima de su Rango Normal"); smtp_sendmail(para, de, asunto, mensaje); while(smtp_mailtick()==SMTP_PENDING) //el correo no se ha enviado aún, // se llama otra vez con continue continue; if(smtp_status()==SMTP_SUCCESS) //correo enviado. printf("Mensaje enviado \n"); else printf("Error enviando mensaje \n"); }
D.1.5 Descripción de funciones predefinidas de Dynamic c. Las siguientes
funciones a describir son propias del lenguaje de programación empleado en
Dynamic C, siendo de utilidad para el desarrollo del sistema SCAM.
El registro INDF mismo al leerse de manera indirecta (con FSR=0)
producirá un cero. Y al escribirse de manera indirecta no es afectado.
A continuación se muestra un ejemplo del uso de este direccionamiento
para limpiar las localidades RAM 20h a 2Fh.
Ejemplo 1: borrado de un bloque de memoria de datos desde la localidad
20h a la localidad 2f h.
MOVLW 0X20 ; Carga el valor del apuntador a la RAM.
MOVWR FSR ; Inicializa apuntador.
CLRF INDF ; limpia la localidad apuntada por FSR.
INCF FSR, F ; incrementa apuntador.
BTFSS, FSR, 4 ; si ya terminó escapa a continuar.
GOTO ; Si no repite
Continuar...
Archivo de Registros. Aunque el archivo de registros en RAM puede
variar de un PIC a otro, la familia del PIC16F87x coincide casi en su
totalidad. En la tabla 17 se muestra a detalle el mapa de este archivo de
registros y su organización en los cuatro bancos que ya se describieron.
223
Tabla 17. Archivo de registros del PIC 16F87X
Dirección Registro
Dirección Registro
Dirección Registro
Dirección Registro
Direcc. Indirecto (*)
00h Direcc. Indirecto (*)
80h Direcc. Indirecto (*)
100h Direcc. Indirecto (*)
180h
TMR0
01h OPTION_REG 81h TMR0 101h OPCION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PUERTO A 05h TRISA
85h 105h 185h
PUERTO B 06h TRISB 86h PUERTO B 106h TRISB 186h
PUERTO C
07h TRISC(1)
87h 107h 187h
PUERTO D(1) 08h TRISD
(1) 88h 108h 188h
PUERTO E (1)
09h TRISE 89h 109h 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEDR 10Dh EECON2 18Dh
TMR1L 0Eh PCON 8Eh EEDATH 10Eh Reservado(2)
18Eh
TMR1H 0Fh 8Fh EEADRH 10Fh Reservado(2)
18Fh
TICON 10h 90h
Registros de propósito general 16 bytes
110h
Registros de propósito general 16 bytes
190H
TMR2 11h SSPCON2 91h 111h 191h
T2CON 12h PR2 92h 112h 192h
SSPBUF 13h SSPADD 93h 113h 193h
SSPCON 14h SSPSTAT 94h 114h 194h
CCPR1L 15h 95h 115h 195h
CCPR1H 16h 96h 116h 196h
CCP1CON 17h 97h 117h 197h
RCSTA 18h TXSTA 98h 118h 198h
TXREG 19h SPBRG 99h 119h 199h
RCREG 1Ah 9Ah 11Ah 19Ah
CCPR2L 1Bh 9Bh 11Bh 19Bh
CCPR2H 1Ch 9Ch 11Ch 19Ch
CCP2CON 1Dh 9Dh 11Dh 19Dh
ADRESH 1Eh ADRESL 9Eh 11Eh 19Eh
ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh
Registros de propósito general 96 bytes
20h . . . 7Fh
Registros de propósito general 80 bytes
A0h… EFh
Registros de propósito general 80 bytes
120h… 16Fh
Registros de propósito general 80 bytes
1A0 h… 1EFh
Accesos 70h-7Fh F0h… FFh
Accesos 70h -7Fh 170h… 17Fh
Accesos 70h -7Fh 1E0h 1FFh
Banco 0 Banco 1 Banco 2 Banco 3
Ubicación de memoria de datos sin implementar, se leé “0”. * No es un registro físico
Nota 1: estos registros no son implementados en el PIC 16F876.
2: estos registros son reservados y deben mantenerse limpios.
224
E.2 CONVERSOR ANÁLOGO DIGITAL
Los microcontroladores PIC16F87x poseen un conversor A/D de 10 bits de
resolución y 5 canales de entrada en los modelos de con 28 pines (PIC16F873/6)
y 8 canales en los que tienen 40 pines (PIC16F877).
La resolución que tiene cada bit procedente de la conversión tiene un valor que es
función de la tensión de referencia Vref, de acuerdo con la siguiente fórmula:
Resolución = (Vref + - Vref -)/1024 = Vref /1024
Así por ejemplo, si la Vref += 5VDC y la Vref - es tierra, la resolución es de 4,8
mV / bit. Por tanto, la entrada analógica de 0 V le corresponde una digital 00 0000
0000 y para la de 5V una lógica una de 11 1111 1111. La tensión de referencia
determina los límites máximo y mínimo de la tensión analógica que se puede
convertir. El voltaje diferencial mínimo es de 2 V.
A través del canal de entrada seleccionado, se aplica la señal analógica a un
condensador de captura y mantenimiento y luego se introduce al conversor, el cual
proporciona un resultado digital de 10 bits de longitud usando la técnica de
"aproximaciones sucesivas".
El conversor A/D es el único dispositivo que puede funcionar en modo de reposo
(SLEEP), para ello el reloj del conversor deberá conectarse al oscilador RC
interno.
E.2.1 Registros de trabajo. El funcionamiento del conversor A/D requiere de la
manipulación de cuatro registros.
1° ADRESH: parte alta del resultado de la conversión
225
2° ADRESL: parte baja del resultado de la conversión
3° ADCON0: registro de control 0.
4° ADCON 1: registro de control 1.
En la pareja de registros ADRESH:ADRESL se deposita el resultado de la
conversión, que al estar compuesta por 10 de los bits de dicha pareja. El registro
ADCON0 controla la operación del conversor A/D, mientras que el ADCON1 sirve
para configurar los pines de la puerta A como entradas analógicas o E/S digitales.
Registro ADCON0. Los bits ADCON0 <7:6> sirven para seleccionar la
frecuencia de reloj que se emplea en la conversión, con la siguiente
asignación.
Figura 86. Asignación de los bits del registro de control ADCON0
ADCS1 ADCS2 CHS2 CHS1 CHS0 GO/DONE __ ADON
7 6 5 4 3 2 1 0
Se designa como TAD el tiempo que dura la conversión de cada bit y en el
caso de trabajar con valores digitales de 10 bits, se requiere un tiempo de
12•TAD. El valor de TAD se selecciona por software mediante estos bits
(ADCS1: ADCS0) y en los PIC16F87x no debe ser menos de 1,6
microsegundos.
Figura 87. Asignación de los bits ADCS1:0 del registro de control ADCON0
Frecuencia Fosc/2 Fosc/8 Fosc/32 FRC (procede del
oscilador RC interno)
ADCS1: ADSC0 00 01 10 11
226
Los bits CHS2, CHS1, CHS0 seleccionan el canal por el que se introduce la
señal analógica a convertir, de acuerdo con la siguiente tabla.
Tabla 18. Asignación de los bits CHS2:0 del registro de control ADCON0
CHS2, CHS1, CHS0 CANAL
000 Canal 0 (RA0/AN0)
001 Canal 1(RA1/AN1)
010 Canal 2(RA2/AN2)
011 Canal 3 (RA3/AN3)
100 Canal 4 (RA5/AN4)
101 Canal 5 (RE0/AN5). Los PIC 16F87X de 28 pines no tienen este canal
110 Canal 6 (RE1/AN6)
111 Canal 7 (RE2/AN7)
El bit GO/DONE# es el bit de estado de la conversión. Poniéndolo a 1 se
inicia la conversión y mientras esté a 1 está realizándose dicha operación.
Cuando GO/DONE# pasa a 0 confirma el final de la conversión y la puesta
del resultado en la pareja de registros ADRESH: ADRESL. El bit ADON
sirve para activar el conversor A/D poniéndolo a 1 y para inhabilitar su
funcionamiento se pone a 0.
Registro de control ADCON1.
Figura 88. Asignación de los bits del registro de control ADCON1
ADFM ___ ___ ____ PCFG3 PCFG2 PCFG1 PCFG0
7 6 5 4 3 2 1 0
227
El bit de menos peso (ADFM) del registro ADCON1 selecciona el formato
de resultado de la conversión si vale 1, el resultado está justificado en el
registro ADRESH, que tiene sus 6 bits de más peso a 0; mientras que, si
vale 0 la justificación se realizará sobre el registro ADRESL, que tiene sus
6 bits de menos pesos a 0. Esto significa que los 16 bits que forman la
concatenación de ADRESH : ADRESL unas veces tiene a 0 los 6 bits de
mas peso y otra los 6 bits de menos pesos (Alineación a la derecha o a la
izquierda), como se observa en la figura:
Figura 89. Alineación izquierda y derecha del resultado digital de 10 bits
RESULTADO DE 10 BITS
JUSTIFICACIÓN A LA DERECHA JUSTIFICACIÓN A LA IZQUIERDA
Bits colocados a cero.
Los restantes cuatro bits (PCFG3-0) de ADCON1 se utilizan para configurar los
pines de los canales de entrada al conversor como analógicas o como E/S
digitales, de acuerdo con la siguiente tabla.
7 1 0 7 0 7 0 7
6 0
ADFM = 1 ADFM = 0
ADRESH ADRESL ADRES
ADRESH ADRESL
228
Tabla 19. Configuración de los pines del PIC según el valor de <PCFG3 - 0 >
PCFG3-0
AN7/ RE2
AN6/ RE1
AN5/ RE0
AN4/ RA5
AN3/ RA3
AN2/ RA2
AN1/ RA1
AN0/ RA0
VREF+ VREF- CHAN/ REFS
0000 A A A A A A A A VDD Vss 8/0
0001 A A A A VREF+ A A A RA3 Vss 7/1
0010 D D D A A A A A VDD Vss 5/0
0011 D D D A VREF+ A A A RA3 Vss 4/1
0101 D D D D A D A A VDD Vss 3/0
011X D D D D VREF+ D A A RA3 Vss 2/1
1000 D D D D D D D D VDD Vss 0/0
1001 A A A A VREF+ VREF- A A RA3 RA2 6/2
1010 D D A A A A A A VDD Vss 6/0
1011 D D A A VREF+ A A A RA3 Vss 5/1
1011 D D A A VREF+ VREF- A A RA3 RA2 4/2
1100 D D D A VREF+ VREF- A A RA3 RA2 3/2
1101 D D D D VREF+ VREF- A A RA3 RA2 2/2
1110 D D D D D D D A VDD Vss 1/0
1111 D D D D VREF+ VREF- D A RA3 RA2 1/2
E.2.2 Estructura interna del conversor análogo/digital. En la figura 90 se
observa la forma como se habilitan/deshabilitan los 8 canales del conversor
mediante la configuración de los bits <CHS2-0> del registro ADCON0 y si estos
funcionarán como canales de entrada análogas ó E/S digitales de acuerdo con la
configuración de los bits <PCFG3-0> del registro ADCON1 vistos en la tabla
anterior.
229
Figura 90. Estructura interna del convertidor análogo digital
230
ANEXO F
FUNCIONAMIENTO DEL BUS I2C
EN EL MÓDULO RABBIT Y
PIC 16F877
231
INTRODUCCIÓN
Este anexo describe cómo funciona el bus serial I2C en el microprocesador Rabbit
2000 en modo maestro y en el microcontrolador PIC 16F877 en modo maestro y
esclavo, siendo este el dispositivo que se empleó para adaptar un conversor A/D
al módulo de control Rabbit RCM2200.
232
F.1 CONCEPTOS FUNDAMENTALES DEL BUS I2C
I2C es un bus serial síncrono diseñado por Philips, que puede compartirse por
varios dispositivos periféricos (microcontroladores, RAM, EEPROM, ADC, etc)
mediante un protocolo que evite el bloqueo de la información y garantice la
comunicación entre todos ellos. La conexión física es realizada por dos líneas,
SDA (datos) y SCL (reloj), las cuales transportan la información entre los
diferentes dispositivos conectados al bus. Cada dispositivo se identifica por una
única dirección y puede transmitir o recibir dependiendo de la operación que se
vaya a realizar.
Los dispositivos pueden clasificarse en maestro (master o principal) o esclavo
(slave o secundario). El maestro es el encargado de iniciar y terminar la
transferencia de información y el que genera la señal de reloj SCL, cuya
frecuencia es de hasta 100 KHz. Los esclavos son los dispositivos direccionados
por el maestro, mediante siete bits (dirección del esclavo). La línea de datos SDA
es utilizada tanto por el maestro como por el esclavo para la transmisión de
información.
Cuando el maestro inicia una trama de comunicación, envía a través de la línea de
datos la dirección del esclavo con el que se pretende establecer una
comunicación. Todos los esclavos reciben dicha dirección, pero uno solo
responderá y el resto permanece en espera de que se inicie una nueva trama.
Las dos líneas SCL y SDA están conectadas a la línea de alimentación positiva
VDD+, a través de resistencias cuya misión es asegurar una mínima carga de la
línea, necesaria para que la transmisión sea estable ante posibles "ruidos"
externos. Estas resistencias son llamadas de pull-up, y su valor está comprendido
233
entre 1K y 10K dependiendo de la tensión de alimentación y de los dispositivos
conectados. Otra función que tienen estas resistencias es la de permitir que tanto
la línea de datos como la de reloj sean bidireccionales, ya que cualquier
dispositivo (maestro o esclavo) puede forzar a nivel bajo la línea o dejarla libre,
teniendo entonces un nivel alto en la línea, siendo leída por los otros dispositivos.
Esto que en principio no parece muy útil en la línea de reloj, es fundamental
cuando el sistema tiene conectado más de un maestro (multi-maestro).
Los bits de datos sobre el bus pueden transferirse a una velocidad de 100 Kbits/s.
La capacidad máxima en el bus es de 400 pF y el número de dispositivos no debe
superarla.
Figura 91. Conexiones al bus I2C
F.1.1 Condiciones de inicio (star) y parada (parada). Existen dos situaciones
únicas que son definidas como las condiciones de inicio (Star) y parada (Stop),
que son generadas por el maestro, para iniciar y finalizar toda transferencia de
datos. La condición de inicio esta determinada por una transición de alto (1 lógico)
a bajo (0 lógico) en la línea SDA (flanco descendente) al tiempo que SCL
permanece a nivel alto, mientras que una transición de bajo a alto (flanco
SDA (datos)
EEPROM RAM MICROCONTROLADOR
SCL (reloj)
Rp Rp
+VDD
234
ascendente) sobre SDA al tiempo que SCL está a nivel alto determina la condición
de parada. El bus se considera ocupado tras la condición de inicio y, se considera
libre, cierto tiempo después de la condición de parada cuando SDA y SCL están a
nivel alto. Lo anterior se puede ver claramente en la siguiente figura.
Figura 92. Condiciones de inicio y parada de I2C
F.1.2 Transferencia de datos.
Formato del Byte. Todos los bytes colocados sobre la línea SDA deben
constar de 8 bits. Cada byte va seguido de un bit de reconocimiento, ACK,
y comienza por el bit de más peso.
Entre un byte y el siguiente puede haber un tiempo <<t>> de espera que se
puede aprovechar para por ejemplo dar servicio a una interrupción. En este
caso, la línea SCL se mantiene a <<0>> para forzar al transmisor a un
estado de espera.
Reconocimiento. El bit de acuse recibo o reconocimiento se produce con
el noveno pulso de reloj (al inicio de la trama tras los bits de la dirección + el
bit R/W#, o durante la trama tras los 8 bits de datos) y es obligatorio en la
transferencia de cada byte. El transmisor pone la línea SDA a nivel alto
durante dicho pulso del reloj. El receptor, por su parte, pone a <<0 lógico>>
SDA durante el pulso de reloj correspondiente al ACK y lo mantiene estable
Condición de inicio Condición de parada
235
durante todo el periodo de dicho pulso. En la siguiente figura se representa
la formación del bit ACK.
Figura 93. Bit de reconocimiento ACK
F.1.3 Formato. Tras la condición de inicio (S), el maestro envía la dirección del
esclavo al que se quiere dirigir. A esta dirección de 7 bits se añade el bit de
recepción/transmisión o lectura/escritura (R/W). Si R/W=0 será una lectura y si
R/W = 1 será transmisión o escritura. A continuación del bit R/W, se envía un bit
de reconocimiento (ACK) desde el esclavo. Después de estos bits, se transmiten
los datos, en grupos de 8 bits cada uno y al finalizar cada byte de dato se inserta
un bit de reconocimiento (ACK), que en este caso puede ser producido por el
esclavo o por el maestro. Para terminar la trama el maestro generará el bit de
parada (P). Si el maestro aún desea comunicar por el bus, puede generar otra
condición de inicio y direccionar otro esclavo sin generar previamente la condición
de parada. Lo anterior puede verse claramente en la figura 94.
Figura 94. Formato de transmisión de datos de I2C
S DIR. ESCLAVO R/W# ACK DATO ACK DATO ACK P
1 = Lectura 0 = Escritura
Datos trasferidos (n Bytes + ACK)
236
Tras el primer ACK enviado por el esclavo, el maestro transmisor se convierte en
receptor y esclavo receptor en transmisor.
F.2 FUNCIONAMIENTO DE I2C EN EL MICROPROCESADOR RABBIT
En el microprocesador Rabbit 2000 el protocolo I2C se implementa a través de
funciones predefinidas en la librería I2C.lib de Dynamic C. Estas funciones
manejan el aspecto genérico para una interfaz I2C, pudiendo ser programadas
para desarrollar controladores (drivers) de comunicación para un dispositivo
especifico que soporte I2C, en este caso el microcontrolador PIC 16F877.
El microprocesador Rabbit trabaja en modo maestro, encargándose de manejar
las líneas SDA para transmitir y recepcionar la información, y la SCL para
controlar el reloj. Estas dos líneas están implementadas en los pines PD4 = SCL
y PD5=SDA del puerto paralelo D, ya que éste tiene capacidades de colector
abierto. Sin embargo se puede utilizar cualquiera de los otros puertos paralelos
del Rabbit 2200, siempre y cuando se configure la librería I2C para soportar estos
cambios. La siguiente figura muestra las conexiones de SDA y SCL en el Rabbit y
el microcontrolador PIC 16F877.
Figura 95. Conexiones de SDA y SCL de Rabbit 2000 y el PIC 16f877
+VDD
Maestro Esclavo
PIC 16F877 PD4
PD5 SDA
SCL
RC4/SDA
RC3/SCL
R
p R
p
Rabbit 2000
237
F.2.1 Secuencia de pasos en una transmisión I2C en Rabbit. Para habilitar los
pines SCL y SDA en el Rabbit, primeramente se coloca la función i2c_init() antes
de cualquier otra función I2C, con el fin de inicializar el modo maestro de
transmisión. A partir de este momento la línea de datos y de reloj quedan
configuradas para soportar el protocolo I2C.
Luego, mediante las funciones i2c_start_tx() y i2c_stop_tx() se definen las
condiciones de inicio (star) y parada (stop) respectivamente, que determinan el
inicio y final de toda transmisión de datos entre el maestro y esclavo.
Después de haber establecido el inicio de la transmisión, el maestro debe
direccionar al esclavo por medio de la función i2c_wr_wait(), la cual reintenta
escribir una dirección hasta que el esclavo responda con un bit de reconocimiento
ACK.
Posteriormente, se envía un dato de 8 bits al esclavo, utilizando la función
i2c_write_char(). Cada vez que se envía el byte de dato se chequea si el esclavo
pone SDA a bajo (0 lógico) para el envió del bit ACK en el noveno pulso del reloj,
este procedimiento se hace implícitamente en i2c_write_char() haciendo el
llamado a la función i2c_check_ack().
Para leer o poner al módulo Rabbit en modo maestro de recepción, se emplea la
función i2c_read_char() que lee 8 bits desde el esclavo.
La función i2c_send_ack() envía un bit de reconocimiento ACK o acuse recibo al
esclavo, mientras que i2c_send_nak() envía una secuencia NAK (no generar bit
ACK).
A continuación se presenta un pequeño ejemplo del uso del protocolo I2C en el
módulo Rabbit.
238
#class auto #use "i2c.lib" //I2C dirección del microcontrolador esclavo #define DIR_ESCLAVO 0xA2 //101000102 const char cad_prueba[] = "A"; //6510 = 10000012 void main() { char buf_lect[8]; auto short int err; /*SE INICIA EL MAESTRO EN MODO DE TRANSMISION*/ //Se inicia el bus I2C i2c_init(); //Inicializa la transmisión I2C para enviar la secuencia S (START), err = i2c_startw_tx(); if (err != 0 ) i2c_stop_tx(); if ((err=i2c_wr_wait(DIR_ESCLAVO))!= 0 ) /*Reintenta escribir la dir. del esclavo hasta que este responda.*/ i2c_stop_tx(); i2c_write_char(cad_prueba[0]); //envía una cadena de 8 bits al esclavo i2c_stop_tx(); /****************************************************************************/ /*SE INICIA EL MAESTRO EN MODO DE RECEPCIÓN*/ if ((err=i2c_startw_tx())!= 0) i2c_stop_tx(); //i2c_Delay(10); if ((err=i2c_startw_tx())!= 0) i2c_stop_tx(); err=i2c_read_char(buf_lect); //lee un byte desde el esclavo y lo guarda en buf_lect if (err !=0) i2c_stop_tx(); i2c_send_ack(); //se envía el bit ACK al esclavo i2c_stop_tx();
}
239
F.3 FUNCIONAMIENTO DE I2C EN EL MICROCONTROLADOR PIC16F877
Para activar el bus I2C en el PIC16F877 hay que poner el bit SSPEN = 1 que es el
bit 5 del registro SSPCON. A partir de este momento los pines SDA (RC4/SDA) y
SCL (RC3/SCL) quedan configurados para soportar el protocolo I2C. Existen seis
registros para controlar el bus I2C, los cuales son:
SSPCON: registro de control
SSPCON2: registro de control 2
SSPSTAT: registro de estado
SSPBUF: buffer para los datos
SSPSR: registro de desplazamiento no accesible directamente
SSPADD: registro de dirección
Mediante el bit CKE se ponen a nivel alto los pines SDA y SCL en el modo
maestro y esclavo. Cuando CKE = 0 los niveles de dichos pines se configuran
según las especificaciones del bus I2C.
Registro SSPSTAT (Estado). Este registro contiene toda la información que
representa el estado de la transferencia de datos.
Figura 96. Bits del registro SSPSTAT
SMP
CKE
D/A #
P
S
R/W#
UA
BF
7 6 5 4 3 2 1 0
SMP: en modo maestro es un bit de muestreo que vale 1 cuando los bits de datos
se muestran al final del periodo, o SMP = 0 cuando se hace a la mitad del periodo.
240
CKE: selecciona los niveles de los pines SCL y SDA en modo maestro o multi-
maestro.
D/A#: el bit D/A# (Dato/Dirección#) indica si el dato recibido es de información (1)
o es una dirección (0).
P: detecta la llegada del bit o condición de STOP, es decir P = 1
S: detecta la condición de inicio o START, se pone S = 1
R/W#: Indica si se trata de una lectura o escritura. R/W = 1 indica lectura, R/W = 0
lectura
UA: si es igual a 1, indica que la dirección es de 10 bits y que hay que cargar el
byte alto.
BF: actúa como señalizador del búfer de datos. Si BF = 1 indica que tiene un dato
y la transmisión esta en proceso sin terminar.
Registro SSPCON (Control). Todos los bits son leíbles y escribibles y se ponen
a 0 tras un reset.
Figura 97. Bits del registro SSPCON
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
7 6 5 4 3 2 1 0
WCOL: es un detector de colisiones en escritura y cuando vale 1 significa que se
ha intentado escribir en SSPBUF en condiciones no válidas para el protocolo.
241
SSPOV: si vale 1 indica desbordamiento, es decir, llega un byte a SSPBUF sin
haberse leído el anterior.
SSPEN: si vale 1 el puerto serie queda configurado con los pines SCL y SDA, y
pone en funcionamiento al microcontrolador en modo maestro. Si SSPEN = 0
RC3/SCL y RC4/SDA funcionan como líneas de entradas y salidas digitales.
CKP: activa el reloj en modo esclavo, no usándose en el modo maestro.
SSPM3-0: se selecciona la frecuencia del reloj y el modo de trabajo entre estos
tres posibles:
Modo I2C maestro.
Modo I2C esclavo con 7 bits para la dirección.
Modo I2C esclavo con 10 bit para la dirección.
Registro SSPCON 2.
Figura 98. Bits del registro SSPCON2
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
7 6 5 4 3 2 1 0
CGEN: sólo se utiliza en el modo esclavo.
ACKSTAT: si es 1 significa que se ha recibido el bit ACK del esclavo.
ACKDT: es el bit de reconocimiento en el modo maestro en recepción. Si vale 0
el maestro ha transmitido el bit de reconocimiento pero, si ADKDT = 1 no lo ha
realizado.
242
ACKEN: si vale 1 se inicia la secuencia de generación de la condición de
reconocimiento. Este bit se borra automáticamente por hardware.
RCEN: si vale 1 habilita el modo de recepción del maestro.
PEN: si se coloca a 1, genera la condición de parada en las líneas SCL y SDA.
RSEN: si es igual a 1, inicia la repetición de la condición de inicio.
SEN: si es igual a 1, indica la condición de inicio.
Registro SSPBUF. Este registro actúa como búfer y soporta el dato que se va a
transmitir o que se ha recibido.
Registro SSPSR (Desplazamiento). Realiza la conversión serie / paralelo y
viceversa junto al SSPBUF. Cuando se ha completado la llegada del byte, que se
recibe en SSPSR, se traspasa a SSPBUF y se activa el señalizador SSPIF. Si se
recibe otro byte antes de haber leído al SSPBUF, se activa el señalizador de
desbordamiento SSPOV (bit 6 de SSPCON).
Registro SSPADD. Este registro guarda la dirección del esclavo.
Cuando se emplean direcciones de 10 bits, el usuario debe escribir el byte alto de
la dirección con el siguiente código dónde A9:A8 son los dos bits de más peso:
1 - 1 - 1 - 1 - 0 - A9 - A8 - 0.
F.3.1 Funcionamiento del modo maestro. El trabajo en el modo maestro se
pone en marcha escribiendo los valores adecuados en los bits del registro de
control SSPCON y SSPEN = 1. Una vez puesto en funcionamiento este modo, el
usuario tiene 6 opciones:
243
1a. Generar la condición de inicio.
2a. Generar la condición de repetición inicio.
3a. Escribir sobre SSPBUF para iniciar la transmisión de un dato o una dirección.
4a. Generar la condición de parada.
5a. Configurar el modo I2C en recepción.
6a. Generar la condición reconocimiento al final de la recepción de un byte de
datos.
A continuación, se describe la secuencia de pasos a realizar en una transmisión
del maestro:
1. Generar condición de inicio, poniendo SEN = 1 en SSPCON2.
2. Se pone SSPIF = 1. Se esperará a que finalice la operación de inicio antes
de empezar otra.
3. Se carga la dirección del esclavo a trasmitir en SSPBUF.
4. Se coloca en SDA la dirección del esclavo.
5. El esclavo genera el bit de reconocimiento ACK y en el maestro se escribe
el bit 1 en ACKSTAT del registro SSPCON2.
6. Se genera una interrupción al final del noveno impulso del reloj y SSPIF = 1
7. Se carga un dato de 8 bits por SDA
8. Se transmiten los 8 bits por SDA.
9. Se repite el paso 5.
10. Se repite el paso 6.
11. Se genera la condición de parada con PEN = 1 en SSPCON2.
12. Se genera una interrupción una vez completa la condición de parada.
Modo maestro en transmisión. En este modo primero se transmite la dirección
del esclavo que se carga en SSPBUF, en cuyo momento se pone el bit BF=1 del
registro SSPSTAT, colocándose en marcha el reloj e inicio de la transmisión.
Después se transmite el byte de datos, cargándose también en SSPBUF. Cada bit
244
que sale por SDA lo hace en el flanco descendente del impulso de reloj en SCL.
Tras sacar los 8 bits se borra el bit BF y el esclavo debe generar el ACK en el
noveno impulso de reloj. El bit ACK se coloca en el bit ACKDT en el flanco
descendente de SCL. Tras el noveno impulso SSPIF = 1 y se detiene el generador
de frecuencia hasta que no se cargue otro dato en SSPBUF.
Modo maestro en recepción. Para habilitar este modo se pone el bit RCEN=1. El
generador de frecuencia empieza a funcionar y SCL cambia de estado en cada
periodo controlado por el decremento del contador BRG. Entonces el dato
empieza a desplazarse sobre el registro SSPSR. Al final del octavo reloj se ponen
BF = SSPIF = 1 y se transfiere el contenido de SSPSR al SSPBUF, con lo que
RCEN = 0. Cuando el buffer es leído por la CPU BF se pone a 0
automáticamente. El usuario puede enviar un bit ACK al finalizar la recepción,
escribiendo ACKEN = 1.
Cuando una dato o una dirección se carga en SSPBUF desde SSPSR, el bit BF=1
y este bit pasa a 0 cuando la CPU lee SSPBUF. El señalizador de desbordamiento
SSPOV es 1 cuando se recibe un byte en SSPSR y aún la CPU no ha leído el dato
anterior. Ahora si se escribe en SSPBUF mientras hay una recepción en progreso,
el bit WCOL se pone a 1 y el contenido del buffer no cambia.
F.3.2 Funcionamiento del modo esclavo. En el modo esclavo, los pines SCL y
SDA deben configurarse como entradas. Cuando una dirección es igual, o el dato
transferido después de una dirección igual es recibida, el hardware
automáticamente generará el pulso de reconocimiento (ACK), y entonces carga el
registro SSPBUF con el valor recibido actualmente en el registro SSPSR.
Existen ciertas condiciones que causarán que el módulo MSSP (Puerto Serial
Maestro Sincrono “Master Synchronous Serial Port”) no entregue el pulso ACK.
Puede ser una o ambas de las dos siguientes condiciones:
245
a) El bit señalizador del buffer BF esta a 1 (SSPSTAT <0>) antes de que la
transmisión fuera recibida.
b) El bit de desbordamiento SSPOV esta a 1 (SSPCON <6>) antes de que la
transmisión fuera recibida.
Modo esclavo en recepción. Cuando el bit R/W# del byte de dirección es 0 y una
dirección igual ocurre, el bit R/W del registro SSPSTAT es puesto a 0. La dirección
recibida es cargada en el registro SSPBUF.
Cuando el byte de dirección desborda la condición existente, entonces, ningún
pulso de reconocimiento (ACK) es entregado. Una condición de desbordamiento
es definida cuando el bit BF es fijado a 1, o el bit SSPOV es 1.
El bit de señalización SSPIF (PIR1 <3>) debe ser colocado a 0 por software. El
registro SSPSTAT se usa para determinar el estado del byte recibido.
Modo esclavo en transmisión. Cuando el bit R/W# del byte de dirección
entrante es 1 y una dirección igual ocurre, el bit R/W# del registro SSPSTAT es
puesto a 1. La dirección recibida es cargada en el registro SSPBUF. Los pulsos
ACK se envían en el noveno bit, y la línea SCL se mantiene a bajo mientras la
CPU responde a SSPIF. La transmisión de los datos debe cargarse en el registro
SSPBUF, que también carga el registro SSPSR. Entonces, la línea SCL debe
habilitarse poniendo el bit CKP = 1 (SSPCON <4>). El maestro debe supervisar
SCL antes de confirmar otro pulso de reloj. Los dispositivos esclavos pueden estar
rechazando al maestro estirando el reloj. Los ocho bit de los datos son cambiados
en el descenso final de la entrada de SCL. Esto asegura que la señal de SDA es