Ausführungsstrukturen in LabVIEW

Behandelte Themen

Ausführungsstrukturen enthalten Abschnitte des grafischen Programmcodes und steuern, wie und wann der Code ausgeführt wird. Die gängigsten Strukturen sind While-Schleifen, For-Schleifen und Case-Strukturen. Damit können Codeabschnitte wiederholt oder abhängig von festgelegten Bedingungen ausgeführt werden.

Schleifen

 

Video: Erstellung von Schleifen in LabVIEW

While-Schleifen

Eine While-Schleife führt ähnlich wie eine Do- oder Repeat-Until-Schleife in befehlsorientierten Programmiersprachen ein Unterdiagramm so lange aus, bis eine bestimmte Bedingung erfüllt wird (vgl. Abbildung 1).

(1) LabVIEW-While-Schleife  |  (2) Ablaufdiagramm  |  (3) Pseudo-Code

In Abbildung 1 sehen Sie eine While-Schleife in LabVIEW, ein Ablaufdiagramm, das die Funktion der While-Schleife widerspiegelt,
und die Programmierung einer While-Schleife in Pseudo-Code.

Die While-Schleife befindet sich auf der Palette "Strukturen". Wählen Sie die While-Schleife aus der Palette und ziehen Sie anschließend bei gedrückter Maustaste mit dem Cursor ein Rechteck um den Bereich im Blockdiagramm auf, der wiederholt ausgeführt werden soll. Wenn Sie die Maustaste loslassen, schließt sich der Rahmen der While-Schleife um den markierten Bereich.

Der While-Schleife werden Blockdiagrammobjekte hinzugefügt, indem diese einfach per Drag-and-Drop in das Innere der Schleife gezogen werden.

Die While-Schleife führt den darin enthaltenen Programmcode so lange aus, bis der Bedingungsanschluss – ein Eingangsanschluss – einen bestimmten booleschen Wert annimmt.

Über den Bedingungsanschluss einer While-Schleife können Sie auch eine einfache Fehlerbehandlung durchführen. Wenn Sie einen Fehler-Cluster mit dem Bedingungsanschluss verbinden, wird nur der Wert TRUE oder FALSE des Parameters "Status" des Fehler-Clusters an den Anschluss übergeben. Darüber hinaus ändern sich auch die Kontextmenüelemente "Bei TRUE stoppen" und "Bei TRUE fortfahren" in "Bei Fehler stoppen" und "Bei Fehler fortfahren".


Der Iterationsanschluss gibt die Anzahl der abgeschlossenen Schleifendurchläufe aus.

Die Zählung für die While-Schleife beginnt immer bei 0.

Hinweis: Die While-Schleife wird immer mindestens einmal ausgeführt.

Endlosschleifen

Endlosschleifen sind ein gängiger Programmierfehler.

Wenn der Bedingungsanschluss auf "Bei TRUE stoppen" eingestellt wird, ist das boolesche Element außerhalb der While-Schleife zu platzieren. Anderenfalls wird eine Endlosschleife erzeugt, wenn das Element beim Ausführungsbeginn der Schleife auf FALSE eingestellt ist.

Abbildung 2: Boolesches Element außerhalb der While-Schleife

Die Endlosschleife lässt sich auch durch Ändern des Werts nicht stoppen, da der Wert nur einmal abgefragt wird, bevor die Schleife beginnt. Um die While-Schleife mit einem Element zu stoppen, sollte sich das Element in der Schleife befinden. Zum Stoppen einer Endlosschleife müssen Sie die Ausführung des VIs abbrechen, indem Sie in der Symbolleiste auf die Schaltfläche "Ausführung abbrechen" klicken.

In Abbildung 3 wird die While-Schleife ausgeführt, bis die Ausgabe der Zufallszahlfunktion größer oder gleich 10 und das Element "Aktivieren" True ist. Die Funktion "UND" gibt nur dann TRUE aus, wenn beide Eingänge TRUE sind. Ansonsten wird FALSE ausgegeben.

