Guía completa: Cómo elegir un controlador industrial
En la programación de PLC, un relé interno es un bit de memoria que funciona como la bobina de un relé y sus contactos dentro del programa, pero no tiene borne en el PLC. También se llama relé auxiliar, marca, flag o bit de memoria: bits M en los PLC de Siemens y Mitsubishi, bits B3 en el SLC 500 de Allen-Bradley, una variable BOOL en CODESYS o en un sketch de Arduino. Una salida de relé es otra cosa: es un relé real dentro del PLC que cierra un contacto para conmutar una carga externa. En los PLC de Industrial Shields cada salida de relé conmuta hasta 5 A a 250 Vac o 3 A a 30 Vdc, y se controla con digitalWrite().
Esta guía explica los dos significados, porque la primera versión de este artículo llamaba "relé interno" a las salidas de relé que lleva el PLC. Verás cómo cablear y programar una salida de relé en un M-Duino o un Ardbox, y cómo usar un relé interno para enclavar el arranque de un motor en un programa de Arduino.
Relé interno o salida de relé: ¿qué diferencia hay?
| Relé interno (bit de memoria) | Salida de relé | |
|---|---|---|
| Qué es | Un bit en la memoria del PLC | Un relé real con un contacto en los bornes del PLC |
| Otros nombres | Relé auxiliar, marca, flag, bit M | Salida a relé, salida digital de relé |
| Dónde se usa | Solo dentro del programa | Para conmutar un contactor, la bobina de una válvula, una lámpara u otra carga |
| Cuántos hay | Tantos como permita la memoria | Los que tenga el modelo (por ejemplo 8 en un Ardbox Relay) |
| En un sketch de Arduino | bool motorRun = false; | digitalWrite(R0_1, HIGH); |
| Desgaste | Ninguno | Contacto mecánico: número limitado de maniobras |
En lógica ladder, un relé interno es una bobina que no está cableada a ninguna salida. Otros escalones la leen con contactos normalmente abiertos o normalmente cerrados. Guarda un estado intermedio: un motor que debe seguir en marcha cuando se suelta el pulsador de arranque, un paso de una secuencia, una alarma que espera a ser reconocida.
Salidas de relé en los PLC de Industrial Shields
Los PLC basados en Arduino de Industrial Shields con relés, como el Ardbox Relay y el M-Duino 19R, usan un solo tipo de relé. Cada salida de relé conmuta:
- Hasta 5 A a 250 Vac
- Hasta 3 A a 30 Vdc
Estos valores son para cargas resistivas. Para cargas inductivas como bobinas de contactor, electroválvulas o motores, añade un supresor en paralelo con la carga (un snubber RC en alterna, un diodo de libre circulación en continua) y deja margen en la corriente.

Cómo cablear una salida de relé
El contacto del relé no tiene polaridad. Funciona como un interruptor entre dos bornes: conecta la alimentación de la carga a un borne y la carga al otro. El relé puede conmutar un circuito de alterna o de continua, separado de la alimentación del PLC.

