Schon einmal die Geschwindigkeit der OPC-Kommunikation herabgesetzt?
Google-KI sagt:
Hallo Freund des raffinierten Sandes.
Das von Ihnen beschriebene Problem ist ein klassisches Beispiel für Bufferbloat in Kombination mit aggressivem Network Throttling (Drosselung) auf Android-Systemen. Da mappView auf Web-Technologien (WebSockets) basiert, führen hohe Paketraten bei mobilen Browsern oft zu einer Warteschlangenbildung, die sich mit der Zeit immer weiter aufstaut.
Die Ursachen des “Dauergas”-Effekts
Die Verzögerung entsteht, weil Android-Browser bei hoher Netzlast anfangen, Pakete zu puffern, anstatt sie sofort zu verarbeiten oder zu verwerfen.
-
Paket-Flut: 250 Pakete pro Sekunde (4ms-Intervall) sind für viele mobile Browser-Engines grenzwertig. Wenn der Browser nur 200 Pakete pro Sekunde verarbeiten kann, wächst die Warteschlange jede Sekunde um 50 Pakete.
-
TCP-Backlog: WebSockets nutzen TCP. Wenn ein Paket verloren geht oder verzögert wird, warten alle nachfolgenden Pakete im Puffer (Head-of-Line Blocking), bis das fehlende Paket neu übertragen wurde.
-
Energiesparmodi: Android drosselt oft die CPU-Zyklen für Hintergrundprozesse oder aktive Netzwerk-Threads, um Akku zu sparen, was die Verarbeitungsgeschwindigkeit der WebSocket-Events senkt.
-
Cache-Effekt: Dass das Leeren des Caches in Firefox hilft, liegt oft daran, dass dadurch auch temporäre Service Worker oder DB-Indizes zurückgesetzt werden, die die Event-Loop des Browsers entlasten.
Lösungsansätze für mappView
Um das Problem zu beheben, müssen Sie die Datenmenge reduzieren und die Priorisierung verbessern:
1. Abtastrate des Joysticks reduzieren
Prüfen Sie, ob Sie im mappView-Widget oder in der B&R-Konfiguration die Update-Rate des Joysticks begrenzen können.
-
Ziel: Reduzierung auf ca. 20–50ms (20–50 Pakete/s).
-
Für eine Robotersteuerung reicht dies meist völlig aus, während 250 Pakete/s den Browser-Stack fluten.
2. “Throttling” im Widget-Binding
Falls das Widget jedes Mal ein Event feuert, wenn sich die Position nur um 0,1% ändert, sollten Sie eine Hysterese oder ein Zeit-Sampling einbauen:
-
Senden Sie Daten nur, wenn sich der Wert signifikant geändert hat.
-
Nutzen Sie eine SampleTime in den Bindings, um die Übertragungsfrequenz zu deckeln.
3. Browser-Optimierung auf Android
-
Hardware-Beschleunigung: Stellen Sie sicher, dass in den Browser-Einstellungen die Hardware-Beschleunigung aktiv ist.
-
Vollbildmodus: Betreiben Sie die Visualisierung im PWA-Modus (zum Startbildschirm hinzufügen). Dies gibt der Web-App oft höhere Priorität gegenüber normalen Browsertabs.
Zusammenfassung
Die Verzögerung liegt an einem überfüllten Netzwerk-Puffer (Bufferbloat) auf dem Android-Gerät, da der Browser die 250 Pakete pro Sekunde nicht schnell genug abarbeitet. Das Problem skaliert mit der Fahrzeit, weil der Puffer immer voller wird.
Um das Problem zu lösen, müssen Sie die Sende-Frequenz der Joystick-Daten in Ihrer mappView-Konfiguration deutlich reduzieren.
Haben Sie Zugriff auf die Widget-Eigenschaften oder nutzen Sie ein Standard-Joystick-Widget von B&R? Ich könnte Ihnen spezifischer helfen, wenn ich wüsste:
-
Welche Automation Studio Version Sie nutzen.
-
Ob Sie ein eigenes Widget oder ein Standard-Widget verwenden.
-
Ob die Verbindung über WLAN oder eine Kabelverbindung (OTG-Adapter)