Beckhoff TwinCAT/ADS
ADS (Automation Device Specification) ist das Kommunikationsprotokoll, das die TwinCAT-Laufzeitumgebung von Beckhoff (Deutschland) verwendet. Es kommt vor allem auf Industrie-PCs (IPC) mit TwinCAT 2 / 3 und in EtherCAT-Master-Umgebungen zum Einsatz.
In PC-basierten Steuerungsumgebungen — Automobillinien, Halbleiterfertigung, Windkraft, Motion Control — ist ADS mit hoher Wahrscheinlichkeit im Spiel.
Eingabewerte im Registrierungsformular
| Eingabefeld | Was tragen Sie ein | Beispiel |
|---|---|---|
| IP-Adresse | IP des IPC, auf dem TwinCAT läuft | 192.168.0.80 |
| Port | ADS-TCP-Port | 48898 (Standard / Änderung nicht empfohlen) |
| Target AMS NetId (target-netid) | AMS NetId des Zielgeräts — bleibt das Feld leer, wird IP주소.1.1 automatisch verwendet | 192.168.0.80.1.1 |
| Target AMS Port (target-port) | Port der TwinCAT-Laufzeit | 851 (TwinCAT 3 PLC) / 801 (TwinCAT 2 PLC1) |
Weitere Optionen: source-netid / source-port (AMS-Kennung auf Gateway-Seite — Standard 32905),
connect-timeout / read-timeout (ms, Standard 3000). Die alten Optionsschlüssel
(ams-net-id / ams-port / target-ams-net-id / timeout-request) sind abgekündigt.
Format der AmsNetId
6 Oktette in der Form a.b.c.d.1.1. Üblicherweise handelt es sich um die IP-Adresse des IPC mit angehängtem .1.1 — maßgeblich ist jedoch die im TwinCAT System Manager angezeigte NetId. Zu finden über das TwinCAT-Symbol in der Taskleiste → Properties → AMS NetId.
Route eintragen (zwingend erforderlich)
ADS kommuniziert nur, wenn beide Seiten die NetId der Gegenstelle kennen. Ruft das Gateway die PLC erstmals auf, erscheint auf PLC-Seite der Add Route Dialog — oder die Verbindung wird automatisch abgewiesen. Tragen Sie im TwinCAT System Manager unter Routes → Add die IP / NetId des Gateways ein und prüfen Sie, ob die TwinCAT-Lizenz gültig ist.
Bei TwinCAT 3 bricht die ADS-Antwort ab, sobald die 30-Tage-Testversion abgelaufen ist. Prüfen Sie zuerst den Lizenzstatus im License Manager.
Schreibweise der PLC-Adresse im Tag
ADS unterstützt zwei Zugriffsarten.
1. Direkter Speicherbereich (Indexed)
| Schreibweise | Bedeutung |
|---|---|
M0:4 | Merkerbereich (M%), Offset 0, 4 Byte |
I0:2 | Eingangsbereich, Offset 0, 2 Byte |
Q0:2 | Ausgangsbereich, Offset 0, 2 Byte |
Format <area>:<offset>:<size>. size in Byte.
2. Symbolisch (Symbolic)
| Schreibweise | Bedeutung |
|---|---|
MAIN.fCounter | Variable fCounter des Programms MAIN |
MAIN.fCounter:REAL | mit Datentypangabe (32-Bit-Gleitkomma) |
GVL.bRunning:BOOL | bRunning aus der Global Variable List |
Für die symbolische Schreibweise muss auf PLC-Seite eine TPY-Datei (TwinCAT 2) vorliegen bzw. ein Symbol-Download (TwinCAT 3 → Build → Activate Configuration) erfolgt sein.
Zuordnung der Datenformate
| Wert in der PLC | Datenformat | Formatzusatz | Beispiel PLC-Adresse |
|---|---|---|---|
| BOOL | Boolean | (leer) | GVL.bRunning:BOOL |
| BYTE / SINT | Integer | B | MAIN.bByte:BYTE |
| INT (16-Bit) | Integer | (leer) | MAIN.nCount:INT |
| DINT (32-Bit) | Integer | DW | MAIN.nTotal:DINT |
| REAL (32-Bit-Gleitkomma) | Float | REAL | MAIN.fTemp:REAL |
| LREAL (64-Bit-Gleitkomma) | Double | LREAL | MAIN.fPos:LREAL |
| STRING(80) | String | STR[80] | MAIN.sName:STRING |
Häufige Probleme und Lösungen
| Symptom / Meldung | Mögliche Ursache | Lösung |
|---|---|---|
| „No route to host“ | Route nicht eingetragen | Gateway im TwinCAT System Manager → Routes hinzufügen |
| „Target port not found“ | AmsPort passt nicht zur Serie | TC2 = 801, TC3 = 851 erneut prüfen |
| „Symbol not found“ | Symbol-Download nicht ausgeführt | In TwinCAT 3 Activate Configuration ausführen und erneut versuchen |
| Alle Werte 0 | TwinCAT nicht in RUN, sondern im STOP- / CONFIG-Modus | Im System Manager auf RUN umschalten |
| Lizenzfehler | Testversion abgelaufen | Lizenz im License Manager erneuern |
Häufig verwendete Beispiele
| Tag-Name | PLC-Adresse | Datenformat | Formatzusatz |
|---|---|---|---|
| Betriebsflag | GVL.bRunning:BOOL | Boolean | (leer) |
| Zähler | MAIN.nCount:DINT | Integer | DW |
| Temperatur | MAIN.fTemp:REAL | Float | REAL |
| Chargenname | MAIN.sBatch:STRING | String | STR[80] |
Ausführlichere Beispiele / automatisierte Registrierung
Siehe die ADS-Beispiele unter Erweitert — REST API.