The role of software in modular instrumentation cannot be overstated. Software converts the raw bit stream from hardware into a useful measurement. A well-designed modular instrumentation system considers multiple layers of software, including I/O drivers, application development, and test management, as shown in Figure 5.
Figure 5. Software layers are often used in a modular instrumentation system.
The bottom layer, Measurement and Control Services, is one of the most crucial elements of a modular instrumentation system, though often overlooked. This layer represents the driver I/O software and hardware configuration tools. This driver software is critical, because it provides the connectivity between the test development software and the hardware for measurement and control.
Instrument drivers provide a set of high-level, human-readable functions for interfacing with instruments. Each instrument driver is specifically tailored to a particular model of instrument to provide an interface to its unique capabilities. Of particular importance in an instrument driver is its integration with the development environment so that the instrument commands are a seamless part of the application development. System developers need instrument driver interfaces optimized for their development environment of choice, for example, NI LabVIEW, C, C++, or Microsoft .NET.
Also represented in Measurement and Control Services are configuration tools. These configuration tools include resources for configuring and testing I/O, as well as storing scaling, calibration, and channel-aliasing information. These tools are important for quickly building, troubleshooting, and maintaining an instrumentation system.
The software in the Application Development Environment layer provides the tools to develop the code or procedure for the application. Although graphical programming is not a requirement of a modular instrument system, these systems often uses graphical tools for their ease of use and rapid development. Graphical programming uses “icons” or symbolic functions that pictorially represent the action to be performed, as shown in Figure 6. These symbols are connected together through “wires” that pass data and determine order of execution. LabVIEW provides the industry’s most used and most complete graphical development environment.
Figure 6. Code for a typical stimulus/response application using modular instrumentation, written in LabVIEW, (1) generates a signal from an arbitrary waveform generator; (2) acquires the signal with a digitizer/oscilloscope; (3) performs a fast Fourier transform (FFT); and (4) graphs the result of the FFT on the user interface (front panel).
Some applications also require an additional layer of software management, either for test execution or visibility into test data. These are represented in the System Management Software layer. For highly automated test systems, test management software provides a framework for sequencing, branching/looping, report generation, and database integration. The test management tool must also provide tight integration into the development environments where the application-specific code is created. National Instrument's test management software, for example, provides this framework for sequencing, branching, report generation, and database integration and includes connectivity to all common development environments. In other applications that need visibility into large quantities of test data, other tools may be useful. These needs include quick access to large volumes of scattered data, consistent reporting, and data visualization. These software tools aid in managing, analyzing, and reporting data collected during data acquisition and/or generated during simulations.
Every layer of this software architecture should be considered for a modular instrumentation system.