Por:
Pablo Alonso Velásquez Garrido
INFORME DE PASANTÍA
Presentado ante la Ilustre Universidad Simón Bolívar
como requisito parcial para optar al título de
Ingeniero Electrónico
Por:
Pablo Alonso Velásquez Garrido
INFORME DE PASANTÍA
Presentado ante la Ilustre Universidad Simón Bolívar
como requisito parcial para optar al título de
Ingeniero Electrónico
RESUMEN
El presente informe describe el trabajo de pasantía para el diseño y desarrollo de una tarjeta
de adquisición de datos para la interconexión de equipos industriales con la web a través del
monitoreo de variables provenientes de sensores industriales y otros dispositivos mediante los
protocolos de comunicación ModBus y MQTT. El Hardware está fundamentado en un
microcontrolador Atmel SAMD21G, basado en arquitectura ARM, compatible con la plataforma
de desarrollo Arduino IDE y IoT. El proyecto incluye una Aplicación de escritorio, diseñada para
ejecutarse desde cualquier computador, representando de este manera una interacción directa. La
funcionabilidad del prototipo fue verificada al monitorear señales analógicas de 4-20 mA, señales
digitales de 0-24 V, datos obtenidos de esclavos ModBus en la misma red, los cuales fueron
publicados posteriormente en la “Nube”. Finalmente, se verificó el consumo de potencia del
dispositivo, obteniéndose un valor de aproximadamente 30 mA @ 24 V. De este modo, el
prototipo desarrollado, al ser incorporado en un proceso industrial, aporta la capacidad de
transmitir los datos de los equipos en planta a la Internet, para luego ser monitoreados desde
cualquier parte del mundo.
Palabras claves: Adquisición de datos, PCB, Microcontrolador, ModBus, Sensores, Señales
industriales, IoT, la Nube.
DEDICATORIA
A mis amados padres, José Jesús y Ana Elizabeth, por su invalorable amor y confianza durante
todas las etapas de mi vida.
A mi hermana Keyla, a mi hermano José Jesús, por su constante apoyo y servir de ejemplo a
seguir.
vi
ÍNDICE GENERAL
Pag.
vii
viii
ix
ÍNDICE DE TABLAS
Pag.
ÍNDICE DE FIGURAS
Pag.
xi
Figura 3.11 Layout (diseño) del PCB desarrollado en este proyecto ………………….. 53
Figura 3.12 Vista de la capa superior del PCB ………...………………………………. 54
Figura 3.13 Vista de la capa inferior del PCB ………………….……………………… 55
Figura 3.14 Vista del PCB dentro del encapsulado seleccionado ……………………… 55
Figura 3.15 Diagrama de flujo del firmware del PCB diseñado ……………………….. 57
Figura 4.1 Diagrama general del funcionamiento de la aplicación de escritorio …….. 59
Figura 4.2 Ventana de inicio de la aplicación de escritorio …………………………... 60
Figura 4.3 Ventana principal de la aplicación de escritorio (sin proyecto aún creado) 60
Figura 4.4 Ejemplo de la ventana principal, en este caso, mostrando la pestaña para
configurar las entradas (pestaña “I/O”) …….……………………………. 61
Figura 4.5 Ejemplo del comienzo de un archivo de configuración .cfg creado por la
aplicación de escritorio …………………………………………………… 61
Figura 5.1 Resistencias (R104 y R105) que deben ser removidas para utilizar el
depurador de la tarjeta Arduino Zero de manera independiente [18] ... 63
Figura 5.2 Conexión del PCB a un transmisor de 2 hilos (señal analógica) …………. 65
Figura 5.3 Conexión de un suiche (entrada digital industrial) al PCB …………………. 66
Figura 5.4 Interfaz del programa RealTerm utilizado en este proyecto para las
pruebas de la comunicación serial …………………………………………………… 67
Figura 5.5 Interfaz del simulador ModScan ..…………………………………………………….. 69
Figura 5.6 Interfaz del simulador ModSim .………………………………………………………. 70
Figura 5.7 Mensajes JSON publicados en el servidor HiveMQ, observados en la App
MQTTLens ………………………………………………………………... 71
Figura 5.8 Esquema de la aplicación del PCB en modo distribuido en la Industria ….. 72
xii
LISTA DE SÍMBOLOS
xiii
LISTA DE ABREVIATURAS
xiv
xv
xvi
1
INTRODUCCIÓN
Antecedentes
Un sistema de adquisición de datos es un conjunto de dispositivos, líneas e interfaces que
realizan la conexión entre las señales provenientes de dispositivos de campo (ya sean
transductores, interruptores, medidores y controladores que emiten señales eléctricas), y un
computador para que este, mediante un software realice el procesamiento y almacenamiento de la
información [1].
Se pretende además, fortalecer la generación de ideas y propuestas desde las empresas y las
universidades, capaces de competir en diseño, calidad y costos con productos existentes para los
sectores productivos, considerando que aún existe la posibilidad de incursionar con nuevas
tecnologías a pesar de la presencia de equipos de reconocidos fabricantes y de la competencia de
toda índole.
Objetivo General
Desarrollar una PCB con interconexión de módulos electrónicos para la comunicación con
equipos industriales y plataformas Web.
Objetivos Específicos
1. Diseñar circuito electrónico de acondicionamiento de entradas analógicas y digitales con
estándar industrial, así como también de módulos accesorios: Memoria EEPROM, RTC,
USB, Ethernet.
2. Diseñar circuito electrónico con capacidad para comunicación industrial (ModBus TCP/IP
y ModBus 232/485).
3. Integrar el protocolo de comunicación industrial ModBus y el protocolo de comunicación
a través de Internet (MQTT) en el PCB a diseñar.
4. Diseñar, programar e integrar el firmware para el funcionamiento del PCB.
5. Diseñar e integrar una aplicación de escritorio de Windows con el propósito de configurar
el PCB.
6. Elaborar un manual de usuario del producto como un todo.
CAPÍTULO 1
1.1. Generalidades
LS Innovaciones C.A., es un empresa fundada en el año 2006 con sede principal en la ciudad
de Caracas, dedicada al desarrollo y puesta en marcha de sistemas de Automatización y
Seguridad, Instrumentación y Construcción, con alto grado de confiabilidad, seguridad, eficiencia
y conocimiento en la búsqueda de nuevas y mejores soluciones.
4
1.2. Misión
Brindar soluciones a sus clientes en cuanto a aplicaciones de sistemas de automatización y
seguridad, instrumentación y construcción, con especial atención a la seguridad y ambiente en el
entorno social que nos rodea.
1.3. Visión
Innovar en soluciones, respetando y cuidando el ambiente, seguridad en el trabajo realizado,
responsabilidad social con el entorno, mejoramiento continuo y compromiso y responsabilidad
con nuestros clientes y asociados.
De igual modo LS Innovaciones C.A. ofrece soluciones para minimizar riesgos y aumentar
la productividad de cada uno de sus clientes, para lo cual ofrece soluciones como:
• Sistemas de Control
• Sistemas de Detección de Fuego y Gas
• Sistemas SCADA
• Sistemas de Control Distribuidos
5
• Sistemas de Monitoreo de Vibraciones
• Centro de Control de Motores
• Coordinación de Protecciones
• Transferencia Automática
• Sistemas de control de energía
• Data Center
CAPÍTULO 2
FUNDAMENTOS TEÓRICOS
7
Smart Object Networking – Consideraciones Arquitectónicas en Redes de Objetos Inteligentes’’
[2], donde definen a la IoT como: “El término que denota una tendencia en que un gran número
de dispositivos embebidos utilizan los servicios de comunicación que ofrecen los protocolos de
Internet. A estos dispositivos suelen llamarles “objetos inteligentes’’ y no son operados
directamente por un ser humano, sino que existen como componentes en edificios o vehículos o
están distribuidos en el entorno”.
8
El modelo de comunicación dispositivo a dispositivo encaja bien en aplicaciones de
domótica o telemetría, en las que los dispositivos intercambian pequeños paquetes de datos a baja
velocidad y cada cierto tiempo. Los dispositivos para la IoT residenciales (bombillas de luz,
interruptores, termostatos y cerraduras) normalmente envían pequeñas cantidades de información
(por ejemplo, un mensaje del estado de bloqueo de una puerta o un comando para encender una
bombilla de luz) en un escenario de automatización del hogar.
En este modelo encajan todas aquellas aplicaciones en las que el dispositivo IoT tiene
capacidad suficiente para conectar directamente con algún servicio en la nube, con el que
comparte datos para que sean analizados por algoritmos o enviar comandos de control para
actuar directamente sobre el dispositivo. Esto se ilustra en la Figura 2.2.
9
Para que esto sea posible, el dispositivo debe contener el hardware específico que permita
conectarse vía Ethernet o WiFi y tener recursos suficientes para albergar una pila TCP/IP.
Ejemplos de este tipo de comunicación la vemos en electrodomésticos de alta gama, como una
Smart Tv (Tv inteligente).
Este es el modelo de comunicación más utilizado en IoT, hay varios dispositivos que se
utilizan hoy en día como ALG. Uno de los más populares y flexibles son los smartphones
(teléfono inteligente), capaces de conectar dispositivos IoT e Internet a través de alguna App,
aprovechando la conexión a Internet que traen de serie. Este modelo se muestra en la Figura 2.3.
10
4) Modelo de Intercambio de Datos a través del Back End (Interfaz de programación)
Este modelo es la arquitectura de comunicación soporte de los servicios en Internet que
permiten a los usuarios recolectar datos de sus dispositivos IoT, analizarlos y tomar decisiones
inteligentes. A menudo, estos servicios permiten compartir datos con otros servicios. A nivel
empresarial, está directamente relacionado con el Big Data (Datos a gran escala) y el Business
Intelligence (Inteligencia de negocios).
El protocolo ModBus es el lenguaje común utilizado por todos los controladores Modicon.
Este define una estructura de mensajes que los controladores reconocerán y utilizarán,
independientemente del tipo de redes sobre las que se comuniquen. Describe el proceso que un
controlador utiliza para solicitar acceso a otro dispositivo, cómo responderá a las solicitudes de
los otros dispositivos y cómo se detectarán y notificarán los errores. Establece un formato común
para el diseño y el contenido de los campos de mensaje. ModBus define una PDU (Protocol Data
Unit - Unidad de Datos de Protocolo) independiente de las capas de comunicación subyacentes.
El mapeo del protocolo ModBus en buses o redes específicos puede introducir algunos campos
12
adicionales en la ADU (Aplication Data Unit - Unidad de Datos de Aplicación) tal como se
indica en la Figura 2.5.
ADU
Dirección Adicional Código Función Datos Chequeo de Error
LRC/CRC
PDU
13
ModBus proporciona el estándar interno que utilizan los controladores Modicon para
analizar mensajes. Durante las comunicaciones en una red ModBus, el protocolo determina cómo
cada controlador conocerá su dirección de dispositivo, reconocerá un mensaje dirigido a ella,
determinará el tipo de acción que se tomará y extraerá cualquier dato u otra información
contenida en el mensaje. Si se requiere una respuesta, el controlador construirá el mensaje de
respuesta y lo enviará usando el protocolo.
La comunicación se da en forma serial asíncrona bajo los estándares RS-232 ó RS-485 para
enlace half duplex (semi-duplex)2 y RS-422 para enlace full duplex (dúplex)3, utiliza diferentes
medios físicos como son los de soporte metálico (cables), radio frecuencia (RF), fibra óptica o
infra rojo cuya velocidad de transmisión oscila entre los 75 y 19200 Baudios.
Estos mensajes son conocidos como tramas y están constituidos por un conjunto de
caracteres que tienen una longitud de las tramas variables, pero acotadas a un máximo de 256
caracteres. Estas tramas contienen los datos necesarios para reconocer el origen y objetivo de
2
Half-duplex (Semi-dúplex): transmisión en ambas direcciones, solo una dirección a la vez. Transmisor y receptor
comparten una sola frecuencia.
3
Full dúplex (Dúplex): transmisión en ambas direcciones, simultáneamente por el mismo canal. Dos frecuencias una
para transmitir y otra para recibir.
14
cada mensaje puesto en el bus por alguno de los dispositivos y que luego le servirá a un
dispositivo receptor para hacer la validación y la posterior toma de decisiones.
El protocolo ModBus maneja básicamente dos tipos de datos: bits individuales y palabras de
16 bits. Los bits individuales corresponden a entradas o salidas discretas con estados On/Off y las
palabras a registros de entrada o salida cuyos estados indican un valor análogo. En la Tabla 2.1
se presentan estos tipos de datos.
Tabla 2.1. Datos en un dispositivo de una red ModBus
Estos datos pueden ser modificados sólo si son salidas del controlador programable. La
entradas no tiene la posibilidad de ser cambiadas por un software de aplicación ya que hacen
referencia a estados externos de los controladores.
En la Tabla 2.2, se muestra una referencia de los datos manejados por los controladores.
15
automatización de la industria gracias a su particular estructura de mensajes que opera con
direcciones de memoria y no variables concretas, haciéndolo aceptable a diferentes dispositivos.
También debido a su especificación realmente abierta que permite comprender en toda su
extensión la forma en que se lleva a cabo la transacción de mensajes y el flujo de información
con lo cual ha sido posible la programación de equipos que lo ejecuten y puedan formar parte de
una red ModBus.
Los controladores pueden configurarse para comunicarse en redes ModBus con cualquiera
de los dos modos de transmisión: ASCII o RTU. Los usuarios seleccionan el modo deseado,
junto con los parámetros de comunicación del puerto serie (velocidad en baudios, modo de
paridad, etc.) durante la configuración de cada controlador. Los parámetros de modo y serie
deben ser los mismos para todos los dispositivos de una red ModBus. La selección del modo
ASCII o RTU pertenece únicamente a las redes ModBus estándar. Define el contenido de bits de
los campos de mensaje transmitidos en serie en dichas redes. Determina cómo la información
será empaquetada en los campos de mensaje y decodificada. El modo y los parámetros del puerto
serie tienen que ser los mismos para todos los dispositivos a fin de garantizar en primera instancia
el buen funcionamiento de la red. A continuación desarrollamos el modo de transmisión RTU por
ser el modo de transmisión en serie utilizado en el proyecto.
T1-T2-T3-T4
N
8 bits 8 bits n*8 bits 16 bits T1-T2-T3-T4
De igual modo se cuenta con ocho bits para enviar el código de función, múltiplos enteros de
ocho bits para los datos si son necesarios y dieciséis para el CRC (Cyclic Redundancy Check –
Chequeo Cíclico Redundante). La trama terminará con un silencio de al menos 3,5 veces el
tiempo necesario para enviar un carácter.
Además del tiempo que limita el inicio y el fin de una trama, en el modo de transmisión RTU
se debe considerar, el tiempo que transcurre entre la llegada de caracteres consecutivos. Este
tiempo se ha definido para que sea máximo de 1,5 veces el Tiempo necesario para enviar un
carácter (Tc). Si entre el fin de un carácter y el comienzo de otro, transcurre un tiempo mayor que
1,5Tc y menor que 3,5Tc se producirá una situación de error en la transmisión y el dispositivo
receptor debe ignorar la trama. Cuando se produce este error los esclavos no enviaran ningún
mensaje de respuesta.
17
CON CHEQUEO DE PARIDAD
INICIO 1 2 3 4 5 6 7 8 PAR FIN
SIN CHEQUEO DE PARIDAD
INICIO 1 2 3 4 5 6 7 8 FIN FIN
Un ejemplo de petición de tres datos se muestra en la Tabla 2.4, en la cual se observa como
se construye la consulta en el formato RTU. El maestro le pide al esclavo que envíe tres registros
a partir del registro 006B (107d).
CONSULTA
Ejemplo RTU
Nombre del Campo (Hex.) Campo de 8-Bit
Cabecera Ninguno
Dirección esclavo 06 0000 0110
Función 03 0000 0011
Dirección Inicio (Hi) 00 0000 0000
Dirección Inicio (Lo) 6B 0110 1011
No. de Registro (Hi) 00 0000 0000
No. de Registro (Lo) 03 0000 0011
Chequeo de errores CRC (16 bits)
Fin de la Trama Ninguno
Total Bytes: 8
La función principal de TCP es asegurar que todos los paquetes de datos se reciban, mientras
que IP garantiza que los mensajes sean dirigidos y enrutados. La combinación TCP/IP es
18
simplemente un protocolo de transporte, y no define qué significa el dato o cómo se interpretarán
los datos, lo cual es el objetivo del protocolo de aplicación ModBus. ModBus TCP/IP utiliza
TCP/IP y Ethernet para transportar los datos de la estructura de mensajes entre dispositivos
compatibles, combina una red física (Ethernet), un estándar de red (TCP/IP) y un método
estándar de representación de datos ModBus como protocolo de aplicación.
19
• Longitud: 2 bytes que identifican el número de bytes en el mensaje a seguir.
• Identificador de unidad: 1 byte establecido por el Cliente y repetido por el Servidor para la
identificación de un esclavo remoto conectado en una línea serie o en otros buses.
De esta forma, un mensaje ModBus TCP completo posee una estructura como se muestra en
la Tabla 2.5.
Por ejemplo, una solicitud equivalente a esta trama de RTU de ModBus, sería:
11 03 006B 0003 7687
Donde:
20
La ADU ModBus TCP/IP completa, está incrustada en el campo de datos de una trama TCP
estándar y enviada a través de TCP al Puerto de Sistema 502 4 , reservado para aplicaciones
ModBus, mediante el cual los clientes y servidores ModBus TCP/IP escuchan y reciben datos
ModBus. La unión del protocolo de aplicación ModBus con la transmisión Ethernet forma un
poderoso estándar de comunicación industrial en ModBus TCP/IP.
8 bits 8 bits
Bytes de datos Bytes de datos
4
Puerto por defecto al cual direccionar datos de ModBus TCP.
21
2.2.4.1. Campo de dirección
ModBus es un protocolo multipunto, el maestro puede comunicarse a múltiples esclavos
utilizando la misma línea de comunicación. Cada esclavo debe tener una identificación única e
irrepetible dentro de la red con la que los dispositivos identificaran el destino y el origen de los
mensajes que sean puestos en el bus. Duplicar esta dirección puede producir colisiones en el bus
o conflictos en la red que conlleven a un flujo de datos no fiables con las posteriores
consecuencias negativas en lo que se quiere comunicar. Todas las direcciones de datos de los
mensajes ModBus se hacen referencia a cero. La primera aparición de un elemento de datos se
trata como el número de ítem cero. Por ejemplo:
§ La bobina (Coil) conocida como “Bobina 1” en un controlador programable se dirige como
bobina 0000 en el campo de dirección de datos de un mensaje ModBus.
§ La bobina 127 decimal se dirige como la bobina 007E Hex. (126 decimal).
§ El registro de retención 40001 se dirige como el registro 0000 en el campo de dirección de
datos del mensaje. El campo de código de función ya especifica una operación “Holding
Register” (Registros de Lectura/Escritura). Así, la referencia “4XXXX” está implícita.
§ El registro de retención 40108 se dirige como el registro 006B Hex. (107 decimal).
El campo de dirección es utilizado por los esclavos para colocar en él su propia dirección y
permitirle al maestro identificar qué esclavo a puesto en el bus un mensaje de respuesta.
22
− Incluye tanto los códigos de función públicos asignados definidos, como la función no
asignada
− Códigos reservados para uso futuro
• Códigos de Función Definidos por el Usuario
− Existen dos rangos de códigos definidos por el usuario, de 65 a 72 y de 100 a 110 decimal
− El Usuario puede implementar un código de función no soportado por la especificación
− No hay garantía de que el uso del código de función seleccionado sea único
− Si el usuario desea volver a colocar la funcionalidad como un código de función pública,
debe iniciar una RFC (Request For Comments – Solicitud de Comentario) para introducir el
cambio en la categoría pública y tener un nuevo código de función público asignado
− La organización ModBus se reserva expresamente el derecho de desarrollar el RFC
propuesto
• Códigos de Función Reservados
− Códigos utilizados por algunas empresas para productos y no disponibles para uso público
El Campo de Código de Función de una trama cuando se utiliza el modo de transmisión RTU
contiene ocho bits. Los códigos válidos están en el rango decimal de 1 …255. Cuando el maestro
envía un mensaje de petición a un dispositivo esclavo, el campo de código de función le dice al
esclavo que tipo de acción debe ejecutar. Algunos ejemplos de funciones son: leer o forzar los
estados On/Off de un grupo de salidas discretas, leer o forzar el contenido de un grupo de
registros, leer el estado de diagnóstico del esclavo, etc. En la Figura 2.11. se muestran las
categorías de códigos de función ModBus.
127
CÓDIGOS DE FUNCIÓN PÚBLICA
23
Cuando el esclavo responde usa el campo de código de función en el mensaje de respuesta
para indicar si es una respuesta normal o si ha ocurrido alguna excepción.
Un mensaje del maestro al esclavo para leer un grupo de registros de salida tendría el
siguiente código de función en el modo de transmisión RTU: 0000 0011 (Hex. 03). Si el
dispositivo esclavo puede ejecutar la acción solicitada, el código de función en el mensaje de
respuesta es igual al enviado en la solicitud.
En caso contrario, si hay una excepción, el contenido del campo del código de función será:
1000 0011 (Hex. 83). Además, el esclavo coloca un código en el campo de datos del mensaje de
respuesta, que le informa al maestro que tipo de error se produjo o la razón de la excepción. En la
Tabla 2.6. se muestra la definición de los códigos de función pública disponibles en el protocolo
ModBus.
Tabla 2.6. Definición de Códigos de Función Pública disponibles Protocolo ModBus [4]
CÓDIGO DE FUNCIÓN
CÓD. SUB CÓD. (Hex.)
Entradas físicas Discretas Leer entradas discretas 02 02
A Acceso Bits internos Leer Bobinas 01 01
C Bits O Escribir Bobina simple 05 05
C Bobinas Físicas Escribir Bobinas Múltiples 15 0F
E Registros Entrada Física Leer Registro de Entrada 04 04
S Leer Registros de Retención 03 03
O Acceso Registros Internos Escribir Registro Simple 06 06
16 O Escribir Múltiples Registros 16 10
D Bits Registros de Leer/Escribir Múltiples Registros 23 17
A Salidas Físicas Mascara Escribir Registro 22 16
T Leer FIFO queue 24 18
O Leer Archivo de Registro 20 14
S Acceso Registro de Archivos Escribir Archivo de Registro 21 15
Leer Estatus de Excepción 07 07
Diagnóstico 08 00-18,20 08
Contador de Eventos Get Com 11 0B
Diagnóstico Registro de Eventos Get Com 12 0C
ID del Servidor de Informes 17 11
Leer Identificación Dispositivo 43 14 2B
Otros Interfaz Encapsulada Transporte 43 13,14 2B
Referencia General CANopen 43 13 2B
24
2.2.5. Funciones de datos y control ModBus
A continuación se indican los códigos según corresponde:
25
− 14 Devolver el Número de Mensajes del Servidor [0E Hex.]
− 15 Servidor de Devolución sin Contador de Respuesta [0F Hex.]
− 16 Retorno Servidor Reconocimiento Negativo (NAK Count) [10 Hex.]
− 17 Retorno de la Cuenta Ocupada del Servidor [11 Hex.]
− 18 Retorno del Recuento de Caracteres del bus [12 Hex.]
− 20 Contador e Indicador de Desbordamiento [14 Hex.]
• Obtener Contador de Eventos de Comunicación (Sólo línea serial) [11 (0X0B)]
• Obtener Registro de Eventos de Comunicación (Sólo línea serial) [12 (0X0C)]
• ID de Servidor de Informes (Sólo línea serial) [17 (0X11)]
• Leer la Identificación del Dispositivo 43/14 [0X2B/0X0E]
El protocolo se ejecuta sobre TCP/IP, o sobre otros protocolos de red que proporcionan
conexiones bidireccionales ordenadas, sin pérdidas. En Octubre de 2014 se aprobó el MQTT
Versión 3.1.1. como una norma OASIS [5]. Sus características incluyen:
• Uso del patrón de mensaje de publicación/suscripción que proporciona una distribución de
mensajes de uno a varios y desacoplamiento de aplicaciones.
• Un transporte de mensajería que es agnóstico para el contenido de la carga útil. Con tres
cualidades de servicio para el envío de mensajes:
− "A lo sumo una vez", donde los mensajes se entregan de acuerdo con los mejores esfuerzos
del entorno operativo. Se puede producir una pérdida de mensajes. Este nivel podría
utilizarse, por ejemplo, con datos de sensores ambientales en los que no importa si se pierde
una lectura individual, ya que la siguiente será publicada poco después.
26
− "Por lo menos una vez", donde los mensajes se aseguran para llegar pero los duplicados
pueden ocurrir.
− "Exactamente una vez", donde el mensaje está asegurado para llegar exactamente una vez.
Este nivel podría utilizarse, por ejemplo, con sistemas de facturación en los que los
mensajes duplicados o perdidos podrían dar lugar a que se aplicaran cargos incorrectos.
• Se minimiza un pequeño gasto de transporte y se minimizan los intercambios de protocolos
para reducir el tráfico de red.
• Un mecanismo para notificar a las partes interesadas cuando se produce una desconexión
anormal.
La arquitectura de MQTT sigue una topología de estrella, con un nodo central que hace de
Servidor (Broker) con una capacidad de hasta 10000 clientes. El servidor es el encargado de
gestionar la red y de transmitir los mensajes, para mantener activo el canal, los clientes mandan
periódicamente un paquete y esperan la respuesta del servidor. La comunicación puede ser
cifrada entre otras muchas opciones que aporta a la red una capa extra de seguridad. Este tipo de
arquitectura, permite que la comunicación puede ser de uno a uno o de uno a muchos. La
comunicación se basa en "topics" (tópicos), que el cliente que publica el mensaje crea y los nodos
que deseen recibirlo deben subscribirse a él.
27
cuales en base a la data obtenida y recolectada, permiten al usuario visualizar y analizar toda
la información con el fin de verificar y evaluar el desempeño requerido y necesario para las
operaciones de una planta en específico y en tiempo real.
La plataforma indConnect ofrece la posibilidad de llevar los datos de una planta al Internet
de forma segura, pudiendo acceder desde cualquier lugar del mundo a través de una plataforma
Web que se ha desarrollado para ello, desde un PLC remoto o directamente desde un SCADA.
Para esto se dispone de un servidor alojado en la “Nube”, el cual puede actuar como servidor
MQTT, recibiendo y enviando datos desde y hacia cada uno de los equipos mediante IndConnect
Gateway e IndConnect Link, este último es el caso que nos ocupa en este proyecto de pasantía.
28
Figura 2.13. Ejemplo de una aplicación web concerniente a los datos de una
Estación de Bombeo en la plataforma indConnect [6].
Los datos de campo (entradas digitales y analógicas) pueden ser cableados directamente al
modulo indConnect Link (PCB) (Ver Figura 2.14.), el cual tiene la capacidad de procesar estas
señales y enviarlas mediante protocolo ModBus a otros equipos en planta. Adicionalmente, el
PCB puede enviar estos datos a la "Nube", de acuerdo a los siguientes criterios que pueden ser
configurados:
• Porcentaje de variación: las señales analógicas solo se enviarán cuando su variación sea
superior a un porcentaje configurado por el usuario.
• Cambio de estado: las señales digitales solo se enviarán cuando se produzca un cambio de
estado en ellas.
Estos criterios garantizan que el consumo de datos de Internet sea el mínimo posible o
deseable haciendo al sistema más eficiente y confiable en cuanto al uso de recursos [7].
29
En la Figura 2.15 se muestra un esquema del enfoque del PCB desarrollado para propósito de
este informe (Módulo indConnect Link) en la industria. Como se puede observar, el PCB se
puede conectar al sensor y a un PLC por protocolo ModBus. Además, el PCB puede estar
conectado por USB a un computador para que así el usuario pueda interactuar con el mismo a
través de la Aplicación (App) de escritorio, también desarrollada y que se discutirá en el Capítulo
4 con más detalles.
30
módulos distribuidos por toda la planta. Cada módulo (representado como “nodo” en la Figura
2.16.) puede estar conectado directamente a varios sensores y además conectado por protocolo
ModBus con otros dispositivos como PLCs; creando de esta manera toda una red de datos
ModBus. Además, puede enviar los datos a la “Nube” por protocolo MQTT como se ha explicado
anteriormente.
2.4.1 Sensores
Los sensores son las piezas de hardware que hacen el trabajo crítico de los procesos de
monitoreo, mediciones y recolección de datos. Un sensor convierte el parámetro físico (por
ejemplo: temperatura, presión, humedad, velocidad, etc.) en una señal que puede ser medida
eléctricamente.
31
• Calibración (esencial en los dispositivos de medición, una vez que las lecturas cambien con el
tiempo)
• Poder de decisión (mayor incremento detectado por el sensor)
• Costo
• Repetición (la lectura que varia es repetidamente medida dentro del mismo ambiente)
Según el tipo de salida que se obtiene de los sensores, estos pueden ser:
• Analógicos: cuando entrega como señal de salida voltaje o corriente dentro de un determinado
rango, 0-5 V, 1-10 V, 4-20 mA.
• Digitales: cuando entrega una salida tipo discreta con una determinada cantidad de bits.
32
• Ejecución de programas que modifiquen o anulen las tareas asociadas al autómata bajo ciertas
condiciones.
• Posibilidad de programación numérica para realizar cálculos aritméticos de elevada resolución
sobre la CPU del computador.
Cuando se decide implementar un sistema SCADA se deben considerar 5 fases básicas sobre
su instalación:
• Fase 1: El diseño de la arquitectura del sistema. Incluye el sistema de comunicaciones (Tipo
de bus de campo, distancias, número de E/S, Protocolo del sistema y Drivers).
• Fase 2: Equipamiento de los RTUs, comunicaciones, Equipos HMI y Hardware en general.
Adquisición de un software SCADA adecuado a la arquitectura y sistemas de la planta.
• Fase 3: La instalación del equipo de comunicación y el sistema PC (Personal computer –
Computador personal).
33
• Fase 4: Programación de equipos de comunicaciones, HMI y software SCADA.
• Fase 5: Puesta a punto para corregir y solucionar problemas de programación, comunicación y
software.
Algunos de los software SCADA, o que incluyen SCADA como parte de ellos, son:
– Aimax, de Design Instruments S.A.
– CUBE, Orsi España S.A.
– FIX, de Intellution
– Lookout, National Instruments
– Monitor Pro, de Schneider Electric
– SCADA InTouch, de LOGITEK
– SYSMAC SCS, de Omron
– Scatt Graph 5000, de ABB
– WinCC, de Siemens
2.6. PLC
Según la NEMA (National Electrical Manufacturers Association - Asociación Nacional de
Fabricantes Eléctricos) un PLC (Programable Logic Controller - Controlador Lógico
Programable) es un dispositivo digital electrónico con una memoria programable para el
almacenamiento de instrucciones que permiten la implementación de funciones especificas
(lógicas, secuenciales, temporizadas, de conteo y aritméticas) con el objeto de controlar máquinas
y procesos.
34
Los PLC están capacitados para almacenar y retirar información mediante dos tipos de
memoria, Memoria de Datos y Memoria de Usuarios, capaces de almacenar:
• Datos del Proceso:
o Señales de entradas y salidas
o Variables internas, de bit y de palabra
o Datos alfanuméricos y constantes
• Datos de Control:
o Instrucciones de usuario, programa
o Configuración del autómata
Los dispositivos de entrada son aquellos que intercambian (o envían) señales con el PLC.
Cada dispositivo de entrada sirve para conocer una condición particular de su entorno, como
temperatura, presión, posición, entre otras.
Los dispositivos de salida son aquellos que responden a las señales que reciben del PLC,
cambiando o modificando su entorno. Entre los dispositivos de salida podemos mencionar:
• Contactores de motor
• Electroválvulas
35
• Indicadores luminosos o simples relés
Los módulos de salida digital permiten al PLC actuar sobre elementos que admitan órdenes
de tipo encendido - apagado, todo o nada u “on - off”.
En el desarrollo del PCB de este trabajo, se utilizó un MCU Atmel debido a sus
características y su compatibilidad con la plataforma de desarrollo Arduino IDE, la cual facilita el
uso de la electrónica y programación de sistemas embebidos en proyectos multidisciplinarios.
Los MCU Atmel ofrecen una mezcla de diseños integrados eficientes e innovadores que son
ideales para los productos inteligentes de hoy en día. En esta era de Internet de las Cosas (IoT),
los MCU constituyen una tecnología clave que alimenta las comunicaciones de máquina a
máquina (M2M). En la Figura 2.17 se muestra un diagrama con la estructura genérica de un
MCU.
Figura 2.17. Estructura genérica de un MCU.
36
Los MCU Atmel ofrecen arquitecturas optimizadas para baja potencia, conectividad de alta
velocidad, ancho de banda óptimo de datos y un gran soporte de interfaz. Ofrece una amplia
variedad de opciones de configuración, los desarrolladores pueden diseñar soluciones de sistema
completos para todo tipo de aplicaciones.
37
programa de aplicación; es decir, consiste en un editor de código, un compilador, un depurador y
un GUI (Graphical User Interface - Constructor De Interfaz Gráfica). Además incorpora las
herramientas para cargar el programa ya compilado en la memoria flash del hardware. Su
principal característica es su sencillez y facilidad de uso.
En el caso de App de clientes en Windows se conjugan tres modelos principales: C++ para
programar directamente sobre las API de Windows (Windows application programming interface
– Interface de programación de aplicaciones de Windows), código administrado .NET con WPF
(Windows Presentation Foundation - Fundación de Presentación de Windows) y código
administrado .NET con Silverlight para el desarrollo rápido de App.
38
Puede escribirse para cada uno de estos entornos de programación y otros más con Visual
Studio, el entorno de desarrollo integrado (IDE) de Microsoft.
Visual Studio permite crear sitios y aplicaciones web, así como servicios web en cualquier
entorno que soporte la plataforma .NET. Así, se pueden crear aplicaciones que se comuniquen
entre estaciones de trabajo, páginas web, dispositivos móviles, dispositivos embebidos y
consolas, entre otros. Estas herramientas están diseñadas para trabajar juntas de la forma más
eficiente posible y todas se exponen a través del entorno del IDE de Visual Studio.
Visual Studio funciona y se integra bien con App de terceros como Unity a través de la
extensión Visual Studio Tools para Unity, y Apache Cordova a través de Visual Studio Tools
para Apache Cordova. Incluso se puede extender Visual Studio creando herramientas
personalizadas que realizan tareas especializadas.
Visual Studio sirve para crear muchos tipos de aplicaciones, desde sencillas hasta grandes y
complejos sistemas para empresas y centros de datos. Se pueden crear:
1. Apps que se ejecutan no solo en Windows, sino también en Android y en iOS.
2. Sitios y servicios web basados en ASP.NET, JQuery, AngularJS y otros entornos populares.
3. App para dispositivos y plataformas diversos como Azure, Office, Sharepoint, Hololens,
Kinect e Internet de las cosas.
4. Juegos y App con gráficos avanzados para una variedad de dispositivos Windows.
2.9.2. Framework.NET
El Framework.NET es un entorno de desarrollo para construir, instalar y ejecutar servicios
Web, Aplicaciones de escritorio (App) de Windows y otras aplicaciones. Se compone de cuatro
elementos principales:
• CLR (Common Language Runtime – Entorno en Tiempo de Ejecución de Lenguaje Común)
que es la rutina universal
39
• Una biblioteca de clases unificada llamada BCL (Base Class Library – Biblioteca de Clase
Unificada)
• ASP.NET con formularios Web, servicios Web XML
• Un subsistema de acceso a datos (ADO.NET)
CAPÍTULO 3
En este capítulo, se discute sobre los componentes que conforman el diseño, así como el
desarrollo del esquemático de los circuitos y el ensamblaje e implementación del PCB. La
empresa LS Innovaciones C.A., preseleccionó componentes para el diseño, entre estos el
microcontrolador (MCU) utilizado. Además, por razones de confidencialidad, no se mostrará con
detalle el esquemático de los circuitos diseñados, ni la programación desarrollada para el
firmware del PCB (Printer Circuit Board – Tarjeta de Circuito Impreso).
41
Analógico a Digital) de 14 canales y 12 bits, uno DAC (Digital to Analog Converter –
Convertidor Digital a Analógico) de 10 bit. Fuente de alimentación de 1,62 V a 3,63 V.
En la Figura 3.1 se muestra el Pin Out (Asignación de pines) del MCU Atmel SAMD21G18
utilizado en el proyecto.
42
Wiznet) que además se tenía a disposición. De igual forma, se procedieron a realizar pruebas
experimentales en un protoboard de los módulos de RTC (basado en el circuito integrado
PCF8523T), las memorias EEPROM (en este caso la prueba se hizo con el circuito integrado
24LC16B), el circuito para comunicación serial (basado para las pruebas en el integrado
MAX232) conectados a la tarjeta Arduino Zero. Esto se realizó con el fin de verificar el
funcionamiento de estos distintos módulos con un MCU basado en la arquitectura ARM, a
diferencia de la comúnmente usada AVR.
En el caso del circuito de acondicionamiento para las entradas digitales industriales, las
pruebas se realizaron en base al opto-acoplador H11A1 ya que se tenía a disposición para usos en
el protoboard. Sin embargo, para el caso de diseño se decidió usar el circuito integrado TLP293-4
por sus características muy particulares, además de permitir la conexión de hasta 4 entradas. En el
caso del circuito de acondicionamiento para las entradas analógicas, no se realizaron pruebas
experimentales previo al diseño del PCB ya que no se disponían de los componentes electrónicos
necesarios.
43
En la Figura 3.2 se muestra el pin out (asignación de pines) y el Diagrama de Bloques del
WIZnet W5500.
El Transceptor SP330E posee una interfaz lógica de bajo voltaje variable de hasta 1,65 V.
Opera desde una sola fuente de alimentación, que puede ser de 3,3 V o 5 V, con baja corriente
inactiva. En RS-485/422 las entradas del receptor son de alta impedancia (> 96 kΩ), lo que
permite hasta 256 dispositivos en un solo bus de comunicación (1/8 de unidad de carga).
44
Adicionalmente presenta las siguientes características que lo hacen ideal para este proyecto:
• Velocidades de datos de 20 Mbps para RS-485 y 1 Mbps para RS-232
• Operación de suministro único de + 3 V a + 5,5 V
• 2 Transmisores, 2 Receptores RS-232
• 1 Transmisor, 1 Receptor RS-485/422
− Configuración completa o half-duplex (semi-duplex)
− 1/8 unidad de carga, hasta 256 receptores en el bus
• VL Pin (Logic supply – Suministro de entradas lógicas) de la interfaz lógica de 1,65 V a 5,5 V
• Protección robusta de ESD (Electrostatic Discharge – Descarga Electroestática)
• Diseño pequeño con encapsulado 24-TSSOP (Thin Shrink Small Outline Package - Paquete de
contorno pequeño y contracción delgada)
• Pin de selección del protocolo a utilizar, es decir, RS-232, RS-485 o RS-422
En la Figura 3.3 se muestran los diagramas de bloques del Transceptor SP330E Modo RS-
485 Half-Duplex y Modo RS-232 utilizados en el proyecto.
45
3.2.3 Circuito de acondicionamiento para entradas Analógicas y Digitales Industriales
En algunos casos, la señal puede ser demasiado pequeña, y sería necesario amplificarla; o
podría contener interferencias que eliminar; ser no lineal y requerir su linealización; ser analógica
y requerir su digitalización; ser digital y convertirla en analógica, etc. Todas estas modificaciones
necesarias según corresponda en el dispositivo que se diseña o maneja, se le denomina con el
término acondicionamiento de señal. De tal modo que para acondicionar la señal, es decir,
hacerla adecuada al requerimiento técnico durante el desarrollo de un dispositivo electrónico, se
requiere de elementos capaces de hacer estos acondicionamientos.
46
entrada, esto debido a que la impedancia de entrada de los amplificadores es muy alta y en
consecuencia en esta modalidad, para un caso ideal: 1234 = 167 .
Figura 3.4. Aplicación del Amplificador Operacional MCP6004 como No-Inversor [11].
47
3.2.4 Módulo RTC PCF8523
El circuito integrado PCF8523 es un RTC (Real Time Clock – Reloj en tiempo Real) CMOS
(Complementary metal oxide semiconductor - Semiconductor complementario de óxido metálico)
y un calendario optimizado para bajo consumo de potencia. Los datos se transfieren en serie a
través de un bus I ) C con una velocidad de datos máxima de 1000 kbps. Las funciones de alarma
y temporizador están disponibles con la posibilidad de generar una señal de despertador en un pin
de interrupción. Un registro de desplazamiento permite un ajuste fino del reloj. El RTC PCF8523
tiene un circuito de conmutación de batería de respaldo, que detecta fallas de energía y cambia
automáticamente su voltaje de alimentación por el voltaje que suministra la batería cuando se
produce un corte de energía.
48
3.2.5 Memoria EEPROM 24AA025E48
La EEPROM 24AA025E48, es una memoria PROM eléctricamente borrable de 2 Kbit. El
dispositivo está organizado como dos bloques de memoria de 128 x 8 bits con una interfaz serial
de 2 cables. Tiene una capacidad de escritura de página de 16 bytes. Además, se puede alimentar
con un voltaje entre 1,7 V y 5 V. Otras características adicionales y relevantes de este
componente para la aplicación, son:
• Tecnología CMOS de baja potencia
• Interfaz serial de 2 hilos, compatible con I ) C
• Compatibilidad de reloj de 100 kHz y 400 kHz
• Tiempo de escritura de página 3 ms, típico
• Ciclo de borrado/escritura auto-programado
• Buffer de escritura de página de 16 bytes
• Protección de ESD > 4000 V
• Más de 1 millón de ciclos de borrado/escritura
• Posee pin para protección de escritura por hardware
• Programación de fábrica disponible
• Rangos de temperatura industrial: - 40 °C a + 85 °C
49
3.2.6 Memoria EEPROM 24AA64
La EEPROM 24AA64, es una memoria PROM eléctricamente borrable de 64 Kbit. El
dispositivo está organizado como ocho bloques de memoria de 1 K x 8 bits con una interfaz en
serie de 2 cables. El diseño de bajo voltaje permite un funcionamiento con voltajes de 1,8 V
a 5 V. Ha sido desarrollada para aplicaciones avanzadas de baja potencia, como comunicaciones
personales o adquisición de datos. La memoria EEPROM 24AA64 además tiene una capacidad
de escritura de página de hasta 32 bytes de datos y está disponible en los encapsulados PDIP
(Plastic Dual In-Line Package – Encapsulado Doble en Línea de Plástico) estándar de 8 pines,
SOIC (Small Outline Integrated Circuit – Circuito Integrado de Esquema Pequeño) de montaje
superficial, TSSOP (Thin Shrink Small Outline Package – Encapsulado de Contorno Pequeño y
Delgado) y MSOP (Mini Small Outline Plastic – Mini Pequeño Esquema de Plástico) lo cual la
hace ideal para este proyecto.
50
51
4. Altura: 114,5 mm
5. Ancho: 22,5 mm
Así, el diseño del PCB se realizó siguiendo estas características dimensionales. En la Figura
3.9 se muestran dos vistas tridimensionales del encapsulado utilizado en este proyecto.
52
Figura 3.10. Muestra de una hoja del esquemático desarrollado en este proyecto.
53
Como se mencionó anteriormente, el Layout (diseño) del PCB se realizó siguiendo las
características dimensionales del encapsulado previamente seleccionado. En la Figura 3.11 se
muestra el diseño realizado en EAGLE CAD.
54
Posterior a la fabricación del PCB y recepción del mismo, se procedió a realizar la soldadura
de los componentes que conforman el diseño y previamente adquiridos.
En las Figuras 3.12, 3.13 y 3.14 se muestran tres vistas del PCB con los componentes y
conectores soldados.
55
56
3.5 Firmware del PCB
El firmware es un bloque de instrucciones de programa (software programado) para
propósitos específicos, grabado en una memoria de tipo no volátil (por ejemplo, ROM,
EEPROM), y que contiene la información, configuración y el sistema básico para controlar los
circuitos electrónicos de un dispositivo. Estas instrucciones fijan la lógica primaria que ejerce el
control de los circuitos de alguna clase de artefacto. En concreto podemos establecer que el
firmware de cualquier dispositivo tecnológico cumple básicamente tres funciones:
1. Otorgar al sistema las rutinas fundamentales de funcionamiento y respuesta con respecto a las
peticiones usuales que recibe y debe satisfacer al usuario.
2. Establecer una sencilla y cómoda interfaz para que, de esta manera, se pueda acometer rápida
y fácilmente la configuración del sistema mediante el uso de una serie determinada de
parámetros.
3. Controlar y gestionar tanto lo que es el arranque del sistema del dispositivo como la
correspondiente iniciación.
En la Figura 3.14 se muestra el diagrama de flujo bajo el cual se diseño el firmware del PCB
construido, el cual cumple con las premisas propuestas anteriormente. Por razones de
confidencialidad, mencionada a comienzo de este capítulo, los códigos del firmware no podrán
mostrarse.
57
CAPÍTULO 4
59
agregar y editar los comandos del maestro ModBus, así como también los parámetros del cliente
MQTT o del servidor ModBus (si es el caso). Por último, la etapa final consiste en descargar el
archivo de configuración .cfg, que es creado por la App, vía USB al PCB. Si el usuario lo desea,
puede volver a editar el proyecto actual o crear uno nuevo. Además, el usuario puede
diagnosticar, como se mencionó anteriormente, sobre el PCB o también puede actualizar el
firmware del mismo. En consecuencia, la App provee al usuario diferentes opciones de
interacción con el PCB. En la Figura 4.1 se muestra un diagrama general de la App de escritorio.
En las Figuras 4.2, 4.3 y 4.4 se muestran algunas ventanas de la App desarrollada para los
propósitos de este informe. La App cuenta con varias ventanas, cada una para el cumpliendo de
cierto propósito: comandos maestro ModBus, parámetros del cliente MQTT, parámetros del
bróker message (servidor de mensaje) MQTT, descarga de archivo, actualización de firmware,
60
configuración de los parámetros de cada una de las entradas analógicas/digitales, entre otras. Por
motivos de solo muestra, sólo se proporcionarán algunas App.
Figura 4.3. Ventana principal de la aplicación de escritorio (sin proyecto aún creado).
61
En la Figura 4.5 se muestra un ejemplo del inicio de un archivo de configuración .cfg. Cómo
se mencionó anteriormente, es el objetivo principal de la App de escritorio. Sin el archivo de
configuración, no se puede configurar el PCB de la manera deseada.
CAPÍTULO 5
RESULTADOS Y ANÁLISIS
En este capítulo, se discute y analizan los resultados obtenidos para cada una de las pruebas
realizadas con el fin de evaluar el funcionamiento del PCB desarrollado, el cual fue probado
experimentalmente de acuerdo al bloque funcional correspondiente, tal como se indica a
continuación.
Por ejemplo, en el caso de la tarjeta Arduino Zero utilizada para las pruebas experimentales
(ver el subcapítulo 3.2), el MCU SAMD21 posee el bootloader pre-instalado o pre-cargado en su
memoria y en consecuencia la tarjeta, una vez descargado algún programa desde el Arduino IDE,
63
ejecuta las funciones correspondientes, definidas en ese programa principal. En este caso, el
Arduino IDE se encarga de enviar la orden al MCU de entrar al modo bootloader.
Esto significa que el bootloader forma parte esencial del desarrollo del PCB. En el caso de
este proyecto, el MCU SAMD21 no posee el bootloader pre-instalado de fábrica. Existen varias
maneras de cargar el bootloader al SAMD21. La primera se basa en utilizar un Atmel-ICE el cual
es un depurador y programador para MCU de la arquitectura ARM. La segunda forma se basa en
utilizar el depurador de la tarjeta Arduino Zero. Esta última fue la utilizada para el propósito de
este proyecto. Para poder utilizar el depurador de manera independiente, se procedió de desoldar
dos resistencias de 0 Ω que conectan al depurador con el MCU de la tarjeta (ver Figura 5.1).
Figura 5.1 Resistencias (R104 y R105) que deben ser removidas para utilizar el depurador
de la tarjeta Arduino Zero de manera independiente [18].
Una vez removidas las resistencias R104 y R015, se puede descargar el bootloader a través
de la plataforma Arduino IDE, conectando la tarjeta Arduino Zero con el PCB a través de la
interfaz JTAG (Joint Test Action Group – Grupo de Acción de Prueba Conjunta). Esta conexión
se realiza utilizando un conector de 2 x 5 posiciones. Una vez se realizan las conexiones entre
ambos, se alimenta la tarjeta de Arduino Zero con un cable USB y en la plataforma Arduino IDE
se procede a “quemar” el bootloader al MCU. Este procedimiento se utilizó durante el desarrollo
del proyecto, siendo exitoso al descargar el cargador de arranque en varios MCUs.
64
Además, como se mencionó anteriormente, el MCU debe entrar en modo bootloader para
que el usuario pueda descargarle algún programa (Arduino IDE realiza esta tarea por el usuario).
En base a esta idea, se diseñó y programó la opción de actualización del firmware del PCB en la
aplicación de escritorio. El MCU SAMD21 puede entrar en modo bootloader de dos maneras:
presionando el botón de RESET dos veces seguidas o abriendo y cerrando su puerto serial con
una velocidad de 1200 Bd. Por lo tanto, la aplicación de escritorio envía la orden al MCU de
entrar en modo bootloader (utilizando el puerto serial) y posteriormente descarga el archivo .bin
(archivo binario del programa principal). Para este caso, también se hicieron varias pruebas
resultando todas exitosas, agregando esta opción de gran utilidad a la App de escritorio.
Una vez definidas estas dos modalidades, se procedió a verificar con corrientes entre 4 mA y
20 mA, obteniéndose voltajes entre 600 mV y 3 V a la entrada del ADC implementado en el
PCB. El voltaje máximo de 3 V se debe a la característica del rail to rail (riel a riel) del
amplificador operacional utilizado, el cual es VDD – 300 mV. Por lo tanto, para una alimentación
de 3,3 V, como en este caso, el máximo voltaje en la salida es de 3 V. Así, para una corriente de
20 mA se obtiene un voltaje de 3 V en lugar de 3,3V (caso ideal). Adicionalmente, cabe resaltar
que en el circuito de acondicionamiento se implementó un termistor para corrientes máximas de
35 mA, como medida de protección contra corriente mayores. Sin embargo, para aplicaciones
industriales, los sensores o transmisores proporcionan señales de corriente de 4-20 mA.
66
67
ambas memorias EEPROM, y ambas resultaron exitosas. Además, como la memoria EEPROM
24AA025E48T posee una dirección MAC única integrada en su memoria, se procedió a leer la
data de las respectivas direcciones de la memoria donde se ubicaba esta dirección MAC; desde la
dirección 0x80 a la dirección 0xFF.
Figura 5.4. Interfaz del programa RealTerm utilizado en este proyecto para
las pruebas de la comunicación serial.
68
configuración, (2) Obtener información de diagnóstico concerniente al PCB, y (3) Realizar
actualización del firmware.
Como se explicó en el capítulo 4, la App de escritorio es una herramienta útil para proveer
interacción entre el PCB y el usuario. En este sentido, las pruebas realizadas estuvieron
orientadas a evaluar el rendimiento del PCB en conjunto con la App. En primer lugar, se procedió
a probar descargando varios archivos de configuración (.cfg), observando que el PCB respondiera
de manera correcta al leer cada una de las líneas de este archivo y que realizara la configuración
de los respectivos comandos. En este caso, se obtuvo un rendimiento exitoso y satisfactorio, al
lograr y corroborar el comportamiento deseado para la empresa LS Innovaciones C.A., en este
proyecto.
5 ProsoftTechnology es una marca reconocida por ofrecer soluciones de conectividad para enlace de productos de
automatización. Se especializa en el desarrollo de soluciones de comunicación compatibles con los controladores
Allen Bradley y otros fabricantes.
69
protocolo ModBus RTU desarrollada por Doc Walker [23]. Ambas librerías fueron editadas para
poder adaptarlas al MCU SAMD21, debido a que el mismo está basado en una arquitectura
ARM, a diferencia de los populares MCUs basados en arquitectura AVR.
70
Los mensajes enviados por protocolo MQTT se realizaron en base al formato JSON
(JavaScript Object Notation – Notación de objeto JavaScript). Para observar la correcta
recepción del mensaje en formato JSON en el servidor de HiveMQ, se hizo uso de la App
MQTTLens, la cual se puede conectar al servidor MQTT, suscribir a tópicos y publicar mensajes
[26]. El mensaje enviado por MQTT posee tres parámetros:
(1) Número de identificación (Id) de la variable
(2) Valor
(3) Timestamp (marca temporal)
Estos parámetros están reducidos en caracteres para así ahorrar en consumo de bytes.
Dependiendo del número de variables que se está monitoreando, así como también el número de
71
cambios en dichas variables, el mensaje JSON puede variar en longitud. La longitud máxima
establecida para propósitos de programación es de 1500 caracteres. En las pruebas realizadas, la
máxima longitud obtenida fue alrededor de 350 caracteres, equivalente a 11 cambios
aproximadamente.
72
5.12 Módulo de Radio Frecuencia (RF) para futuras aplicaciones
En el PCB, también se integró un módulo de RF. Esto, como una solicitud de la empresa LS
Innovaciones C.A. de explorar la posibilidad de contar con una aplicación en modo distribuido en
planta, es decir, con varios puntos de recolección de datos. En este tipo de aplicación un grupo de
varios PCB se encargan de tomar la información de dispositivos remotos, distribuidos en una
misma área geográfica y enviar la información obtenida hacia un único equipo en la red
(Gateway – Vía) que se encarga de transmitir esa información al Internet mediante el protocolo
MQTT. Cada PCB en modo nodo, posee las funcionalidades descritas en éste informe a
excepción del protocolo MQTT (solo característico del gateway o vía). El protocolo inalámbrico
utilizado es el Lo-Ra (Long Range – Largo Alcance), permitiendo enlaces de 2 a 20 Km (con una
antena direccional), dependiendo de las condiciones geográficas del lugar [27]. De éste modo,
para la prueba con el módulo de RF se utilizó la librería “RadioHead” desarrollada por la
empresa Airspayce [28]. Se procedió a verificar la comunicación entre dos PCB, uno actuando
como nodo y otro como gateway, obteniéndose resultados moderadamente satisfactorios, al tener
señales con un RSSI (Received Signal Strength Indicator – Indicador de Fuerza de la Señal
Recibida) entre -15 y -100. Mientras más cercano a -15, la potencia de la señal recibida es mayor
[29]. Se observó que a mayor distancia, el RSSI disminuía hasta valores alrededor de los – 49
(para las distancias de prueba), lo cual es entendible considerando que a mayor distancia entre los
dispositivos, menor será la potencia de la señal RF recibida. En la Figura 5.8 se muestra el
esquema de la aplicación del PCB en un modo distribuido.
73
Finalmente, el alcance máximo probado fue de aproximadamente 1,5 Km, en lugares
cercanos a las oficinas de la empresa LS Innovaciones en Caracas. Durante las pruebas de
transmisión y recepción de los mensajes por RF, se presentaron varias fallas de recepción, lo cual
nos indica que se debe trabajar en diseñar y desarrollar un protocolo de comunicación capaz de
adaptarse a estas fallas. Una posible solución potencial es utilizar mensajes de “acknowledge”
(reconocimiento), similares a los utilizados en el protocolo TCP/IP, entre el gateway y los
diferentes nodos de la red.
74
CONCLUSIONES Y RECOMENDACIONES
Una de las características resaltantes del PCB y del proyecto en general, es haber logrado la
interacción PCB-USUARIO, a través de un cable USB y la interfaz desarrollada con la
Aplicación (App) de escritorio. Con esta interfaz, como se indica en los capítulos 4 y 5 del
informe, el usuario puede descargar un archivo de configuración .cfg al PCB, actualizar su
firmware y diagnosticar con base a los datos del mismo, por ejemplo: errores de los comandos
ModBus maestros (si existen), número de mensajes MQTT publicados de manera exitosa, entre
otros. Por ello, esta interacción PCB-USUARIO resulta ser una herramienta muy eficaz.
Adicionalmente, de acuerdo a los resultados señalados en el capítulo 5, el consumo de potencia
medido en el PCB fue de aproximadamente 30 mA @ 24 V, considerado por la empresa LS
Innovaciones C.A., como aceptable. Esto es una característica importante y elemental para un
dispositivo de este tipo.
En general, el desarrollo de ésta solución (PCB) como dispositivo aplicable al Internet de las
cosas (IoT) debe continuar con miras a fortalecer su firmware y hardware, y en consecuencia el
75
enfoque, como por ejemplo, en un modo distribuido. Esto se mencionó en el subcapítulo 5.12, y
consiste básicamente en tener varios puntos de recolección de información y algunos puntos de
acceso al Internet, para ahorro en consumo de datos, comunicándose entre ellos (PCBs) vía radio
frecuencia (RF). Para lograrlo, se plantean algunas recomendaciones para futuros desarrollos que
a continuación se mencionan, esperando que su incorporación fortalezca el rendimiento de este
proyecto y facilite su comercialización, como objetivo final del mismo y meta de la empresa LS
Innovaciones C.A. Por lo tanto, recomendamos:
• Incorporar soporte en software para el protocolo OPC UA, considerando que es ampliamente
utilizado en la industria para aplicaciones de IoT, y posee además características de
encriptación y seguridad relevantes [30]. Adicionalmente, se debe incluir el soporte en la App
de escritorio.
• Implementar “Google Maps” (mapas de Google) en la App de escritorio, para que así el
usuario localice y ubique los diferentes dispositivos (PCBs) distribuidos en planta o en un área
geográfica específica.
• Mostrar en la App de escritorio la potencia de las señales entre cada conexión de RF, es decir,
la conexión Nodo – Gateway.
• Implementar un “Data logger” (Registro de datos) en la App de escritorio para facilitar la
solución de problemas de funcionamiento del PCB.
• Mejorar la capacidad del hardware para obtener un mejor rendimiento del PCB en el modo
distribuido con RF. Por ejemplo, se puede implementar un procesador Linux conjuntamente
con el MCU Atmel SAMD21 utilizado en este proyecto, a fin de incrementar las velocidades
de conexión y transmisión de datos, y evitar limitaciones de memoria RAM que posee el MCU
SAMD21 que es de 32 KB, considerando que un procesador Linux, para esta aplicación,
generalmente ofrece una memoria RAM superior, en el orden de los Megabytes (MB).
• Desarrollar una Aplicación (App) móvil para expandir el acceso de los datos publicados en
Internet por el PCB.
Finalmente, se puede desarrollar un PCB cuyo hardware y firmware sea más robusto, lo que
permitiría una mayor utilidad y representaría una solución IoT potencial para su comercialización
y certificación.
76
REFERENCIAS
[3] Modbus, “Modbus Application Protocol V1.1b3”. Modbus org. Abril 26, 2012. [Online].
Disponible en: http://www.modbus.org/docs/Modbus-Application Protocol V1.1b3.pdf.
[Consultado Sep. 10, 2017].
[4] Modicon, “Modbus Protocol Reference Guide PI-MBUS-300 Rev. J.” Modbus org. Junio 1,
1996. [Online]. Disponible en: http://modbus.org/docs/PI-MBUS-300.pdf. [Consultado en
Sep. 21, 2017].
[5] A. Banks and R. Gupta, “MQTT Version 3.3.1.” OASIS Estándar. Committee Specification
Draft 02/Public Review Draft 02. April 2014. [Online]. Disponible en: http://docs.oasis-
open.org/mqtt/mqtt/v3.1.1/csprd02/mqtt-v3.1.1-csprd02.pdf. [Consultado Oct. 4, 2017].
[6] LSI-Group, “IndConnect Description”. Enero 15, 2017. Disponible en: http://www.lsi-
group.net/indconnect/description/.
[7] LSI-Group, “IndConnect Link”. Enero 15, 2017. Disponible en: http://www.lsi-
group.net/indconnect-link/.
[8] Atmel “SAM D21E/SAM D21G/SAM D21J SMART ARM Based Microcontroller”
datasheet. Sept. 2015 . [Consultado Oct. 2017].
[9] WIZnet, “W5500 Datasheet Version 1.0.6”, W5500 datasheet, Dic. 2014 [Consultado Oct.
2017].
[11] Microchip Technology Inc., “1 MHz Bandwidth Low Power Op Amp”, MCP6001/2/4
datasheet, 2003 [Consultado Oct. 2017].
77
[13] NXP Semiconductor, “Real-Time Clock (RTC) and calendar”, PCF8523 datasheet, Jul.
2012, [Consultado Oct. 2017].
[15] Microchip Technology Inc., “24AA64/24LC64” datasheet, 2010 [Consultado Oct. 2017].
[16] PHOENIX CONTAC, “Electronic housing - ME MAX 22,5 2-2 KMGY – 2713625”. Oct.
2017 [Online]. Disponible: http://www.phoenixcontac/us/product/2713625. [Consultado
Oct. 29, 2017].
[19] GitHub, “adafruit/Ethernet2: WIZ5500 based Ethernet Shield library”. Copyright (c) 2009-
2016 Arduino LLC. [Online]. Disponible:
https://github.com/adafruit/Ethernet2 [Consultado Nov. 2, 2017].
[20] GitHub, “adafruit/RTClib: A fork of Jeelab’s fantastic RTC library”. [Online]. Disponible:
https://github.com/adafruit/RTClib. [Consultado Nov. 3, 2017].
[22] ModBus library. “Modbus TCP library for the Arduino”. ModBud org. 2013. [Online].
Disponible:
http://myarduinoprojects.com/modbus.html [Consultado Nov. 4, 2017].
[23] Doc Walker, “4-20 mA/ModBus Master: Enlighten your Arduino to be a ModBus Master”.
GitHub Copyright: 2009-2016. [Online]. Disponible:
https://github.com/4-20ma/ModbusMaster [Consultado Nov. 4, 2017].
[24] Nick O'Leary, “knollenary/pubsubclient: A client library for the Arduino Ethernet Shield
that provide support for MQTT”. GitHub. MIT License 2015. [Online]. Disponible:
https://github.com/knolleary/pubsubclient [Consultado Nov. 3, 2017].
[25] HiveMQ Public Broker, “Introducing HiveMQ, the enterprise MQTT broker”. 2012.
[Online]. Disponible:
https://www.hivemq.com/try-out/. [Consultado Nov. 4, 2017].
78
[26] GitHub, “sandro-k/MQTTLens Chrome App: MQTT Lens Chrome App, a MQTT utility
build on Web Components and Package for the Chrome Platform”. [Online]. Disponible:
https://chrome.google.com/webstore/detail/mqttlens/hemojaaeigabkbcookmlgmdigohjobjm.
[Consultado Nov. 5, 2017].
[27] Adafruit, “Overview, RFM69HCW and RFM9X LoRa Packet Radio Breakouts”. Nov.
2016. [Online]. Disponible:
https://learn.adafruit.com/adafruit-rfm69hcw-and-rfm96-rfm95-rfm98-lora-packet-padio-
breakouts/overview. [Consultado Nov. 10, 2017].
[28] Mike McCauley, “RadioHead Packet Radio library for embedded microprocessors”. Apr.
2014. [Online]. Disponible:
http://www.airspayce.com/mikem/arduino/RadioHead/index.html. [Consultado Nov. 4,
2017].
[29] Adafruit, “RFM9X Test, RFM69HCW and RFM9X LoRa Packet Radio Breakouts”. Apr.
2016. [Online]. Disponible:
https://learn.adafruit.com/adafruit-rfm69hcw-and-rfm96-rfm95-rfm98-lora-packet-padio-
breakouts/rfm9x-test. [Consultado Nov. 10, 2017].
[30] Jonathan Wilkins, “OPC UA and the Industrial Internet of Things”. Jun. 2017. [Online]
Disponible:
https://www.automation.com/automation-news/article/opc-ua-and-the-industrial-internet-
of-things. [Consultado en Nov. 10, 2017]
79
APÉNDICES
Apéndice A
En este apéndice se muestran tres vistas adicionales del PCB desarrollado, definidas como
Apéndice A1, correspondiente a la vista de la capa superior, Apéndice A2, para la vista de la capa
inferior y el Apéndice A3, correspondiente a la vista de las perforaciones.
Apéndice B
En este apéndice se muestra la carátula y el índice del manual de usuario del PCB realizado.
Apéndice C
En este apéndice se muestra un folleto ilustrativo del Proyecto y sus aplicaciones en la
industria, como elemento orientado a la comercialización del producto.
80
APÉNDICE A
81
82
83
APÉNDICE B
84
85
86
APÉNDICE C
87
88
89