Sie sind auf Seite 1von 16

Technische Universitt Ilmenau

Fakultt fr Maschinenbau
Fachgebiet Mechatronik

Hinweise und Beispielsammlung


zur Arbeit mit LabVIEW im Rahmen der Lehrveranstaltung

PC-based Control

Dieses Lehrmaterial und die Dokumentation zum Sensor-Aktor-Modul sind die


einzigen zugelassenen Hilfsmittel whrend der Klausur.
Fr die Klausur notwendige SubVIs werden Ihnen zu Beginn der Klausur bereitgestellt.

Dr.-Ing. Marion Braunschweig


Ausgabe 2016

Inhaltsverzeichnis
1

Measurement & Automation Explorer ................................................................................. 4


1.1

Gertenummer ermitteln ................................................................................................ 4

1.2

Gert testen.................................................................................................................... 4

1.3

Task anlegen ................................................................................................................... 4

1.4

Tasks mit mehreren Kanlen ........................................................................................... 6

LabVIEW ........................................................................................................................... 7
2.1

Strukturen ...................................................................................................................... 7

2.1.1 While-Schleife (Functions Programming Structures While Loop) ........................ 7


2.1.2 For-Schleife (Functions Programming Structures For Loop) ................................ 7
2.1.3 Case-Struktur (Functions Programming Structures Case Structure) .................... 8
2.1.4 Ereignis-Struktur (Functions Programming Structures Event Structure) ............. 8
2.1.5 Sequenzen (Functions ProgrammingStructuresFlat/Stacked Sequence Structure) 9
2.2

SubVIs........................................................................................................................... 10

2.2.1 SubVIs erstellen ................................................................................................................. 10


2.2.2 SubVIs nutzen .................................................................................................................... 10
2.3

Datenerfassung (siehe auch 1.3) .................................................................................... 10

2.3.1 Daten Lesen (FunctionsMeasurement I/ODAQmx Data Acquisition


DAQmx Read.vi) ................................................................................................................ 10
2.3.2 Daten Ausgeben (FunctionsMeasurement I/ODAQmx Data Acquisition
DAQmx Write.vi) ............................................................................................................... 10
2.3.3 Task im Programm erzeugen............................................................................................. 10
2.3.4 Beispiel Datenerfassung .................................................................................................... 11
2.4

Dateiarbeit ................................................................................................................... 11

2.4.1 Datei ffnen (FunctionsProgrammingFile I/OOpen/Create/Replace File) ............ 11


2.4.2 Datei schlieen (FunctionsProgrammingFile I/OClose File) .................................. 11
2.4.3 In Datei schreiben (FunctionsProgrammingFile I/OFormat Into File) ................... 11
2.5

Felder (Arrays) .............................................................................................................. 12

2.5.1 neues Feld erstellen .......................................................................................................... 12

2.5.2 bestimmte Feldelemente auslesen ................................................................................... 12


2.5.3 Feldelemente manipulieren .............................................................................................. 12
2.5.4 boolesche Felder mit Clustern verbinden ......................................................................... 12
2.6

Cluster .......................................................................................................................... 12

2.6.1 Cluster auf dem Frontpanel erstellen ............................................................................... 12


2.6.2 Cluster im Blockdiagramm erstellen ................................................................................. 12
2.6.3 Zugriff auf Clusterelemente .............................................................................................. 13
2.6.4 Cluster aus booleschen Elementen ................................................................................... 13
2.7

Timing .......................................................................................................................... 13

2.7.1 Warten (FunctionsProgrammingTimingSleep (ms)).............................................. 13


2.7.2 Tick-Counter (FunctionsProgrammingTimingTick-Count (ms))............................. 13
2.7.3 Datum und Uhrzeit auslesen (FunctionsProgrammingTiming Get Date/Time
String) ................................................................................................................................ 14
3

Hardwareinformationen .................................................................................................... 14
3.1

Multifunktionskarte NI PCI-6023E ................................................................................. 14

3.2

Anschlussmodul NI BNC-2120 ........................................................................................ 14

3.3

Sensor-Aktor-Modul...................................................................................................... 15

4
1

Measurement & Automation Explorer

