Zum Hauptinhalt springen

OPC UA mit CODESYS und Node-RED

Einführung

OPC UA (Unified Architecture) ist eine Weiterentwicklung der OPC-Spezifikationen, die nicht nur den Transport von Daten aus Maschinen und Systemen ermöglicht, sondern auch die maschinenlesbare semantische Beschreibung dieser Daten. Es ist ein plattformunabhängiger Standard auf TCP-Basis, der den Mitgliedern der OPC Foundation zur Verfügung steht. Die OPC-UA-Spezifikation umfasst verschiedene Profile zur Skalierung einzelner Funktionen.

Dieser Artikel zeigt, wie Node-RED für die Kommunikation mit anderen Systemen über das OPC UA-Protokoll (Open Platform Communications Unified Architecture) verwendet werden kann. Der OPC UA-Server läuft auf dem Controller, in diesem Fall ein CODESYS-basierter Controller auf einem Revolution-Pi 4.

Voraussetzungen

Hardware

  • RevPi Connect 4
  • RevPi DIO Modul
  • RevPi AIO Modul
  • Induktiver Näherungssensor (3-Draht, PNP)
  • PT-1000 Temperatursensor (4-Draht)
  • Verbindungskabel (für die Verdrahtung des DIO und LED)

Software

  • Node-red
  • OPC UA Client
  • CODESYS
  • OPC UA Server

Überblick

  • Einrichtung des RevPi4 und der Erweiterungsmodule (RevPi DIO, RevPi AIO)
  • OPC UA Node Installation
  • Einrichtung des OPC-UA-Servers auf CODESYS und Definition von Variablen
  • OPC UA Client (UA-Expert)
  • Node-red Programm

Schritt 1: Einrichtung des RevPi4 und der Erweiterungsmodule (RevPi DIO, RevPi AIO)

Hardware-Setup

Befolgen Sie diese Schritte zur Konfiguration Ihres Systems. Detaillierte Anweisungen finden Sie im Getting Started Guide.

  • RevPi Connect 4 einschalten

    ▷ Verbinden Sie den RevPi Connect 4 mit einer Stromquelle.

    ▷ Stellen Sie sicher, dass er für den Zugriff mit Ihrem lokalen Netzwerk verbunden ist.

  • RevPi DIO und RevPi AIO einschalten

    ▷ Schalten Sie das RevPi DIO Modul ein.

    ▷ Schalten Sie das RevPi AIO Modul ein.

  • Verbindungen überprüfen

    ▷ Prüfen Sie, ob der Induktive Näherungssensor korrekt mit dem RevPi DIO verbunden ist.

    ▷ Stellen Sie sicher, dass das RevPi DIO und RevPi AIO Modul sicher über die PiBridge-Schnittstelle mit dem RevPi Connect 4 verbunden sind.

    ▷ Verbinden Sie den PT-1000 mit dem RTD-Kanal 1 des RevPi AIO.

  • Zugriff auf die RevPi-Oberfläche

    ▷ Öffnen Sie einen Webbrowser auf einem Gerät im selben Netzwerk.

    ▷ Greifen Sie über die IP-Adresse auf das RevPi-System zu.

Hinweis: Für Netzwerk-Troubleshooting oder zur Ermittlung der IP-Adresse Ihres RevPi konsultieren Sie den Getting Started Guide.

Software-Setup:

Hinweis: Um ein kompatibles System mit geeigneter Software sicherzustellen, beachten Sie bitte die folgenden Links:

Schritt 2: OPC UA Node Installation

Die Standardinstallation von Node-RED enthält die am häufigsten verwendeten Basis-Nodes. Es gibt jedoch eine umfangreiche Bibliothek zusätzlicher Nodes, die Sie nutzen können. Um das OPC-UA-Protokoll zu verwenden, müssen Sie die bereitgestellten Nodes "node-red-contrib-opcua" installieren. Diese Installation kann entweder über die Kommandozeile mit dem Node Package Manager (npm) oder einfach über ein Terminal erfolgen.

▷ Öffnen Sie das Menü und wählen Sie "Palette verwalten".

▷ Suchen Sie dann nach "node-red-contrib-opcua", um mit der Installation fortzufahren.

Hinweis: Wie man ein Node-Paket manuell installiert, wird auch in den Schritten hier gezeigt.