Bei der Schleife in Abbildung 3 handelt es sich um eine Endlosschleife, da die Zufallsfunktion niemals einen Wert größer als 10,00 erzeugt.

Abbildung 3: Endlosschleife

Strukturtunnel

Daten werden über Tunnel in Strukturen hinein- und aus Strukturen herausgeführt. Der Schleifentunnel wird als farbiges Kästchen am Rand der While-Schleife dargestellt. Das Kästchen wird in der Farbe des Datentyps dargestellt, mit dem der Tunnel verbunden ist. Nach Beendigung des Schleifendurchlaufs verlassen die Daten die Schleife. Wenn Daten über einen Tunnel an eine Schleife weitergeleitet werden, wird die Schleife erst dann ausgeführt, wenn die Daten am Tunnel anliegen.

In Abbildung 4 ist der Iterationsanschluss mit dem Tunnel verbunden. Der Tunnelwert wird erst dann an das Anzeigeelement "Iterationen" weitergeleitet, wenn der Durchlauf der While-Schleife beendet ist.

Abbildung 4: Tunnel einer While-Schleife

Im Anzeigeelement "Iterationen" wird nur der letzte Wert des Iterationsanschlusses angezeigt.

For-Schleifen

veröffentlicht mit niBCVideo v1.1

Video: Verwendung von For-Schleifen in LabVIEW

Eine For-Schleife führt ein Unterdiagramm so oft wie festgelegt aus. In Abbildung 5 sehen Sie eine For-Schleife in LabVIEW, ein Ablaufdiagramm, das die Funktion der For-Schleife widerspiegelt, und die Programmierung einer For-Schleife in Pseudo-Code.

(1) LabVIEW-For-Schleife  |  (2) Ablaufdiagramm  |  (3) Pseudo-Code

Abbildung 5: For-Schleife

Die For-Schleife befindet sich auf der Palette "Strukturen". Sie können aber auch eine While-Schleife durch eine For-Schleife ersetzen. Klicken Sie dazu den Rahmen der Schleife mit der rechten Maustaste an und wählen Sie "Durch For-Schleife ersetzen".


Der Zählanschluss ist ein Eingangsanschluss, dessen Wert anzeigt, wie oft das Unterdiagramm ausgeführt werden soll.


Der Iterationsanschluss gibt die Anzahl der abgeschlossenen Schleifendurchläufe aus.

Die Zählung für die For-Schleife beginnt immer bei 0.

Die For-Schleife unterscheidet sich von der While-Schleife dadurch, dass die Iterationsanzahl der For-Schleife vorgegeben ist. Eine While-Schleife wird erst beendet, wenn der gewünschte Wert am Bedingungsanschluss anliegt.

Die For-Schleife in Abbildung 6 generiert 100 Sekunden lang eine Zufallszahl pro Sekunde, die jeweils in einer numerischen Anzeige dargestellt wird.

Abbildung 6: Beispiel für eine For-Schleife

Hinzufügen von Timing-Funktionen zu Schleifen

Wenn eine Schleife durchgelaufen ist, beginnt sofort die nächste Iteration – es sei denn, die Stopp-Bedingung wird erfüllt. Häufig muss die Durchlaufgeschwindigkeit (Frequenz) eingestellt werden. Wenn Sie zum Beispiel einmal alle 10 Sekunden einen Wert erfassen möchten, müssen Sie die Schleife so konfigurieren, dass sie alle 10 Sekunden durchläuft. Selbst wenn die Schleife nicht mit einer bestimmten Frequenz ausgeführt werden muss, benötigt der Prozessor Zeit für andere Tasks, wie die Verarbeitung von Benutzereingaben.

Wartefunktion

Beim Einfügen einer Wartefunktion in eine Schleife wird das VI die angegebene Zeit lang angehalten. Während dieser Wartezeit kann Ihr Prozessor andere Tasks ausführen. Wartefunktionen arbeiten mit dem 1-Millisekunden-Takt des Betriebssystems.


