PicoPLC
IEC 61131-3 Programmable Logic Controller on Raspberry Pi Pico 2 — industrial reliability at microcontroller cost.
Overview
The PicoPLC is a compact, industrial-grade Programmable Logic Controller built on the Raspberry Pi Pico 2 (RP2350), overclocked to 250 MHz. It executes IEC 61131-3 ladder logic programs compiled to a compact bytecode by the included PC software, making it accessible to engineers familiar with traditional PLCs while offering the flexibility and cost advantage of modern microcontroller hardware.
The hardware features 10 opto-isolated digital inputs compatible with 12–24V DC industrial logic levels, and 7 relay outputs driven through a transistor buffer stage for long relay life and GPIO protection. Communication is via USB virtual COM port for programming and monitoring, with an optional RS-485 port for Modbus RTU integration into industrial networks.
The companion PC application (Windows and Linux) provides a graphical ladder logic editor, one-click compilation to bytecode, and direct upload to the PicoPLC over USB. The virtual machine on the PLC executes standard ladder elements: contacts (NO/NC), coils, set/reset coils, on-delay timers, and up-counters.
Key Features
- IEC 61131-3 ladder logic — familiar to any PLC engineer
- 10 opto-isolated inputs — protected against industrial voltage transients
- 7 relay outputs — rated for direct load switching
- Compile and upload in seconds from the PC GUI
- USB plug-and-play — no drivers required on Linux
- Optional RS-485 for multi-drop industrial networks and Modbus RTU
- 24V DC industrial standard power supply input
- Compact form factor suitable for DIN rail enclosure mounting
Specifications
| Microcontroller | RP2350 (ARM Cortex-M33) |
|---|---|
| Clock Speed | 250 MHz (overclocked) |
| Digital Inputs | 10 × opto-isolated, 12–24V DC |
| Relay Outputs | 7 × electromechanical / SSR |
| Supply Voltage | 24V DC |
| USB Interface | USB CDC (virtual COM port) |
| Optional Comms | RS-485 / Modbus RTU |
| Programming Standard | IEC 61131-3 Ladder Logic |
| PC Software | Python GUI — Windows & Linux |
| Status Indicators | Input LEDs (×10), Output LEDs (×7), Run/Stop, Error, Comms |
→ Go to Downloads
Firmware Architecture
The PicoPLC firmware implements a scan-cycle bytecode virtual machine on the RP2350. Each scan cycle reads inputs, executes ladder logic bytecode, then updates outputs.
VM Memory Map
| Region | Address Range | Description |
|---|---|---|
| Inputs (I) | 0x00–0x0F | Direct map of hardware inputs (read-only for logic) |
| Outputs (Q) | 0x10–0x1F | Direct map of hardware relay outputs |
| Memory Bits (M) | 0x20–0xFF | Internal scratchpad — auxiliary relays |
| Timers (T) | 0x100–… | Timer current values and status flags |
| Counters (C) | … | Counter current values and status flags |
Supported Instructions
LD [addr] — Load Bit LDI [addr] — Load Inverse AND [addr] — Logic AND ANI [addr] — AND Inverse OR [addr] — Logic OR ORI [addr] — OR Inverse OUT [addr] — Output Bit SET [addr] — Set (Latch) RST [addr] — Reset (Unlatch) TMR [id,pv] — On-Delay Timer CTR [id,pv] — Up Counter END — End Scan Cycle Ready to Order or Evaluate?
Contact us for pricing, technical questions, or to request an evaluation unit.