Schritt 3: Einrichtung des OPC-UA-Servers auf CODESYS und Definition von Variablen

▷ Öffnen Sie den Installer unter "Werkzeuge/CODESYS Installer".

▷ Schließen Sie vor dem Fortfahren mit dem Installer das Hauptfenster Ihrer CODESYS-Anwendung.

▷ Klicken Sie im CODESYS Installer auf "Datei installieren".

Webstatus login

▷ Folgen Sie den Installationsschritten, um die Pakete von Ihrem PC in Ihre CODESYS-Anwendung zu installieren.

▷ Um CODESYS Control Linux ARM 64 bit auf RevPi-Geräten mit dem Bullseye 64-bit Image zu installieren, verwenden Sie das folgende Menü im CODESYS Development System: "Werkzeuge" -> "CODESYS Installer". Ein Fenster öffnet sich. Suchen Sie nach CODESYS Control for Linux ARM64 SL und klicken Sie dann auf Installieren.

Die beiden Pakete werden nun im CODESYS Installer als "Installiert" aufgeführt und sind damit auf Ihrer Anwendung installiert.

Verwenden Sie dann das folgende Menü im CODESYS Development System: "Werkzeuge" -> "Update Linux ARM 64", um die Installation auf den Controller (hier Ihr RevPi 4) zu übertragen.

Schritt 4: CODESYS-Projekt erstellen

▷ Erstellen Sie ein neues Standardprojekt mit CODESYS Control for Linux ARM64 SL in CODESYS.

▷ Wählen Sie CODESYS Control for Linux ARM64 SL

▷ Klicken Sie mit der rechten Maustaste auf "Gerät" im Projekt-Tab.

▷ Klicken Sie auf "Gerät anhängen".

Im folgenden Fenster finden Sie alle RevPi-Basismodule.

▷ Klicken Sie auf das gewünschte Basismodul (in diesem Beispiel RevPi Connect).

▷ Klicken Sie auf "Gerät anhängen"

Sie können optional zusätzliche KUNBUS-Submodule verwenden.

▷ Klicken Sie mit der rechten Maustaste auf das im vorherigen Schritt hinzugefügte Basismodul (in diesem Beispiel auf "Connect").

▷ Klicken Sie auf "Gerät anhängen".

Um ein Submodul anzuordnen, wählen Sie die Geräteschnittstelle piBridgeLeft oder piBridgeRight. ▷ Klicken Sie auf "Gerät anhängen".

▷ Wählen Sie das angeschlossene Gerät.

▷ Klicken Sie auf "Gerät anhängen".

Hier werden die verfügbaren Module angezeigt, die links oder rechts vom RevPi Connect 4 angeschlossen werden können. Für unsere Demo: – DIO – Digital Input-Output Modul – AIO – Analog Input-Output Modul

Die Konfiguration der Pins am DIO:

Die Konfiguration des RevPi AIO für den PT-1000 Temperatursensor. Er verwendet den RTD-Kanal 1 (RTD1).

Schritt 5: Das CODESYS-Programm erstellen

Im Programm werden zwei Variablen definiert. Die Variable "A_OUT" greift auf den Kanal von RTD_Channel 1 zu und gibt den Temperaturwert zurück. Die Variable "Input" greift auf Eingang 2 des digitalen Eingangs des RevPi DIO zu, wo die Signalleitung des induktiven Sensors angeschlossen ist.

Schritt 6: Einrichten des OPCUA-Servers in CODESYS

Die OPC UA-Server-Funktion ist nativ in der CODESYS-Entwicklungsumgebung enthalten. Im Programm OPCUA-TUT werden wir den Status eines Eingangs und den Wert eines Temperatursensors veröffentlichen.

Wir haben das Symbol-Konfigurationsobjekt zum Projekt hinzugefügt und die OPC UA-Eigenschaften aktiviert.

Schritt 7: Variablen veröffentlichen

Im Symbol-Konfigurationseditor finden wir eine Liste aller im Programm vorhandenen Variablen. Wir aktivieren nur die, die wir veröffentlichen möchten: den BOOL-Typ "Input", der den Status des digitalen Eingangs zurückgibt, und die Temperatur, dargestellt durch "A_OUT" vom Typ INT, die den Temperaturwert zurückgibt.

