RS-485 (TIA/EIA-485) es un estándar eléctrico para la comunicación serie por un par trenzado. Envía cada bit como la diferencia de tensión entre dos hilos, A y B, así que rechaza el ruido y llega hasta 1200 m a 100 kbit/s o menos, con hasta 32 equipos estándar en un bus. Las velocidades más altas, de unos 10 Mbit/s, solo funcionan en unos 12 m.
Esta guía explica cómo funciona RS-485, los límites de distancia y velocidad, las reglas de cableado (topología, terminación, polarización y masa) y cómo usar el puerto RS-485 de los PLC M-Duino, Ardbox y ESP32 PLC de Industrial Shields, con código probado para half y full duplex. Si necesitas un autómata programable con RS-485 y Ethernet, el ESP32 PLC 21 los lleva de serie.
¿Qué es RS-485 y cómo funciona?
RS-485, también conocido como EIA-485, es un bus multipunto diferencial. El transmisor mueve los dos hilos en sentidos opuestos y el receptor solo lee la diferencia entre ellos. Una diferencia por encima de +200 mV es un estado lógico y por debajo de -200 mV es el otro. El ruido inducido en el cable afecta igual a los dos hilos, así que la diferencia no cambia. Por eso un par trenzado lleva RS-485 por armarios industriales, junto a motores y variadores.
Muchos receptores y transmisores pueden compartir el mismo par en línea (un bus multipunto). RS-485 solo define la capa eléctrica: los bytes, las direcciones y quién habla en cada momento vienen de un protocolo por encima, normalmente Modbus RTU.
| Característica | RS-485 |
|---|---|
| Estándar | TIA/EIA-485-A |
| Señal | Diferencial, entre A y B |
| Umbral del receptor | ±200 mV |
| Rango de modo común | -7 V a +12 V |
| Equipos por segmento | 32 cargas unitarias (más con transceptores de 1/4 o 1/8 de carga unitaria) |
| Longitud máxima | Unos 1200 m a 100 kbit/s o menos |
| Velocidad máxima | Unos 10 Mbit/s, en unos 12 m |
| Hilos | 1 par trenzado (half duplex) o 2 pares (full duplex), más una referencia de señal |
| Topología | Línea (daisy chain) con una terminación de 120 Ω en cada extremo |
Distancia y velocidad de RS-485: ¿1200 m o 12 m?
Las dos cifras son correctas, a velocidades distintas. La resistencia y la capacidad del cable limitan lo rápido que puede cambiar la señal, así que cuanto más largo es el cable, menor es la velocidad. Una regla práctica habitual es que la velocidad en bit/s multiplicada por la longitud en metros no supere unos 108.
| Velocidad | Longitud máxima aproximada | Uso típico |
|---|---|---|
| 9600 a 100000 bit/s | 1200 m | Modbus RTU a 9600 o 19200 baudios, analizadores, variadores, sensores |
| 1 Mbit/s | Unos 100 m | Enlaces rápidos dentro de una máquina |
| 10 Mbit/s | Unos 12 m | Enlaces cortos entre placas o armarios |
Una versión anterior de este post decía que RS-485 llega "hasta 12 m". Ese es el límite a la velocidad máxima del estándar, no el alcance de RS-485: a las velocidades de Modbus RTU, un bus bien terminado llega a unos 1200 m con un buen par trenzado.
RS-485, RS-232 y TTL comparados
| RS-485 | RS-232 | Serie TTL | |
|---|---|---|---|
| Señal | Diferencial | Asimétrica, ±3 a ±15 V | Asimétrica, 0 a 5 V o 3,3 V |
| Equipos | Hasta 32 cargas unitarias por segmento | 2 (punto a punto) | 2 (punto a punto) |
| Distancia | Hasta unos 1200 m | Unos 15 m | Dentro de la placa o del armario |
| Inmunidad al ruido | Alta | Media | Baja |
| Uso típico en un PLC | Bus de campo Modbus RTU | Un solo instrumento, un HMI antiguo, un módem | Módulos junto al PLC |
Reglas de cableado de RS-485
- Una línea, sin estrella. Conecta los equipos uno detrás de otro con derivaciones cortas. Una estrella o las derivaciones largas provocan reflexiones.
- 120 Ω en los dos extremos. Pon una terminación entre A y B en cada extremo de la línea, y solo ahí. En un cable corto de banco de pruebas a baja velocidad no hace falta.
- Polarización en reposo. Cuando nadie transmite, el bus necesita un nivel definido: pull-up en un hilo y pull-down en el otro, normalmente en el maestro o en un equipo del bus.
- Una referencia común. RS-485 tolera de -7 V a +12 V de modo común, no más. Une la masa de señal (GND o COM) de los equipos con un tercer hilo cuando no tienen una referencia común.
- Cable de par trenzado. Usa cable para RS-485, con una impedancia característica cercana a 120 Ω, apantallado en lugares con ruido y con la pantalla a tierra en un solo punto.
Si un bus que funcionaba empieza a fallar, sigue la lista de diagnóstico de RS-485: topología, la prueba de terminación de 60 Ω, polarización, masa, cable y configuración del protocolo.
RS-485 en los PLC de Industrial Shields
Los PLC M-Duino y Ardbox usan un transceptor RS-485 MAX481CSA. En half duplex un transceptor envía y recibe por A+ y B-. En full duplex se usa un segundo transceptor, así que un par recibe y el otro transmite a la vez.
| Familia de PLC | Bornes RS-485 | Modos | Configuración |
|---|---|---|---|
| M-Duino | A+, B-, Y+, Z- | Half y full duplex | Siempre activo. Elige HD o FD con el interruptor FD/HD |
| Ardbox Analog HF+ y Relay HF+ | A+, B-, Y+, Z- | Half y full duplex | RS-485 o RS-232 se elige al pedir el PLC. HD o FD con el interruptor superior derecho 1 (Analog) o 2 (Relay) |
| ESP32 PLC | A+, B- | Half duplex | Interruptor de comunicación 3 en OFF |
La configuración detallada de interruptores de cada modelo, también del ESP32 PLC 14, está en RS-485 con PLC basados en Arduino y ESP32.
RS-485 en la familia M-Duino
En la familia M-Duino el puerto RS-485 siempre está activo, así que no hace falta ningún interruptor para habilitarlo. Solo eliges half duplex o full duplex con el interruptor FD/HD:

