Einführung in LabVIEW

Wolfgang Georgi, Philipp Hohl

Einführung in LabVIEW

2015

596 Seiten

Format: PDF, Online Lesen

E-Book: €  39,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446444072

 

Vorwort zur sechsten Auflage

6

Inhalt

8

Teil I: Grundlagen des Programmierens in LabVIEW

18

1 Was ist LabVIEW?

20

1.1 Entwicklungsstufen

20

1.2 Was will dieses Lehrbuch?

22

1.3 Installation

22

1.4 Einführendes Beispiel

22

1.4.1 Programmierung von c = a + b

26

1.4.2 Speicherung als Programm Add.vi

29

1.4.3 Starten und Stoppen von Add.vi

29

1.4.4 Fehlersuche in Add.vi (Debugging)

30

1.5 Beispiel für eine Grafik in LabVIEW

31

1.6 Grundlegende Konzepte von LabVIEW

32

1.6.1 Frontpanel

32

1.6.2 Blockdiagramm

32

1.7 Rezepte

33

1.8 Shortcuts

34

2 Einstellungen, Paletten

36

2.1 Einstellungen

36

2.1.1 Einstellungen von LabVIEW

36

2.1.2 Frontpanel

37

2.1.3 Blockdiagramm

38

2.1.4 Ausrichtungsgitter

40

2.1.5 Wiederherstellungen

40

2.2 Paletten

40

2.2.1 Werkzeugpalette (Tools Palette)

41

2.2.2 Eingabe-/Ausgabe-Elemente

42

2.2.3 Funktionenpalette

45

2.2.4 Palette konfigurieren

48

3 Programmstrukturen

49

3.1 Strukturiertes Programmieren

49

3.2 Sequenz

51

3.3 Case-Struktur

54

3.4 Schleifen

58

3.5 Guter Programmierstil

62

4 Datentypen

64

4.1 Numerische Datentypen

64

4.1.1 Kontextmenü: 'Darstellung'

64

4.1.2 Kontextmenü: 'Anzeigeformat…'

65

4.2 Boolesche Datentypen

67

4.3 String und Pfad

69

4.4 Arrays

72

4.4.1 Definition und Initialisierung eines 1-dimensionalen Arrays

72

4.4.2 Definition und Initialisierung eines 2-dimensionalen Arrays

74

4.4.3 Array erstellen

75

4.4.4 Rechnen mit Arrays: Addition

76

4.4.5 Rechnen mit Arrays: Multiplikation

77

4.4.6 Steuerung von For-Schleifen mit Arrays

78

4.4.7 Behandlung einzelner Arrayelemente

80

4.5 Cluster

82

4.5.1 Erzeugung eines Clusters

83

4.5.2 Clusterwerte ändern

84

4.5.3 Aufschlüsseln eines Clusters

86

4.5.4 Umordnen der Elemente eines Clusters

87

4.5.5 Cluster-Arrays

88

4.6 Ring & Enum

89

4.7 Datentyp FXP

91

4.8 Datentyp Variant

93

4.9 Guter Programmierstil

95

5 Unterprogramme und Typdefinitionen

97

5.1 Wozu Unterprogramme (SubVIs)?

97

5.2 Erstellen von Unterprogrammen

98

5.2.1 Einführendes Beispiel

98

5.2.2 Weitere Hinweise für die Erstellung eines Unterprogramms

101

5.2.3 Einstellungen für Programme und Unterprogramme

103

5.2.4 Erstellen von Unterprogrammen mit internem Zustand

105

5.2.5 Erstellen von polymorphen Unterprogrammen

106

5.3 Aufruf von Unterprogrammen

109

5.3.1 Statische Bindung

109

5.3.2 Dynamische Bindung

110

5.3.2.1 VI-Referenz öffnen und schließen

110

5.3.2.2 Aufruf eines VI über seine Referenz

111

5.3.2.3 Beispiel für den SubVI-Austausch während der Laufzeit

113

5.3.2.4 Rekursiver Aufruf von Unterprogrammen

113

5.3.2.5 Testen (Debugging) von ablaufinvarianten SubVIs

114

5.4 Typdefinitionen

116

5.4.1 Beispiel einer Typdefinition für Enum-Variablen

116

5.4.2 Beispiel einer Typdefinition für Registerkarten

118

5.5 Guter Programmierstil

119

5.5.1 Vereinfachung durch Unterprogramme und Typdefinitionen

