Ir al contenido

Inicio/PLC Solution Library/OpenPLC

OpenPLC con PLC industriales

OpenPLC es software PLC de código abierto. Escribes el programa en el OpenPLC Editor con lenguajes IEC 61131-3 como Ladder Diagram y Structured Text, y lo ejecutas en el OpenPLC Runtime en un ordenador Linux o lo cargas como firmware en una placa basada en Arduino o ESP32, incluidos los controladores M-Duino, Ardbox y ESP32 PLC.

Código abierto·Editor v4.2.11 es la última versión (comprobado en octubre de 2026)·M-Duino, Ardbox y ESP32 PLC mapeados por Industrial Shields

De qué se compone OpenPLC

OpenPLC tiene dos partes principales. El Editor es donde escribes y simulas el programa; el Runtime es lo que lo ejecuta. En las placas con microcontrolador, el Editor compila el programa y lo carga en la placa, así que la propia placa se convierte en el PLC.

OpenPLC EditorEscribe y simula
Compila y carga
Control remoto
M-Duino, Ardbox, ESP32 PLC
OpenPLC Runtime v4Linux o Docker

OpenPLC Editor

Aplicación de escritorio para escribir el programa en Ladder Diagram, Structured Text y otros lenguajes IEC 61131-3, simularlo y depurarlo en vivo. También transfiere el programa al destino.

OpenPLC Runtime

El Runtime v4 ejecuta programas IEC 61131-3 en ordenadores Linux y en Docker, y el Editor lo controla a distancia. El repositorio del Runtime v3 está archivado.

Direccionamiento IEC 61131-3

Cada entrada y salida tiene una dirección IEC: %IX y %QX para las señales digitales (dos índices, como en %QX1.0), %IW y %QW para las analógicas (un índice). Los valores analógicos van de 0 a 65535.

Cuándo tiene sentido OpenPLC y cuándo no

El mismo PLC de Industrial Shields se puede programar con OpenPLC, con el Arduino IDE o, en el Raspberry PLC, con CODESYS. La herramienta adecuada depende de tu equipo y de lo que necesita el proyecto.

CriterioOpenPLCArduino IDECODESYS
LenguajesOpenPLCLadder, Structured Text y otros lenguajes IEC 61131-3Arduino IDEC++ (Arduino)CODESYSLenguajes IEC 61131-3
Familias de Industrial Shields en nuestras guíasOpenPLCM-Duino, Ardbox, ESP32 PLCArduino IDEPLC basados en Arduino y ESP32, con el paquete de placas de Industrial ShieldsCODESYSRaspberry PLC
LicenciaOpenPLCCódigo abiertoArduino IDECódigo abiertoCODESYSComercial, el runtime necesita licencia
Punto fuerteOpenPLCProgramación tipo PLC, simulación y Modbus sin escribir C++Arduino IDEAcceso directo a todas las librerías y puertos de comunicación del PLCCODESYSEntorno estándar que ya usan muchos integradores
A tener en cuentaOpenPLCHTTP y otros protocolos necesitan extensiones Arduino en C++; los valores analógicos se tienen que escalarArduino IDESin Ladder: la lógica de ciclo la escribes túCODESYSIndustrial Shields no lo documenta para los PLC basados en Arduino o ESP32

Elige OpenPLC si

  • Tu equipo ya piensa en Ladder o Structured Text y no quiere escribir C++.
  • La lógica son sobre todo entradas y salidas digitales, temporizadores, contadores y secuencias.
  • Necesitas el PLC como esclavo Modbus RTU o Modbus TCP.
  • Estás enseñando, haciendo un prototipo o empezando un proyecto DIY que pasará a hardware de carril DIN.

Elige otra herramienta si

  • El proyecto depende de Wi-Fi, Bluetooth, LoRa, 4G, tarjetas SD o actualizaciones OTA: el Arduino IDE da acceso directo a todo ello.
  • El cliente o el integrador trabaja con CODESYS: úsalo en el Raspberry PLC.
  • Necesitas una función de seguridad como una parada de emergencia: usa dispositivos de seguridad, sea cual sea el software.
  • Necesitas soporte del fabricante para el propio software: OpenPLC tiene soporte de la comunidad.

¿No sabes qué controlador encaja? Lee Arduino PLC vs ESP32 PLC vs Raspberry Pi PLC.

Cómo funciona OpenPLC con los PLC de Industrial Shields

Cuatro guías cubren todo el camino, desde un primer programa Ladder en un Arduino Mega hasta código C++ que se ejecuta junto al diagrama Ladder en un M-Duino, Ardbox o ESP32 PLC. Cada tarjeta resume la guía; ábrela para ver todos los pasos y capturas.

