Einführung in LabVIEW
von: Wolfgang Georgi, Philipp Hohl
Carl Hanser Fachbuchverlag, 2015
ISBN: 9783446444072
Sprache: Deutsch
596 Seiten, Download: 41687 KB
Format: PDF, auch als Online-Lesen
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 |