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)
| Board | DI / DO / AI | Network | Notes |
|---|---|---|---|
| Arduino Uno | 12 / 6 / 6 | Ethernet shield (W5500) | Limited memory; small programs only |
| Arduino Mega 2560 | 24 / 16 / 16 | Ethernet shield | Most popular Arduino target — good DI/DO count |
| Arduino Nano | 8 / 4 / 6 | Serial only | Compact form factor; serial Modbus |
| ESP32 / ESP32-S3 | 8 / 4 / 6 | Wi-Fi + Bluetooth native | Cheapest Wi-Fi PLC option ($5-15) |
| Arduino Opta | 8 / 4 / - | Ethernet + Wi-Fi + RS-485 | Industrial-grade, DIN-rail. Best industrial Arduino target |
| Pixtend V2 / RevPi Core | 16 / 8 / 4 | Ethernet + Wi-Fi | Industrial 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.