LabVIEWForum.de - Fortschrittsbalken in while-Schleife

LabVIEWForum.de

Normale Version: Fortschrittsbalken in while-Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
' schrieb:Hi,
das hab ich dir oben beschrieben...

Allerdings machst du meiner Ansicht grundsätzlich bei der Programmierung was verkehrt! Die Schleife dient ja dazu, dein Programm am Leben zu erhalten...wie fängst du denn während deiner 15minütigen Bearbeitungszeit irgendwelche Ereignisse (Tastendruck etc.) ab? Ein Schleifendurchlauf sollte nicht länger als meinetwegen 1-2 Sekunden (eher weit darunter!) dauern...

Du solltest dein Programm mal überdenken...und am besten mit ner State-Machine-Architektur neu aufsetzen! Beispiele hierzu gibts zu Hauf im Forum und auch in LV integriert! Danach reden wir nochmal über den Fortschrittsbalken!

Gruss
Achim

Ich will gar keine Ereignisse abfangen. Ich bin dabei einen 21-stündigen Dauerlauftest zu erstellen. Dieser besteht aus einem Zyklus, welcher einfach wiederholt wird. Und ein solcher Zyklus dauert etwas eine Viertelstunde.
Wie kann ich dies mit einer Statemachine realisieren? Ich hab das zwei while-Schleifen. Die äußere erhält das Programm am Leben und die innere while-Schleife entspricht einem Zyklus. Dieser wiederrum enthält SubVIs und auch Zeitverzögerungen. Dadurch kommt es nun mal dazu, das die while-Schleife dann länger als nur 2 Sekunden ausgeführt wird.

Ich kann mir vorstellen, dass dies nicht die eleganteste Lösung ist, Ich bin ja auch noch ein Anfänger in Sachen LabVIEW.
' schrieb:Ich will gar keine Ereignisse abfangen. Ich bin dabei einen 21-stündigen Dauerlauftest zu erstellen. Dieser besteht aus einem Zyklus, welcher einfach wiederholt wird. Und ein solcher Zyklus dauert etwas eine Viertelstunde.
Wie kann ich dies mit einer Statemachine realisieren? Ich hab das zwei while-Schleifen. Die äußere erhält das Programm am Leben und die innere while-Schleife entspricht einem Zyklus. Dieser wiederrum enthält SubVIs und auch Zeitverzögerungen. Dadurch kommt es nun mal dazu, das die while-Schleife dann länger als nur 2 Sekunden ausgeführt wird.

Ich kann mir vorstellen, dass dies nicht die eleganteste Lösung ist, Ich bin ja auch noch ein Anfänger in Sachen LabVIEW.


Eine einfache Lösung für LV-Anfänger. Erstelle mal einen Fortschrittsbalken und mach viele lokale Variablen davon. Nach jedem SubVI und jeder Zeitverzögerung in deiner Schleife gib einen neuen Wert in die entsprechende lokale Variable ein.

Ansonsten einfach eine Forschleife benutzen imit einer Case-Struktur drin. An das Fragezeichen der Case-Struktur den Iterator der For-Schleife anschliessen. Soviele Cases erstellen wie du SubVIs und Verzögerungen hast. Die nacheinander in entsprechenden Case platzieren. Somit werden diese nacheinander abgearbeitet. Es funktioniert ähnlich wie eine Sequenzstruktur mit dem Vorteil, dass du die Daten zwischen den States über Schieberegister austauschen kannst und vor allem Platzproblem, das jeder LV-Anfänger hat. Besser ist, du nimmst statt einer For-Schleife eine While-Schleife und machst eine richtige State-Machine daraus. Dann hast du noch zusätzlich den Vorteil, dass du vom State zum State wie du willst springen kannst. Dazu kannst du dir das Design-Pattern im LV anschauen.

eg
Hallo,

also prinzipiell macht man sowas mit einer parallel laufenden While-Schleife:

[attachment=6905]

[attachment=6907]

Ist nicht sonderlich ausgereift, was ich da jetzt hochlade, aber ich hoffe, du verstehst das Prinzip.

MfG, Jens
Seiten: 1 2
Referenz-URLs