mappView Joystick extrem verzögert

Hallo Freund des raffinierten Sandes.

Aktuell haben wir große Probleme mit dem Joystick im mappView.

Wir fahren den Roboter mit einem Joystick ( vorwärts rückwärts - lenken links rechts )

Wenn man Finger anhebt fährt der Roboter aber noch weiter.

Wenn man vorwärts fährt und nach eine Seite lenkt so erfolgt dieses Lenken auch verzögert.

Scheinbar ist die Verzögerung umso länge je länger man bereits fährt.

Uns ist aufgefallen das es nur bei Android auftritt.

Nicht bei Apple und Windows.

Auch nicht unbedingt ( nur sehr wenig ) von der CPU-Leistung und vom Browser abhängt.

Mit Wireshark konnte ich feststellen das wenn man den Joystick bedient die Anzahl der Datenpakete pro Sekunden von unter 20 auf über 250 pro Sekunden ansteigt und anhält solange man den Joystick bedient.

Es soll bei Android ein Throtteling der Datenkommunikation geben ?

Kann es sein das durch das Throtteling Datenpakete verzögert übertragen werden.

Die Datenpakete aber gepuffert werden und dadurch die Verzögerung mit der Zeit immer länger wird.

Wenn man bei Firefox alles löscht ( Cache entleert etc … ) dann funktioniert es.

Habt Ihr da Erfahrung ? Oder ähnliches beobachten können ?

Es würde auf jeden Fall das Problem erklären ?

Danke Euch für Eure Hilfen

beste Grüße

Mandi

You have mentioned that you have a problem on the Android system. I’m not sure how common a use case that is, I mean Android + mapView + joystick widget and Firefox browser. I would also not rely on this to control robot movement. For me, it looks like Android is not able to send values fast enough, so there is some kind of value buffering. I’m not sure how you can handle it, but I think there will be a need for some kind of application workaround. Maybe from Community point of view we can focus on this? So is there anyone who uses joystick in mappView for movement control? do you rely on value from this widget or you have some logic on PLC side?

Hallo

In einer VC-Visu steuern wir einen 4000kg schweren autonom fahrenden Roboter damit. Laut TÜV ist es in so Ordnung. https://www.hetwin.at/files/bilder/Aranom/Aranom.png

Bei der Maschine mit mappView Visu ist die Anforderung an die Sicherheit sehr gering. Die Maschine fährt nur in einem geschützten Bereich. https://www.hetwin.at/files/bilder/Avenger/Avenger%20im%20Einsatz.jpg

Zu der Anwendung : Ich habe die X und Y-Werte mit einer Variable verbunden. Im SPS-Programm wird damit direkt eine Motorelektronik angesteuert.

Es wäre toll wenn jemand eine Idee hätte. Mir gehen die Ideen leider aus.
Danke Euch
beste Grüße
Mandi





Hello

In a VC visu, we use it to control a 4000kg autonomously driving robot. According to the TÜV, it’s okay. https://www.hetwin.at/files/bilder/Aranom/Aranom.png

With the machine with mappView Visu, the safety requirements are very low. The machine only runs in a protected area. https://www.hetwin.at/files/bilder/Avenger/Avenger%20im%20Einsatz.jpg

About the application: I have connected the X and Y values with a variable. In the PLC program, this is used to directly control motor electronics.

It would be great if someone had an idea. Unfortunately, I’m running out of ideas.
Thank you
Best regards
Mandi

I copy there english translation so all users can see it out of the box, maybe it will help to start discussion there.

Hi Manfred, it looks like no one here has experience with your special use case. Sorry. Please get in touch with local support team and if possible update us with your findings or workaround you have implemented. Thanks a lot. Jaroslav

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.


:white_check_mark: 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)

Hello

I’ve solved it like this:

I disconnected the direct variable connection for the X and Y coordinates.

I programmed the XChanged and YChanged events.

These events read the X and Y values ​​and pass them to the PLC program.

The number of transmitted data packets has dropped to just over 100, and the operator is responding quickly enough.