Zum Hauptinhalt springen

OPC-UA Knoten

Über Community-Knoten wie node-red-contrib-opcua können Sie direkt mit externen OPC-UA Servern (Kepware, Ignition, andere Gateways) kommunizieren. Dieselben Knoten werden auch verwendet, um auf den OPC-UA Server des Gateways selbst zuzugreifen (opc.tcp://127.0.0.1:12000/opcua, NodeId ns=2;s=...).

Beim Zugriff auf den integrierten OPC-UA Server

Kopieren Sie die TCP Endpoint-URL und die NodeId direkt aus dem Menü OPC UA 서버 › Tab Serverinformationen. Weitere Einzelheiten finden Sie unter OPC UA Server verwenden.


1. Knotentypen (node-red-contrib-opcua)​

KnotenVerwendung
OpcUa-EndpointServer-Verbindungsdaten (Host/Port/Security/Auth) — einmal erstellen und in anderen Knoten teilen
OpcUa-ItemDefinition eines Einzelknotens — wandelt nodeId in Eingabewerte um
OpcUa-ClientHauptfunktionsknoten für Read / Write / Browse / Method Call
OpcUa-SubscribeAbonnement von Änderungsereignissen (MonitoredItem) — Empfang per Push statt Polling
OpcUa-EventAbonnement von OPC-UA Alarm & Event

2. Endpoint erstellen​

Knoten OpcUa-Client doppelt anklicken → Stiftsymbol neben dem Feld Endpoint → Neuer Endpoint:

FeldWert (bezogen auf den integrierten Gateway-Server)
Endpointopc.tcp://127.0.0.1:12000/opcua
Security PolicyNone (intern) oder Basic256Sha256 (externer Betrieb)
Security ModeNone / Sign / Sign & Encrypt
LoginBenutzername/Passwort aus der OPC UA Server-Maske oder Anonymous (falls erlaubt)

3. Read / Write Muster​

inject ─▶ OpcUa-Item (nodeId, msg.payload type) ─▶ OpcUa-Client (READ/WRITE) ─▶ debug

OpcUa-Item:

FeldWert
Itemns=2;s=SITE_00001.OPC_00303.TAG_TEST_00042
DataTypeInt32 (muss mit dem Datentyp des Tags übereinstimmen — sonst BadTypeMismatch)

OpcUa-Client:

FeldWert
ActionREAD oder WRITE
Endpointoben erstellter Endpoint

Füllen Sie bei WRITE vor dem Knoten OpcUa-Item den Wert mit change wie msg.payload = 9999 aus.


4. Subscribe — Änderungen ohne Polling empfangen​

Ein Subscribe ist wesentlich effizienter als Polling (zyklisches Lesen). Bei ausbleibenden Änderungen gibt es keinen Datenverkehr, und die Daten treffen im Mikrosekundenbereich ein.

inject (once after deploy) ─▶ OpcUa-Item ×N ─▶ join (배열) ─▶ OpcUa-Subscribe ─▶ debug / function

OpcUa-Subscribe:

FeldWert
ActionSUBSCRIBE
IntervalEmpfohlen 100 ms (Mindestintervall, mit dem der Server den Client benachrichtigt)
Queue size10 (Buffer bei Serverüberlastung)

Die eingehenden Nachrichten enthalten msg.payload (Wert) + msg.topic (NodeId) + msg.timestamp.


5. Browse — Automatische Suche im Knotenbaum​

Nützlich in Umgebungen wie KEPServerEX mit Hunderten oder Tausenden von Knoten, wenn man wissen möchte, welche NodeIds vorhanden sind.

inject ─▶ OpcUa-Client (action=BROWSE, msg.payload="ns=2;i=85") ─▶ debug

Die Antwort ist ein Array von [ {nodeId, browseName, displayName, ...} ] der Kindknoten. Dies kann mit function verarbeitet werden, um einen automatischen Registrierungsflow zu erstellen.


6. Häufige Fehlerquellen​

SymptomUrsache / Lösung
BadIdentityTokenInvalidBenutzer/Passwort oder Zertifikat nicht vertrauenswürdig. Im Server-Konsole das Client-Zertifikat auf Trust setzen
BadTypeMismatchDer DataType von OpcUa-Item weicht vom tatsächlichen Knotentyp ab
Ständige Meldung Verbindung unterbrochenDie Host-Domain der Endpoint-URL stimmt nicht mit dem CN des Zertifikats überein — Zertifikat neu ausstellen oder Host der URL an CN anpassen
Subscribe löst nur einmal ausOpcUa-Subscribe muss nur einmal „registriert“ werden. Verwenden Sie die Option once after deploy beim Inject nur einmal

7. Nächste Schritte​