Estos son los bornes del PLC para la comunicación RS-485:

RS-485 en la familia Ardbox
La familia Ardbox tiene dos subfamilias con RS-485 por hardware, el Ardbox Analog HF+ y el Ardbox Relay HF+. Comparten un puerto serie entre RS-485 y RS-232. La opción se elige al pedir el PLC, y los interruptores y los jumpers vienen configurados. Estas imágenes muestran la configuración:
Ardbox Analog HF+


Ardbox Relay HF+


Cómo programar el puerto RS-485 del PLC
Alimenta el PLC con 12 a 24 Vdc e instala las placas de Industrial Shields en el Arduino IDE. La librería RS485 viene con las placas. Abre el puerto en setup() con la misma velocidad, el mismo modo duplex y el mismo formato serie que los demás equipos del bus:
#include <RS485.h>
RS485.begin(38400, HALFDUPLEX, SERIAL_8N1); // baud rate, HALFDUPLEX or FULLDUPLEX, format
Si omites los dos últimos parámetros, la librería usa half duplex y 8N1. Comprueba la velocidad dos veces: el monitor serie (USB, Serial) y el bus RS-485 (RS485) son puertos distintos, y cada uno tiene su velocidad. Todos los ejemplos siguientes compilan sin avisos para un M-Duino 21+ con las placas AVR de Industrial Shields 1.2.1.
Escribir en el puerto RS-485
// Send to the RS-485 port every byte typed in the serial monitor
#include <RS485.h>
void setup() {
Serial.begin(9600); // serial monitor (USB)
RS485.begin(38400, HALFDUPLEX, SERIAL_8N1); // RS-485 port: same settings on all devices
}
void loop() {
if (Serial.available()) {
byte tx = Serial.read();
Serial.write(tx); // echo to the serial monitor
RS485.write(tx); // and send it to the RS-485 bus
}
}
Leer del puerto RS-485
// Print every byte received on the RS-485 port, in hexadecimal and decimal
#include <RS485.h>
void setup() {
Serial.begin(9600);
RS485.begin(38400, HALFDUPLEX, SERIAL_8N1);
}
void loop() {
if (RS485.available()) {
byte rx = RS485.read();
Serial.print("HEX: ");
Serial.print(rx, HEX);
Serial.print(", DEC: ");
Serial.println(rx, DEC);
}
}
Prueba de full duplex
Full duplex necesita dos pares y solo está disponible en el M-Duino y el Ardbox. Para probarlo en un solo PLC, une A+ con Y+ y B- con Z-, pon el interruptor FD/HD en FD y ejecuta este bucle de prueba:
// Full duplex loopback test (M-Duino and Ardbox only):
// connect A+ to Y+ and B- to Z- on the same PLC, and set the HD/FD switch to FD
#include <RS485.h>
const byte TEST_BYTE = 5;
void setup() {
Serial.begin(9600);
RS485.begin(38400, FULLDUPLEX, SERIAL_8N1);
Serial.println("Full duplex test");
}
void loop() {
RS485.write(TEST_BYTE); // the transmitter (Y+, Z-) sends
delay(1000);
while (RS485.available()) { // the receiver (A+, B-) gets it back
Serial.print("Received: ");
Serial.println(RS485.read());
}
}
Para hablar con analizadores, variadores u otros PLC, usarás un protocolo sobre estos bytes. Continúa con Modbus RTU con PLC basados en Arduino y ESP32.
Mira lo que viaja por un bus RS-485. En el simulador de red Modbus, un M-Duino 21 interroga a cuatro esclavos Modbus RTU por RS-485. Cambia la velocidad o apaga un esclavo, y lee las tramas, el CRC y los timeouts.
Abrir el simulador de red ModbusConsulta a un ingeniero sobre tu bus RS-485
Preguntas frecuentes sobre RS-485
¿RS-485 es un protocolo?
No. RS-485 define las señales eléctricas, no el contenido de los mensajes. Modbus RTU, BACnet MS/TP y muchos protocolos propietarios funcionan sobre RS-485.
¿Cuál es la longitud máxima de un cable RS-485?
Unos 1200 m a 100 kbit/s o menos, con un par trenzado y terminación en los dos extremos. A más velocidad la longitud baja, hasta unos 12 m a 10 Mbit/s. Los repetidores alargan un bus más allá de estos límites.
¿Cuántos equipos puedo conectar a un bus RS-485?
32 cargas unitarias por segmento. Un transceptor estándar es una carga unitaria, así que la respuesta habitual es un maestro y 31 esclavos. Los transceptores de 1/4 o 1/8 de carga unitaria permiten 128 o 256 equipos.
¿Puede funcionar RS-485 con solo dos hilos?
Los datos viajan por dos hilos, A y B. Aun así, los receptores necesitan una referencia común dentro de -7 V a +12 V, así que cuando los equipos no tienen una masa común, añade un tercer hilo para GND.
¿Qué diferencia hay entre RS-485 y RS-422?
RS-422 también usa señales diferenciales, pero tiene un transmisor y hasta 10 receptores por par. RS-485 permite varios transmisores en el mismo par, que es lo que necesita un bus multipunto.
¿Necesito una resistencia de 120 Ω?
En cada extremo de una línea larga, sí, y solo en los extremos. Sin alimentación, la resistencia entre A y B en un bus bien terminado es de unos 60 Ω (dos de 120 Ω en paralelo).