zerodds-opcua-bridge
OMG DDS-OPCUA Gateway 1.0 daemon:
opc.tcpserver + client + Part-14 UADP PubSub overzerodds-dcps.
- Source: crates/opcua-bridge
- API docs: docs.rs/zerodds-opcua-bridge
The OMG DDS-OPCUA Gateway 1.0 (formal/2020-01-01) as a running daemon, zerodds-opcua-bridged, on zerodds-dcps. The four library crates (zerodds-opcua-gateway, -uacp, -server, -pubsub) implement the type system, the opc.tcp framing and SecureChannel, the Part 4 Client/Server service set and the Part 14 (UADP) PubSub wire stack. This crate is the process that runs them: an opc.tcp server exposing DDS topics, an OPC UA client bridging foreign servers into DDS, and Part 14 PubSub publishers and subscribers over UDP multicast — configured from one YAML file.
Safety classification: STANDARD.
Modules
dynamic_type—zerodds_types::dynamic::DynamicType→zerodds_opcua_gateway::dds_to_ua::walker::DdsType.dynamic_value—DynamicData↔ a flat, path-namedVariantlist (flatten/unflatten), the shape both the AddressSpace's leaves and a Part 14 DataSet's fields need.idl— compiles an operator-supplied.idlfile and builds theSerializedTypeSupporta topic needs.dds_bridge— the DDS-side port: participant, topic, reader and writer registration against azerodds-dcpsruntime.address_space_build— Gateway 1.0 §9.3 AddressSpace materialization.ua_client— the client role of Gateway 1.0 §8 against foreign servers.pubsub_glue— the Part 14 UADP Publisher/Subscriber wiring.daemon— the process itself: CLI, YAML config, SIGHUP/SIGTERM, systemdType=notify, Prometheus metrics.
Quickstart
cargo build -p zerodds-opcua-bridge --bin zerodds-opcua-bridged --features crypto
# opcua-bridged.yaml
domain: 0
opcua:
idl: ["robotics.idl"]
gateway_config: "gateway.xml" # Spec §10 XML
server:
bind: "0.0.0.0:4840"
zerodds-opcua-bridged --config opcua-bridged.yaml
Feature flags
| Feature | Default | Purpose |
|---|---|---|
std |
✅ | The crate's non-daemon conversion modules. |
daemon |
✅ | Everything: the reflective type layer, the DDS port, the AddressSpace/PubSub glue, the process itself. |
crypto |
❌ | Secured SecureChannel SecurityPolicies (basic256sha256/aes128_sha256_rsaoaep/aes256_sha256_rsapss); pulls rsa/pem/rand. |
ring-backend |
✅ | Crypto backend that the ACL layer of zerodds-bridge-security pulls in. |
aws-lc |
❌ | Alternative to ring-backend. |
rt |
❌ | Passes zerodds-dcps/rt real-time scheduling through. |
Position
- Runs the OPC UA library crates on
zerodds-dcps; configuration throughzerodds-config, access control throughzerodds-bridge-security, IDL throughzerodds-idl-compose. - Command reference:
zerodds-opcua-bridged(1).
Specification
docs/specs/zerodds-opcua-bridge-1.0.md — the full contract of the daemon.
zerodds-opcua-bridge
Daemon für OMG DDS-OPCUA Gateway 1.0:
opc.tcp-Server, -Client und Part-14-UADP-PubSub überzerodds-dcps.
- Quelle: crates/opcua-bridge
- API-Docs: docs.rs/zerodds-opcua-bridge
Das OMG DDS-OPCUA Gateway 1.0 (formal/2020-01-01) als laufender Daemon, zerodds-opcua-bridged, auf zerodds-dcps. Die vier Bibliotheks-Crates (zerodds-opcua-gateway, -uacp, -server, -pubsub) implementieren das Typsystem, die Rahmung von opc.tcp und den SecureChannel, die Dienste von Part 4 (Client/Server) und den PubSub-Stack von Part 14 (UADP). Diese Crate ist der Prozess, der sie ausführt: ein opc.tcp-Server, der DDS-Topics anbietet, ein OPC-UA-Client, der fremde Server nach DDS überbrückt, und PubSub-Publisher und -Subscriber nach Part 14 über UDP-Multicast — konfiguriert aus einer YAML-Datei.
Sicherheitseinstufung: STANDARD.
Module
dynamic_type—zerodds_types::dynamic::DynamicType→zerodds_opcua_gateway::dds_to_ua::walker::DdsType.dynamic_value—DynamicData↔ eine flache Liste vonVariant-Werten mit Pfadnamen (flatten/unflatten), die Form, die sowohl die Blätter des AddressSpace als auch die Felder eines DataSet nach Part 14 brauchen.idl— kompiliert eine vom Betreiber gelieferte.idl-Datei und baut denSerializedTypeSupport, den ein Topic braucht.dds_bridge— der Anschluss auf der DDS-Seite: Registrierung von Participant, Topic, Reader und Writer gegen eine Laufzeit vonzerodds-dcps.address_space_build— Aufbau des AddressSpace nach Gateway 1.0 §9.3.ua_client— die Client-Rolle aus Gateway 1.0 §8 gegenüber fremden Servern.pubsub_glue— die Verdrahtung von Publisher und Subscriber nach Part 14 (UADP).daemon— der Prozess selbst: CLI, YAML-Konfiguration, SIGHUP/SIGTERM, systemdType=notify, Prometheus-Metriken.
Schnellstart
cargo build -p zerodds-opcua-bridge --bin zerodds-opcua-bridged --features crypto
# opcua-bridged.yaml
domain: 0
opcua:
idl: ["robotics.idl"]
gateway_config: "gateway.xml" # Spec §10 XML
server:
bind: "0.0.0.0:4840"
zerodds-opcua-bridged --config opcua-bridged.yaml
Feature-Flags
| Feature | Default | Zweck |
|---|---|---|
std |
✅ | Die Umwandlungsmodule der Crate außerhalb von daemon. |
daemon |
✅ | Alles: die reflektive Typschicht, der DDS-Anschluss, die Verbindung von AddressSpace und PubSub, der Prozess selbst. |
crypto |
❌ | Gesicherte SecurityPolicies für den SecureChannel (basic256sha256/aes128_sha256_rsaoaep/aes256_sha256_rsapss); zieht rsa/pem/rand nach. |
ring-backend |
✅ | Krypto-Backend, das die ACL-Schicht von zerodds-bridge-security einbindet. |
aws-lc |
❌ | Alternative zu ring-backend. |
rt |
❌ | Reicht die Echtzeitplanung von zerodds-dcps/rt durch. |
Stellung
- Führt die OPC-UA-Bibliotheks-Crates auf
zerodds-dcpsaus; Konfiguration überzerodds-config, Zugriffskontrolle überzerodds-bridge-security, IDL überzerodds-idl-compose. - Befehlsreferenz:
zerodds-opcua-bridged(1).
Spezifikation
docs/specs/zerodds-opcua-bridge-1.0.md — der vollständige Vertrag des Daemons.