LabVIEWForum.de - Zeitmessung zweier Bool-Signale(Stoppuhr)

LabVIEWForum.de

Normale Version: Zeitmessung zweier Bool-Signale(Stoppuhr)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich stehe zurzeit bei meinem Projekt an. Habe die Aufgabe die Zeit zu messen die zwischen der Ansteuerung eines Ventils und der daraus hervorgerufenen Druckerhoehung vergeht.
Die Hardware habe ich soweit beisammen und auch die Software funktioniert, mit Ausnahme der Zeitmessung.

Also im Detail: Habe einen NI USB-6008 Data Logger und verwende zwei analoge Eingaenge. Die Signale sind beide einfache Spannungserhoehungen.
Habe die Software soweit dass ich die Signale auslese und in boolsche Signale umwandle, wenn diese einen vorgegebenen Wert ueberschreiten. Es beginnen also 2 LEDs nacheinander zu leuchten.

Die Frage an euch ist jetzt: Wie schaffe ich es die Zeit zwischen den beiden Schaltvorgaengen zu messen?

Die Zeit sollte moeglichst genau sein, also idealerweise 1/1000 sec.

Vielen Dank!

Fabian
Du musst dir mal die Elemente auf der Palette Timing angucken...und einfach zwei mal den Baustein "Tick count" nehmen und die Werte voneinander abziehen

Das mit der ms Auflösung wird schon schwieriger...erstens löst der Timer nicht geringer auf, und zweitens macht deine SW ja auch noch was anderes...von daher wirst du da nur mäßig genau werden!

Ansonsten wäre das ne Aufgabe für eine Counter-Karte, die macht das HW-mäßig...

A.
Das kommt jetzt auch auf deine Datenerfassung an...
Mit der 6008 kannst du ja Analogsignale mit einem Hardware-Takt der Karte erfassen. Wenn du jetzt weisst, an welchen Indices der erfassten Array deine Änderung geschieht und du weisst, wie groß der Abstand zwischen 2 erfassten Werte ist, musst du nur noch etwas rechnen.

Gruß, Jens
Hallo!

Viele Dank fuer die schnellen Antworten!

Mein USB 6008 kann 10kS/s auslesen. Das sollte doch schnell genug sein oder?

Die maximal exakteste Loesung waere also 10.000 Daten pro Sekunde auszulesen und diese dann mittels zB Excel VBA zu zaehlen?

Um meine derzeitige Loesung noch abzuschliessen habe ich noch 2 kleine Fragen:

Warum zeigt mir meine Zeitanzeige nur ganze Sekunden an?
Dadurch dass die Signale laenger True sind loest der Timer erst aus wenn er wieder False ist. Ich braeuchte also nur einen Impuls zum ausloesen.
Weiss jemand eine Loesung?

LG
Fabian
Hallo

Habe ein Beispiel gefunden wo jemand auf 1/1000 sec genau die Zeit misst.

Leider kenne ich mich mit den Schleifenstrukturen die hier verwendet wurden ueberhaupt nicht aus.

Kann mir bitte jemand zeigen wie man die Zeitmessung in meinen bestehenden Manometer einbauen kann?
LV 8.6

Vielen Dank

Fabian
' schrieb:Mein USB 6008 kann 10kS/s auslesen. Das sollte doch schnell genug sein oder?

Die maximal exakteste Loesung waere also 10.000 Daten pro Sekunde auszulesen und diese dann mittels zB Excel VBA zu zaehlen?
Nein, Nein, Nein.

1. Die 10kS/s sind eine Gesamtdatenrate für alle Kanäle zusammen. Da bei der Erfassung mehrere Kanäle Multiplexing vorliegt, kannst du 2 Kanäle mit max. 5 kHz messen.
2. Wieso per Excel VBA zählen?
3. Deine miese Sekunden-Auflösung hat mehrere Gründe:
-Verwendung DAQ-Assi, ersetze den mal durch normale DAQmx-VI-Code (z.B. Rechtsklick auf Assi -> Generate DAQmx-Code.
-Dann hast du den Assi immer so definiert, dass du eine Sekunde lang ein Signal einliest. Und dann wandelst du diese 1000 Messwerte in eine Zahl. Deine ganze hohe Zeit-Auflöung ist weg. Wenn schon, dann musst du die gesamten aufgezeichneten Daten nach deinem Flankenwechsel durchsuchen, dann bestimmst du den Zeit-Index, an dem der Wechsel in den Daten stattgefunden hast, das machst du für beide Kanäle, und dann ziehst du diese beiden Zeiten voneinander ab.
4. Das was du gerade programmiert hast, hat mit dem realen Zeitereignissen gar nichts mehr zu tun. Du holst dir im Sekundentakt einen Messwert aus den Daten (welchen, weiss ich auch nicht, das kommt von diesem Sch...-Dynamic-Data-Format und der Wandlung nach Double). Dann vergleichst du diese beiden Werte quasi parallel (ja, LV macht daraus parallele Prozesse) gegen eine Schwellwert und holst dir dann einen Softwaretaktwert. Alles (zeitmäßig) absolut unvorhersehbar, welche Werte da rauskommen, reiner Zufall...

Gruß, Jens
Referenz-URLs