taktwerk
Runs compiled models (FMI co-simulation FMUs or plain C libraries) at a fixed step on Linux, beside or on a PLC. The engine owns a process image, serves it over its own OPC UA server, and syncs it with other systems through connectors.
Guide: labinetix.github.io/taktwerk, for users and model developers.
flowchart LR
subgraph taktwerk
S[Step thread<br/>fixed period] <--> PI[(Process image)]
PI <--> SRV[OPC UA server]
PI <--> C[OPC UA client connector]
end
M[FMU / C library] --- S
C <--> PLC[PLC]
SRV <--> UI[taktwerk tui · any OPC UA client]
PI <--> H[HTTP API]
H <--> WB[workbench · browser]
Getting started
A C library becomes a model package with taktwerk import-header model.h -o taktwerk-model.toml: read as confirmed when the header follows the recommended shape, proposed
for review otherwise. A package leaves as a standard FMI 3 FMU with taktwerk fmu-wrap.
Runnable projects: examples (an FMU, a C controller, a C filter bank in the
recommended shape, a C library behind a single entry point, a closed loop, a recorder, and a
systemd unit). Lossless per-tick history of selected signals:
recording.
Workbench: a desktop app and web UI over a project folder: the plan, local runs with live
signals and editable inputs and tunables, run records with two-run comparison, campaign results.
It needs a build with the ui feature (desktop/ wraps it as an app):

Design: DESIGN.md.
Licensed under either of MIT or Apache-2.0 at your option.