Der Measurement & Automation Explorer (MAX) ist das zentrale Konfigurationswerkzeug fr die mit
LabVIEW verwendbare Hard- und Software eines Rechnersystems. Je nach installierter Version kann
er wie folgt geffnet werden:

entweder:

oder:

1.1 Gertenummer ermitteln


ber die Gertenummer kann eine Hardware-Komponente eindeutig identifiziert werden. Bei
der Installation der Hardware wird im MAX automatisch eine Gertenummer vergeben. Diese
kann auch gendert werden. Mchte man die Gertenummer ermitteln ist folgender Weg im
Measurement & Automation Explorer sinnvoll:
Mein System Gerte und Schnittstellen NI-DAQmx-Gerte (Gertenummer erscheint
hinter der Gertebezeichnung, z.B. Dev1)
1.2 Gert testen
Manchmal ist es notwendig die Hardware unabhngig von eigener Software zu testen. Dazu
dienen die fr jedes Gert vorhanden Testpanels. Hier werden alle Hardwarefunktionen, die
die jeweilige Hardware untersttzt, angeboten. Die Testpanels lassen sich ffnen ber:

auf die gewnschte Hardware Testpanels

1.3 Task anlegen


Die Datenerfassung erfolgt ber so genannte Tasks (wrtlich etwa Messaufgaben). Diese
knnen sowohl im Programm (siehe 2.3.3) als auch im MAX erzeugt werden. Die Konfiguration
im Measurement & Automation Explorer ist intuitiv bedienbar:

auf Datenumgebung Neu NI-DAQmx-Task Weiter

Anschlieend muss man festlegen ob man Signale erfassen (= Messen) mchte oder ob
Signale erzeugt (= Ausgeben) werden sollen und ob diese Signale analog (z.B. Spannung
einer Batterie, analoges Ausgangssignal eines Sensors, ), Zhlergesttzt (z.B. Signale eines
Encoders) oder Digital (z.B. TTL-Signale) sind:

Die Signalart und die Messaufgabe sind im Folgenden zu whlen. (Hinweis: Whrend der
Lehrveranstaltung PC-based Control messen wir nur Spannungen, kein Widerstand!)

Jetzt wird der physikalische Kanal ausgewhlt, ber den die Messung erfolgen soll (es
werden nur die Kanle angezeigt, die zur Signalart passen)

6
Nachdem ein eindeutiger Name fr die Messaufgabe (Task) vergeben wurde, muss man
den Dialog mit Beenden besttigen.
Nach dem Klick auf Beenden wird die Task angelegt und kann ber ein Konfigurationsmen
modifiziert werden:
- Kanaleinstellungen:

Festlegung

der

physikalischen

Kanle

(Gertenummer,

Kanalnummer), des Spannungsbereiches und der Schaltungsart (RSE Spannung des


Kanals wird auf Masse bezogen, Differentiell Bezugspotential ist ein zweiter Kanal)
- Timing-Einstellungen: Der Erfassungsmodus gibt an, ob nur ein Wert auf Aufforderung
gemessen wird (nicht gepuffert) oder ob mehrere Messwerte zunchst in einem Puffer
der Messhardware gespeichert werden (Endliche Anzahl).

1.4 Tasks mit mehreren Kanlen


Einem schon bestehenden Task knnen ber die Schaltflche
Konfiguration Kanaleinstellungen) weitere Kanle hinzugefgt werden.

