Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
14.12.2015, 15:31 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2015 21:04 von jg.)
ich habe ein Programm geschrieben, welches auf einer Sequenz, bestehend aus 5 Teilen, basiert. Ich weis, dass der Sinn und Zweck einer Sequenz ist, die einzelne Teile nacheinander abzuarbeiten. Trotzdem würde ich gerne wissen, ob und wenn ja wie man die Abarbeitung einer Sequenz steuern kann, sodass zwei Teile zeitgleich/ nahezu zeitgleich abgearbeitet werden? Vielen Dank für eure Anregungen!
Hallo LabViewPete,
unter den Beispielprojekten gibt es Handler für Nachrichten-Queues
Dort kann man über Nachrichten so etwas steuern.
Wenn man will kann man an Hand der Nachrichtenverteilung entscheiden ob hintereinander oder parallel.
erste Option: Sequenz durch eine Statemachine ersetzen. Da kannst du schon mal festlegen, in welcher Reihenfolge die "Frames" (aka States) abgearbeitet werden.
Wenn etwas wirklich parallel stattfinden soll, muss es aber auch in parallelen Schleifen stattfinden!
Okay, ich habe mein Programm so umgestaltet, dass in jeder Iteration eine Spalte (3 Elemente) einer 3x100 Matrix augelesen wird. Jedes Element stellt einen Befehl dar, den ich zeitlich getimt an eine weitere Funktion übergeben möchte. Wie kann ich das Tiiming in LabView umsetzen? Besten Dank!
Ich lese in jeder Iteration meiner While- Schleife 3 Werte eines Arrays indiziert aus und möchte jeden Wert an eine Funktion zum Versenden der Befehle übergeben. Nun möchte ich zwischen den Versenden jedes Befehls eine Verzögerung einbauen, die 0 oder 1 Sekunde sein soll. Wenn ich ein Wait-Element in meiner While- Schleife platziere, wartet mein Programm immer die 1 Sekunde nachdem alle Befehle versendet worden. Wie schaffe ich eine Verzögerung zwischen dem Versenden zweier Befehle?
Ich habe so etwas mal in einer einfachen Variante gemacht.
Ein eigenes VI mit der Wait - Funktion und einer Error (Eingang) und Error (Ausgang). Für die Wait - Funktion habe ich einen Zahlen Eingang noch dazu genommen. Dieses VI kann ich dann zwischen die Befehle über die Error Leitung hängen. Dann wird der erste Befehl ausgeführt, die Zeit abgewartet und der nächste Befehl wird ausgeführt.
Das Bild dient nur als Beispiel.
Vielen Dank für eure schnelle Hilfe. Ich habe dem Anhang einen Screennshot meines Programmes hinzugefügt. Im linken Teil wird das Array ausgelesen, dann transponiert und indiziert auf jedes Elment einer Spalte zugegriffen. Die extrahierten Befehle werden anschließend durch eine Case-Struktur geführt, in denen auch eine Wartezeit von 10s programmiert ist. Danach werden sie versendet. Wenn sie erfolgreich versendet wurden, wird der Laufindex der Schleife erhöht, sodass auf die nächste Spalte des Arrays zugegriffen werden kann (untere ausgeblendete Teil) . Leider werden die Funktionen zum Versenden erst ausgeführt, wenn beide Waitbefehle in der Case-Struktur abgearbeitet worden. Ich habe auch schon die Funtion zum Versenden in die Case-Struktur genommen...leider erfolglos. Was mache ich verkehrt? Ich schätze, ich verstehe ich die Grundlagen nicht richtig. Nochmals vielen Dank!