LabVIEWForum.de
bewegte Grafik, Leistungsprobleme - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Grafik & Sound (/Forum-Grafik-Sound)
+---- Thema: bewegte Grafik, Leistungsprobleme (/Thread-bewegte-Grafik-Leistungsprobleme)



bewegte Grafik, Leistungsprobleme - leinad - 02.12.2009 11:35

Hallo liebe LabVIEW Gemeinde,

ich arbeite zur Zeit an einem Projekt, bei dem 4 Beschleunigungssensoren eingelesen werden, die Daten werden mit Hilfe eines Ladungsverstärkers / Integrierers in Geschwindigkeitssignale gewandelt.

Diese Signale werden dann in LV eingelesen und im Graphen dargestellt.
Zusätzlich werden aus den Signalen der Weg und die Beschleunigung berechnet und dargestellt.

Man Stelle sich vor, die 4 Sensoren sind an den Ecken einer Platte befestigt und diese Platte wird mit einem Schwingtisch sinusförmig erregt. Je nach Frequenz kommt es zu Resonanzen, manchmal besonders stark an einer Ecke der Platte, manchmal an der gesammten Platte, je nachdem mit welcher Frequenz die Platte erregt wird.

Jetzt zu meinem Problem:
Die Signale der Sensoren sollen graphisch dargestellt werden. Nicht nur in einem Graphen sondern auch durch eine Zeichnung der Platte.

D.h. die Platte mit den Sensoren soll in einfacher Form in LV integriert werden und am FP angezeigt werden. Es soll also möglich sein, die Bewegung der Platte direkt zu visualisieren und das permanent.

Das funktioniert soweit auch recht gut mit den LV-Bildfunktionen.

Für eine einfache Grafik, also einfaches Rechteck läuft das Programm stabil, will man aber mehr, also beispielsweise 3d - Darstellung der Platte und die Bezeichnung der Sensoren im Bild integriert, dann leidet die Performance erheblich.

Das Problem an der Sache ist, dass wirklich jeder Punkt neu gezeichnet werden muss und das immer und immer wieder. Das bedeutet, dass die komplette Zeichnung bei jedem eingelesenen Sample neu berechnet werden muss.

Hat vieleicht jemand Tipps, wie ich die Performance des Programms steigern könnte?


Grüße,

leinad


bewegte Grafik, Leistungsprobleme - SeBa - 02.12.2009 13:02

Das Bild der Platte nicht bei jedem Sample updaten sondern nur alle ~250ms oder alle X Samples. Das sollte reichen um dem Betrachter ein bewegtes Bild darzubieten.

Gruß SeBa

EDIT:
Wenn du das so machst, mach es gleich variabel und bau eine Refresh-Bedienelement ein... sowas wie ein Slider von "Refresh bei jedem Sample" bis "Refresh alle [2^64]-1 Samples Tongue...


bewegte Grafik, Leistungsprobleme - leinad - 02.12.2009 13:10

das habe ich auch schon versucht,

je nachdem welchen Weg ich gehe können dabei aber 2 Fehler auftreten:

1. Daten z.B in ne queue schreiben und diese daten dann alle ~250ms anzeigen:

-> das bedeutet es schreibt 250ms lang die Daten in eine queue o.ä. und liest diese dann so schnell wie möglich aus.
-> falsche Darstellung der Bewegung (keine kontinuierliche Darstellung)

2. nur jedes x-te Sample anzeigen

-> mögliche Plattenbewegungen werden nicht dargestellt
-> besonders schlecht für "slow motion" Anzeige über z.B. eine Periode


bewegte Grafik, Leistungsprobleme - SeBa - 02.12.2009 13:18

' schrieb:das habe ich auch schon versucht,

je nachdem welchen Weg ich gehe können dabei aber 2 Fehler auftreten:

1. Daten z.B in ne queue schreiben und diese daten dann alle ~250ms anzeigen:

-> das bedeutet es schreibt 250ms lang die Daten in eine queue o.ä. und liest diese dann so schnell wie möglich aus.
-> falsche Darstellung der Bewegung (keine kontinuierliche Darstellung)
-> neee... du schreibst alle 250ms ein Sample in die Queue und liest es aus

