LabVIEWForum.de - Kontinuierliche Datenerfassung mit USB 6003

LabVIEWForum.de

Normale Version: Kontinuierliche Datenerfassung mit USB 6003
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

ist es möglich mit dem NI USB6003 kontinuierlich Messdaten abzuspeichern?
Die maximale Samplerate beträgt 100kHZ.
Beim Testen ist mir aufgefallen, dass ich die "Rate" und die "Samples to Read" unabhängig von einander einstellen kann.
Die Samples to Read sind letztlich meine Anzahl der aufgenommenen Datenpunkte. Kann ich diese beliebig erhöhen?
Ich hatte diese von 20k auf 5M erhöht --> Fehler, da noch nicht alle Samples aufgenommen worden - logisch.
Aber ist es möglich diese Samples to Read zu ignorieren und einfach so lange zu loggen, bis die Messung vorbei ist?
Ich weiß, dass es irgendwann zu Speicherproblemen kommen wird.. aber das muss doch irgendwie zu lösen sein Blink

Freundliche Grüße
Hallo Tobolf,

Zitat:ist es möglich mit dem NI USB6003 kontinuierlich Messdaten abzuspeichern?
Ja.

Zitat:aber das muss doch irgendwie zu lösen sein
Hast du dir schon mal die BeispielVIs zu DAQmx angeschaut?

Zitat:Beim Testen ist mir aufgefallen, dass ich die "Rate" und die "Samples to Read" unabhängig von einander einstellen kann.
Ja. Sind ja auch zwei von einander unabhängige Parameter…

Zitat:Die Samples to Read sind letztlich meine Anzahl der aufgenommenen Datenpunkte. Kann ich diese beliebig erhöhen?
Jein: die Limitierung dürfte hier bei der Größe irgendwelcher DAQmx-interner Buffer liegen…

Zitat:Ich hatte diese von 20k auf 5M erhöht --> Fehler, da noch nicht alle Samples aufgenommen worden - logisch.
Wieso logisch?
Wenn du alle Parameter korrekt setzt, sollte das möglich sein. Hast du an den TimeOut gedacht?
Die Beispiele habe ich mal ausprobiert.
Beispielsweise die VI "Current - Continious Input.vi":

Ich stelle die Sample Rate auf 10k und die Samples per Loop ebenfalls.
Ich nehme also 10k Werte pro Sekunde auf. Wenn ich nun etwas länger als eine Minute loggen lasse und 1048575 Samples überschreite, werden die darauf folgenden Werte in Excel per TDMS nicht mehr angezeigt.
Die Länge des Vektors wird jedoch mit 1810000 angegeben, weshalb ich vermuten würde, dass die Werte in der TDMS Datei eigentlich enthalten sind.

Ist dies überhaupt der richtige Weg für meine Anforderung?

Ich würde gerne Strom und Spannung mit möglichst hoher Samplerate (>1 Sa/ms) quasiparallel messen und die Daten dann wegspeichern.
Hallo Tobolf,

Zitat:und 1048575 Samples überschreite, werden die darauf folgenden Werte in Excel per TDMS nicht mehr angezeigt.
Mal überlegen: Excel kommt mit diesen Datenmengen nicht klar, aber der Fehler dafür liegt bei LabVIEW???

Man verwendet ja auch nicht Excel, um sich Messdaten anzuschauen! Big Grin

Zitat:Ich würde gerne Strom und Spannung mit möglichst hoher Samplerate (>1 Sa/ms) quasiparallel messen und die Daten dann wegspeichern.
Das machst du doch jetzt schon - und sogar fehlerfrei…

Dein Problem ist nur das zum Datenanalysieren ungeeignete Tool!
Meine 'Lösung' jetzt ist:

1) Aufnahme der Messwerte durch "Current - Continuous Input.vi"
2) TDMS-File mit "ConvertTdmsFileToNoDaxMxRaw.vi" konvertieren
und anschließend "simpleConvertTDMS.m" den Datensatz in Matlab einlesen.

Das kann doch nicht die gängige Lösung sein, Datensätze aus Labview, die mit einem NI USB 6003 aufgenommen wurden, weiter zu verarbeiten..
Hallo Tobolf,

