Image

Vorwort

In jeder Firma, jeder Schule oder jedem Institut gibt es jemanden, der jedem hilft und alles kann. Für alle Sonderfälle oder Probleme hat er (oder sie) den passenden Kleber, eine Bezugsquelle oder sogar schon eine Lösung in der Schublade.

LabVIEW ist dieser Praktiker in der PC-Messtechnik. Es hat viele Algorithmen, ist leicht programmierbar und kann ausgezeichnet mit externer Hardware kommunizieren.

Das vorliegende Buch ist in zwei Abschnitte gegliedert:

Der erste Teil des Buchs, Kapitel 1–19, erklärt die Programmiersprache LabVIEW Schritt für Schritt. Die Kapitel sind mit instruktiven Beispielen abgeschlossen. Aufgrund des Umfangs von LabVIEW, das mehr als tausend ausprogrammierte Algorithmen hat, sind nur die wichtigsten und Sprachelemente besprochen.

Der zweite Teil des Buchs, Kapitel 20–30, zeigt, wie leicht man mit LabVIEW technische, physikalische oder mathematische Probleme unterschiedlichster Bereiche lösen kann. Die Experimente sind mit einfacher, oft bereits vorhandener Ausrüstung möglich. Sie können zu Hause oder im Labor einer Schule oder Hochschule ohne große Investition durchgeführt werden. Sie sind bezüglich der Durchführung und Mathematik vollständig beschrieben und erprobt.

Die Experimente sind als Laborübung an Hochschulen oder HTLs und für Lehramtsstudenten, Ingenieure und Autodidakten, die mit LabVIEW arbeiten, geeignet.

Dateien zum Buch können von der Website www.ploetzeneder-labview.com heruntergeladen werden. E-Mails an f.ploetzeneder@fh-wels.at oder b.ploetzeneder@gmail.com.

Geleitwort

Am Campus Wels der Fachhochschule Oberösterreich haben wir seit nunmehr über 15 Jahren die Software-Entwicklungsumgebung LabVIEW im Studiengang Automatisierungstechnik erfolgreich im Einsatz und schon sehr viele Praktiker für unseren Wirtschaftsraum damit ausgebildet. Bis heute ist meine persönliche Begeisterung als Lehrender für die LabVIEW charakterisierende intuitive, grafisch-visuelle Programmierung ungebrochen. Gemeinsam mit dem Autor des vorliegenden Lehrbuchs gelingt es uns in Wels, diese Begeisterung an Studierende weiter zu vermitteln.

Die Mächtigkeit von LabVIEW, der Umfang an wiederverwendbaren Programmbeispielen und Dokumentationen, aber auch der jährliche „Zuwachs“ an neuer Funktionalität und Leistungsfähigkeit ist enorm. Das macht es Anfängern schwer, sich zu orientieren. Aber auch für erfahrene Praktiker, die nicht tagtäglich mit LabVIEW arbeiten, ist es nicht leicht, auf dem Laufenden zu bleiben. Vor diesem Hintergrund sehe ich in diesem Buch eine große Bereicherung. Es liefert einem fundierten und kompakten Einstieg und enthält eine große Anzahl konkret anwendbarer Beispiele guten Programmierstils.

In einer didaktisch ausgereiften Form wird dem Leser eine umfassende Einführung in die grafisch-visuelle Programmierung mit LabVIEW geboten. Ausgehend von elementaren Begriffen werden alle Kenntnisse vermittelt, die zur Lösung umfangreicher Problemstellungen notwendig sind. Das Buch ist für Anfänger ohne besondere Vorkenntnisse geeignet. Es bleibt dabei aber nicht an der Oberfläche, sondern vermittelt auch fortgeschrittene Programmiermethoden und enthält nützliche Laborexperimente als konkrete Beispiele. Selbst erfahrene LabVIEW-Anwender können mithilfe des Buchs Neues hinzulernen.

Positiv aufgefallen sind mir die sorgfältig erstellten realen Laborexperimente. Sie sind dank ihrer Übersichtlichkeit nicht nur leicht verständlich, sondern vermitteln auch die Funktionsvielfalt von LabVIEW anschaulich.

FH. Prof. Univ. Doz. Dipl. Ing. Dr. Karl Kellermayr

Fachbereichsleiter Informationstechnologie

Campus Wels

Fachhochschule Oberösterreich

Inhaltsverzeichnis

1Einführung

1.1System installieren

2Grundlegendes

