INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Laufzeitmessung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.04.2017, 11:58
Beitrag #1

Robo Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Apr 2017

2014 SP1
2017
DE



Laufzeitmessung
Hallo,

ich versuche im Moment eine Laufzeitmessung mit LabVIEW zu realisieren. Die Erzeugung des Schallsignals bin ich wegen fehlender Hardware noch nicht angegangen und konzentriere mich im Moment auf die Erfassung, sowie die Zeitmessung.
Die Zeit soll ab dem Zeitpunkt gemessen werden, an dem das Signal gesendet wird. Anschließend will ich die Zeit stoppen, sobald die Amplitude des Schalldrucks am Aufnahmegerät einen gewissen Wert überschreitet. Im Fall des Rechtecksignals sollte die Flanke des Signals sehr steil und der vorgegebene Wert schnell erreicht sein.
Im Anhang ist mein Entwurf zu sehen. Nun würde ich noch gerne die vergangene Zeit auf der x-Achse des Graphen darstellen, was noch nicht so ganz funktioniert.. Ist das der richtige Weg, oder kann die Zeitmessung auch über einen Trigger direkt mittels MAX erfolgen?

Viele Grüße,
Robo


Angehängte Datei(en)
14.0 .vi  messung.vi (Größe: 21,1 KB / Downloads: 233)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.04.2017, 12:19 (Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2017 12:21 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Laufzeitmessung
Hallo robo,

Zitat:Die Zeit soll ab dem Zeitpunkt gemessen werden, an dem das Signal gesendet wird.
Dazu sollte man den AI-Task mit dem AO-Task gemeinsam starten. Schau mal im Beispielfinder nach Beispielen, die das demonstrieren!
Wenn du mit so einem Starttrigger arbeitest, reduziert sich die Zeitmessung darauf, den AI-Task mit fester Samplerate laufen zu lassen und einfach die Samples bis zu deinem gewünschten Signalpegel zu zählen…

Zitat:Ist das der richtige Weg, oder kann die Zeitmessung auch über einen Trigger direkt mittels MAX erfolgen?
So, wie du es versuchst, wird es garantiert nichts (richtiges)!
Immer nur ein Sample abzufragen,ist so ziemlich das langsamste, was du bei DAQmx machen kannst! Und Audiosignale mit ~50kHz Samplerate wirst du so sicher nicht sinnvoll einlesen können! (Siehe Kommentar oben.)

Zitat:Nun würde ich noch gerne die vergangene Zeit auf der x-Achse des Graphen darstellen, was noch nicht so ganz funktioniert.
Wenn du Waveforms verwenden würdest, wäre das ein Klacks: einfach X-Achse als Zeit formatieren…

Zu deinem Vergleich in der Schleife:
Entweder ein InRangeAndCoerce, um zwei Grenzwerte zu prüfen - oder einfach den Abs()-Wert deines Signals mit dem Limit vergleichen… Big Grin

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.04.2017, 10:25
Beitrag #3

Robo Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Apr 2017

2014 SP1
2017
DE



RE: Laufzeitmessung
Guten Morgen,

vielen Dank für die Antwort. Ich habe mir die von dir angesprochenen Dinge angeschaut. Der zeitgleiche Start von AI und AO sieht im gefundenen Beispiel von Lucki aber sehr umständlich aus. AI und AO Sync
Lässt sich das Problem nicht einfach über ein Rendezvous lösen?
Eine feste Abtastrate ist jetzt festgelegt, aber wie kann ich diese zählen?
Zuletzt noch eine Frage zum Stoppen der Messung. In meinem ersten Versuch habe ich einen bestimmten Schwellwert verwendet.. Bei dem Versuchsaufbau, auf den das ganze hinausläuft, wird ein Rechtecksignal gesendet und in etwa einem Meter Entfernung von einem Mikrofon erfasst. Die Hardware unterstützt keine Triggerung durch Analogflanken.. Sollte ich die Vergleich der einzelnen Werte beibehalten, oder gibt es einen eleganteren Weg die Messung zu stoppen?

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.04.2017, 10:45
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Laufzeitmessung
Hallo robo,

Zitat:Der zeitgleiche Start von AI und AO sieht im gefundenen Beispiel von Lucki aber sehr umständlich aus.
Was daran ist umständlich? Es wird nur der Starttrigger für zwei DAQmx-Tasks konfiguriert…

Zitat:Lässt sich das Problem nicht einfach über ein Rendezvous lösen?
Du willst also mit stark jitterbehafteter Software ein Problem lösen, was deine Hardware evtl. "jitterfrei" lösen kann?

Zitat:aber wie kann ich diese zählen?
Indem du einfach mitzählst, wieviele Samples du gelesen hast!
Wenn du 5mal 100 Samples einliest und im 6ten Datenblock beim 20. Sample deine Flanke auftritt, dann ist das eben das 520. Sample…

Zitat:gibt es einen eleganteren Weg die Messung zu stoppen?
Du machst deine Datenauswertung, bis du dein gewünschtes Signal gefunden hast und stoppst dann die Messwerterfassung!
(Oder du machst vorher eine Abschätzung der maximal nötigen Erfassungszeit (1m Entfernung * Schallgeschwindigkeit) und erfasst eben für diesen Zeitraum…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.04.2017, 08:53
Beitrag #5

Robo Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Apr 2017

2014 SP1
2017
DE



RE: Laufzeitmessung
Guten Morgen,

wenn ich eine feste Samplerate vorgebe und somit dt kenne, kann ich durch die Anzahl der Samples bis zum Schwellwert die Zeitdifferenz berechnen.
Der Index der while-Schleife, die mir meine bestimmte Anzahl an Samples ausgibt, macht ja nur eine Aussage, in welchem Bereich der Wert eingetroffen ist.. Beim Einlesen von 100 Werten kann nur beurteilen, ob mein Peak zwischen 200 und 300 ist.
Wie finde ich jetzt die genaue Zahl des Samples heraus? Hättest du zufällig ein Beispiel an der Hand?

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.04.2017, 09:38
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Laufzeitmessung
Hallo Robo,

ich wiederhole mal einen Satz aus meinem vorigem Beitrag:
Zitat:Wenn du 5mal 100 Samples einliest und im 6ten Datenblock beim 20. Sample deine Flanke auftritt, dann ist das eben das 520. Sample…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.04.2017, 14:14
Beitrag #7

Robo Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Apr 2017

2014 SP1
2017
DE



RE: Laufzeitmessung
Hallo,

ich habe noch etwas am Programm gebastelt und kann nun die Samples erfassen, bis ein gewisser Schwellwert überschritten wird.
Zusammen mit dt komme ich jetzt auf meine Zeitdifferenz.
Da sich vielleicht auch andere mit dem Problem auseinandersetzen, habe ich meine Lösung angehängt.
Jetzt müssen nur noch die Tasks synchron starten.

Grüße


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.04.2017, 14:38
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Laufzeitmessung
Hallo Robo,

Zitat:habe ich meine Lösung angehängt
- Errorhandling wäre nicht schlecht
- beim IndexArray ist index=0 schon der Defaultwert und muss nicht extra verdrahtet werden

Zitat:nur noch die Tasks synchron starten
Erlaubt deine Hardware nun einen Starttrigger wie oben gezeigt?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.04.2017, 10:12
Beitrag #9

Robo Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Apr 2017

2014 SP1
2017
DE



RE: Laufzeitmessung
Hallo Gerd,

die Hardware unterstützt Triggerung durch digitale Flanken. Das aus dem Beispiel sollte also funktionieren..
Der gleichzeitige Start wird durch den Fehlerstrang erzwungen, aber laut der Hilfe beeinflusst dieser die Ausführung des VI nicht.
"Ein Fehler während der Ausführung des VIs oder der Funktion beeinflusst die Ausführung nicht."
Zudem sind mir ein paar Funktionen nicht bekannt, wie zum Beispiel die mit dem Eingang "ai/StartTrigger". Ich arbeite mich noch ein bisschen durch die Beispiele und versuche das ganze nachzuvollziehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.04.2017, 13:03
Beitrag #10

Robo Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Apr 2017

2014 SP1
2017
DE



RE: Laufzeitmessung
Ich habe mich jetzt an Beispiel AI AO Sync orientiert und mein VI angepasst.
Das Beispiel funktioniert einwandfrei.. Die Signalerfassung funktioniert auch, aber nur solange ich diese nicht mit dem digitalen Starttrigger vom Output verbinde. Wenn ich das mache (so ist es auch im angehängten Beispiel), wird die Schleife zum Auslesen der Messwerte durchlaufen, ohne dabei etwas zu erfassen.
Wieso wird der Task jetzt nicht mehr gestartet?

Grüße


Angehängte Datei(en)
14.0 .vi  laufzeit.vi (Größe: 48,63 KB / Downloads: 226)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: