LabVIEWForum.de - Einschaltverzögerung

LabVIEWForum.de

Normale Version: Einschaltverzögerung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi,
in meinem Projekt müsste ich öfters Einschaltverzögerungen einbauen. Ich probiere schon die ganze Zeit rum, aber es klapt einfach nicht so wie ich will.
Und ich verstehe auch nicht wieso dieses was ich jetzt gemacht habe nicht geht. Durch das AND müsste die LED doch ausgehen wenn ich den schalter aus schalte?? Denn es schaltet auch verzögert ab


Lv85_img
Ja es schaltet auch verzögert ab. Um genau zu sein läuft nun die ganze Schleife verzögert.
Denn:
Solange der Schalter auf true gesetzt ist wird bei jedem Durchlauf einmal das Wait ausgeführt. Schaltest du den Schalter nun wieder auf aus, dann dauert es noch zwischen 0 - "eingestellte WaitZeit" bis das LED ausgeht. Je nachdem wann du (komplett zufällig) den Schalter gerade betätigst und wie weit das aktuelle Wait eben gerade ist.

Grüße

edit:
Im Anhang eine (der vielen möglichen) saubere Programmierung. Das Wait wird nun nur ausgeführt, wenn du den Schalter auf True legst. Beachte bitte auch die durchgezogene Verbindung durch beide Cases der Casestruktur, die bei dir fehlte (was kein Problem war, aber schnell zu Problemen führen kann)

[attachment=14011]Lv85_img
Super, DankeSmile

Verstehe ich das richtig, das die Konstante ausserhalb der While schleife dann quasi angibt wo sich die schleife gerade befindet?
' schrieb:Super, DankeSmile

Verstehe ich das richtig, das die Konstante ausserhalb der While schleife dann quasi angibt wo sich die schleife gerade befindet?

Nein das verstehst du falsch Cool

Das ganze nennt sich "initialisiertes Schieberegister".
Die Konstante vor der Schleife wird nur einmal aufgerufen und setzt damit den Anfangszustand des Schieberegisters. Das Schieberegister selbst stellt dir den Wert des vorherigen Durchlaufs bereit.

In diesem Fall dient das Schieberegister dazu Änderungen im Zustand deines Schalters zu detektieren. Is der Schaltzustand des vorherigen Durchaufs ungleich dem jetzigen Zustand und außerdem der Schalter jetzt auf "True", so entspricht dies ja genau dem Einschalten. Dann (und nur dann) wird der Case aufgerufen und das Wait ausgeführt
Hallo zusammen,

so kann man es auch lösen.

Gruß
Christian

Lv85_img
Hi, danke für eure Lösungen, aber ich habe da noch ein Problem mit. Das ganze soll in einem größeren Projekt eingearbeitet werden, also auch in subVi's. Und das Signal das verzögert raus kommt muss weiter verarbeitet werden. Aber das Signal lässt sich nicht aus der While schleife raus führen.
Ich raffs irgendwie nichtSad
Hallo Destiny,
um Daten aus parallel laufenden Prozessen herauszubekommen kannst du Queues oder Notifier benutzen. Schaue Dir am besten dazu die gelieferten Beispiele im Example Finder an. "Producer/Consumer" ist ein anderes Stichwort für Dich, bzgl. dessen du Dich mal schlau machen solltest. Wink

Mike
Guten Morgen,

ich fürchte fast du bist eventuell überhaupt auf einem falschen Weg. Vielleicht täusche ich mich aber auch.

LabVIEW ist flußgesteuert. Jede Funktion startet genau dann, wenn alle nötigen Daten am Eingang anliegen. Was du also nicht machen kannst ist, dadurch, dass du irgendein Signal zeitlich verzögerst mithilfe z.B. eines Waits, eine Zeitdifferenz zwischen zwei Signalen herbeizuführen. Wie gesagt warten alle Funktionen, bis die Daten anliegen.
Um zeitliche Steuerungen einzubauen musst du dir (wie MikeS81 schon angedeutet hat) komplexere Funktionen und vorallem parallele Schleifen anschauen.

Grüße
@Kvasir
Ganz kleiner klugscheißerischer Hinweis: Man kann die Logik noch vereinfachen:
So [attachment=14261] statt so: [attachment=14260]
' schrieb:Guten Morgen,

ich fürchte fast du bist eventuell überhaupt auf einem falschen Weg. Vielleicht täusche ich mich aber auch.

LabVIEW ist flußgesteuert. Jede Funktion startet genau dann, wenn alle nötigen Daten am Eingang anliegen. Was du also nicht machen kannst ist, dadurch, dass du irgendein Signal zeitlich verzögerst mithilfe z.B. eines Waits, eine Zeitdifferenz zwischen zwei Signalen herbeizuführen. Wie gesagt warten alle Funktionen, bis die Daten anliegen.
Um zeitliche Steuerungen einzubauen musst du dir (wie MikeS81 schon angedeutet hat) komplexere Funktionen und vorallem parallele Schleifen anschauen.

Grüße
jap, das befürchte ich jetzt auch. Geht es nicht vielleicht über das "Elapsed Time" ? Denn während das abläuft läuft der Rest ja weiter. Nur ist das Problem das man es zwar auf eine Bedingung hin ausführen kann, aber wenn dann nochmal gestartet wird reseted es sich nicht von selbst.
Seiten: 1 2
Referenz-URLs