1. Primeros pasos

Primeros pasos con OpenPLC y Arduino Mega

Parte del ejemplo Blink, explica por qué el LED integrado (pin PWM 13) es la salida analógica %QW11, añade un bloque MOVE, simula el programa y lo transfiere a la placa.

Leer la guía

2. Modbus

Modbus en Arduino Mega con OpenPLC

Convierte la placa en esclavo Modbus RTU desde la pestaña de comunicaciones y muestra cómo las direcciones IEC pasan a ser coils (%QX1.1 es el coil 9), con pruebas desde un simulador de maestro.

Leer la guía

3. PLC de Industrial Shields

ESP32 PLC, M-Duino y Ardbox con OpenPLC

Instala el mod de Industrial Shields, explica el mapeo de E/S por defecto (%IX1.4 corresponde a I1_4), cómo pasar una salida analógica a digital y cómo añadir una extensión Arduino.

Leer la guía

4. Extensiones Arduino

Variables externas en OpenPLC para extensiones Arduino

Comparte variables BOOL, UINT y STRING entre el diagrama Ladder y el código C++, con los factores de escala analógica de cada familia de PLC.

Leer la guía

Más guías de OpenPLC

Compatibilidad de OpenPLC por familia de PLC

Solo lo que dicen nuestras guías y la documentación oficial de OpenPLC. Los factores de escala se aplican a los valores que se leen o escriben desde una extensión Arduino, porque OpenPLC usa de 0 a 65535 para las señales analógicas.

FamiliaBasado enEstado en OpenPLCEscala analógica en extensiones ArduinoGuía
M-DuinoBasado enArduino MegaEstado en OpenPLCPlaca seleccionable con el mod de Industrial Shields. Las direcciones digitales siguen los nombres del PLC (%IX1.4 es I1_4); los relés son salidas digitales; las salidas conmutables empiezan como analógicas.Escala analógica en extensiones ArduinoanalogRead × 64, analogWrite ÷ 256GuíaESP32 PLC, M-Duino y Ardbox
ArdboxBasado enArduino LeonardoEstado en OpenPLCPlaca seleccionable con el mod de Industrial Shields.Escala analógica en extensiones ArduinoanalogRead × 64, analogWrite ÷ 256GuíaESP32 PLC, M-Duino y Ardbox
ESP32 PLC (todos los modelos excepto el 14)Basado enESP32Estado en OpenPLCPlaca seleccionable con el mod de Industrial Shields.Escala analógica en extensiones ArduinoanalogRead × 32, analogWrite ÷ 16GuíaVariables externas
ESP32 PLC 14Basado enESP32Estado en OpenPLCPlaca seleccionable con el mod de Industrial Shields.Escala analógica en extensiones ArduinoanalogRead × 16, analogWrite ÷ 16GuíaVariables externas
Raspberry PLCBasado enRaspberry PiEstado en OpenPLCIndustrial Shields no publica mapeo de E/S de OpenPLC. El OpenPLC Runtime v4 funciona en Linux, pero las entradas y salidas del PLC necesitarían una capa de hardware que no proporcionamos. Nuestras guías lo usan como broker MQTT de un M-Duino con OpenPLC.Escala analógica en extensiones ArduinoNo aplicaGuíaMQTT con Raspberry PLC
Arduino Mega (placa maker)Basado enArduino MegaEstado en OpenPLCSoportado por OpenPLC. El LED integrado del pin PWM 13 es %QW11.Escala analógica en extensiones ArduinoNo se trata en nuestras guíasGuíaPrimeros pasos

El mod de Industrial Shields se publicó en 2024 para el OpenPLC Editor de entonces. El OpenPLC Editor v4 es una aplicación nueva: antes de empezar un proyecto, comprueba que tu modelo aparece en su lista de placas, o pregúntanos. Para el Raspberry PLC, consulta CODESYS en el Raspberry PLC.

Cómo empezar con OpenPLC en un PLC industrial

  1. Instala el OpenPLC Editor.Descárgalo del sitio oficial, autonomylogic.com, y ábrelo una vez antes de añadirle nada.
  2. Añade las placas de Industrial Shields.Instala el mod de Industrial Shields en la carpeta del OpenPLC Editor, como se explica en la guía de M-Duino, Ardbox y ESP32 PLC, y comprueba que tu modelo está en la lista de placas.
  3. Parte de un ejemplo y simúlalo.Abre el ejemplo Blink, ejecuta la simulación y mira cómo cambian las variables antes de tocar el hardware, como en la guía de primeros pasos.
  4. Asigna tus variables a las entradas y salidas del PLC.Da a cada variable su dirección IEC y comprueba el mapeo exacto de tu modelo en el menú I/O Config de "Transfer Program to PLC".
  5. Transfiere el programa al PLC.Selecciona la placa y el puerto y pulsa "Transfer to PLC". Si necesitas Modbus RTU o Modbus TCP, actívalo antes en la pestaña de comunicaciones, como en la guía de Modbus.
  6. Añade C++ solo donde lo necesites.Usa una extensión Arduino con las librerías de Industrial Shields para lo que no puede hacer Ladder, y comparte datos con variables externas, como en la guía de variables externas.

