12 ms bis zum Stopp: Eine Architektur für deterministische visuelle Inline-Inspektion ohne Cloud

Das Problem
In der Qualitätskontrolle an der Linie zählt nicht der F1-Score auf PowerPoint, sondern ob die Anlage innerhalb weniger Millisekunden eine Fehlentscheidung vermeidet oder den Materialfluss rechtzeitig stoppt. Wer visuelle Inspektion in eine SPS-Logik einkoppelt, kennt die Realität: harte Latenzbudgets, Taktzeiten unter 100 ms, deterministische Reaktionspfade, Safety-Handshakes – und Null Toleranz für „Netzwerkwetter“ oder API-Rate-Limits. Dieses Stück beschreibt, wie wir visuelle Inspektion on-premise so bauen, dass sie deterministisch, auditierbar und souverän läuft: vom Kameratrigger bis zum sicheren SPS-Signal, ohne US-Cloud-Abhängigkeit und ohne „Best Effort“-Latenzen.

Warum das Thema nicht trivial ist

  • KI-Modelle sind das kleinste Problem. 80% der Ausfälle passieren in Triggering, Pufferung, Scheduling, Feldbus-Anbindung und Fehlerszenarien.
  • Latenz ist nichts ohne Determinismus. 8 ms Durchschnitt helfen nicht, wenn 1% der Zyklen 60 ms braucht.
  • Governance ist Pflicht. Jede Entscheidung muss nachvollziehbar, wiederholbar und auditierbar sein – ohne Daten das Werk zu verlassen.

1) Latenzbudget und deterministische Pfade
Bevor man über Modelle spricht, definiert man ein Latenzbudget als verbindlichen Vertrag. Ein Beispiel für ein 12–20 ms Gesamtlatenz-Ziel (Trigger bis SPS-Ausgang):

  • Kamera-Exposure und Readout: 1–4 ms (global shutter, exakter Trigger).
  • Übertragung zum Rechner: 0,2–2 ms (abhängig von Interface und Auflösung).
  • Vorverarbeitung: 1–3 ms (Crop, Normalize, Farbkorrekturen auf GPU).
  • Inferenz: 3–8 ms (kompaktes CNN, feste Inputgröße, INT8-quantisiert).
  • Entscheidungslogik + Safety-Handshakes: 0,5–2 ms.
  • SPS-Zyklus und Aktorreaktion: abhängig von Zykluszeit und Feldbus; deshalb Signalpfad möglichst parallel/synchron und „push“-basiert.

Regeln:

  • Prozentile statt Durchschnitt. 99,9%-Latenz muss im Budget bleiben.
  • Keine variable Auflösungen oder dynamische Tensor-Shapes im Produktionspfad. Variabilität erzeugt Jitter.
  • Alle Pfade, die das Budget verletzen könnten, führen deterministisch in einen sicheren Zustand (z. B. NIO/Fehlersignal statt Stille).

2) Sensorik und Zeit-Synchronisation: Trigger schlägt Polling

  • Hardware-Trigger vor Software-Timer. Kameras werden über Hardware (z. B. Lichtschranke/Encoder) getriggert. Software-Trigger erzeugt Jitter.
  • Global Shutter vor Rolling Shutter in bewegten Linien. Sonst kompensieren Sie Bewegungsartefakte mit künstlicher Komplexität.
  • Zeitbasis harmonisieren. Kamera, SPS und Rechner über einen gemeinsamen Zeitstempelmechanismus synchronisieren (z. B. PTP im Maschinenetz). Ohne konsistente Zeit ist Debugging von Grenzfällen praktisch unmöglich.
  • Beleuchtung ist Teil der Datenqualität. Konstantstromtreiber, Entkopplung von Maschinenversorgung, Strobe-Signale fest im Triggergraph verankern, um Beleuchtungsjitter zu vermeiden.

