Adsify
Open Source, TwinCAT ADS, C#, Industrial Automation, REST API

Adsify

Eine REST API die Beckhoff TwinCAT ADS kapselt. HTTP rein, SPS-Daten raus. Authentifizierung, Rate Limiting und Echtzeit-Subscriptions inklusive.

Beschreibung

Adsify ist eine REST API die vor Beckhoff TwinCAT ADS sitzt. SPS-Variablen werden zu HTTP-Endpoints. Man authentifiziert sich per JWT, ruft eine URL auf und bekommt JSON zurück. Keine ADS-Client-Bibliothek, kein AMS-Routing-Kopfschmerz, kein Binärprotokoll im Anwendungscode.

Das Problem ist simpel: jedes Team das SPS-Daten braucht, schreibt seine eigene Brücke. Ein Python-Skript hier, ein Node-Service da, jedes mit eigenem Sicherheitsmodell (oder keinem). Adsify ersetzt das alles durch eine API die Authentifizierung, Autorisierung, Rate Limiting und Connection Pooling mitbringt.

Was es kann:

  • Variablen lesen und schreiben: GET /api/plcs/{plcId}/variables/MAIN.nSpeed liefert JSON. PUT schreibt zurück. Batch-Operationen für bis zu 100 Variablen gleichzeitig.
  • Symbole browsen: Den Symbolbaum der SPS traversieren, nach Namen suchen, Typinformationen abrufen. Wofür man sonst TwinCAT XAE braucht.
  • Echtzeit-Benachrichtigungen: Variablenänderungen per Server-Sent Events oder WebSocket (SignalR) abonnieren. Shared Subscriptions — zehn Clients die dieselbe Variable beobachten nutzen eine ADS-Notification.
  • EtherCAT-Diagnose: Master-Status, Slave-Health, CRC-Fehler und Topologie überwachen. Dieselben Daten wie TE2000, über HTTP.
  • MCP-Server: Eingebauter Model Context Protocol Endpoint. Ein KI-Assistent kann die SPS per natürlicher Sprache abfragen.
  • Symbol Guards: Allowlist oder Denylist welche Variablen geschrieben werden dürfen. Glob-Patterns. Weil nicht alles von einem Browser aus schreibbar sein sollte.
  • Security by Default: JWT-Authentifizierung, rollenbasierte Zugriffskontrolle, Per-SPS-Autorisierung, Value Constraints mit Min/Max-Validierung, Rate Limiting pro Benutzer und Endpoint, und Security Headers von Haus aus. Die API lehnt ungültige Schreibzugriffe ab bevor sie die SPS erreichen.

Läuft auf .NET 8/9/10, bringt einen eingebetteten ADS-Router mit sodass kein TwinCAT auf dem API-Host installiert sein muss, und funktioniert unter Linux.

Docs: https://patdhlk.com/adsify

Tech-Stack

  • C# / ASP.NET Core
  • Beckhoff TwinCAT ADS
  • JWT / OIDC (OAuth2)
  • SignalR (WebSocket)
  • Server-Sent Events
  • Model Context Protocol (MCP)
  • EtherCAT