
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.nSpeedliefert JSON.PUTschreibt 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


