LabVIEWForum.de
Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben (/Thread-Laufende-For-Schleife-in-Case-Struktur-verhindert-Annahme-weiterer-Eingaben)

Seiten: 1 2


Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - dat_jernot - 24.07.2012 13:36

Hallihallo,

ich bin neu in diesem Forum als Mitglied, wobei mir, mittels Google, schon unzählige Forenbeiträge weitergeholfen haben!
Nun habe ich ein Problem, was, vielleicht ganz einfach ist, aber ich bin nicht mehr in der Lage über die Forensuche etwas dazu zu finden.
Ich habe ein Programm erstellt, welches zwei Schrittmotoren steuert und gleichzeitig Daten aus einem Spektrometer ausliest. Nun ist es so, dass ich möchte, dass das Spektrometer angesprochen wird, wenn die Motoren losfahren.

Ich habe das anhängende Programm zwar hier jetzt extrem abgespeckt, aber die relevanten Teile drin gelassen.
Wenn ich den Button "Motoren starten" drücke, bekomme ich (normalerweise) eine Antwort bei Motorstart und die Motoren laufen los. Beim Drücken von "Motoren stoppen" halten die Motoren an und ich bekomme eine Antwort bei Motorstop.
Nun kommt das Spektrometer in der For-Schleife hinzu. (For-Schleife wegen der bestimmten Anzahl der Durchläufe). Um einen zeitgleichen Start von Motor und Spektrometer zu ermöglichen, habe ich die For-Schleife in eine Case-Struktur gepackt und den Auswahlanschluss mit dem Schalter für den Motorstart verbunden. Die Schalter stehen auf "Latch beim Drücken"
Dann taucht mein Problem auf. Es funktioniert insofern, als das meine Motoren starten und die For-Schleife in gewünschter Anzahl durchlaufen wird. Allerdings kann ich in dieser Zeit die Motoren nicht mehr stoppen.
Kann mir jemand beantworten, wie ich das unterbinden kann? Bzw. mir einen anderen Vorschlag machen, wie ich die Synchronisation des Starts und die gewünschte Anzahl an Durchläufen hinbekomme.
Gern beantworte ich natürlich jede Frage, falls mein Pamphlet hier oder mein VI selbige aufwerfen ;-)

Vielen Dank!


RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - Y-P - 24.07.2012 14:21

Du könntest eine "Conditional For-Schleife" verwenden und die mit Deinem Motorstop-Button beenden.
Ich würde die Struktur aber an sich schon etwas anders machen.
Evtl. recht Dir eine State-Machine, ansonsten könntest Du auch ein "Producer-Consumer-Model" verwenden.

Gruß Markus


RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - GerdW - 24.07.2012 14:24

Hallo dat,

neben den (guten) Vorschlägen von Markus gibt es auch die Quick&Dirty-Lösung: parallele Schleifen unter Verwendung lokaler Variablen...

Du musst nur dein Button-Handling etwa ändern, da du dann nur "Switch"-MechanicalAction für die Buttons verwenden kannst.


RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - tobiasf5 - 24.07.2012 15:11

Stimmt,

oder du nimmst funktional globale Variablen, dann kannst du das Schaltverhalten lassen.

Gruß
Tobias


RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - dat_jernot - 24.07.2012 15:22

Vielen Dank ersteinmal :-)

Ich habe nun zuersteinmal die Quick & Dirty Lösung aufgerufen. Leider hat das zwar im Wesentlich funktioniert, aber wieder einige andere Probleme aufgerufen.
Wenn der "Motor starten" Schalter nicht nur latched, kommt der Startbefehl eben mehrmals bei der Motorsteuerung an, was dazu führt, dass die nicht mehr ganz das macht, was sie soll.
Schade eigentlich :-(

Wenn ich die conditional for Schleife verwende, kann ich das zwar super unterbrechen, aber meinen zeitgleichen Start der Motoren kriege ich dann nicht hin bzw. wenn ich alles so lasse und zusätzlich die conditional for Schleife verwende, habe ich das gleiche Problem wie vorher, dass ich warten muss, bis die Schleife durch ist und dann wieder erst Eingaben (wie auch den Stopp-Button) angenommen werden.

Das mit dem Producer-Consumer-Modell und die State Machine übersteigen noch mein derzeitiges LV-Wissen. Bin ja noch ein Neuling ;-) Erstmal schauen, was ich dazu noch finde.
Was meintest Du denn mit der Struktur generell anders?

Grüße

Edit schrieb:Ich probier das jetzt dann doch nochmal Quick & Dirty mit den funktional globalen Variablen :-)



RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - GerdW - 24.07.2012 15:27

Hallo dat,

deshalb habe ich geschrieben:
Zitat:Du musst nur dein Button-Handling etwa ändern, da du dann nur "Switch"-MechanicalAction für die Buttons verwenden kannst.



RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - dat_jernot - 24.07.2012 15:36

(24.07.2012 15:27 )GerdW schrieb:  Hallo dat,

deshalb habe ich geschrieben:
Zitat:Du musst nur dein Button-Handling etwa ändern, da du dann nur "Switch"-MechanicalAction für die Buttons verwenden kannst.

Hab ich ja auch gemacht - um festzustellen, dass meine Motoren dann eben leider nicht mehr vernünftig laufen. Gäbe es noch eine Möglichkeit, diese Case-Struktur "Motoren starten" nur einmal auszuführen?


RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - GerdW - 24.07.2012 16:46

Hallo dat,

mit dem Satz meinte ich: Du musst den Button auch programmatisch wieder zurücksetzen!
Bei Latched-Operationen geschieht dies automatisch, bei Switched eben nicht...


RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - dat_jernot - 02.08.2012 08:48

(24.07.2012 16:46 )GerdW schrieb:  Hallo dat,

mit dem Satz meinte ich: Du musst den Button auch programmatisch wieder zurücksetzen!
Bei Latched-Operationen geschieht dies automatisch, bei Switched eben nicht...
Nun wirds klarer ;-)
Leider hab ich das nicht hinbekommen :-(
Wie kann ich einen Button programmatisch wieder zurücksetzen, ohne ihn auf Latch umzustellen? In eine Sequenz verpacken und dann als Methode nen ReInit?

Daaanke


RE: Laufende For-Schleife in Case-Struktur verhindert Annahme weiterer Eingaben - GerdW - 02.08.2012 08:49

Hallo dat,

eine lokale Variable statt einer Methode tut's auch...