LabVIEWForum.de - Wartezeit

LabVIEWForum.de

Normale Version: Wartezeit
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi,
Folgendes Problem:
Ich soll bei meinem VI nach 2 sekündigen Aufleuchten einer "günen LED" eine "rote LED" zum Leuchten bringen.
Ich hab das ganze mit einer "Flachen Sequenstruktur" realisiert, bei der der linke Rahmen mit einer Wartezeit-uhr (2000ms) besetzt war,
und der rechte Rahmen mit meiner "roten LED".

Funktioniert, nur das Problem ist, dass die "rote LED" noch 2 Sekunden leuchtet obwohl die "grüne LED" schon aus ist.
Wegen der Sequenzstruktur auch verständlich, doch wie schaffe ich es, dass sie zeitgleich mit der grünen zu leuchten aufhört,
aber 2 sekunden später beginnt.

Anbei ein Screenshot vom Blockdiagramm und das komplette VI.

Ps.: Die "grüne LED" heißt: "Signal erfasst"
und die "rote LED" heißt: "Alarm!"


mfg
l.
Au, klasse, das habe ich mir gerade in einem Webcast gesehen.

In einer flachen Sequenzstruktur wartet der erste Case nicht, wenn du nur an den 2. Teil eine Variable anhängst. Sprich, die 2 Sekunden Wartezeit wird schon ausgeführt, auch wenn der Eingang für deine Boolsche Variable noch gar nicht angeliegt.

MfG, Jens
Danke, aber das war mir schon klar.

Weißt du wie ich das Problem löse?
Also so habe ich deine Aufgabe verstanden, da ist aber irgendwo ein Denkfehler bei dir oder ich habe es doch falsch verstanden.

eg
Aus dem Bauch:

Mache es mit einem Case.
Wenn TRUE Zeit ablaufen lassen und Signalzustand nach "aussen" legen, dort Alarm anschliessen.
Wenn FALSE einfach durchschleifen.

Das ist aber garnicht schön...Weil so wie Du es hast die ganze Apllikation wartet, und nicht nur das Licht - und in meinem Vorschlag bleibt es auch so...immer. und wenn während der Wartezeit umgeschaltet wird, hast Du auf jeden Fall ein kurzes blinken für einen Schlaifendurchlauf.

...Big Grin
Hehehe...Jetzt hat Eugen das gepostet, was ich geschrieben habe....
Hatt ich so schon mal - genau gleich um genau zu sein. Das Problem ist hierbei, wenn ich schnell alle Frequenzen
kurz durchlaufe, stoppt die Wartezeit-uhr das ganze Programm für 2 sekunden -> lässt rote LED kurz aufleuchten und
funktioniert erst dann wieder. Die rote LED darf aber nicht kurz aufleuchten.
Vielleicht erzählst du genauer welches Signal du erfasst und wann soll was aufleuchten und erlischen.

eg
Es soll über ein Mikrofon ein, oder mehrere Töne in LabVIEW eingelesen werden. In LabVIEW hat man dann die Möglichkeit
eine zu erkennende Frequenz einzugeben. Wenn die eingegebene Frequenz zum Beispiel: 1000 Hz, 100ms lang andauert ( 1000 Hz +/- 10 % z.Bsp)
soll eine SMS über ein Script an ein beliebiges Handy geschickt werden.
Es handelt sich hier um ein Mini-projekt für die Schule, also lasst uns nicht über den Zweck dieser Aufgabenstellung diskutierenSmile

So:
Ich hab anstelle des Tonsignales einfach ein Sinus-signal simuliert, dessen Frequenz ich einstellen kann. Nun
führe ich eine Spektrummessung durch - hierbei hole ich mir die Frequenzspitze heraus.
Hinzugefügt hab ich noch die Funktion der Toleranzeinstellung. Da sonst LabVIEW nur bei der exakten eingestellten Frequenz eine Aktion durchführt.
Nun habe ich den "Sollwert" mit den "Istwert" (inkl. Toleranz) verundet. Wenn nun die Frequenzen übereinstimmen erleuchtet eine grüne LED ("Signal erfasst").

Da ich aber noch eine Zeitverzögerung brauche, will ich dass die rote LED ("Alarm") erst aufleuchtet (später SMS) wenn die grüne LED 100ms leuchtet.
Sollte während oder nach den 100ms die grüne LED erlischen soll die rote LED SOFORT erlischen.

Momentan schaff ichs ja, dass die rote erst leuchtet nachdem die grüne LED eine gewisse Zeit lang (x) leuchtet, erlischt aber die grüne LED - leuchtet die rote noch x ms weiter.
Könnt ihr ja selbst ausprobieren.

So ich hoffe das reicht, genauer kann ich es nicht mehr erklären.
Es handelt sich hierbei sicher um eine einfache Anwendung, aber ich bin noch Anfänger in LabVIEW.

mfg
l.
Na ja, da würde ich mir zwei Schleifen machen, wobei die zweite sich ausführt, erst wenn ein Signal(Occurence) von der ersten gemeldet wird. Die erste Schleife - Signalauswertung sollte ja unbehindert laufen.
Zweitens würde ich Zeitdifferenz in der ersten berechnen um diese 100 ms rauszukriegen. Es geht mit einem Schieberegister und Tick Count VI.

eg

P.S. du muss noch dran denken, dass wenn die Frequenz z.B. 2 Sekunden, dauert, bekommst du 20 SMS, das musst du irgendwie abfangen. Also irgendwas mit Flankenauswertung einbauen.

Mehr sage ich nicht, du musst ja auch was lernen.Big Grin
Seiten: 1 2
Referenz-URLs