02.12.2009, 11:35
Beitrag #1
|
leinad
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Nov 2007
8.6.1f
2006
en
08134
Deutschland
|
bewegte Grafik, Leistungsprobleme
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
|
|
|
02.12.2009, 13:02
Beitrag #2
|
SeBa
LVF-Guru
Beiträge: 2.025
Registriert seit: Oct 2008
09SP1 & 10 FDS
2008
DE
65xxx
Deutschland
|
bewegte Grafik, Leistungsprobleme
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 ...
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
|
|
|
02.12.2009, 13:10
Beitrag #3
|
leinad
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Nov 2007
8.6.1f
2006
en
08134
Deutschland
|
bewegte Grafik, Leistungsprobleme
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
|
|
|
02.12.2009, 13:18
Beitrag #4
|
SeBa
LVF-Guru
Beiträge: 2.025
Registriert seit: Oct 2008
09SP1 & 10 FDS
2008
DE
65xxx
Deutschland
|
bewegte Grafik, Leistungsprobleme
' 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
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
|
|
|
02.12.2009, 13:36
Beitrag #5
|
leinad
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Nov 2007
8.6.1f
2006
en
08134
Deutschland
|
bewegte Grafik, Leistungsprobleme
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.
|
|
|
02.12.2009, 14:14
Beitrag #7
|
leinad
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Nov 2007
8.6.1f
2006
en
08134
Deutschland
|
bewegte Grafik, Leistungsprobleme
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 wird
Danke erstmal für den Tipp.
Grüße,
leinad
|
|
|
02.12.2009, 15:25
Beitrag #8
|
leinad
LVF-Neueinsteiger
Beiträge: 5
Registriert seit: Nov 2007
8.6.1f
2006
en
08134
Deutschland
|
bewegte Grafik, Leistungsprobleme
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.
Grüße,
leinad
|
|
|
02.12.2009, 15:32
Beitrag #9
|
|
|
28.12.2009, 15:06
(Dieser Beitrag wurde zuletzt bearbeitet: 28.12.2009 15:14 von sakul85.)
|
sakul85
LVF-Neueinsteiger
Beiträge: 1
Registriert seit: Dec 2009
8.0
-
de
35392
Deutschland
|
bewegte Grafik, Leistungsprobleme
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!
|
|
|
| |