119

5.5.2 Aussagekräftige Symbole (Icons)

121

5.5.3 Anordnung häufig verwendeter Elemente

121

5.5.4 Kommentierung der Elemente und Funktionen eines VI

121

5.5.5 Detaillierte Hilfe

123

6 Prozessvisualisierung

124

6.1 OOP-Konzepte

124

6.2 Eigenschafts- und Methodenknoten

124

6.3 Grafische Ausgabe

128

6.3.1 Chart (Signalverlaufsdiagramm)

128

6.3.1.1 Darstellung einer Sinuskurve

128

6.3.1.2 Darstellung von zwei oder mehr Kurven in einem Chart

130

6.3.1.3 Legende zu einem Chart oder Graphen

131

6.3.1.4 Skalierung der Ordinate in einem Chart

132

6.3.2 Graph (Signalverlaufsgraph)

134

6.3.2.1 Darstellung einer Sinuskurve

134

6.3.2.2 Darstellung von zwei oder mehr Kurven in einem Graphen

135

6.3.2.3 Skalierung der Abszisse in einem Graphen

137

6.3.3 XY-Graph

139

6.3.3.1 Darstellung einer Relation im XY-Graphen

140

6.3.3.2 Darstellung mehrerer Relationen in einem XY-Graphen

141

6.3.4 Signalverlauf

142

6.4 Express-VIs, Programmierstil

147

6.4.1 Express-VI zur Erzeugung von Kurven

147

6.4.2 Express-VI zur Erstellung von Berichten

148

7 Referenzen, Fehlerfunktionen

150

7.1 Einführendes Beispiel

150

7.1.1 Vertauschung von zwei Variablenwerten

150

7.1.2 Referenzen auf Bedien- und Anzeigeelemente

151

7.1.3 Lösung des Vertauschungsproblems

152

7.2 Vererbung

153

7.2.1 Eigenschaften der Basisklasse

155

7.2.2 Eigenschaften von abgeleiteten Klassen

155

7.3 Fehlerfunktionen

157

7.3.1 Fehlermeldungen mit oder ohne Dialog

157

7.3.2 Wo findet man wichtige Fehlerelemente und Fehlerfunktionen?

158

7.3.3 Verschiedene Fehlerarten

159

7.3.3.1 Standardfehlerleitung

159

7.3.3.2 Funktionen ohne oder mit vereinfachter Fehlerleitung

159

7.3.4 Ausgang aus While-Schleifen

161

7.3.5 Erzwingung von sequenziellem Ablauf

162

8 Datentransfer von und zur Festplatte

163

8.1 Dateifunktionen

163

8.1.1 Allgemeines zur Speicherung von Dateien

163

8.1.2 Palette Dateifunktionen

165

8.1.3 Einführendes Beispiel

166

8.1.4 Modifiziertes Beispiel

167

8.1.5 Beispiel: Anlegen einer Protokolldatei

168

8.1.6 Überschreiben ohne Warnung

168

8.2 Pfade

169

8.2.1 Pfadkonstanten

169

8.2.2 Pfadkonstante 'Standardverzeichnis'

170

8.2.3 'Standardverzeichnis' ändern

171

8.2.4 'Standarddatenverzeichnis' ändern

172

8.2.5 Lesen und Schreiben anderer Datentypen

172

8.2.6 Verketten von Schreib- und Lesefunktionen

173

8.2.7 Tabellenkalkulation

174

8.3 Pfade in einer EXE-Datei

174

8.4 Fortgeschrittene Dateitypen

176

8.4.1 LVM- , TDMS- und TDM-Dateien

177

8.4.2 Diadem

180

8.4.3 ZIP-Dateien

180

8.4.4 Konfigurationsdateien

182

9 LabVIEW-Kurzüberblick

186

9.1 Aufbau des LabVIEW-Systems

186

9.1.1 Programmierung in G

186

9.1.1.1 Interpretieren oder kompilieren?

186

9.1.1.2 Datenflussprogrammierung

188

9.1.2 Hardware-Unterstützung

188

9.1.3 Bibliotheken mathematischer und technischer Funktionen

189

9.1.4 Benutzerschnittstelle

190

9.1.5 Technologische Abstraktion

191

9.1.6 Rechenmodelle

191

9.2 Projekte

191

9.3 Erstellung von EXE-Dateien

193

9.3.1 Erstellung einer EXE-Datei

