OpenPLC: Complete Guide & Reference
OpenPLC is the leading open-source IEC 61131-3 PLC runtime — free, GPL-licensed, and runs on Arduino, Raspberry Pi, ESP32, Linux servers, and Industrial Shields. Used by universities, hobbyists, and increasingly by small machine builders. This hub indexes every OpenPLC resource on the site.
In one paragraph
OpenPLC has two parts: the OpenPLC Editor (Windows/Linux/macOS) where you write IEC 61131-3 code, and the OpenPLC Runtime that executes the compiled program on hardware (Arduino, Raspberry Pi, ESP32, Linux PC, or Windows). Communication happens via Modbus TCP on port 502 by default. The web interface (port 8080) lets you upload programs and monitor I/O. Default credentials are openplc / openplc — change them.
Browse OpenPLC resources
OpenPLC Editor Walkthrough
Install, navigate the workspace, write your first ladder diagram, structured text and SFC. Generate runtime code.
OpenPLC Supported Hardware
Every officially supported platform: Arduino Uno/Mega, Raspberry Pi 4/5, ESP32, Industrial Shields, Productivity 1000, UniPi.
OpenPLC Structured Text Reference
Complete IEC 61131-3 structured text syntax supported by OpenPLC: data types, operators, control flow, function blocks, and known limits.
OpenPLC Troubleshooting & Default Credentials
Default credentials, login recovery, common compile errors, runtime not starting, network configuration, and Modbus client connectivity issues.
OpenPLC + Arduino Integration
Run OpenPLC on Arduino Uno, Mega 2560 or industrial Arduino-compatible boards. Pin mapping, upload workflow, and limitations vs Raspberry Pi.
OpenPLC Raspberry Pi Tutorial
Step-by-step setup from blank SD card to running ladder logic with GPIO as PLC I/O.
OpenPLC Software Hub
Pricing (free, GPL), system requirements, supported PLCs, pros/cons, full review.
Quick start in 60 seconds
- Download OpenPLC Editor from
openplcproject.com/runtime. - Open Editor → New Project → Standard project → Ladder Diagram → choose your target hardware.
- Write a single rung (Input 0.0 directly to Output 0.0).
- File → Generate program for OpenPLC Runtime — produces an
.stfile. - Install OpenPLC Runtime on your target (Raspberry Pi most common — see our tutorial).
- Browse to
http://[device]:8080, login (openplc / openplc), upload your .st file, click Compile, click Start PLC. - Connect a Modbus TCP client on port 502 to read/write your I/O.
Not ready to install yet?
If you're on a Mac, Chromebook, or just want to practise ladder logic before committing to the OpenPLC setup, PLC Simulation Software runs graded IEC 61131-3 scenarios entirely in your browser — no download, no Raspberry Pi required. It covers the same motor control, timer, and counter patterns you'll eventually deploy on OpenPLC hardware.
Try the free browser simulator →Frequently asked questions
What is OpenPLC?
OpenPLC is a free, open-source PLC runtime and editor implementing the IEC 61131-3 standard. It runs all five IEC languages (Ladder, Structured Text, Function Block, SFC, IL) on Arduino, Raspberry Pi, ESP32, Windows, and Linux, and speaks Modbus for I/O and SCADA connectivity.
Is OpenPLC really free?
Yes. The OpenPLC Editor and Runtime are free and open-source (the v3 runtime and editor are GPL-licensed; the newer v4 runtime is MIT-licensed) with no I/O-count or runtime limits. You only pay for the hardware you run it on — a Raspberry Pi or Arduino is enough to start.
OpenPLC vs CODESYS — which should I use?
OpenPLC is simpler and fully open-source, ideal for learning and small projects on hobbyist hardware. CODESYS is a commercial-grade IDE with fieldbus stacks (PROFINET, EtherCAT), motion, and vendor support — the better choice for production machines. Many engineers learn on OpenPLC and deploy on CODESYS-based controllers.
What hardware does OpenPLC support?
Officially supported platforms include Arduino Uno/Mega/Nano, Raspberry Pi 3 and 4 (Pi 5 has community support), ESP32 and ESP8266, UniPi, Industrial Shields, ProductivityOpen P1AM (community-supported), plus any Windows or Linux PC as a soft PLC.
How do I install OpenPLC?
Install the OpenPLC Editor on your PC (Windows, Linux, or macOS), then install the Runtime on the target — for Raspberry Pi, clone the OpenPLC_v3 repository and run the install script; for Arduino, the Editor uploads compiled programs directly over USB. The web interface on port 8080 manages programs and Modbus devices.