2.1Frontpanel und Blockdiagramm

2.2Die fünf wichtigsten Fenster und das Fehlerfenster

2.3Details der wichtigsten Fenster

3Datentypen und ein erstes Programm

3.1Numerische Datentypen

3.1.1Erzeugen eines Eingabeelements

3.1.2Darstellung der Symbole der Frontpanelelemente im Blockdiagramm

3.1.3Einfache Berechnungen

3.2Strings oder Zeichenketten

3.3Boolesch

3.4Weitere Datentypen

3.5Umwandlung von Daten in einen anderen Datentyp

3.6Konstanten

3.7Hallo, Welt!

3.7.1Hinweis zur Drahtspule

4Einfache Frontpanelelemente

4.1Umwandlung von Bedien-/Anzeigeelementen und Konstanten .

4.2Konfiguration numerischer Frontpanelelemente

4.3Skalierung von Anzeigeinstrumenten

4.4Listenfelder

4.5Konfigurieren eines Schalters

4.5.1Schaltverhalten

4.5.2Boolescher Text

5Entscheidungsstrukturen

5.1Funktion Auswählen

5.1.1Auswählen in einem Programm

5.1.2Beispiel zur Funktion Auswählen

5.2Funktion einer Case-Struktur

5.3Case-Struktur für boolesche Werte

5.4Case-Struktur für numerische Daten

5.5Case-Struktur für Strings

5.6Häufige Fehler bei Case-Strukturen

5.6.1Syntaxfehler

5.6.2Fehlerhafter Case

5.6.3Keine Ausgangsgröße

6Arrays

6.1Eindimensionale Arrays

6.1.1Verändern der Array-Darstellung

6.2Array-Funktionen (eindimensional)

6.2.1Array-Länge

6.2.2Array indizieren

6.3Mehrdimensionale Arrays

6.3.1Arrays verknüpfen

6.3.2Arrays beliebigen Typs

6.3.3Zweidimensionales Array im Frontpanel

6.4Array-Funktionen (mehrdimensional)

6.4.1Transponieren

6.4.2Array indizieren

6.4.3Rechnen mit einem Array

7Cluster

7.1Erstellen und Zerlegen eines Clusters

7.2Cluster als Frontpanelelement

7.3Ändern einzelner Werte in einem Cluster

7.4Umwandlung von Cluster in Arrays und Arrays in Cluster

7.5Error-Cluster

8Strings

8.1Eingabe und Ausgabe

8.1.1Verschiedene Darstellungsformen von Strings

8.2String-Funktionen

8.2.1String-Länge und String verknüpfen

8.2.2Muster suchen und String suchen und ersetzen

8.2.3Teil-String

8.3Praxisanwendungen

8.3.1Auswertung eines typischen Messgeräte-Strings

8.3.2String-Format für Excel-Datei

9Schleifen

9.1For-Schleifen

9.2While-Schleife

9.3Die For-While-Schleife

9.4Ein- und Ausgabe in Schleifen

9.5Beispiele

9.5.1Grafische Ausgabe von Arrays

9.5.2Summe der arithmetischen Reihe

9.5.3Erstellen einer ASCII-Tabelle

9.5.4Aufstellen einer Einheitsmatrix

10Schieberegister

10.1Grundelemente des Schieberegisters

10.2Highlight-Modus

10.3Nicht initialisierte Schieberegister

10.4Gestapelte Schieberegister

10.5Schieberegister in Form von Rückkopplungsknoten

10.6Beispiele

10.6.1Flankenerkennung

10.6.2Summenzeichen auswerten

10.6.3Erstellen eines Arrays mit allen geraden Zahlen von 2 bis 100

11Unterprogramme

11.1Erstellen eines Unterprogramms

11.2Automatisches Erstellen eines Unterprogramms im Hauptprogramm

11.3Modi beim Aufrufen eines Unterprogramms

11.3.1Frontpanel des Unterprogramms bei Aufruf öffnen

11.3.2Ablaufinvariante Ausführung eines Unterprogramms

12Grafische Frontpanelelemente

12.1Signaldiagramm und Signalgraph

12.1.1Skalierung der Y-Achse

12.1.2Skalierung der X-Achse

12.1.3Darstellung von zwei oder mehreren Kurvenzügen

12.2XY-Graph

12.2.1XY-Graphik für mehrere Graphen

12.3Anwendung: Signaldarstellung mit Zeitstempel

12.4Eigenschaftsknoten

12.53-D-Graphen

