LabVIEWForum.de - Zeitsteuerung Sequenz

LabVIEWForum.de

Normale Version: Zeitsteuerung Sequenz
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Pete,

Zitat:Im linken Teil wird das Array ausgelesen, dann transponiert und indiziert auf jedes Elment einer Spalte zugegriffen.
Warum keine autoindizierende FOR-Loop?
(Warum keine geraden Drähte? Warum drei einzelne IndexArray-Aufrufe?)

Zitat: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.
Ja, so ist das…

Zitat:Leider werden die Funktionen zum Versenden erst ausgeführt, wenn beide Waitbefehle in der Case-Struktur abgearbeitet worden.
Beide warten (ca.) gleich lange, beide werden (mehr oder weniger) nach den beiden Warte-Befehlen ausgeführt. So hast du es programmiert, hast du doch selbst so beschrieben!

Zitat:Was mache ich verkehrt?
Du beschreibst, was du programmiert hast. Und wunderst dich dann, das es genau so funktioniert?

Zitat:Ich schätze, ich verstehe ich die Grundlagen nicht richtig.
Scheint so, siehe auch Anmerkungen beim ersten Punkt. THINK DATAFLOW!
(Ab und zu mal Ctrl-U schadet auch nicht…)

Zitat:Nun möchte ich zwischen den Versenden jedes Befehls eine Verzögerung einbauen, die 0 oder 1 Sekunde sein soll.
Wenn du das so willst, musst du es auch so programmieren. Zu sehen ist davon jedenfalls noch nichts!
Du willst "zwischen den Versenden jedes Befehls" warten, als sollte die Wartezeit "zwischen den Versendebefehlen" angeordnet sein!
Momentan wartest du nur "vor dem Versand"…
Ich weis es nicht....entschuldige. Ich lese aus deiner Dataflow-Hilfe nur raus, dass an einer Funktion alle Input Variablen anliegen sollten, bevor sie aussgeführt wird. Und in der Hilfe von NI finde ich auch nichts zum Stichwort Datenfluss, Programmfluss....Wenn ich den Wait-Befehl zwischen meinen Funktionen zum Versenden im Raum platziere, dann wird er auch erst dann ausgeführt, wenn alle Funktionen schon ausgeführt worden?
Sicherleich ließe es sich gut mit einer Seuqenz realisieren....trotzdem suche ich eine andere Möglichkeit
Hallo Pete,

Zitat:Ich lese aus deiner Dataflow-Hilfe nur raus, dass an einer Funktion alle Input Variablen anliegen sollten, bevor sie aussgeführt wird.
Korrekt. DATAFLOW = eine Funktion wird erst dann ausgeführt, wenn allle benötigten Inputs bereit stehen…

Zitat:in der Hilfe von NI finde ich auch nichts zum Stichwort Datenfluss, Programmfluss....
Mein Link verweist doch direkt in die LabVIEW-Hilfe, genau auf dein Artikel zum DATAFLOW…

Zitat:Wenn ich den Wait-Befehl zwischen meinen Funktionen zum Versenden im Raum platziere, dann wird er auch erst dann ausgeführt, wenn alle Funktionen schon ausgeführt worden?
THINK DATAFLOW!
Wenn du den WAIT-Befehl einfach nur hineinschmeißt, OHNE irgendeine DATAFLOW-Abhängigkeit, wird er natürlich parallel zum Rest des Codes ausgeführt! (DATAFLOW: Eine Funktion wird ausgeführt, wenn alle Inputs bereit stehen!)
Wenn du aber Freddys Vorschlag aufgreifen würdest und dem WAIT durch die ErrorIO-Anschlüsse zusätzliche Möglichkeiten geben würdest, den DATAFLOW zu erzwingen, könntest du das WAIT NACH dem ersten und VOR dem zweiten Versenden ausführen lassen…

Beispiel:
[attachment=54900]
Das grüne Icon entspricht Freddys Vorschlag, stammt aber aus meiner user.lib…
In LabView werden innerhalb einer Schleife immer alle Funktionen parallel abgearbeitet. Dies kann man nur verhindern in dem man durch Verbindungen den Weg vorgibt.
Wenn Du das Programm mit der Highlight-Funktion laufen lässt, wirst Du sehen wie der parallel Ablauf funktioniert.
In Deinem Fall werden zuerst die 3 Arrays ausgelesen, dann kommt die erste Zeitschleife, die Ausgabe und dann die zweite Zeitschleife. Erst jetzt wird Versenden 1 und dann Versenden 2 ausgeführt.

Bei LabView wird in einer Schleife von links oben angefangen ab zu arbeiten.

Wenn Du einen VI erstellst mit Array Auswahl Zeit und Versenden, kannst Du den zweimal verwenden.
Ich habe mal ein Muster angehängt, die Versendenfunktion muss natürlich wie bei Dir angeschlossen werden.

Gruß
Freddy
Hallo Freddy,

Zitat:Bei LabView wird in einer Schleife von links oben angefangen ab zu arbeiten.
Diese Aussage halte ich für grob fahrlässig bis grundlegend falsch…

Bei einem LabVIEW-VI ist es egal, wo welche Funktion auf dem BD angeordnet ist: der DATAFLOW bestimmt die Ausführungsreihenfolge!
Hallo GerdW,
Du hast natürlich recht. ich habe mich völlig falsch Ausgedrückt.
Es ist richtig, der Datenfluss bestimmt die Ausführung.
Der Versuch meiner Erklärung war wohl nichts. Blush

Gruß
Freddy
Seiten: 1 2
Referenz-URLs