LabVIEWForum.de
DAQmx Messwerte schreiben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: DAQmx Messwerte schreiben (/Thread-DAQmx-Messwerte-schreiben)



DAQmx Messwerte schreiben - Maurice - 14.11.2010 00:59

Hallo community,

ich habe eine PCI-6259 Messwert-Karte und möchte damit schnelle Messwerterfassung (bis zu 16 Kanäle mit je 1000Hz abtastrate) machen. Die Kanäle sollen sollen im Signalflussdiagramm angezeigt werden und auch in einer CSV - Datei gespeichert werden.

In der angehängten Datei seht ihr wie ich die Messwerte speichere (Symbol: Messwerte in Datei schreiben). Auf diese Weise kann ich aber keine CSV- Datei auswählen, außerdem möchte ich nicht nur die Messwerte des Tasks speichern sondern auch noch andere messwerte die ich über eine Steuerung bekomme "dazuschlüsseln". Zu meinem Problem:

1.) Wie könnte ich das Signal das aus dem DAQmx-read kommt derart aufteilen, dass ich die x-Achse (bei mir die Zeit) und die Kanäle in eine CSV- Datei schreiben kann, denn ich will auf das Symbol "Messwerte in Datei speichern" verzichten. Das Signal das aus DAQmx kommt ist ein 1d- array, mir ist es nicht gelungen, die einzelnen Messwerte (Die Kanäle und die Zeit der x -achse) aufzuteilen so dass ich sie speichern kann. Ich habe auch versucht das Array zu indizieren, aber ohne Erfolg. Ist es möglich diese zu extrahieren? Mit dem Symbol "Messwerte in Datei schreiben" geht es schon ganz gut, aber da kann ich keine anderen Messwerte hinzufügen, die von anderer Stelle kommen.

2.) Wie berechnet Labview die Verzögerung innerhalb einer Schleife, auf welcher Grundlage? Ich konnte feststellen, dass bis zu 30 ms Verzögerung noch genau sind, danach wird es ungenau oder habe ich einen Fehler gemacht.

Danke für eure Hilfe!

Labview Version: 8.6!

Grüße


DAQmx Messwerte schreiben - jg - 14.11.2010 10:00

Daten mit 1 kHz aufnehmen, aber dann immer nur einen Messwert aus DAQmx abholen?!:noe:Das kann nichts werden.
Definitiv immer N Samples auf einen Schwung abholen. Windows ist kein Echtzeit-Betriebssystem, ein Timing genauer als ca. 10 ms in einer Loop wird man NIE hinbekommen.

Schau dir mal die passenden Bsp im NI-Examplefinder an.
"Cont Acq&Graph Voltage - Write Data to File (TDMS).vi" wäre ein passender Einstieg. Daten zwar als TDMS, und nicht als csv, aber du bist schon mal das Express-VI los.

Ein einfacher Weg zu csv-Files wäre: Daten aus DAQmx nicht als Waveform sondern als 2D-Array abholen und mit "WriteToSpreadsheet-File" aus der FileIO-Palette speichern.

Gruß, Jens


DAQmx Messwerte schreiben - Maurice - 14.11.2010 13:02

Hallo Jens,

ich bedanke mich für deine Anregungen. Ich habe mir das Beispiel "Cont Acq&Graph Voltage - Write Data to File (TDMS).vi" einmal angeschaut und auch versucht in mein Projekt zu integrieren. Als Zeitbasis will ich aber den Signalverlauf haben. Dazu schreibe ich auch die Historie des Signalverlaufdiagramms. Als DAQmx read wähle ich analog->mehrer Kanäle->Mehrere Samples -> 2D-DBL und speichere das signal in eine CSV- Datei, leider ohne Erfolg.

