Ir al contenido

MQTT en M-Duino con OpenPLC y Raspberry PLC

Cómo configurar un PLC M-Duino como esclavo MQTT con OpenPLC y un Raspberry PLC con Mosquitto como broker — guía completa para comunicación MQTT industrial
18 de junio de 2026 por
Boot & Work Corp. S.L, Arnau Tena

En este blog configuraremos un M-Duino como esclavo MQTT y un Raspberry PLC como maestro. Si seguiste nuestro blog anterior en el que usamos Node-RED como maestro, puedes reutilizar los mismos diagramas ladder.

Tutoriales previos de OpenPLC y MQTT para M-Duino y Raspberry PLC

Este blog forma parte de una serie sobre OpenPLC en Arduino y M-Duino. Si aún no te has familiarizado con el software, te recomendamos que repases los blogs anteriores primero:

First steps with OpenPLC

Modbus on Arduino with OpenPLC

OpenPLC on M-Duino 42+

Mapping any M-Duino on OpenPLC

MQTT on M-Duino with OpenPLC

HTTP on M-Duino with OpenPLC

Requisitos de hardware para la integración MQTT de M-Duino y Raspberry PLC

Para el maestro usamos un Raspberry PLC con Mosquitto. El cliente es un M-Duino 42+, aunque puedes usar cualquier M-Duino o placa compatible con OpenPLC. El cliente se conecta al servidor por Ethernet; puede ser necesario un switch Ethernet.

Configurar el Raspberry PLC como broker MQTT con Mosquitto

Si necesitas recordar cómo conectarte a tu Raspberry PLC, te recomendamos este curso gratuito:

First Steps with Raspberry Pi

Tras conectarte a tu Raspberry PLC, ejecuta estos dos comandos para instalar Mosquitto:

sudo apt update
sudo apt install mosquitto mosquitto-clients

Ahora necesitas editar la configuración de Mosquitto. Ejecuta este comando para ir a la carpeta de Mosquitto y abrir el archivo de configuración:

cd /etc/mosquitto
sudo nano mosquitto.conf

Luego añade estas dos líneas al final:

listener 1883 0.0.0.0
allow_anonymous true

Guarda el archivo y reinicia Mosquitto con este comando:

sudo systemctl restart mosquitto

Ahora puedes crear un topic. Los dispositivos esclavos usarán este topic para enviar o recibir información al Raspberry PLC:

mosquitto_sub -h 10.10.11.20 -t "openplc"

Usamos la IP 10.10.11.20 porque estamos usando el puerto Ethernet de la parte superior del Raspberry PLC. El del lateral sería 10.10.10.20. El topic en este caso es "openplc".

Después de ejecutar ese último comando, Mosquitto debería estar escuchando los mensajes entrantes.

Configurar M-Duino como esclavo MQTT para publicar mensajes en OpenPLC

Abre el ejemplo MQTT_Send en OpenPLC (File > Tutorials and Examples).

Crea una nueva variable llamada "msg", asigna el tipo bool y la ubicación %IX0.0. Luego, en el diagrama ladder, cambia el broker de "MQTT_CONNECT0" de 'test.mosquitto.org' a '10.10.11.20', cambia el topic de "MQTT_SEND0" de 'openplc-test-topic' a 'openplc' y cambia el mensaje de 'Hello from OpenPLC!' a la variable "msg". Añade un bloque de función "R_TRIG" justo antes de "SEND" y un "BOOL_TO_STRING" antes de "MESSAGE".

La tabla de variables debe quedar así:


Y el diagrama ladder así (ignorando la parte superior del blink):


Esto enviará "TRUE" o "FALSE" por MQTT según el valor de %IX0.0, que corresponde a la entrada I0.0 del M-Duino.

Para compilar y cargar el código correctamente necesitas hacer dos cosas:

  • La primera es mapear correctamente tu M-Duino en el OpenPLC Editor. Esto se explica en este blog:

Mapping any M-Duino PLC for OpenPLC

  • La segunda es habilitar Modbus TCP Ethernet. No vamos a usar Modbus TCP, pero al habilitarlo también se activan las funcionalidades necesarias para usar MQTT por Ethernet. Para ello, ve a la pestaña de comunicaciones en el menú "Transfer Program to PLC" y confíguralo. Lo hemos configurado así:

Ahora puedes cargarlo en el M-Duino. Si tu Raspberry PLC sigue escuchando mensajes MQTT, deberías empezar a recibir mensajes "FALSE" o "TRUE" cada segundo.

Siguiente blog:

Live debugging with OpenPLC

Buscar en nuestro blog

Boot & Work Corp. S.L, Arnau Tena 18 de junio de 2026
Compartir esta publicación
Etiquetas

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.

Comparativa de PLCs