Preface |
|
xix | |
|
|
1 | (56) |
|
1.1 System Configuration Requirements |
|
|
2 | (1) |
|
1.2 Installing the LabVIEW Student Edition |
|
|
2 | (1) |
|
1.3 The LabVIEW Environment |
|
|
3 | (2) |
|
1.4 The Getting Started Screen |
|
|
5 | (4) |
|
1.5 Panel and Diagram Windows |
|
|
9 | (6) |
|
1.5.1 Front Panel Toolbar |
|
|
9 | (4) |
|
1.5.2 Block Diagram Toolbar |
|
|
13 | (2) |
|
|
15 | (1) |
|
|
16 | (8) |
|
|
17 | (1) |
|
|
17 | (1) |
|
|
17 | (3) |
|
|
20 | (1) |
|
|
20 | (1) |
|
|
21 | (1) |
|
|
21 | (2) |
|
|
23 | (1) |
|
|
24 | (7) |
|
|
24 | (1) |
|
|
25 | (2) |
|
|
27 | (1) |
|
1.8.4 Searching the Palettes and Quick Drop |
|
|
28 | (3) |
|
1.9 Opening, Loading, and Saving Vis |
|
|
31 | (2) |
|
1.10 LabVIEW Help Options |
|
|
33 | (3) |
|
1.10.1 Context Help Window |
|
|
33 | (3) |
|
|
36 | (1) |
|
1.11 Building Blocks: Pulse Width Modulation |
|
|
36 | (2) |
|
1.12 Relaxed Reading: Revolutionary Cancer Treatment Minimizes Damage to Healthy Tissue |
|
|
38 | (2) |
|
1.13 myDAQ Building Blocks |
|
|
40 | (3) |
|
1.13.1 Building a Basic LED Circuit |
|
|
41 | (1) |
|
1.13.2 NI ELVISmx Instrument Launcher |
|
|
42 | (1) |
|
1.13.3 Testing with the ELVISmx Instrument Panel |
|
|
42 | (1) |
|
|
43 | (14) |
|
|
45 | (5) |
|
|
50 | (2) |
|
|
52 | (5) |
|
|
57 | (60) |
|
2.1 What Are Virtual Instruments? |
|
|
58 | (2) |
|
2.2 Several Worked Examples |
|
|
60 | (7) |
|
|
67 | (6) |
|
2.3.1 Numeric Controls and Indicators |
|
|
67 | (2) |
|
2.3.2 Boolean Controls and Indicators |
|
|
69 | (4) |
|
2.3.3 Configuring Controls and Indicators |
|
|
73 | (1) |
|
|
73 | (9) |
|
2.4.1 VIs and Express VIs |
|
|
74 | (1) |
|
|
75 | (1) |
|
|
76 | (3) |
|
|
79 | (3) |
|
2.5 Building Your First VI |
|
|
82 | (5) |
|
2.6 Data Flow Programming |
|
|
87 | (2) |
|
2.7 Building a VI Using Express VIs |
|
|
89 | (7) |
|
2.8 Building Blocks: Pulse Width Modulation |
|
|
96 | (2) |
|
2.9 Relaxed Reading: Building A Semiautonomous Vehicle Driven By the Visually Impaired |
|
|
98 | (2) |
|
2.10 myDAQ Building Blocks |
|
|
100 | (3) |
|
2.10.1 Building a Basic Thermistor Circuit |
|
|
101 | (1) |
|
2.10.2 The Thermistor Circuit Test VI |
|
|
101 | (1) |
|
2.10.3 Testing the Thermistor Circuit |
|
|
102 | (1) |
|
|
103 | (14) |
|
|
104 | (6) |
|
|
110 | (3) |
|
|
113 | (4) |
|
3 Editing and Debugging Virtual Instruments |
|
|
117 | (65) |
|
|
118 | (31) |
|
3.1.1 Creating Controls and Indicators on the Block Diagram |
|
|
118 | (2) |
|
|
120 | (2) |
|
|
122 | (1) |
|
3.1.4 Deleting and Duplicating Objects |
|
|
122 | (1) |
|
|
123 | (1) |
|
|
124 | (3) |
|
3.1.7 Changing Font, Style, and Size of Text |
|
|
127 | (3) |
|
3.1.8 Selecting and Deleting Wires |
|
|
130 | (1) |
|
3.1.9 Wire Stretching and Broken Wires |
|
|
131 | (3) |
|
3.1.10 Aligning, Distributing, and Resizing Objects |
|
|
134 | (2) |
|
|
136 | (8) |
|
3.1.12 Cleaning Up the Block Diagram |
|
|
144 | (2) |
|
|
146 | (2) |
|
3.1.14 Reusing Snippets of Code |
|
|
148 | (1) |
|
|
149 | (11) |
|
|
150 | (1) |
|
3.2.2 Highlight Execution |
|
|
151 | (3) |
|
3.2.3 Single-Stepping Through a VI and Its SubVIs |
|
|
154 | (1) |
|
3.2.4 Breakpoints and Probes |
|
|
155 | (4) |
|
|
159 | (1) |
|
|
160 | (3) |
|
|
163 | (1) |
|
3.5 Building Blocks: Pulse Width Modulation |
|
|
163 | (3) |
|
3.6 Relaxed Reading: Using Graphical System Design for Tumor Treatments |
|
|
166 | (2) |
|
3.7 myDAQ Building Blocks |
|
|
168 | (2) |
|
|
170 | (12) |
|
|
172 | (2) |
|
|
174 | (4) |
|
|
178 | (4) |
|
|
182 | (46) |
|
|
183 | (1) |
|
|
184 | (2) |
|
4.3 Editing the Icon and Connector |
|
|
186 | (9) |
|
|
187 | (3) |
|
|
190 | (1) |
|
4.3.3 Selecting and Modifying Terminal Patterns |
|
|
191 | (2) |
|
4.3.4 Assigning Terminals to Controls and Indicators |
|
|
193 | (2) |
|
|
195 | (4) |
|
4.5 Using a VI as a SubVI |
|
|
199 | (3) |
|
4.6 Creating a SubVI from a Selection |
|
|
202 | (2) |
|
4.7 Error Checking and Error Handling |
|
|
204 | (2) |
|
4.7.1 Automatic Error Handling |
|
|
204 | (1) |
|
4.7.2 Manual Error Handling |
|
|
205 | (1) |
|
|
205 | (1) |
|
|
206 | (1) |
|
4.9 The VI Hierarchy Window |
|
|
207 | (2) |
|
4.10 Building Blocks: Pulse Width Modulation |
|
|
209 | (3) |
|
4.11 Relaxed Reading: Mobile Rescue Operations |
|
|
212 | (1) |
|
4.12 myDAQ Building Blocks |
|
|
213 | (5) |
|
|
218 | (10) |
|
|
219 | (3) |
|
|
222 | (3) |
|
|
225 | (3) |
|
|
228 | (77) |
|
|
229 | (7) |
|
|
231 | (4) |
|
5.1.2 For Loops with Conditional Terminals |
|
|
235 | (1) |
|
|
236 | (6) |
|
5.3 Shift Registers and Feedback Nodes |
|
|
242 | (9) |
|
|
242 | (2) |
|
5.3.2 Using Shift Registers to Remember Data Values from Previous Loop Iterations |
|
|
244 | (2) |
|
5.3.3 Initializing Shift Registers |
|
|
246 | (2) |
|
|
248 | (3) |
|
|
251 | (11) |
|
5.4.1 Adding and Deleting Cases |
|
|
254 | (2) |
|
5.4.2 Wiring Inputs and Outputs |
|
|
256 | (6) |
|
5.5 Flat Sequence Structures |
|
|
262 | (3) |
|
5.5.1 Evaluate and Control Timing in a Sequence Structure |
|
|
263 | (2) |
|
5.5.2 Avoid the Overuse of Sequence Structures |
|
|
265 | (1) |
|
|
265 | (4) |
|
5.6.1 Formula Node Input and Output Variables |
|
|
266 | (1) |
|
|
266 | (3) |
|
5.7 Diagram Disable Structures |
|
|
269 | (1) |
|
|
270 | (3) |
|
5.8.1 Creating Local Variables |
|
|
270 | (2) |
|
5.8.2 Use Local Variables With Care |
|
|
272 | (1) |
|
5.8.3 Initializing Local Variables |
|
|
273 | (1) |
|
5.8.4 Memory and Execution-Speed Considerations |
|
|
273 | (1) |
|
5.9 Common Programming Techniques |
|
|
273 | (7) |
|
5.9.1 Sequential Programming |
|
|
273 | (2) |
|
5.9.2 State Programming and State Machines |
|
|
275 | (4) |
|
|
279 | (1) |
|
5.10 Some Common Problems in Wiring Structures |
|
|
280 | (2) |
|
5.10.1 Failing to Wire a Tunnel in All Cases of a Case Structure |
|
|
280 | (1) |
|
5.10.2 Overlapping Tunnels |
|
|
281 | (1) |
|
5.10.3 Wiring Underneath Rather Than through a Structure |
|
|
281 | (1) |
|
5.11 Building Blocks: Pulse Width Modulation |
|
|
282 | (4) |
|
5.12 Relaxed Reading: Refining the Process of Steel Recycling |
|
|
286 | (2) |
|
5.13 myDAQ Building Blocks |
|
|
288 | (2) |
|
|
290 | (15) |
|
|
292 | (4) |
|
|
296 | (5) |
|
|
301 | (4) |
|
|
305 | (64) |
|
|
306 | (4) |
|
6.1.1 Creating Array Controls and Indicators |
|
|
307 | (2) |
|
6.1.2 Multidimensional Arrays |
|
|
309 | (1) |
|
6.2 Creating Arrays with Loops |
|
|
310 | (4) |
|
6.2.1 Creating Two-Dimensional Arrays |
|
|
313 | (1) |
|
|
314 | (13) |
|
|
314 | (1) |
|
|
315 | (2) |
|
|
317 | (1) |
|
|
318 | (1) |
|
|
319 | (8) |
|
|
327 | (3) |
|
|
330 | (1) |
|
6.6 Creating Cluster Controls and Indicators |
|
|
331 | (5) |
|
|
333 | (2) |
|
6.6.2 Using Clusters to Pass Data to and from SubVIs |
|
|
335 | (1) |
|
|
336 | (7) |
|
6.7.1 The Bundle Function |
|
|
336 | (4) |
|
6.7.2 The Unbundle Function |
|
|
340 | (1) |
|
6.7.3 Creating Cluster Constants on the Block Diagram |
|
|
340 | (2) |
|
6.7.4 Using Polymorphism with Clusters |
|
|
342 | (1) |
|
6.8 Matrix Data Type and Matrix Functions |
|
|
343 | (5) |
|
6.8.1 Creating Matrix Controls, Indicators, and Constants |
|
|
344 | (1) |
|
|
345 | (3) |
|
|
348 | (1) |
|
6.10 Building Blocks: Pulse Width Modulation |
|
|
349 | (3) |
|
6.11 Relaxed Reading: Automatic Laser-Assisted Neuron Growth |
|
|
352 | (3) |
|
6.12 myDAQ Building Blocks |
|
|
355 | (2) |
|
|
357 | (12) |
|
|
359 | (3) |
|
|
362 | (3) |
|
|
365 | (4) |
|
|
369 | (58) |
|
|
370 | (8) |
|
|
378 | (8) |
|
|
386 | (3) |
|
7.4 Customizing Charts and Graphs |
|
|
389 | (15) |
|
|
389 | (4) |
|
|
393 | (2) |
|
7.4.3 The Graph Palette and Scale Legend |
|
|
395 | (3) |
|
7.4.4 Special Chart Customization Features |
|
|
398 | (2) |
|
7.4.5 Special Graph Customization Features: Cursor Legend |
|
|
400 | (2) |
|
7.4.6 Using Graph Annotations |
|
|
402 | (2) |
|
7.4.7 Exporting Images of Graphs, Charts, and Tables |
|
|
404 | (1) |
|
|
404 | (1) |
|
7.5 Using Math Plots for 2D and 3D Graphs |
|
|
405 | (7) |
|
|
405 | (2) |
|
|
407 | (5) |
|
7.6 Building Blocks: Pulse Width Modulation |
|
|
412 | (2) |
|
7.7 Relaxed Reading: Environmental Monitoring in the Costa Rican Rain Forest |
|
|
414 | (3) |
|
7.8 myDAQ Building Blocks |
|
|
417 | (2) |
|
|
419 | (8) |
|
|
420 | (2) |
|
|
422 | (2) |
|
|
424 | (3) |
|
|
427 | (78) |
|
8.1 Components of a DAQ System |
|
|
428 | (1) |
|
|
429 | (8) |
|
|
431 | (1) |
|
|
432 | (1) |
|
|
433 | (1) |
|
8.2.4 Analog Frequency-Domain Signals |
|
|
434 | (2) |
|
8.2.5 One Signal---Five Measurement Perspectives |
|
|
436 | (1) |
|
8.3 Common Transducers and Signal Conditioning |
|
|
437 | (4) |
|
8.4 Signal Grounding and Measurements |
|
|
441 | (6) |
|
8.4.1 Signal Source Reference Configuration |
|
|
441 | (1) |
|
|
442 | (5) |
|
8.5 Analog-to-Digital Conversion Considerations |
|
|
447 | (5) |
|
|
452 | (1) |
|
8.7 Choosing Your Data Acquisition Device |
|
|
453 | (3) |
|
8.7.1 X Series Data Acquisition Devices |
|
|
454 | (1) |
|
8.7.2 Low Cost Data Acquisition for Students |
|
|
454 | (1) |
|
8.7.3 Simulated Data Acquisition |
|
|
454 | (1) |
|
8.7.4 Macintosh, Linux, and Mobile Devices |
|
|
455 | (1) |
|
8.8 DAQ Hardware Configuration |
|
|
456 | (10) |
|
|
456 | (7) |
|
|
463 | (3) |
|
8.9 Using the DAQ Assistant |
|
|
466 | (7) |
|
8.9.1 DAQmx Task Name Constant |
|
|
469 | (4) |
|
|
473 | (5) |
|
|
473 | (1) |
|
|
474 | (4) |
|
|
478 | (7) |
|
|
479 | (1) |
|
|
480 | (5) |
|
8.12 Digital Input and Output |
|
|
485 | (6) |
|
8.13 Building Blocks: Pulse Width Modulation |
|
|
491 | (2) |
|
8.13.1 Generating Pulse Width Modulated Signals with Hardware Counters |
|
|
492 | (1) |
|
8.13.2 Applications of Pulse Width Modulation |
|
|
493 | (1) |
|
8.14 Relaxed Reading: Reducing Seismic Risk for an Ancient Roman Amphitheater |
|
|
493 | (2) |
|
8.15 myDAQ Building Blocks |
|
|
495 | (3) |
|
|
498 | (7) |
|
|
501 | (2) |
|
|
503 | (1) |
|
|
503 | (2) |
|
|
505 | (39) |
|
|
506 | (8) |
|
9.1.1 Converting Numeric Values to Strings with Build Text Express VI |
|
|
513 | (1) |
|
|
514 | (17) |
|
9.2.1 Writing Data to a File |
|
|
518 | (3) |
|
9.2.2 Reading Data from a File |
|
|
521 | (1) |
|
9.2.3 Manipulating Spreadsheet Files |
|
|
522 | (3) |
|
9.2.4 File I/O Express Vis |
|
|
525 | (5) |
|
9.2.5 Obtaining the Path to the System Directories |
|
|
530 | (1) |
|
9.3 Building Blocks: Pulse Width Modulation |
|
|
531 | (2) |
|
9.4 Relaxed Reading: On the Science of Cycling Speed |
|
|
533 | (2) |
|
9.5 myDAQ Building Blocks |
|
|
535 | (2) |
|
|
537 | (7) |
|
|
538 | (2) |
|
|
540 | (1) |
|
|
541 | (3) |
|
10 NI LabVIEW MathScript RT Module |
|
|
544 | (63) |
|
10.1 What is MathScript RT Module? |
|
|
545 | (1) |
|
10.2 Accessing the MathScript Interactive Window |
|
|
546 | (6) |
|
10.2.1 The Command History and Output Windows |
|
|
548 | (1) |
|
10.2.2 Viewing Data in a Variety of Formats |
|
|
549 | (3) |
|
|
552 | (2) |
|
|
554 | (10) |
|
10.4.1 Key MathScript Functions |
|
|
563 | (1) |
|
10.5 Defining Functions and Creating Scripts |
|
|
564 | (8) |
|
10.5.1 User-Defined Functions |
|
|
565 | (3) |
|
|
568 | (4) |
|
10.6 Saving, Loading, and Exporting Data Files |
|
|
572 | (3) |
|
10.6.1 Saving and Loading Data Files |
|
|
572 | (2) |
|
|
574 | (1) |
|
|
575 | (17) |
|
10.7.1 Accessing the MathScript Node |
|
|
577 | (1) |
|
10.7.2 Entering Scripts into the MathScript Node |
|
|
577 | (1) |
|
10.7.3 Input and Output Variables |
|
|
578 | (4) |
|
10.7.4 Script Highlighting |
|
|
582 | (1) |
|
|
583 | (7) |
|
10.7.6 Saving Scripts from within the MathScript Node |
|
|
590 | (2) |
|
10.8 Applications of MathScript RT Module |
|
|
592 | (3) |
|
10.8.1 Instrument Your Algorithms |
|
|
592 | (1) |
|
10.8.2 Graphical Signal Processing, Analysis, and Mathematics |
|
|
593 | (1) |
|
10.8.3 Integrating Measurement Hardware |
|
|
594 | (1) |
|
10.9 Building Blocks: Pulse Width Modulation |
|
|
595 | (2) |
|
10.10 Relaxed Reading: Acquiring and Analyzing the Bioacoustic Communication of Killer Whales |
|
|
597 | (2) |
|
10.11 myDAQ Building Blocks |
|
|
599 | (2) |
|
|
601 | (6) |
|
|
603 | (1) |
|
|
604 | (1) |
|
|
605 | (2) |
|
|
607 | (80) |
|
|
608 | (10) |
|
11.1.1 Review of Matrices |
|
|
608 | (5) |
|
11.1.2 Systems of Algebraic Equations |
|
|
613 | (2) |
|
|
615 | (3) |
|
11.2 Statistics and Curve Fitting |
|
|
618 | (11) |
|
11.2.1 Curve Fits Based on Least Squares Methods |
|
|
619 | (4) |
|
11.2.2 Fitting a Curve to Data with Normal Distributions |
|
|
623 | (2) |
|
11.2.3 The Curve Fitting Express VI |
|
|
625 | (4) |
|
11.3 Differential Equations |
|
|
629 | (8) |
|
11.4 Finding Zeroes of Functions |
|
|
637 | (3) |
|
11.5 Integration and Differentiation |
|
|
640 | (1) |
|
|
641 | (10) |
|
11.6.1 Normalized Frequency |
|
|
642 | (4) |
|
11.6.2 Wave, Pattern, and Noise Vis |
|
|
646 | (3) |
|
11.6.3 The Simulate Signal Express VI |
|
|
649 | (2) |
|
|
651 | (24) |
|
11.7.1 The Fourier Transform |
|
|
651 | (4) |
|
|
655 | (5) |
|
11.7.3 The Spectral Measurements Express VI |
|
|
660 | (3) |
|
|
663 | (9) |
|
11.7.5 The Filter Express VI |
|
|
672 | (3) |
|
11.8 Building Blocks: Pulse Width Modulation |
|
|
675 | (2) |
|
11.9 Relaxed Reading: High-Speed Control System To Test MEMs Microshutters |
|
|
677 | (2) |
|
11.10 myDAQ Building Blocks |
|
|
679 | (3) |
|
|
682 | (5) |
|
|
684 | (1) |
|
|
685 | (1) |
|
|
686 | (1) |
|
|
687 | (30) |
|
A.1 Components of an Instrument Control System |
|
|
688 | (8) |
|
|
688 | (1) |
|
|
689 | (2) |
|
A.1.3 GPIB Devices and Configurations |
|
|
691 | (2) |
|
A.1.4 Serial Port Communication |
|
|
693 | (2) |
|
A.1.5 Other Bus Technologies |
|
|
695 | (1) |
|
A.2 Detecting and Configuring Instruments |
|
|
696 | (3) |
|
|
696 | (1) |
|
|
696 | (3) |
|
A.3 Using the Instrument I/O Assistant |
|
|
699 | (8) |
|
|
707 | (7) |
|
A.4.1 Developing Your Own Instrument Driver |
|
|
713 | (1) |
|
A.5 Future of Instrument Drivers and Instrument Control |
|
|
714 | (1) |
|
|
715 | (2) |
|
B LabVIEW Developer Certification |
|
|
717 | (21) |
|
B.1 Overview of the NI LabVIEW Certification Structure |
|
|
718 | (1) |
|
B.2 Logistics of the CLAD Examination |
|
|
718 | (1) |
|
|
719 | (1) |
|
B.4 Sample CLAD Examination |
|
|
720 | (11) |
|
B.5 Detailed Sample CLAD Test Solutions |
|
|
731 | (4) |
|
B.6 Additional Study Resources |
|
|
735 | (1) |
|
|
736 | (2) |
Index |
|
738 | |