LabVIEWForum.de
Ablauf einer Reihe - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Ablauf einer Reihe (/Thread-Ablauf-einer-Reihe)

Seiten: 1 2


Ablauf einer Reihe - Zufall - 08.01.2013 18:18

Moin,

nach einer etwas längeren Pause stehe ich mal wieder vor einem Problem Bahn

Ich Möchte 12 LEDs (Boolesch) eine nach dem anderen grün werden lassen. Aber sie sollen jeweil nach einer bestimmten Zeit auch noch blinken.
Also LED 1 geht nach 3sek. an, nach weiteren 3 fängt sie an zu blinken und nach wieder weiteren 3 geht LED 2 an, erst grün, dann blinkend...
halt immer so weiter.
Das ganze soll jederzeit Anzuhalten sein und auch wieder auf den Ausgangspunkt zurückstellbar sein, also alle 12 LEDs aus.

Ich habe mich jetzt schon ein wenig ausgetobt, aber ich komme nicht so recht weiter. Ich habe 3 Fragen:

1. Warum blinken manche LEDs ohne überhaubt einen Wert zu bekommen?

2. Wie kann ich die Case auf false stellen, bevor ihr Inhalt durchgelaufen ist?

Und zu letzt

3. Gibt es noch eine hübschere und vielleicht viel kompaktere Lösung für mein Problem?


Es wäre super, wenn Ihr mir helfen könntet Wink


RE: Ablauf einer Reihe - Trinitatis - 08.01.2013 18:32

Zu 1.)
Du setzt ja die Eigenschaft der LEDs auf blinkend. Das tun sie dann auch, solange du diese Eigenschaft nicht zurücksetzt.
Beim Neustart des VIs blinken sie dann immernoch.

Zu 2.)
So wie du es programmiert hast, musst du erst warten, bis deine Forschleife durchgelaufen ist - deshalb isses egal, ob du zwischendurch den Case auf false stellst. Du musst dir in der Schleige eine Abbruchbedingung schaffen und eine Whileschleife verwenden, oder noch besser über ne Eventstruktur


zu3.) bestimmtSmile

siehe 1. + 2.
Außerdem kannst du das Blinken ja vielleicht auch programmieren, da bist du freier in der Blinkfrequenz und der Auswahl der Blinkfarben.

Gruß, Marko


RE: Ablauf einer Reihe - jg - 08.01.2013 18:38

Noch ein Nachtrag:

Das Shift-Register ist uninitialisiert. Damit ist beim mögliche zweiten Start die "verstrichene Zeit" verkehrt.

Bei deinem Versuch, die Schleife per "Stop LabVIEW" abzubrechen, missachtest du den Datenfluss!

Gruß, Jens


RE: Ablauf einer Reihe - Zufall - 08.01.2013 18:44

Danke für die schnelle Antwort Smile

Also 1. habe ich verstanden, und meinen Fehler schonmal behoben.

Zu 2.: Also wird das nichts mit der For-Schleife? Ich versuche es mal mit ner While, da ich die Eventstruktur noch nicht verstanden habe Sad

Ich habe auch noch einen zweiten wesentlich kompakteren Versuch, jedoch ist mir da noch nicht ganz klar, wie ich die LEDs zum blinken bringen kann.


RE: Ablauf einer Reihe - Trinitatis - 08.01.2013 18:51

Grundsätzlich kannst du dir schonmal ne Eventstruktur inne Whileschleife packen, und den TO von außen auf deinen jetzigen Wartewert legen. Dann hast du schonmal das gleiche wie jetzt, kannst aber den TO-Durchlauf jederzeit durch irgendwelche Knöpfe unterbrechen und irgendwas anderes machen, bis hin zum Stopp des ganzen.
Die Blinkerei der LEDs ist ja nur eine Farbzuweisung - musst du mal unter den Eigenschaften -> Farben der LEDs nachsehen und bisschen in der Hilfe "rumgoogeln"

Und denk an die Schieberegisterinitialisierung - das ist mit das wichtigste - sonst blinkt irgendwann nur noch allesSmile

Mit der Stopfunktion wäre ich auch vorsichtig, da damit auch alle aufrufenden VIs gestoppt werden, falls du das VI mal als Sub-VI verwenden willst, is das dann blöd.

Gruß, Marko
Hab mir grad dein Kompakt-VI mal angesehen. Das sieht schonmal intelligenter ausSmile
In den einzelnen Cases müsstest du jetzt die Farbzuweisungen für die Blinkerei einbauen - und die Eventstruktur würd ich in jedem Fall auch einbauen. Wenn du weiter LV programmieren willst, kommst du um die sowieso nicht herum.


Gruß, Marko


RE: Ablauf einer Reihe - jg - 08.01.2013 18:56

Na, Version 2 ist doch schon mal viel besser.

Jetzt hier eine gescheite Initialisierung:
[attachment=42965]
und da Anschalten des Blinking könntest du so machen:
[attachment=42966]

Gruß, Jens


RE: Ablauf einer Reihe - Zufall - 08.01.2013 19:21

Danke Markus, das mit der While funktioniert schonmal wunderbar Smile mit der Ereignisstruktur werde ich mich dann wohl mal beschäftigen müssen.

Das mit der Initialisierung und dem Blinking verstehe ich leider noch garnicht. Sind das Snippets und es liegt an meinem Firefox, oder sind das nur Screenshots? Also die Initialisierung des Schieberegisters habe ich verstanden. Ich meine das, was du da zeigst Jens.


RE: Ablauf einer Reihe - jg - 08.01.2013 19:26

Das sind nur Screenshots, keine Snippets. Kann man am "fehlenden" Snippet-Rahmen erkennen.
Initialisierung: Naja, das Blinken soll doch sicher bei einem Neustart zurückgesetzt werden. Also erst einmal alle Blink-Eigenschaften aller Elemente des Cluster auf False.

Gruß, Jens


RE: Ablauf einer Reihe - Zufall - 08.01.2013 19:35

Ich glaube es verstanden zu haben.

Also ich weiß nurnicht, was dieses Controls an dem Blinking macht und wo ich das finde. Und muss ich dann z.B. in Case 12 Alle 11 LED Eigenschaftsknoten Blinking Packen und auf true stellen? Und in 11 dann 10 und so weiter? Oder geht das anders?


RE: Ablauf einer Reihe - jg - 08.01.2013 19:41

(08.01.2013 19:35 )Zufall schrieb:  Also ich weiß nurnicht, was dieses Controls an dem Blinking macht und wo ich das finde.
Worauf willst du jetzt hinaus?
(08.01.2013 19:35 )Zufall schrieb:  Und muss ich dann z.B. in Case 12 Alle 11 LED Eigenschaftsknoten Blinking Packen und auf true stellen? Und in 11 dann 10 und so weiter? Oder geht das anders?
Nein, THINK DATAFLOW, du hast doch schon im Schritt "Probe2" der StateMachine die Eigenschaft "Blinking" von Led1 auf True gesetzt. Die bleibt solange erhalten, bis du sie wieder auf False setzt. Im Schritt "Probe12" musst du also nur Led11 auf Blinkend stellen. Und im Fertig-Schritt dann LED12.
Könnte man natürlich auch durch Auswahl des korrekten Arrays-Elements aus dem Eigenschaftsknoten "Controls[]" machen, den ich im Init-Case eingefügt habe.

Gruß, Jens