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

51 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```bash
mvn -q exec:java -Dexec.args="examples/opcua-export-1775161283402.json 4840 /"
```
Dann verbinden mit:
```text
opc.tcp://localhost:4840/
```
Anonyme Anmeldung ist aktiv. Zusätzlich existieren Benutzer:
```text
user / password1
admin / password2
```
## GUI starten
```bash
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.