Die Funktion "Warten (ms)" wartet, bis der Millisekundenzähler so hoch gezählt hat wie festgelegt. Durch diese Funktion wird gewährleistet, dass die Schleife immer mindestens so häufig durchgeführt wird, wie Sie angegeben haben.

Case-Strukturen

veröffentlicht mit niBCVideo v1.1

Video: Verwendung von Case-Strukturen in LabVIEW


Eine Case-Struktur hat mindestens zwei Unterdiagramme (Cases).

Davon ist immer nur jeweils ein Unterdiagramm sichtbar und die Struktur führt immer nur jeweils einen Case aus. Welches Unterdiagramm ausgeführt wird, hängt vom jeweiligen Eingangswert ab. Die Case-Struktur entspricht der Switch- oder If-Then-Else-Anweisung in befehlsorientierten Programmiersprachen.


Der Case-Selektor am oberen Rand der Struktur gibt den Namen des Cases an (mittlerer Teil) und enthält rechts und links einen Pfeil.

Damit kann zwischen den einzelnen Cases gewechselt werden. Wenn Sie auf den Pfeil rechts neben dem Case-Namen klicken, wird ein Pulldown-Menü mit den vorhandenen Cases angezeigt.


Die Eingangswerte werden über den Selektoranschluss an die Schleife übergeben.

Der Selektoranschluss kann nur mit einem Integer, booleschen Wert, String oder Enum-Wert verbunden werden. Der Anschluss kann an einer beliebigen Stelle am linken Rand der Case-Struktur angeordnet werden. Wenn ein boolescher Wert an die Struktur übergeben wird, enthält diese automatisch einen TRUE- und einen FALSE-Case. Bei Integern, Enum-Werten und Strings kann die Struktur beliebig viele Cases enthalten.

Hinweis: Bei mit dem Selektoranschluss verbundenen Strings muss per Voreinstellung die Groß-/Kleinschreibung beachtet werden. Zum Ignorieren der Groß- und Kleinschreibung klicken Sie mit der rechten Maustaste auf den Rahmen der Case-Struktur und wählen Sie "Groß-/Kleinschreibung ignorieren" aus dem Kontextmenü.

Wenn Sie keinen Standard-Case für die Case-Struktur festlegen, in dem außerhalb des gültigen Bereichs liegende Werte bearbeitet werden, müssen Sie jeden möglichen Eingangswert einzeln auflisten. Wenn der Typ des Selektoranschlusses z. B. "Integer" lautet und Cases für die Eingangswerte 1, 2 und 3 eingerichtet sind, sollte auch ein Standard-Case für den Eingangswert 4 und andere nicht angegebene Integer-Werte festgelegt werden.

Hinweis: Es kann kein Standard-Unterdiagramm angegeben werden, wenn ein boolescher Wert mit dem Selektor verbunden wird. Die Option "Als Standard-Case verwenden" wird dann nicht im Kontextmenü des Case-Selektors angezeigt. Legen Sie TRUE oder FALSE für das boolesche Element fest, um zu bestimmen, welcher Case ausgeführt werden soll.

Um Cases hinzuzufügen, zu kopieren, zu entfernen oder neu anzuordnen und um einen Standard-Case auszuwählen, klicken Sie mit der rechten Maustaste auf den Rand der Case-Struktur.

Auswählen eines Cases

In Abbildung 7 sehen Sie ein VI, das mit einer Case-Struktur verschiedene Blockdiagrammabschnitte ausführt, je nachdem, ob als Einheit °C oder °F ausgewählt ist. Im obersten Blockdiagramm sehen Sie den TRUE-Case im Vordergrund. Im mittleren Blockdiagramm wird der FALSE-Case markiert. Zur Auswahl eines Cases geben Sie den Wert in das Auswahlfeld ein oder bearbeiten Sie die Werte mit dem Beschriftungswerkzeug. Nachdem Sie einen anderen Case ausgewählt haben, wird dieser im Vordergrund angezeigt (vgl. unteres Blockdiagramm in Abbildung 7).

