Skip to content

Installation

Pre-built Packages

Download and run the installer: PiPLC-{version}-Setup.exe

The installer places PiPLC in C:\Program Files\PiPLC, creates desktop/start menu shortcuts, and registers .plcproj, .mplcproj, and .hmi file associations.

Installed executables:

  • PiPLC.exe — the GUI editor
  • PiPLC-HMI.exe — the standalone HMI application

Note

On Windows, only the editor, standalone HMI, and virtual simulator are available. GPIO hardware access requires Linux.

Install the pre-built .deb package:

sudo dpkg -i piplc_{version}_arm64_trixie.deb
sudo apt-get install -f   # install any missing dependencies

This installs:

  • piplc — the GUI editor at /usr/bin/piplc
  • piplc-engine — the headless engine server at /usr/bin/piplc-engine
  • piplc-hmi — the standalone HMI application at /usr/bin/piplc-hmi
  • piplc-engine.service — a systemd service that auto-starts the engine on boot
  • I/O provider plugins at /usr/lib/piplc/plugins/io-providers/

The engine daemon starts automatically after install, listening on port 9100.

Building from Source

Prerequisites

  • CMake 3.16 or later
  • Qt 6.5+ with Widgets, WebSockets, Svg, and Test modules
  • C++17 compatible compiler (GCC 11+, MSVC 2019+, Clang 14+)
  • Ninja (recommended) or Make

Build Steps

git clone https://github.com/jrullan/MyPLC.git
cd MyPLC
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
sudo apt-get install qt6-base-dev qt6-base-dev-tools \
    libqt6websockets6-dev libqt6svg6-dev cmake ninja-build

git clone https://github.com/jrullan/MyPLC.git
cd MyPLC
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
git clone https://github.com/jrullan/MyPLC.git
cd MyPLC
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
docker\build-rpi.bat {version}

Output: installer/linux/output/piplc_{version}_arm64_trixie.deb

Running Tests

cd build && ctest --output-on-failure
Test Suite Coverage
Model Address, Variable, Instruction, Rung, Branch, Program
Instructions Timer, Counter, Math, Compare, Bitwise
Decorators TON, TOF, OSR, OSF, Debounce, Counter
Serialization ProjectSerializer, MultiProjectSerializer, SymbolTableCSV
Runtime MemoryManager, VirtualIOProvider, LadderExecutor, ExecutionEngine
Integration EngineServer WebSocket protocol

CI/CD

The project uses GitHub Actions for continuous integration:

  • Windows x64: MSVC build with Qt 6.5.3
  • Linux x64: GCC build with code coverage
  • Linux ARM64: QEMU-emulated build for Raspberry Pi compatibility