(Registerkarte

7
2

LabVIEW
2.1 Strukturen
2.1.1 While-Schleife (Functions Programming Structures While Loop)
Schleifenbedingung:
Schieberegister:

= Stop if True oder

= Continue if True

auf rechten Rand Add Shift Register

Indizierung von Tunnelausgngen: :

auf Tunnel Enable/Disable Indexing

Beispiele:

Schleife luft bis die Summe

Schleife luft 101-mal, Ergebnisse

der Zufallszahlen grer als

sind ein Feld mit allen erzeugten

Einhundert wird.

Zufallszahlen und der letzte Zufallswert.

2.1.2 For-Schleife (Functions Programming Structures For Loop)


Anzahl der Wiederholungen: Wert bei
Schieberegister:

anschlieen

auf rechten Rand Add Shift Register

Indizierung von Tunnelausgngen: :


zustzliche Schleifenbedingung ber
Beispiel:

Schleife luft Einhundert mal,


wenn der Nutzer nicht auf Stop klickt.

auf Tunnel Enable

/Disable

Indexing

auf rechten Rand Addional Terminal

8
2.1.3 Case-Struktur (Functions Programming Structures Case Structure)
Entscheidungskriterium bei

anschlieen

je nach Datentyp des Entscheidungskriteriums existieren unterschiedliche Flle ,


Auswahl z.B. ber
fr jeden case-Zweig sollten Werte an die Ausgnge angeschlossen werden!
Beispiele:

Beide Beispiele sind in ihrer Funktion gleich. Das Rechte verwendet das Element
FunctionsProgrammingComparisonSelect.

In Abhngigkeit von Index berechnet sich


das Ergebnis nach einer Sinus, einer Cosinus
oder

einer

Exponentialfunktion.

2.1.4 Ereignis-Struktur (Functions Programming Structures Event Structure)


standardmig wird ein Timout-Ereignis erzeugt, Intervall (in ms) bei
fr jedes weitere zu berwachende Ereignis wird ein neuer Fall erstellt:

anschlieen
auf den Rand

der Struktur Add Event Case Ereignis-Quelle (Event Source) whlen Ereignis
(Event) auswhlen
das Ereignis fr das Umschalten eines Knopfes / Schalters heit Value Change
Ereignis-Strukturen sind innerhalb von While-Schleifen zu verwenden!

9
Beispiel:

Eine LED wird alle zwei Sekunden umgeschaltet. Durch Klick auf den Button
Umschalter wird sofort umgeschaltet.
2.1.5 Sequenzen (Functions ProgrammingStructuresFlat/Stacked Sequence Structure)
neues Sequenz-Fenster einfgen:

auf den Rand der Sequenz Add Frame After (bzw.

Add Frame Before)


Datenweitergabe bei gestapelten Sequenzen:

auf den Rand der Sequenz Add

Sequence Local
Beispiel:

Zwei identische Beispiele: Erst die Addition, dann warten und erst dann die Division.

10
2.2 SubVIs
2.2.1 SubVIs erstellen
ein VI wird zum SubVI, indem man den (notwendigen) Front-Panel-Elementen
entsprechende Anschlsse im Connector (

auf das Front-Panel-Icon oben rechts

Show Connector) zuordnet


Eingnge (Parameter) werden an Bedienelemente (Controls) angeschlossen, Ausgnge
(Rckgabewerte) an Anzeigeelemente (Indicators)
zur leichteren Identifikation sollte das Icon gendert werden (

auf das Front-Panel-Icon

oben rechts Edit Icon)


2.2.2 SubVIs nutzen
Einfgen eines VIs ber den Menpunkt FunctionsSelect a VI
Anschluss notwendiger Ein- und Ausgnge
2.3 Datenerfassung (siehe auch 1.3)
2.3.1 Daten Lesen (FunctionsMeasurement I/ODAQmx Data Acquisition
DAQmx Read.vi)
gewnschtes VI ber den Selektor auswhlen (DAQmx Read.vi ist polymorph)
Anschluss task/channels in: Tasks aus Measurement & Automation Explorer oder im
Programm erzeugte Tasks
am Ausgang data je nach Einstellung unterschiedliche Datentypen mglich
2.3.2 Daten Ausgeben (FunctionsMeasurement I/ODAQmx Data Acquisition
DAQmx Write.vi)
gewnschtes VI ber Selektor auswhlen (DAQmx Write.vi ist polymorph)
Anschluss task/channels in: Tasks aus Measurement & Automation Explorer oder im
Programm erzeugte Tasks
am Eingang data je nach Einstellung unterschiedliche Datentypen mglich
2.3.3 Task im Programm erzeugen
Task anlegen: FunctionsMeasurement I/ODAQmx Data Acquisition
DAQmx Advanced Task OptionsDAQmx Create Task.vi
- Eingang auto cleanup = true damit Task wieder gelscht wird
- Eingang new task name erhlt Bezeichnung des neuen Task
- Ausgang task out liefert den neuen Task
Kanle festlegen: FunctionsMeasurement I/ODAQmx Data Acquisition
DAQmx Create Virtual Channel.vi
- Datenart des polymorphen VIs festlegen

11
- Eingang task in bentigt den Task
- am Eingang physical channels wird der Kanal (werden die Kanle) eingestellt
- Ausgang task out liefert den endgltigen Task
Tasks manuell steuern: Manchmal ist es sinnvoll Tasks manuell zu starten, zu beenden oder
zu lschen. Dazu dienen die VIs (FunctionsMeasurement I/ODAQmx Data
Acquisition) DAQmx Start Task.vi, DAQmx Stop Task.vi und DAQmx Clear Task.vi
2.3.4 Beispiel Datenerfassung
Das folgende Beispiel erstellt zwei Tasks Signal setzen und Spannung lesen. Die
Spannung wird ber den Kanal_0 des Gertes_2 eingelesen. Je nach Gre des Messwertes
wird an Bit_0 des Port_0 von Gert_1 ein Low- oder ein Highsignal ausgegeben.

2.4 Dateiarbeit
2.4.1 Datei ffnen (FunctionsProgrammingFile I/OOpen/Create/Replace File)
Modus ber den Eingang operation festlegen (z.B. replace or create with confirmation)
Ausgang cancelled gibt Auskunft darber ob der Dateidialog abgebrochen wurde
Ausgang refnum out stellt den Dateizeiger dar
2.4.2 Datei schlieen (FunctionsProgrammingFile I/OClose File)
bentigt wird der Dateizeiger/refnum der zu schlieenden Datei
2.4.3 In Datei schreiben (FunctionsProgrammingFile I/OFormat Into File)
format string gibt die Formatierung der Zeichenkette an die in die Datei geschrieben wird
(Platzhalter analog C-Notation)
weitere Parameter sind durch Erweiterung des Elementes (Aufziehen am unteren Rand)
mglich

12
Beispiel:

Das Beispiel erfragt mit einem Dateidialog den Namen einer Datei (einer bestehenden oder
neuen Datei), schreibt den Text Zufallszahl: und setzt die Zufallszahl am Eingang DBL in
die Zeichenkette ein.
2.5 Felder (Arrays)
2.5.1 neues Feld erstellen
Feldkonstante anlegen (FunctionsProgrammingArrayArray Constant), der Typ des
Feldes wird festgelegt, indem eine weitere Konstante des entsprechenden Datentyps
(numeric, string, bool, ) auf die Feldkonstante gezogen wird
eine Konstante am Eingang eines Elementes erzeugen welches ein Feld erwartet
(

auf den EingangCreateConstant)

Werte zu einem Feld zusammenfgen (FunctionsProgrammingArrayBuild Array)


2.5.2 bestimmte Feldelemente auslesen
FunctionsProgrammingArrayIndex Array
2.5.3 Feldelemente manipulieren
ein Element ersetzen: FunctionsProgrammingArrayReplace Array Subset
ein Element einfgen: FunctionsProgrammingArrayInsert Into Array
ein Element lschen: FunctionsProgrammingArrayDelete From Array
2.5.4 boolesche Felder mit Clustern verbinden
siehe 2.6.4 Cluster aus booleschen Elementen
2.6 Cluster
2.6.1 Cluster auf dem Frontpanel erstellen
Cluster-Rahmen erstellen (ControlsModernArray, Matrix & ClusterCluster)
Rahmen entweder mit Anzeigeelementen (Indicators) oder mit Bedienelementen
(Controls) fllen
Reihenfolge der Elemente ndern:

auf den Rand des Rahmens Reorder Controls In

Cluster)
2.6.2 Cluster im Blockdiagramm erstellen
mehrere Datenquellen zusammenfhren: FunctionsProgrammingCluster, Class &
VariantBundle

