# e!Cockpit Webvisu beschleunigen



## Magnum (29 Juni 2018)

Hallo,
ich bin neuer Nutzer hier im Forum und Anfänger in Codesys/e!Cockpit. Bisher habe ich viel mit Arduinos und Labview gemacht.
ich baue mir gerade mit einem PLC200 und diversen I/O Modulen eine Messwerterfassung auf. Die Visualisierung soll möglichst mit Webvisu gemacht werden.

Für eine flüssige Darstellung brauche ich eine Aktualisierung von mind. 10Hz, schneller wäre noch besser. Erste Versuche sind recht vielversprechend, die Aktualisierungsrate habe ich auf 75ms eingestellt, die durchschnittliche Zykluszeit liegt bei rd. 35ms. Momentan habe ich 11 Bargraphen und 11 Textfelder für die Darstellung im Einsatz. Zusätzlich nutze ich 24 Textfelder für Konfigurationsdaten.
Jetzt werden noch ca. 30-40 Textfelder für die Konfiguration sowie ca. 10 Messdatenfelder dazu kommen. Ich befürchte nun, dass durch diese Felder die Aktualisierung nach unten geht. Hat jemand Erfahrung, wie man so viele Felder möglichst Performanceschonend anzeigen kann? Macht es Sinn diese in eine Registersteuerelement zu packen und für maximale Aktualisierung ein leeres Register anzuzeigen? Oder ist es besser eine extra Visualisierung für die Konfiguration zu bauen und bei Bedarf umzuschalten?
Weiss jemand wie die Visualisierung intern von statten geht (werden grundsätzlich alle Visualisierungen aufbereitet, oder nur die, die gerade angezeigt werden, wie ist das bei "ausgeblendeten" Feldern)?

Vielen Dank für Eure Antworten


----------



## KLM (29 Juni 2018)

Moin,
alle Werte einer Seite werden aktualisiert. Je mehr es werden, desto länger dauert das natürlich. D.h. bei Deinem Bedarf an Performance, der übrigens zu hinterfragen ist, sollte alles was Du nicht zwingend brauchst auf eine extra Seite ausgelagert werden. Statische Objekte werden nur beim Seitenwechsel geladen, wobei je nach Speicher des anzeigendens Panels zwischengespeichert werden und erst ein Wechsel auf eine nicht im Speicher liegende Seite längere Ladezeiten hat.
Darf ich Dich um Rückmeldung bitten? Würde mich auch interessieren, ob das umsetzbar ist.


----------



## Magnum (29 Juni 2018)

Hallo,
danke für die schnelle Antwort.
Die hohe Aktualisierung ist leider nötig, da es sich um die Datenanzeige eines Triebwerks handelt und die Werte sich sehr schnell Grenzwerten annähern können. Damit man den Trend gut erfassen kann ist eine flüssige Darstellung ohne Sprünge äusserst wichtig. Ab 10 Hz geht das recht gut.
Ich hab jetzt mal noch ein wenig getestet: Die aktuell vorhandenen 24 Textfelder für die Konfiguration habe ich in ein Registersteuerelement gepackt und dort noch ein leeres Register eingebaut. Wenn man auf das leere Register schaltet läuft der Task schneller (22ms zu 28ms).
Ich werde mal noch weiter rumprobieren. Mit Frames hab ich noch nichts gemacht, ist das sinnvoll?
Gibt es ansonsten Tipps die man beachten sollte, wo man nicht so einfach drauf kommt?


----------



## KLM (29 Juni 2018)

Klingt also bräuchtest Du nur ein schnelles Logging der Werte im Programm, aber nicht zwingend eine hohe Aktualisierungsrate auf der Visu?!
Du brauchst eine neue Visu und einen Umschaltung der Visu (siehe Eingabekonfig). Mit dem Frame Objekt würdest Du Templates auf eine bestehende Visu einbinden.


----------



## Magnum (29 Juni 2018)

Nein, ich brauche eine schnelle Anzeige. Die Steuerung des Triebwerks erfolgt von Hand, deshalb muss man die Anzeigewerte ruckelfrei angezeigt bekommen.
Ich gebe bereits die Daten zusätzlich an die serielle Schnittstelle aus. Die lese ich auf einem Rechner mit Keysightt Vee (ähnlich wie Labview) ein und zeige sie dort nochmals an. Funktioniert super flüssig (Updaterate hängt natürlich von der Sprungantwort der verwendeten I/O Module ab). Ist aber etwas aufwendiger. Man muss den Anzeigerechner über seriell verbinden und dort die Anzeigesoftware erstellen/pflegen. Mit Webvisu wäre das alles viel einfacher, keine Extrasoftware nötig.
Danke für die Info über Frames. Muss mich da mal einlesen, momentan mach ich Learning by Doing.


----------



## KLM (29 Juni 2018)

Learning by doing, klingt, also solltest Du mal bei Youtube vorbeischauen und nach "e!COCKPIT Visualisierung" suchen. Da sind ein paar gute Sachen dabei.


----------



## Magnum (9 Juli 2018)

Mal ein kurzes Update:
Ich habe mittlerweile 13 Bargraphen  und 13 Textfelder in der Visu. Die durchschnittliche Zykluszeit liegt bei ca. 10ms, die maximale Zykluszeit bei ca. 45ms. Trotzdem bekomme ich nur eine Aktualisierung von rd. 8 Hz hin, was für meine Anwendung zu langsam ist. Anscheinend wird die Visu noch anderweitig ausgebremst.
Der Visu_task sowie die Webvisu-Aktualisierung sind auf 40 ms eingestellt. Andere Werte führen zu geringeren Aktualisierungen.
Der ausgewählte Stil im Visualisierungsmanager wirkt sich erheblich auf die Geschwindigkeit aus, mit dem Flat style läuft es am schnellsten.
Je mehr Werte sich ändern umso langsamer wird das ganze.
Da die PFC200 nur einen 600Mhz Prozessor hat habe ich noch auf einen Raspberry Pi 3B mit 1200 Mhz die Codesys SoftSPS installiert. Läuft etwas flotter, ist aber auch nicht der Durchbruch.

Ich bin nun auf der Suche nach einer anderen Möglichkeit zur Visualisierung. Mit Keysight Vee geht es zwar über seriell, ist aber nicht allzu schön. Leider unterstützt Vee kein Modbus o.ä.


----------



## jeme-Automatisierung (9 Juli 2018)

Hi, 
hast du mal mit der Taskpriorität der Webvisu gespielt?


----------



## Magnum (9 Juli 2018)

Hallo,

ja, habe ich. Macht aber nur einen sehr geringen Unterschied.


----------

