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 

Dieses Thema hat akzeptierte Lösungen:

Leckortung über Kreuzkorrelation



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!

28.06.2012, 11:53
Beitrag #1

0cu87 Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jun 2012

2010
2012
kA



Leckortung über Kreuzkorrelation
Hallo zusammen,

ich bearbeite zurzeit ein Projekt, bei dem es darum geht einen Miniaturaufbau für die praktische Anwendung der "Leckortung in Rohrleitungen über die Kreuzkorrelation" aufzubauen. Die Signalverarbeitung übernimmt hierbei Labview. Dabei befindet sich eine 4m PVC-Rohrleitung schwingungsfrei auf einer Halterung mit mehreren künstlichen gebohrten Lecks. Da es schwierig wäre, Luft oder Flüssigkeiten austreten zu lassen (z.B. über eine Pumpe), simuliere ich das Störgeräusch des Lecks mit einem Lautsprecher. Der Lautsprecher gibt dabei ein gleich- oder normalverteiltes weisses Rauschen aus, das in Labview erzeugt und über einen Verstärker übertragen wird.
Zwei Mikrofone an beiden Rohrenden, schalldicht abgeschlossen, nehmen das eingekoppelte Störgeräusch auf. Der Übertragungsweg ist die Luft in der Rohrleitung. Auch diese Daten werden über Labview kontinuierlich aufgenommen. Die aufgenommenen Daten werden kreuzkorreliert und die Laufzeitdifferenz ergibt ein Maximum in der KKF. Die Ortung funktioniert auf wenige cm, da ich aber noch wenige Wochen für meine Thesis habe, möchte ich natürlich die gesamte Verarbeitung verifizieren. Meine Fragen sind hierbei:

-Die Ausgabe und Aufnahme läuft über while-Schleifen. Dabei wähle ich Abtastfrequenzen und Samples aus. Mein Verständnis hierbei ist, dass der Schall über die Mikrofone aufgenommen und paketweise an Labview übertragen wird. Doch funktioniert das bis zu einer Abtastfrequenz von 96000 kHz?

-Ist es sinnvoll, die gesamte Berechnung in einer anderen Schleife als die Aufnahme durchzuführen? Im Moment sind die Aufnahme, die KKF (FFT-Methode) sowie die Berechnung der Ortung in einer Schleife zusammengeführt.

-Gibt es vielleicht eine bessere Methode als der Weg über die while-Schleifen? Ich habe da an eine Datensynchronisation gedacht, aber ich bin relativ neu, was die Labview-Programmierung angeht und wüsste jetzt keinen besseren Weg.

Ich bin froh dass die Ortung funktioniert, doch will ich 100% sicher sein, was die Programmierung angeht. Gerade diese Fragen beschäftigen nämlich auch meinen Professor.
Weiter habe ich Screenshots meines .vi angehangen, auf Anfrage kann ich natürlich auch das Programm hochladen.

Lg,
0cu


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.06.2012, 07:24
Beitrag #2

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Leckortung über Kreuzkorrelation

Akzeptierte Lösung

Hallo 0cu

Sieht nach einem spannenden Projekt aus! Ich kenne mich nicht so mit Audio in LabVIEW aus, jedoch habe ich ein paar Dinge gefunden, welche man meiner Ansicht nach verbessern könnte:

Die Schleifen können nur über den LabVIEW-Stopp Knopf beendet werden (was eigentlich ein Debugging Tool istWink ) dadurch wird dein Deinitialisierungs-Teil auch niemals ausgeführt!

Falls du die Erfassung und Auswertung in verschiedenen Schleifen machen willst, so findest du die Templates unter File->New..->From Template->Frameworks->Design Pattern-> Producer/Consumer (data) oder evtl Master/Slave

Noch ein paar allgemeine Tipps:

Du kannst über die Funktion "Unboundle by Name" (Cluster-Palette) einzelne Elemente eines Clusters ausgeben, zusätzlich sieht man nicht nur den Datentyp sondern auch den Namen->Lesbarkeit erhöhtWink

Funktionen wie Index-Array lassen sich aufziehen, falls du die Eingänge leer lässt werden die Elemente der Reihe bzw. Index nach an den Ausgängen ausgegeben.

Sofern du den Text bei "Ortungsverfahren" nicht ändern willst würde ich einen Enum für geeigneter halten.

Bei einem "Boundle" würde ich dir raten eine Konstante deines (typedef->rechtsklick auf den Grafen->Advanced->Costumize->Bei Dropdown "Typedef" wählen) Graphen anzuschliessen. Typedef wird wichtig sobald du deine Applikation vergrössern willst und bei Änderung des Datentypen nicht jedes betroffene Element manuell anpassen willstWink Zusätzlich hast du dadurch die Möglichkeit die Funktion "Boundle by Name" zu verwenden, wodurch du deinen Code noch leichter verständlich gemacht hastBig Grin

Anstatt Kommentare würde ich die Labels verwenden um Controls/Indicators zu benennen, diese lassen sich bei Bedarf auch unsichtbar machen im FPWink

Hoffe das hilft dir weiter!

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.07.2012, 10:12
Beitrag #3

0cu87 Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jun 2012

2010
2012
kA



RE: Leckortung über Kreuzkorrelation
Hi Marc,

danke die erstmal für die Tipps. Damit ist das ganze etwas übersichtlicher geworden.
Ich habe die gesamte Geschichte jetzt nach dem Producer/Consumer Prinzip aufgebaut. Die Audioausgabe läuft parallel in einer while-Schleife. Die Aufnahme mit den Mikrofonen bildet den Producer-Teil, die Berechnung der Kreuzkorrelation den Consumer-Teil. Das ganze funktioniert, jedoch habe ich eine letzte Frage:

-Ist es sinnvoll, Graphen in Labview in einer seperaten Schleife zu platzieren? Oder spielen Graphen im Hinblick auf die zeitkritische Bearbeitung von Daten keine weitere Rolle? Minimale Aktualisierungsraten wären in meinem Fall 250ms, z.B. 96kHz und 22500 Samples für die Aufnahme.

Lg,
0cu
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.07.2012, 15:04
Beitrag #4

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Leckortung über Kreuzkorrelation
(02.07.2012 10:12 )0cu87 schrieb:  Hi Marc,

danke die erstmal für die Tipps. Damit ist das ganze etwas übersichtlicher geworden.
Ich habe die gesamte Geschichte jetzt nach dem Producer/Consumer Prinzip aufgebaut. Die Audioausgabe läuft parallel in einer while-Schleife. Die Aufnahme mit den Mikrofonen bildet den Producer-Teil, die Berechnung der Kreuzkorrelation den Consumer-Teil. Das ganze funktioniert, jedoch habe ich eine letzte Frage:

-Ist es sinnvoll, Graphen in Labview in einer seperaten Schleife zu platzieren? Oder spielen Graphen im Hinblick auf die zeitkritische Bearbeitung von Daten keine weitere Rolle? Minimale Aktualisierungsraten wären in meinem Fall 250ms, z.B. 96kHz und 22500 Samples für die Aufnahme.

Lg,
0cu

Falls du meinst quasi aus der Consumer-Loop die Daten an eine zusätzliche While-Loop zu schicken so würde ich dir davon abraten. Am besten sind die Graphen in der Consumer-Loop aufgehobenWink

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.07.2012, 12:59
Beitrag #5

0cu87 Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jun 2012

2010
2012
kA



RE: Leckortung über Kreuzkorrelation
So hatte ich mir das auch gedacht. Danke dir für deine Hilfe!! Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: