Ecosystem Architecture

How the undoRT components fit together, and where the project stands today.

The Integration Pipeline

The full undoRT pipeline moves from Structured Text source to deterministic hardware execution in four stages. The first two stages — the st2cpp compiler and the undoCore foundation library — are now released. The remaining components are in active development.

ST Source
IEC 61131-3
st2cpp
Released v0.1.2
C++17 Binary
Output
undoCore
Released v0.1.0
undoPLC
Released v0.2.0
undoBUS
Planned
+
undoOS
Planned
Available now In development

Shared Core: undoCore

undoCore is the header-only foundation library that provides common contracts and data structures across all undoRT projects. It defines:

📦 Integrated with undoPLC v0.2.0

undoPLC now uses undoCore as a submodule, leveraging ProcessImage for I/O management and IoBus as the contract for fieldbus communication. This ensures seamless interoperability between undoPLC and future undoBUS implementations.

The Deterministic Execution Loop

Traditional SoftPLCs introduce overhead through intermediate virtual machines or interpretation layers. undoPLC bypasses this by executing native C++ binaries compiled directly from Structured Text by st2cpp — no VM, no interpreter.

When paired with undoOS (a Linux Preempt-RT kernel configuration), real-time tasks are pinned to isolated CPU cores using FIFO scheduling priorities. Fieldbus communication via undoBUS (IgH EtherCAT Master) runs deterministically in user-space alongside the PLC runtime, using the IoBus interface defined in undoCore.

Today, the generated C++ from st2cpp can already be compiled and run standalone on any C++17-capable platform — the RT integration is the next step, not a prerequisite for using the compiler.

Legacy Migration via undoImport

undoImport will ingest existing commercial IDE configurations — TwinCAT (.tmc/.tpy) and CODESYS projects — extracting POU logic and variable declarations, then routing them directly into the st2cpp pipeline.

This makes undoRT immediately useful for teams with existing automation code, without requiring a full manual rewrite.