Anvil
Der Amboss
In jeder Schmiede ist der Amboss das zentrale Werkstueck — hier wird geformt, gehaertet und veredelt. Anvil ist die Laufzeitumgebung der ForgeIEC-Plattform: der Ort, an dem Quellcode auf Echtzeitausfuehrung trifft.
Anvil verwaltet den SPS-Scan-Zyklus, die Prozessabbilder und den
Datenaustausch zwischen dem SPS-Programm und den Feldbus-Bridges. Der
Laufzeit-Daemon anvild ist das Herzschlag-gebende Element jeder
ForgeIEC-Installation.
Architektur
+--------------+ +------------+ +------------------+
| | | | | |
| SPS-Programm |<------->| anvild |<------->| Modbus-Bridge |--> Feldgeraete
| (IEC Code) | gRPC | (Daemon) | Anvil | EtherCAT-Bridge |--> Antriebe
| | | | SHM | Profibus-Bridge |--> Sensoren
+--------------+ +------------+ | OPC-UA-Bridge |--> SCADA
+------------------+
<-- Anvil -->
Zero-Copy IPC
Shared Memory
Echtzeit-Scan-Zyklus
Der SPS-Kern arbeitet in einem deterministischen Scan-Zyklus:
- Eingaben lesen — Prozessabbild aus den Feldbus-Bridges uebernehmen
- Programm ausfuehren — IEC-Code abarbeiten
- Ausgaben schreiben — Ergebnisse an die Bridges verteilen
Der Zyklus laeuft mit konfigurierbarer Zykluszeit. Anvil garantiert deterministisches Verhalten ohne dynamische Speicherallokation im Hot Path.
Anvil Technology – Zero-Copy IPC
Der Datenaustausch zwischen anvild und den Protocol-Bridges erfolgt
ueber Anvil Technology — einen hochperformanten IPC-Kanal auf Basis
von Zero-Copy Shared Memory:
- Mikrosekunden-Latenz — keine Serialisierung, keine Kopien
- Lock-freie Algorithmen — kein Blockieren, kein Deadlock
- Publish/Subscribe-Modell — lose Kopplung zwischen Produzent und Konsument
- Ein Kanal pro Segment — Isolation zwischen Bussystemen
| Methode | Typische Latenz | Kopien |
|---|---|---|
| TCP Socket | 50-200 us | 2-4 |
| Unix Socket | 10-50 us | 2 |
| Anvil Technology | < 1 us | 0 |
PUBLISH/SUBSCRIBE im IEC-Programm
Anvil Technology integriert sich nahtlos in die IEC 61131-3 Programmierung:
VAR_GLOBAL PUBLISH 'Motoren'
K1_Mains AT %QX0.0 : BOOL;
K1_Speed AT %QW10 : INT;
END_VAR
VAR_GLOBAL SUBSCRIBE 'Sensoren'
Temperatur AT %IW0 : INT;
Druck AT %IW2 : INT;
END_VAR
Die PUBLISH/SUBSCRIBE-Schluesselwoerter sind eine ForgeIEC-Erweiterung des IEC 61131-3 Standards. Der Compiler erzeugt automatisch die Anvil-Anbindung. Im Editor werden die zugehoerigen VAR_ANVIL-Bloecke automatisch generiert und synchronisiert.
Bridge-Management
anvild startet, ueberwacht und verwaltet alle Feldbus-Bridges als
Subprozesse:
- Ein Prozess pro Segment — Isolation und unabhaengiger Betrieb
- Automatischer Neustart — abgestuerzte Bridges werden erkannt und neu gestartet
- Konfiguration via TOML —
config.tomldefiniert Segmente, Geraete und Verbindungsparameter - gRPC-Schnittstelle — Forge Studio steuert den Daemon remote
Kompilierung
Die Kompilierung folgt einem zweistufigen Modell:
- Workstation: Forge Studio erzeugt den C-Quellcode direkt aus dem Projektmodell — ohne externen IEC-Compiler
- Zielsystem:
anvildgeneriert ein plattformspezifisches Makefile und ruftmake(g++) auf
Auf dem Zielsystem werden lediglich make, g++, libstdc++ und
librt benoetigt, um den generierten C-Code zur Laufzeit zu
kompilieren. Es wird bewusst kein zusaetzlicher IEC-Compiler auf der
Ziel-SPS installiert.
Technische Details
| Eigenschaft | Wert |
|---|---|
| Sprache | Rust |
| Kommunikation | gRPC (tonic/prost) |
| IPC | Anvil Technology (Zero-Copy Shared Memory) |
| Konfiguration | TOML |
| Plattformen | x86_64, ARM64, ARMv7 (Linux) |
| Prozessmodell | systemd-Daemon + Subprozesse |
| Lizenz | AGPL-3.0 |
Anvil — Wo Daten zu Steuerbefehlen geschmiedet werden.