Für jede Variable können wir die Berechtigungen (Lesen, Schreiben, Lesen/Schreiben) durch Klicken auf die Spalte für Zugriffsrechte ändern. Nachdem das Programm geladen und auf dem Ziel ausgeführt wurde, ist es möglich, mit einem OPC UA-Client auf die veröffentlichten Variablen zuzugreifen.

Nun gibt es auch die Möglichkeit, die Datenübertragung abzusichern, und dies kann auf zwei Arten geschehen. Erstens durch Benutzerauthentifizierung durch Ändern einer Kommunikationsrichtlinie.

Zweitens kann festgelegt werden, ob anonyme Anmeldung erlaubt ist, was bedeutet, dass Sie ohne Benutzerverwaltung auf die OPC-UA-Server zugreifen können, oder nicht. In diesem Fall haben wir es erlaubt.

Wir streben auch eine sichere Datenübertragung über OPC UA an. Dafür brauchen wir eine Möglichkeit, den Datenstrom zu verschlüsseln, und dies geschieht nun über den sogenannten "Security Manager". Er prüft, ob für das Gerät ein Zertifikat zur Verschlüsselung der Datenübertragung via X.509 hinterlegt ist. Klicken Sie dazu auf "Geräte" und sehen Sie sich die verfügbaren Informationen zum Gerät an.

In diesem Fall sind folgende Informationen verfügbar:

Es ist wichtig zu beachten, dass die Verschlüsselung des OPC UA-Dienstes essentiell ist. Zunächst muss geprüft werden, ob ein Zertifikat hinterlegt ist. Wenn nicht, wie im Bild oben gezeigt, muss eines generiert werden.

Der OPC-UA-Server hat jetzt ein gültiges Zertifikat:

Schritt 8: Einrichten des OPC UA Clients (UAExpert)

UaExpert® ist ein plattformübergreifender OPC UA-Testclient. Das Programm kann zusammen mit vielen anderen Programmen und Dokumentationen kostenlos von der Website der Firma Unified Automation heruntergeladen werden.

Um eine Verbindung zu unserem System herzustellen und mit den veröffentlichten Variablen zu interagieren, können wir einen Server definieren, zu dem wir uns verbinden möchten, indem wir mit der rechten Maustaste auf "Server" -> "Hinzufügen" -> "Benutzerdefinierte Erkennung" -> "Doppelklick zum Hinzufügen eines Servers..." klicken. Es öffnet sich ein Popup, in dem Sie die System-IP-Adresse einstellen müssen. Bestätigen Sie mit "OK", um fortzufahren.

Das Programm wird sich mit dem Server verbinden und ihn in der Liste anzeigen. Ein Eintrag wird ähnlich wie dieser erscheinen: opc.tcp://192.xxx.xxx.xxx:, wobei "opc.tcp" das Protokoll über TCP anzeigt. Wenn Sie das Menü "opc.tcp://192.xxx.xxx.xxx:" erweitern, erscheint eine automatische Erkennung des Servers mit dem korrekten Namen in dieser Form: "OPCUAServer@RevPi99920(opc.tcp://192.168.1.214)".

Wählen Sie nun eine Kommunikationsoption (z.B. "None-None(uatcp-uasc-uabinary)") und klicken Sie dann auf "OK", um fortzufahren.

Um sich mit dem Server zu verbinden, klicken Sie mit der rechten Maustaste auf den Server und wählen Sie dann im erscheinenden Fenster "Verbinden". Sobald die Verbindung hergestellt ist, können Sie nach der gewünschten Variable suchen und mit ihr interagieren. Wir wählen eine Kommunikationsmethode (z.B. None-None(uatcp-uasc-uabinary)) und klicken dann auf "OK".

Schritt 9: Node-RED Flow erstellen

Unten sehen Sie das Node-RED-Programm mit dem zugehörigen Dashboard, das sich mit dem OPCUA-TUT-Programm verbindet.

Die Kommunikation mit dem CODESYS OPC UA Server erfolgt über den OpcUa-Client Node, wo der Endpunkt als Adresse und Port des OPC-UA-Servers definiert ist (im Beispiel: opc.tcp://192.168.1.214:4840). Für Leseoperationen (Variablen "Input" und "A_OUT") wird die Aktion "READ" definiert.

Im Node "OpcUa Item muss das "Item" angegeben werden. Das Item besteht aus der "NodeId" der Variable,