Kurzfassung Wer einen Coding-Agenten auf eine TwinCAT-Solution loslässt, bekommt erfundene Methoden, Enum-Werte und Library-APIs, die in den tatsächlich gepinnten Versionen gar nicht existieren. Das ist kein Tipproblem, sondern ein Sichtbarkeitsproblem: Die Typen stecken in .library- und .compiled-library-Archiven, die der Agent nicht öffnen kann. plcsense gibt Agenten über MCP eine korrekte, schreibgeschützte Sicht auf die Solution und jede referenzierte Library. Es läuft lokal. Early Access ist für eine kleine Zahl echter TwinCAT-Projekte offen.


Wer Cursor, Claude Code oder einen anderen Coding-Agenten schon einmal auf eine TwinCAT-Solution angesetzt hat, kennt den Fehlermodus. Man bittet ihn, Structured Text anzufassen, und er ruft selbstbewusst eine Methode auf, die es nicht gibt, erfindet einen Enum-Wert oder mischt eine API aus einer Library-Version ein, die man nie installiert hat. Das Ergebnis zu reviewen kostet am Ende mehr als das Schreiben selbst.

Das ist kein Tipproblem. Es ist ein Sichtbarkeitsproblem. Die Typen, von denen der eigene Code abhängt, liegen in referenzierten .library- und .compiled-library-Archiven. Das ist kein Quelltext, den ein Agent einfach öffnen kann, also füllt er die Lücke mit etwas Plausiblem. Structured Text ist in den Trainingsdaten außerdem dünn im Vergleich zu gängigen Sprachen, und im Prompt steht nichts darüber, welche Library-Version das Projekt tatsächlich pinnt.

plcsense gibt Agenten über MCP eine korrekte, schreibgeschützte Sicht auf die TwinCAT-Solution und jede Library, die sie referenziert.


Was es konkret tut

Vier Dinge, die Agenten heute falsch machen, beantwortet aus dem eigenen Projekt statt geraten:

  • Symbolauflösung, kein Grep. Einen Namen über POUs, DUTs, GVLs und referenzierte Libraries hinweg auf seine Deklaration auflösen, dann Implementierer und Aufrufstellen finden, inklusive der SUPER^-Override-Aufrufe, an denen die Textsuche vorbeiläuft.
  • Library-APIs ohne XAE. Liest .library- und .compiled-library-Referenzen direkt aus der Solution, sodass ein Agent die Member und Signaturen der Versionen sieht, die das Projekt tatsächlich pinnt.
  • Dokumentation, die zur Version passt. Wer mit zkdoc veröffentlicht, bekommt von plcsense die Seiten zu genau dem Release, den das Projekt referenziert, nicht den Export vom letzten Jahr. Agenten können zusätzlich Beckhoff Infosys für offizielle Hersteller-Prosa und Hardware-Specs nutzen, oder Atlassian Confluence Cloud-Spaces, die Sie für interne und OEM-Doku konfigurieren.
  • Diagnostik vor dem Commit. Structured Text validieren und Syntaxfehler in den Original-Dateikoordinaten zurückbekommen, damit ein Agent seine eigene Änderung prüfen kann, statt zu hoffen.

Der Agent ruft diese Tools über MCP auf. Hier dieselbe Antwort als CLI-Ausgabe an einer Demo-Solution:

$ plcsense tool list_plc_libraries --include_type_names true --library_name AcmeSealingLib
Solution SealingCell · 1 PLC project

SealingCell (1 library)
  AcmeSealingLib 1.0.0.0 · resolved (reference) · 4 types
    types: FB_SealHead, FB_SealJaw, E_SealMode, ST_SealRecipe

$ plcsense tool read_plc_source --symbol_name FB_SealHead
FunctionBlock FB_SealHead · __library__/FB_SealHead.st
[source=vendor_library, confidence=source_provided, library=AcmeSealingLib]

Declaration · L1-14
```iecst
FUNCTION_BLOCK FB_SealHead
VAR_INPUT
    iEnable : BOOL;
    iTemperatureSetpoint : LREAL;
END_VAR
VAR_OUTPUT
    qReady : BOOL;
    qFault : BOOL;
END_VAR
```

### Method Seal
Declaration · L16-22
```iecst
METHOD Seal : BOOL
VAR_INPUT
    iRecipe : ST_SealRecipe;
END_VAR
```

$ plcsense tool validate_plc_project
HasErrors · 1 project · 48 types · 1 error
root: ./SealingCell (from --root)

POUs/FB_Main.TcPOU
  42:9 error Unknown identifier 'SealHeadd' (SealHeadd)

Jede Antwort sagt mit, woher sie stammt.


Es läuft auf dem eigenen Rechner

plcsense ist ein lokaler Prozess, der lokale Dateien liest. Eigener Quelltext, proprietäre Libraries und Kundenprojekte werden nicht zur Analyse hochgeladen. Was den Rechner verlässt, lässt sich vollständig auflisten: ein Lizenzcheck, opt-out Telemetrie zur Tool-Nutzung ohne Code oder Symbolnamen, und opt-in Feedback, das man ausdrücklich einschalten kann. Sonst nichts.


Wann man es wirklich merkt

Vermutlich nicht beim ersten kleinen Task. Eine Zeile in einem Funktionsblock ergänzen, den man schon kennt: Da reicht das Lesen der Datei, und ein Agent, der vom Bildschirm rät, wirkt genauso gut.

Eine referenzierte Library-Type anfassen, und es kann immer noch in Ordnung aussehen, nicht weil der Agent die Library versteht, sondern weil man in TwinCAT ohnehin ständig kompiliert, und die .tmc vom letzten Build den Member-Namen und die Signatur schon korrekt am Symbolbaum haben kann, greifbereit für eine Textsuche. Was sie nicht hat, ist der Rest der Library-Oberfläche, den man noch nicht aufgerufen hat, welcher Override tatsächlich greift, wenn mehr als ein Typ dieselbe Schnittstelle implementiert, oder eine einheitliche Sicht über eine Solution mit mehr als einem PLC-Projekt.

Genau dort öffnet sich die Lücke: bei einem Rename über viele POUs hinweg, bei einer Schnittstelle mit mehr als einem Implementierer, oder bei einem Projekt, das jemand anderes geschrieben hat. find_plc_implementations und find_plc_references antworten nach Typ, nicht nach Text. Der Fehler, den plcsense abfangen soll, ist nicht die offensichtlich falsche Antwort. Es ist ein Rename, der kompiliert, während eine Aufrufstelle still unangetastet bleibt.


Was es nicht ist

plcsense liest. Der Editor schreibt, TwinCAT baut und deployed, und diese Trennung ist Absicht. Keine Inline-Completions, keine Codegenerierung, kein ADS- oder Runtime-Zugriff. plcsense soll sich später auch in Beckhoff CoAgent einbinden lassen, und dafür muss es schreibgeschützte Intelligenz bleiben, kein zweiter Editor oder Deploy-Stack.


Early Access

plcsense ist in Entwicklung. Vor dem Launch nehmen wir eine kleine Zahl echter TwinCAT-Projekte auf, um herauszufinden, was daran bricht, bevor es jemand anderes merkt. Schreibt uns, woran ihr arbeitet, welche Libraries ihr braucht und welchen Agenten ihr nutzt. Wenn es eine Solution ist, von der wir lernen können, bekommt ihr Access-Token und Lizenzschlüssel direkt von den Leuten, die das bauen. Kein Newsletter, keine Sales-Sequenz.

Early Access auf plcsense.com anfragen →