zuruck zur Themenseite

Artikel und Hintergründe zum Thema

Hochschule Kempten

Meinrad Happacher | Meinrad Happacher,

Erste Erfahrungen mit OPC UA PubSub

Codesys bietet zur Umsetzung von PubSub schon eine objektorientiert aufgebaute IEC-Bibliothek an. Die Hochschule Kempten hat jetzt einen Industrie-4.0-Demonstrator mit dem Kommunikationssystem ausgestattet. Ein erster Erfahrungsbericht.

© Hochschule Kempten

Der Demonstrator der Hochschule Kempten hat schon ein Vorleben: Er diente als vielfach verwendetes Messe-Exponat und wurde der Hochschule Kempten in einem nicht betriebsfähigen Zustand zur Verfügung gestellt. Ursprünglich diente er innerhalb eines Forschungsprojektes dazu, die Vernetzung von dezentralen Steuerungsarchitekturen zu veranschaulichen. 

Im Rahmen einer Abschlussarbeit erfolgte die Wiederinbetriebnahme der Anlage. Genutzt wurde hierzu eine neue Steuerungsarchitektur mit drei dezentralen Kleinsteuerungen auf Raspberry-Pi-Basis und einer übergeordneten Soft-SPS (Industrie-PC) zur Anlagensteuerung inklusive Visualisierung. Die Kommunikation zwischen den Steuerungen erfolgte in einem ersten Schritt über TCP/IP. In einem nächsten Schritt erfolgte jetzt die Implementierung OPC UA PubSub.

 

Wozu PubSub?

In vernetzten Anlagen mit einer verteilten Steuerungsarchitektur, deren Kommunikation nicht komplett echtzeitfähig sein muss, besteht immer die Anforderung, Daten zwischen den Teilnehmern einfach und effizient austauschen zu können. Bisher gängige Übertragungsverfahren wie beispielsweise TCP/IP erfordern es, alle Teilnehmer im Netzwerk, die miteinander kommunizieren sollen, einzeln in einem selbstdefinierten (proprietären) Übertragungsprotokoll zu vernetzen und zu implementieren. An diesem Punkt setzt OPC UA PubSub an: In einem standardisierten Protokoll, das in Sender (Publisher) und Empfänger (Subscriber) untergliedert ist, können die Daten plattform-übergreifend übertragen werden, ohne Details der Kommunikation zu kennen oder selbst umzusetzen.

Anzeige

Das Grundprinzip der Datenübertragung mit OPC UA

© Hochschule Kempten

Der grundsätzliche Aufbau von PubSub ähnelt dem des bekannten Internetprotokolls MQTT: Ein Publisher bietet unter einem bestimmten Thema (Topic) Daten an, für die generell nicht relevant ist, ob sie tatsächlich genutzt oder empfangen werden. Hat eine Steuerung Interesse an dem Topic eines Publishers, kann sie sich als ein Subscriber – von beliebig vielen möglichen Subscribern – das entsprechende Thema abonnieren. Als Folge werden alle Daten, die im Netzwerk unter dem ‚Abonnement‘ gesendet werden, automatisch empfangen und können genutzt werden.

Für die unteren Netzwerk-Schichten (OSI-Modell) der Übertragung mit PubSub wird das User Data Protokoll (UDP) genutzt. Das heißt, der Datentransport findet verbindungslos und damit zum Beispiel ohne Rückmeldungen des Empfängers  statt. Das führt dazu, dass PubSub seine Übertragungen schneller als bestätigte, verbundene Protokolle – als etwa TCP-IP – übermitteln kann. Gleichzeitig sind keine Empfangsbestätigungen vorgesehen, sodass ein Sender sich über den Empfang seiner Nachrichten nicht im Klaren sein kann. Natürlich wäre es bei Bedarf denkbar, ein Bestätigungssystem auch über PubSub umzusetzen. 
Zur besseren Absicherung des Datentransports verwendet die Umsetzung von PubSub in Codesys zusätzliche Sicherheitsfunktionen des Message Mapping Protokolls (UADP, beispielsweise Verschlüsselung oder die Signierung von Daten).

Wie ist PubSub in Codesys anzuwenden?

Aufbau einer Datenübertragung eines Publishers

© Hochschule Kempten

