15.10.2010, 10:35
Zunächst mal hallo an alle!
Ich habe gerade angefangen mich mit Labview vertraut zu machen und habe auch schon einige Probleme Dank der tollen Antworten hier im Forum lösen können, dafür also schonmal vielen Dank an alle.
Nun bin ich bei meinem Programm allerdings auf ein Problem getroffen, das mir etwas mehr Kopfzerbrechen bereitet. Ich nehme an das Problem ist ganz einfach zu lösen und ich habe nur die Datenstrukturen und ihr Zusammenwirken nicht verstanden, aber auf jeden Fall würde ich mich freuen, wenn jemand mir das kurz erklären könnte.
Ich taste mit einer Messkarte PCI-5922 die in einem externen, über Glasfaser angebundenen, Gehäuse steckt ein Signal ab und lasse es anzeigen.
Das Signal wird dann zusätzlich einer FFT unterzogen und mit einem zweiten Signal (noch simuliert, später auch abgetastet) einer Korrelationsuntersuchung unterzogen.
Beide Signalabtastungen und alle Berechnungen werden immer für nur einen Durchlauf mit einer einstellbaren Menge an Abtastwerten durchgeführt, ein zweiter Durchlauf kann mit einem Taster gestartet werden.
Nun habe ich zwei Probleme, für die ich noch keine Lösung gefunden habe:
1. Wenn ich die Phasenlage des simulierten Signals ändern will muß ich das ganze Programm (oder VI?) abbrechen und neu starten, weil die Änderung sonst zwar im Eingabeelement anmgezeigt wird, das Signal sich jedoch nur beim Neustart verschiebt und nicht, wie geplant, beim neuen Durchlauf der Case-Schleife.
2. Ich will die erzeugten Daten in eine Datei speichern um sie mit anderen Kollegen austauschen zu können, die sie evtl. auch mit anderen Programmen weiterverarbeiten. Das bedeutet ich will die beiden abgetasteten Signalverläufe, das Leistungsspektrum, den Korrelationsfaktor und den Real- und Imaginärteil der Korrelationsfunktion zusammen in einer Datei speichern. Dazu hatte ich mir überlegt das folgende Struktur ganz gut wäre:
t-Achse Signal1 | Werte Signal1 | t-Achse Signal2 | Werte Signal2 | Korrelationsfaktor | f-Achse Spektrum | Werte Spektrum | Realteil | Imag.Teil
Wobei | eine Trennung der Spalten bedeutet.
Satt den beiden Zeitachsen ginge es auch nur eine Zeitachse, oder notfalls sogar nur das dt, zu speichern, ist aber nicht ganz so schön. Selbiges gilt natürlich auch für die f-Achse.
Ich habe um das so zu machen einfach mal ein Cluster erzeugt, das die zu speichernden Werte beinhaltet. Das kommt daher das ich mir Datenstruktur halt wie oben angegeben vorstelle und dachte diese Tabelle (Matrix, Array, wie auch immer) sollte sich auch in dieser Form speichern lassen. Leider habe ich keine Funktion gefunden, die das macht und auch Nachschlagen in einem Buch und im Internet haben nicht zum Erfolg geführt, wobei das (wie imemr) durchaus an meinen Suchbegriffen liegen kann.
LabView-Version ist 8.2
So, hier nun noch das VI dazu
Ich habe gerade angefangen mich mit Labview vertraut zu machen und habe auch schon einige Probleme Dank der tollen Antworten hier im Forum lösen können, dafür also schonmal vielen Dank an alle.
Nun bin ich bei meinem Programm allerdings auf ein Problem getroffen, das mir etwas mehr Kopfzerbrechen bereitet. Ich nehme an das Problem ist ganz einfach zu lösen und ich habe nur die Datenstrukturen und ihr Zusammenwirken nicht verstanden, aber auf jeden Fall würde ich mich freuen, wenn jemand mir das kurz erklären könnte.
Ich taste mit einer Messkarte PCI-5922 die in einem externen, über Glasfaser angebundenen, Gehäuse steckt ein Signal ab und lasse es anzeigen.
Das Signal wird dann zusätzlich einer FFT unterzogen und mit einem zweiten Signal (noch simuliert, später auch abgetastet) einer Korrelationsuntersuchung unterzogen.
Beide Signalabtastungen und alle Berechnungen werden immer für nur einen Durchlauf mit einer einstellbaren Menge an Abtastwerten durchgeführt, ein zweiter Durchlauf kann mit einem Taster gestartet werden.
Nun habe ich zwei Probleme, für die ich noch keine Lösung gefunden habe:
1. Wenn ich die Phasenlage des simulierten Signals ändern will muß ich das ganze Programm (oder VI?) abbrechen und neu starten, weil die Änderung sonst zwar im Eingabeelement anmgezeigt wird, das Signal sich jedoch nur beim Neustart verschiebt und nicht, wie geplant, beim neuen Durchlauf der Case-Schleife.
2. Ich will die erzeugten Daten in eine Datei speichern um sie mit anderen Kollegen austauschen zu können, die sie evtl. auch mit anderen Programmen weiterverarbeiten. Das bedeutet ich will die beiden abgetasteten Signalverläufe, das Leistungsspektrum, den Korrelationsfaktor und den Real- und Imaginärteil der Korrelationsfunktion zusammen in einer Datei speichern. Dazu hatte ich mir überlegt das folgende Struktur ganz gut wäre:
t-Achse Signal1 | Werte Signal1 | t-Achse Signal2 | Werte Signal2 | Korrelationsfaktor | f-Achse Spektrum | Werte Spektrum | Realteil | Imag.Teil
Wobei | eine Trennung der Spalten bedeutet.
Satt den beiden Zeitachsen ginge es auch nur eine Zeitachse, oder notfalls sogar nur das dt, zu speichern, ist aber nicht ganz so schön. Selbiges gilt natürlich auch für die f-Achse.
Ich habe um das so zu machen einfach mal ein Cluster erzeugt, das die zu speichernden Werte beinhaltet. Das kommt daher das ich mir Datenstruktur halt wie oben angegeben vorstelle und dachte diese Tabelle (Matrix, Array, wie auch immer) sollte sich auch in dieser Form speichern lassen. Leider habe ich keine Funktion gefunden, die das macht und auch Nachschlagen in einem Buch und im Internet haben nicht zum Erfolg geführt, wobei das (wie imemr) durchaus an meinen Suchbegriffen liegen kann.
LabView-Version ist 8.2
So, hier nun noch das VI dazu