WebUI Runtime

Die WebUI Runtime stellt ein Framework zum Erstellen benutzerdefinierter webbasierter Standalone-Seiten bereit, die über WebSocket mit WinCC OA verbunden sind.

Die WebUI Runtime ist ein Webanwendungs-Framework, das auf Lit 3 Web Components, dem Siemens IX Design System und der OaRxJsApi-Bibliothek basiert. Es ermöglicht Entwicklern, benutzerdefinierte Standalone-Seiten zu erstellen, die Live-Prozessdaten anzeigen, Steuerbefehle senden und sich in das WinCC OA-Dashboard integrieren. Die Runtime hostet auch Anwendungen wie das Central Asset Management. Die Seiten werden vom webserver.js bereitgestellt und kommunizieren über WebSocket-Verbindungen mit dem Backend, die von einem Shared Worker verwaltet werden. Der gesamte Stack verwendet eine Sprache und Technologie -- JavaScript/TypeScript -- vom Frontend bis zum Backend. Das Backend basiert auf dem webserver.js.

Standalone-Seiten verbinden sich über die OaRxJsApi-Bibliothek in Echtzeit mit WinCC OA-Datenpunkten. Dabei dient dpConnect zum Abonnieren von Live-Werten und dpSet zum Zurückschreiben von Werten an den Prozess. Eine Shared-Bundle-Architektur stellt sicher, dass gemeinsam genutzte Bibliotheken wie Lit, RxJS und das Siemens IX Design System nur einmal geladen und von allen Seiten gemeinsam verwendet werden. Seiten lassen sich in das bestehende WinCC OA-Dashboard und Widget-System integrieren und können den wui-context-generator verwenden, um Widgets deklarativ an Datenpunkte zu binden. Darüber hinaus unterstützt das Framework Alarmvisualisierung mit Quittierung, historische Trenddiagramme auf Basis von ECharts sowie interaktive Kartenansichten auf Basis von Leaflet. Branding, Theming einschließlich Dark- und Light-Modus sowie das Navigationslayout sind vollständig anpassbar.

Schichtenarchitektur

Die WebUI Runtime ist als vierschichtiger Stack aufgebaut. Jede Schicht baut auf der darunterliegenden auf und kann unabhängig verwendet werden.

Abbildung 1. Schichtenarchitektur der WebUI Runtime

Schichtenarchitektur-Diagramm der WebUI Runtime mit den Schichten API+Backend, Shell, Framework und Apps
Schicht Beschreibung
API + Backend Ein JavaScript/TypeScript-basierter Hochleistungs-Webserver, der HTTP(S)- und WebSocket-Verbindungen bereitstellt. Beinhaltet authentifizierte Verbindung zu WinCC OA, automatisches Web-Server-Switchover, Session-Handling und API 5.0. Backend-Dienste umfassen Farbdatenbank, I18n-Sprachhandling und Config-Einträge über /WebUI_Settings. Die Frontend-Bibliothek bietet alle WinCC OA-Basisdienste und Zugriff auf das MSA-Interface. Der Server kann mit eigenen Diensten und Backend-Logik erweitert werden.
Shell Eine unsichtbare Web Component (<shell>), die die WebUI-API integriert und Login/Logout, Event-Handling (Navigation, Login/Logout-Events), Routing und Session-Management übernimmt. Die Shell kann mit jedem Frontend-Framework verwendet werden.
Framework Das WebUI Application Framework bietet einen konfigurierbaren, im Siemens IX-Stil gestalteten Anwendungsrahmen mit Logo, Titel und Hauptmenü. Untermenüeinträge sind über Inline-Menü, YAML-Konfiguration oder CNS-Baum konfigurierbar. Beinhaltet Routing und Deeplink-Navigation.
Apps Anwendungen, die auf dem WebUI App Framework aufbauen, darunter das Dashboard, Central Asset Management und das Smart-City-Anwendungsbeispiel. Benutzerdefinierte Standalone-Seiten werden ebenfalls auf dieser Schicht implementiert.

