SPS-sichere KI: Architektur für ML-Inferenz an der Linie ohne Taktzeitverlust und ohne Cloud-Abhängigkeit
Das Problem
Die meisten KI-Pilotprojekte in der Produktion scheitern nicht am Modell, sondern an der Integration: Eine SPS verlangt deterministische Reaktionszeiten und ein klares Fehlerverhalten, während ein ML-Modell probabilistische Entscheidungen mit variabler Latenz liefert. Wer „mal eben“ ein Python-Skript neben die Linie stellt, riskiert Taktzeitrisse, falsch-positive Ausschleusungen und Audit-Probleme. Und: In vielen Werken sind Cloud-Verbindungen aus Datenschutz- und Souveränitätsgründen keine Option. Dieser Artikel beschreibt eine praxiserprobte Architektur, mit der ML-Inferenz an der Linie in bestehende SPS-Umgebungen integriert wird – on-premise, deterministisch und revisionssicher.
Kernanforderungen aus der Praxis
Bevor eine Architekturskizze Sinn ergibt, müssen die zwingenden Rahmenbedingungen klar sein. Typisch begegnen uns:
- Harte Latenzbudgets: End-to-End (Trigger bis Aktor) im Bereich 10–100 ms je nach Prozess.
- Determinismus: Worst-Case-Latenz ist wichtiger als der Mittelwert.
- Fail-safe-Verhalten: Bei Fehlern muss das System in einen sicheren, definierten Zustand übergehen (z. B. Ausschleusung, Stopp, manuelle Prüfung).
- Versionierbarkeit und Auditierbarkeit: Jede Entscheidung muss auf Modellversion, Datenrevision und Konfiguration rückführbar sein.
- Offline-Betrieb: Keine Abhängigkeit von externen Cloud-Diensten; Netzwerkisolierung ist häufig gegeben.
- Einfache SPS-Integration: Klare, primitive Signale statt komplexer KI-„Magie“ auf der SPS.
Architekturüberblick: ML als deterministisch eingehauster Sensor
Die zentrale Idee: Behandeln Sie ML wie einen Sensor mit bekannter Charakteristik und klar definierten vertraglichen Schnittstellen (Timing, Daten, Fehlerbilder). Die Intelligenz läuft auf einem Edge-IPC, die SPS behält die Prozesshoheit.
Komponenten und Verantwortlichkeiten:
- SPS/PLC (Safety bleibt bei der SPS):
- Taktgeber, Trigger, Aktorik
- Einlesen einfacher Qualitäts- oder Anomalie-Flags
- Umsetzung der Sicherheitslogik (z. B. „Zwei-Kanal-Freigabe“, Safe Torque Off)
- Edge-IPC für ML-Inferenz:
- Kamera-/Sensor-Anbindung und Vorverarbeitung
- Inferenz-Pipeline (beschleunigt, quantisiert, deterministisch begrenzt)
- Entscheidungslogik (Thresholds, Hysterese, Ensembling)
- Watchdog/Heartbeat und deterministische Fallbacks
- Kommunikationsschicht:
- OPC UA PubSub oder Client/Server für strukturierte Daten
- Alternativ: PROFINET/IO für binäre, echtzeitnahe Qualitätsbits
- MQTT intern für Eventing in IT-Systeme (MES/QMS), aber nicht für die SPS-Echtzeit
- Zeitbasis:
- Einheitliche Zeitsynchronisation (z. B. PTP) zwischen Kamera, Edge-IPC und SPS, damit Triggers und Entscheidungen eindeutig zugeordnet werden können.
- Datenhaltung und Governance:
- Lokales Artefakt-Repository (Modelle, Konfigurationen) mit Signierung
- Audit-Logs pro Entscheidung (Timestamp, Modellhash, Konfidenz, Input-Metadaten)
- Ringpuffer für Rohdaten-Snippets zur späteren Ursachenanalyse
Datenfluss und Timing: Vom Trigger zur Aktion
Ein typischer Zyklus in der visuellen Inspektion:
1) Trigger von der SPS:
- Digitale Flanke oder OPC-UA-Event mit Werkstück-ID und Geometrievariante.
- Gleichzeitig Start des Taktzeit-Budgets, z. B. 50 ms.
2) Bildaufnahme und Vorverarbeitung:
- Kamera-Trigger synchron zur Fördertechnik; Belichtungszeit im niedrigen ms-Bereich.
- Zero-Copy-Transfer in GPU/Accelerator falls verfügbar.
- Standardisierung (Crop, Normalize, Farbkonstanz, eventuelle Entzerrung).
3) Inferenz:
- Laufzeitoptimiertes Modell (z. B. quantisiert auf INT8, kompiliert für Ziel-HW).
- Single-sample Inferenz statt Micro-Batching, um Latenzspitzen zu vermeiden.
- Latenzfenster und Abbruchkriterien (z. B. 8 ms Budget, harte Timeouts).
4) Entscheidungslogik:
- Score -> boolesches Urteil via konfigurierbarem Threshold, Hysterese oder Kostenmatrix.
- Optionale Heuristik-Checks (z. B. Area- oder Shape-Constraints), die deterministisch sind.
5) Rückmeldung an die SPS:
- Quality_OK (BOOL), Confidence (REAL), Model_Version (STRING kurz) werden atomar bereitgestellt.
- Handshake-Protokoll: SPS fordert Ergebnis für Trigger-N an, IPC bestätigt mit N und Status. Kein Ergebnis -> Default-to-Safe.
6) Aktorik:
- SPS steuert Ausschleuser/Stopper basierend auf Quality_OK.
- Safety-Funktionen bleiben vollständig in der SPS/Safety-PLC.
Timing-Tipps aus der Praxis:
- Budgetieren Sie jede Stufe konservativ. Rechnen Sie Puffer für Garbage Collection, OS-Jitter und IO-Latenzen ein.
- Eliminieren Sie nicht-deterministische Pfade: Kein On-the-fly-Download von Assets, kein wechselndes Pre-/Postprocessing.
- Warmlauf-Phase: Laden und „primen“ Sie das Modell; die ersten 10–50 Inferenzläufe sind häufig langsamer.
Kommunikationsmuster, die funktionieren
Die Kommunikationsschnittstelle zur SPS ist der kritischste Teil, nicht das Modell.
- Minimalistische Signale: Führen Sie die Entscheidung auf wenige Signale zurück:
- Quality_OK (BOOL)
- Confidence (REAL)
- Result_ID (UINT)
- Model_Version_Short (STRING, z. B. Git-Hash gekürzt)
- Handshake:
- SPS setzt Request_ID = N, IPC schreibt Result_ID = N, Status = OK/FAIL, Quality_OK, Confidence.
- SPS quittiert und friert den Datensatz bis zum nächsten Request ein.
- Heartbeat:
- IPC toggelt ein Heartbeat-Bit in festem Takt (z. B. 10 Hz). Ausfall -> SPS auf sicheren Pfad.
- Zeitfenster:
- Definieren Sie hart: Wenn innerhalb X ms kein Ergebnis, dann Default-to-Safe (z. B. Ausschleusung).
Determinismus erzwingen: Inferenz „einhegen“
ML ist probabilistisch. Der Produktionsprozess darf es nicht sein. Maßnahmen:
- Ressourcen-Pinning:
- Dedizierte CPU-Kerne/NUMA-Zone für Inferenz; Prioritäten und Affinities setzen.
- Fixed Paths:
- Vor- und Nachverarbeitung in C++ oder anderweitig ohne JIT/Interpreter-Overhead; keine dynamischen Graphänderungen.
- Pre-Allocation:
- Puffer, Tensoren und DMA-Routen statisch anlegen; Ringpuffer für Frames.
- Grenzwerte und Timeouts:
- Maximal erlaubte Inferenzzeit; bei Überschreitung verwerfen und sicher handeln.
- Model Cards und Konfig-Sperre:
- Modell- und Konfigurationsparameter sind schreibgeschützt zur Laufzeit; Änderungen nur über einen freigegebenen Rollout-Prozess.
Qualitätssicherung und Observability vor Produktionsstart
Bevor das System in die aktive Steuerkette eingreift: