Learn PLCs free

OpenPLC Supported Hardware

OpenPLC Runtime ships for a wide range of hardware — from $5 ESP32 modules through industrial-grade DIN-rail PLCs. Same OpenPLC Editor project compiles for any target. Here is the complete list as of OpenPLC v3.x and v4.x.

Microcontroller boards (Arduino-style)

BoardDI / DO / AINetworkNotes
Arduino Uno12 / 6 / 6Ethernet shield (W5500)Limited memory; small programs only
Arduino Mega 256024 / 16 / 16Ethernet shieldMost popular Arduino target — good DI/DO count
Arduino Nano8 / 4 / 6Serial onlyCompact form factor; serial Modbus
ESP32 / ESP32-S38 / 4 / 6Wi-Fi + Bluetooth nativeCheapest Wi-Fi PLC option ($5-15)
Arduino Opta8 / 4 / -Ethernet + Wi-Fi + RS-485Industrial-grade, DIN-rail. Best industrial Arduino target
Pixtend V2 / RevPi Core16 / 8 / 4Ethernet + Wi-FiIndustrial Pi-based PLC; fully isolated I/O

Single-board computers

  • Raspberry Pi 4 / 5 — most common deployment. 26 GPIO usable as PLC I/O. Use a relay HAT for 24V industrial signals. See setup tutorial.
  • Raspberry Pi 3 / Zero 2 — supported but slower. OK for small projects.
  • Beaglebone Black — supported via Linux runtime. Useful PRU coprocessor for sub-millisecond timing.
  • UniPi Neuron / Patron — industrial Pi-based PLC with isolated I/O and OpenPLC pre-installed.

Industrial and PC runtimes

  • Linux x86_64 / ARM — runs OpenPLC Runtime on any Linux PC. Useful for development and testing.
  • Windows 10 / 11 — Windows runtime exists; less common for production but excellent for testing.
  • Industrial Shields M-Duino / Ardbox — Arduino-compatible DIN-rail PLCs with isolated I/O. Direct drop-in industrial Arduino.
  • Productivity 1000 / 2000 (AutomationDirect) — community-supported, not officially endorsed. Possible with custom hardware layer.

Hardware Layer concept

OpenPLC Runtime separates the IEC 61131-3 program from the hardware-specific I/O code via a "Hardware Layer." Out of the box, OpenPLC ships layers for the targets above. Adding new hardware means writing a hardware layer (~300 lines of C++) — a documented procedure on the OpenPLC GitHub.

Related guides