Hochschule Kempten

Erste Erfahrungen mit OPC UA PubSub

4. Februar 2021, 8:39 Uhr | Meinrad Happacher

Fortsetzung des Artikels von Teil 1

Wie ist PubSub in Codesys anzuwenden?

Aufbau einer  Datenübertragung eines Publishers
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
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.


  1. Erste Erfahrungen mit OPC UA PubSub
  2. Wie ist PubSub in Codesys anzuwenden?
  3. Die PubSub-Umsetzung

Das könnte Sie auch interessieren

Verwandte Artikel

Hochschule Kempten, CODESYS GmbH

TSN & OPC UA