13Grafik

13.1Elementare Funktionen

13.2Auslesen eines JPEG-Bilds

13.3Frontpanelelement in eine Grafik konvertieren und abspeichern

14Datenerfassung

14.1Das Multifunktionsgerät USB-6008

14.1.1Installation des Measurement&Automation Explorers und der Treiber

14.1.2Measurement & Automation Explorer

14.2Ein- und Ausgabe mit USB-6008 und LabVIEW

14.3Der DAQ-Assistent in einfachen Anwendungen

14.3.1Oszilloskop

14.3.2Spektralanalysator

14.3.3Digitalausgabe

14.4Weiterführende Messungen

14.4.1Messung einer Transistorkennlinie

14.4.2Sprungantwort eines RC-Glieds

14.4.3Datenerfassung mit Streaming

14.5Das wichtigste Problem beim Umgang mit Messkarten

15Dateien

15.1Schreiben im Excel-Format

15.1.1Dateinamen

15.1.2Erstellen eines absoluten Dateinamens aus einem relativen Dateinamen

15.1.3Lesen einer einfachen Excel-Datei

15.1.4Erstellen einer einfachen Excel-Datei

15.2Beispiel

15.3Speichern von Daten mit Express Vi

15.4Binärdateien schreiben und lesen

15.4.1Unterschied zwischen einer Binärdatei und einer ASCII-Datei.

15.4.2Schreiben in eine Binär- und einer ASCII-Datei

15.4.3Lesen einer Binärdatei und eine ASCII-Datei

15.4.4Weitere Dateiformate

15.5Ergänzungen und weitere Funktionen

16Programmablauf

16.1Normale Programmausführung

16.1.1Parallelabarbeitung von Schleifen

16.2Ablaufsteuerung über gültige Daten – Datenflusssteuerung

16.3Ablaufsteuerung mit Sequenzstruktur

16.3.1Lokale Sequenz-Variablen

16.3.2Lokale Variable

16.3.3Beispiel: Die Eieruhr

17Soundkarte

17.1Test der Soundkarte

17.2Ausgabe einer Sinusschwingung

17.2.1Umwandlung von Datentypen, die für die Soundkarte geeignet sind

17.3Beispiele

17.3.1Phasenbeziehung zwischen zwei Tönen

17.3.2Spektralanalysator für Töne

18Serielle Schnittstelle

18.1Format der seriellen Schnittstelle

18.2Programmierung der Schnittstelle

18.3Minimalverdrahtung von zwei Rechnern zur Datenübertragung

18.4Flusssteuerung mit Handshake

18.5Ausgabe eines Strings an die RS-232-Schnittstelle

18.6Einlesen eines Strings von der RS-232-Schnittstelle

18.7Setzen der Handshake-Leitungen der seriellen Schnittstelle

19Erstellung einer EXE-Datei und eines Installationsprogramms

19.1Erstellung einer EXE-Datei

19.2Erstellung eines Installationsprogramms

20EKG

20.1Hintergrund

20.2Schaltung

20.3Programm

20.4Gemessenes EKG

21Schrittmotoransteuerung

21.1Hintergrund

21.1.1Wave-Mode

21.1.2Two-Phase-on-Mode

21.1.3Half-Step-Mode

21.2Versuchsaufbau

21.3Programme

21.3.1Wave-Mode

21.3.2Two-Phase-on- und Half-Step-Mode

22Drehstrom aus dem Laptop

22.1Hintergrund

22.2Versuchsaufbau

22.3Programme

22.3.1Ausgabe von zwei phasenversetzten Sinusspannungen

22.3.2Drehstrom mit in feinen Stufen verstellbarer Frequenz

23Dehnungsmessstreifen

23.1Hintergrund

23.1.1Umgang mit Störungen

23.2Versuchsaufbau

23.3Programm

24Terminalprogramm

24.1Version 1: Terminalprogramm mit zwei Threads

24.2Version 2: Ereignis-/Eventgesteuertes Terminalprogramm

24.2.1Aufbau: Ereignisstruktur in While-Schleife

24.2.2Empfangen (Ereignis: Zeichen lesen)

24.2.3Beenden (Ereignis: Stopp)

24.2.4Senden (Ereignis: String zu Senden)

25Signalverarbeitung in der Praxis

25.1Interpolation von Daten

25.2Störungen herausfiltern: Spikes und Rauschen

25.3Maximumsuche

25.4Bestimmung einer Einhüllenden

26Akustisches GPS