Codesys bietet zur Umsetzung von PubSub eine objektorientiert aufgebaute IEC-Bibliothek an, die sich als Standard-IEC-Code in beliebige IEC-Programme auf nahezu beliebigen Codesys-basierten Steuerungen einbinden lässt. Dazu ist die PubSub-Bibliothek zunächst aus dem Codesys-Store herunterzuladen und anschließend ‚ganz normal‘ innerhalb des Bibliotheksmanagers einzubinden. Zu Testzwecken kann die Bibliothek – ohne inhaltliche Einschränkungen – im Demo-Modus für 30 Minuten genutzt werden, bevor das zugehörige Programm neu gestartet werden muss. Für eine dauerhafte Nutzung von PubSub ist eine Lizenzierung notwendig, die für jede Steuerung, die PubSub nutzen soll, zu erwerben ist und über den Lizenzmanager auf dem jeweiligen Gerät installiert wird.

Die Kosten einer Lizenz belaufen sich auf 50 Euro (Stand 02.12.2020). Die PubSub-Bibliothek von Codesys enthält alle notwendigen Bausteine, um Publisher oder Subscriber zu erstellen. Der Aufbau für beide Varianten ist sehr ähnlich gehalten: Der Code zur Datenübertragung besteht aus fünf Funktionsbausteinen, die miteinander zu verschalten sind. 
Der Baustein UADP.Connection übernimmt den Verbindungsaufbau und erfordert deshalb die aufwendigste Parametrierung. Im Baustein UADP.WriterGroup werden mehrere DataSet Messages zu einer Netzwerk-Nachricht zusammengefasst. Diese wird im UADP.Writer mit zusätzlichen Parametern, wie beispielsweise einem Zeitstempel, versehen. 

 

Der Projektbaum der Publisher- und Subscriber-Kommunikation

© Hochschule Kempten

Für den Subscriber werden nur die Writer-Group- und der Writer-Baustein durch einen ReaderGroup- und einen Reader-Baustein ersetzt und die Parametrierung des Connection-Bausteins angepasst. 
Die Zuordnung der Daten zu einem Topic wird statt über klare Themennamen über frei wählbare IDs im Unsigned-integer-Format ausgeführt. Um die Daten an die gewünschten Steuerungen zu übertragen, werden die IP-Adressen und die Ports aller beteiligter Geräte eingetragen. Für den Datentransfer an mehrere Steuerungen kann eine Multicast-IP gewählt werden. 

Ein wesentlicher Unterschied zu bekannten Übertragungsprotokollen wie TCP/ IP liegt in der Aufbereitung der Daten: Alle Variablen müssen in einem Daten-Set-Funktionsbaustein referenziert und zugeordnet werden. Letzterer wird dazu von einem in der Bibliothek angebotenem DataSet-Funktionsbaustein nach den Konzepten der objektorientierten Programmierung, abgeleitet und ‚erbt‘ dadurch eine bestimmte, notwendige Grundstruktur. Diese sieht vor, dass die Referenzen auf die zu übertragenden Variablen in einem Array des Bausteins hinterlegt werden. Zur zugehörigen Registrierung der Variablen steht die Methode PrepareValues zur Verfügung.

Um sicherzustellen, dass zusammengehörige Publisher und Subscriber den gleichen DataSet-Baustein nutzen, wird in der Methode Init ein Versionscode generiert, der für alle an der Kommunikation beteiligten Geräte identisch sein muss. Er sollte bei einer Änderung der DataSet-Baustein-Inhalte aktualisiert beziehungsweise neu generiert werden. Unterscheiden sich die Versionscodes eines Publisher und eines Subscribers, kann zwischen ihnen keine Datenübertragung stattfinden.

Die PubSub-Umsetzung

Prof. Dr. rer. nat. Josef Griesbauer ist Professor für Automatisierung und Messtechnik an der Hochschule Kempten.

© Hochschule Kempten

Für den Einstieg in die Datenübertragungssysteme bietet Codesys mit OPC UA PubSub ein System, das sich mit etwas Einarbeitungszeit auch für Einsteiger eignet. Allerdings sind Vorkenntnisse in objektorientierter Programmierung notwendig. Sind diese nicht vorhanden, schlägt sich das in der Projektierungszeit des Erstprojekts nieder. So ist es für fortgeschrittene Programmierer mit Erfahrungen in der objektorientierten Programmierung durchaus möglich, innerhalb weniger Stunden die Anforderungen zu verstehen und in einem Grundprojekt umzusetzen. Für Anfänger kann dies hingegen durchaus mehrere Tage in Anspruch nehmen. Hilfreich ist in jedem Falle das in der Bibliothek mitgelieferte Beispielprojekt, das einen grundsätzlichen Aufbau für Publisher und Subscriber beinhaltet. Die professionelle, durchwegs objektorientierte Umsetzung dieses Beispielprojekts kann für Neueinsteiger auf diesem Gebiet fordernd und zum Teil aufwendig sein.

