ContentHub
20251119-OPC-UA#1-Server-DE.mp4
37 views
View transcript
Hallo, in diesem WAGO-Tutorial zeigen wir, wie man in CODESYS 3.5 einen OPC UA Server konfiguriert, damit ein Client eine Verbindung zu ihm aufbauen kann. Wir verwenden hier einen PFC 200 mit Firmware 30, der dann unser OPC UA Server werden soll. Den Client simuliere wir in diesem Video mit dem Softwaretool UaExpert. Wir öffnen zunächst das Web Based Management des Controllers. Da wir in diesem Video ausschließlich mit einer unverschlüsselten und anonymen OPC UA Kommunikation arbeiten, also ohne Zertifikate, Benutzername und Passwort, müssen wir dies im Web Based Management des Controllers erst freigeben. Im Tab Fieldbus, im Menü OPC UA finden wir den Bereich OPC UA Server Security Settings. Hier muss der Haken bei Anonymous Access gesetzt sein. Zudem ist hier der Hinweis, dass dafür zusätzlich die Port Authentifikation der Runtime deaktiviert werden muss. Diese befindet sich im Menü Configuration, Ports and Services bei den PLC Runtime Services, wir nehmen das Häkchen raus und bestätigen mit Submit. Wir starten in CODESYS 3.5 mit einem neuen Standardprojekt. Die Verbindung zum Controller wurde hergestellt und die Module am K-Bus sind gescannt und hinzugefügt. In OPC UA gibt es zwei Arten der Kommunikation. Entweder über den Kommunikationsverwalter oder über die Symbolkonfiguration. Beides wird im Server definiert und konfiguriert. Wir starten mit dem Kommunikationsverwalter, was der etwas modernere Kommunikationsweg ist, später im Tutorial zeigen wir aber auch den Weg über die Symbolkonfiguration. Wir öffnen das Rechtsklick Menü der Applikation und finden unter „Objekt hinzufügen“ den „Kommunikationsverwalter“, den wir hinzufügen. Im Rechtsklickmenü „des Kommunikationsverwalters“ finden wir unter „Objekt hinzufügen“ den OPC UA Server. Mit OPC UA Server wird der Server eingerichtet. Solange wir, wie in diesem Tutorial, lediglich Variablen schreiben und lesen möchten, reicht diese Option aus. Da OPC UA nicht nur ein Protokoll ist, sondern ein Modellierungsstandard, gibt es hier auch die Option: „OPC UA Informationsmodell“ mit dem sich vor- oder benutzerdefinierte Informationsmodelle integrieren lassen. Dies findet meist Verwendung, wenn es branchenspezifische Vorgaben gibt, die über die Bereitstellung von Variablen hinaus gehen und z.B. hierarchische Objektstrukturen, Methoden Aufrufe oder Typendefinitionen mit bereitgestellt werden sollen. Wir belassen es hier aber beim OPC UA Server. Der OPC UA Server wurde hinzugefügt und wir finden im Server die Symbolgruppe. Hier können wir jetzt die Variablen hinzufügen, die als OPC UA Tag bereitgestellt werden sollen. Wir haben in unserem Projekt noch keine Variablen, deswegen legen wir noch schnell welche an. Zunächst ganz einfach eine BOOL Variable, die dem Digitalen Eingang 1 zugewiesen ist. Damit diese später auch angezeigt wird, rufen wir die Variable im Programmfenster einmal auf. Und eine Integer Variable, die wir einfach mit jedem Rechenzyklus um 1 addieren und so hochlaufen lassen. Wir laden das Programm in den Controller und starten ihn. Die Integer Variable läuft wie erwartet hoch und wenn wir auf den ersten digitalen Eingang 24V geben, wird auch xDI1 TRUE. Zurück in der Symbolgruppe des OPC UA Servers, aktualisieren wir einmal hier oben die Ansicht, und finden jetzt unter der Application: PLC_PRG die beiden angelegten Variablen. Per Drag and Drop ziehen wir diese einfach in die Symbolgruppe und fertig. Hier hinten können wir noch die Zugriffsrechte für jede Variable definieren. Die Standardeinstellung ist Lesen und Schreiben, aber z.B. bei der Variable für den digitalen Eingang, macht in unserem Aufbau ein Schreibzugriff wenig Sinn, daher setzten wir diesen auf „Lesen“. Wenn wir das Programm in den Controller laden und diesen Starten, werden die Variablen vom Controller über OPC UA bereitgestellt. Jetzt wollen wir die Werte mit dem Tool UaExpert empfangen. Mit dem Plus legen wir einen neuen Server an, das Add Server Fenster öffnet sich und unter Custom Discovery können wir mit einem Doppelklick die URL des Servers angeben. Wichtig hierbei ist, dass die URL mit opc.tcp:// beginnt, dann folgt die IP-Adresse des Controllers, gefolgt von dem OPC UA Standard Port: 4840. Ist im Netzwerk eine DNS-Auflösung möglich, kann hier auch der Hostname eingetragen werden. Der Server wurde gefunden und auch die MAC-Adresse wird angezeigt. Klappen wir diesen auf, werden zwei Serververbindungen angezeigt und wir wählen die unterste aus, die mit der IP-Adresse, da wir in unserem kleinen Testnetzwerk keinen DNS Server haben. Im Bereich Address Space finden wir unter Objects auch den Ordner Symbolgruppe wieder, in der die beiden Variablen stehen. Per Drag and Drop ziehen wir diese in den Bereich Data Access View – die Integer Variable zählt hoch, natürlich mit einem leichten Delay, und wenn wir 24V auf den Digitaleingang am Controller geben, wird auch hier xDI1 TRUE. Das war der Weg über den Kommunikationsverwalter, jetzt starten wir das Ganze mit der Symbolkonfiguration. Beide Wege funktionieren, für einen Testaufbau, auch parallel, somit können wir die Symbolkonfiguration einfach in unser bestehendes Project unter Applikation hinzufügen. Für ein reales System empfehlen wir unbedingt sich für einen Weg entscheiden, da zum einen der sichere Betrieb nicht sichergestellt ist und das Projekt wird unnötig kompliziert. Im Popup Fenster, ist wichtig das der Haken bei OPC-UA Funktionalität gesetzt ist, was aber auch die Standardeinstellung ist. Im Fenster Symbolkonfiguration klicken wir einmal auf „Erstellen“ und wir können jetzt markieren, welche Variablen über die Symbolkonfiguration bereitgestellt werden sollen. Hier kann man auch alle Variablen auswählen, jedoch muss man insbesondere bei großen Projekten aufpassen, nicht auf einmal mit dem Häkchen mehrere Tausend Variablen freizugeben. OPC UA ist zwar ein sehr Leistungsstarker Kommunikationsweg, aber irgendwann sind auch hier die Grenzen erreicht. Das war es schon und wir können im UA Expert die Werte empfangen. Die Variablen der Symbolkonfiguration finden wir im Baum Server, dann unter unserm WAGO-Controller, Application, Programs und PLC_PRG. Die Variablen noch in die Data Accsess View ziehen und wir empfange die Werte über die Symbolkonfiguration – parallel zum Kommunikationsverwalter. Die Integer Variable zählt hoch und auch der xDI1 geht auf TRUE, wenn wir den ersten Digitalen Eingang beschalten. Wenn wir die Spalte der Node ID einmal größer ziehen, sieht man hier einen der Unterschied zwischen den beiden Kommunikationswegen. Bei der Symbolkonfiguration wird die Node ID lesbar in Klarnamen angezeigt. Bei dem Kommunikationsverwalter wird die Node ID als „opaque“ erzeugt, also ein binär codiertes Format, das keine semantischen Informationen enthält. Opaque ist Teil des OPC-UA Standards und dient der Stabilität und Eindeutigkeit, da somit die Node ID unabhängig von symbolischen Namen ist, die sich ändern können. Außerdem verbessert sich die Performance, da keine langen Strings übertragen werden müssen. Möchte man mit dem Kommunikationsverwalter die Node ID statt des Opaque Formats als String bereitstellen ist das auch möglich, allerdings bleibt die angezeigt Node ID gleich nur der Typ ändert sich. Dafür kann man hier oben in der Symbolgruppe einfach den Haken bei „Node-IDs als (base64-kodierte) Strings schreiben“ setzten. Nachdem der Controller und die Kommunikation wieder gestartet ist, die geänderten Variablen in die Data Access View gezogen wurden, empfangen wir im UA Expert über beide Kommunikationswege die Node ID, als String. Damit sind wir am Ende vom Tutorial, wie man in CODESYS 3.5 einen OPC UA Server konfiguriert, damit ein Client eine Verbindung zu ihm aufbauen kann. Hinterlasst uns gerne einen Daumen hoch, wenn euch das Video geholfen hat, abonniert den Kanal und meldet euch im WAGO Support Center, wenn ihr noch Fragen habt.