Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
21.03.2012, 14:18 (Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2012 14:26 von an0nym.)
Hallo zusammen,
ich bin im Rahmen eines Projekts damit beauftragt worden das passende VI zu schreiben.
Versuchsaufbau sieht wie folgt aus: Wir fahren mit einem Auto durch 2 Lichtschranken und wollen das Geräusch dazuwischen über ein Mikrofon aufzeichnen. Die erste Lichtschranke soll das Mikrofon einschalten, die zweite soll es ausschalten.
Bis jetzt nehme ich das Signal über einen DAQ Assistenten auf und mache einen Grenzwerttest, dieser gibt dann einen passenden boolean aus und das Mikrofon zeichnet auf. Problem ist nun, dass das Signal der Lichtschranke bei der Durchfahrt eventuell mehrmals über den Grenzwert springt. Deswegen möchte ich, dass der Grenzwerttest, sobald er eine Überhöhung feststellt z.B. o,5 Sekunden wartet bis er wieder weiterarbeitet. Allerdings brauche ich die Aufnahme des Mikrofons schon ab dem Zeitpunkt des ersten Signals.
Ich habe zuerst versucht es mit einem "warten" Befehl zu lösen, dann fehlen mir aber die ersten 0,5 Sekunden der Aufnahme. dann hatte ich die Idee das Signal einfach von einem 2. DAQ Assistenten zu nehmen, was auch nicht funktionierte, da 2 DAQ Assistenten nicht auf das gleiche Signal zugreifen können...
Wie löse ich das Problem nun am einfachsten?
ich verwende Labview 9 und habe nur sehr wenig Erfahrung mit Labview.
Im Anhang befindet sich ein Screenshot des Intressanten Teils des VI´s.
Ich hoffe dies wurde nicht schonmal gefragt, die SuFu hat mir leider nicht geholfen.
edit: ich glaube ich bin im falschen unterforum, vielliecht könnte ein netter Admin mich verschieben...
(21.03.2012 14:18 )an0nym schrieb: Wie löse ich das Problem nun am einfachsten?
Warum umgehst du das Problem nicht mit einer Sauberen Statemachine?
- Idle-State: warten auf Signal der Lichtschranke
- Wenn Signal kommt -> Wechsel in den State Datenaufzeichnung
- State Datenaufzeichnung -> Datenaufzeichnen bis Signal der zweiten Lichtschranke kommt
- evtl. weitere States für Anzeige/Messwertspeicherung/-analyse ect.
- und wieder zurück in den Idle-State
Weiterhin bietet es sich an auf den DaqAssi zu verichten und das ganze sauber mit DAQmx zu programmieren.
(21.03.2012 14:18 )an0nym schrieb: ich verwende Labview 9 und habe nur sehr wenig Erfahrung mit Labview.
Danke für die Antwort, allerdings glaube ich, dass das mein Problem nicht löst.
Dar Spannungsverlauf von einem Lichtschrankensignal sieht ungefähr so aus wie im Anhang. Wenn wir jetzt schneller durch die Lichtschranke fahren, kann es sein, dass die Amplituden höher sind und der Wert mehrmals über den Grenzwert steigt.
Der Grenzwerttest würde dann 2 (oder noch mehr) Signale geben und die Aufzeichnung wäre beendet. Um dies zu vermeiden soll der Grenzwerttest bei Überschreitung des Grenzwertes kurz warten bis er seine Arbeit wieder aufnimmt.
In der Theorie ziemlich einfach:
- Verlauf beobachten bis Grenzwert erstmalig überschritten wird
- Kurz warten, trotzdem Verlauf aufnehemen und speichern
- Verlauf beobachten bis Grenzwert zum zweiten mal überschritten wird
(22.03.2012 13:33 )an0nym schrieb: - Verlauf beobachten bis Grenzwert erstmalig überschritten wird
- Kurz warten, trotzdem Verlauf aufnehemen und speichern
- Verlauf beobachten bis Grenzwert zum zweiten mal überschritten wird
Ok, dann musst du das ganze noch parallelieren. Du kannst ja parallel zur Verlaufsaufnahme den Grenzwert überwachen. Somit wären beide voneinander unabhängig. Dann kannst du auch ganz einfach eine Wartezeit - bis nach erstmaligem Überschreiten der Grenze diese erneut überschritten wird - einbauen.
Beste Grüße,
NWO
9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris.
NI schrieb:To use the abort button is like using a tree to stop a car!