26.1Hintergrund

26.2Versuchsaufbau

26.3Versuchsanordnung

26.4Programm

26.4.1Ausgabe/Korrelation

26.4.2Zeichnen der Hyperbel

27Bildverarbeitung mit zweidimensionaler Fourier-Transformation

27.1Hintergrund

27.2Programm

27.2.1Wirkung des Tiefpassfilters auf das Bild

27.2.2Anmerkungen zur FFT

28Temperaturverteilung in einem Ring

28.1Hintergrund

28.2Lösung mit FFT

28.3Versuchsaufbau

28.4Programm

293-D-Scanner mit Laptop und Beamer

29.1Hintergrund

29.2Versuchsaufbau

29.3Programme

29.3.1Bilder aufnehmen

29.3.2Grafik erzeugen

30Praktische Bildverarbeitung

30.1Elementare Bildberechnungen: Bildrätsel überlisten

30.2Anwenden von IMAQ: Münzen zählen

30.3Kantenschärfung in einem Bild (Kernel-Operationen)

31Literatur

32Bauteile

Die Autoren

Stichwortverzeichnis

1Einführung

LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench) von National Instruments ist eine grafische Programmiersprache, die es seit 1986 gibt. Nun liegt sie in der Version LabVIEW 2009 vor. Die hauptsächlichen Anwendungsgebiete liegen in der Mess-, Regelungs- und Automatisierungstechnik.

1.1System installieren

Die vorgestellten Programme und Experimente funktionieren in jedem Fall ab LabVIEW 2009, einige aber auch mit LabVIEW 8.5 oder 8.6. Eine Studentenversion steht kostengünstig zur Verfügung, alternativ kann man die 30 Tage lauffähige Version von LabVIEW unter http://www.ni.com/downloads/evaluation.htm herunterladen. Für Benutzer, die noch nie mit LabVIEW gearbeitet haben, sei im Startmenü im Menüpunkt Erste Schritte mit LabVIEW ein Einstieg empfohlen.

Image

Abb. 1.1: Erste Schritte mit LabVIEW (unter Hilfe zu finden)

Bei Programmen mit Bildverarbeitung, z. B. dem 3-D-Scanner, ist es nötig, die Bildverarbeitungssoftware Vision Development Module 2009 und die entsprechenden Treiber VAS-November2009.zip zu installieren. Sie finden diese Programme unter: http://joule.ni.com/nidu/cds/view/p/id/1524/lang/de und http://joule.ni.com/nidu/cds/view/p/id/1392/lang/de

Diese Programme benötigen auf Ihrem PC knapp 2 GB Speicher.

2Grundlegendes

2.1Frontpanel und Blockdiagramm

Wenn man mit LabVIEW ein neues Programm erstellt (über Leeres VI), werden zwei Fenster geöffnet. Das graue Fenster ist das Frontpanel, das weiße Fenster das Blockdiagramm.

Image

Abb. 2.1: Frontpanel und Blockdiagramm nach dem Start von LabVIEW (Leeres VI)

Im Frontpanel werden die Ein- und Anzeigeelemente platziert. Diese Elemente bezeichnet man auch als Frontpanelelemente. Im Blockdiagramm (auch Diagramm) kann das Programm in grafischer Form erstellt werden.

Image

Abb. 2.2: Auswertung der pythagoreischen Formel

Das gezeigte Programm ist in dieser einfachen Form bereits lauffähig. LabVIEW ist, vereinfacht ausgedrückt, ein zum Leben erwecktes Flussdiagramm.

Ein LabVIEW-Programm wird von der Entwicklungsumgebung kompiliert, d. h. in Maschinencode umgewandelt und ausgeführt. Die Ausführungsgeschwindigkeit ist dadurch sehr hoch und im Vergleich zu Java 10–100 Mal schneller.

2.2Die fünf wichtigsten Fenster und das Fehlerfenster

Tabelle 2.1: Die wichtigsten Fenster in LabVIEW im Überblick

