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 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.
| Criterio | OpenPLC | Arduino IDE | CODESYS |
|---|---|---|---|
| Lenguajes | OpenPLCLadder, Structured Text y otros lenguajes IEC 61131-3 | Arduino IDEC++ (Arduino) | CODESYSLenguajes IEC 61131-3 |
| Familias de Industrial Shields en nuestras guías | OpenPLCM-Duino, Ardbox, ESP32 PLC | Arduino IDEPLC basados en Arduino y ESP32, con el paquete de placas de Industrial Shields | CODESYSRaspberry PLC |
| Licencia | OpenPLCCódigo abierto | Arduino IDECódigo abierto | CODESYSComercial, el runtime necesita licencia |
| Punto fuerte | OpenPLCProgramación tipo PLC, simulación y Modbus sin escribir C++ | Arduino IDEAcceso directo a todas las librerías y puertos de comunicación del PLC | CODESYSEntorno estándar que ya usan muchos integradores |
| A tener en cuenta | OpenPLCHTTP y otros protocolos necesitan extensiones Arduino en C++; los valores analógicos se tienen que escalar | Arduino 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.
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.
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.
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.
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.
Más guías de OpenPLC
- Depuración en vivo con OpenPLCDepura un PLC remoto mientras funciona.
- MQTT en M-Duino con OpenPLCPublica el valor de una entrada en un broker MQTT.
- MQTT en M-Duino con OpenPLC y Raspberry PLCEl Raspberry PLC hace de broker con Mosquitto.
- HTTP en M-Duino con OpenPLCOpenPLC no tiene HTTP nativo, así que lo hace una extensión Arduino.
- OpenPLC en M-Duino 42+Escrita antes del soporte oficial del M-Duino; se mantiene como referencia.
- Mapear cualquier M-Duino para OpenPLCMapeo manual de antes del soporte oficial.
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.
| Familia | Basado en | Estado en OpenPLC | Escala analógica en extensiones Arduino | Guía |
|---|---|---|---|---|
| M-Duino | Basado enArduino Mega | Estado 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 ÷ 256 | GuíaESP32 PLC, M-Duino y Ardbox |
| Ardbox | Basado enArduino Leonardo | Estado en OpenPLCPlaca seleccionable con el mod de Industrial Shields. | Escala analógica en extensiones ArduinoanalogRead × 64, analogWrite ÷ 256 | GuíaESP32 PLC, M-Duino y Ardbox |
| ESP32 PLC (todos los modelos excepto el 14) | Basado enESP32 | Estado en OpenPLCPlaca seleccionable con el mod de Industrial Shields. | Escala analógica en extensiones ArduinoanalogRead × 32, analogWrite ÷ 16 | GuíaVariables externas |
| ESP32 PLC 14 | Basado enESP32 | Estado en OpenPLCPlaca seleccionable con el mod de Industrial Shields. | Escala analógica en extensiones ArduinoanalogRead × 16, analogWrite ÷ 16 | GuíaVariables externas |
| Raspberry PLC | Basado enRaspberry Pi | Estado 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 aplica | GuíaMQTT con Raspberry PLC |
| Arduino Mega (placa maker) | Basado enArduino Mega | Estado en OpenPLCSoportado por OpenPLC. El LED integrado del pin PWM 13 es %QW11. | Escala analógica en extensiones ArduinoNo se trata en nuestras guías | Guí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
- Instala el OpenPLC Editor.Descárgalo del sitio oficial, autonomylogic.com, y ábrelo una vez antes de añadirle nada.
- 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.
- 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.
- 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".
- 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.
- 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.
Mira este tipo de lógica funcionando
Secuencias, transportadores y redes Modbus con las mismas familias de PLC. Estos proyectos no están necesariamente programados con OpenPLC; muestran lo que tiene que hacer la lógica.
Casos de estudio
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.