¿Prefieres C++? Sigue cómo instalar las placas de Industrial Shields en el Arduino IDE y consulta la PLC Solution Library para encontrar código que funciona, ordenado por función.

Preguntas frecuentes sobre OpenPLC

¿Qué es OpenPLC?

OpenPLC es una suite de software PLC de código abierto. Con el OpenPLC Editor se escriben programas en lenguajes IEC 61131-3 como Ladder Diagram y Structured Text. El OpenPLC Runtime ejecuta esos programas en ordenadores Linux, y el Editor también puede compilarlos y cargarlos en placas con microcontrolador como Arduino y ESP32.

¿Puedo usar OpenPLC con Arduino?

Sí. El OpenPLC Editor compila el programa y lo transfiere a la placa por USB. Nuestra primera guía lo hace con un Arduino Mega. Los PLC M-Duino (basados en Arduino Mega) y Ardbox (basados en Arduino Leonardo) de Industrial Shields se pueden seleccionar como placa después de instalar el mod de Industrial Shields para el OpenPLC Editor.

¿OpenPLC funciona en el ESP32?

Sí, OpenPLC puede compilar programas para placas ESP32. La familia ESP32 PLC de Industrial Shields está incluida en el mod de Industrial Shields, junto con M-Duino y Ardbox.

En las extensiones Arduino, el valor de analogRead se multiplica por 32 (por 16 en el ESP32 PLC 14) y el de analogWrite se divide entre 16 para ajustarlo al rango de OpenPLC, de 0 a 65535.

¿Cuál es la versión actual de OpenPLC?

La generación actual es OpenPLC Editor v4 y OpenPLC Runtime v4, publicados por Autonomy Logic. Cuando lo comprobamos en octubre de 2026, la última versión del Editor en GitHub era la v4.2.11.

El repositorio del OpenPLC Runtime v3 está archivado. Nuestro mod de Industrial Shields se publicó en 2024 para el Editor de entonces, así que comprueba que tu modelo aparece en la lista de placas del Editor que instales.

¿OpenPLC es gratuito y de código abierto?

Sí. El OpenPLC Editor se publica con licencia GPL-3.0 y el OpenPLC Runtime v4 con licencia MIT, ambos en la cuenta de GitHub de Autonomy Logic. No hay que comprar ninguna licencia de runtime para el controlador.

¿Uso OpenPLC o CODESYS?

Los dos usan lenguajes IEC 61131-3. OpenPLC es de código abierto y funciona en PLC basados en Arduino y ESP32 como M-Duino, Ardbox y ESP32 PLC.

CODESYS es un entorno comercial que usan muchos integradores; su runtime necesita licencia, e Industrial Shields lo documenta en el Raspberry PLC. Elige según el hardware que necesitas y lo que ya conoce tu equipo.

¿Puedo hacer un PLC casero (DIY) con OpenPLC?

Sí. Un Arduino Mega o una placa ESP32 con OpenPLC es una forma habitual de aprender a programar PLC. En una máquina real, las entradas y salidas deben soportar señales de 24 V, ruido y montaje en carril DIN, por eso el mismo programa suele pasar a un controlador industrial como un M-Duino, un Ardbox o un ESP32 PLC.

¿OpenPLC sirve para uso industrial?

Puede ejecutar la lógica de control en hardware industrial, pero la aplicación la tienes que validar tú: OpenPLC tiene soporte de la comunidad y no es un controlador de seguridad. Las paradas de emergencia y demás funciones de seguridad deben usar dispositivos de seguridad, sea cual sea el software que controla el resto de la máquina.

¿Qué software PLC de código abierto existe?

OpenPLC es la suite de código abierto más conocida que cubre tanto la programación (Editor) como la ejecución (Runtime) con lenguajes IEC 61131-3. Beremiz es otro entorno IEC 61131-3 de código abierto. Si prefieres C++ en lugar de lenguajes PLC, el Arduino IDE y el paquete de placas de Industrial Shields también son de código abierto.