Florian Kast ist nichtwissenschaftlicher Mitarbeiter (ehemaliger Masterstudent) an der Hochschule Kempten.

© Hochschule Kempten

Etwas gewöhnungsbedürftig ist die Namensgebung der internen Variablen der Funktionsbausteine der Bibliothek. So ist etwa im Baustein Connection nicht immer auf den ersten Blick erkennbar, welche IP-Adresse welcher Variablen zugeordnet werden muss. Hilfreich erweisen sich in diesem Falle die zugeordneten Kommentare. 
Empfehlenswert ist, die Kommunikation separat zu erstellen und zu testen, da die Bibliothek den Namensraum NBS verwendet, der auch bei der Datenübertragung mittels TCP/IP in Codesys zum Einsatz kommt. Damit kann es bei gleichzeitiger Verwendung von PubSub und TCP/IP zu Überlagerungen und damit zu Fehlern kommen.

Ist beim eigentlichen Test eines PubSub-Projektes etwa der Kommunikationsaufbau fehlerhaft, ist dies einfach an den genutzten PubSub-Bausteinen zu erkennen. Diese besitzen drei Ausgangs-Variablen, die den Status, die Aktivität sowie einen Fehlerzustand anzeigen. Hier sei angemerkt, dass ein Fehlerzustand im Subscriber nicht grundsätzlich im Subscriber-Programm seinen Ursprung haben muss. So kann ein weiterer falsch parametrierter Publisher, der selbst eine korrekte Aktivität meldet, in einem Subscriber zu Verbindungsproblemen führen. Das separate Testen jeder Übertragung kann aber eine Falschinterpretation eines Kommunikationsproblems vermeiden. 

Ein Resümee

Die Möglichkeit zur einfachen, schnellen Übertragung von Daten zwischen einem Publisher und beliebig vielen Subscribern macht OPC UA PubSub zu einem mächtigen Werkzeug. Insbesondere wenn es gilt, Projekte zu realisieren, die den Anspruch haben, das Internet of Things in der Industrie umzusetzen. 

Die erstmalige Verwendung der Objektorientierung bringt sicherlich Schwierigkeiten bei der Umsetzung eines Codesys-PubSub-Projektes mit sich. Der etwas höhere und objektorientierte Programmieraufwand im ersten Projekt lässt sich in Folgeprojekten dank der guten Wiederverwendbarkeit des Codes kompensieren. Abschließend bleibt anzumerken: Momentan ist die Umsetzung von PubSub in Codesys alternativlos und: sie funktioniert!

  • Xing Icon
  • LinkedIn Icon
Anzeige
zurück zur Themenseite
Anzeige

Das könnte Sie auch interessieren

Anzeige

OPC Foundation

Ein Zwischenziel ist erreicht!

Zwei Jahre nach dem Startschuss im November 2018 hat die Field Level Communications Initiative der OPC Foundation den initialen Release Candidate für den Use Case ‚Controller- to-Controller‘ fertiggestellt. Was steckt hinter diesem Release und was...

mehr...
Anzeige
Anzeige

Codesys

Neues vom Profiler

Ob regelmäßig, prophylaktisch oder sporadisch bei Bedarf ­ausgeführt: Untersucht man die Laufzeit seines IEC-61131-3-­Projektes mit einem Profiler als Zusatztool, so ist der Aufwand dafür minimal, der Nutzen aber beträchtlich. Ein Plädoyer für diese...

mehr...
Anzeige

Codesys

Von Datenanalyse bis OPC UA PubSub

Mit dem Codesys Automation Server ergänzte Codesys im Vorjahr ihre IEC-61131-3-Automatisierungs-Software um eine Industrie-4.0-Plattform. Zur SPS Connect werden nun aktuelle Neuerungen dieser Plattform sowie eine Bibliothek für die...

mehr...

Codesys

Die Autowaschanlage an der Cloud

Vollautomatische Autowaschanlagen sind die Expertise des Unternehmens AWT aus der Schweiz. Bei der Steuerungstechnik setzt AWT auf die cloudbasierte Administrationsplattform von Codesys.

mehr...
Anzeige
Anzeige
Anzeige

Best of 2022

Die Top-Artikel des Jahres

Was verbindet Marktplätze, SPS-Lösungen in der Cloud, neue Lesewelten, die Aufgabe einer Hardware-Exklusivität und TSN-Netzwerke miteinander? Ganz einfach: Diese Themen gehören zu den meistgelesenen Beiträgen des Jahres 2022. Wir lassen sie noch...

mehr...
Jetzt Newsletter abonnieren