193

9.3.2 EXE-Datei auf einem Rechner ohne LabVIEW-System

195

9.4 Strukturen zur Programmentwicklung

198

9.4.1 Deaktivierungsstrukturen

198

9.4.2 Debug-Einstellung in der Projektverwaltung

200

9.5 LabVIEW-Bibliotheken

201

9.6 Umwandeln von LLB-Bibliotheken

203

9.7 Einbindung von C-Funktionen unter Windows

205

9.7.1 Reihe in C#

206

9.7.2 Reihe in C++

210

9.7.3 Reihe mit MathScript

214

9.8 Hilfen zu LabVIEW

214

9.9 Schnelleinfügeleiste (Quickdrop)

216

9.10 Der VI Package Manager

218

9.10.1 Verwalten der LabVIEW-Entwicklungsumgebung

219

9.10.2 Eigenes Paket erstellen

221

Teil II: Technische Anwendungen

222

10 Fouriertransformation

223

10.1 Zeit- und Frequenzbereich

223

10.1.1 Die reelle Fouriertransformation

224

10.1.2 Darstellung der Fourierkoeffizienten c_k in LabVIEW

227

10.2 Diskrete Fouriertransformation

230

10.2.1 Satz von Shannon

230

10.2.2 Aliasing

232

10.2.3 Frequenzauflösung

233

11 Filterung

235

11.1 Filtertypen

235

11.1.1 Ideale und reale Filter

235

11.1.2 Beispiel eines digitalen Filters

236

11.2 LabVIEW-Filterfunktionen

239

11.3 Filterung im Frequenzbereich

241

11.3.1 Idee der Filterung im Frequenzbereich

241

11.3.2 Die inverse Fouriertransformation in LabVIEW

241

11.3.3 Beispiel eines Tiefpasses

242

12 Differenzialgleichungen

244

12.1 Lösen mit LabVIEW-ODE-Funktionen

244

12.2 Lösen nach dem Analogrechnerprinzip

246

12.2.1 Blockdiagramm-Darstellung

246

12.2.2 Vereinfachungen

249

12.3 Genauigkeit numerischer Verfahren

251

13 Systeme von Differenzialgleichungen

254

13.1 Systeme gewöhnlicher Differenzialgleichungen

254

13.2 Gekoppeltes Feder-Masse-System

254

13.2.1 Lösung mit eingebauter ODE-Funktion

255

13.2.2 Lösung mit Blockdiagramm wie in MATLAB®

256

13.3 Umwelt und Tourismus

258

14 Parallelverarbeitung, Laufzeiten, Ereignisse

261

14.1 Einführendes Beispiel

261

14.2 Grundbegriffe der Parallelverarbeitung

263

14.2.1 Multiprocessing, Multitasking, Multithreading

263

14.2.2 Synchronisierung von Prozessen

264

14.3 Parallelverarbeitung unter LabVIEW

265

14.3.1 Erzeugen von Ressourcen für die Prozesskommunikation

266

14.3.2 Freigabe von Ressourcen der Prozesskommunikation

268

14.3.3 Zeitbegrenzung Ressource schont Prozessor

269

14.4 Prozess-Synchronisierung ohne Datenaustausch

269

14.4.1 Occurrences

269

14.4.2 Semaphor

270

14.4.3 Rendezvous

272

14.5 Prozess-Synchronisierung mit Datenaustausch

273

14.5.1 Melder-Operationen

273

14.5.2 Queue-Operationen

274

14.6 Globale Variablen

275

14.7 Laufzeitprobleme und ihre Behandlung

276

14.7.1 Laufzeitprobleme bei lokalen Variablen

276

14.7.2 Laufzeitprobleme bei globalen Variablen

279

14.8 Ereignisgesteuerte Programmierung

280

14.8.1 Frontpanel-Ereignisse

280

14.8.2 Wertänderungs-Ereignisse

285

14.8.3 Gefilterte Ereignisse

286

14.9 Zeitschleifen

288

Teil III: Kommunikation

290

15 Serielle Eingabe/Ausgabe

291

15.1 RS-232

291

15.2 Programmierung der RS-232 in LabVIEW

293

15.3 Die USB-Schnittstelle

296

15.4 Feld-Bus, CAN-Bus

300

15.4.1 CAN-Protokoll

300

15.4.2 CAN-Interface

302

15.4.3 CANopen-Protokoll, ZILA-Sensor

