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.
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.
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.
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 |
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. Frontpanel anzeigen |
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. Blockdiagramm anzeigen |
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 erweitert werden. |
Gehen Sie mit dem Cursor über das Frontpanel und klicken Sie mit der rechten Maustaste. |
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 erweitert werden. |
Gehen Sie mit dem Cursor über das Blockdiagramm und klicken Sie mit der rechten Maustaste. |
Werkzeugpalette |
In diesem Menü können Sie die Bearbeitungswerkzeuge auswählen. | Sie wählen das Menü Ansicht >> Werkzeugpalette Werkzeugpalette anzeigen |
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. 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ü |
Expressmenü |
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 |
Expressmenü |
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). |
Expressversion |
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