Ir al contenido

Relés internos en un PLC: bits de memoria y salidas de relé

Qué es un relé interno en la programación de PLC, en qué se diferencia de una salida de relé y cómo usar los dos en un PLC basado en Arduino
2 de diciembre de 2019 por
Relés internos en un PLC: bits de memoria y salidas de relé
Boot & Work Corp. S.L, David Martin

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é esUn bit en la memoria del PLCUn relé real con un contacto en los bornes del PLC
Otros nombresRelé auxiliar, marca, flag, bit MSalida a relé, salida digital de relé
Dónde se usaSolo dentro del programaPara conmutar un contactor, la bobina de una válvula, una lámpara u otra carga
Cuántos hayTantos como permita la memoriaLos que tenga el modelo (por ejemplo 8 en un Ardbox Relay)
En un sketch de Arduinobool motorRun = false;digitalWrite(R0_1, HIGH);
DesgasteNingunoContacto 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.

Símbolo de salida de relé: un contacto de interruptor dibujado dentro de un rectángulo
Símbolo de una salida de relé en las etiquetas del PLC.

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.

Dibujo de una salida de relé de un PLC: el contacto del relé, rotulado como internal relay en el dibujo, conectado entre dos bornes con un par de cables trenzados
Este dibujo muestra una salida de relé, no un relé interno: el contacto está entre dos bornes del PLC, sin polaridad. La etiqueta INTERNAL RELAY viene de la primera versión de este artículo.

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:

FamiliaNombres de los relésEjemplo
Ardbox RelayDe R1 a R8digitalWrite(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.

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.

Buscar en nuestro blog

Relés internos en un PLC: bits de memoria y salidas de relé
Boot & Work Corp. S.L, David Martin 2 de diciembre de 2019
Compartir esta publicación

¿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