Abbildung 7: Ändern der Case-Ansicht in einer Case-Struktur

Bei der Eingabe eines Selektorwerts, dessen Typ nicht mit dem angeschlossenen Objekt übereinstimmt, wird der Wert rot angezeigt. Das bedeutet, dass das VI nicht ausführbar ist und Sie den Wert ändern oder löschen müssen. Fließkommazahlen können aufgrund möglicher Rundungsfehler in der Berechnung nicht als Case-Selektorwerte verwendet werden. Wenn ein Fließkommawert mit dem Case verbunden wird, rundet LabVIEW den Wert auf die nächste ganze Zahl. Bei Eingabe eines Fließkommawerts in den Case-Selektor wird der Wert rot angezeigt. Das bedeutet, dass die Struktur nicht ausgeführt werden kann. Sie müssen den Wert entweder ändern oder löschen.

Ein- und Ausgangstunnel

Eine Case-Struktur kann mehrere Ein- und Ausgangstunnel enthalten. Die Eingangsgrößen stehen allen Cases zur Verfügung, müssen jedoch nicht von jedem Case genutzt werden. Trotzdem muss für jeden Case ein Ausgangstunnel konfiguriert werden.

Stellen Sie sich folgendes Beispiel vor: eine Case-Struktur im Blockdiagramm hat zwar einen Ausgangstunnel, aber dieser ist in mindestens einem Case mit keinem Ausgangswert verbunden. Bei der Ausführung des VIs ist daher für den Case nicht klar erkenntlich, welcher Wert ausgegeben werden soll. In diesem Fall wird der Tunnel weiß dargestellt. Der unverbundene Case ist möglicherweise nicht der Case, der im Vordergrund der Struktur zu sehen ist.

Um diesen Fehler zu beheben, müssen Sie den Case mit dem unverbundenen Tunnel auswählen und diesen mit einem Ausgang verbinden. Wenn Sie den Ausgangstunnel mit der rechten Maustaste anklicken und aus dem Kontextmenü die Option "Standard verwenden, wenn nicht verbunden" auswählen, werden für alle unverbundenen Tunnel Standardwerte verwendet. Wenn der Ausgang in allen Cases ordnungsgemäß verbunden ist, wird der Ausgangstunnel farbig dargestellt.

Vermeiden Sie nach Möglichkeit die Option "Standardwert für offene Verbindung". Die Option macht das Blockdiagramm schlechter nachvollziehbar und kann bei der Bearbeitung des VIs durch andere Benutzer zu Unklarheiten führen. Durch die Option "Standardwert für offene Verbindung" wird auch die Fehlersuche erschwert. Wenn Sie dennoch diese Option wählen, beachten Sie, dass es sich bei dem verwendeten Standardwert um den Standardwert für den Datentyp handelt, der mit dem Tunnel verbunden ist. Bei einem Tunnel mit dem Datentyp "boolesch" lautet der Standardwert beispielsweise FALSE.

Datentyp Standardwert
Numerisch 0
Boolesch FALSE
String leer (“”)

Tabelle 1: Standardwerte für Datentypen

Andere Strukturen

In LabVIEW gibt es weitere komplexere Ausführungsstrukturen wie die Ereignisstruktur (z. B. zur Verarbeitung von Benutzereingaben) oder Sequenzstrukturen (für eine definierte Ausführungsreihenfolge), deren Erklärung jedoch über den Rahmen dieser Einführung hinausgehen würde. Informationen zu diesen Strukturen finden Sie im entsprechenden LabVIEW-Hilfe-Thema.

Erlernen Sie die LabVIEW-Grundlagen auf eine neue Art

Besuchen Sie auch unsere neuen, interaktiven Lehrvideos zum Erlernen der LabVIEW-Grundlagen.

Weiter

Zurück Datenstrukturen
Weitergeben von Werten zwischen Schleifeniterationen Weiter