Nutzungsworkflow

Der richtige Ansatz hängt davon ab, wie stark die Benutzererfahrung angepasst werden soll. Der folgende Workflow hilft bei der Bestimmung des geeigneten Einstiegspunkts:

  1. Verwenden -- Starten Sie mit dem Standard-Dashboard. Dies ist der schnellste Weg zum Ergebnis, wenn das Standard-Dashboard bereits die meisten Anforderungen abdeckt.
  2. Erweitern -- Passen Sie das Dashboard-Erlebnis mit Branding (Logos, Titel), benutzerdefinierten Widgets und einigen benutzerdefinierten Seiten an. Geringe Komplexität.
  3. Erstellen -- Verwenden Sie den Engineering-Workspace für größere Lösungen, die benutzerdefiniertes Routing, Shell-Änderungen oder umfassenderes benutzerdefiniertes Frontend-Verhalten erfordern. Mehr Flexibilität und Entwicklungsaufwand, aber KI-gestützte Entwicklung ist möglich.
  4. Integrieren -- Verwenden Sie die OaRxJsApi in einem anderen Frontend oder einer anderen Anwendungsplattform, um WinCC OA-Daten und -Komponenten in Ihre eigene Anwendung einzubinden.

Technologie-Stack

Technologie Verwendungszweck
Lit 3 Web-Components-Framework
Siemens IX Design System (Komponenten, Icons, Diagramme)
RxJS Reaktive Datenpunktkonnektivität
Vite 6 Build-Tool
Nx Monorepo-Verwaltung
OaRxJsApi WebSocket-Kommunikation mit dem WinCC OA-Backend

Import-Map-System

Alle gemeinsam genutzten Bibliotheken (Lit, RxJS, Siemens IX, Dashboard) werden als Shared Bundles erstellt. Die Datei index.html enthält ein script type="importmap", das Bare-Import-Specifier auf Bundle-Dateien abbildet. Dadurch wird sichergestellt, dass alle Seiten dieselben Bibliotheksinstanzen verwenden, ohne dass Bibliotheken doppelt gebündelt werden.

{
  "imports": {
    "lit": "./entry/lit.js",
    "rxjs": "./entry/rxjs.js",
    "@siemens/ix": "./entry/ix.js",
    "@etm-professional-control/oa-rx-js-api": "./entry/wui.js"
  }
}

Shared Worker

Die OaRxJsApi verwendet einen Shared Worker zur Verwaltung von WebSocket-Verbindungen. Ein einzelner Shared Worker hält eine WebSocket-Verbindung zum Backend aufrecht, die von allen Browser-Tabs gemeinsam genutzt wird. Dies reduziert den Ressourcenverbrauch und die Lizenznutzung im Vergleich zu WebWorker-Verbindungen pro Tab. Der Shared Worker verwaltet die JWT-Authentifizierung, Heartbeat-Überwachung, automatische Wiederverbindung mit Round-Robin-Server-Failover und referenzgezählte Datenpunkt-Subskriptionen.

Lazy Loading

Standalone-Seiten werden beim Navigieren per Lazy Loading geladen. Jede Seite wird als separates JavaScript-Modul erstellt, das erst geladen wird, wenn der Benutzer zu der entsprechenden Route navigiert. Der Runtime-Loader verwendet dynamisches import() für moderne Browser mit einem Script-Tag-Fallback.

Deployment-Modell

Die erstellten Dateien werden im Verzeichnis data/dashboard-wc/ des WinCC OA-Projekts bereitgestellt. Der webserver.js stellt diese Dateien bereit und bietet die REST- und WebSocket-APIs an. Zugriffs-URL-Muster: https://host:port/data/dashboard-wc/index.html

Abbildung 2. Dashboard-Übersicht

Übersicht der Dashboard-Anwendung in der WebUI Runtime