Soft-RT PLC runtime heart

This chapter captures the requirements for using taktora-executor as the runtime heart of a soft-real-time PLC. It follows from the gap analysis between typical PLC architecture (Beckhoff TwinCAT, Siemens TIA, B&R Automation Studio, Rockwell Logix) and the abstractions taktora-executor provides today.

The decomposition is two-tier:

  • Top-level featurePLC runtime heart on iceoryx2 (FEAT_0010) — the umbrella capability.

  • Sub-features — capability themes, each one :satisfies: the top-level feature.

  • Requirements — concrete shall-clauses that :satisfies: a sub-feature.

Sub-features are grouped into foundation capabilities (already provided by taktora-executor v0.1) and gap capabilities (must be added before the runtime credibly serves as a soft-RT PLC heart). Foundation reqs reference the existing API surface; gap reqs describe TBD work.

The umbrella decomposes into fourteen sub-features, each on its own page (see the toctree). Foundation capabilities — cyclic scan execution (Cyclic scan execution (FEAT_0011)), event-driven I/O dispatch (Event-driven I/O dispatch (FEAT_0012)), deterministic logic sequencing (Deterministic logic sequencing (FEAT_0013)), cycle-time watchdog (Cycle-time watchdog (FEAT_0014)), real-time worker scheduling (Real-time worker scheduling (FEAT_0015)), and cooperative shutdown (Cooperative shutdown (FEAT_0016)) — already exist in taktora-executor v0.1. Gap capabilities — bounded-time dispatch (Bounded-time dispatch (FEAT_0017)), cycle-overrun fault primitive (Cycle-overrun fault primitive (FEAT_0018)), mode / state-machine framework (Mode / state-machine framework (FEAT_0019)), retentive state (Retentive state (FEAT_0020)), scan-cycle observability (Scan-cycle observability (FEAT_0021)), PREEMPT_RT validation harness (PREEMPT_RT validation harness (FEAT_0022)), fieldbus integration interface (Fieldbus integration interface (FEAT_0023)), and the framework internal-fault model (Framework internal-fault model (FEAT_0024)) — are prerequisites for credibly calling the runtime a soft-real-time PLC heart.

Top-level feature

Feature: PLC runtime heart on iceoryx2 FEAT_0010

A Rust runtime that schedules, sequences, and observes the cyclic execution of PLC-style logic (read inputs → run logic → write outputs) under soft-real-time constraints, with iceoryx2 as the inter-process data plane.

The runtime targets non-safety industrial automation, robotics control loops, and machine-monitoring scenarios. Hard-real-time bounds, safety certification, IEC 61131-3 frontends, hot-standby, and specific fieldbus protocol stacks are explicitly out of scope; the runtime integrates with such concerns but does not implement them.

Requirements at a glance

Used filter:

ID

Title

Status

Satisfies

FEAT_0011

Cyclic scan execution

open

FEAT_0010

FEAT_0012

Event-driven I/O dispatch

open

FEAT_0010

FEAT_0013

Deterministic logic sequencing

open

FEAT_0010

FEAT_0014

Cycle-time watchdog

open

FEAT_0010

FEAT_0015

Real-time worker scheduling

open

FEAT_0010

FEAT_0016

Cooperative shutdown

open

FEAT_0010

FEAT_0017

Bounded-time dispatch

open

FEAT_0010

FEAT_0018

Cycle-overrun fault primitive

open

FEAT_0010

FEAT_0019

Mode / state-machine framework

open

FEAT_0010

FEAT_0020

Retentive state

open

FEAT_0010

FEAT_0021

Scan-cycle observability

open

FEAT_0010

FEAT_0022

PREEMPT_RT validation harness

open

FEAT_0010

FEAT_0023

Fieldbus integration interface

open

FEAT_0010

FEAT_0024

Framework internal-fault model

open

FEAT_0010

REQ_0001

Configurable scan period

implemented

FEAT_0011

REQ_0002

One execution per scan period

implemented

FEAT_0011

REQ_0003

Scan-cycle execution observability

implemented

FEAT_0011

REQ_0010

Subscriber-triggered ingestion

implemented

FEAT_0012

REQ_0011

Publisher-driven emission

implemented

FEAT_0012

REQ_0012

Zero-copy IPC transport

implemented

FEAT_0012

REQ_0013

Notification-drop visibility

implemented

FEAT_0012

REQ_0020

Sequential chain execution

implemented

FEAT_0013

REQ_0021

Parallel DAG execution

implemented

FEAT_0013

REQ_0022

Abort propagation

implemented

FEAT_0013

REQ_0023

Conditional inclusion

implemented

FEAT_0013

REQ_0030

Subscriber deadline detection

implemented

FEAT_0014

REQ_0031

Per-execute timing visibility

implemented

FEAT_0014

REQ_0040

Core-affinity assignment

implemented

FEAT_0015

REQ_0041

SCHED_FIFO priority on Linux

