LabVIEWForum.de - LabVIEW zu langsam?

LabVIEWForum.de

Normale Version: LabVIEW zu langsam?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich versuche mit einer DAQ-Karte (6251) mit 15 kHz Werte aufzunehmen.
Die Aufnahme wird gestartet wenn ein separates Triggersignal ebenfalls über DAQmx erkannt wird.
Das Signal erscheint mit einer Frequenz von 500 Hz und bei jeder steigenden Flanke sollen von zwei Kanälen analog 24 Werte mit 15 kHz aufgenommen werden.
Mein Problem ist nun, wenn die Triggerflanken weiter als 2 ms (etwa 5 ms) auseinander liegen funktioniert alles wunderbar.
Wenn aber die Aufnahme mit 500 Hz getriggert wird, verliere ich etwa jeden zweiten Trigger.
Meine Vermutung geht dahin, dass die anschließende Auswertung der Messdaten zu lange dauert und deshalb Triggerflanken übersehen werden.

Hat von euch einer eine Idee wie man das ganze beschleunigen könnte damit keine Werte mehr verlohren gehen?

Hier mal mein derzeitiges Programm:
[attachment=19700]Lv85_img

Gruß Marco
Hallo schroepel,

wenn es keine Echtzeitauswertung werden soll kannst Du den Trigger und die zwei zu messenden Signale ständig aufzeichnen (ins RAM wenn die Messung länger ist auf Platte streamen) und dann nach der Messung auswerten.

Grüße

kpa
' schrieb:Hallo schroepel,

wenn es keine Echtzeitauswertung werden soll kannst Du den Trigger und die zwei zu messenden Signale ständig aufzeichnen (ins RAM wenn die Messung länger ist auf Platte streamen) und dann nach der Messung auswerten.

Grüße

kpa

Hallo kpa,

da es sich nur um Messungen über ein paar Sekunden handelt und die Auswertung auch nach der Aufnahme der Messwerte ausreichend wäre,
wär so eine Lösung sicherlich ganz gut. Aber leider weis ich nicht so recht wie das umzusetzen ist.

Beste Grüße.
Hallo schroepel,

zeichne alle 3 Kanäle (Trigger + 2x Messsignal) parallel auf und schreibe sie in ein xy-Diagramm dann kannst Du nach der Messung mit dem Zoomwerkzeug schauen was nach den positiven Flanken deines Triggersignals passiert.
24 Messwerte bei 15kHz dauern 1,6ms und bei 500Hz hast Du 2ms Peridendauer, dann sind für Dich ja eh fast alle Daten interessant.

Grüße

kpa
' schrieb:zeichne alle 3 Kanäle (Trigger + 2x Messsignal) parallel auf und schreibe sie in ein xy-Diagramm dann kannst Du nach der Messung mit dem Zoomwerkzeug schauen was nach den positiven Flanken deines Triggersignals passiert.
24 Messwerte bei 15kHz dauern 1,6ms und bei 500Hz hast Du 2ms Peridendauer, dann sind für Dich ja eh fast alle Daten interessant.

Also ich hab jetzt alles mögliche ausprobiert und bin langsam am verzweifeln, weils einfach nicht besser wird. Pccrash
Jetzt hab ich einfach mal zum Testen meine gesamte Auswertung und alles rausgenommen und betrachte nur den Schleifenzähler der While-Schleife
und selbst der zeigt nur die etwa die Hälfte an.
Mach ich hier irgendetwas falsch oder ist LabVIEW dafür wirklich einfach zu langsam.
Den Rechner hab übrigens mittlerweile auch schon gewechselt weil der auch nicht der schnellste war.

Hier mal mein letztes Test-VI, das eigendlich komplett nackt ist und theoretisch nur Daten ausliest:

[attachment=19726]Lv85_img

[attachment=19727]

Kann mir von euch jemand sagen was hier nicht stimmt, denn ich versteh das langsm nicht mehr?Wacko

Gruß Marco
Rufst du den im Screenshot gezeigten Code-Abschnitt immer wieder auf? Also Start....warte auf Trigger...auslesen...Ende der Schleife und dann ClearTask?

Dann wird das nicht funktionieren! Das ständige Init/lesen/Clear dauert, d.h. wenn du jeden Trigger mitkriegen willst wird die Zeit zwischenn zwei Triggern wirklich nicht ausreichen. Wieviele Trigger kommen denn insgesamt, oder läuft das unbegrenzt lange und du willst wirklich jeden Trigger über längere Zeit erfassen und sofort danach die Signale auswerten und gleich wieder bereit sein für den nächsten Trigger?






EDIT: Post #3100
Hallo schroepel,

versuche es man wenn Du das Trigger-VI(mit grünem Pfeil) mit in die While-Schleife nimmst oder auch noch das VI für die Flankenauswahl mit in die Schleife nimmst.
Für mich sieht das so aus als ob Du einmal über Trigger startest und dann immer die nächsten 24 Werte nimmst ohne Trigger.

Du kannst es aber auch so machen wie ich Dir schon vorher beschieben habe:

Alles aufzeichnen (Messsignale + Trigger) und später die relevanten Teile aus den Messsignalen ausschneiden.
Dazu musst Du alle Meßwerte in ein Schiftregister schreiben und ab jeder positiven Triggerflanke 24 Werte aus dem Meßwertarray lesen.

Grüße

kpa
Also ich habs nun so in der Art gemacht wie kpa vorgeschlagen hat.
Mit der steigenden Flanke des ersten Triggers starte ich die Messung und nehme alle Werte incl. der Trigger komplett auf.
Nach Abschluss der Messung übergebe ich meine gesamten Werte in ein 2D-Array und zerlege dieses dann in je 30 Wertepaare.
So hab ich meine Einzelmessungen und kann diese dann weiter auswerten.

Gruß Marco
Referenz-URLs