LabVIEW

Programmiersprache
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Januar 2005 um 00:26 Uhr durch 145.254.45.110 (Diskussion) (Weblinks). Sie kann sich erheblich von der aktuellen Version unterscheiden.

LabVIEW ist eine graphische Programmiersprache von National Instruments. Das Akronym steht für "Laboratory Virtual Instrument Engineering Workbench".

Die erste Version erschien 1986 für Macintosh-Computer. Heute gibt es die Entwicklungsumgebung außerdem für Windows, Linux und Solaris.

Haupt-Anwendungsgebiete von LabVIEW sind die Mess- und Automatisierungstechnik. Die Programmierung folgt dem Datenfluss-Modell, wodurch sich die Sprache zur Datenerfassung und -Verarbeitung anbietet.

LabVIEW-Programme werden als Virtuelle Instrumente oder einfach VIs bezeichnet. Sie bestehen aus zwei Komponenten: das Frontpanel enthält die Benutzerschnittstelle, das Blockdiagramm den graphischen Programmcode. Dieser wird nicht von einem Interpreter abgearbeitet, sondern compiliert. Dadurch ist die Performance vergleichbar mit der anderer Hochsprachen.

LabVIEW wird laufend weiterentwickelt. Die derzeit aktuelle Version ist 7.1 (Stand August 2004).

Programmiermethode

Funktionsblöcke werden in LabVIEW (genau wie vollständige Programme) als Virtuelle Instrumente (VIs) bezeichnet. Dies kommt daher dass prinzipiell jedes Programm als Unterprogramm (Sub-VI) in einem anderen anderen verwendet werden kann, bzw. jedes Sub-VI auch eigenständig lauffähig ist. Aufgrund des Datenfluss-Konzeptes sind rekursive Aufrufe grundsätzlich nicht möglich, mit etwas zusätzlichem Aufwand lassen sich aber auch Rekursionen verwirklichen.

Der Programmierer verbindet VIs mit Verbindungslinien (Drähten) und definiert damit den Datenfluss. Jedes VI kann dabei Ein- oder Ausgänge besitzen. Die Ausführung eines VIs beginnt wenn alle Eingangsdaten vorhanden sind; die Ergebnisse liegen erst dann an den Ausgängen an, wenn das gesamte Unterprogramm abgearbeitet ist. Auf diese Weise wird die Abarbeitungsreihenfolge der Schritte durch Datenabhängigkeiten definiert. Eine vordefinierte Reihenfolge (z. B. "von rechts nach links") gibt es nicht.

Eine wichtige Konsequenz aus diesen Regeln ist die Einfachheit, mit der in LabVIEW parallele Abläufe programmiert werden können. Es reicht, zwei Sub-VIs ohne Datenabhängigkeit nebeneinander zu legen, um sie gleichzeitig mit Multithreading abzuarbeiten.

Besitzt ein Sub-VI keine Eingänge so wird es bei Programmstart ausgeführt, besitzt es keine Ausgänge so werden die Ergebnisdaten entweder verworfen oder auf einem anderen Weg "verwertet" (z. B. Schreiben auf Harddisk oder Netzwerk, Ausgabe auf Peripheriegeräte). Genauso kann ein Sub-VI ohne Eingänge Daten von Peripheriegeräten erhalten oder auch selbst generieren (z. B. Zufallsgenerator).

Sub-VIs können beliebig tief verschachtelt werden. Viele der LabVIEW-eigenen Funktionen sind ihrerseits normale VIs, die auch vom Programmierer bearbeitet werden können (wenngleich dies i. d. R. nicht zu empfehlen ist). Letztlich basieren alle VIs auf einer Reihe grundlegender Funktionen, sog. Primitives, die sich nicht als VIs öffnen lassen.

Viele VIs und Primitives in LabVIEW sind polymorph, d. h. ihre Funktionalität passt sich an die Art der übergebenen Daten an. Z. B. kann die Build-Array Funktion für die Erstellung jeglicher Felder genutzt werden, d.h. Stings, Integer oder auch Arrays und Cluster. Es ist auch möglich eigene polymorphe VIs zu erstellen. Letztlich handelt es sich hierbei um eine Sammlung mehrerer VIs mit unterschiedlichen Datentypen an den Ein- und Ausgängen.

Datenquellen und Datensenken können mit Anzeige- und Bedienelementen auf dem Front Panel verknüpft sein. So kann z. B. eine Zahleneingabe mit einem Drehknopf und eine Ausgabe einer boolschen Variablen mit einer Leuchtdiode realisiert werden.

Das Front Panel von LabVIEW ist ein sehr bequemes Mittel um Programme mit guter grafischer Bedieneroberfläche zu erstellen. Bei allen Programmierarbeiten in LabVIEW muss der Programmierer prinzipiell keine einzige Zeile Text eingeben. Die graphische Darstellung des Programmablaufs erhöht zumindest bei nicht zu umfangreichen Vorhaben die Lesbarkeit deutlich. Ein sehr großer Vorteil gegenüber einer textbasierten Sprache ist die einfache Realisierbarkeit von parallel ablaufenden Programmteilen. Bei sehr großen und umfangreichen Projekten ist es (wie in jeder Programmiersprache) extrem wichtig, von Anfang an eine durchdachte Struktur zu verwenden und den Code zu modularisieren.

Neben den genannten Vorteilen hat die graphische Programmierung gegenüber der textbasierten auch Nachteile, die mit der Größe des Projekts schwerer wiegen:

  • Kleine Änderungen können aufwendige Neustrukturierungen nach sich ziehen, denn nach jedem Platzschaffen müssen meist die Drähte und Symbole neu geordnet werden, um die Übersichtlichkeit wiederherzustellen.
  • Um keinen Drahtwirrwarr zu erzeugen werden oft vermehrt Variablen eingeführt, die die Geschwindigkeit herabsetzen und dem Datenflussmodell widersprechen.

Der einfache Einstieg in die LabVIEW-Programmierung verleitet leider dazu, "einfach drauflos zu programmieren", allerdings kann auch die grafische Programmierung nicht die ordentliche Planung des Projektes unnötig machen.