LabVIEWForum.de
Zeitmessung write-read - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Zeitmessung write-read (/Thread-Zeitmessung-write-read)



Zeitmessung write-read - Charalampos - 21.11.2013 09:50

Hallo an die community

Im Rahmen meiner Masterarbeit stehe ich vorm aktuellen Problem. Ich benutze die USB-6259 um mit einer Spannung einen Verstärker zu steuern. Dieser Treibt einen Strom und löst mir einen Schalter aus. Die Auslösezeit beträgt 15ms (gemessen mit einen Testgerät).Durch eine Schaltung am Schalter steigt beim Auslösen eine Spannung von 0 auf 5 Volt. Diese lese ich mit einen Digitalen Eingang der Karte aus. Ich würde jetzt gerne die Zeit vom Spannungsausgang bis zur aufsteigenden Flanke messen doch mein derzeitiges VI misst etwa 55-80ms.Erwünscht wären natürlich 15ms. Ich denke dass der Zeitpunkt der bei meinen VI als Anfang verwendet wird ist der Zeitpunkt an der Write-Daq in den buffer schreibt und nicht in den Kanal ausgibt.
Habe ich damit Recht?
Wie könnte ich den Zeitpunkt der Spannungsausgabe bekommen?
Oder alternativ könnte ich die Zeit zwischen Dateneingang und des Ausgebens am Kanal messen und immer abziehen?
Ich wäre für jeden Rat dankbar.
[attachment=47356][attachment=47357]


RE: Zeitmessung write-read - GerdW - 21.11.2013 10:07

Hallo Charalampos,

mit Einzelwertmessung wirst du nie die gewünschte Auflösung/Genauigkeit hinbekommen. Stell den DI-Task auf Hardwaretiming um und verwende z.B. Samplerate von 10kHz, dann bekommst du schon 100µs Auflösung. Du musst das aufgenommene Signal dann einfach hinterher auswerten und auszählen, wenn die steigende Flanke aufgetreten ist...

Zitat:Wie könnte ich den Zeitpunkt der Spannungsausgabe bekommen?
Dazu verwendet man Trigger. ("StartTrigger" etc.). Und es gibt fertige Beispiel-VIs dazu: einfach mal den ExampleFinder starten...


RE: Zeitmessung write-read - Charalampos - 21.11.2013 10:52

Leider ist es so dass ich beim Hardware timed single point bei beiden Tasks AnalogOut und DigitalIn den Fehler 200077 Requested value is not a supported value for this property bekomme.

Die Trigger Funktion gibt doch bei ansteigender Flanke eine Task weiter. Ich möchte aber den Zeitpunkt der Spannungsausgabe wissen. Dabei soll der Digitale Eingang die ganze Zeit den Kanal lesen und bei ansteigender Flanke den Zweiten Zeitpunkt ausgeben. Was Ähnliches habe ich bei den Beispielen nicht entdeckt. Ich habe sie vorm Posten schon durchsucht…

Danke


RE: Zeitmessung write-read - GerdW - 21.11.2013 11:02

Hallo Charalampos,

Zitat:Leider ist es so dass ich beim Hardware timed single point bei beiden Tasks AnalogOut und DigitalIn den Fehler 200077 Requested value is not a supported value for this property bekomme.
Die USB6259 soll laut Manual bis zu 10MHz hardgetimete DI/DO können...
Und ich habe auch nicht gesagt, dass du weiterhin mit SinglePoint-Abfrage arbeiten sollst!

Zitat:Die Trigger Funktion gibt doch bei ansteigender Flanke eine Task weiter. Ich möchte aber den Zeitpunkt der Spannungsausgabe wissen. Dabei soll der Digitale Eingang die ganze Zeit den Kanal lesen und bei ansteigender Flanke den Zweiten Zeitpunkt ausgeben. Was Ähnliches habe ich bei den Beispielen nicht entdeckt. Ich habe sie vorm Posten schon durchsucht…
Mit den (internen) Triggern einer DAQ-Karte kann man verschiedene Tasks gleichzeitig starten lassen. Das willst du doch?
Du startest gleichzeitig AO- und DI-Task und misst die Zeit, bis am DI eine steigende Flanke ankommt. Da Ausgabe und Einlesen gleichzeitig starten, kannst du deine Signallaufzeit messen...
Ich bin mir sicher, dass es genau dafür Beispiele gibt. Leider habe ich hier DAQmx nicht installiert, kann dir also kein konkretes Beispiel-VI benennen...


RE: Zeitmessung write-read - Charalampos - 21.11.2013 11:21

Ich habe da 4 Möglichkeiten zum einstellen des Acquisition Mode:
1Sample (On Demand)
1Sample (HW Timed)
N Samples
Continuous Samples
Welchen sollte ich verwenden ? Du sprichst vom Digital Read wie ich annehme...

Also sollte ich beide Funktionen Read und Write mit getriggertenTasks starten und nur die Zeit bis zum Flankenanstieg messen… gut werde ich versuchen. Muss ich dabei den Digital read aus der While Schleife nehmen?


RE: Zeitmessung write-read - GerdW - 21.11.2013 11:38

Hallo Charalampos,

schau dir bitte auch die Beispiele an zum Aufnehmen von analogen und digitalen Waveform-Signalen. In diesen Beispiel-VIs wird erläutert, wie man das Hardwaretiming einstellt (per DAQmxTiming) und dann Daten einliest (per DAQmxRead und "NSamp"-Modus).

Es gibt sehr viele DAQmx-Beispiel-VIs, die alle bestimmte Aspekte des umfangreichen DAQmx-Treibers erläutern. Schau sie dir an!

Zitat:Muss ich dabei den Digital read aus der While Schleife nehmen?
Wenn du gleich mehrere Samples einliest, brauchst du wahrscheinlich keine Schleife um das DAQmxRead mehr.
Mein Vorschlag: stell ein Samplerate von 10kHz ein und lese per "finite measurement" 2000 Samples ein. Damit nimmst du Daten über einen Zeitraum von 200ms (2000/10khz) mit einer zeitlichen Auflösung von 100ms (1/10kHz) auf, das sollte für deine Aufgabenbeschreibung ausreichen. Wie man das macht, erläutern die Beispiel-VIs...