OPC UA mit Beckhoff TwinCAT verbinden
| Produkt | Beckhoff TwinCAT |
|---|---|
| Kategorie | PLC |
| OPC-UA-Rolle | Client und Server |
TwinCAT stellt OPC UA über die Funktion TF6100 bereit: einen Server, einen Client und ein Gateway, konfiguriert auf dem Zielsystem und nicht im SPS-Programm. Symbole werden über Attribut-Pragmas im Code veröffentlicht, was die veröffentlichte Schnittstelle zu einer Entscheidung zur Übersetzungszeit macht. TF6100 ist eine lizenzpflichtige Funktion, klären Sie die Lizenzierung also mit Beckhoff.
Bevor Sie starten
- Die OPC-UA-Funktion TF6100, installiert auf dem Zielgerät und dafür lizenziert. Die Lizenzierung auf Beckhoff-Zielgeräten ist eine echte Hürde; klären Sie vor der Inbetriebnahme, welche Lizenz Sie brauchen und wie sie eingespielt wird.
- Ein TwinCAT-Projekt, das Sie bauen und aktivieren können, denn die Symbolveröffentlichung wird über Attribute im Quelltext gesteuert und wird bei der Aktivierung wirksam.
- Zugriff auf die OPC-UA-Serverkonfiguration des Zielgeräts, über das Configurator-Werkzeug oder die Konfigurationsdatei des Servers, dazu Dateisystemzugriff auf dessen PKI-Verzeichnis für die Zertifikatsarbeit.
- Eine Entscheidung, welchen Laufzeit-Port Sie bereitstellen. Ein TwinCAT-Zielgerät beherbergt häufig mehr als eine SPS-Laufzeit, und jede ist ein eigener ADS-Endpunkt, den der Server veröffentlichen kann.
Die Einrichtung
- TF6100 auf dem Zielgerät installieren und lizenzierenDie Funktion muss auf dem Rechner vorhanden und lizenziert sein, der den Server bereitstellt, und das ist bei einem Beckhoff-IPC oder Embedded-Controller die Steuerung selbst, nicht das Engineering-Notebook. Prüfen Sie den Lizenzstatus, bevor Sie irgendetwas anderes debuggen.
- Markieren Sie die Symbole, die veröffentlicht werden sollenDie Veröffentlichung erfolgt per Opt-in über Attribut-Pragmas in der Deklaration, zum Beispiel {attribute 'OPC.UA.DA' := '1'} über einer Variablen, einer Struktur oder einer ganzen globalen Variablenliste, wobei ein begleitendes Zugriffsattribut festlegt, ob das Symbol lesbar, schreibbar oder beides ist. Setzen Sie das Pragma auf eine GVL oder eine Struktur, werden deren Elemente veröffentlicht, und so halten Sie die Schnittstelle klein und überprüfbar.
- Konfiguration neu übersetzen und aktivierenDie Pragmas werden in die Symbolinformation einkompiliert, deshalb sind ein Rebuild und eine Aktivierung nötig, bevor sich der Adressraum ändert. Wer Pragmas bearbeitet und sich dann wundert, warum der Browse-Baum unverändert ist, hat fast immer genau das übersprungen.
- Den Server auf die Laufzeitumgebung richten und den Namespace prüfenKonfigurieren Sie, welches ADS-Gerät und welchen Runtime-Port der Server veröffentlicht, und browsen Sie dann den entstehenden Baum. Lesen Sie das NamespaceArray und notieren Sie die URI des Runtime-Namespace; diese URI, nicht der Index, gehört in Ihre Client-Konfiguration.
- Den Zertifikatsaustausch auf dem Zielsystem abschließenDer Server unterhält ein PKI-Verzeichnis mit den üblichen Ordnern trusted, issuer, rejected und CRL. Verbinden Sie sich einmal mit Ihrem Client, lassen Sie den Versuch scheitern, verschieben Sie dann das Client-Zertifikat auf dem Zielsystem vom Ordner rejected in den Ordner trusted und starten Sie den Server neu, falls er die Vertrauensliste zwischenspeichert. Vertrauen Sie dem Serverzertifikat auch auf der Client-Seite.
- Importieren Sie ein Informationsmodell, wenn die Maschine eines hatWo der installierte TF6100-Build den Nodeset-Import unterstützt, laden Sie das NodeSet2 der Companion Specification und binden Sie veröffentlichte Symbole an die Variablen des Modells, damit der Client standardisierte Typen statt eines ADS-Symbolbaums sieht. Klären Sie den unterstützten Importmechanismus für Ihren Build, bevor Sie darauf aufbauen.
- Subscriptions an der ADS-Realität ausrichtenDer Server tastet die Laufzeitumgebung über ADS ab, Ihr OPC-UA-Abtastintervall ist also durch das begrenzt, was diese Schicht und der Taskzyklus liefern können. Setzen Sie das Publishing-Intervall auf die Taktung, die Ihr Konsument braucht, wenden Sie Deadbands auf Analogwerte an und lesen Sie die revidierten Intervalle aus, die der Server zurückgibt.
Wie der Adressraum aussieht
Der Standard-Adressraum bildet den ADS-Symbolbaum der veröffentlichten Laufzeit ab: eine Hierarchie aus Gerät und Laufzeit-Port, darunter die globalen Variablenlisten und Programminstanzen, darunter die von Ihnen markierten Variablen, wobei Strukturelemente so verschachtelt sind, wie sie deklariert wurden. Identifier sind Strings aus dem Symbolpfad, eine Variable erscheint also unter dem voll qualifizierten Namen, den sie im Code hat. Das macht die Zuordnung lesbar, koppelt Ihren Client aber an die Namensgebung des Codes. Neuere Builds zeigen zusätzlich einen Ordner im Stil eines Gerätemodells, abgeleitet aus dem Device Information Model. Wurde ein Nodeset importiert und gebunden, erscheinen standardisierte Companion-Typen neben oder anstelle des Symbolbaums, und das ist die Variante, auf der Sie bei jeder Integration bestehen sollten, die Sie wiederverwenden wollen.
Die Fallen
- TF6100 ist lizenzpflichtig, und die Lizenz liegt auf dem Zielsystem. Das ist ein Beschaffungs- und Terminrisiko und kein technisches, und es ist dieselbe Art von Falle wie die Serveroption eines SPS-Herstellers: Klären Sie die Lizenz mit Beckhoff, bevor Sie sich auf Termine festlegen.
- Eine Variable umzubenennen, sie zwischen GVLs zu verschieben oder eine Struktur zu ändern, ändert den String-Identifier, und der Client bricht mit BadNodeIdUnknown ab, obwohl sich an der Maschine nichts geändert hat. Behandeln Sie den per Pragma markierten Symbolsatz als veröffentlichte API mit einem Änderungsprozess.
- Namespace-Indizes werden beim Serverstart vergeben und können sich verschieben, wenn sich der veröffentlichte Laufzeitumfang oder die Serverkonfiguration ändert. Lösen Sie sie beim Verbindungsaufbau über das NamespaceArray auf.
- Das Zertifikatsvertrauen ist hier wie überall die größte praktische Hürde, mit dem Zusatz, dass der Trust Store ein Verzeichnis auf der Steuerung ist. Jemand braucht zur Inbetriebnahme Dateisystemzugriff auf diese Steuerung, und diese Person ist oft nicht die, bei der die OPC-UA-Aufgabe liegt.
- Das Schreibzugriffsattribut ist von der Veröffentlichung getrennt. Ein nur lesend veröffentlichtes Symbol ist sichtbar, nimmt eine Schreibanforderung an und liefert einen Bad-Status zurück, prüfen Sie also immer den zurückgegebenen StatusCode.
- Der Server liest über ADS, also kann ein Symbol, das einmal je Task-Zyklus aktualisiert wird, nicht schneller abgetastet werden als dieser Zyklus, gleich welches Intervall Sie anfordern. Schnell angeforderte Intervalle kaufen CPU-Last, keine Auflösung.
- Pauschal veröffentlichte Strukturen können als strukturierte Werte ankommen, die Ihr Client decodieren muss. Vergewissern Sie sich, dass Ihr Client den Typbeschreibungsmechanismus des Servers verarbeiten kann, bevor Sie auf Strukturen statt auf flache Variablen setzen.
OEE-Daten daraus gewinnen
TwinCAT ist eine der besseren SPS-Plattformen, um OEE-Daten zu entnehmen, weil der Pragma-Mechanismus es dem Maschinenbauer erlaubt, eine kleine, bewusst gewählte Schnittstelle zu veröffentlichen: eine Zustandsvariable, einen Gut- und einen Ausschusszähler, einen Fehler- oder Ursachencode, einen Zyklus-Zeitstempel. Bestehen Sie auf dieser Schnittstelle statt auf einem Massen-Symboldump. Stückzahlen müssen in der SPS als Zähler geführt werden; die Flankenerkennung eines Booleans mit OPC-UA-Abtastraten verpasst kurze Zyklen, weil Ihr Sampling durch den Task-Zyklus und das Publishing-Intervall begrenzt ist. Hat der Maschinenbauer ein Machinery-Nodeset importiert und Symbole an eine standardisierte State Machine und einen standardisierten Zähler gebunden, werden Verfügbarkeits- und Stückzahl-Mapping portabel und Sie können den Client auf Maschinen anderer Hersteller wiederverwenden. Geplante Produktionszeit, Schichtkalender und Standard-Taktzeiten liegen nicht in der Steuerung.
Zuletzt geprüft am 7. September 2026 gegen OPC UA 1.05.07. OPC UA Connect ist ein unabhängiges Bildungsangebot und steht in keiner Verbindung zur OPC Foundation.