Cómo enviar mensajes MQTT en TIA Portal

Cómo enviar mensajes MQTT en TIA Portal

Dentro del curso de IOT e Industria 4.0 hemos visto que el protocolo más usado es MQTT, por lo que ¿qué tal si mandamos mensajes MQTT con PLC Siemens en TIA Portal?

¿Qué es MQTT?

Una definición de andar por casa sería decir que MQTT no es mas que un protocolo de comunicaciones para los IOT.

Es tremendamente ligero y es de facto un estándar en el mundo IOT.

A grandes rasgos, hay tres actores en la comunicación:

  • El publisher, que es quien envía el mensaje
  • El broker, quien recibe el mensaje del publisher y lo reenvia al subscriber.
  • El subscriber, quien recibe los mensajes de los temas a los que está suscrito.

Así, básicamente el mensaje tiene dos partes:

  • El topic, o tema. Es un identificador que indica de qué se trata el mensaje enviado. Por ejemplo, podría ser "temperatura"
  • El payload, que será el valor que se quiere transmitir, que digamos sea como ejemplo 21,3

La forma de trabaja es fácil.

El suscriber se suscribe al broker  al tema "temperatura".

El publisher, enviará bajo el topic "temperatura" el valor de 21,3 al broker.

El broker, al recibir la información con ese topic, reenvía a todos los clientes que se hayan suscrito al tema en cuestión el mensaje recibido (en nuestro caso, el tema temperatura).

Espero que se haya entendido.

Como dice la propia documentación de Siemens, las características de MQTT son:

  • Protocolo ligero con baja carga de transporte
  • Requisito mínimo de ancho de banda de red gracias al mecanismo "push"
  • Función para la reconexión después de una desconexión
  • Reenvío de mensajes después de desconexión
  • Mecanismo para la notificación a interlocutores interesados después de una desconexión imprevista de un client
  • Uso y realización sencillos gracias a un juego pequeño de instrucciones
  • Quality of Service (nivel QoS) con diferentes niveles de fiabilidad para el suministro del mensaje
  • Encriptación opcional de los mensajes a través de SSL/TLS
  • Autenticación de los editores y suscriptores a través de un nombre de usuario y contraseña

A lo largo del curso estamos viendo diferentes pasarelas, desde los IOT2040 de Siemens, o como comunicar un Arduino con los PLC de Siemens, pero ¿podemos enviar mensajes MQTT directamente desde un PLC de Siemens?

La respuesta es Sí.

Hay dos formas de hacerlo, usando certificados o sin certificar para la serie S7-1500.

En el caso de los S7-1200 y S7-300 solo es posible darle autentificación.

Mi recomendación es que comiences sin nada: sin cifrar, sin usuario y contraseña, y vayas subiendo el nivel hasta darle toda la seguridad que necesites.

El ejemplo que yo he realizado, es una cosa intermedia. No está cifrada, pero sí he usado autentificación con usuario y contraseña ya que uso un S7-1200.

¿Cómo enviar mensajes MQTT en TIA Portal?

Lo primero que tienes que hacer es entrar en esta página de Siemens y descargarte la documentación, y las bibliotecas necesarias.

Los archivos que necesitas (disponibles en esa página de la documentación oficial de Siemens, ID 109748872) son estos:

MQTT cifrada (S7-1500)

  • Biblioteca (S7-1500, MQTT cifrada)
  • Documentación (S7-1500, MQTT cifrada)

MQTT sin cifrar (S7-1500, S7-1200, S7-300)

  • Biblioteca S7-1200 y S7-1500 (MQTT sin cifrar)
  • Biblioteca S7-300 (MQTT sin cifrar)
  • Documentación (S7-1500/1200/300, MQTT sin cifrar)

Luego, necesitarás configurar la comunicación TCP propiamente y los parámetros propios del MQTT según la documentación.

Ejemplo de enviar mensajes MQTT en TIA Portal con un S7-1200

Como otras veces, es más fácil verlo en funcionamiento, que contarlo por escrito, así que... ¡¡dentro video!!

Como ves, no es muy complicado de realizar.

Como ves, he usado el broker mosquitto que viene montado en el IOT2040. Por defecto, viene sin usuario y contraseña, si bien en el curso de Industria 4.0 vemos cómo se puede realizar la autentificación con usuario y contraseña.

Una vez seas capaz de realizar el envio/recepción mediante MQTT con sin autentificación, en el caso de la serie S7-1500 podrás realizar una autentificación con TLS.

¿Qué te ha parecido?

