LabVIEWForum.de - Analog gemessenen Digitalsignal digitalisieren

LabVIEWForum.de

Normale Version: Analog gemessenen Digitalsignal digitalisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Grüße euch Tüftlern und Denkern,

die Überschrift verursacht sicherlich stirnrunzeln, erscheint mir aber treffend.
Vorab habe ich einen Screenshot angehängt, um meinen Ausführungen folgen zu können. Ich verwende LabVIEW 2012 Evaluierungsversion mit einem NI USB 6008 Modul.

Mit dem Modul mess ich die negative und positive Phase eines dreipoligen Klinkensteckers. Die Ergebnisse seht ihr im Frontpanel. Ich möchte die Signale jedoch nicht analog, sondern digital haben, am besten als 1 und 0 und deren Zeiten zugeordnet. Es gibt im MAX die Option digitale Signalerfassung mit kontinuierlicher Erfassung. Habe ich probiert und habe eine Fehlermeldung erhalten. Fehlermeldung copy and paste in Google übertragen und durfte erfahren, dass mein Modul diese Option nicht unterstützt. Berichtigt mich, wenn ich falsch liege. Würde mich darüber sehr freuen.
Ich will also die Pegel ihren zeitlichen Komponenten zugeordnet in 0 und 1 haben. Mein erster Ansatz war das Signal in seine X und Y Komponenten zu trennen, die Y Komponente mittels einer Größer/Gleich Funktion mit 1 zu vergleichen und die entsprechenden True und False Signale den X Komponenten wieder zuzufügen. Hat nicht so ganz geklappt wie gehofft. (X = Zeit, Y = Spannung). Meine zweite Idee war die Flanken der Signale aufzunehmen und dem entsprechen einen True und False Ausgang so anzusteuern, dass ich für die Zeit der Pegel ein True Signal erhalte und das als Funktion weiter verwenden kann. Da ich LabVIEW erst seit Montag benutze und bis auf ein paar Kratzer Java und MatLab keine andere Programmiersprache kenne, komm ich eher schlecht als recht voran. Blush

Bin ich mit meinen Ansätzen in der richtigen Richtung oder übersehe ich eine Option, die mir das ganze kräftig erleichtert?

MfG
SimpleMinded

PS: Funktionsangaben bitte bitte mit Findungsort kennzeichnen. ^o^

PPS: Schonmal Danke an alle, die sich Gedanken machen.
Hallo SimpleMinded,

ein Bild des Signals ist schon mal schön, ein VI (oder zumindest ein Bild des BD) wäre noch besser...

Zitat:dass mein Modul diese Option nicht unterstützt.
Ja, die USB6008 unterstützt nur "software-timing" bei den DIOs...

Zitat:Mein erster Ansatz war das Signal in seine X und Y Komponenten zu trennen, die Y Komponente mittels einer Größer/Gleich Funktion mit 1 zu vergleichen und die entsprechenden True und False Signale den X Komponenten wieder zuzufügen. Hat nicht so ganz geklappt wie gehofft. (X = Zeit, Y = Spannung).
Das wäre auch mein Vorschlag. Warum es bei dir nicht klappt, kann man mangels VI und Fehlermeldungen nicht sagen...

Zitat:übersehe ich eine Option, die mir das ganze kräftig erleichtert?
Wieder mangels VI: Lasse dir die Analogsignale als Waveform zurückgeben, dann hast du schon mal ein festes dt zwischen den Samples. Über dieses dt lässt sich auch sehr einfach der Zeitpunkt eines jeden Samples bestimmen...
Hallo GerdW,

danke für deine Antwort. Meine VI habe ich angehangen. Die beiden Funktionen von denen ich hoffe, dass sie mir die Messwerte in X und Y Komponenten aufteilen habe ich einmal im LLB Manager unter "Waveform to XY-Pairs" gefunden und im Kontextmenü des Blockdiagramms. Ich bin nun noch nicht weit genug, um mir klar zu werden, was nun genau Clusters sind, denn da scheint das Problem zu sein. Entweder trenne ich die Signale falsch, führe sie falsch zusammen und vergesse ein Bauteil, der sie Graphenkompatibel macht.

MfG
SimpleMinded

PS: BD? DIO? dt nehme ich als delta t an, um den Samples eine feste Zeit zu geben.
Hallo SimpleMinded,

BD = block diagram
DIO = digital I/O
dt = delta t

Kannst du dein VI für LV2011 speichern und anhängen? (File->Save for previous)
Hallo GerdW,

Danke für die Erläuterung der Abkürzungen. Im Anhang nun die VI für die LV2011 Version.

MfG
SimpleMinded
Hallo SimpleMinded,

probier mal das angehängte VI aus: versuche, auf ExpressVI und DDT zu verzichten und arbeite gleich mit Waveforms.
Hallo GerdW,

danke für die VI. Ich habe im Anhang ein Bild reingesetzt mit einer Nummerierung der einzelnen Bausteine.

#1 "Wandelt dynamische Daten in Zahlen, boolesche Werte, Signalverläufe und Arrays um."
Wir brauchen die Informationen in dem gemessenem Signal in einer weiter verwertbaren Form. Über diesen Baustein wird der Signalverlauf in ein Array umgewandelt. Aber in welcher Form werden die Messsignale denn dann ausgegeben, wenn man sie erst in ein Array umwandeln muss? Ich dachte die Signale wären von Anfang an in X und Y aufgeteilt und geordnet. Blush

