System and method for online specification of measurement hardware7043393Abstract A system and method for online configuration of a measurement device for a measurement system. The user accesses a server with a client computer over a network and specifies a desired measurement task. If the user lacks the hardware required to perform the task, hardware specifications and configuration software and/or data specific to the user's application, i.e., to perform the task, are sent to a manufacturer, who pre-configures the hardware with the configuration software and/or data to perform the task and sends the pre-configured hardware to the user. The hardware may be re-configurable hardware, such as a programmable hardware element or processor/memory based device. Configuration software and/or data for configuring the user's measurement system hardware (and/or software) to perform the desired task may also be sent to the user. The configuration software sent to the user may comprise a graphical program usable by the measurement system to perform the task. Claims We claim: Description CONTINUATION DATA
After the server determines the configuration information, the server may provide the configuration information to the measurement system over the network. The measurement system may then be configured using the configuration information, wherein the measurement system may be operable to perform the measurement task after being configured using the configuration information. For example, the client computer system may receive the configuration parameters and configure one or more measurement devices, the client computer system, and/or one or more software programs accordingly. After being configured using the configuration information, the measurement system may operate to perform the measurement task. It is noted that other programs, either developed by the user or provided by the server, may be used to perform the measurement task. In a measurement application example, the measurement system may receive a signal from a signal source, and the one or more measurement devices may operate according to the configuration information to analyze the signal. In a second embodiment, the server may determine one or more software programs in response to the requirements. The software program(s) may be executable by the measurement system to perform the measurement task. The software program(s) may comprise executable code (machine language code) which is executable by the measurement system to perform the measurement task. Alternatively, the software program(s) may comprise source code which is one or more of: 1) compilable and executable, or 2) interpretable, by the measurement system to perform the measurement task. In one embodiment, the software program(s) may comprise at least one graphical program. In this embodiment, the measurement system may store a graphical program execution engine for executing the graphical program to perform the measurement task. The software program(s) may also comprise any combination of the above, e.g., one or more executable code files, one or more source programs in a text-based programming environment, and/or one or more graphical programs. The server may determine the software program(s) at least in part by retrieving the programs from a memory medium based on the requirements. Alternatively, or in addition, the server may determine the software program(s) at least in part by programmatically generating the programs based on the requirements. In one embodiment, the server may programmatically generate a graphical program in response to the requirements. For example, in response to receiving the one or more requirements for the task, the server may generate a LabVIEW graphical program developed under the National Instruments LabVIEW graphical development environment, which is usable to perform the task. The generated graphical program may then be sent to the client computer system. After the server determines the software program(s), the server may provide the software program(s) to the measurement system over the network. The software program(s) may be deployed in the measurement system in various respective locations. For example, the software program(s) may be executable by the client computer system. Alternatively, or in addition, a measurement device may have a processor and memory for executing the program(s). In one embodiment, the provided software program(s) may not be complete and/or executable, and the user may be required to complete the program in some way prior to execution or deployment on the various devices. In one embodiment, the server may further provide software development tools (e.g., LabVIEW) to aid the user in completing the received program. After the software program(s) are deployed in the system, the measurement system may execute the software program(s) to perform the measurement task. In a measurement application example, the one or more measurement devices and/or client computer system may execute the software program(s) to receive a signal from a signal source and analyze the signal. Where the received program is a graphical program, the client may execute a graphical program execution engine (e.g., LabVIEW or LabVIEW RT) to execute the graphical program to perform the specified task. In other words, the measurement system may include the graphical program execution engine, thereby facilitating native execution of the graphical program on the system to perform the task. In another embodiment, the graphical program may be converted to an executable format (machine code), and run or executed under a real time operating system to perform the task. As another example, the graphical program may be converted to a different or "lower level" source code format, such as C, C++, FORTRAN, Basic, Java, etc., then compiled or interpreted for execution under an operating system, such as a real time operating system. In yet another embodiment, the graphical program may be converted to a hardware configuration program at the client computer and used to configure a programmable hardware element in the client system. In a third embodiment, the server may determine one or more hardware configuration programs in response to the requirements. The one or more hardware configuration programs may be used to configure a programmable hardware element in the measurement system to perform the measurement task. The server may determine the hardware configuration program(s) at least in part by retrieving the programs from a memory medium based on the requirements. Alternatively, or in addition, the server may determine the hardware configuration program(s) at least in part by programmatically generating the hardware configuration programs based on the requirements. A hardware configuration program may be generated in various ways. For example, the server may programmatically generate a program (e.g., a text-based program or a graphical program) in response to the requirements, and then programmatically generate the hardware configuration program based on the program. As another example, the server may programmatically generate an intermediate specification or data structure representing the desired operation, and then programmatically generate the hardware configuration program based on this intermediate specification or data structure. After the server determines the hardware configuration program(s), the server may provide the hardware configuration program(s) to the measurement system over the network. The hardware configuration program(s) may be deployed in the measurement system in various respective locations. For example, a measurement device may have a programmable hardware element that is configurable using the program(s). The user may choose to deploy the hardware configuration program(s) to various devices, e.g., using a GUI based configuration diagram. In one embodiment, the provided hardware configuration program(s) may not be complete, and the user may be required to complete the hardware configuration program in some way prior to deployment on a programmable hardware element. In one embodiment, the server may further provide hardware configuration program development tools to aid the user in completing the received program. After the programmable hardware element in the measurement system is configured with the hardware configuration program, the programmable hardware element may operate according to the hardware configuration program to perform at least a portion of the measurement task. In a measurement application example, a measurement device having a programmable hardware element that has been configured according to the hardware configuration program may operate accordingly to receive a signal from a signal source and analyze the signal. In one embodiment, if the server determines, either programmatically or based on user input, that the that the client system does not include a necessary measurement hardware device for performing the task, and if the user agrees to purchase the device, the server may transmit information to a manufacturer, e.g., to a manufacturing server operated by the manufacturer, indicating that the measurement hardware device should be shipped to the user. For example, the server may display a dialog box to the user indicating that a hardware device is needed and asking the user if he/she desires to purchase this hardware device. The manufacturer may then send the measurement hardware device to the user. Where the server is operated by the hardware manufacturer, the server may simply send the software product order to a hardware fulfillment server for processing. For example, National Instruments may operate a server which is operable to receive user requirements specifying a task and determine (or create) software products that perform this task as described above, and may also include a hardware fulfillment server that interfaces to manufacturing for providing necessary hardware software products to users. In one embodiment, the server may also transmit the software products that have been determined to the hardware fulfillment server (manufacturer) so that the hardware device can be appropriately configured before being sent to the user. Thus, the manufacturer may configure the measurement hardware device with the respective software products, e.g., by storing a software program on the device or by configuring a programmable hardware element on the device, prior to sending the indicated hardware device to the user. In this instance, the configured measurement hardware device sent to the user may already be operable to perform the desired measurement task. In another embodiment, the one or more software products may be provided to the user for configuring the hardware device when it is received. The software products may be provided to the client computer system over the Internet, via a CD ROM sent by mail, or by any other transmission means. In another embodiment, the server may provide the appropriate development tools to the client computer system to enable the user to easily develop custom solutions. In one embodiment, the user may provide information regarding the current configuration and software products (e.g., programs) present in the client system to the server for analysis. For example, the user can provide a snapshot of the configuration of the measurement system and the software programs (e.g., a LabVIEW VI) present in the system. The server may receive this information and execute software to make proposed suggestions to the user or actual modifications to the client system's configuration or programs. The modified configuration or programs may then be returned to the client system for use. This type of bi-directional analysis may be performed one or more times. Alternatively, the server may programmatically analyze a software product, such as a program (e.g., a graphical program), resident on a client system and make proposed changes (including additions) to the program based on requirements specified by the user. Thus, in various embodiments, the present invention provides systems and methods whereby a user may specify a measurement task over a network, and various software products may be generated or modified which are usable to configure a measurement system to perform the measurement task. The software products may then be sent to the user for configuration on or deployment to the client system. Additionally, if the user does not have the required measurement hardware to perform the measurement task, the required hardware may be automatically sent to the user, and may even be pre-configured with the appropriate software products to perform the measurement task. Further, the user can provide information on the current configuration and software products present in the client system for analysis by the server and further modifications. BRIEF DESCRIPTION OF THE DRAWINGS A better understanding of the present invention can be obtained when the following detailed description of the preferred embodiment is considered in conjunction with the following drawings, in which: FIG. 1 illustrates a client/server system for configuration of a measurement system, according to one embodiment; FIGS. 2A-2C illustrate representative instrumentation and process control systems including various I/O interface options; FIG. 3 is a block diagram of the client computer system of FIGS. 1, 2A, 2B, and 2C, according to one embodiment; FIGS. 4A-4D are block diagrams of reconfigurable instruments, according to various embodiments; FIG. 5 is a flowchart diagram illustrating network-based specification, generation and deployment of software products according to one embodiment; FIG. 6A is a flowchart diagram illustrating network-based specification, generation and deployment of configuration information according to one embodiment; FIG. 6B is a flowchart diagram illustrating network-based specification, generation and deployment of software programs according to one embodiment; FIG. 6C is a flowchart diagram illustrating network-based specification, generation and deployment of hardware configuration programs according to one embodiment; FIG. 7 is a flowchart diagram illustrating a method of determining configuration information based on received requirements; FIG. 8 is a flowchart diagram illustrating a method of determining programs based on received requirements which includes retrieving the programs from a database; FIG. 9 is a flowchart diagram illustrating a method of determining programs by programmatically generating the programs based on the received requirements; FIGS. 10A and 10B are flowchart diagrams illustrating methods of programmatically generating a hardware configuration program; FIG. 11 is a flowchart diagram illustrating network-based specification, generation and deployment of a graphical program; FIGS. 12A-12B illustrate two embodiments of a system for task specification and system configuration, according to one embodiment; FIG. 13 illustrates a graphical user interface (GUI) of a measurement task specifier interface, according to one embodiment; and FIGS. 14A-14C are flowchart diagrams illustrating network-based specification, distribution and deployment of software products which may include providing hardware devices to the user; FIGS. 15A and 15B are logistics diagrams for the methods of FIGS. 14A and 14B, respectively; and FIGS. 16A-16C illustrate embodiments of a configuration diagram for deploying software products in a system. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and are herein described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Incorporation by Reference The following references are hereby incorporated by reference in their entirety as though fully and completely set forth herein: U.S. Pat. No. 4,914,568 titled "Graphical System for Modeling a Process and Associated Method," issued on Apr. 3, 1990; U.S. Pat. No. 5,481,741 titled "Method and Apparatus for Providing Attribute Nodes in a Graphical Data Flow Environment"; U.S. Pat. No. 6,173,438 titled "Embedded Graphical Programming System" filed Aug. 18, 1997; U.S. Pat. No. 6,219,628 titled "System and Method for Configuring an Instrument to Perform Measurement Functions Utilizing Conversion of Graphical Programs into Hardware Implementations," filed Aug. 18, 1997; U.S. patent application Ser. No. 09/617,600 titled "Graphical Programming System with Distributed Block Diagram Execution and Front Panel Display," filed Jun. 13, 2000; U.S. patent application Ser. No. 09/745,023 titled "System and Method for Programmatically Generating a Graphical Program in Response to Program Information," filed Dec. 20, 2000; U.S. patent application Ser. No. 60/301,785 titled "Measurement System Software Architecture for Easily Creating High-Performance Measurement Applications," filed Jun. 29, 2001; U.S. patent application Ser. No. 10/008,792 titled "Measurement System Software Architecture for Easily Creating High-Performance Measurement Applications," filed Nov. 13, 2001; U.S. patent application Ser. No. 60/312,242 titled "System and Method for Graphically Creating, Deploying and Executing Programs in a Distributed System" filed Aug. 14, 2001; U.S. patent application Ser. No. 10/058,150 titled "Reconfigurable Measurement System Utilizing a Programmable Hardware Element and Fixed Hardware Resources", filed on Oct. 29, 2001; U.S. patent application Ser. No. 09/587,682 titled "System and Method for Automatically Generating a Graphical Program to Perform an Image Processing Algorithm" filed on Jun. 5, 2000; and U.S. application Ser. No. 10/101,508 titled "Network-based System for Configuring a Measurement System using Configuration Information Generated based on a User Specification" filed Mar. 19, 2002. The LabVIEW graphical programming manuals, including the "G Programming Reference Manual", available from National Instruments Corporation, are also hereby incorporated by reference in their entirety. FIG. 1—A Client/Server System FIG. 1 illustrates a client/server system suitable for implementing various embodiments of the present invention. As FIG. 1 shows, a client computer system 102 may be coupled to a server computer system 103 through a network 104, such as the Internet. The client computer system 102 may include software, such as browser software, for accessing and communicating with the server computer system 103. Each of the client computer system 102 and server computer system 103 may include network interface devices and network ports for communicating on a network. The client computer system 102 may also be coupled to, or comprise, one or more devices, where the client computer system 102 and the one or more devices compose a system. In one embodiment, the device is a measurement device, and the client computer system 102 and the one or more measurement devices compose a measurement system. For example, the client computer system 102 may couple to any of the measurement devices shown in FIGS. 2A and 2B, among others. As described below, the client computer system 102 and/or one or more devices coupled to the client computer system may be configurable by receiving one or more software products over a network in response to task information or requirements provided by the client computer system 102. In one embodiment, the client computer system 102 may be used for interfacing to the server 103 and used for configuring a device that is coupled to the network 104, but is not connected (or directly coupled) to the client computer system 102. As used herein, the term "software product" includes one or more of the following: configuration information, one or more software programs, and/or one or more hardware configuration programs. Thus the term "software product" includes any of various types of programs or data that may be used to configure a computer system, device, or program. As used herein, the term "device" is intended to include any of various types of devices that include one or more of: 1) a processor and memory; and/or 2) a programmable hardware element or reconfigurable logic. Exemplary types of processors include a conventional microprocessor or CPU (such as an X86, PowerPC, SunSparc, etc.), a digital signal processor (DSP), microcontroller, or other type of processor. Exemplary types of programmable hardware elements include a programmable logic device (PLD), e.g., an FPGA (field programmable gate array), or other types of reconfigurable logic. Exemplary types of devices include computer systems, network devices, personal digital assistants (PDAs), television systems, multimedia devices, measurement devices, instruments, industrial automation devices, process control devices, smart data acquisition devices, smart sensors (including smart cameras), smart actuators, video devices (e.g., digital cameras, digital video cameras), audio devices, computer peripherals, telephones, appliances, or other processor-based or programmable hardware-based devices. Exemplary measurement and automation devices include any of the devices shown in FIGS. 2A and 2B. Exemplary network devices include network interface cards, routers, bridges, switches, hubs, etc. Exemplary measurement devices include camera, video cameras, sound devices, etc. As used herein, the term "measurement device" is intended to include any of various types of devices which performs at least a portion of a measurement or automation function. The term "measurement device" includes any of the instruments or measurement devices shown in FIGS. 2A and 2B, as well as other measurement devices, such as smart sensors (including smart cameras), sensors, transducers, etc. A "measurement device" may comprise a client computer system which executes measurement software. The client computer system may also couple to one or more other measurement devices, e.g., an internal measurement device (e.g., configured as a plug-in card), or external measurement devices. The terms "reconfigurable measurement device", "smart measurement device" or "reconfigurable instrument" may be used to refer to a "measurement device" as described above. For more information on a reconfigurable measurement device or reconfigurable instrument which includes a processor and memory, please see U.S. Pat. No. 6,173,438 which was incorporated by reference above. For more information on a reconfigurable measurement device or reconfigurable instrument which includes a programmable hardware element or reconfigurable hardware, e.g., an FPGA, please see U.S. Pat. No. 6,219,628 which was incorporated by reference above. As used herein, the term "programmable hardware element" is intended to include various types of programmable hardware, reconfigurable hardware, programmable logic, or field-programmable devices (FPDs), such as one or more FPGAs (Field Programmable Gate Arrays), or one or more PLDs (Programmable Logic Devices), such as one or more Simple PLDs (SPLDs) or one or more Complex PLDs (CPLDs), or other types of programmable hardware. As used herein, the term "program" is intended to include: 1) a software program, or 2) a hardware configuration program, useable for configuring a programmable hardware element or reconfigurable logic. A "software program" may be any type of code and/or data that may be stored in a memory medium and executed by a processor. Exemplary software programs include programs written in text-based programming languages, such as C, C++, Pascal, FORTRAN, Cobol, Java, etc.; programs written in assembly language; programs written in graphical programming languages; programs that have been compiled to machine language; scripts; and other types of executable software. Exemplary "hardware configuration programs" include netlists and bit files for programmable hardware elements such as FPGAs and other reconfigurable hardware. As used herein, the term "configuration information" may include configuration data, such as hardware configuration settings or parameters, help files, documentation, etc. Configuration data is typically used to configure one or more devices for desired operation. As used herein, the term "graphical program" or "block diagram" is intended to include a program comprising graphical code. The term "graphical code" refers to two or more interconnected nodes or icons, wherein the interconnected nodes or icons may visually indicate the functionality of the program. The nodes may be connected in one or more of a data flow, control flow, and/or execution flow format. The nodes may also be connected in a "signal flow" format, which is a subset of data flow. Thus the terms "graphical program" or "block diagram" are each intended to include a program comprising a plurality of interconnected nodes or icons which visually indicate the functionality of the program. A graphical program may also comprise a user interface or front panel. The user interface portion may be contained in the block diagram or may be contained in one or more separate panels or windows. The user interface of a graphical program may include various graphical user interface elements or front panel objects, such as user interface controls and/or indicators, that represent or display the respective input and/or output that will be used by the graphical program or VI (virtual instrument), and may include other icons which represent devices being controlled. The user interface or front panel may be comprised in a single window of user interface elements, or may comprise a plurality of individual windows each having one or more user interface elements, wherein the individual windows may optionally be tiled together. As another example, the user interface or front panel may comprise user interface or front panel objects, e.g., the GUI, embedded in the block diagram. The user interface of a graphical program may display only output, only input, or both input and output. In some embodiments the user interface or front panel of a graphical program may enable the user to interactively control or manipulate the input being provided to the graphical program during program execution. Examples of graphical program development environments that may be used to create graphical programs include LabVIEW, DasyLab, and DiaDem from National Instruments, VEE from Agilent, WiT from Coreco, Vision Program Manager from PPT Vision, SoftWIRE from Measurement Computing, Simulink from the MathWorks, Sanscript from Northwoods Software, Khoros from Khoral Research, SnapMaster from HEM Data, VisSim from Visual Solutions, ObjectBench by SES (Scientific and Engineering Software), and VisiDAQ from Advantech, among others. In the preferred embodiment, the system uses the LabVIEW graphical programming system available from National Instruments. A program for performing an instrumentation, measurement, automation or simulation function, such as measuring phenomena of a Unit Under Test (UUT) or device, controlling or modeling instruments, controlling or measuring a system or process, or for designing, modeling or simulating devices, may be referred to as a virtual instrument (VI). FIGS. 2A-2C—Instrumentation and Industrial Automation Systems FIGS. 2A-2C illustrate exemplary measurement and automation systems. As used herein, the term "measurement system" is intended to include the types of measurement systems and automation systems shown in FIGS. 2A, 2B and 2C, as well as other types of systems. For example, although not shown in FIGS. 2A-2C, a measurement system may comprise one or more traditional "box" instruments, such as those available from Agilent or Tektronix, which may couple to a computer system or which include a processor, memory and display capabilities, preferably including web browser capabilities. The measurement systems shown in FIGS. 2A-2C may be operable to receive and be configured by configuration information. The measurement systems shown in FIGS. 2A-2C may be operable to receive and execute programs, e.g., software programs and/or hardware configuration programs, according to one embodiment of the invention. In accordance with one embodiment of the invention, the present system and method allows users to more easily configure and/or program their measurement systems. For example, a user can specify one or more of measurement, control, simulation, and automation tasks (collectively referred to as "measurement tasks") and provide this specification to a server computer system. The server can then determine (e.g., programmatically create) software products, such as configuration information or programs, and provides these software products to the measurement system to configure the measurement system to implement desired tasks. As used herein, the term "measurement system" is intended to include an instrumentation system such as that shown in FIGS. 2A and 2C, an industrial automation system such as that shown in FIG. 2B, or a modeling or simulation system involved with the design, validation or testing of a product involving "real world I/O", i.e., the acquisition or generation of data to/from a model or simulation of a device or product being designed, validated or tested, such as hardware-in-the loop simulation and rapid control prototyping. The term "measurement" may include one or more of instrumentation, measurement, data acquisition, automation, control, and simulation, including hardware-in-the-loop simulation and rapid control prototyping. FIG. 2A illustrates an exemplary measurement system or instrumentation system 100. The system 100 may comprise a host computer 102 which connects to one or more measurement devices or instruments. The host computer 102 may comprise a CPU, a display, memory, and one or more input devices such as a mouse or keyboard, as shown. The host computer 102 connects through the one or more instruments to analyze, measure, or control a unit under test (UUT) or process 150. The host computer 102 may execute a program which interacts with or controls the one or more instruments. The one or more instruments may include a GPIB instrument 112 and associated GPIB interface card 122, a data acquisition board 114 and associated signal conditioning circuitry 124, a VXI instrument 116, a PXI instrument 118, a video device or camera 132 and associated image acquisition card 134, a motion control device 136 and associated motion control interface card 138, and/or one or more computer based instrument cards 142 and 143, including reconfigurable instruments, among other types of devices. Various examples of reconfigurable instruments or measurement devices are described below with reference to FIGS. 4A-4D. The GPIB instrument 112 may be coupled to the computer 102 via the GPIB interface card 122 provided by the computer 102. In a similar manner, the video device 132 may be coupled to the computer 102 via the image acquisition card 134, and the motion control device 136 may be coupled to the computer 102 through the motion control interface card 138. The data acquisition board 114 may be coupled to the computer 102, and may interface through signal conditioning circuitry 124 to the UUT. The signal conditioning circuitry 124 may comprise an SCXI (Signal Conditioning eXtensions for Instrumentation) chassis comprising one or more SCXI modules 126. The GPIB card 122, the image acquisition card 134, the motion control interface card 138, and the DAQ card 114 are typically plugged in to an I/O slot in the computer 102, such as a PCI bus slot, a PC Card slot, or an ISA, EISA or MicroChannel bus slot provided by the computer 102. However, these cards 122, 134, 138 and 114 are shown external to computer 102 for illustrative purposes. The VXI chassis or instrument 116 may be coupled to the computer 102 via a VXI bus, MXI bus, or other serial or parallel bus provided by the computer 102. The computer 102 may include VXI interface logic, such as a VXI, MXI or GPIB interface card (not shown), which interfaces to the VXI chassis 116. The PXI chassis or instrument may be coupled to the computer 102 through the computer's PCI bus. A serial instrument (not shown) may also be coupled to the computer 102 through a serial port, such as an RS-232 port, USB (Universal Serial bus) or IEEE 1394 or 1394.2 bus, provided by the computer 102. In addition to the above measurement devices, other types of measurement devices include smart sensors (including smart cameras). In typical instrumentation systems an instrument of each interface type may not be present, and in fact many systems may only have one or more instruments of a single interface type, such as only GPIB instruments. The instruments are coupled to the unit under test (UUT) or process 150, or are coupled to receive field signals, typically generated by transducers. The system 100 may be used in a data acquisition and control application, in a test and measurement application, a process control application, a man-machine interface application, or a simulation application. FIG. 2B illustrates an exemplary industrial automation system 160. The industrial automation system 160 may be similar to the instrumentation or test and measurement system 100 shown in FIG. 2A. Elements which are similar or identical to elements in FIG. 2A have the same reference numerals for convenience. The system 160 comprises a computer 102 which connects to one or more devices or instruments. The computer 102 comprises a CPU, a display screen, memory, and one or more input devices such as a mouse or keyboard as shown. The computer 102 connects through the one or more devices to a process or device 150 to perform an automation function, such as MMI (Man Machine Interface), SCADA (Supervisory Control and Data Acquisition), portable or distributed data acquisition, process control, advanced analysis, or other control. In FIG. 2B, the computer 102 may execute a program that is involved with the automation function performed by the automation system 160. The one or more devices may include a data acquisition board 114 and associated signal conditioning circuitry 124, a PXI instrument 118, a video device 132 and associated image acquisition card 134, a motion control device 136 and associated motion control interface card 138, a fieldbus device 170 and associated fieldbus interface card 172, a PLC (Programmable Logic Controller) 176, a serial instrument 182 and associated serial interface card 184, or a distributed data acquisition system, such as the Fieldpoint system available from National Instruments, as well as a reconfigurable instrument, describe above, among other types of devices. As mentioned above, various examples of reconfigurable instruments or measurement devices are described below with reference to FIGS. 4A-4D. The DAQ card 114, the PXI chassis 118, the video device 132, and the image acquisition card 136 may be connected to the computer 102 as described above. The serial instrument 182 may be coupled to the computer 102 through a serial interface card 184, or through a serial port, such as an RS-232 port, provided by the computer 102. The PLC 176 may couple to the computer 102 through a serial port, Ethernet port, or a proprietary interface. The fieldbus interface card 172 may be comprised in the computer 102 and interfaces through a fieldbus network to one or more fieldbus devices. Each of the DAQ card 114, the serial card 184, the fieldbus card 172, the image acquisition card 134, and the motion control card 138 are typically plugged in to an I/O slot in the computer 102 as described above. However, these cards 114, 184, 172, 134, and 138 are shown external to computer 102 for illustrative purposes. In typical industrial automation systems a device will not be present of each interface type, and in fact many systems may only have one or more devices of a single interface type, such as only PLCs. The devices are coupled to the device or process 150. FIG. 2C illustrates one embodiment of a measurement system in which the computer system 102 couples to an instrumentation card or measurement device 143. In one embodiment, the measurement device 143 may be programmed or configured to operate as any of a variety of measurement devices or instruments. As described above, the term "measurement device" or "reconfigurable instrument" may refer to a device with a processor, e.g., a CPU, coupled to a memory, which is operable to store and execute one or more software programs to perform a measurement task. By executing different measurement application programs, the device may operate as a variety of different measurement devices. The term "measurement device" or "reconfigurable instrument" may also refer to a device which comprises a programmable hardware element (also called reconfigurable hardware), such as a Field Programmable Gate Array (FPGA), which may be (re)programmed with a hardware configuration program, such as a bit file generated from a netlist or hardware description, to function as any of a variety of measurement devices. A measurement device or reconfigurable instrument may also refer to a device which includes combinations of one or more processors, one or more programmable hardware elements, or various combinations, such as multiple FPGAs, multiple CPU/memory elements, and/or combinations of both FPGA and CPU/memory elements. As FIG. 2C also shows, the instrumentation card 143 may be operable to couple to a Unit Under Test (UUT) 130. Thus, the computer system 102 and the instrumentation card 143 may compose a measurement system which is operable to measure one or more attributes of the UUT to analyze or characterize the UUT. For illustration purposes, the instrumentation card 143 is shown outside the computer 102. However, the instrumentation card 143 may be located within the chassis of the computer 102. For example, one or more instrumentation cards 143 may be coupled to the computer 102 by one or more I/O slots (not shown) provided by the computer 102 and to the UUT 130 (and/or to receive field signals) through one or more sensors or transducers (also not shown). The computer 102 may connect through the one or more instrumentation cards 143 to analyze, measure or control a unit under test (UUT) or process under test 130. In another embodiment, one or more instrumentation cards 143 may be comprised in a separate chassis and coupled to the computer 102. For example, the one or more instrumentation cards 143 may be comprised in a PXI chassis, a VXI chassis or other similar form factor. The computer 102 may also be comprised in a PXI chassis or VXI chassis. The system 100 may be used in a data acquisition and control application, in a test and/or measurement application, an automation application, a process control application, a man-machine interface application, or a simulation application, including a hardware-in-the-loop simulation application or a rapid control prototyping application, among others. The computer system 102 and/or one or more of the instruments or devices (e.g., reconfigurable instruments) may include a memory medium (or memory mediums) on which data and software according to the present invention may be stored. The client computer system memory medium may store (for execution by the CPU) a web browser for accessing other computers on the Internet, and configuration information and/or programs received from a server computer system 103, as well as other types of software. The client computer system memory medium may store a configuration program. An exemplary configuration program for measurement applications is Measurement & Automation Explorer (MAX) from National Instruments Corporation. The server computer system 103 may comprise a CPU and a memory medium. The server memory medium may store software (for execution by the CPU) for determining software products (configuration information, software programs, and/or hardware configuration programs) in response to requirement information received from a client computer system, and for providing determined software products to the client computer system. The server memory medium may store web server software for hosting a web site that is accessible by the client computer system. The server memory medium may also store electronic commerce software for conducting electronic commerce with the client computer system (e.g., receiving payment from the client computer system). Either of the client or server memory mediums may store task specification software (e.g., a measurement task specifier) for enabling a user to specify requirements or a specification of a task. Either of the client or server memory mediums may also store a program for generating a configuration diagram that graphically illustrates the measurement system in which the client computer system 102 is a part. The software comprised in the server for determining software products may comprise measurement task specification software including an expert system which may include a plurality of experts. In one embodiment, the measurement task specification software may be operable to receive user input specifying a measurement task and to generate a measurement task specification. The expert system may be operable to analyze the measurement task specification and determine one or more hardware and/or software implementations to perform the specified measurement task. In one embodiment, the server computer system 103 may also store a runtime builder and a plurality of measurement primitives, described below. Additionally, the server memory medium(s) may store various software products produced by or with these software components, such as a measurement task specification, various types of programs, including software programs, e.g., graphical programs, hardware configuration programs (e.g., bit files), configuration information for software and/or hardware, etc. In one embodiment, the server computer system 103 may also generate or include a runtime specification, and a runtime, described in more detail below. More information on an embodiment of the software product determination software may be found in U.S. patent application Ser. No. 10/008,792 titled "Measurement System Software Architecture for Easily Creating High-Performance Measurement Applications," filed Nov. 13, 2001. In some embodiments, the server computer system 103 may comprise a plurality of interconnected server computers. For example, one server computer may be used to interface with client computer systems over the network, such as the computer system 102, while another server computer may be used to store and manage a database. In addition, one server computer may be used to interface with client computer systems over the network (and possibly store programs for downloading to client computer systems), and other servers may also store programs useable for downloading to client computer systems. A separate server may also operate as an e-commerce server for requesting and receiving payment information. The term "memory medium" is intended to include an installation medium, e.g., a CD-ROM, floppy disks 104, or tape device; a computer system memory or random access memory such as DRAM, SRAM, EDO RAM, RRAM, etc.; or a non-volatile memory such as a magnetic media, e.g., a hard drive, or optical storage. The memory medium may comprise other types of memory as well, or combinations thereof. In addition, the memory medium may be located in a first computer in which software programs are stored and/or executed, or may be located in a second different computer which connects to the first computer over a network, such as the Internet. In the latter instance, the second computer provides the program instructions to the first computer for execution. Various embodiments further include receiving or storing instructions and/or data implemented in accordance with the foregoing description upon a carrier medium. Suitable carrier media include a memory medium as described above, as well as signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as networks and/or a wireless link. In one embodiment, the programs and methods as described herein may be designed for measurement systems, including data acquisition/generation, analysis, and/or display; automation systems; simulation systems; systems for controlling, modeling, or simulating instrumentation or industrial automation hardware; and systems for controlling, modeling or simulating systems or devices being designed, prototyped, validated or tested, including hardware-in-the-loop systems and rapid control prototyping systems. However, it is noted that the present invention can be used for a plethora of applications and is not limited to measurement or industrial automation applications. In other words, FIGS. 2A-2C and the embodiments described below are exemplary only, and the programs and methods may be used for any of various purposes and may be stored in and execute on any of various types of systems to perform any of various applications. For example, embodiments of the present invention may be used to purchase or distribute programs for any general purpose application. Thus the methods described herein provide an e-commerce model for selling or distributing programs, such as software programs, in any of various fields, particularly fields that require custom program generation. FIG. 3—Client Computer System Block Diagram FIG. 3 is an exemplary block diagram of the client computer system illustrated in FIGS. 1, 2A, 2B, and 2C. It is noted that any type of computer system configuration or architecture can be used in conjunction with the system and method described herein, as desired, and FIG. 3 illustrates a representative PC embodiment. It is also noted that the computer system may be a general purpose computer system such as illustrated in FIGS. 2A and 2B, a computer implemented on a VXI card installed in a VXI chassis, a computer implemented on a PXI card installed in a PXI chassis, or other types of embodiments. The elements of a computer not necessary to understand the present invention have been omitted for simplicity. The computer 102 includes at least one central processing unit or CPU 106 which is coupled to a memory 108 and a bus controller 109. The CPU 106 may be any of various types, including an x86 processor, e.g., a Pentium class, a PowerPC processor, a CPU from the SPARC family of RISC processors, as well as others. Memory 108 is also coupled to the bus controller 109. The memory 108 may store one or more computer programs or libraries according to one embodiment of the present invention. The memory 108 also stores operating system software, i.e., software for operation of the computer system, as is well known to those skilled in the art. The bus controller 109 (or bus bridge logic) may be coupled to an expansion or input/output bus 110. The expansion bus 110 is preferably the PCI (Peripheral Component Interconnect) expansion bus, although other bus types can be used. The expansion bus 110 may include slots for various devices such as a measurement device or reconfigurable instrument 143, as well as other devices as desired. The computer 102 may further comprise a video display subsystem 180 and hard drive 182 coupled to the expansion bus 170. It is noted that although the measurement device shown is the reconfigurable instrument 143 of FIGS. 2A and 2C, the measurement device 143 could be any of the devices of FIGS. 2A and 2B, or any other measurement device as desired. FIGS. 4A-4D—Block Diagrams of Reconfigurable Instruments FIGS. 4A-4D are block diagrams of various exemplary embodiments of a reconfigurable instrument or reconfigurable measurement device. It is noted that the presented embodiments are for illustration purposes only, and are not intended to limit the type of reconfigurable device used in the present invention. FIG. 4A—Reconfigurable Instrument With FPGA and Processor/Memory FIG. 4A is a block diagram illustrating a device 143A, e.g., an interface card, configured with a programmable hardware element and a processor and memory according to one embodiment. It is noted that FIG. 4A is exemplary only, and the interface card or device 143A may have various architectures or forms, as desired. For example, the device may be internal or external to the computer 102, and may be connected to the computer through a network, such as the Internet. In various embodiments, the device illustrated in FIG. 4A may be one of the DAQ interface cards 142 or 143 shown in either of FIG. 2A or 2C, or may be the image acquisition device 134 shown in FIG. 2A or 2B. However, as noted above, the programmable hardware may be included on any of the various devices shown in FIG. 2A, 2B, or 2C, or on other devices, as desired. Also, the programmable hardware illustrated in FIG. 4A is an FPGA, but the device may include other types of programmable hardware instead or in addition to, such as a Complex Programmable Logic Device (CPLD) or other type of (re)configurable hardware. As shown in FIG. 4A, the device 143A may include an I/O connector 202 which is operable to send/receive signals. In the embodiments of FIGS. 2A, 2B, and 2C, the I/O connector 202 presents analog and/or digital connections for receiving/providing analog or digital signals. The I/O connector 202 may be adapted for coupling to SCXI conditioning logic 124 and 126, or may be adapted to be coupled directly to a unit under test 130 or process or system 160. The device 143A may also include data acquisition (DAQ) logic 204. As shown, the data acquisition logic 204 may comprise analog to digital (A/D) converters, digital to analog (D/A) converters, timer counters (TC) and signal conditioning (SC) logic as shown. The DAQ logic 204 may provide the data acquisition functionality of the DAQ card 143. In one embodiment, the DAQ logic 204 comprises 4 A/D converters, 4 D/A converters, 23 digital I/Os, a RTSI connector, and a TIO. This extra hardware is useful for signal processing and motion control applications. The programmable hardware element or FPGA 206 can access these resources directly, thereby enabling creation of very powerful measurement, DSP and control applications, among others. The device 143A may include a programmable hardware element 206. In one embodiment, the programmable hardware 206 comprises a field programmable gate array (FPGA) such as those available from Xilinx, Altera, etc. The programmable hardware element 206 may be coupled to the DAQ logic 204 and may also be coupled to the local bus interface 208. Thus a program, e.g., a graphical program such as a National Instruments LabVIEW graphical program, or a text program, can be created on the computer 102, or on another computer in a networked system, and at least a portion of the program can be converted into a hardware implementation form (hardware configuration program) for execution in the FPGA 206. The portion of the program converted into a hardware implementation form is preferably a portion which requires fast and/or real-time execution. Note that although only one programmable hardware element (FPGA) 206 is shown, the programmable hardware 206 may include multiple FPGAs (or other programmable hardware elements) as well. In the embodiment of FIG. 4A, the interface card 143A may further include a dedicated on-board processor 212 and memory 214. This enables a portion or all of a program, e.g., a graphical or text program, to be compiled into machine language for storage in the memory 214 and execution by the processor 212. This may be in addition to a portion of the program being converted into a hardware implementation form in the FPGA 206. Thus, in one embodiment, after a program has been created, a portion of the program may be compiled for execution on the embedded processor 212 and executed locally on the interface card 143A via the processor 212 and memory 214, and a second portion of the program may be translated or converted into a hardware configuration program and deployed to the FPGA 206 for hardware implementation. As one example, a first portion of a block diagram of a graphical program (that requires real time or fast execution) may be converted into a hardware executable format and downloaded to the FPGA 206 for hardware implementation, and a second portion of the block diagram (that may not require real time performance) may be stored in the memory 214 as program instructions and executed by the processor 212, in either a compiled or interpreted manner. As another example, a portion or all of the block diagram portion of the graphical program may be converted into a hardware executable format and downloaded to the FPGA 206 for hardware implementation, and a user interface portion (or front panel portion) of the graphical program may be stored in the memory 214 as program instructions and executed by the processor 212, in either a compiled or interpreted manner. Thus the portion of the graphical program which requires the most real time or deterministic performance may be executed directly in hardware for fast operation, and other parts of the block diagram, i.e., the user interface portion, which may not require real time performance, may execute on the processor 212. Where the processor executes the user interface portion, the processor may then send resulting signals to the video subsystem for display of the user interface on the computer display. As shown, the device 143A may further include bus interface logic 216 and a control/data bus 218. In one embodiment, the interface card 143A is a PCI bus-compliant interface card adapted for coupling to the PCI bus of the host computer 102, or adapted for coupling to a PXI (PCI eXtensions for Instrumentation) bus. The bus interface logic 216 and the control/data bus 218 thus present a PCI or PXI interface. The device 143A may also include local bus interface logic 208. In one embodiment, the local bus interface logic 208 may present a RTSI (Real Time System Integration) bus for routing timing and trigger signals between the interface card 143A and one or more other devices or cards. In one embodiment, the device 143A also includes a non-volatile memory 288 coupled to the programmable hardware element 206. The non-volatile memory 288 may be operable to store software programs that are to be executed by the processor and memory 212 and 214. The non-volatile memory 288 may also be operable to store a hardware configuration program (or hardware description) received from the host computer system to enable configuration or deployment of the hardware configuration program in the programmable hardware element 206. FIG. 4B—Reconfigurable Instrument with FPGA In the embodiment of FIG. 4B, the processor 212 and memory 214 are not included on the device 143B. Thus the device 143B includes a programmable hardware element, but does not include a processor or memory. Thus a task specification or program (or program portion) may be converted into a hardware configuration program (such as via a netlist) and uploaded to the FPGA 206. Thus in the embodiment of FIG. 4B, any supervisory control portion of the task or program which is necessary or desired to execute on a programmable processor in software may be executed by the host CPU in the computer system 102, and not executed locally by a processor on the device 143B. In one embodiment, the device 143B may include a non-volatile memory (not shown) coupled to the programmable hardware element 206. As described above, the non-volatile memory may be operable to store the hardware configuration program received from the host computer system for deployment to the programmable hardware element 206, e.g., prior to or during booting of the computer system 102. FIG. 4C—Reconfigurable Instrument with Processor and Memory In the embodiment of FIG. 4C, the processor 212 and the memory 214 are included on the device 143C, but the FPGA 206 is not included. Thus, in the embodiment of FIG. 4C, a portion of a program, e.g., a portion of a block diagram of a graphical program, may be stored in the memory 214 as program instructions and executed by the processor 212, in either a compiled or interpreted manner. As one example, the memory 214 may store a real time operating system for executing programs. The memory 214 may also store a graphical program execution engine for executing graphical programs. Thus, as one example, a measurement program that may require real time performance may be stored in the memory 214 as program instructions and executed by the processor 212, under the control of a RTOS, to perform a particular measurement task. In this manner, the device 143C may operate as any of a number of measurement instruments, albeit with performance somewhat below what may be possible with an FPGA or other programmable hardware. FIG. 4D—Smart Sensor with FPGA and Processor/Memory FIG. 4D illustrates a block diagram of a smart sensor 190. As shown, the smart sensor 190 may include a programmable hardware element (programmable or reconfigurable hardware) 206 according to an embodiment of the present invention, e.g., an FPGA. The smart sensor 190 may also include a processor 212 and memory 214. The programmable hardware element 206 in the smart sensor 190 may be configured with a hardware configuration program that implements a measurement function, e.g., an image processing function. The smart sensor 190 may also comprise a sensor 282 coupled to the programmable hardware element 206. The smart sensor 190 may also include a memory (a memory medium) 214 coupled to the sensor that stores acquired data, e.g., an acquired image. The memory 214 may be designed to store a portion of an image, a whole image, or two or more images. The memory 214 may include a memory controller (not shown). If the smart sensor 190 includes an analog sensor, the smart sensor 190 may further include analog to digital (A/D) logic (not shown) for converting analog signals into digital signals, e.g., image signals into a digital image, for storage in the memory. The smart sensor 190 may also optionally include timer/counter logic 286 that may perform timing/counting operations, e.g., during operation of the programmable hardware element. The smart sensor 190 may also optionally include a non-volatile memory 288 which may be operable to store one or more programs, e.g., software programs or hardware configuration programs, received from the host computer system. As noted above, the smart sensor 190 may include a processor 212 (or multiple processors 212) coupled to memory 214 and the sensor 282. As described above with reference to FIG. 4A, the processor 212 may be operable to execute a portion or all of a program that implements a measurement function. For example, the processor 212 may execute a program (which may require real time performance) to interface with the sensor 282 and/or control smart sensor functionality. In one embodiment, the smart sensor 190 may not include the processor 212, but rather may only include the FPGA 206 (or multiple FPGAs) as the functional unit. In another embodiment, the smart sensor 190 may not include the FPGA 206, but may use just the one or more processors 212 for on-board processing. In other embodiments, the smart sensor 190 may include various combinations of both processors and FPGAs to perform smart sensor operations. In one embodiment, the sensor 282 may comprise a camera, and the smart sensor 190 may comprise a smart camera. The camera may be digital or analog, and may be operable to generate any of a variety of images, including Infra-Red (IR), visible spectrum, Ultra-Violet (UV), or any other type of image. FIGS. 5-6C—Method for Configuring a Measurement System FIG. 5 is a flowchart diagram illustrating one embodiment of a method for configuring a measurement system to perform a specified measurement task. FIGS. 6A-6C are flowcharts which illustrate examples of the method of FIG. 5. FIGS. 5 and 6A-6C are discussed together below. It is noted that the flowcharts of FIG. 5 and FIGS. 6A-6C are exemplary only. Further, various steps in the flowcharts of FIG. 5 and FIGS. 6A-6C may occur concurrently or in a different order than that shown, or may not be performed, as desired. Also, various additional steps may be performed as desired. The various methods described below include scenarios where the user has a computer system ("client computer system") which can interface to a network (e.g., the Internet) to access a configuration server. The user may desire to obtain: 1) configuration data or programs for the client computer system, 2) configuration data or programs for a measurement device coupled directly to or comprised in the client computer system (e.g., any of the devices shown in FIGS. 2A-2C); and/or 3) configuration data or programs for a measurement device that is coupled to a network (e.g., the Internet), where the measurement device is not directly coupled to the client computer system, but rather may be a remote measurement device. In examples 2 and 3 above, the user may desire to configure a measurement device, such as a smart sensor, expansion card, etc., which does not have its own display capabilities. In example 3 above, the user may desire to configure a measurement device that is in a different location, such as a smart sensor or other embedded device, e.g., on a factory floor. Thus, in example 3, the user may provide a network location, e.g., an IP address, of the measurement device being configured. Thus, the user may be required to use a separate computer system (the "client computer system") which has a display in order to implement the method described herein and configure a measurement device that does not inherently include display capabilities. FIG. 5—Configuring a Measurement System for a Measurement Task FIG. 5 is a flowchart diagram illustrating one embodiment of a method for configuring a measurement system for a measurement task. Step 502 As shown, in step 502 a measurement system server 103 may be accessed, for example by a client computer system 102 over a network 104, such as the Internet. In one embodiment, the client computer system 102 may access the server 103 via a web browser, such as Netscape Navigator or Microsoft's Internet Explorer. In other embodiments, various other software programs may be used to access the server 103. In one embodiment, the server 103 may host a vendor's web site through which the client computer system 102 and/or the user may interface with the server 103. In one embodiment, the access of the server 103 may be initiated by a user. In other words, a user may launch a web browser on the client system 102 to access the vendor's web site to purchase a customizable measurement product. In another embodiment, the access may be initiated programmatically by software executing on the client computer 102. Step 504 In step 504 information on a desired measurement task to be performed by the measurement system (referred to as requirements) may be provided to the client computer system 102. In step 504 the client computer 102 may receive user input indicating the one or more requirements and may then provide this user input over a network to the server 103 in step 506. As used herein, the term "requirements" refers to any of various types of information describing or specifying a task, such as a measurement task. For example, the term "requirements" may include a specification of necessary hardware devices for performing the task. In one embodiment, in step 504 the client computer system 102 may display a graphical user interface (GUI) on its display. The user of the client computer system 102 may then provide input to the GUI indicating the one or more requirements for the measurement task. The GUI may comprise a plurality of panels which guide a user of the client computer system 102 in providing the one or more requirements for the measurement task. The GUI may also comprise menus, dialog boxes, text entry fields and/or other similar graphical user interface elements. The GUI may be displayed by software executing on the client computer system 102. Alternatively, the server 103 may provide a graphical user interface (GUI) to the client computer system over the network, wherein the client computer system 102 displays the received GUI from the server. In one embodiment, the user may invoke a measurement task specifier, e.g., running on either the client computer system 102 or the server 103, to specify or configure the desired measurement task, thereby producing a measurement task specification. The measurement task specifier may include a graphical user interface (GUI) which enables the user to easily and simply specify or configure a desired measurement task. This may involve selecting various parameters of the task such as the type of measurement being performed using voltage, current, desired signal analysis, etc. and other measurement settings and desired operation. In one embodiment, the measurement task specifier may comprise a measurement task assistant. In other words, the measurement task specifier may be a software program which leads the user through a measurement task specification process, thereby generating the measurement task specification. In another embodiment, the measurement task specifier may comprise a measurement task configurator. The measurement task configurator may be a software program invocable by the user under a development environment, such as National Instruments' LabVIEW environment, Measurement Studio programming development environment, or any other development environment. In yet another embodiment, the measurement task specifier may be an API through which the user makes calls to generate the task specification. The measurement task specifier may thus generate the measurement task specification in response to user input. For example, in the case that the measurement task specifier is invoked by the user from the LabVIEW graphical development environment, the user may specify or configure a measurement task by placing or "dropping" nodes or icons on a graphical diagram and connecting the nodes via virtual "wires" to generate a graphical diagram or model of the measurement task. The graphical development environment program (e.g., LabVIEW) may generate software objects or data structures corresponding to the components of the graphical diagram which specify the measurement task. These data structures may comprise the measurement task specification. As another example, consider the case where the measurement task specifier is an API in a text-based development environment, such as Microsoft Corporation's Visual C++ development environment. In this embodiment, the user may make API function calls in a C++ application program to specify the various attributes or aspects of the desired measurement task, such as measurement type (voltage, current, pressure, etc.), timing or sampling parameters, or other measurement task specification information. The executed functions may produce corresponding data structures which contain specification information for the measurement task. For one embodiment of a measurement task specifier, please see co-pending U.S. patent application Ser. No. 60/301,785 titled "Measurement System Software Architecture for Easily Creating High-Performance Measurement Applications," filed Jun. 29, 2001, which was incorporated by reference above. It is noted that other means of communicating the one or more requirements to the server 103 are also contemplated, including FAX, email, telephone, and speech recognition, among others. | ||||||
