LabVIEWForum.de - Messwertspeicherung alle 10 ms

LabVIEWForum.de

Normale Version: Messwertspeicherung alle 10 ms
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe ein Programm, dass über zwei Digital Inputs Channel A und Channel B eines inkremental Drehgebers einliest (siehe Anhang).
Ich würde gerne noch zwei Buttons einbauen. Einer, der das Programm startet und einer, der es beendet. Nach der Betätigung des Start-Buttons, soll jede Sekunde der Positionswert in ein Textdokument abgespeichert werden. (Die Zeit soll später auf 10ms eingestellt werden). Bevorzugt Excel, aber ich besitze die Toolbox nicht. In diesem Textdokument soll dann die Zeit stehen und der dazugehörige Positionswert. Ich weiß aber nicht, wie ich dies umsetzen soll. Ich habe schon sehr viel nachgelesen, aber keine Lösung gefunden. Hätte von euch jmd bitte eine Lösung parat? Die korrekte Verarbeitung der Position dürfte mit diesem Programm nicht realisierbar sein, es geht mir hierbei nur um die zwei Taster und die Datenerfassung.

Gruß Tobi
1. Ich würde eine Producer-Consumer-Struktur wählen, wo ich in einer extra Schleife die Daten blockweise, bzw. als Array wegschreiben würde.
2. Ich würde den DAQ-Assistenten durch "richtige" DAQ-Funktionen ersetzen.
3. Wenn Du Excel verwenden willst und das Report Generation Toolkit nicht hast, dann geht's problemlos über ActiveX (Bsp. dazu gibt's im Forum).

Gruß Markus
Hallo Tobi,

Zitat:Bevorzugt Excel ... In diesem Textdokument
Wenn dir ein einfaches Textdokument ausreicht, musst du nur in die File-Funktionspalette schauen...
Zitat:Bevorzugt Excel ... In diesem Textdokument

Dann kannst du auch in ne tdms Datei schreiben. Dafür gibt es ja ein PlugIn für Excel zum öffnen. Vorteil ist, dass du auch Meta Daten dazu schreiben kannst. Ist aber Geschmacksache. Eine Textdatei ist für Excel ja nun auch kein Problem.

Zitat:1. Ich würde eine Producer-Consumer-Struktur wählen, wo ich in einer extra Schleife die Daten blockweise, bzw. als Array wegschreiben würde.
Das würde ich wohl auch so machen. Big Grin

Zu deinen zwei Buttons. Kannst du nicht eine Case-Struktur in einer While-Schleife nehmen. Dein Code ist dabei in einem Case. So schaltet der eine Button die Case-Struktur und damit die Datenaufnahme und ein Button beendet die While-Schleife und damit das Programm. Meintest du das so?

Gruß
Tobias
Vielen Dank für euere Antworten. Ich werde da mal noch ein bisschen rumprobieren.
@tobiasf5: Ja genau so meinte ich es.
Also ich hab da jetzt mal ne Case-Struktur in ne While-Schleife gepackt. Es reicht ja eigt auch ein Button, mit dem man die Messaufnahme starten und stoppen kann. Jetzt müsste ich in den False-Case noch einbauen, dass es die Messung stoppt. Wie mach ich denn das?

Hab das mit der Consumer-Producer-Struktur auch noch nicht so recht verstanden. Wie kann ich mein Programm auf diese Struktur umbauen?

Ich weiß auch noch nicht, wie ich meine Messdaten (Position alle 10 ms) in eine tdms Datei packe. In der Datei sollte halt die Messzeit und die dazugehörige Position stehen.

Ich habe einmal mein VI angefügt. Könnte mir da bitte einer von euch mal etwas basteln? Ich finde LabView sehr schwer und komme da nicht ganz zurecht.
Hallo Tobi,

Zitat:Jetzt müsste ich in den False-Case noch einbauen, dass es die Messung stoppt. Wie mach ich denn das?
Momentan wird doch die Messung schon im TRUE-Case gestoppt (DAQmxClearTask!). Wozu also nochmal im FALSE-Case stoppen?

Zitat:Hab das mit der Consumer-Producer-Struktur auch noch nicht so recht verstanden. Wie kann ich mein Programm auf diese Struktur umbauen?
LabVIEW liefert fertige Konstrukte mit: einfach mal auf Datei->Neu... und die Producer-Consumer-Struktur auswählen...
Kurzzusammenfassung: separate DAQ-Schleife, die ihre Daten per Queue an die parallele Consumer-Schleife sendet.

Außerdem: das ständige Erstellen und Löschen eines DAQ-Tasks ist weder gut noch hilfreich!

Außerdem2: LabVIEW2009 verfügt auch schon über eine Aufräumfunktion...
Das mit dem FALSE-Case sehe ich ein. Wollte nur mal kurz ne Bestätigung.
Was muss ich denn jetzt bei der Erzeugerschleife und was bei der Verbraucherschleife rein tun?
Es hängt bei mir bei der Umsetzung.
Könntest du mir da mal etwas zusammen bauen?
Hallo Tobi,

die Producer-Schleife produziert Daten, hier sollte als der DAQmx-Kram rein.
Und die Consumer-Schleife "konsumiert" (d.h. verarbeitet) Daten, hier sollte dein Zählerkram hinein...

Das Grundmuster findest du hier schon, warum sollte ich das für dich (nach-)programmieren?
[attachment=47089]
Off Topic:
ich wollte hier nur mal eben etwas schreiben um die "Tobi"-Dichte des Themas noch weiter zu erhöhen! Big Grin

Gruß,
//Tobias
Referenz-URLs