Fenster und Bezeichnung Wozu dieses Fenster dient Wie man in dieses Fenster kommt
Image
Frontpanel
In diesem Fenster werden die Ein- und Anzeigeelemente platziert, z.B. Zahleneingabe, grafische Ausgaben, Schalter ...
Ein- und Anzeigeelemente werden auch als Frontpanelelemente bezeichnet.
Dieses Fenster sieht der Endbenutzer.
Dieses Fenster entsteht, nachdem Sie ein neues VI angelegt haben.
Vom Blockdiagramm können Sie über Fenster/Frontpanel anzeigen wechseln.
Image
Frontpanel anzeigen
Image
Blockdiagramm
Im Blockdiagramm wird das Programm erstellt. Da es sich bei LabVIEW um eine grafische Programmiersprache handelt, könnte man auch sagen, dass das Programm in diesem Fens-ter gezeichnet wird. Dieses Fenster entsteht, nachdem Sie ein neues VI angelegt haben.
Vom Frontpanel können Sie über Fenster/Blockdiagramm anzeigen wechseln.
Image
Blockdiagramm anzeigen
Image
Elementefenster
In diesem Fenster können Sie die Bedien- und Anzeigeelemente auswählen und in das Frontpanel einsetzen.
Das Menü kann durch einen Klick auf das Symbol Image erweitert werden.
Gehen Sie mit dem Cursor über das Frontpanel und klicken Sie mit der rechten Maustaste.
Image
Funktionspalette
Eingabe: Datenerzeugung und -erfassung. Signalanalyse: Auswertung.
Ausgabe: Signalausgabe und speichern.
Signalverarbeitung: Extrahieren und Synthetisieren von Sig-nalen.
Ausführung und Arithmetik programmieren.
Das Menü kann durch einen Klick auf das Symbol Image erweitert werden.
Gehen Sie mit dem Cursor über das Blockdiagramm und klicken Sie mit der rechten Maustaste.
Image
Werkzeugpalette
In diesem Menü können Sie die Bearbeitungswerkzeuge auswählen. Sie wählen das Menü Ansicht >> Werkzeugpalette
Image
Werkzeugpalette anzeigen
Image
Fehlerfenster
Über das Pull-down-Menü Anzeigen >> Fehlerliste über den Shortcut
Strg + L können Sie auch das Fehlerfenster öffnen.
Dieses Fenster zeigt die Fehler, wenn ein Programm nicht ausführbar ist (einen Programmierfehler hat).
Doppelklick auf die blau markierte Zeile. Sie springen dann auf den Programmfehler im Blockdiagramm.
Falls das Programm nicht ausführbar ist (weil es einen Programmierfehler hat) und Sie es trotzdem starten, erscheint dieses Fenster. Ein nicht ausführbares Programm erkennen Sie am gebrochenen Startbutton in der Symbolleiste.
Image
Das Programm hat einen Programmierfehler.

2.3Details der wichtigsten Fenster

Wenn Sie mit dem Cursor über das Frontpanel gehen und mit der rechten Maustaste klicken, öffnet sich die Elementpalette, die die Frontpanelemente enthält.

Tabelle 2.2: Elementpalette mit den Frontpanelelementen

Einfaches Elementemenü Vollständiges Elementemenü
Image
Expressmenü
Image
Klassisches Menü

Die wichtigsten Frontpanelelemente finden Sie im Expressmenü. Eine noch größere Anzahl von Frontpanelelementen ist im klassischen Menü zu finden. Wenn Sie mit dem Cursor über das Blockdiagramm gehen und mit der rechten Maustaste klicken, können Sie die Funktionspalette öffnen.

Tabelle 2.3: Funktionspalette

Einfaches Menü für Funktionen Ausführliche Funktionspalette
Image
Expressmenü
Image
Klassisches Menü

In LabVIEW gibt es grundsätzlich zwei Arten von Funktionen: die klassischen Funktionen und die Expressfunktionen. Die Expressfunktionen sind „Blöcke“, die über ein Menü zu konfigurieren sind. Das ist in der Regel relativ leicht. Nachteil ist, dass die Eigenschaften des Programms nicht mehr ersichtlich sind.

Dazu ein Beispiel:

Tabelle 2.4: Express- oder konventionelle Funktionen

Programm mit Express VI: Die Funktion, hier die Formel, wurde per Menü eingegeben (Express). Konventionelles LabVIEW-Programm (klassisch).
Image
Expressversion
Image
Klassisch programmiert

Anfängern, die an einfach zu realisierenden Lösungen interessiert sind (z. B. Datenerfassung mit Speicherung), sei die Expresstechnik empfohlen. Es kann aber sein, dass Sie mit der Expresstechnik Grenzen erreichen, die Sie nicht überschreiten können. Dann muss auf die konventionelle LabVIEW-Technik zurückgegriffen werden.

Die Werkzeugpalette detailliert:

Tabelle 2.5: Werkzeugpalette

Image