#2 In dem Signal sind zwei Signalverläufe enthalten. Aufteilung des 2-dimensionalem Arrays in zwei 1-dimensionale Arrays. Das ist logisch und habe ich verstanden.

#3 Auswahl der Y-Komponente aus dem Array

#4 Pegelvergleich

#5 Das unter False/True und 0/1 unterschieden wird, war mir nicht bewusst. Merk ich mir.

#6 Mit diesem Baustein überschreibt der eingehende Y-Wert den zeitlich zugehörigen Y-Wert des eingehenden Signalverlaufs.

#7 Signaldarstellung

Soweit habe ich die Vorgangsweise verstanden.
Im Anhang ist noch ein Bild von dem umgewandelten Messergebnis.

Mir ist nun noch etwas bezüglich der Baudrate aufgefallen. Mein Messsystem arbeitet mit 4800 Baud und 8 Datenbits, während mein USB NI 6008 Modul eine maximale Sample-Rate von 10000Hz hat. Reicht mein aktuelles Modul dann überhaupt aus, um das analoge Signal in einer für eine Digitalisierung ausreichende Genauigkeit zu messen?
Die Umrechnung von Baud in Bit/s erscheint mir nach einer Google-Recherche doch sehr schwammig. Auch der Begriff "Symbol" in diesem Zuge ist mir rätselhaft. Entspricht ein "Symbol" in meinem System nun 0 und 1, oder ist es die Menge der 8 Datenbits? Bei Verwendung der 8 Datenbits hätte mein System eine Bitrate von 4800x8 = 38400 Bit/s. Demnach wäre mein 6008 Modul unausreichend für die Messung. Liege ich da richtig?

MfG
SimpleMinded

PS: Sorry für die späte Antwort. Ich hatte mit den Überschwemmungen zu kämpfen. Undecided
Hallo SimpleMinded,

1. Die ExpressVIs arbeiten mit dem DynamicDataType (DDT). Was der genau enthält, hängt immer von der Datenquelle ab und ist nicht festgelegt. Man kann aber immer in einen Datentyp wandeln, der einem zusagt - so wie ich den DDT in ein Array of Waveforms umwandele...

2. Dein erster Verständnisfehler: da wird ein 1D-Array of Waveforms erzeugt! Das IndexArray indiziert dann die einzelnen Waveforms! (Deutsches LabVIEW: "Signalverlauf")

3. Auch hier wieder: Es geht um Waveforms und es wird eine Waveform-Funktion verwendet, um die Signaldaten zu erhalten!

5. Dir ist nicht bewußt, dass es einen Unterschied zwischen Integer und Boolean gibt??? Wozu verwendet LabVIEW wohl grüne und blaue Drähte???

6. Ich würde eher "ersetzen" sagen...

Zitat:Mir ist nun noch etwas bezüglich der Baudrate aufgefallen. Mein Messsystem arbeitet mit 4800 Baud und 8 Datenbits, während mein USB NI 6008 Modul eine maximale Sample-Rate von 10000Hz hat. Reicht mein aktuelles Modul dann überhaupt aus, um das analoge Signal in einer für eine Digitalisierung ausreichende Genauigkeit zu messen?
Es ist immer wieder schön, wenn der Fragesteller erst nach einigen Iterationen die eigentlichen Beweggründe offenbart. Du willst also ein digitales, serielles Signal erfassen und dekodieren?
Ja, die USB6008 bietet max. 10kHz Samplerate an. Du könntest also gerade so dein 4800bd-Signal erfassen - aber nur mit einem Analogkanal. Da du 2 Signale erfassen willst, liegt die effektive Samplerate pro Kanal bei 5kHz, das wird Herrn Nyquist nicht gefallen...

Zitat:Die Umrechnung von Baud in Bit/s erscheint mir nach einer Google-Recherche doch sehr schwammig.
??? Baud = bit/s. Was ist daran schwammig?

Zitat:Auch der Begriff "Symbol" in diesem Zuge ist mir rätselhaft. Entspricht ein "Symbol" in meinem System nun 0 und 1, oder ist es die Menge der 8 Datenbits?
Ein Symbol entspricht einem übertragenen Zeichen (meist ASCII/8 bit), wird aber gern mit mehr als 8 bit übertragen: Start- und Stopp-Bits kommen auch noch dazu.

Zitat:Bei Verwendung der 8 Datenbits hätte mein System eine Bitrate von 4800x8 = 38400 Bit/s. Demnach wäre mein 6008 Modul unausreichend für die Messung. Liege ich da richtig?
Nein. Die Datenrate ist und bleibt 4800 baud = 4800 bit/s.
Das die USB6008 trotzdem nicht ausreicht, habe ich 3 Sätze weiter oben schon erläutert!
Hallo GerdW,

Ich danke dir für deine Antwort.

Mittlerweile weiß ich, welchen Kanal ich messen und wie die Antwort auf das Signal aussehen muss. Ich brauch also erstmal nur einen Kanal messen und kann dafür die Sample-Rate von 9600 verwenden.

Ich werd nun erstmal zusehen, dass ich die Bitreihenfolge gespeichert bekomme und mit den Daten vom Hersteller vergleichen kann.
Ich meld mich, wenn es Neuigkeiten gibt. Construction

MfG
SimpleMinded

PS:
Zu 5. Wie gesagt bin ich ein ziemlicher Anfänger. Aber ich habe die Woche über das Buch "LabVIEW 1 - Einstieg in die Praxis" von Peter Groppe und Bernd vom Berg durchgekaut und hoffe nun ein wenig besser mit LabVIEW zurecht zu kommen als zuvor. Big Grin
Referenz-URLs