KEPServerEX es una plataforma de conectividad que permite a los usuarios conectar, gestionar, monitorear y controlar diversos dispositivos de automatización y aplicaciones de software. KEPServerEX aprovecha los protocolos de comunicación centrados en OPC e IT (como SNMP, ODBC y servicios web) para proporcionar a los usuarios una única fuente de datos industriales.
PTC - Kepware tiene más de 20 años de experiencia ayudando a las empresas a conectar diversos dispositivos de automatización y aplicaciones de software. Han sido reconocidos como un jugador temprano en IIoT gracias a uno de sus productos, el IoT Gateway, un complemento avanzado que extiende las capacidades de la plataforma de conectividad KEPServerEX, que permite manejar solicitudes RESTful y MQTT para la integración con servicios web en sistemas de ejecución de manufactura (MES) y otros sistemas. Esto también transmite sin problemas datos industriales en tiempo real directamente a nubes de dispositivos y plataformas de análisis de Big Data en toda la empresa, lo que resulta útil en una variedad de verticales, incluyendo Manufactura, Petróleo y Gas, Automatización de Edificios y Energía y Servicios Públicos. Para obtener más información, visite la documentación oficial, o vea este video.
El objetivo de esta guía es explicar cómo configurar el complemento IoT gateway de KEPServerEx para transmitir datos a un broker MQTT externo. Para los propósitos de esta demostración, utilizaremos Node-RED como un broker intermedio para decodificar las cargas útiles de KEPServerEx y codificarlas en un formato amigable para Ubidots. Si bien esto facilita la comprensión de lo que sucede en el backstage, no recomendamos esta configuración para aplicaciones en producción, ya que implica una capa adicional, propensa a ineficiencias o fallos.
Para aplicaciones en producción, recomendamos enviar los datos desde KEPServerEx directamente a un broker MQTT dedicado de Ubidots, que puede ser configurado bajo solicitud contactando a support@ubidots.com.
Requisitos
Paso a Paso
Configuración de KEPServerEX
Configuración de Ubidots
Configuración del IoT Gateway
Integración de Node-RED (KEPServerEX + Ubidots)
Visualización de datos en Ubidots
Resumen
1. Configuración de KEPServerEX
Para comenzar con KEPServerEX, siga los siguientes pasos para la implementación y la licencia.
NOTA IMPORTANTE: Kepware ofrece descargas de demostración gratuitas, que son completamente funcionales y solo limitadas en su tiempo de ejecución a períodos de 2 horas. Si se requiere más pruebas o POC, comuníquese con el departamento de ventas para extender su período de prueba gratuito o obtener la licencia necesaria.
1. Descargue KEPServerEX. El software está disponible solo para Windows OS.
2. Desde su carpeta de Descargas, abra el archivo .exe previamente descargado y proceda con la instalación del software. Asegúrese de seguir el proceso de instalación cuidadosamente para evitar cualquier problema.
NOTA IMPORTANTE: Kepware debe ser instalado en la misma red local que su equipo de automatización, esto ayudará a optimizar la recolección de datos de sus dispositivos de campo y a mitigar riesgos de ciberseguridad.
3. Con KEPServerEx ya instalado, ábralo y verifique si el complemento IoT Gateway está disponible. Puede encontrarlo fácilmente en la vista de árbol en el lado izquierdo del software.
4. El software se abre inicialmente con un proyecto predeterminado. Defina un nuevo proyecto eligiendo "Archivo > Nuevo". Si se le solicita cerrar, seleccione “Guardar” o “Editar sin conexión”.
5. Para guardar el proyecto creado, elija “Archivo > Guardar como…”. Ingrese la contraseña configurada en el proceso de instalación para asegurar el archivo de proyecto encriptado. Luego, elija una ubicación para almacenar el archivo y haga clic en “Guardar”
6. Al crear un nuevo proyecto, los usuarios deben primero determinar el controlador de comunicaciones requerido por la aplicación: esto se refiere como un canal en el servidor. Se puede definir un número de canales dentro de un solo proyecto, dependiendo del controlador o controladores instalados.
Para fines de prueba, utilizaremos el “Controlador Simulador”, sin embargo, en una aplicación del mundo real seleccionaríamos uno de los más de 150 controladores proporcionados por Kepware para extraer datos de nuestros dispositivos de automatización; como el Controlador Ethernet Allen-Bradly ControlLogix, el Controlador ABB TotalFLow o el Controlador Modbus TCP/IP.
Agregue un nuevo canal al proyecto siguiendo una de las opciones a continuación:
Haga clic en "Editar > Conectividad > Nuevo Canal".
Seleccione "Haga clic para agregar nuevo canal" desde la vista del proyecto o vista de detalles.
Haciendo clic derecho en el nodo "Conectividad" en la vista del proyecto y elija "Nuevo canal".
7. En el asistente de canal, especifique un nombre para el canal. En este ejemplo, lo llamamos "Planta de Manufactura". Con el nombre definido, presione "Siguiente":
8. En Controlador de Dispositivo, elija “Simulador” como el tipo del canal. Luego, presione "Siguiente":
9. Deje las siguientes configuraciones como predeterminadas haciendo clic en "Siguiente" hasta finalizar la creación del canal. La última ventana debería ser el resumen para el nuevo canal (ver abajo). Haga clic en “Finalizar” para cerrarla:
10. Con el canal definido, agregue un nuevo dispositivo. El dispositivo identifica un nodo o estación física del enlace de comunicación y puede considerarse como una forma de enmarcar la definición de la conexión a un punto específico de interés en la aplicación.
Agregue un nuevo dispositivo al canal previamente creado siguiendo una de las opciones a continuación:
Haga clic en "Editar > Conectividad > Nuevo Dispositivo".
Seleccione el canal, luego "Haga clic para agregar un dispositivo" desde la vista del proyecto o vista de detalles.
Haciendo clic derecho en el canal creado "Planta de Manufactura" en la vista del proyecto y elija "Nuevo dispositivo".
11. En el asistente de dispositivo, especifique un nombre para el dispositivo. En este ejemplo, lo llamamos "Cinta Transportadora". Con el nombre definido, haga clic en "Siguiente":
12. En Modelo, seleccione “16-bit” como tamaño de registro para el dispositivo que se está simulando y haga clic en “Siguiente”.
13. Deje las siguientes configuraciones como predeterminadas haciendo clic en "Siguiente" hasta finalizar la creación del dispositivo. La última ventana que debería tener es el resumen para el nuevo dispositivo (ver abajo). Haga clic en “Finalizar” para cerrarla:
14. Con el dispositivo creado, es hora de crear las etiquetas. Las etiquetas representan direcciones dentro de los PLC o otros dispositivos de hardware con los que el servidor se comunica. Las etiquetas pueden definirse como una sola etiqueta o grupos de etiquetas.
Agregue una nueva etiqueta única en el dispositivo previamente creado haciendo clic derecho en el dispositivo y eligiendo "Nueva Etiqueta":
En las propiedades de la etiqueta, edite las propiedades para que coincidan con las siguientes:
Nombre de la Etiqueta: Sensor 1
Descripción (opcional): Valores simulados de -20 a 75 cada 100 ms
Dirección: RANDOM (Tasa, Límite Bajo, Límite Alto) - RANDOM (100, -20, 75)
Tipo de Datos: Predeterminado
Acceso del Cliente: Solo lectura
Tasa de Escaneo (ms): 100
Habiendo obtenido el resultado:
NOTA: La configuración anterior se puede personalizar como desee. Tenga en cuenta que esta es solo una etiqueta que simula valores aleatorios.
15. [Opcional] Para simular más valores en el dispositivo “Cinta Transportadora”, repita el último paso tantas veces como desee. Si crea más de una etiqueta, debería tener el siguiente resultado:
Para simular un segundo dispositivo, repita los pasos anteriores.
2. Configuración de Ubidots
Si aún no está familiarizado con las herramientas de desarrollo IoT de Ubidots, puede consultar las siguientes guías:
1. En caso de que aún no tenga una cuenta de Ubidots, cree una aquí.
2. Para poder integrar los datos que llegan de KEPServerEx con Ubidots, necesitará una clave de su cuenta. Esta clave se identifica como TOKEN y se puede encontrar fácilmente en la opción "Credenciales de API" del menú desplegable del usuario.
Un TOKEN es una clave de autenticación para interactuar con la API de Ubidots. Tenga en cuenta que el TOKEN proporcionado en el menú desplegable del usuario tiene acceso a todos los dispositivos en su cuenta de Ubidots. Por razones de seguridad, recomendamos encarecidamente utilizar TOKENS Organizacionales, que le permiten crear TOKENS para interactuar con recursos dentro de una sola organización. Consulte la siguiente guía para obtener más información:
NOTA: Necesitaremos este TOKEN en el Paso 4: Integración de Node-RED.
3. Configuración del IoT Gateway
1. Consulte el "IoT Gateway" en las configuraciones del proyecto y presione "Agregar Agente":
2. En el nuevo diálogo del agente, ingrese “Cliente MQTT de Ubidots” como nombre para el agente y elija “Cliente MQTT” como tipo. Para continuar, presione “Siguiente”:
3. Dentro de la configuración del Broker MQTT, asigne "ubidots" como tema y deje la otra configuración por defecto. Para continuar, presione “Siguiente”:
4. Por ahora, deje las credenciales en blanco y proceda con la creación presionando "Finalizar". Una vez que el agente esté creado, debería poder visualizarlo dentro del árbol del IoT Gateway:
NOTA: La configuración del agente se puede actualizar después de la configuración haciendo doble clic en el nombre del agente.
5. Para comenzar a ejecutar el broker que acabamos de configurar, vamos a usar Mosquitto, un broker de mensajes de código abierto que implementa el protocolo MQTT. En caso de que no lo tenga instalado, consulte la página de descarga.
Para ejecutar el broker, abra el símbolo del sistema e inserte el siguiente comando:
"c:\Program Files\mosquitto\mosquitto.exe"
En este punto, podrá ver cómo mosquitto se está ejecutando en el borde de la ventana del símbolo del sistema:
6. Haga clic derecho en el agente creado previamente y seleccione “Nuevos Elementos IoT”:
7. Dentro del navegador de etiquetas, consulte el canal “Planta de Manufactura” y seleccione el dispositivo “Cinta Transportadora”. Luego, seleccione las etiquetas que desea publicar en este agente. Como puede ver a continuación, estamos agregando las etiquetas "Sensor 1", "Sensor 2" y "Sensor 3". Una vez seleccionadas las etiquetas, haga clic en Aplicar.
8. En el diálogo de Elementos IoT, deje las configuraciones como predeterminadas. Para continuar, presione “OK”:
9. En este punto, puede ver los elementos agregados en la vista de detalles.
10. [Opcional] En caso de que haya incluido más de un dispositivo en la configuración del canal, siéntase libre de incluirlos como elementos en el agente creado. Teniendo el siguiente resultado en la vista de detalles:
4. Integración de Node-RED (KEPServerEX + Ubidots)
1. Abra el Símbolo del sistema y ejecute el siguiente comando para inicializar Node-RED. En caso de que no tenga Node-RED instalado en su computadora, consulte esta guía.
Comando para ejecutar: node-red
Espere un par de segundos hasta que Node-RED comience a ejecutar el servidor.
2. Una vez que el servidor comience a ejecutarse correctamente, acceda a él en el navegador web de su preferencia utilizando la dirección y puerto definidos en el símbolo del sistema, que deberían ser “127.0.0.1:1880”.
3. A continuación, haga clic en el menú de Node-RED en la esquina superior derecha, luego en “Importar > Portapapeles” y pegue el código a continuación.
[{"id":"149030d9.1c91df","type":"debug","z":"19f25fb7.4d4f6","name":"Incoming JSON","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":620,"y":460,"wires":[]},{"id":"a20b66ac.e80948","type":"json","z":"19f25fb7.4d4f6","name":"","property":"payload","action":"","pretty":false,"x":390,"y":520,"wires":[["149030d9.1c91df","c8823efc.69e59"]]},{"id":"c8823efc.69e59","type":"function","z":"19f25fb7.4d4f6","name":"Parse incoming data","func":"var response = {};\nvar obj = {};\nvar devicePosition = 2;\nvar variablePosition = 1;\n\nfor (var i in msg.payload.values) {\n // Grab channel ID of the tag which is sending the message\n var id = msg.payload.values[i].id;\n // Replaces the blank spaces found in the channel ID with a dash\n id = id.replace(/ /g, \"-\"); \n // Splits the ID to extract the labels for the devices & variables. \n var parseID = id.split(\".\");\n var size = parseID.length;\n // Grab Device label from channel ID\n var device = obj[parseID[size - 2]] || {};\n // Grab Variable label from channel ID\n var variable = device[parseID[size - 1]] || [];\n // Build the payload to be sent according to the Ubidots API.\n // Official documentation: https://ubidots.com/docs/sw/\n variable.push({\"value\": msg.payload.values[i].v, \"timestamp\":msg.payload.values[i].t});\n // Saves the payload built\n device[parseID[size - 1]] = variable;\n obj[parseID[size - 2]] = device; \n}\n\n// Returns an Array with the parameters keys saved into the object \"obj\"\nvar devices = Object.keys(obj);\n\nfor (var j in devices) {\n // If your KEPServerX configuration uses Tag Groups, please use the topic commented\n //response.topic = \"/v1.6/devices/\" + parseID[size - 3] + \"-\" + devices[j];\n response.topic = \"/v1.6/devices/\" + devices[j];\n // Saves the payload to be sent\n response.payload = obj[devices[j]];\n // Sends payload to Ubidots MQTT Broker\n node.send(response);\n}","outputs":1,"noerr":0,"x":640,"y":520,"wires":[["e21dc874.0b75a8"]]},{"id":"8201ac6.4acfa5","type":"debug","z":"19f25fb7.4d4f6","name":"Data to be sent to Ubidots","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1230,"y":460,"wires":[]},{"id":"17fd99af.a7bde6","type":"mqtt out","z":"19f25fb7.4d4f6","name":"Ubidots MQTT Broker","topic":"","qos":"1","retain":"","broker":"de02fa04.20ef28","x":1220,"y":520,"wires":[]},{"id":"cc16f5a7.cadb48","type":"mqtt in","z":"19f25fb7.4d4f6","name":"MQTT Client - KEPServerEX","topic":"ubidots","qos":"1","datatype":"auto","broker":"4691895c.0fb8f8","x":140,"y":520,"wires":[["a20b66ac.e80948"]]},{"id":"e21dc874.0b75a8","type":"throttle","z":"19f25fb7.4d4f6","name":"5 sg throttling","throttleType":"time","timeLimit":"5","timeLimitType":"seconds","countLimit":0,"blockSize":0,"locked":false,"x":940,"y":520,"wires":[["17fd99af.a7bde6","8201ac6.4acfa5"]]},{"id":"de02fa04.20ef28","type":"mqtt-broker","z":"","name":"Ubidots MQTT Broker","broker":"industrial.api.ubidots.com","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"4691895c.0fb8f8","type":"mqtt-broker","z":"","name":"MQTT Client- KEPServerEX","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
4. Ingrese al nodo “Broker MQTT de Ubidots” y haga clic en el ícono de editar. En la pestaña de seguridad, asigne su TOKEN de Ubidots como nombre de usuario.
5. Una vez que se asigne el TOKEN de Ubidots, haga clic en “Desplegar”.