| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
| |
Roots | |
| |
| |
LabVIEW and Automation | |
| |
| |
Virtual instruments: LabVIEW's foundation | |
| |
| |
Why use LabVIEW? | |
| |
| |
The Origin of LabVIEW | |
| |
| |
Introduction | |
| |
| |
A vision emerges | |
| |
| |
All the world's an instrument | |
| |
| |
A hard-core UNIX guy won over by the Macintosh | |
| |
| |
Putting it all together with pictures | |
| |
| |
Favoring the underdog platform for system design | |
| |
| |
Ramping up development | |
| |
| |
Stretching the limits of tools and machine | |
| |
| |
Facing reality on estimated development times | |
| |
| |
Shipping the first version | |
| |
| |
Apple catches up with the potential offered by LabVIEW | |
| |
| |
LabVIEW 2: A first-rate instrument control product becomes a world-class programming system | |
| |
| |
The port to Windows and Sun | |
| |
| |
LabVIEW 3 | |
| |
| |
LabVIEW 4 | |
| |
| |
LabVIEW branches to BridgeVIEW | |
| |
| |
LabVIEW 5 | |
| |
| |
The LabVIEW RT branch | |
| |
| |
LabVIEW 6 | |
| |
| |
LabVIEW 7 | |
| |
| |
LabVIEW 8 | |
| |
| |
Crystal Ball Department | |
| |
| |
LabVIEW influences other software products | |
| |
| |
LabVIEW Handles Big Jobs | |
| |
| |
| |
Getting Started | |
| |
| |
About the Diagrams in This Book | |
| |
| |
Sequencing and Data Flow | |
| |
| |
LabVIEW under the Hood | |
| |
| |
The parts of a VI | |
| |
| |
How VIs are compiled | |
| |
| |
Multitasking, multithreaded LabVIEW | |
| |
| |
The LabVIEW Environment | |
| |
| |
Front panel | |
| |
| |
Controls | |
| |
| |
Property nodes | |
| |
| |
Block diagram | |
| |
| |
SubVIs | |
| |
| |
Icons | |
| |
| |
Polymorphic VIs | |
| |
| |
Data | |
| |
| |
Clusters | |
| |
| |
Typedefs | |
| |
| |
Arrays | |
| |
| |
Debugging | |
| |
| |
See what the subVIs are up to | |
| |
| |
Peeking at data | |
| |
| |
One step at a time | |
| |
| |
Execution highlighting | |
| |
| |
Setting breakpoints | |
| |
| |
Suspend when called | |
| |
| |
Calling Other Code | |
| |
| |
CINs | |
| |
| |
Dynamic link libraries | |
| |
| |
Programming by Plagiarizing | |
| |
| |
Bibliography | |
| |
| |
| |
Controlling Program Flow | |
| |
| |
Sequences | |
| |
| |
Data Dependency | |
| |
| |
Adding Common Threads | |
| |
| |
Looping | |
| |
| |
While LOOPS | |
| |
| |
For Loops | |
| |
| |
Shift registers | |
| |
| |
Uninitialized shift registers | |
| |
| |
Globals | |
| |
| |
Global and local variables | |
| |
| |
Built-in global variables-and their hazards | |
| |
| |
Local variables | |
| |
| |
Events | |
| |
| |
Notify and Filter events | |
| |
| |
Mechanical actions | |
| |
| |
Dynamic events | |
| |
| |
Design Patterns | |
| |
| |
Initialize and then loop | |
| |
| |
Independent parallel loops | |
| |
| |
Client-server | |
| |
| |
Client-server (with autonomous VIs) | |
| |
| |
State machines | |
| |
| |
Queued message handler | |
| |
| |
Event-driven applications | |
| |
| |
Bibliography | |
| |
| |
| |
LabVIEW Data Types | |
| |
| |
Numeric Types | |
| |
| |
Strings | |
| |
| |
Building strings | |
| |
| |
Parsing strings | |
| |
| |
Dealing with unprintables | |
| |
| |
Spreadsheets, strings, and arrays | |
| |
| |
Arrays | |
| |
| |
Initializing arrays | |
| |
| |
Array memory usage and performance | |
| |
| |
Clusters | |
| |
| |
Waveforms | |
| |
| |
Data Type Conversions | |
| |
| |
Conversion and coercion | |
| |
| |
Intricate conversions and type casting | |
| |
| |
Flatten To String (... Do what?) | |
| |
| |
Enumerated types (enums) | |
| |
| |
Get Carried Away Department | |
| |
| |
| |
Timing | |
| |
| |
Where Do Little Timers Come From? | |
| |
| |
Using the Built-in Timing Functions | |
| |
| |
Intervals | |
| |
| |
Timed structures | |
| |
| |
Timing sources | |
| |
| |
Execution and priority | |
| |
| |
Timing guidelines | |
| |
| |
Sending timing data to other applications | |
| |
| |
High-resolution and high-accuracy timing | |
| |
| |
Bibliography | |
| |
| |
| |
Synchronization | |
| |
| |
Polling | |
| |
| |
Events | |
| |
| |
Occurrences | |
| |
| |
Notifiers | |
| |
| |
Queues | |
| |
| |
Semaphores | |
| |
| |
Me and You, Rendezvous | |
| |
| |
| |
Files | |
| |
| |
Accessing Files | |
| |
| |
File Types | |
| |
| |
Writing Text Files | |
| |
| |
Reading Text Files | |
| |
| |
Formatting to Text Files | |
| |
| |
Binary Files | |
| |
| |
Writing binary files | |
| |
| |
Reading binary files | |
| |
| |
Writing Datalog Files | |
| |
| |
Reading Datalog Files | |
| |
| |
Datalog file utilities | |
| |
| |
| |
Building an Application | |
| |
| |
Define the Problem | |
| |
| |
Analyze the user's needs | |
| |
| |
Gather specifications | |
| |
| |
Draw a block diagram | |
| |
| |
Specify the I/O Hardware | |
| |
| |
Prototype the User Interface | |
| |
| |
Panel possibilities | |
| |
| |
First Design and Then Write Your Program | |
| |
| |
Ask a Wizard | |
| |
| |
Top-down or bottom-up? | |
| |
| |
Modularity | |
| |
| |
Choose an architecture: Design patterns | |
| |
| |
The VI hierarchy as a design tool | |
| |
| |
Sketching program structure | |
| |
| |
Pseudocoding | |
| |
| |
Ranges, coercion, and default values | |
| |
| |
Handling errors | |
| |
| |
Putting it all together | |
| |
| |
Testing and Debugging Your Program | |
| |
| |
Tracing execution | |
| |
| |
Checking performance | |
| |
| |
Final Touches | |
| |
| |
VBL epilogue | |
| |
| |
Studying for the LabVIEW Certification Exams | |
| |
| |
CLAD | |
| |
| |
CLD | |
| |
| |
| |
Traffic light controller | |
| |
| |
| |
Car wash controller | |
| |
| |
| |
Security system | |
| |
| |
Bibliography | |
| |
| |
| |
Documentation | |
| |
| |
VI Descriptions | |
| |
| |
Control Descriptions | |
| |
| |
Custom Online Help | |
| |
| |
Documenting the Diagram | |
| |
| |
VI History | |
| |
| |
Other Ways to Document | |
| |
| |
Printing LabVIEW Panels and Diagrams | |
| |
| |
Putting LabVIEW screen images into other documents | |
| |
| |
Writing Formal Documents | |
| |
| |
Document outline | |
| |
| |
Connector pane picture | |
| |
| |
VI description | |
| |
| |
Terminal descriptions | |
| |
| |
Programming examples | |
| |
| |
Distributing Documents | |
| |
| |
| |
Instrument Driver Basics | |
| |
| |
Finding Instrument Drivers | |
| |
| |
Driver Basics | |
| |
| |
Communication standards | |
| |
| |
Learn about Your Instrument | |
| |
| |
Determine Which Functions to Program | |
| |
| |
Establish Communications | |
| |
| |
Hardware and wiring | |
| |
| |
Protocols and basic message passing | |
| |
| |
Bibliography | |
| |
| |
| |
Instrument Driver Development Techniques | |
| |
| |
Plug-and-Play Instrument Drivers | |
| |
| |
General Driver Architectural Concepts | |
| |
| |
Error I/O flow control | |
| |
| |
Modularity by grouping of functions | |
| |
| |
Project organization | |
| |
| |
Initialization | |
| |
| |
Configuration | |
| |
| |
Action and status | |
| |
| |
Data | |
| |
| |
Utility | |
| |
| |
Close | |
| |
| |
Documentation | |
| |
| |
Bibliography | |
| |
| |
| |
Inputs and Outputs | |
| |
| |
Origins of Signals | |
| |
| |
Transducers and sensors | |
| |
| |
Actuators | |
| |
| |
Categories of signals | |
| |
| |
Connections | |
| |
| |
Grounding and shielding | |
| |
| |
Why use amplifiers or other signal conditioning? | |
| |
| |
Choosing the right I/O subsystem | |
| |
| |
Network everything! | |
| |
| |
Bibliography | |
| |
| |
| |
Sampling Signals | |
| |
| |
Sampling Theorem | |
| |
| |
Filtering and Averaging | |
| |
| |
About ADCs, DACs, and Multiplexers | |
| |
| |
Digital-to-analog converters | |
| |
| |
Digital codes | |
| |
| |
Triggering and Timing | |
| |
| |
A Little Noise Can Be a Good Thing | |
| |
| |
Throughput | |
| |
| |
Bibliography | |
| |
| |
| |
Writing a Data Acquisition Program | |
| |
| |
Data Analysis and Storage | |
| |
| |
Postrun analysis | |
| |
| |
Real-time analysis and display | |
| |
| |
Sampling and Throughput | |
| |
| |
Signal bandwidth | |
| |
| |
Oversampling and digital filtering | |
| |
| |
Timing techniques | |
| |
| |
Configuration Management | |
| |
| |
What to configure | |
| |
| |
Configuration editors | |
| |
| |
Configuration compilers | |
| |
| |
Saving and recalling configurations | |
| |
| |
A Low-Speed Data Acquisition Example | |
| |
| |
Medium-Speed Acquisition and Processing | |
| |
| |
Bibliography | |
| |
| |
| |
LabVIEW RT | |
| |
| |
Real Time Does Not Mean Real Fast | |
| |
| |
RT Hardware | |
| |
| |
Designing Software to Meet Real-Time Requirements | |
| |
| |
Measuring performance | |
| |
| |
Shared resources | |
| |
| |
Multithreading and multitasking | |
| |
| |
Organizing VIs for best real-time performance | |
| |
| |
Context switching adds overhead | |
| |
| |
Scheduling | |
| |
| |
Timed structures | |
| |
| |
Communications | |
| |
| |
Bibliography | |
| |
| |
| |
LabVIEW FPGA | |
| |
| |
What Is an FPGA? | |
| |
| |
LabVIEW for FPGAs | |
| |
| |
RIO hardware platforms | |
| |
| |
Plug-in cards | |
| |
| |
CompactRIO | |
| |
| |
Timing and synchronization | |
| |
| |
Compact Vision | |
| |
| |
Application Development | |
| |
| |
Compiling | |
| |
| |
Debugging | |
| |
| |
Synchronous execution and the enable chain | |
| |
| |
Clocked execution and the single-cycle Timed Loop | |
| |
| |
Parallelism | |
| |
| |
Pipelining | |
| |
| |
Conclusions | |
| |
| |
Bibliography | |
| |
| |
| |
LabVIEW Embedded | |
| |
| |
Introduction | |
| |
| |
History | |
| |
| |
LabVIEW Embedded Development Module | |
| |
| |
The technology: What's happening | |
| |
| |
Running LabVIEW Embedded on a new target | |
| |
| |
Porting the LabVIEW runtime library | |
| |
| |
Incorporating the C toolchain | |
| |
| |
The Embedded Project Manager | |
| |
| |
LEP plug-in VIs | |
| |
| |
Target_OnSelect | |
| |
| |
Other plug-in VIs | |
| |
| |
Incorporating I/O srivers | |
| |
| |
LabVIEW Embedded programming best practices | |
| |
| |
Interrupt driven programming | |
| |
| |
LabVIEW Embedded targets | |
| |
| |
| |
Process Control Applications | |
| |
| |
Process Control Basics | |
| |
| |
Industrial standards | |
| |
| |
Control = manipulating outputs | |
| |
| |
Process signals | |
| |
| |
Control system architectures | |
| |
| |
Working with Smart Controllers | |
| |
| |
Single-loop controllers (SLCs) | |
| |
| |
Other smart I/O subsystems | |
| |
| |
Man-Machine Interfaces | |
| |
| |
Display hierarchy | |
| |
| |
Other interesting display techniques | |
| |
| |
Handling all those front panel items | |
| |
| |
Data Distribution | |
| |
| |
Input scanners as servers | |
| |
| |
Handling output data | |
| |
| |
Display VIs as clients | |
| |
| |
Using network connections | |
| |
| |
Real-time process control databases | |
| |
| |
Simulation for validation | |
| |
| |
Sequential Control | |
| |
| |
Interlocking with logic and tables | |
| |
| |
State machines | |
| |
| |
Initialization problems | |
| |
| |
GrafcetVIEW-a graphical process control package | |
| |
| |
Continuous Control | |
| |
| |
Designing a control strategy | |
| |
| |
Trending | |
| |
| |
Real-time trends | |
| |
| |
Historical trends | |
| |
| |
Statistical process control (SPC) | |
| |
| |
Alarms | |
| |
| |
Using an alarm handler | |
| |
| |
Techniques for operator notification | |
| |
| |
Bibliography | |
| |
| |
| |
Physics Applications | |
| |
| |
Special Hardware | |
| |
| |
Signal conditioning | |
| |
| |
CAMAC | |
| |
| |
Other I/O hardware | |
| |
| |
Field and Plasma Diagnostics | |
| |
| |
Step-and-measure experiments | |
| |
| |
Plasma potential experiments | |
| |
| |
Handling Fast Pulses | |
| |
| |
Transient digitizers | |
| |
| |
Digital storage oscilloscopes (DSOs) | |
| |
| |
Timing and triggering | |
| |
| |
Capturing many pulses | |
| |
| |
Recovering signals from synchronous experiments | |
| |
| |
Handling Huge Data Sets | |
| |
| |
Reducing the amount of data | |
| |
| |
Optimizing VIs for memory usage | |
| |
| |
Bibliography | |
| |
| |
| |
Data Visualization, Imaging, and Sound | |
| |
| |
Graphing | |
| |
| |
Displaying waveform and cartesian data | |
| |
| |
Bivariate data | |
| |
| |
Multivariate data | |
| |
| |
3D Graphs | |
| |
| |
Intensity Chart | |
| |
| |
Image Acquisition and Processing | |
| |
| |
System requirements for imaging | |
| |
| |
Using IMAQ Vision | |
| |
| |
IMAQ components | |
| |
| |
Sound I/O | |
| |
| |
DAQ for sound I/O | |
| |
| |
Sound I/O functions | |
| |
| |
Sound input | |
| |
| |
Sound output | |
| |
| |
Sound files | |
| |
| |
Bibliography | |
| |
| |
Index | |