opcua-server/README.md
2026-05-10 14:17:32 +02:00

2.2 KiB
Raw Blame History

OPC UA Simulator fixed v2

Dieser Stand behebt die Fehler aus der ZIP-Version:

  • Top-Level-Objekte behalten jetzt eine stabile, konsistente NodeId-Zuordnung. Views verweisen nicht mehr auf nicht vorhandene Nodes.
  • Der Server legt Parent-Forward- und Child-Inverse-Referenzen mit dem ReferenceType aus dem Export an (Organizes, HasComponent, HasProperty, ...).
  • Doppelte Nodes im Export werden nur einmal erzeugt und mehrfach verlinkt. Dadurch fehlen StateCondition-/Method-/Property-Bereiche nicht mehr durch Duplicate-Node-Fehler.
  • Variablen werden mit AccessLevel und UserAccessLevel erzeugt, damit OPC-UA-Clients Werte schreiben können.
  • GUI-Änderungen setzen Werte live in-place, ohne Nodes zu löschen und View-Referenzen zu zerstören.
  • Über + Rootelement kann unabhängig von der aktuellen Markierung direkt unter Objects ein neues oberstes Objekt angelegt werden.
  • Die Anzeige Aktueller Wert wird während des Serverlaufs automatisch aus dem laufenden Node aktualisiert; Hintergrund-Simulation und Client-Writes sind ohne erneutes Selektieren sichtbar.
  • Beim Serverstart wird der aktuelle GUI-Baum verwendet. Vor dem Start hinzugefügte Nodes werden dadurch ebenfalls publiziert.

Voraussetzungen

  • JDK 17 oder neuer
  • Maven 3.9 oder neuer

CLI starten

mvn -q exec:java -Dexec.args="examples/opcua-export-1775161283402.json 4840 /"

Dann verbinden mit:

opc.tcp://localhost:4840/

Anonyme Anmeldung ist aktiv. Zusätzlich existieren Benutzer:

user / password1
admin / password2

GUI starten

mvn javafx:run

In der GUI zuerst den JSON-Export laden, danach den Server starten.

Hinweise zur NodeId-Zuordnung

Der Export enthält mehrere Custom-Namespace-Indizes (ns=1 bis ns=7). Ein einzelner Milo ManagedNamespace liefert aber nur eine Namespace aus. Deshalb werden Custom-Namespaces intern konsistent auf die Simulator-Namespace gemappt. String-NodeIds wie AirConditioner_1.Temperature bleiben als Identifier erhalten, numerische Custom-IDs werden kollisionsfrei als String-Identifier gespeichert, z. B. ns=3;i=5000.

Im OPC-UA-Client immer die NodeIds verwenden, die der Simulator beim Browsen tatsächlich anzeigt.