LabVIEWForum.de
Innerhalb While-loop TRUE zu FALSE ändern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Innerhalb While-loop TRUE zu FALSE ändern (/Thread-Innerhalb-While-loop-TRUE-zu-FALSE-aendern)



Innerhalb While-loop TRUE zu FALSE ändern - iSzr - 12.05.2018 16:34

Hallo LabVIEW Community,

bin momentan dabei ein xy-Tisch über LabVIEW zu steuern.
Zur Positionierung der Startposition habe ich Endlagenschalter an den Tisch angebracht.

Nun möchte ich eine Startposition definieren, hierbei soll die Platte auf meinem Messtisch bis zu einem der Endlagenschalter fahren, diesen berühren und X mm bzw. X Schritte in die andere Richtung machen. Dies wäre dann meine Startposition.

Die Endlagenschalter Signale werden über DAQ in LabView "eingespielt" und befinden sich in der WHILE-Schleife, sodass die While Schleife entweder nach erreichen der vorgegebenen Strecke oder nach Betätigung der Endlagenschalter beendet wird.
Sobald die While-Schleife beendet wird, kann ich diese nicht automatisch starten lassen. Da nach der Betätigung TRUE am Stop der While Schleife "anliegt".

Ich habe bereits versucht durch Flache Sequenz und Warten in (ms) die Platte/Achse in TRUE warten zu lassen und dann in der nächsten Sequenz in False fortzusetzen, allerdings ist hierbei das Problem, dass der Schrittmotor sich (sehrlangsam) weiter dreht. Das möchte ich nicht. Nach Betätigung des Endlagers soll die Schrittzahl genullt werden d.h. kurz True und dann (False) in die andere Richtung x Schritte machen.

Mein Endlagenschalter ist an den Anschlüssen NC und COM mit einer Messbox verbunden. Der NO-Anschluss ist nicht angeschlossen.

Anbei hänge ich noch die VI und eine Übersicht zum Verständnis an.

Vielen Dank im Voraus.
Beste Grüße
iSzr


RE: Innerhalb While-loop TRUE zu FALSE ändern - GerdW - 14.05.2018 09:37

Hallo iSzr,

Zitat:Nun möchte ich eine Startposition definieren, hierbei soll die Platte auf meinem Messtisch bis zu einem der Endlagenschalter fahren, diesen berühren und X mm bzw. X Schritte in die andere Richtung machen. Dies wäre dann meine Startposition.
Das hört sich doch sehr nach einer Statemachine an:
State 1: Platte zum Endlagenschalter fahren lassen
State 2: x Schritte in die andere Richtung fahren lassen

Zitat:Sobald die While-Schleife beendet wird, kann ich diese nicht automatisch starten lassen. Da nach der Betätigung TRUE am Stop der While Schleife "anliegt".
Hmm
Wenn die Schleife beendet ist, willst du sie (wieder) starten lassen?

Allgemeine Anwort: wenn du Teile deines Codes mehrfach ausführen willst, solltest du diesen Codeteil in eine Schleife packen…

Zitat:Ich habe bereits versucht durch Flache Sequenz und Warten in (ms)
Eine (flache) Sequenz ist (so gut wie) nie die Lösung eines Problems in LabVIEW.
Und was soll es bringen, wenn du da eine Wartefunktion verwendest, die "0.05" warten soll, aber nur Integerwerte am Eingang verarbeiten kann?

Zum VI:
- Wieso werden so viele DAQmx-Tasks angelegt, aber nirgends korrekt beendet?
- Wieso befinden sich viele DAQmx-Tasks nicht in einer Schleife -obwohl du deren Inputs in den Schleifen verwendest?
- Deine Y-Schleife bleibt bei der Event-Struktur hängen…
- Eine "x OR TRUE"-Operation ist einfach Rube-Goldberg…
- Wieso sehen die "Geschwindigkeitsregler" wie typische Anzeigeinstrumente aus? (schlechte UX…)