303

15.4.4 CAN-Bus mit Laptop und zwei Sensoren

305

15.4.5 XNET-System von National Instruments

305

15.5 Der byte-serielle GPIB-Bus

316

16 Datenerfassungsgeräte

318

16.1 Datenerfassungskarten/Datenerfassungsgeräte

318

16.2 Allgemeines

319

16.2.1 Treiber, MAX (Measurement and Automation Explorer)

319

16.2.2 Physikalische und virtuelle Kanäle, Task

325

16.2.3 Programmierung von Datenerfassungs-VIs, simulierte Geräte

326

16.2.4 Programmierung von VIs zur Analogausgabe

331

16.2.5 Programmierung von VIs zum Digital-I/O

332

16.2.6 Programmierung mit Hilfe des DAQ-Assistenten

332

16.2.7 Programmatische Task-Erstellung

334

16.3 USB-Gerät NI USB-6251

335

16.3.1 Begriffe 'differenziell', 'RSE' und 'NRSE'

335

16.3.2 Zwei Analogsignale mit der NI USB-6521 lesen

337

16.3.3 Triggern mit NI USB-6521

338

16.3.4 Streaming mit NI USB-6521

339

16.4 Ältere Datenerfassungskarten/-geräte

346

16.5 TEDS

346

16.6 IVI-Gerät NI USB-513

350

Teil IV: Fortgeschrittene Techniken

356

17 Professionelle Programmentwicklung

357

17.1 Sequenzstruktur

357

17.2 Zustandsautomaten

358

17.2.1 Notation für Zustandsautomaten

359

17.2.2 Umsetzung Zustandsdiagramm - LabVIEW-Programm

360

17.2.2.1 Strings für die Zustandsauswahl

361

17.2.2.2 Enum für die Zustandsauswahl

363

17.3 Münzautomat

364

17.4 Münzautomat mit Queues und Ereignisstrukturen

373

17.5 Programmierhilfen

377

17.5.1 Arbeiten mit vorgefertigten Strukturen (Templates)

377

17.5.2 Beurteilung Programmeffizienz und geeignete Werkzeuge dazu

377

18 Objektorientierte Programmierung

381

18.1 Warum objektorientiert?

381

18.2 Erstes Beispiel zur objektorientierten Programmierung

384

18.2.1 Bildung einer Klasse

384

18.2.2 Private Eigenschaften der Klasse

385

18.2.3 Methoden der Klasse

386

18.3 Weitere Beispiele zur OOP

390

18.3.1 Vererbung

390

18.3.2 Polymorphie

394

18.3.3 Modulaustausch

398

18.4 Schutz einer Klassenbibliothek

406

19 LabVIEW: Tabellenkalkulation, Datenbanken

409

19.1 Schreib-/Lesebefehle zur Tabellenkalkulation

409

19.2 Allgemeines über ActiveX

411

19.2.1 ActiveX-Container in LabVIEW

412

19.2.2 ActiveX in LabVIEW zur Steuerung von Anwendungen

414

19.3 Beispiele zur Anwendung auf Excel

415

19.3.1 Öffnen und Schließen von Excel

416

19.3.2 Sichtbarmachen einer Excel-Tabelle

417

19.3.3 Eintragen von Daten in eine Excel-Tabelle

419

19.3.4 Geschwindigkeit der Datenspeicherung

421

19.3.5 Erstellen von Makros zum Umwandeln einer Tabelle in eine Grafik

422

19.3.6 Aufruf von Makros in LabVIEW mit Hilfe von ActiveX

425

19.3.7 Erhöhung der Geschwindigkeit

426

19.3.8 Schreiben mehrerer Dateien

429

19.4 Microsoft-Datenbank Access

433

19.4.1 Einführung

433

19.4.2 Verbindung mit der Datenbank

434

19.4.3 SQL

436

19.4.4 Verwendung von SubVIs

437

20 Internet, Server und Client

438

20.1 Allgemeine Bemerkungen zum Internet

438

20.1.1 Ethernet

438

20.1.2 Ethernet-Karten, MAC- und IP-Adresse

439

20.1.3 TCP/IP-Protokoll

439

20.2 Einfaches LabVIEW-Beispiel: Ping

440

20.3 Programmieren mit DataSocket

442

20.4 Programmieren mit TCP/IP

444

20.4.1 Server und Client

444

20.4.2 Beispiel für die Übertragung von Sinusdaten über TCP/IP