Como vemos en el  en el curso de Industria 4.0 ,  hay otras formas de leer los datos del PLC desde el IOT2040, pero ahí queda como una alternativa más.

El objetivo solamente es que vieras que los PLC pueden trabajar como Publisher MQTT, que no está nada mal.

En el curso estamos viendo muchos más temas, y aprovecho para si estás realizando el curso de Industria 4.0, me des en los comentarios un poco de feedback de qué te está pareciendo hasta ahora.

Por último, este ejemplo lógicamente lo dejaré en el anexo del curso, como en otras ocasiones.

Comentarios (32)
Marco Viteri
Hola. Por favor podría explicar cómo leer los datos de un s1238 energy meter? Gracias Att. Marco Viteri [email protected]
Iñigo Gútiez
Lo siento, pero no tengo experiencia con este equipo
Hector
Excelente video, como siempre a la vanguardia. Gracias por tu tiempo. Saludos
Adrian Alvarez
Hola Iñigo, voy con una pregunta cortita y al pie, como se suele decir: ¿Qué opinión tienes de los sensores IO-Link y como de factible ves su implementación en la industria? Un saludo!
Iñigo Gútiez
De momento no los estamos implantando así que no sabria decirte. Por lo que he visto, donde más utilidad le veo es en las señales analógicas. Se irá metiendo poco a poco, entiendo. Pero no tengo más que una opinión como puede ser la tuya, vamos.
Iñigo Gútiez
Aún no los hemos probado. Tienen buena pinta especialmente en señales analógicas.
Javi
buenos días Iñigo voy siguiendo tus cursos, últimamente lo deje un poco estancando ya que estoy liado con un máster ademas de industria 4.0, pero donde veo todo de forma mas genérica, te quería hacer una consulta a través del protocolo MQTT con un s7-1200 y la pasarela IOT2040 se pueden subir datos como hemos visto atraves de mosquitto y node red para visualizarlos, estos datos por este protocolo los podría subir también a la nube a una plataforma tipo AWS (amazon web server) o Azure microsoft. un saludo Javi
Iñigo Gútiez
Si, de hecho hice pruebas a subir los datos a aws y sin problemas por Mqtt. El tema es que dominar aws es como una carrera de varios años porque madre mía la cantidad de aplicaciones que tiene. Yo lo subí a una BD (Dynamo Db creo recordar).
Javi
buenos días de nuevo Iñigo. una nueva consulta, siempre para poder estraer los datos del PLC S71200 por el protocolo Mqtt necesito tener la pasarela IOT 2040, o se puede realizar de alguna otra forma sin tener que tener esta pasarela. un saludo Javi
Iñigo Gútiez
No no, los elementos que uses pueden ser cualquiera que soporte mqtt. No es obligatorio que sean de Siemens, ni mucho menos
Rodrigo Fernando Obregon Romero
Cordial Saludo! Se ve muy interesante el contenido de su curso de Industria 4.0 Tengo dos Preguntas, un poco confusas: para establecer comunicación TCP o Mqtt en el S71200, sin autenticación (servidor Mosquitto sin pasword ni contraseña), de todas manera se requiere configurar un certificado de autenticación en el Tia Portal? Se entiende que el puerto remoto por defecto del Mosquitto es el 1883 (se configura mqttPort = 1883). El puerto local que muchas veces es 2000, es el mismo puerto : "Local~PROFINET_interface_1~Port_1"? Gracias,
Iñigo Gútiez
No, si es todo abierto, no hace falta certificados. El puerto, pues es solamente el puerto por el que quieres salir, nada mas. La constante Local~Interfaz_PROFINET_1~Puerto_1 entiendo que hace refencia al puerto físico, no al puerto abierto por el que comunica. Si te fijas es de tipo Hw_Interface luego es una constante que hace referencia al hardware, no al puerto por el que comunicas.
5361112214
Hola, ¿puede enviar la muestra mqtt como un correo electrónico? Mi dispositivo plc es 1214c dc / dc / dc pero M10.x me muestra como FALSO.
Adrian Iskow
Hola Iñigo nuevamente, como todas las veces es un placer oir tus explicaciones, he hecho ya varias cosas con tus guias, estaré apuntándome al curso de I4.0 cuando finalice los que tengo actualmente. Ahora a la pregunta, mi CPU es 1214C xxxxx1AG31XXX por lo cual solo puede tener firm v3.0, por lo que creo según he investigado en la web queda fuera de la librería que necesita firm v4, crees posible que pueda hacerlo yo mismo creando los bloques? o estoy tirando opciones sobre algo que no puede realizarse? muchas gracias.
Iñigo Gútiez
Efectivamente con versiones inferiores como la 3, no funciona. A partir de ahí, ya no sé que decirte. Entiendo que si se exige cierto nivel de firmware es porque por X razones no se puede hacer con fw inferiores. Y suponiendo que se pudiera, vas a gastar más tiempo y dolores de cabeza, que cambiando la CPU por una más moderna. Es algo que no te puedo ayudar, porque sinceramente a mi se me escapa.
Adrian Iskow
Muy amable, muchas gracias
DIEGO HERNANDO HIDALGO LLUMIQUINGA
Envío de datos Arduino-MQTT-NodeRed-PLC estimado Iñigo quisiera pedirle ayuda en este tema, quisera contactarme con usted para hablar sobre este tema
Iñigo Gútiez
Hola Diego, cualquier cuestión en el caso de que pueda ayudar, a través del formulario de contacto. Saludos
Guillermo Sepulveda
usando plcsim advanced es posible hacer funcionar la librería de tia v16? Cambia un poco respecto a esta.
Iñigo Gútiez
Pues no lo sé. ¿Has probado?
Santiago Marinovich
Hola, Iñigo! Ante todo, sos un capo (asi decimos en argentia el que es un Crack) Me has salvado incontables veces con explicaciones super claras. Me gustaría saber si conoces alguna forma de aplicar esta funcionalidad de comunicación MQTT en version de tia V14 ya que las librerias sugeridas, son para V15 en adelante. Gracias y abrazo.
Iñigo Gútiez
No, si Siemens no lo ofrece, seguramente es porque no es posible.
Carlos Antonio Leon Arias
hola, tengo un plc s7-300 pero al momento de de llamar la libreria, me sale error, segun el archivo tiene demasiado caracteres. tienes alguna recomendación?
Iñigo Gútiez
Pues si te dice que el hombre es demasiado largo... Prueba a poner uno más corto, no?
Carlos Enrique
Saludos, disculpen tienen la librería del MQTT en la versión 16 del TIA Portal?
Iñigo Gútiez
Puedes actualizar la de las versiones anteriores si en la web de Siemens no está la última.
Ing. Leonardo Depetris
Hola Iñigo. Primero que nada, agradecerte y felicitarte por este blog. Hace solo 2 meses que empecé con PLC, vengo del lado del Internet de las Cosas. Estoy en un proyecto de manejo secuencial de 20 bombas sumergibles, dependientes del valor analógico de llenado de una cisterna, con contabilización de horas de marcha por bomba y publicación en MQTT. Tus videos me resultaron muy didácticos, completos y me permitieron cumplir mis objetivos. Mi pregunta puntual, ¿es posible suscribirse a MQTT? en este blog y con esta library parecería que solo es posible publicar. Pensaba la posibilidad de generar acciones en el SL1200, en función de datos que ya tengo en mi ecosistema de IoT. Muchas gracias! Saludos desde Argentina!
Iñigo Gútiez
Sinceramente lo desconozco, ya que no lo he usado. Tendrás que googlear un poco para ver si puede funcionar como suscriptor. Si no, tendrás que poner un pequeño equipo que haga de suscriptor y luego de ahí al PLC.
JOSMELL ALVA ALCANTARA
Buenas Estimado Iñigo, Una consulta, estoy tratando de usar un PLC S7 1200 con Raspberry PI, instale el Broker MQTT, descargué la librería de LMqtt_Publisher en lo usé en TIA PORTAL V17. El problema es que cuando intento hacer la comunicación genera un error, y no logró comunicarlo. La consulta es: La librería que da la página de Siemens es para TIA V15, ¿lo ha probado con TIA portal V17 ó sólo funciona con TIA PORTAL V15?. Agradezco su respuesta.
Iñigo Gútiez
No lo he probado con la V17, pero entiendo que debería funcionar. Revisa que el firmware del PLC es el mínimo necesario para que funcione el bloque correctamente.
Igor
Hola Iñigo, Muy buen articulo! Llevo tiempo intentando hacer este mismo proceso pero sin utilizar la pasarela IoT pero no lo he conseguido. Mi idea es enviar métricas por MQTT, primero por Mosquito instalado en mi PC y después, desde un directamente desde un Siemens S7-1200 al que se le da internet por un cable ethernet. Lo has probado? Muchas gracias.
Iñigo Gútiez
Siempre que he usado mqtt (y solo un par de veces), lo he hecho con una pasarela