Also ich möchte, dass es so aussieht wie in Messwerte.lvm, nur eben, dass ich dann später noch weitere Spalten für andere Messwerte die nicht aus daqmx kommen hinzufügen kann und die Datei muss eine csv -Datei sein. Meine csv-Datei ist aber leerSad. Die lvm-Datei wurde mit dem Express-vi "Messwerte in Datei schreiben" erstellt mit der Grundlage von DAQmx read von einem 1d-Signalverlaufsgraph.
Hast du noch eine Tipp für mich?
Habe das modifizierte vi noch einmal hochgeladen:


Version: 8.6!

Danke,

Grüße Maurice


DAQmx Messwerte schreiben - jg - 14.11.2010 22:37

:hmm:Was willst du jetzt? Eine csv-Datei? Oder eine LVM-Datei? (wenn die csv-Datei genauso aussehen soll wie die LVM-Datei, was ist da der Unterschied?) Und mit dem Tab-Zeichen als Spaltentrenner, damit kommen die üblichen Tabellenprogramme wie Excel auch klar.

Dann zu deinem Upload: Was soll das mit dem Timing-VI? Use Waveform? Das ist die Zeiteinstellung für eine Analog-Ausgabe. Du willst doch Daten einlesen. Bleib doch einfach bei den Einstellungen wie in den Beispielen.
Weiter im Text: "Write To Spreadsheet File" hat noch so einen schönen Anschluss: "append to file?", da würde ich an deiner Stelle einmal ein "True" anschließen, du willst doch nicht in jedem Durchgang den File neu anlegen.

Vielleicht kannst du auch bei deinem nächsten Upload den DAQmx-Task mal in Code umwandeln. Ich gehe davon aus, dass du schon irgendwas im MAX konfiguriert hast, bloß weiß keiner außer dir, was?Glas2

Hier mal eine kleine (ungetestete) Anpassung:
Lv86_img[attachment=30580]

Gruß, Jens


DAQmx Messwerte schreiben - Maurice - 14.11.2010 23:03

Hallo Jens,

ich danke dir für deinen Beitrag, das kann ich gut benutzen. Hätte nicht gedacht, dass man es so einfach realisieren kann.

Viele Grüße

Maurice


DAQmx Messwerte schreiben - Y-P - 15.11.2010 07:26

Ich würde noch folgende Verbindung reinziehen, damit die History auf jeden Fall VOR der Schleife ausgeführt wird. Nur weil Du den Property Node links platzierst, wird er nicht vor der Schleife ausgeführt.
[attachment=30582]

Gruß Markus


DAQmx Messwerte schreiben - Maurice - 15.11.2010 16:59

Die Lösungen sind ganz gut, habe dafür aber eine noch effizientere Lösung gefunden:

http://decibel.ni.com/content/docs/DOC-9543

Hier wird eine producer und eine consumer- loop angewendet zum effizienteren speichern.
(siehe upload)

Jetzt zum Problem: Bei zu hoher Abtastrate (z.B. 20khz) habe ich eine Flaschenhals beim Speichern. Das wirkt sich in eurer Lösung durch einen Fehler aus und in der von National instruments derart, dass nicht alle Zeilen geschrieben werden.

Klar ich könnte das express-vi "Messwerte schreiben" verwenden, aber ich bruahce dringend eine csv, Datei ";"- getrennt, außerdem müssen noch Kanäle aus der SPS dazu geschlüsselt werden.

Was meint ihr?


DAQmx Messwerte schreiben - Y-P - 15.11.2010 17:06

Warum schreibst Du eigentlich dauernd?
Sammle doch die Werte und schreibe sie dann nur z.B. alle 10s (und sammelst dann parallel dazu weiter) oder ganz am Schluss.

Gruß Markus


DAQmx Messwerte schreiben - Maurice - 15.11.2010 18:04

und wie könnte ich das realisieren? Das "sammeln" wird ja schon durch die Queue realisiert - die ist aber zu klein denke ich, bzw hier ist der Flaschenhals. Man müsste die Queue irgendwie vergrößern und wenn man die Messung stoppt, soll er aus der Queue die Werte "nachspeichern"