2. nur jedes x-te Sample anzeigen

-> mögliche Plattenbewegungen werden nicht dargestellt
-> Bewegungen die so schnell sind, dass das Auge sie nicht wahrnehmen kann, brauchen auch nicht dargestellt werden
-> besonders schlecht für "slow motion" Anzeige über z.B. eine Periode
-> SlowMotion muss nicht mit 1000 S/s dargestellt werden... 25 S/s (-> Fernsehn) reicht doch aus. Das ist ja sowieso etwas, was du nicht online während der Messung machst, oder?

Gruß SeBa


bewegte Grafik, Leistungsprobleme - leinad - 02.12.2009 13:36

Die slow motion wird bei laufendem Programm gemacht um eben genau sehen zu können wie sich die Platte bei einer bestimmten Frequenz verformt (und ob das mit den Berechnungen übereinstimmt). Dazu ist es notwendig viele Samples zu haben um diese Bewegung so genau wie möglich darzustellen. Bei der slow motion habe ich auch keine Performance einbrüche, da je die Anzeige der eingelesenen Samples extrem verlangsamt ausgegeben wird, das Programm also genug Zeit hat für die Berechnung.

Kritisch ist es eben bei der "normalen" Anzeige da dort die Grafik sehr oft neu berechnet werden muss.


bewegte Grafik, Leistungsprobleme - SeBa - 02.12.2009 13:47

Hast mich falsch verstanden... Du zeichnest z.B. einen Sensor mit 1000S/s auf. In der SlowMo spielst du das aber mit 25S/s ab... 1 Sekunde Echtzeit dauert in der SlowMo also 40 Sekunden.

In der normalen Anzeige zeichnest du den Sensor ja auch mit 1000S/s auf... und spielst mit 1000S/s ab. Das bedeutet 1000 Bilder pro Sekunde die du darstellst. Das meine ich mit Bewegungen die man nicht sehen kann. In diesem Fall wirst du ein flüssiges Bild bekommen, wenn du jeden 40.ten Sample darstellst.

Falls wir aneinander vorbei reden, wäre es an der Zeit man mit nem Screenshot / VI rauszurücken.

Gruß SeBa


bewegte Grafik, Leistungsprobleme - leinad - 02.12.2009 14:14

Nein, wir reden nicht aneinander vorbei, du hast vollkommen recht.

Die Performance würde erheblich gesteigert, wenn ich im "normalen" Modus nur jedes X-te Sample anzeige.

Das würde bedeuten, ich müsste die Queue "umschalten", also im "normalen Modus" nur jedes X-te Sample rein und im slowmo-Modus alle Samples. Mal sehen ob das was wirdSmile

Danke erstmal für den Tipp.

Grüße,

leinad


bewegte Grafik, Leistungsprobleme - leinad - 02.12.2009 15:25

Ich hab jetzt das Programm so umgebaut, dass im "normal" Modus nur jedes X-te Sample "gemalt" wird und im slowmo Modus alle eingelesenen Samples aber mit Zeitverzögerung.

Funktioniert einwandfrei, vielen Dank.

Manchmal denkt man nicht an die einfachsten Sachen. Rolleyes

Grüße,

leinad


bewegte Grafik, Leistungsprobleme - SeBa - 02.12.2009 15:32

Top.

Dais


Gruß SeBa


bewegte Grafik, Leistungsprobleme - sakul85 - 28.12.2009 15:06

Hallo Leinad,
Ich habe einen 3d Beschleunigungssensor der mir für x,y,z einen Spannungswert ausgibt. Die Signalverläufe konnte ich auch schon erfolgreich dargestellen.

Meine Frage:
Weiterhin will ich, wie du es auch schon beschrieben hast, die Lage des Sensors im Raum visualisieren (in realtime). Der Sensor soll dabei durch ein Rechteckiges Objekt auf dem FP dargestellt werden. Leider habe ich wenig Erfahrung mit LV und kenne mich mit der Elementpallette noch nicht so gut aus. Ich habe schon einiges versucht, aber konnte keine Lösung für mein Problem finden.

Vielleicht kannst du noch mal kurz beschreiben wie du die 3d Visualisierung des Rechtecks genau realisiert hast.

Vielen Dank im Voraus!