implemented

FEAT_0015

REQ_0050

Signal-driven shutdown

open

FEAT_0016

REQ_0051

Programmatic shutdown wakeup

implemented

FEAT_0016

REQ_0060

No heap allocation in dispatch

implemented

FEAT_0017

REQ_0061

Statically-sized task pool

open

FEAT_0017

REQ_0062

Pre-allocated error slot

implemented

FEAT_0017

REQ_0063

Wait-free completion signalling

open

FEAT_0017

REQ_0070

Per-task overrun fault transition

implemented

FEAT_0018

REQ_0071

Executor-wide overrun fault transition

implemented

FEAT_0018

REQ_0072

Fault-handler item dispatch

implemented

FEAT_0018

REQ_0073

Fault state observability

implemented

FEAT_0018

REQ_0080

Mode lifecycle

open

FEAT_0019

REQ_0081

Mode transition triggers

open

FEAT_0019

REQ_0082

Per-mode task gating

open

FEAT_0019

REQ_0083

Mode change observability

open

FEAT_0019

REQ_0090

Process-restart persistence

open

FEAT_0020

REQ_0091

Memory-mapped backing

open

FEAT_0020

REQ_0092

Crash-atomic checkpoints

open

FEAT_0020

REQ_0093

Recovery status reporting

open

FEAT_0020

REQ_0100

Per-task latency percentiles

implemented

FEAT_0021

REQ_0101

Per-task maximum jitter

implemented

FEAT_0021

REQ_0102

Per-task overrun counter

implemented

FEAT_0021

REQ_0103

Statistics query API

implemented

FEAT_0021

REQ_0104

Allocation-free telemetry update

implemented

FEAT_0021

REQ_0105

Per-task exact min/max execute duration

implemented

FEAT_0021

REQ_0106

Per-task deadline lateness

implemented

FEAT_0021

REQ_0107

Per-task scan index and faulted-scan emission

implemented

FEAT_0021

REQ_0110

Documented worst-case jitter

draft

FEAT_0022

REQ_0111

Cyclictest-style benchmark harness

draft

FEAT_0022

REQ_0112

Documented reproducer procedure

draft

FEAT_0022

REQ_0113

Harness consumes runtime telemetry

draft

FEAT_0022

REQ_0120

Adapter-driven I/O

open

FEAT_0023

REQ_0121

Out-of-tree driver crates

open

FEAT_0023

REQ_0122

Protocol-neutral runtime

open

FEAT_0010

REQ_0123

Framework-invariant violation triggers fail-fast

draft

FEAT_0024

REQ_0124

User-item panic is contained, not a fail-fast

implemented

FEAT_0024

REQ_0125

User-registered fatal handler

draft

FEAT_0024

REQ_0268

Absolute-grid cyclic dispatch (bounded long-run lateness)

implemented

FEAT_0011

REQ_0269

Run-loop immunity to spurious wait interruptions

implemented

FEAT_0011

REQ_0274

Tight dispatch-thread timer slack

implemented

FEAT_0011

REQ_0840

Per-task skipped-slot count

implemented

FEAT_0021

REQ_0851

Exact-extreme SLO conformance gate

implemented

FEAT_0021

REQ_0852

Sub-octave percentile precision

draft

FEAT_0021

REQ_0854

At-most-one borrowed-job submit per barrier phase

implemented

FEAT_0017

Cross-cutting traceability

Every requirement in this chapter :satisfies: exactly one parent feature; every sub-feature :satisfies: PLC runtime heart on iceoryx2 (FEAT_0010). The needtables on this page and on PLC runtime — architecture will populate as spec artefacts are authored.

Used filter: types(feat)

ID

Title

Status

Satisfies

FEAT_0010

PLC runtime heart on iceoryx2

open

FEAT_0011

Cyclic scan execution

open

FEAT_0010

FEAT_0012

Event-driven I/O dispatch

open

FEAT_0010

FEAT_0013

Deterministic logic sequencing

open

FEAT_0010

FEAT_0014

Cycle-time watchdog

open

FEAT_0010

FEAT_0015

Real-time worker scheduling

open

FEAT_0010

FEAT_0016

Cooperative shutdown

open

FEAT_0010

FEAT_0017

Bounded-time dispatch

open

FEAT_0010

FEAT_0018

Cycle-overrun fault primitive

open

FEAT_0010

FEAT_0019

Mode / state-machine framework

open

FEAT_0010

FEAT_0020

Retentive state

open

FEAT_0010

FEAT_0021

Scan-cycle observability

open

FEAT_0010

FEAT_0022

PREEMPT_RT validation harness

open

FEAT_0010

FEAT_0023

Fieldbus integration interface

open

FEAT_0010

FEAT_0024

Framework internal-fault model

open

FEAT_0010

Safety refinements

The PLC runtime (taktora-executor) carries four TSRs from the SEooC safety concept (see Technical Safety Concept — TSRs):