445

20.5 Webdienste

448

20.5.1 Grundbegriffe

448

20.5.2 Struktur der Webdienstkommunikation

449

20.5.3 Erstes einfaches Beispiel

449

20.5.4 Zweites einfaches Beispiel

454

20.5.5 Drittes Beispiel

457

20.5.6 Dreiecksberechnung

458

20.5.7 Webserver im Internet

463

20.5.7.1 Firmeninternes Netz

463

20.5.7.2 Aufruf im Internet

464

21 Compact RIO-System und FPGA

465

21.1 Definition

465

21.2 Installation

467

Schritt 1: Software-Installation auf dem PC

467

Schritt 2: Zusammenstellen der cRIO-Hardware

468

Schritt 3: Zuweisung einer IP-Adresse zum cRIO-System

468

Schritt 4: Installation weiterer Software auf dem cRIO-System

471

Schritt 5: Verbindung eines PC mit einem cRIO-System im Netz

471

21.3 Programmierbeispiele für FPGA

472

21.3.1 Beispiel zur Digitalausgabe

473

21.3.2 Beispiel eines Zählers

478

21.3.3 FPGA-Anwendung: Ermittlung eines Frequenzganges

480

21.3.4 Umgebungsvariablen

490

21.3.4.1 Projekt 'Shared_Einzeln'

491

21.3.4.2 Projekt 'Shared_Netzwerk'

493

21.3.4.3 Projekt 'Shared_cRIO'

496

21.3.5 FPGA-Anwendungen auf dem cRIO-9014 ohne PC-Unterstützung

498

21.3.5.1 Projekt 'RIO_MOD1_Switch'

498

21.3.5.2 Projekt 'RIO_User1_Switch'

500

21.3.5.3 Umstellung des cRIO-Systems von einem Standalone-Projekt zum nächsten

503

22 XControls

505

22.1 Unterschied zu einfachen Ctls

505

22.2 Anzeige der Flugbahn eines Steines

505

22.3 Erstellen eines XControls

507

22.3.1 Allgemeines Rezept

507

22.3.2 Beispiel XControl_Pfeil.xctl

509

22.3.3 Eigenschaften in einem XControl

515

22.3.4 Bedeutung der Rahmen [1] bis [4] im Fassaden-VI

518

22.3.5 Weitere Verbesserungen

524

22.4 XControl zur Erstellung von Symbolleisten

526

22.4.1 Zustand der Symbolleiste

527

22.4.2 Funktionen der Symbolleiste

528

22.4.2.1 Symbole hinzufügen

528

22.4.2.2 Alle Symbole löschen

529

22.4.2.3 Rückmeldung des Symbols, das unter dem Mauszeiger liegt

529

22.4.2.4 Anpassung des Erscheinungsbilds an eigene Bedürfnisse

533

22.4.3 Leistungsmerkmal 'Status für Speichern umwandeln'

533

23 LabVIEW VI-Skripte

535

23.1 Was sind VI-Skripte

535

23.2 Die VI-Skripte-Funktionen in der Palette anzeigen

535

23.3 Die VI-Skripte-Funktionen

537

23.3.1 Neues VI

537

23.3.2 Neues VI-Objekt

538

23.3.3 VI-Objektreferenz öffnen

540

23.3.4 Abstand des neuen VI-Objekts vom Referenzobjekt

540

23.3.5 GObjects suchen

542

23.3.6 GObject-Beschriftung abfragen

543

23.3.7 Klassenhierarchie mittels Klassennamen ermitteln

543

23.3.8 Weiterführende Informationen

545

23.4 Wo werden VI-Skripte eingesetzt?

546

23.5 Modifizierung der Projektvorlage 'Leeres VI'

547

23.6 Erstellen eines Quickdrop Plugins mit VI-Skripting

551

24 XNodes

554

24.1 Einführung

554

24.2 Regelungstechnische Anwendung

555

24.3 Aufbau eines XNodes

557

24.4 Wie bildet man einen XNode?

557

24.4.1 Vorbereitende Überlegungen

557

24.4.2 Programmierung von NeueKuh.xnode

562

24.4.2.1 Template-VI

562

24.4.2.2 Ability-VIs

563

24.5 Wie ändert man einen XNode?

572

24.6 XNodes in der Funktionspalette speichern

572

Literatur

576

Index

578

 

© 2009-2024 ciando GmbH