Learn PLCs free

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.

Free / Open source5 IEC 61131-3 languagesCross-platform
OpenPLC architecture overviewOpenPLC has two halves: the Editor where users develop IEC 61131-3 programs, and the Runtime that executes the compiled program on hardware including Arduino, Raspberry Pi, ESP32, Linux PCs, and Windows.OpenPLC architectureOpenPLC Editor (development PC)Windows / Linux / macOSProject (Beremiz IDE)LD · ST · FBD · SFC · ILMatiec compilerGenerates .st + C/C++ output→ Upload to runtime via web (Pi/Linux) or Arduino IDEBrowser-based monitoring on port 8080Default credentials: openplc / openplcdeployOpenPLC Runtime (target hardware)Cross-platform IEC 61131-3 runtimeMicrocontrollersArduino · ESP32Raspberry Pi+ relay HAT for industrialIndustrial PLCsPiXtend · RevPi · UniPiLinux / Windows PCSoftPLC for testingModbus TCP server on port 502Connect SCADA, HMI, or Modbus client

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

Quick start in 60 seconds

  1. Download OpenPLC Editor from openplcproject.com/runtime.
  2. Open Editor → New Project → Standard project → Ladder Diagram → choose your target hardware.
  3. Write a single rung (Input 0.0 directly to Output 0.0).
  4. File → Generate program for OpenPLC Runtime — produces an .st file.
  5. Install OpenPLC Runtime on your target (Raspberry Pi most common — see our tutorial).
  6. Browse to http://[device]:8080, login (openplc / openplc), upload your .st file, click Compile, click Start PLC.
  7. 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.