3) Datenpfad: Zero-Copy als Grundprinzip
Jede unnötige Kopie ist Latenz und Jitter.

  • Kamera-Interface wählen, das deterministische Bandbreite ermöglicht (z. B. Gigabit/10G mit deterministischer QoS, CoaXPress etc.). Entscheidend ist: keine Contention mit Office-Netzen, eigene VLAN/physische Trennung.
  • Page-locked Memory (Pinned) für Empfangsbuffer verwenden, um DMA-Transfers ohne Paging zu ermöglichen.
  • Double/Triple-Buffering auf allen Stufen: Capture → Preproc → Inferenz. Producer-Consumer mit Lock-Free-Ringbuffer; Backpressure ist explizit, Drops sind dokumentiert.
  • GPU-Pipeline ohne Roundtrips: Upload in GPU-Memory nur einmal, Vorverarbeitung als CUDA-Kernels, Inferenz im selben Stream. Host-GPU-Synchronisation nur an geprüften Barriers.
  • Keine JPEG/PNG im Produktionspfad. Komprimierung ist für Archiv, nicht für Entscheidungswege. Wenn Bandbreite knapp ist, dann sensornahe Pre-Crops.

4) Inferenz-Engine und Modellwahl: feste Formen, fixierte Pfade

  • Feste Eingangsgröße, statische Graphen. Vermeiden Sie dynamische Shape-Inferenz; Compilers (z. B. TensorRT/ONNX-Runtime-EP) danken es mit deterministischer Runtime.
  • Quantisierung auf INT8, kalibriert auf produktionsnahe Datensätze. INT8 reduziert Latenz und Bandbreite im Speicher; entscheidend ist ordentliche Kalibrierung an „schwierigen“ Samples.
  • Batchgröße 1. Latenz schlägt Durchsatz in Inline-Inspektion.
  • Wärmehaushalt im Blick: Thermal Throttling ist der versteckte Latenz-Jitter. Lüfterkurven fixieren, Gehäuse entstauben, Temperatur-Metriken loggen.
  • Algorithmische Guardrails: OOD- und Unsicherheitsindikatoren in die Entscheidungslogik integrieren (z. B. Softmax-Temperatur, Feature-Distanz zu Trainingsverteilung). Unklare Fälle deterministisch in definierten Prozess (Marker, Ausschleuser, QS-Flag) leiten – nicht „raten“.

5) SPS-Integration: harte Grenzen, klare Handshakes
95% der Fehlalarme und Aussetzer, die wir in der Praxis gesehen haben, sind SPS-Schnittstellenprobleme, nicht Modellfehler.

  • Sicheres Ausgangssignal: Für Stop/Fehler niemals TCP-Only. Entweder digitale I/O über Echtzeitkarten oder deterministischer Feldbus mit sicherheitsgerichtetem Kanal, je nach Safety-Konzept der Maschine. Die Steuerung darf nicht von Broker-Liveliness abhängen.
  • Handshake-Muster:
  • Data-Ready (KI → SPS) mit Sequenznummern.
  • Acknowledge (SPS → KI) innerhalb definierter Zykluszeit.
  • Timeout-Logik: Ausbleibende Acks setzen sicheren Default.
  • Zyklusentkopplung: Wenn die SPS mit 2–8 ms Zyklus fährt, entkoppeln wir durch einen minimalen Shaper (z. B. Shadow-Register mit letzter stabiler Entscheidung für N Zyklen), um sporadische Jitter zu glätten, ohne Latenz zu erhöhen.
  • Testbarkeit: Simulationsmodus mit deterministischen Replays von Kameraframes und SPS-Inputmustern. Ohne deterministische Replays sind Grenzfälle in der Linie nicht reproduzierbar.

6) Fehlertoleranz, Watchdogs und sichere Zustände

  • End-to-End-Watchdog: Vom Trigger bis Ausgangssignal wird jede Stufe zeitlich überwacht. Verletzung führt in sicheren Zustand (z. B. Ausschleusung statt Weitertransport).
  • Frame-Drops sind Ereignisse, keine Logs. Jede verworfene Aufnahme wird gezählt, begründet und mit Kontext persistiert (Ringspeicher der letzten N Frames mit Metadaten).
  • Heartbeats mit Signatur: KI-Prozess und SPS tauschen periodische Heartbeats aus; die SPS vertraut ausschließlich validierten Heartbeats. Kein Heartbeat, kein Gutteil.
  • E-Stop-Integration: KI-Pfade dürfen E-Stop-Signale nicht verzögern. E-Stop führt sofort zum definierten Hardwarezustand; Software fährt danach in Diagnosemodus.

7) Betriebssystem, Scheduling und Container
Die beste Pipeline scheitert an einem Systemd-Service mit Default-Prioritäten.