OPC-UA Node Viewer verwenden (/ui/opcua)
Das Gateway selbst enthält einen integrierten OPC-UA-Server und stellt die erfassten Tag-Werte externen OPC-UA-Clients (SCADA, HMI) unverändert bereit. Diese Seite ist ein Viewer, in dem die Verbindungsdaten dieses integrierten Servers und der Knotenbaum (Tag-Liste + Echtzeitwerte + Zeitreihe) auf einem Bildschirm sichtbar sind.
- Implementierung: Eclipse Milo 0.6.16 (Apache 2.0)
- OPC UA Spezifikation: 1.04 (IEC 62541:2020)
- Transport: opc.tcp:// (default port 12000) / opc.tcp+TLS (12443)
- Security policies: None / Basic128Rsa15 / Basic256 / Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss
- User token: Anonymous (
opc.ua.server.anonymous=yesdefault) / UserName+Password / X.509 - Encoding: UA Binary
- Profile: Standard 2017 Server
- PubSub MQTT (1.05): nicht unterstützt — falls Publishing erforderlich, Sparkplug B verwenden
Im linken Menü OPC-UA Viewer wählen oder direkt zu http://<gateway>/ui/opcua wechseln.
1. Bildschirmaufbau
| Bereich | Inhalt |
|---|---|
| Oben Endpoint-Panel | TCP / TLS Endpoint URL, über die externe Clients zugreifen, Application Name, Namespace Index, Authentifizierungsdaten (Username / Anonymous zugelassen ja/nein / Password-Umschalter) |
| Links Knotenbaum | 사이트 → OPC → 태그 dreistufiger Baum. Je OPC werden Verbindungsstatus (CONNECTED/DISCONNECTED/UNKNOWN) und Tag-Anzahl, je Tag der aktuellste Wert inline angezeigt |
| Rechts Knotendetails | Metadaten des im Baum gewählten Knotens + Echtzeitwert + (bei numerischen/booleschen Tags) Zeitreihendiagramm |
Über das Symbol Kopieren neben der Endpoint-URL oben lässt sich diese in einem Zug kopieren; ein Klick auf das Feld Password zeigt (bei authentifizierter Sitzung) den Klartext an.
2. NodeId-Konvention
Jeder Tag wird unter folgender OPC-UA NodeId bereitgestellt.
ns=2;s=<SITE_ID>.<OPC_ID>.<TAG_ID>
Beispiel: ns=2;s=SITE_00001.OPC_00303.TAG_TEST_00042
Externe Clients (UaExpert, KEPServerEX, Ignition usw.) können diese NodeId direkt abonnieren. Rechts neben der NodeId im Detailpanel gibt es eine Schaltfläche Kopieren für die Übernahme in die Zwischenablage.
3. Knotenbaum — Suche / Aktualisieren
- Eine Texteingabe im Suchfeld oberhalb des Baums filtert Baum-, OPC- und Tag-Namen in Echtzeit über Teilübereinstimmung. Liegt ein Treffer bei einem Nachfahren, werden die übergeordneten Ebenen (OPC, Standort) automatisch aufgeklappt.
- Symbol Aktualisieren (↻) rechts vom Suchfeld — lädt die zwischengespeicherten Baum-/Endpoint-Informationen erneut. Im Normalbetrieb erfolgt die Aktualisierung automatisch, sodass es kaum benötigt wird.
- Mit dem Umschalter ◂/▾ jeder Zeile lässt sich der Unterbaum ein- und ausklappen. Bei aktiver Suche wird zur Anzeige der Treffer automatisch aufgeklappt; wird die Suche geleert, stellt sich der vorherige Zustand wieder her.
- Automatisches Kürzen langer Werte (ellipsis) — überschreitet der aktuelle Wert eines Baumknotens die Spaltenbreite, wird er mit
text-overflow: ellipsisals…dargestellt. Beim Hover mit der Maus erscheint der vollständige Klartext als Tooltip — eine Schutzmaßnahme, damit JSON- oder lange STRING-Werte das Baum-Layout nicht zerstören.
Die im Baum angezeigten Werte werden alle 2 Sekunden automatisch aktualisiert (/ui/opcua/tree). Baumstruktur, Aufklappzustand, Detailbereich rechts und Diagramm bleiben dabei unverändert.
4. Knotendetails + Zeitreihendiagramm
Ein Klick auf eine Tag-Zeile zeigt rechts Folgendes an.
- NodeId (kopierbar)
- Tag ID / DataType / PLC Address / Alias / Description
- Value (aktueller Wert + Zeitpunkt der letzten Aktualisierung, bis ms)
- Status (
OK/ERROR (메시지))
Je nach Werttyp ändert sich der Diagrammtyp automatisch.
4.1 Numerisch / Boolesch (ECharts Liniendiagramm)
Ist der Wert numerisch (Integer/Long/Float/Double usw.) oder boolesch, wird ein ECharts-Zeitreihen-Liniendiagramm gezeichnet.
| Diagrammfunktion | Beschreibung |
|---|---|
| Bereichsauswahl | Über die Combobox oben rechts im Diagramm 1분/5분/10분/30분/1시간(default)/3시간/12시간/24시간 wählen — historische Daten aus Cassandra (tm_tag_point) werden sofort geladen und neu gezeichnet |
| dataZoom-Slider | Graue Ziehleiste (helles Grau) am unteren Diagrammrand — horizontales Zoom / Pan |
| Automatisches Anfügen | Das 2-Sekunden-Polling fügt neue Werte dem Diagramm hinzu |
| Tooltip | Beim Überfahren Zeitpunkt in ms + Wert |
| Boolesch | Visualisierung des 0/1-Wechsels als step end (Treppenform) |
| Sampling | Bis zu 5.000 Punkte werden gehalten, darüber hinaus werden die ältesten Punkte entfernt (lttb Downsampling) |
4.2 STRING (vis-timeline Box-Diagramm)
Ist der Wert ein STRING, wird statt der ECharts-Linie ein range-box-Diagramm der vis-timeline gezeichnet — Abschnitte mit gleichbleibendem Wert werden zu einer Box zusammengefasst, wodurch die Zeitpunkte von Zustandswechseln visuell hervortreten.
| Punkt | Beschreibung |
|---|---|
| Box = Abschnitt mit gleichem Wert | Beispiel: Bleibt "RUNNING" von 12:00 bis 12:35 bestehen, ergibt dieser Abschnitt eine Box |
| Boxfarbe | Automatisch auf Basis eines Wert-Hashes — gleicher Text ergibt stets dieselbe Farbe |
| Boxbeschriftung | Wert im Klartext (bei langen Werten vollständig beim Hover) |
| Zoom/Pan der Zeitachse | Standardinteraktion von vis (mouse wheel / drag) |
| Aktualisierung | Beim Polling wird die History ASC sortiert und der gesamte Datensatz neu aufgebaut (bei kaum Änderungen ohne Flackern) |
| Bei Knotenwechsel | Instanz per disposeStringTimeline() destroy + Diagramm des neuen Knotens neu erzeugen |
Das STRING-Diagramm eignet sich, um nicht-numerische Zeitreihen wie State-Machine-Logs (
READY → RUNNING → ERROR → IDLE) auf einen Blick zu erfassen. Dieselbe Darstellung gilt auch für Tag-Werteverlauf ansehen (tag-view).
5. EDGE-Systemtags
Ein virtueller OPC, dessen Name mit EDGE_<...> beginnt, erscheint automatisch im Baum. Dabei handelt es sich um eine Sammlung von Systemtags, die den Zustand des Gateways selbst als OPC-UA-Knoten bereitstellen.
Wichtige Tags:
| Tag-Name (Description) | Bedeutung |
|---|---|
THREAD_COUNT | Anzahl der Java-Threads |
TAG_COUNT | Gesamtzahl der registrierten Tags |
SERVER_STARTED_TIMESTAMP | Startzeitpunkt des Servers (epoch ms) |
OPC_CONNECTED_COUNT | Anzahl der OPC mit Verbindung OK |
HEAP_USED_MB | JVM-Heap-Auslastung (MB) |
Der Verbindungsstatus des EDGE-System-OPC wird immer als CONNECTED angezeigt (es handelt sich um das Gerät selbst, es gibt also kein Verbindungskonzept).
6. Zusammenspiel mit externen Clients — Ablauf
- In diesem Bildschirm den TCP Endpoint kopieren (z. B.
opc.tcp://<gateway>:12000). - In einem OPC-UA-Client wie UaExpert / KEPServerEX einen neuen Server hinzufügen → obige URL eingeben.
- Authentifizierungsmodus:
- Ist Anonymous aktiviert (Anzeige Anonymous zugelassen im oberen Panel), direkt verbinden.
- Andernfalls Username / Password verwenden (das Password lässt sich im oberen Panel per Klick kurzzeitig im Klartext einsehen).
- Nach dem Verbinden Tags im NodeId-Format
ns=2;s=...unverändert abonnieren.
7. Fehlerbehebung
| Symptom | Prüfpunkt |
|---|---|
| OPC erscheint nicht im Baum | Ob 자주 하는 작업 → 새 PLC 연결 추가 abgeschlossen ist und ob im Gateway die Option Erfassung automatisch starten für diesen OPC aktiviert ist |
Wert neben dem Tag erscheint als - | Dieser Tag wurde noch nie aktualisiert. Erfassungsstart / OPC-Verbindung / Quality prüfen |
| Im Baum sichtbar, aber der externe Client findet die NodeId nicht | Tippfehler oder OPC-UA-Server deaktiviert. opc.ua.server.tcp.enable=true in app.properties prüfen |
| Diagramm ist leer | Für diesen Tag existiert noch keine Cassandra-History (gerade erst registrierter Tag) — nach kurzer Wartezeit erscheinen Punkte |
| Diagramm wirkt sprunghaft | Wird der Bereich auf 24 Stunden vergrößert, greift automatisches Downsampling und die Darstellung wird geglättet |
Warnung 라이센스/CN 인증서 (TLS-Endpoint) | Selbstsigniertes Zertifikat des Gateways — im Client als "Trust" behandeln. Zur Einbindung firmeneigener Zertifikate den Betreiber kontaktieren |
8. Weiterführende Informationen
- Node-RED (
/ui/flow) — dieselben Tag-Werte im Flow verarbeiten/nach außen senden. Siehe자주 하는 작업 → Node-RED 로 자동화 / IIoT 플로우. - REST API — dieselben Daten lassen sich direkt per HTTP abrufen. Siehe
고급 / 통합 파트너용 → REST API. - Technische Treiber-Referenz → OPC-UA — Beschreibung der OPC-UA-Client-Seite des Gateways (Pfad, über den Daten von einem externen OPC-UA-Server abgerufen werden).