taktwerk
taktwerk runs compiled models at a fixed step on Linux, beside or on a PLC, and exchanges their signals over OPC UA.
- Models are FMI 3 or FMI 2 co-simulation FMUs, or plain C libraries described by a small descriptor. A model is size-generic; an instance binds its sizes.
- The engine owns a process image. A real-time thread steps every model on absolute deadlines and reads a snapshot of the image at each tick; connectors sync the image with the outside in the background.
- An own OPC UA server exposes every signal, the engine status and a heartbeat, so any
OPC UA client doubles as a UI.
taktwerk tuiis one. - One TOML project file per engine describes models, instances, wiring and connectors.
What it is not
- Not hard real time: a fixed step on stock Linux, with optional
SCHED_FIFO, CPU pinning and locked memory. Jitter is measured on the target, never assumed. - Not a safety controller: models run in the engine’s process. Whoever consumes the outputs, typically the PLC, owns the safe state once the heartbeat stops (see Concepts).
Where to go next
- Getting started: build, scaffold, check and run a project.
- Concepts: process image, ticks, instances, wiring, staleness, fail-stop.
- Making a model taktwerk-compatible: for model developers.
taktwerk is licensed under MIT or Apache-2.0 and published on crates.io.