13
2.6.3 Zugriff auf Clusterelemente
alle Elemente: FunctionsProgrammingCluster, Class & VariantUnbundle
einzelne Elemente: FunctionsProgrammingCluster, Class & VariantUnbundle by
Name
2.6.4 Cluster aus booleschen Elementen
Umwandlung in Zahl:
- zunchst Umwandlung in boolesches Feld: FunctionsProgrammingArray Cluster
To Array
- anschlieend Feld nach Zahl konvertieren: FunctionsProgrammingNumeric
ConversionBoolean Array To Number
Anschlieen einer Zahl an ein Cluster aus booleschen Elementen:
- zunchst Umwandlung in ein boolesches Feld: FunctionsProgrammingNumeric
Conversion Number To Boolean Array
- Feld nach Cluster konvertieren: FunctionsProgrammingArray Array To Cluster
- Clustergre einstellen:

auf Array To ClusterCluster Size

2.7 Timing
2.7.1 Warten (FunctionsProgrammingTimingSleep (ms))
Konstante am Eingang legt Wartezeit in Millisekunden fest
Beispiel:

Anzeige wird im Rhythmus von 1 Sekunde hochgezhlt.


2.7.2 Tick-Counter (FunctionsProgrammingTimingTick-Count (ms))
liefert am Ausgang die Anzahl Ticks, die seit dem Beginn der aktuellen Stunde vergangen
sind. Einheit ist Millisekunden.
Beispiel:

Ermittlung der Dauer eines Schleifendurchlaufes.

14
2.7.3 Datum und Uhrzeit auslesen (FunctionsProgrammingTiming Get Date/Time
String)
liefert aktuelles Datum und/oder aktuelle Uhrzeit als Zeichenkette
Eingang Want seconds? legt fest ob Zeitstring Sekunden anzeigen soll (Eingang = true)
3

Hardwareinformationen
3.1 Multifunktionskarte NI PCI-6023E
Gertenummer 1 (Dev1)
16 AI, acht AI sind ber das Anschlussmodul zugnglich
8 DIO, ansprechbar ber port0
weitere Zhlereinheiten
Anschlsse zugnglich ber Anschlussmodul NI BNC-2120
3.2 Anschlussmodul NI BNC-2120
angeschlossen an Multifunktionskarte NI PCI-6023E
stellt 8 AI (Analog Inputs), 8 DIO (Digital I/O) und weitere Anschlsse der Karte zur
Verfgung
enthlt einen Funktionsgenerator zur Erzeugung analoger Spannungen (Function
Generator)
Widerstandsmessung

ber

Schraubklemmen

(1.

RES+

und

4.

RES-)

mglich

(Schiebeschalter AI3 [neben den Klemmen!] muss auf RES stehen!)


Hinweis: Beim Anlegen einer Task im Measurement & Automation Explorer ist darauf zu
achten, dass zwei Spannungen gemessen und beide Kanle (Kanal 3 und Kanal 11) in einer
Task zusammengefasst werden.
UB
UAI3

RX

Skizze fr die Schaltung zur Widerstandsmessung


UAI11
RI = 10 k

15
3.3 Sensor-Aktor-Modul
Das Sensor-Aktor-Modul (SAM) wird per USB mit dem
Rechner verbunden und wird ber sieben SubVIs
gesteuert.
Die SubVIs finden Sie auf der Funktionen-Palette
unter: FunctionsUser LibrariesSAM

Open SAM.vi:

Write Value.vi:

Startet die Kommunikation mit dem

Schreibt einen Wert an das SAM.

SAM. Dieses VI muss genau einmal

Parameter: Kommando (U8),

ausgefhrt werden.

Wert (I16)

Parameter: keine
Rckgabe: Modulnummer

Rckgabe: keine
oder

Fehlercode (< 0)

Schreibt einen Datenblock an das SAM.

Close SAM.vi:

Parameter: Startindex des

Schliet die Kommunikation mit dem

Datenblockes (U8),

SAM.

Datenblock (Array aus I16)

Parameter: keine

Rckgabe: keine

Rckgabe: keine

Read Value.vi:

Parameter: Kommando

Write Text.vi:
Schreibet einen Text auf das Display des

Liest einen Wert vom SAM.

SAM.
(U8)

Rckgabe: angeforderter Wert (I16)

Write Data.vi:

Read Data.vi:
Liest einen Datenblock vom SAM.

Parameter: x-,y-Position d. Textes (U8),


Lnge des Textes (U8),
Text (string)
Rckgabe: keine

Parameter: Startindex des


Datenblockes (U8)
Rckgabe: angeforderte Daten
(Array aus I16)
ausfhrliche Hardwaredokumentation siehe Dokument: SensorAktorModul.pdf

16
Beispiel: Setzen der LEDs und Einstellen der Betriebsart 3: