An Update on Visual Programming Data Acquisition Software Tools
Test Software Packages
This article discusses three general-purpose data acquisition and analysis software packages: Snap-Masterä 3.0 from HEM Data, LabVIEWâ 4.0 from National Instruments and Hewlett-Packard’s Visual Engineering Environment (VEE) 3.2. The evaluation focuses on the new features of LabVIEW and VEE. And since this software uses visual programming, the first issue is to define visual programming and why we should use it.
Visual programming is a type of programming environment. Other terms include diagrammatic, iconic or graphical programming. All refer to software programs, not simply user interfaces, that are produced by creating and connecting icons instead of traditional text-based programming.
The icons represent functions and are connected by “wires” or paths on which data travels from one function to the next. Visual code is the diagram of icons and wires rather than a text file of sequential instructions.
Available since 1986, visual programming software is popular now because of its substantial increase in productivity, maturity, use for general-purpose applications and availability across platforms. To sum it up, visual programming has changed the way computer-based instrumentation is done. 3,4
In the environment of test and measurement, visual programming currently provides productivity improvements from four to 10 times that of conventional text-based programming.5 The most dramatic gains are attributed to the communication among the customer, developer and computer that is facilitated by the visual syntax of the tools. The customer understands enough of the visual diagram to make suggestions and modifications in the formal statement of the problem.
With these tools, the requirements, design and coding phases combine into a single activity, usually implemented interactively with the customer and developer together at the computer.
Other packages with these features include TestPoint 2.0 from Capital Equipment, National Instruments’ LabWindowsâ /CVI and ComponentWorks, VisuaLabä from IOtech, and LabTech Notebook from Laboratory Technologies. There are certainly more packages available, but not all fit the general-purpose needs of the MTC.
HEM Data Snap-Master 3.0 for Windows
Snap-Master for Windows is a data acquisition, control and display software package containing three modules: data acquisition, general analysis and frequency- analysis. Each module is packaged on two 3 1/2-inch floppy disks. Two disks of hardware drivers are also available, one for Keithley MetraByte A/D boards and one for National Instruments A/D boards.
Software installation was a snap. Each module contained a setup executable file, and installation could begin from any one of the modules. Each driver disk also contained a setup file. The installation was done without even opening the documentation. In fact, the Users’ Guide was not consulted until the program had been in use for some time.
After installation, the tutorial was executed from the Help menu. It was
straightforward and easy to understand. There were a few confusing instructions, but these were soon figured out.
Someone with little experience in programming or Microsoft Windows would probably have trouble with the tutorial without reading the Users’ Guide. For example, in the Conditional Equations Tutorial, there is an instruction to type If ‘A0<0. This caused an error. After some experimentation, it was discovered that the expression should have been If ‘A0<0 Then.Programming was done by copying the icons for a designated function from the toolbar to the work space and connecting them with “pipes.” This type of visual programming was easily learned and quickly performed. It would be helpful, however, if the toolbar had pop-up labels as the cursor arrow moved over them. The meaning and use of most of the icons were not inherently obvious in the beginning.
There are three classes of icons: Input Elements, Output Elements and Analysis Elements. Double-clicking each icon results in a pop-up configuration panel to set the various parameters for the desired task.
In the case of the analysis icon, the pop-up panel contains a blank table. The lines of the table are programmed with mathematical expressions that resemble FORTRAN or BASIC statements. This allows complicated mathematical manipulation of the data.
There are no real-time user-intervention devices available, such as switches, knobs or buttons. Once the program has started, the only thing that you can do is let it finish or stop it. This results in the loss of decision-making and intervention during real-time operations and precludes the writing of multifunctional programs.
The Nine Input Elements
1. Sensor Elements perform linear data scaling, convert data to engineering units, give names to incoming data, and provide a calibration history for the transducers.
2. Signal Condition Elements control special hardware that amplifies, filters and performs other signal-conditioning functions.
3. Wave Generator Elements provide a wide selection of waveforms, including sine, square, ramp, sawtooth, AM and FM.
4. The A/D Element represents one of the analog-to-digital converter boards that are supported. Double-clicking on this icon allows you to select a board and to set up and initialize it. Multiple A/D devices are allowed.
5. The Counter Timer Element can be used as an event counter or to measure frequency or period of a signal.
6. The Digital Input Element represents the digital input ports of the data acquisition board.
7. The RS-232 Element receives data from generic data acquisition devices via an RS-232 port.
8. The Disk In Element reads data from binary or ASCII data files.
9. The DDE Element provides a means to receive data from other Windows applications using Windows’ Dynamic Data Exchange (DDE) protocol.
The Six Output Elements
1. The Display Element allows data from other elements to be viewed on the computer monitor in near real time in 10 different plot types: Y vs Time, Strip Chart, Y vs X, Magnitude vs Frequency, Phase vs Frequency, Bar Meter, Dial Meter, Digital Meter, Histogram and Indicator.
2. The Disk Out Element stores the data in binary or ASCII data files.
3. The External Box Out Element outputs data to external devices via the computer’s RS-232 port.
4. The DDE Out Element sends data to other Windows applications via Windows’ DDE protocol.
5. The Digital-To-Analog Output Element controls DAC boards which convert digital numbers into voltage signals. Multiple boards are supported.
6. The Digital Output Element controls hardware with digital output channels.
The Five Analysis Elements
The Analysis Element performs time-domain-based calculations on the data stream. The built-in functions are arithmetic, trigonometric, statistical, calculus, logical and filtering. It also provides user-defined functions.
The Multiframe Element performs a running sum or average across a specified number of data frames of either time-based or frequency-based data.
The Histogram Element performs summation, counting or averaging of data to produce new data that is grouped into ranges or bins.
The Conditional Element allows you to make decisions and perform actions based on data values. It uses an IF…THEN…ELSE format to produce digital or analog outputs, display messages, stop actions and stop.
The FFT Element converts time-domain data to the frequency domain. It includes FFTs, power spectral densities, coherence, transfer functions and transmissibility. It does not provide for Shock Response Spectra.
The Help is like most Windows Help files, making it easy to follow a thread of questions to the appropriate conclusions, but it is no substitute for the Users’ Guide. The Guide is complete and easy to use and includes an index, a feature frequently absent in much of today’s documentation.
Snap-Master Summary
Snap-Master is a quick and easy way for a beginner to make measurements- acquire, store, manipulate and display data. It is easy to install and configure and quickly learned. Even though there are only two supported data acquisition vendors,
most of the common data acquisition requirements can be accommodated. As long as the task does not require real-time user intervention, Snap-Master should suffice.
National Instruments’ LabVIEW 4.0
LabVIEW 4 is here and the first question is: What does it offer that merits the major increase in version number? After all, LabVIEW 2 (1990) offered orders of magnitude speed improvement over LabVIEW 1 (1986) due to compiled vs interpreted VIs, color, and rubber banding to move wired icons. It also took advantage of the 32-bit addressing capability under the Mac’s new System 7 operating system. LabVIEW 3 (1993), offered cross-platform capability (Mac, PC, HP and Sun) and provided new front-panel attributes, local variables and more editing and debugging features than were available under LabVIEW 2.
Most of the enhancements to LabVIEW 4 also involve new editing and debugging features. We will cover the new front-panel and diagram programming features before getting into the new editing and debugging features. For a general discussion of LabVIEW, consult the references.6,7
Front-Panel Feature Enhancements
Controls and Functions Palettes
The first noticeable change is in the pop-up menus for the front-panel controls and block-diagram functions. Previously, multilevel menus provided an easy way to navigate through the group submenus. At each level, a linear list of group names appeared and could be selected.
In LabVIEW 4, it’s been changed to a floating palette scheme that will take some getting used to. The group submenus, such as structures, numeric, or string, are now found under a map of icons that pop up subpalettes as you move across them. You have to move quickly to the target icon so the subpalettes traveled enroute do not open and obscure the view of the palette. This is especially frustrating when you are learning to associate the icons with the groups of controls and functions they represent.
This difficulty can be avoided by moving a palette near the workspace. These floating palettes are very convenient for the period of heaviest object placement during VI development, but can be annoying when screen space is at a premium. You will adjust to the new menu system, but there is a trade-off between the convenience of the floating palette and the desire for clear screen space.
Another feature of the controls and functions palette is the option of customizing the palette. Icons and their associated menus can be added to, deleted from or moved around on the palette to suit your needs.
New Front-Panel Features
• Absolute time format for numeric controls and indicators that allows the time and date to be easily displayed in a variety of common formats, such as 11:29:32 PM 4/5/95. This new feature is especially useful on the X-axis of a graph or when you have to enter a time and date because, unlike a text string, it only allows a legal entry.
• Styles of graphs that allow you to display bar charts and filled plots, as well as control the thickness of the line drawn in a standard graph. This is useful when printing to a high-resolution laser printer where the lines used to be drawn are only one pixel wide.
• Attributes that allow you to control the position of a front-panel object, making animation practical. Two objects have a fixed front-to-back relationship so one can be made to always appear behind the other.
• A new blink attribute that flashes the color of a control/indicator, not just switching between visible on and off.
• Arbitrary marker spacing on scales.
A Sampling of the New Editing Features
Create Constants, Controls and Indicators
A
new feature in LabVIEW 4 is the capability to create a constant, control or indicator by popping up a terminal of a function or subVI. This feature will revolutionize the way you create VIs.
Previously, this involved switching to the panel, creating the control, adjusting it to the correct representation, switching back to the diagram, locating the terminal (sometimes a challenge), moving the terminal to the desired location, and finally wiring the terminal to the function or subVI. The new process is as simple as popping up the function or subVI and selecting Create Control. Instantly, a control of the correct representation is created on the front panel and wired to the function.
The reverse works as well; that is, by dragging a front-panel object to the diagram, a constant of the same type is created on the diagram. If any feature of Version 4 will make you reluctant to return to Version 3, it is definitely this one.
The New SubVI
Prior to Version 4, to convert part of a diagram to a subVI, the block-diagram objects had to be copied to the new subVI diagram and front-panel objects had to be created. The broken wires had to be wired to the new subVI’s terminals. If the subVI had multiple inputs and outputs, the block diagram had many broken wires and, because broken wires all look alike (no hint as to type or dimension), the wiring process could be a real headache.
Now, simply select any portion of a diagram, including structures, subVIs, controls, indicators and their associated attribute nodes and local variables. Then go to a new menu item called SubVI from Selection and LabVIEW 4 instantly collapses and wires the selected portion into a new subVI. This process appears magical to the developer who has struggled through several versions of broken wires and empty front panels. You can also select and drag any portion of a diagram, including terminals, to a new diagram and the corresponding controls and indicators will be created on the new front panel, correctly wired.
New Debugging Features
A new feature in the tools palette is the breakpoint tool. Before LabVIEW 4, you could only set breakpoints or single step at the subVI level. Now you can set breakpoints anywhere on a diagram. This means you can pause execution in the area of interest instead of slowing the entire VI execution process by using the old single step or execution highlighting modes.
Once in the single-step mode, you have the option of probing data or wires that have already been executed. Combined with the proper placement of probes and the enhanced stepping features, the new breakpoint tool will be very useful in finding problems.
Another new feature allows you to speed up the stepping process by finishing the current iteration of a loop or finishing the entire loop before single stepping again. Also, you have the option of automatically single stepping through any subVIs and can always see the current caller hierarchy of any subVI. It is obvious that the new stepping and breakpoint capabilities will alleviate many debugging headaches.
New Programming Features
A great space-saving feature is the Compound Arithmetic function, which looks like the build array icon but can be stretched to have any number of polymorphic inputs, numeric or Boolean scalars or arrays. You can then set the function to perform addition, multiplication, or AND-ing or OR-ing of the inputs. Each of the inputs of this function can be set to invert its input so subtraction and division can also be done.
Another feature changes the functions that format a string into a number or vice versa. These functions now can extract more than one number at a time or format several numbers into a string. This is convenient for extracting data from instrument return strings or formatting data to send to instruments.
Another change that makes formatting easier is the ability to specify a column delimiter on the Array to Spreadsheet String and Spreadsheet String to Array functions. This makes interpretation or encoding of a comma-delimited string as simple as one function.
As good as this feature is, why not also include the ability to pick the row delimiter for the Array to Spreadsheet String function? Currently, the delimiter is determined by the operating system the VI is running on, but it should be selectable because files created by LabVIEW may be used on other systems that expect one of the other end-of-line delimiters.
In the area of diagram objects, one new feature is the ability to have constants of the type array or cluster. Previously, an array constant had to be built on the diagram using the build-array function or created on the front panel with its values saved as default. Now, both array and cluster constants are available from the Functions palette.
The Concatenate Strings function now accepts 1-D arrays of strings as inputs. The array behaves as if each of its elements were wired individually to the inputs of the Concatenate String function. This feature can increase by an order of magnitude the creation of long strings within a loop.
A feature that may be useful in situations where custom VIs are being used by a group of developers is the ability to specify whether inputs to VIs are Required, Recommended or Optional. This ranking was found previously on LabVIEW functions only.
Now, developers have the option of ranking the inputs to their VIs in the same way. A VI will not execute until all of its Required inputs have been wired. If a VI is run with a Recommended input unwired, the error-list window will show a warning for the input. If an input is Optional, LabVIEW allows execution of the VI without complaint. Changes to other functions include the addition of Error I/O to the File I/O functions, improvements to the VISA functions, and conversion of GPIB VIs to functions with error I/O clusters.
Hierarchy Window
The hierarchy window is becoming more important as a configuration management tool. The ability to show or hide subVIs, globals and type definitions helps remove the clutter often found on Version 3 hierarchy windows.
The ability to display full path names of the VIs in the hierarchy window helps locate VIs in a project. The new hierarchy window also lets you edit the VI icons, change the VI setup option, edit the VI description and print the VI. These are all very useful for making changes to a project from the system-level viewpoint. In cases where the VI descriptions are added after the VIs are written, the ability to edit the VI descriptions from the hierarchy window may save you the trouble of having to open each VI, recall its purpose and edit its description.
Help Improvements
Previously, there was a limit to the amount of text displayed in the Help window because it autosized to fit its information. The Help window now has scroll bars and supports two levels of detail. In the complex view, optional connections are labeled with disabled text; in the simplified view, optional connections are not labeled. This helps to eliminate clutter on the Help window.
Functions to programmatically control the status (shown or hidden) and position of the help window are now available. In addition, a function to control the on-line help is also available and you can customize the on-line help with the right help compiler. The on-line help feature may be optional if you are developing an application that requires complex or detailed operator input that is more easily explained when viewed in context than when written in a document.
Other new help features include tip strips and wiring stubs. Tip strips are little yellow banners that appear when the cursor is moved over an icon or button. Wiring stubs appear to grow out of functions or subVIs when the wiring tool is moved over an icon. The stubs show the data type and the tip strip displays the name of the node, so locating and wiring the nodes is much easier than in previous versions.
Where Else Am I Using This VI?
How many times have you made a change to a subVI that is used in more than one place? Have you wondered where all those places were and wished LabVIEW assisted in searching for them? How about finding global variables, attribute nodes, functions or even text?
The Find option is here at last and works just as you thought it would. Upon specifying a particular object or line of text and selecting the scope for the search, the Find option returns a list of locations and ability to view them with a click of a button. This option will not only speed development time, but if used wisely and often, also will lead to better code the first time and fewer exclamations of “Oops, I forgot that global is used over there.”
DAQ Manual
National Instruments has rewritten the DAQ manual, breaking it into two manuals. One describes the DAQ subVIs and the other provides extensive background information on using them.
LabVIEW 4 can read and convert VIs from LabVIEW 3 but not from earlier versions. And unlike LabVIEW 3, it will not handle the Mac-specific VIs from LabVIEW 2. These must be rewritten to the new standards.
Link to Hi-Q
One of the most interesting and valuable changes since we wrote the first article is the combining of data acquisition and data-analysis packages. National Instruments acquired BiMilennium and has released Hi-Q, a data analysis and visualization package that is becoming more integrated with LabVIEW with every version. It points to a seamless transition from data acquisition to analysis, display and presentation.
LabVIEW Summary
To summarize, the favorite new features are the Create Constant, Control or Indicator option on function and subVI pop-up menus; SubVI from Selection and Copy Front-Panel Terminals to New VIs features; the Find function; the new breakpoint and step-mode debugging features; and the ability to specify the column delimiter on the Spreadsheet String to Array and Array to Spreadsheet String functions. These improvements alone certainly justify the full digit change to the version number of the new LabVIEW.Hewlett-Packard HP-VEE 3.1 and 3.2
Hewlett-Packard has recently released VEE Version 3.2, an upgrade and companion to Version 3.12, released in mid-1995. Both products offer radical improvements over VEE Version 2, released in December 1992. If you liked VEE Version 2, you will like VEE Version 3 even more. If aspects of VEE Version 2 bothered you, VEE Version 3 will bother you less. The changes from VEE Version 2 to VEE Version 3 are so numerous it would require a small book to describe them all. Fortunately, such a book already exists.
8New Features of VEE Version 3
Customized Visual Properties
The most noticeable change, and certainly a major improvement, involves VEE’s panel displays and controls. Each VEE object contains a properties dialog box, with the ability to control colors, fonts, sizes, panel placement, orientation, number formatting, breakpoints and the object’s name. The dialog boxes divide object properties into groups selected by labeled tabs.
You can also assign a custom bit map of any size to the iconized view of the object. Several useful (and some outrageous) icon bit maps are provided or you can create your own. You can clip or scale images to fit into an object panel, tile the image across a panel background, or have the object itself resized to fit your graphic.
Besides controlling individual object properties, you can also change system properties and work-area properties through similar dialog boxes. This includes the ability to change the default colors of nearly every graphic element VEE draws.
One big improvement involves sizing and positioning objects on panels. When you grab an object to move it, a small window appears with the screen coordinates to track your movements. Moving the cursor to the bottom right corner instantly turns it into a resize cursor. Placing a new object allows you to drag the cursor to size the new object as it is created.
Better yet, you can use a variable-sized automatic snap-to grid to line up your objects. Polishing the appearance of your user interface into a professional-looking application is now much easier.
New Interface Widgets
VEE now supports a wide variety of user interface input and output widgets. New input widgets include buttons, check boxes, a variety of toggle buttons with custom text or graphics options, knobs, radio buttons, list boxes, drop-down list boxes, and pop-up lists.
Bit map graphics can be added as backgrounds or button tops. Inputs can be programmed to wait for you to change their state. Text boxes can perform password masking. OK buttons can have function keys assigned to them.
New output widgets include labels for panel views, picture graphics, thermometer bars, fill bars, tanks and color LED alarm buttons. The bars and buttons have three color-coded display ranges for additional data display, which can be reduced to two or suppressed altogether. Digital displays can be added and indicators can be oriented vertically or horizontally.
Programmable dialog boxes are available with selectable icons to go with the displayed message and button text. Text, integer and real input dialog boxes can perform sophisticated constraint checking and have time-out and password masking capabilities. New here are message and list-dialog boxes with customizable text, and a file name-selection dialog box. All allow their colors and fonts to be customized. The panel view colors can even be different from the detail view.
In short, what you now have for creating VEE interfaces is fully capable of satisfying more than 95% of developers and users. For the rest… well, there’s always Visual BASIC.
No one could disagree that VEE has finally arrived. HP has put more V(isual) into VEE and it’s a welcome sight.
Enhanced I/O Capabilities
A fully capable networking TCP/IP socket feature has been added. With WINSOCK.DLL on the PC platforms, cooperation between PC and UNIX machines is now easy, if not trivially simple. It makes VEE a practical tool for routinely communicating data between machines on a network.
There are more I/O improvements. VEE supports VXIplug&play drivers for instrument configuration. Interface events now support RS-232 and include time-outs. You can talk to VXI register-based instruments with interpreted SCPI commands. I/O devices can be programmatically configured with address and time-out control pins. VXI backplanes can be directly controlled. Serial devices now have hardware handshaking, adjustable buffer sizes and higher baud rates.
You can monitor the state of instruments directly through an ID monitor window. There is a command-line switch that launches VEE with this feature visible to conveniently monitor instruments during operation. In addition, direct I/O objects now allow you to send commands to more than one instrument via separate transactions.
Changes in Interface Behavior
VEE now allows more control of the panel view objects during program execution. For example, User Function panels can now be programmatically shown or hidden. This allows a status panel, for example, to be displayed and updated during execution.
Object descriptions can be viewed for secured panel objects. Object menu features can be accessed during execution. The tab key lets you navigate between panel view objects, allowing you to forgo the mouse if you wish. The space bar selects choices. The toolbar can be hidden during execution with a command line switch. Perhaps one of the kindest features in VEE Version 3 involves the “red box” displays. Whenever a serious error occurs within a VEE application, the offending object is highlighted with a red outline and a big red box appears in the center of the screen. It’s VEE’s way of throwing in the towel and saying, “Have a nice day.” The new red boxes now tell you what command in your model caused the problem.
Version 3.2 Linked With PV-Wave
There are several important new capabilities incorporated in VEE Version 3.2. The most interesting is HP’s new alliance with Visual Numerics, the producer of PV-WAVE, the data visualization software package for PC and UNIX platforms. Where HP has earned a well-deserved reputation for producing outstanding instrumentation, Visual Numerics has a similar reputation with a long history in data analysis and display products.
VEE Version 3.2 can ship data via disk file to PV-WAVE to display 2-D, 3-D and 4-D plots, surfaces and projections, allowing VEE applications to do things as complex as displaying full-color waterfall diagrams. The PV-WAVE linking capability is an option.
More New Features of Version 3.2
There is a new iconic toolbar that sits underneath the menu bar. All of the most frequently used editing actions found on the pop-up menus are displayed as standard icons for point-and-click convenience. The 50 colors available with 3.1 have been doubled under 3.2.
There is also a one-level undo command. VEE Version 3.2 loads programs three to five times faster. There are more and easier ways to draw and connect lines and simpler ways to select, move and manipulate objects.
User Functions have new panel functions for locking, unlocking, positioning and sizing display panels. Improved help menus include task-oriented issues to aid development. The output of VEE can be made compliant for ISO 9000 documentation requirements.
Portability and Compatibility
As expected, both VEE Versions 3.1 and 3.2 will read and convert VEE Version 2 models. However, there are a few VEE Version 2 to 3 upgrade incompatibilities when porting existing VEE Version 2 models to one of the new versions.
One bug that will nail nearly everybody using Version 3.1 fortunately has a simple fix. If you use VEE spaces in instrument names in your VEE Version 2 model, you can execute the model under VEE Version 3. So far so good. But if you try to change anything about those instruments in VEE Version 3, you’re dead.
The fix: Open the model (usually a ‘.vee’ file) with a text editor and remove the spaces from the instrument names. Close and save the changes, then open the edited version in VEE Version 3 and you are now free to alter the instrument configuration. VEE Version 3.2 has fixed this altogether.
Although VEE Version 2 programs could be easily ported between platforms with some adjustments to account for system differences, porting among all supported platforms is now much easier. All versions contain exactly the same menus and object set; some choices are platform-dependent. Code storage and transport take place via an ASCII text format that can be viewed, and edited with any text processor.
Two new objects are available to tell you which platform and operating system the program is running under, allowing programs to take advantage of system-specific features such as DDE, named pipes, and system calls to execute other software. A simple branching structure will enable a program to automatically select the appropriate system-specific code.
Concerning compatibility with other products, VEE may have been given a bad rap in recent years. There are about 450 VEE drivers for HP products, including full-featured drivers for other products as well.
HP’s driver writing tools, provided with the product, make writing drivers a trauma-free task. You can operate at three levels: direct I/O at the lowest level, transaction-based I/O at a higher level, or with your own graphical instrument driver at the highest and most sophisticated level.
To those of us who complained about a lack of compatibility of VEE and PC plug-in cards, a solution has been available through Data Translation. An OEM version of VEE, called DT-VEE, provides a library of objects for communicating with a variety of plug-in data acquisition boards. This library of drivers has been available as an add-on to HP VEE 3.1.
As of February 1996, VEE Version 3.2 replaces the DT-VEE product by working with DT’s Visual Programming Interface and Open Layers standards to provide access to more than 50 (ISA, PCI and PCMCIA) plug-in cards. The objects are accessed through their addition to VEE’s set of menus. For the VXI crowd, VEE Versions 3.1 and 3.2 provide VXIplug&play driver support for a variety of vendors.
On the software side, HP has augmented VEE’s support for calling C, C++ and FORTRAN compiled routines. UNIX versions can also call HP-BASIC programs, and PASCAL calling conventions are now available on the Windows products.
Parameter types have been extended to include short and integer data types as well as supporting char*. The Windows products also provide access to Windows Dynamic Link Libraries (DLLs) at run-time and support DDE as a client.
VEE Version 3.2 not only provides the ability to call other software as a client, but also turns the client-server relationship around. It allows your C/C++ programs to call VEE as a server to handle challenging programming tasks such as instrument tie-ins and graphical user interfaces.
Finally, a run-time-only version of VEE is available for HP-UX and Windows platforms. In the future, we expect to see compilation to stand-alone applications as an output option.
Room for Improvement?
In VEE Version 2 there was a perfectly good way to programmatically configure the graphical displays by supplying a display object with a record in a prescribed format. Most, not all, of the new display features in VEE Version 3 have a pin that can be added to the display object, resulting in two syntaxes to remember, or look up, as the case may be.
For some users, performance remains an issue. If you didn’t like VEE Version 2 for this reason, you probably won’t like VEE Version 3. Yet, this largely remains a religious argument since, in practical applications, especially with HP test equipment, there is usually internal buffering to deal with possible performance problems. With non-HP gear, it depends.
As with VEE Version 2, if overall performance is an issue, then VEE’s execution speeds could pose a problem. Usually, however, the performance issues are isolated and VEE provides convenient tools for incorporating FORTRAN, C, PASCAL and BASIC code into the VEE model to speed up critical sections of the code.
In any case, many of the benefits of dynamic binding provided by interpreted configurations and connections of compiled objects, as opposed to binding and compiling everything before run time, outweigh the occasional performance degradation. Taking advantage of the multiprocessor capability on platforms with multiple CPUs (allowed by the NT operating system) could put to rest many performance issues.
There still remains, however, the difficulty with the User Functions, one of the most powerful tools in VEE. Calling a User Function effectively suspends another of VEE’s most powerful features; that is, concurrent execution of multiple threads of the program effectively suspends until a called User Function completes execution. Solving this problem may take a release or two since it probably arises from basic design choices made in implementing the function.
Summary
Graphical programming technology has matured to the point where the products have a much larger application and market than their parent companies originally intended. Far from being merely glorified instrument control, this tool has become a truly general-purpose language.
HP-VEE has traditionally been available in two versions- with and without the instrument control capabilities. VEE Version 3 is a worthy successor to VEE Version 2 and, if the trend continues, VEE Version 4 will be even better.
Some other tools used for data acquisition include National Instruments’ LabWindows/CVI and ComponentWorks, VisuaLab from IOtech, and LabTech Notebook from Laboratory Technologies. LabWindows/CVI allows development in C, BASIC or PASCAL and can incorporate standard libraries or Windows DLLs. ComponentWorks links to Visual BASIC, as does VisuaLab. LabTech Notebook uses no programming language, just drop-down menus and dialog boxes.
Conclusions and Recommendations
Table 1
lists the evaluated software packages.
In choosing the software tool for data simulation, acquisition, analysis, display, control and visualization, consider the individual components, including the platform, hardware, software, sensors, signal conditioning, interfaces, as part of the system. All too often, platform, hardware (including interface cards) and software are chosen independently, and are simply expected to work together. Choose components that you know beforehand work together, especially software and interface cards. This includes VXI and GPIB instruments, for which many drivers for the tested software are now available. will
Size the task correctly. Snap-Master, for example, is best suited for simpler tasks that do not require user intervention. LabVIEW and VEE are general-purpose programming languages, not application programs. There is a serious (fun, actually, but real) learning curve for these products. Snap-Master has a much shorter learning curve, but also has less general-purpose capability.
As for recommending which package, consider you already have the computer. First, the easy issues- if you have a Mac, use LabVIEW. If you have an HP workstation with a room full of HP test equipment, then choose VEE to simplify support issues.
After that it gets complicated. With a PC, all the packages discussed will do a very good job, depending on your requirements. If you have a SunSparc workstation, both LabVIEW and VEE will work, but your selection of interface cards is limited.
If you’re about to purchase a new system, first pick the software and interface cards together, then the platform. If the software or cards are available on more than one platform, so much the better.
Ask yourself if a Mac or PC can do the job or do you need a UNIX workstation or VXI? To choose between Mac and PC is a religious argument. To recommend software just to use a UNIX platform is sadistic. To use UNIX or VXI when it’s not necessary is expensive.
Don’t choose the package by price. The cost of application development will greatly exceed any savings in hardware or software.
Who wins a head-to-head competition between LabVIEW and VEE, the leaders in visual programming? If the contest is a feature war, both packages have a feature glut that will satisfy the perpetual student for months on end.
A feature comparison is nearly as futile a gesture as a feature count. Both packages can accomplish many of the same tasks. Both are individual conceptions. VEE is not a LabVIEW clone, nor is LabVIEW a VEE clone. To get something done with either package, select what you need and ignore the rest.
In terms of performance, LabVIEW is the clear and undisputed winner. LabVIEW creates compiled code and can be orders of magnitude quicker than VEE’s interpreter. Where there are performance issues that are general, not local to one part of the process (frankly, a real but rare occurrence), then LabVIEW is a clear choice.
Performance is relative, however, because the speed of the overall process is frequently dependent on slow instruments and slower humans. Usually, not always, it is a case of who can get to the next red light the quickest.
LabVIEW is geared primarily for the Mac/PC interface card market, although it very definitely supports VXI. VEE is geared more to the VXI market, although it supports PC interface cards.
When we reviewed them two years ago, both were very close. They are even closer today. Both are mature, general-purpose languages that go well beyond the test and measurement environment. Both support cross-platform capability and can link with other languages and applications, instrument buses and the Internet. Selection ultimately becomes one of user preference.
References
1. Baroth, E. C., Hartsough, C., Johnsen, L., McGregor, J., Powell-Meeks, M., Walsh, A., Wells, G., Chazanoff, S., and Brunzie, T., “A Survey of Data Acquisition and Analysis Software Tools, Part 1,” Evaluation Engineering, October 1993, pp. 54-66, and “Part 2,” November 1993, pp. 128-140.
2. Clarkson, M., “Tools on the Fly: Virtual Instruments Take Off,” Desktop Engineering, September/October 1995, pp. 20-28.
3. Wells, G. and Baroth, E. C., “Telemetry Monitoring and Display Using LabVIEW,” Conference Proceedings of National Instruments User Symposium, Austin, TX, March 28-30, 1993.
4. Wells, G. and Baroth, E. C., “Using Visual Programming to Simulate, Test and Display a Telemetry Stream,” MacSciTech’s SEAM ‘95 Conference, San Francisco, CA, Jan. 8-9, 1995.
5. Baroth, E. C. and Hartsough, C., “Experience Report: Visual Programming in the Real World,” Visual Object Oriented Programming, edited by M. M. Burnett, A. Goldberg and T. G. Lewis, Manning Publications, Prentice Hall, 1995, pp. 21-42.
6. Johnson, G. W., LabVIEW Graphical Programming, McGraw-Hill, New York, 1994.
7. Brunzie, T., “Aging Gracefully! Writing software that takes changes in stride,” LabVIEW Technical Resource, Volume 3, Number 4, Fall 1995.
8. Helsel R., Graphical Programming, A Tutorial for VEE, Prentice-Hall, New Jersey, 1995.
About the Author
Edmund C. Baroth, Ph.D., conceived, developed and is the Technical Manager of the Measurement Technology Center, part of the Measurement, Test and Engineering Support Section of the Jet Propulsion Laboratory. He holds a bachelor’s degree in mechanical engineering from City College of New York, and master’s and doctorate degrees in mechanical engineering from the University of California, Berkeley. Dr. Baroth has received five NASA Certificates of Recognition and a NASA Group Achievement Award, produced two patents and has one pending, and has been a faculty member at California State University. Measurement Technology Center, Jet Propulsion Laboratory, 4800 Oak Grove Dr., Mailstop 125-177, Pasadena, CA 91109, (818) 354-8339.
Table 1
Package
Snap-Master
LabVIEW
HP-VEE
Programming Language
Visual
Visual
Visual
Easy to Program and Understand
1 (easiest)
3
2
General-Purpose Capability
3
1
(most general)
2
Allows User Intervention
No
Yes
Yes
Link to Data Analysis/
Visualization Software
No
Hi-Q or others
PV-Wave or others
Cross Platform Capability
No
Yes
Yes
Hardware Key
No
No
No
Copyright 1996 Nelson Publishing Inc.
February 1996