Cómo activar una salida de relé en el IDE de Arduino
Instala las placas de Industrial Shields en el IDE de Arduino y elige tu modelo de PLC. Cada relé tiene un nombre definido en el paquete de placas:
| Familia | Nombres de los relés | Ejemplo |
|---|---|---|
| Ardbox Relay | De R1 a R8 | digitalWrite(R1, HIGH); |
| M-Duino con relés (19R, 38R, 57R...) | R0_1, R0_2... (R0.1 en la etiqueta) | digitalWrite(R0_1, HIGH); |
HIGH activa el relé y cierra su contacto. LOW lo desactiva y abre el contacto. Este sketch conmuta R0_1 de un M-Duino 19R cada segundo y escribe el estado en el monitor serie:
// Relay output R0_1 of an M-Duino 19R: on for 1 s, off for 1 s
// On an Ardbox Relay, use R1 instead of R0_1
void setup() {
Serial.begin(9600);
pinMode(R0_1, OUTPUT);
}
void loop() {
digitalWrite(R0_1, HIGH); // relay energised, NO contact closed
Serial.println("R0_1 closed");
delay(1000);
digitalWrite(R0_1, LOW); // relay released, NO contact open
Serial.println("R0_1 open");
delay(1000);
}
Relés internos en un programa de Arduino: enclavamiento de marcha y paro
Un uso clásico de un relé interno es el circuito de autorretención: un pulsador de marcha que solo se pulsa un momento y un motor que sigue en marcha hasta que se pulsa el paro. En lógica ladder el escalón es (Start OR Run) AND Stop = Run. En un sketch de Arduino, el relé interno motorRun es una variable bool:
// Internal relay (memory bit) that latches a motor start
// M-Duino 19R: start button on I0_0 (NO), stop button on I0_1 (NC)
// The physical relay output R0_1 switches the motor contactor coil
bool motorRun = false; // internal relay: a bit in memory, no hardware
void setup() {
pinMode(I0_0, INPUT);
pinMode(I0_1, INPUT);
pinMode(R0_1, OUTPUT);
}
void loop() {
bool startPressed = digitalRead(I0_0) == HIGH;
bool stopOk = digitalRead(I0_1) == HIGH; // NC: LOW when pressed or wire cut
// Same logic as a seal-in rung: (Start OR motorRun) AND Stop
motorRun = (startPressed || motorRun) && stopOk;
digitalWrite(R0_1, motorRun ? HIGH : LOW);
}
El pulsador de paro se cablea normalmente cerrado: si se corta su cable, la entrada pasa a nivel bajo y el motor se para, como en un circuito de paro cableado. Usa un relé de seguridad o un PLC de seguridad para la parada de emergencia: un relé interno en el programa de un PLC estándar no es una función de seguridad.
Los dos sketches compilan y enlazan para el M-Duino 19R+ con el paquete de placas AVR de Industrial Shields (versión 1.2.1, programas de 6156 y 5794 bytes). No se han probado en hardware para este artículo. Para el Ardbox Relay, cambia R0_1 por R1 y usa los nombres de entradas de ese modelo.
Preguntas frecuentes sobre los relés internos de un PLC
¿Qué es un relé interno en un PLC?
Un bit de memoria que el programa usa como la bobina de un relé y sus contactos. No tiene salida física. Guarda un estado intermedio, como un enclavamiento o un paso de una secuencia.
¿Un relé interno es lo mismo que un relé auxiliar o una marca?
Sí. Relé auxiliar, marca, flag, bit de memoria y bit M son nombres de la misma idea. Cada fabricante tiene su propia área de memoria y sus direcciones.
¿Cuántos relés internos tiene un PLC?
Depende de la memoria del PLC. En un PLC basado en Arduino o en CODESYS los declaras como variables BOOL, así que el límite es la memoria libre, no una lista fija.
¿Qué tensión y corriente pueden conmutar las salidas de relé?
En los PLC de Industrial Shields, hasta 5 A a 250 Vac o 3 A a 30 Vdc con carga resistiva. Consulta el datasheet de tu modelo para cargas inductivas.
¿Puedo usar relés internos con OpenPLC?
Sí. En OpenPLC, como en CODESYS, programas lógica ladder con bobinas que no están ligadas a una salida física. Mira la Guía de OpenPLC para PLC industriales.
Más sobre programación de PLC
- Cómo instalar las placas de Industrial Shields en el IDE de Arduino
- Cómo elegir un controlador industrial
- Guía de OpenPLC para PLC industriales
- Aplicaciones industriales: 50 ejemplos reales por sector
Mira el Ardbox Relay, el M-Duino 19R y todos los PLC basados en Arduino.
Llévalo a la práctica
Los relés internos son la memoria de una secuencia. Mira secuencias funcionando en un caso real, en un simulador y en código.
Caso de estudio
Jabón, agua, cepillos y aire en un orden fijo.
Un M-Duino 19R gobierna tres fases en secuencia fija, con un temporizador por fase y cuatro salidas de relé.
Lee el caso de estudio
Simulador
Arranca una turbina o una bomba paso a paso, y párala de forma segura
Un Raspberry PLC 42 ejecuta el arranque como una máquina de estados y lee transmisores 4-20 mA de nivel, caudal, vibración y presión.
Abre el simulador
PLC Solution Library
Secuenciado seguro de electroválvulas en un PLC ESP32 con una máquina de estados
Cada actuación pasa por una sola máquina de estados, así que una condición mixta de carga y descarga no puede existir en el firmware.
Ver el ejemplo