Hallo,
ich bin Labviewneuling und habe ein Problem.
ich habe mich an einem Programm versucht, welches mehrere analoge Signale erfasst und sie mir von Fehlern, die durch die Messwerterfassung entstanden sind, bereinigt. Anschließend sollen Rohdaten (mit Fehlern) und die bereinigten Daten gespeichert werden.
Sobald ich das Labviewprogramm starte, werden Messwerte erfasst. Wie kann ich sicherstellen, dass die aufgezeichneten Rohdaten zu meinen bereinigten Daten gehören? Bzw. wie kann ich meine Messwerterfassung intern, also softwareabhängig, triggern?
Viele Grüße
Buzz
(16.04.2012 10:43 )buzz schrieb: [ -> ]Hallo,
ich bin Labviewneuling und habe ein Problem.
ich habe mich an einem Programm versucht, welches mehrere analoge Signale erfasst und sie mir von Fehlern, die durch die Messwerterfassung entstanden sind, bereinigt. Anschließend sollen Rohdaten (mit Fehlern) und die bereinigten Daten gespeichert werden.
Sobald ich das Labviewprogramm starte, werden Messwerte erfasst. Wie kann ich sicherstellen, dass die aufgezeichneten Rohdaten zu meinen bereinigten Daten gehören? Bzw. wie kann ich meine Messwerterfassung intern, also softwareabhängig, triggern?
Viele Grüße
Buzz
Herzlich Willkommen Buzz
Zu deiner Problemstellung sind noch einige Dinge unklar bevor wir dir weiterhelfen können:
Wie erfasst du denn die Messdaten?
Verwendest du den DAQ-Assistenten oder ist die Erfassung per DAQmx programmiert?
In welchem Format werden die Daten abgelegt bzw. wie willst du die Rohdaten mit den bereinigten Daten logisch ablegen?
Zu welchem Zeitpunkt werden die Messwerte bereinigt?
Am besten lädst du deinen bisherigen Versuch hoch, wenn du Glück hast erhälst du sogar noch andere Verbesserungsvorschläge
Grundsätzlich gilt der Ablauf deines Programms wird über den Datenfluss gesteuert.
Gruss Marc
Hallo Marc,
also ich erfasse meine Daten über ein NI USB X 6351. Ich habe über den MAX die Eingänge konfiguriert und einen Task erstellt.
Dann lege ich über DAQmx timing rate und die sample frequenz fest. Dann beginne ich mit dem bearbeiten der Daten. Gespeichert werden die Datensätze als lmv - Datei (Messwerte speichern).
Das funktioniert soweit ganz gut, nur dass meine Datenerfassung sofort nach dem Starten des Programms beginnt und ich nicht sicher sagen kann ob meine bereinigten Daten mit den Rohdaten übereinstimmen. Die Datenerfassung ist im Max als endliche Anzahl von Werten definiert.
Fehlerbereinigung und Speichern der beiden Datensätze erfolgt über eine flache Sequenz.
Hoffe ich hab ein bisschen Licht ins dunkle gebracht.
(16.04.2012 12:14 )buzz schrieb: [ -> ]Hallo Marc,
also ich erfasse meine Daten über ein NI USB X 6351. Ich habe über den MAX die Eingänge konfiguriert und einen Task erstellt.
Dann lege ich über DAQmx timing rate und die sample frequenz fest. Dann beginne ich mit dem bearbeiten der Daten. Gespeichert werden die Datensätze als lmv - Datei (Messwerte speichern).
Das funktioniert soweit ganz gut, nur dass meine Datenerfassung sofort nach dem Starten des Programms beginnt und ich nicht sicher sagen kann ob meine bereinigten Daten mit den Rohdaten übereinstimmen. Die Datenerfassung ist im Max als endliche Anzahl von Werten definiert.
Fehlerbereinigung und Speichern der beiden Datensätze erfolgt über eine flache Sequenz.
Hoffe ich hab ein bisschen Licht ins dunkle gebracht.
Im Prinzip könntest du ja programmieren, dass die Messung erst auf (bspw.) einen Knopfdruck gestartet wird. Das Datenformat lmv sagt mir gerade nichts, ist es das was beim Express-VI verwendet wird?
Für detailierte Einsicht wäre ein VI oder ein Screenshot hilfreich.
Gruss Marc
Sorry, hab mich vertippt. Gespeichert werden die Daten als lvm Datei! Die Daten werden analog eingelesen und als 16 bit Signal verarbeitet.
Aber genau das ist die Frage, wie starte ich die Messwertaufnahme für eine bestimmte Anzahl an samples bzw. für einen bestimmten Zeitrahmen? Das mit dem Knopfdruck wäre die Optimallösung!
Kann mir wer die Version auf LabVIEW 2009 runterspeichern? Bin noch ned so modern
@NWO Danke
Hey Buzz
Ich hab mir das VI mal angesehen und dabei ein paar typische Anfängerfehler gefunden.
Ziel ist es nicht die Wand mit deinem Blockdiagramm tapezieren zu können, gerade deine Fehlerbereinigungen schreien förmlich danach als SubVI's verwendet zu werden. Dadurch wird das Ganze auch gleich viel Übersichtlicher
Als Grundsatz gilt pro VI maximal ein Bildschirm (klar kann dies nicht immer eingehalten werden
)
Ein GANZ wichtiger Punkt: Lösche NIEMALS die Labels deiner Controls!! Im FP kannst du sie unsichtbar machen indem du einen rechtsklick auf das betroffene Control machst unter dem Punkt visible.
Für Operationen, welche mehrfach durchgeführt werden sollen ist es guter Programmierstyle das ganze über ein Array mit Schleife zu lösen.
Du scheinst den Datenfluss verstanden zu haben ansonsten hättest du keine Sequenzstruktur. Jedoch solltest du dir angewöhnen die Drähte von Links nach Rechts laufen zu lassen und dies konsequent
Hier mal dein VI mit ein paar Lösungs bzw. Korrekturvorschlägen sowie die korrekte Verwendung einer Eventstruktur:
[
attachment=39470]
Hoffe die kleine Kritik und die Eventstruktur helfen dir weiter! Bei Fragen meldest du dich einfach wieder
Gruss Marc
Hallo alle zusammen,
@marc: Vielen Dank für die Hilfe und die Kritik! Kritik ist immer gut, wenn sie konstruktiv ist. Deshalb gerne wieder :-)
Aber könnt ihr mir vielleicht nochmal helfen? Ich möchte nämlich, dass meine Messwerte bei Knopfdruck in einen Puffer geladen werden und diese dann unverändert und verändert (siehe hochgeladenes vi) abgespeichert werden. Und das bei festgelegter samples Anzahl und rate.
Ich versuchs seit tagen und ich schaffs einfach nicht die Messwerterfassung bei Knopfdruck zu starten und die Werte zum bestimmten Zeitrahmen x abzuspeichern. Ich habe immer die falschen Daten.
Viele Grüße
Buzz
(19.04.2012 07:08 )buzz schrieb: [ -> ]Hallo alle zusammen,
@marc: Vielen Dank für die Hilfe und die Kritik! Kritik ist immer gut, wenn sie konstruktiv ist. Deshalb gerne wieder :-)
Aber könnt ihr mir vielleicht nochmal helfen? Ich möchte nämlich, dass meine Messwerte bei Knopfdruck in einen Puffer geladen werden und diese dann unverändert und verändert (siehe hochgeladenes vi) abgespeichert werden. Und das bei festgelegter samples Anzahl und rate.
Ich versuchs seit tagen und ich schaffs einfach nicht die Messwerterfassung bei Knopfdruck zu starten und die Werte zum bestimmten Zeitrahmen x abzuspeichern. Ich habe immer die falschen Daten.
Viele Grüße
Buzz
Hey Buzz
Wenn ich dein Blockdiagramm richtig interpretiert habe möchtest du alle 1000 Messwerte deine Messdaten von Fehlern korrigieren und anschliessend die korrigierten Daten und die Orginaldaten in verschiedenen Files ablegen.
Falls dies der Fall ist, könnte die Producer-Consumer Architektur für dich von Interesse sein.
Dort werden die DAQ-Daten unabhängig vom ganzen Rest erfasst während eine langsamere Verarbeitungsschleife (da mehr Operationen) die Daten auswertet.
Ein Beispiel findest du unter
Producer/Consumer. Damit hast du über den sogenannten Queue gleich auch noch deinen Puffer realisiert.
Ich weiss nicht wie fest du auf das lvm-Format festgelegt bist, jedoch wäre es mit anderen Datenformaten (bspw. Excel) problemlos möglich die Orginal-Daten und die korrigierten im gleichen File zu speichern.
Hoffe das hilft dir weiter! Ansonsten kannst du ja mal versuchen die Änderungen umzusetzten , das Resultat hochzuladen und dich weiterer Kritik zu stellen
Gruss Marc