Datenfluss im Blockdiagramm
- Aktualisiert2025-08-27
- 3 Minute(n) Lesezeit
Bei der Ausführung von VIs ist der Datenfluss maßgeblich Ein Blockdiagrammknoten wird dann ausgeführt, wenn alle seine Eingangswerte vorliegen. Wird ein Knoten ausgeführt, erzeugt dieser Ausgangsdaten, die an den nächsten Knoten in der Datenflussfolge weitergeleitet werden. Die Abfolge der VIs und Funktionen im Blockdiagramm wird durch den Datenfluss durch die Knoten bestimmt.
Visual Basic, C++, JAVA und die meisten anderen befehlsorientierten Programmiersprachen folgen bei der Programmausführung einem durch Befehle bestimmten Ablauf. Wenn ein Programm befehlsgesteuert ist, bestimmt die Reihenfolge der darin enthaltenen Elemente die Ausführung des Programms.
In LabVIEW bestimmt der Datenfluss und nicht die Reihenfolge der Programmierbefehle die Ausführungsreihenfolge der Elemente im Blockdiagramm. Daher können Vorgänge in Blockdiagrammen gleichzeitig ausgeführt werden. So können zum Beispiel zwei For-Schleifen parallel ausgeführt und die Ergebnisse gleichzeitig auf dem Frontpanel angezeigt werden, wie im nachfolgenden Blockdiagramm dargestellt.
LabVIEW ist ein multitasking- und multithreadfähiges System, bei dem mehrere Ausführungs-Threads und VIs gleichzeitig ausgeführt werden können.
Datenabhängigkeit und künstliche Datenabhängigkeit
Bei der befehlsorientierten Programmierung ist die Ausführung anweisungsgesteuert. Bei der datenflussorientierten Programmierung läuft ein Programm hingegen datengesteuert bzw. datenabhängig ab. Ein Knoten, der Daten von einem anderen Knoten empfängt, wird immer erst ausgeführt, nachdem die Ausführung des vorherigen Knotens abgeschlossen ist.
Blockdiagrammknoten, die nicht miteinander verbunden sind, können in jeder beliebigen Reihenfolge ausgeführt werden. Beim Fehlen einer natürlichen Datenabhängigkeit kann die Ausführungsreihenfolge auch mit Hilfe von Durchflussparametern gesteuert werden. Wenn Durchflussparameter nicht zur Verfügung stehen, kann die Ausführungsreihenfolge auch durch eine Sequenzstruktur gesteuert werden.
Fehlende Datenabhängigkeit
Gehen Sie nicht von einer Ausführungsreihenfolge von links nach rechts oder von oben nach unten aus, wenn es keine Datenabhängigkeit gibt. Legen Sie die Ausführungsreihenfolge der Objekte gegebenenfalls selbst fest, indem Sie den Datenfluss durch die entsprechenden Verbindungen vorgeben.
Im folgenden Blockdiagramm besteht keine Abhängigkeit zwischen den Funktionen Aus Binärdatei lesen und Datei schließen, da diese beiden Funktionen nicht miteinander verbunden sind. Dieses Beispiel funktioniert möglicherweise nicht wie erwartet, weil es keine Möglichkeit gibt, festzulegen, welche Funktion zuerst ausgeführt wird. Wenn die Funktion "Datei schließen" zuerst ausgeführt wird, arbeitet die Funktion "Aus Binärdatei lesen" nicht.
Im folgenden Blockdiagramm wird eine Abhängigkeit erzeugt, indem ein Ausgang der Funktion "Aus Binärdatei lesen" mit der Funktion "Datei schließen" verbunden wird. Die Funktion "Datei schließen" wird erst ausgeführt, wenn die Ausgabe der Funktion "Aus Binärdatei lesen" empfangen wird.
Durchflussparameter
Durchflussparameter, gewöhnlich eine Referenz oder ein Fehler-Cluster, geben denselben Wert aus wie der entsprechende Eingangsparameter. Diese Parameter sollten verwendet werden, um eine Ausführungsreihenfolge festzulegen, wenn keine Datenabhängigkeit vorliegt. Durch Verbinden der Ausgabeseite des Durchflussparameters des zuerst auszuführenden Knotens mit dem entsprechenden Eingang des nächsten Knotens kann eine künstliche Datenabhängigkeit geschaffen werden. Ansonsten müsste mit Sequenzstrukturen sichergestellt werden, dass Datenoperationen in der gewünschten Reihenfolge stattfinden.
Datenfluss und Speicherverwaltung
Mit dem Modell zur Datenflussprogrammierung gestaltet sich die Speicherverwaltung einfacher als bei befehlsorientierten Programmiersprachen. In LabVIEW wird Variablen kein Speicher und kein Wert zugewiesen. Stattdessen erstellen Sie ein Blockdiagramm mit Verbindungen, die die Richtung des Datenflusses symbolisieren.
VIs und Funktionen, die Daten generieren, reservieren auch automatisch Speicher für die Daten. Wenn das VI oder die Funktion die Daten nicht mehr verarbeitet, hebt LabVIEW die Speicherzuweisung auf. Wenn Sie einem Array oder String neue Daten hinzufügen, wird zur Verwaltung der Daten erneut Speicher reserviert.
Da LabVIEW den Speicher automatisch verwaltet, haben Sie weniger Kontrolle darüber, wann Speicher zugewiesen und wann die Zuweisung aufgehoben wird. Wenn das VI mit großen Datensätzen arbeitet, müssen Sie wissen, wann die Speicherzuweisung erfolgt. Ein Verständnis der zugrunde liegenden Prinzipien kann Ihnen dabei helfen, VIs zu schreiben, die bedeutend weniger Speicheranforderungen stellen. Eine geringere Speichernutzung kann dazu beitragen, die Geschwindigkeit zu steigern, mit der VIs ausgeführt werden.