Ir al contenido

Uso de varios esclavos Modbus RTU en Node-RED

11 de junio de 2026 por
Boot & Work Corp. S.L, Arnau Tena

Usar varios esclavos Modbus RTU al mismo tiempo puede ser complicado. En este post explicaremos cómo conseguir una comunicación correcta con varios esclavos.

Hardware utilizado

Para nuestras pruebas utilizamos un Raspberry Pi PLC 21+ con Node-RED como maestro, y tres M-Duino 21+ PLC como esclavos. También utilizamos una protoboard para facilitar el cableado.

Para comunicar los esclavos con el maestro utilizamos el protocolo RS485. Así los conectamos (sin incluir el cableado de la alimentación):

Hardware utilizado

Flujo de Node-RED

En el Raspberry Pi PLC creamos un flujo de Node-RED para gestionar las peticiones de lectura Modbus a varios dispositivos. Modbus RTU es un protocolo secuencial, lo que significa que tendremos problemas si intentamos enviar varias peticiones de lectura a varios dispositivos al mismo tiempo. Para evitarlo, creamos un nodo function que gestiona la secuenciación de las peticiones. Al implementar este nodo function en una instalación con un número distinto de esclavos, no es necesario cambiar su código, solo hay que cambiar el número de salidas del nodo function.

Flujo de Node-RED

Haz clic en este icono para descargar el JSON del flujo:

O, si solo te interesa el código del nodo function:

const delay = 10; //ms
const payload = msg.payload;

let outputCount = node.outputCount;
let outputs = Array(outputCount).fill(null);

let index = 0;

function sendPayload() {
    if (index < outputCount) {
        outputs = Array(outputCount).fill(null);
        outputs[index] = { payload: payload };
        node.send(outputs);
        index++;
        setTimeout(sendPayload, delay);
    }
}

sendPayload();

Para configurar correctamente cada Modbus Getter hay que tener en cuenta algunos aspectos. El Unit-Id es el número de identificación asignado a cada uno de los esclavos; más adelante veremos cómo se asigna este número al esclavo. Los Modbus Getter del flujo adjunto están configurados para leer cinco salidas digitales:

Flujo de Node-RED

A continuación, el servidor. Puedes acceder a la configuración del servidor desde la configuración de cualquiera de los nodos Modbus Getter. El ajuste que más probablemente tendrás que cambiar es el puerto Serial, ya que depende del modelo de Raspberry PLC que tengas:

Flujo de Node-RED

Arduino IDE

El código de los esclavos se puede encontrar aquí:

El código está hecho para el M-Duino 21+, por lo que, si tienes un PLC distinto con otra configuración de E/S, tendrás que modificar el código en consecuencia.

Es importante que asignes un ID distinto a cada dispositivo esclavo y que coincida con el valor Unit-Id de uno de los nodos Modbus Getter. La línea que configura el ID es la 57.

Resultados

Después de cargar el código en cada esclavo y desplegar el flujo de Node-RED en el maestro, deberías empezar a ver esto en la salida de depuración:

Resultados

Estos contienen arrays con los valores de las salidas digitales de cada PLC esclavo.

Buscar en nuestro blog

Boot & Work Corp. S.L, Arnau Tena 11 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