Zitat:Das kann doch nicht die gängige Lösung sein, Datensätze aus Labview, die mit einem NI USB 6003 aufgenommen wurden, weiter zu verarbeiten..
Es ist nicht gängige Lösung, ein Programm wie Excel zu verwenden, wenn dieses mit seinen Beschränkungen mit den Daten nicht klar kommt! Wall

Man kann TDMS-Dateien auch prima mit LabVIEW oder Diadem verarbeiten. Ich sehe keinen Grund, sie erst aufwändig für MATLAB aufzubereiten…
Hallo Tobolf,

Zitat:TDMS-File mit "ConvertTdmsFileToNoDaxMxRaw.vi" konvertieren
Kannst du mir bitte sage, was das für ein VI ist und wo man das findet?
Hallo Gerd,

ursprünglich war ich auf der Suche nach einem Matlabscript, mit dem ich die TDMS-Datei in Matlab einlesen kann.
--> Convert TDMS to Matlab
Nachdem ich bemerkt habe, dass das TDMS-file, welches Labview erzeugt nicht direkt für dieses Script nutzbar ist hab ich in der Beschreibung zu dem Convert TDMS.vi einen Link zu dem von dir gesuchten vi gefunden.
--> ConvertTdmsFileToNoDaxMxRaw


Nachdem ich mir die Examples gestern nochmal angeschaut habe, habe ich heute versucht aus diesen ein VI zu machen, welches Strom + Spannung parallel messen soll. Dieses habe ich als .vi angehängt.
Leider tritt folgender Fehler beim Ausführen auf:
"Error -50103 occurred at DAQmx Start Task.vi:7220007"

Da kommt sich anscheinend irgendetwas in die Quere.. kann mir jemand einen Hinweis geben, wie ich das lösen könnte? Leider gibt es in den Examples keine Beispiele zu Messungen an mehreren analogen Eingängen.

Freundliche Grüße
Hallo Tobolf,

"Error -50103" bedeutet, dass du auf eine schon verwendete Resource noch einmal zugreifen willst.
Was hast du denn doppelt benutzt?
Wenn ich dein VI öffne, versuchst du mit beiden DAQmx-Tasks auf dev1/ai0 zuzugreifen, was so aber nicht funktionieren wird!

Zitat:Leider gibt es in den Examples keine Beispiele zu Messungen an mehreren analogen Eingängen.
Man fügt einfach mehrere Kanäle zu einem Task hinzu: entweder über mehrfachen Aufruf von CreateVirtualChannel oder durch entsprechende Auswahl in der DAQmxChannel-Konstante…
Tschuldige,
Die Version war nicht ganz aktuell.
Ich hatte die Channel als Dev3/ai0 undDev3/ai1 angegeben.
In dieser aktuellen Version habe ich den mehrfachen Aufruf über CreateVirtualChannel und will dabei auch auf 2 verschiedene Channel zugreifen.. trotzdem bleibt das Problem.


EDIT: Ich habe das Ganze jetzt sozusagen alles in eine Reihe gepackt. Vielleicht meintest du das auch so, als du von einem mehrfachen Aufruf in einem Task sprachst.
Das Ganze wird auch ausgeführt und ich kann sowohl Strom als auch Spannung im Graphen sehen.
Wenn ich die Schleife allerdings beende kommt folgender Fehler, den ich als Bild in den Anhang gepackt habe.

EDIT2: In einigen VI's bei denen mehrere Channel angesprochen werden, habe ich gesehen, dass die Physical Channels (sofern mehrere angesprochen werden sollen) mit Dev3/ai0:1 benannt werden um so Channel 0 und 1 anzusprechen.
Das funktioniert in der Beispiel-VI "Voltage - Continuous Input" schon mal super.
Allerdings frage ich mich, wie ich diese Information in mein VI übertragen soll. Notfalls würde ich einfach beide Spannungen mit dem Example aufnehmen und den Strom über den Shunt selbst ausrechnen. Aber mich würde interessieren wie ich mein Programm anpassen könnte.

Freundliche Grüße
Seiten: 1 2
Referenz-URLs