Software project management

Measurements expert system and method for generating high-performance measurements software drivers

6944606

Abstract

A measurements expert system and method for generating high-performance measurements software drivers. The measurements expert system is able to interpret a customer's measurement task specification (MTS) specifying a measurement task, explore possible solution paths, and generate a solution, e.g., a run-time specification (RTS), optimized for the customer's measurement system. The expert system includes programs for analyzing and validating a received MTS, and a plurality of measurements experts which are operable to analyze all or part of the MTS and populate complete or partial RTSs. The partial RTSs are iteratively populated by other experts to form complete RTSs. Competing RTSs may be assessed and a final RTS selected based upon user preferences. The final RTS is useable to configure one or more measurement devices according to the RTS, and to generate a run-time which is executable to perform the specified measurement task using the one or more measurement devices.


Claims

1. A memory medium comprising program instructions implementing an expert system, wherein the expert system is operable to perform:

receiving a measurement task specification, wherein the measurement task specification specifies a measurement task;

analyzing the measurement task specification;

populating one or more candidate run-time specifications;

calculating one or more metrics for each of the populated candidate run-time specifications; and

selecting one of the populated candidate run-time specifications based on the calculated metrics to produce a run-time specification, wherein the selected populated candidate run-time specification comprises at least a portion of said run-time specification;

wherein the run-time specification is useable to:

configure one or more measurement devices according to the run-time specification; and

generate a run-time, wherein said run-time is executable to perform the measurement task.

2. The memory medium of claim 1,

wherein said expert system comprises a plurality of experts; and

wherein, in said populating the one or more candidate run-time specifications, the expert system is operable to select and invoke one or more of the plurality of experts to analyze the measurement task specification and populate the one or more candidate run-time specifications.

3. The memory medium of claim 2, wherein, in response to said invocation, each of the one or more experts is operable to:

analyze the measurement task specification;

populate at least one of the one or more candidate run-time specifications, thereby producing at least one respective populated candidate run-time specification, wherein each respective populated candidate run-time specification comprises one of a partial or complete solution for the measurement task; and

for each respective populated candidate run-time specification comprising a partial solution, generate a respective new measurement task specification comprising an unsolved portion of the measurement task specification.

4. The memory medium of claim 2, wherein each of said one or more experts is operable to:

analyze the measurement task specification; and

if said analysis indicates that the expert is not operable to populate at least a portion of at least one of the one or more candidate run-time specifications, indicate to the expert system that the expert did not populate the one or more candidate run-time specifications for the measurement task specification.

5. The memory medium of claim 2, wherein each of said one or more experts is operable to:

analyze the measurement task specification; and

if said analysis indicates that the expert is operable to populate at least one of the one or more candidate run-time specifications,

populate said at least one of the one or more candidate run-time specifications; and

communicate said at least one of the one or more populated candidate run-time specifications to the expert system.

6. The memory medium of claim 2, wherein each of said one or more experts is operable to:

analyze the measurement task specification; and

if said analysis indicates that the expert is operable to populate only a first portion of at least one of the one or more candidate run-time specifications corresponding to a first portion of the measurement task specification,

populate the first portion of said at least one of the one or more candidate run-time specifications;

communicate the first portion of said at least one of the one or more candidate run-time specifications to the expert system; and

submit a second portion of the measurement task specification to the expert system as a new, second measurement task specification, for which a respective candidate run-time specification portion was not populated.

7. The memory medium of claim 6, wherein the expert system is further operable to:

receive said second measurement task specification;

analyze the second measurement task specification;

select and invoke one or more of the plurality of experts to analyze the second measurement task specification and populate one or more second candidate run-time specifications;

calculate one or more metrics for each of the populated second candidate run-time specifications; and

select one of the populated second candidate run-time specifications based on the calculated metrics;

wherein the selected populated second candidate run-time specification comprises at least a second portion of said run-time specification of the measurement task.

8. The memory medium of claim 7, wherein, in response to said invocation, each of the one or more experts is operable to:

analyze the second measurement task specification;

populate at least one of the one or more second candidate run-time specifications, thereby producing at least one respective populated second candidate run-time specification, wherein each respective populated second candidate run-time specification comprises a partial or complete solution for the measurement task; and

for each respective populated second candidate run-time specification comprising a partial solution, generate a respective new third measurement task specification comprising an unsolved portion of the second measurement task specification.

9. The memory medium of claim 8, wherein each said second portion of the measurement task specification comprises an unsolved measurement sub-task specification, wherein the expert system is further operable to perform an iterative process comprising:

receiving unsolved measurement sub-task specifications;

analyzing each unsolved measurement sub-task specification;

selecting and invoking one or more other different experts of the plurality of experts to analyze each unsolved measurement sub-task specification and populate one or more respective candidate run-time specifications;

calculating one or more metrics for each of the populated respective candidate run-time specifications; and

select one of the populated respective candidate run-time specifications based on the calculated metrics;

wherein the selected populated respective candidate run-time specification comprises at least a portion of said run-time specification of the measurement task; and

wherein said iterative process is performed until either a complete run-time specification is populated, or the expert system determines that population of the complete run-time specification is not possible.

10. The memory medium of claim 9, wherein, in response to said invocation, each of the one or more experts is operable to:

analyze at least one of the unsolved measurement sub-task specifications;

populate at least one of the one or more respective candidate run-time specifications, thereby producing at least one populated respective candidate run-time specification, wherein each populated respective candidate run-time specification comprises a partial or complete solution for said at least one of the unsolved measurement sub-task specifications; and

for each populated respective candidate run-time specification comprising a partial solution, generate a new, fourth respective measurement task specification, wherein the new, fourth respective measurement task specification comprises an unsolved portion of the unsolved measurement sub-task specification.

11. The memory medium of claim 2,

wherein said memory medium is operable to store an expert registry, wherein said expert registry comprises information correlating each expert with one or more types of respective measurement tasks; and

wherein said selecting one or more of the plurality of experts is performed based on the expert registry.

12. The memory medium of claim 1,

wherein the memory medium is comprised in a computer-based measurement system; and

wherein the computer-based measurement system includes the one or more measurement devices, wherein the configured one or more measurement devices are operable to respectively perform portions of the measurement task.

13. The memory medium of claim 12, wherein the memory medium contains further program instructions which are executable to:

configure the one or more measurement devices according to the run-time specification; and

generate a run-time, wherein said run-time is executable to perform the measurement task using the configured one or more measurement devices.

14. The memory medium of claim 1, wherein the expert system is further operable to validate the measurement task specification.

15. The memory medium of claim 1, wherein the measurement task comprises a plurality of measurement sub-tasks.

16. The memory medium of claim 1, wherein the measurement task comprises a complex measurement operation using a plurality of measurement devices.

17. The memory medium of claim 1, wherein at least one of the one or more measurement devices comprises a hardware measurement device.

18. The memory medium of claim 1, wherein at least one of the one or more measurement devices comprises a virtual measurement device.

19. The memory medium of claim 1, wherein the one or more metrics are specified by a user.

20. A method for performing a measurement task, the method comprising:

receiving a measurement task specification specifying a measurement task;

analyzing the measurement task specification, and generating one or more candidate run-time specifications for the measurement task in response to said analyzing;

calculating one or more metrics for each of the one or more candidate run-time specifications; and

selecting one of the one or more candidate run-time specifications based on the calculated metrics;

wherein the selected candidate run-time specification is useable to:

configure one or more measurement devices according to the selected run-time specification; and

generate a run-time, wherein said run-time is executable to perform the measurement task.

21. The method of claim 20, further comprising:

reserving one or more resources according to the selected run-time specification after said analyzing the selected run-time specification.

22. The method of claim 20, further comprising:

validating the measurement task specification in response to said analyzing the measurement task specification.

23. The method of claim 20, further comprising:

storing one or more of the measurement task specification, the selected run-time specification, and configuration information for the one or more measurement devices.

24. The method of claim 20, further comprising:

executing said run-time to perform the measurement task.

25. The method of claim 20, wherein said analyzing the measurement task specification and generating one or more candidate run-time specifications for the measurement task comprises an expert system performing:

analyzing the measurement task specification;

validating the measurement task specification; and

selecting and invoking one or more of a plurality of experts to analyze the measurement task specification and populate one or more candidate run-time specifications.

26. The memory medium of claim 25, further comprising each of the one or more experts performing:

analyzing the measurement task specification;

populating at least one of the one or more candidate run-time specifications, thereby producing at least one respective populated candidate run-time specification, wherein each respective populated candidate run-time specification comprises a partial or complete solution for the measurement task; and

for each respective populated candidate run-time specification comprising a partial solution, generate a respective new measurement task specification comprising an unsolved portion of the measurement task specification.

27. The method of claim 25, further comprising each of the one or more experts performing:

analyzing the measurement task specification; and

if said analyzing indicates that the expert is not operable to populate at least a portion of at least one of the one or more candidate run-time specifications, indicating to the expert system that the expert did not populate the one or more candidate run-time specifications for the measurement task specification.

28. The method of claim 25, further comprising each of the one or more experts performing:

analyzing the measurement task specification; and

if said analyzing indicates that the expert is operable to populate at least one of the one or more candidate run-time specifications,

populating said at least one of the one or more candidate run-time specifications; and

communicating said at least one of the one or more candidate run-time specifications to the expert system.

29. The method of claim 25, further comprising each of the one or more experts performing:

analyzing the measurement task specification; and

if said analyzing indicates that the expert is operable to populate only a first portion of at least one of the one or more candidate run-time specifications corresponding to a first portion of the measurement task specification,

populating the first portion of said at least one of the one or more candidate run-time specifications;

communicating the first portion of said at least one of the one or more candidate run-time specifications to the expert system; and

submitting a second portion of the measurement task specification to the expert system as a new, second measurement task specification, for which a respective candidate run-time specification portion was not populated.

30. The method of claim 29, further comprising the expert system performing:

receiving said second measurement task specification;

analyzing the second measurement task specification;

selecting and invoking one or more of the plurality of experts to analyze the second measurement task specification and populate one or more second candidate run-time specifications;

calculating one or more metrics for each of the populated second candidate run-time specifications; and

selecting one of the populated candidate run-time specifications based on the calculated metrics;

wherein the selected populated candidate run-time specification comprises at least a portion of said generated run-time specification of the measurement task.

31. The method of claim 30, further comprising each of the one or more experts, in response to said invocation, performing:

analyzing the second measurement task specification;

populating at least one of the one or more second candidate run-time specifications, thereby producing at least one respective populated second candidate run-time specification, wherein each respective populated second candidate run-time specification comprises a partial or complete solution for the measurement task; and

for each respective populated second candidate run-time specification comprising a partial solution, generating a respective new, third measurement task specification comprising an unsolved portion of the second measurement task specification.

32. The method of claim 31, wherein each said second portion of the respective measurement task specification comprises an unsolved measurement sub-task specification, the method further comprising the expert system performing an iterative process comprising:

receiving unsolved measurement sub-task specifications;

analyzing each unsolved measurement sub-task specification;

selecting and invoking one or more other different experts of the plurality of experts to analyze each unsolved measurement sub-task specification and populate one or more respective candidate run-time specifications;

calculating one or more metrics for each of the populated respective candidate run-time specifications; and

select one of the populated respective candidate run-time specifications based on the calculated metrics;

wherein the selected populated respective candidate run-time specification comprises at least a portion of said generated run-time specification of the measurement task;

wherein said iterative process is performed until either a complete run-time specification is populated, or the expert system determines that population of the complete run-time specification is not possible.

33. The method of claim 32, further comprising each of the one or more experts, in response to said invocation, performing:

analyzing at least one of the unsolved measurement sub-task specifications;

populating at least one of the one or more respective candidate run-time specifications, thereby producing at least one populated respective candidate run-time specification, wherein each populated respective candidate run-time specification comprises a partial or complete solution for said at least one of the unsolved measurement sub-task specifications; and

for each populated respective candidate run-time specification comprising a partial solution, generating a new, fourth respective measurement task specification, wherein the new, fourth respective measurement task specification comprises an unsolved portion of the unsolved measurement sub-task specification.

34. The method of claim 25, further comprising:

storing an expert registry, wherein said expert registry comprises information correlating each expert with one or more respective types of measurement tasks; and

wherein said selecting one or more of the plurality of experts is performed based on the expert registry.

35. The method of claim 20, wherein the measurement task comprises a plurality of measurement sub-tasks.

36. The method of claim 20, wherein the measurement task comprises a complex measurement operation using a plurality of measurement devices.

37. The method of claim 20, wherein at least one of the one or more measurement devices comprises a measurement hardware device.

38. The method of claim 20, wherein at least one of the one or more measurement devices comprises a virtual measurement device.

39. The method of claim 20, wherein the one or more metrics are specified by a user.

40. An expert system for generating a measurement program specification for a measurement task, comprising:

a first software program operable to analyze a received measurement task specification specifying the measurement task;

a validation software program operable to validate the measurement task specification; and

a plurality of experts operable to generate the measurement program specification for the measurement task;

wherein the measurement program specification is useable to perform the measurement task.

41. The expert system of claim 40,

wherein the measurement program specification comprises a run-time specification which is executable to perform the measurement task; and

wherein the expert system is operable to:

select and invoke one or more of the plurality of experts to analyze the measurement task specification and populate one or more candidate run-time specifications;

calculate one or more metrics for each of the populated candidate run-time specifications; and

select one of the populated candidate run-time specifications based on the calculated metrics;

wherein the selected populated candidate run-time specification comprises at least a portion of said run-time specification.

42. The expert system of claim 41, wherein, in response to said invocation, each of the one or more experts is operable to:

analyze the measurement task specification;

populate at least one of the one or more candidate run-time specifications, thereby producing at least one respective populated candidate run-time specification, wherein each respective populated candidate run-time specification comprises a partial or complete solution for the measurement task; and

for each respective populated candidate run-time specification comprising a partial solution, generate a respective new measurement task specification comprising an unsolved portion of the measurement task specification.

43. The expert system of claim 42, wherein each of said one or more experts is operable to:

analyze the measurement task specification; and

if said analysis indicates that the expert is not operable to populate at least a portion of at least one of the one or more candidate run-time specifications, indicate to the expert system that the expert did not populate the one or more candidate run-time specifications for the measurement task specification.

44. The expert system of claim 42, wherein each of said one or more experts is operable to:

analyze the measurement task specification; and

if said analysis indicates that the expert is operable to populate at least one of the one or more candidate run-time specifications,

populate said at least one of the one or more candidate run-time specifications; and

communicate said at least one of the one or more populated candidate run-time specifications to the expert system.

45. The expert system of claim 42, wherein each of said one or more experts is operable to:

analyze the measurement task specification; and

if said analysis indicates that the expert is operable to populate only a first portion of the respective candidate run-time specification corresponding to a first portion of the measurement task specification,

populate the first portion of the respective candidate run-time specification;

communicate the first portion of the respective candidate run-time specification to the expert system; and

submit a second portion of the respective measurement task specification to the expert system as a new, second measurement task specification, for which a respective candidate run-time specification portion was not populated.

46. The expert system of claim 45, wherein the expert system is further operable to:

receive said second measurement task specification;

analyze the second measurement task specification;

select and invoke one or more of the plurality of experts to analyze the second measurement task specification and populate one or more second candidate run-time specifications;

calculate one or more metrics for each of the populated second candidate run-time specifications; and

select one of the populated candidate run-time specifications based on the calculated metrics;

wherein the selected populated candidate run-time specification comprises at least a portion of said generated run-time specification of the measurement task.

47. The expert system of claim 46, wherein, in response to said invocation, each of the one or more experts is operable to:

analyze the second measurement task specification;

populate at least one of the one or more second candidate run-time specifications, thereby producing at least one respective populated second candidate run-time specification, wherein each respective populated second candidate run-time specification comprises a partial or complete solution for the measurement task; and

for each respective populated second candidate run-time specification comprising a partial solution, generate a respective new, third measurement task specification comprising an unsolved portion of the second measurement task specification.

48. The expert system of claim 47, wherein each said second portion of the respective measurement task specification comprises an unsolved measurement sub-task specification, wherein the expert system is further operable to perform an iterative process comprising:

receiving unsolved measurement sub-task specifications;

analyzing each unsolved measurement sub-task specification;

selecting and invoking one or more other different experts of the plurality of experts to analyze each unsolved measurement sub-task specification and populate one or more respective candidate run-time specifications;

calculating one or more metrics for each of the populated respective candidate run-time specifications; and

select one of the populated respective candidate run-time specifications based on the calculated metrics;

wherein the selected populated respective candidate run-time specification comprises at least a portion of said run-time specification of the measurement task;

wherein said iterative process is performed until either a complete run-time specification is populated, or the expert system determines that population of the complete run-time specification is not possible.

49. The expert system of claim 48, wherein, in response to said invocation, each of the one or more experts is operable to:

analyze at least one of the unsolved measurement sub-task specifications;

populate at least one of the one or more respective candidate run-time specifications, thereby producing at least one populated respective candidate run-time specification, wherein each populated respective candidate run-time specification comprises a partial or complete solution for said at least one of the unsolved measurement sub-task specifications; and

for each populated respective candidate run-time specification comprising a partial solution, generate a new, fourth respective measurement task specification, wherein the new respective measurement task specification comprises an unsolved portion of the unsolved measurement sub-task specification.

50. The expert system of claim 41, further comprising:

a storage system which is operable to store an expert registry, wherein said expert registry comprises information correlating each expert with one or more respective measurement tasks; and

wherein said selecting one or more of the plurality of experts is performed based on the expert registry.

51. The expert system of claim 50, wherein at least one of the one or more measurement devices comprises a measurement hardware device.

52. The expert system of claim 50, wherein at least one of the one or more measurement devices comprises a virtual measurement device.

53. The expert system of claim 40,

wherein the expert system is comprised in a computer-based measurement system; and

wherein the computer-based measurement system includes one or more measurement devices, wherein the one or more measurement devices are operable to respectively perform portions of the measurement task.


Description

FIELD OF THE INVENTION

The present invention relates to the field of measurement and automation systems, and more particularly to a software architecture for allowing a user to easily create measurement and automation tasks, verify functionality, and easily create application code to implement desired tasks.

DESCRIPTION OF THE RELATED ART

Scientists and engineers often use measurement or automation systems to perform a variety of functions, including measurement of a physical phenomena or unit under test (UUT), test and analysis of physical phenomena, simulation, hardware-in-the-loop testing, process monitoring and control, control of mechanical or electrical machinery, data logging, laboratory research, and analytical chemistry, to name a few examples.

A typical measurement system comprises a computer system with a measurement device or measurement hardware. The measurement device may be or include a computer-based instrument, a data acquisition device or board, a programmable logic device (PLD), a sensor, a smart sensor, an actuator, or other type of device for acquiring or generating data. The measurement device may be a card or board plugged into one of the I/O slots of the computer system, or a card or board plugged into a chassis, or an external device. For example, in a common measurement system configuration, the measurement hardware is coupled to the computer system via other means such as through a VXI (VME extensions for Instrumentation) bus, a PXI (PCI extensions for Instrumentation) bus, a GPIB (General Purpose Interface Bus), a serial port, or parallel port of the computer system. Optionally, the measurement system includes signal conditioning devices which receive the field signals and condition the signals to be acquired.

A measurement system may also typically include transducers, sensors, actuators or other detecting (or generating) means for providing "field" electrical signals representing a process, physical phenomena, equipment being monitored or measured, etc. The field signals are provided to the measurement hardware.

The measurement hardware is configured and controlled by measurement software executing on the computer system. The measurement software for configuring and controlling the measurement system typically comprises two portions: the device interface or driver-level software and the application software, or the application. The driver-level software serves to interface the measurement hardware to the application. The driver-level software may be supplied by the manufacturer of the measurement hardware or by some other third party software vendor. An example of measurement or DAQ driver-level software is NI-DAQ from National Instruments Corporation. The application or client is typically developed by the user of the measurement system and is tailored to the particular function which the user intends the measurement system to perform. The measurement hardware manufacturer or third party software vendor sometimes supplies the application software for certain applications which are common, generic or straightforward.

Some comprehensive and complex measurement system architectures, for example, National Instruments' NI-DAQ 6.9, have various drawbacks which limit the effectiveness and ease with which a measurement task may be specified, designed, and implemented. These include performance, ease of use, and engineering efficiencies issues. One performance related inadequacy of some current architectures is a lack of a state model for the system. The absence of a state model results in resources being reserved, programmed, and unreserved continuously, because no component or process is aware of what may have already been done. Ease-of-use issues may range from interface complexities to functionality inconsistencies. For example, some current architectures distinguish between different types of measurement devices, requiring different APIs (Application Programming Interfaces) for each. Thus, a user is required to learn multiple APIs. The use of multiple APIs often results in inconsistent support of key features across product lines, and greatly increases the effort and expense of software maintenance, feature extensions, and product additions.

Another drawback of some current measurement system architectures is that complex measurement tasks involving multiple devices require that each device be programmed separately, and that synchronization signals be explicitly routed. Users must typically specify and configure measurement tasks at an advanced level, which is time consuming, expensive, and prone to error.

Additionally, some current architectures generally do not allow more than one execution thread to be active at a time, which can substantially limit performance of the system.

Also, some current measurement system architectures are largely monolithic, resulting in large disk and run-time footprints, thereby limiting the types of devices suitable for storing and executing the measurement system. For example, large monolithic systems are not typically deployable in PDAs (personal digital assistants) or as embedded systems. Furthermore, monolithic systems often result in software being installed that a customer does not need.

Finally, many current measurement systems require that the user perform a significant amount of programming, either in a text-based programming language such as LabWindows or Visual Basic, or in a graphical programming language such as LabVIEW. It would be desirable for a user to be able to more easily create measurement solutions with reduced programming requirements.

Therefore, it would be desirable to provide new systems and methods for specifying and performing measurement tasks.

SUMMARY OF THE INVENTION

Various embodiments of a system and method for creating measurement applications are presented. The system may include a computer system and may also include one or more measurement devices. The one or more measurement devices may comprise a measurement hardware device, a virtual measurement device or other type of device. In one embodiment, the system may further include a device and resource configuration tool which may be operable to receive user input to set system configuration parameters for the one or more measurement devices.

The system may include a measurement task specifier which may be operable to generate a measurement task specification for a measurement task in response to user input. The system may also include an expert system which may be operable to analyze the generated measurement task specification, validate the measurement task specification, and generate a run-time specification for the measurement task. The system may further include a run-time builder that is operable to analyze the run-time specification, configure one or more measurement devices according to the run-time specification, and generate a run-time, wherein the run-time is executable to perform the measurement task. The system may store a plurality of measurement primitives. Each measurement primitive may comprise a software object and corresponding configuration settings, and each measurement primitive may be operable to implement at least a portion of a measurement task. The run-time builder may generate the run-time using one or more of the measurement primitives. The system may also include a memory medium or storage system which is operable to store one or more of the generated measurement task specification, the generated run-time specification, and configuration information for the one or more measurement devices.

In one embodiment, the measurement task specifier may comprise an Application Programming Interface (API) through which the user may make calls to generate the measurement task specification. The measurement task specifier may include, be implemented in, or accessed through, any of various application programming development environments, such as Visual Basic, Visual C++, Visual Studio .NET, LabWindows CVI or LabVIEW, among others. For example, the measurement task specifier may comprise a graphical program, such as a LabVIEW graphical program. The user may place nodes or icons in a graphical diagram and connect the nodes with virtual "wires" to specify a measurement task. The execution of this graphical diagram may generate the measurement task specification.

In another embodiment, the measurement task specifier may comprise a measurement task wizard, i.e., a software program which leads the user through a measurement task specification process, thereby generating the measurement task specification.

In yet another embodiment, the measurement task specifier may include a measurement task configuration tool. The measurement task configuration tool may be an interactive Graphical User Interface (GUI) program which enables the user to select various parameters of the measurement task, such as the type of measurement being performed using voltage, current, etc., and other measurement settings. The measurement task specifier may be operable

    • 1) to be invoked from a text-based application development environment,
    • 2) to be launched from an application development environment toolbar,
    • 3) to be invoked from an application development environment menu,
    • 4) to be presented as a properties page of an Active X control, and/or
    • 5) to be invoked by double clicking an icon, among other methods of initiation.


  • The measurement task specifier may be operable to generate programming code for a measurement task in response to user input. The programming code for a measurement task may include one or more of C code, C++ code, Visual Basic code, C# code, Java code, graphical code (e.g., LabVIEW code) or any other programming code.

    Expert System Embodiment #1

    In one embodiment, the expert system may comprise a plurality of experts, where the expert system may be operable to create a device expert call tree of one or more experts from the plurality of experts according to a user-specified measurement task configuration, manage the configuration of the measurement task specification, and verify the measurement task specification and compile the measurement task specification into the run-time specification.

    The plurality of experts may include device experts, channel experts, timing experts, reader/writer experts, control experts, and streaming experts. Each class of expert is responsible for managing different aspects of the measurement task specification.

    The expert system may create the device expert call tree of associated experts according to the named channels that comprise the measurement task specification. Named channels may be specified by a user with a measurement task specifier or may be automatically specified by a system configuration tool based on the installed measurement devices. The configuration of these named channels may produce fully qualified channel paths and associated channel measurement specification object (MSO) mementos associated with these named channels.

    In one embodiment, fully qualified channel paths comprise a series of expert configurations corresponding to the complete topography for the particular channel. Each expert configuration may specify a terminal configuration, the expert associated with that terminal configuration, and a reference to the capabilities of that expert.

    In one embodiment, channel MSO mementos are serialized attributes of channel MSOs explicitly configured by a user through a measurement task specifier or by a system configuration tool based on the measurement devices installed in the system. Whenever a channel is added to a measurement task specification, the corresponding channel MSO mementos may be deserialized into the measurement task specification. This allows users to configure default attributes for named channels that span all measurement tasks.

    In one embodiment, the first step in the creation of a collection of associated experts according to the user-specified configuration is the construction of the device expert call tree. The expert system may begin the creation of this device expert call tree when the user initializes a new measurement task by providing a list of named channels. A device expert call tree may contain all the experts that will be used to compile a given measurement task specification into a run-time specification. The structure of the tree may determine the order in which the experts are called, as well as the interactions between the experts. The construction of a device expert call tree may be based on the fully qualified channel paths for each channel in the measurement task. Note that additional device experts, associated with channels that were not originally added to the measurement task, may be added after the construction of the device expert call tree.

    In the preferred embodiment, the expert call tree is constructed in an in-order, top-down approach. In one embodiment, the general algorithm includes walking (traversing) the series of expert configurations for all of the channels simultaneously. At each point, an expert instance may be created for each unique expert identifier at that level in the fully qualified channel path. Note that if the expert identifier associated with the root entry of the fully qualified channel path is not the same for all named channels in the measurement task, than an expert will be inserted at the root of the expert call tree. This expert may then handle the synchronization between multiple measurement devices or multiple sub-systems on a single measurement device.

    After the device expert call tree is built, device experts for each node may be initialized. Initialization information may include the device expert's parent and children in the device expert call tree, a reference to an object that maintains the state of the measurement task, and the hardware capabilities of the device which may be stored in a memory medium, e.g., MXS.

    Each device expert may understand or be associated with a specific set of channel experts designed for that device. Once device experts have been created and initialized, the expert system may create channel experts for each specified named channel. The expert system may create channel experts by passing a fully qualified channel path to the leaf (terminal node in the tree structure) device expert in the call tree corresponding to the specific channel. When a device expert's create channel method is invoked, the device expert may first request that its parent device expert create a channel expert as well. The parent channel expert may be created using a version of the fully qualified channel path with the most derived terminal configuration truncated. This sequence may continue up the device expert call tree until all channel experts for a particular fully qualified channel path have been created. Each channel expert may retain a reference to the corresponding parent channel expert for use when the measurement task is configured.

    After the expert system creates channel experts for each channel, the corresponding channel MSO mementos may be deserialized from named channels which may be stored in MXS. The expert system may then query channel experts for channel MSOs, and apply the channel MSO mementos to them. This allows users to configure default attributes for named channels that span all tasks.

    After the expert system creates the device expert call tree, the user may configure the measurement task specification through the use of a measurement task specifier. The measurement task specifier may rely upon the expert system to manage this configuration of the measurement task specification. The expert system may manage the configuration of the measurement task specification whenever attributes of the measurement task are specified or queried. The specification of the measurement task may occur in any order. The measurement task specification may be modified after the measurement task specification has been verified and compiled. When this occurs, the measurement task specification may be efficiently re-verified and recompiled. Also, the measurement task specification may be modified while the measurement task is executing. When this occurs, the expert system directly and immediately may modify the primitives in the run-time to reflect the modification to the measurement task specification. Configuration of the measurement task specification preferably entails setting various attributes of the MSOs in the measurement task specification.

    Root device experts may contain objects implementing specific timing expert interfaces. The expert system may be able to query for these timing experts through an interface. In one embodiment, this query may be done only from the root of device expert tree, with device experts deferring requests to children experts if they are unable to satisfy them. Timing experts may be queried and configured whenever specific timing or triggering attributes are configured. Measurement task specifiers may be able to use specific timing interfaces to configure these attributes.

    Channel experts may be configured whenever a measurement task specifier executes a set or get operation on a channel MSO. The first time a set or get is specified for a particular channel MSO, the measurement task specifier may query the appropriate leaf channel expert for that MSO. If a particular channel expert is unable to satisfy that query, the request may be deferred to the channel expert's parent. Sets and gets may then be performed directly on the MSO itself. The measurement task specifier may maintain a cache of any MSOs that have been queried or modified, and so subsequent sets and gets may not require querying the channel expert. The MSO cache may also maintain information about whether each MSO was modified or only queried. During the storage of a measurement task, the measurement task specifier may examine this cache and only store those MSOs actually modified by the customer. This strategy may enable a maximum amount of portability for tasks by not serializing MSO attributes which were only queried, i.e., which were not modified.

    The expert system may also verify the measurement task specification and compile the measurement task specification into a run-time specification. The expert system may verify the measurement task specification when, implicitly or explicitly, a measurement task specifier invokes a verify operation for a measurement task. In one embodiment, the verification and compilation of the measurement task specification may consist of three ordered steps, described below.

    In one embodiment, the analyze channels step is the first step of the verification and compilation of the measurement task specification. In a post-order (bottom-up) traversal of the device expert call tree, all device experts may be instructed to analyze the properties of all contained channels. During this step, device experts may query channel MSOs from channel experts, analyze their attributes, and produce attributes of channel MSOs for corresponding parent channel experts.

    In one embodiment, the second step of the verification and compilation of the measurement task specification is the analysis of timing properties. In a pre-order (top-down) traversal of the device expert call tree, all device experts may be instructed to analyze the properties of all contained timing. During this step, device experts may query timing MSOs from timing experts, analyze their attributes, and produce attributes of timing MSOs for corresponding children timing experts.

    The final step of the verification and compilation of the measurement task specification is the compilation into the run-time specification, according to one embodiment. In a pre-order (top-down) traversal of the device expert call tree, some or all of the device experts may be instructed to compile. During this step, device experts may create primitive settings and add them to the run-time specification. Channel MSO attributes or negotiated ranges may also be resolved during this step. Additionally, stream building and signal routing may be executed at this step.

    The bottom-up and top-down traversals of the tree are performed to allow attributes to be propagated through all the experts. Channel attributes generally describe an individual measurement or generation at the bottom leaves of the tree which corresponds to where the user has connected his or her signal to the physical measurement system. Attributes, such as physical range, may be inspected and/or modified by each expert upwards along the channel data path so that each expert can be given derived settings. Timing attributes, on the other hand, generally describe timing for all the measurements in a single task. Attributes, such as rate, may be propagated downwards and derived into the specific settings of multiple devices. These direction generalizations are not strictly true, however. For instance, a scan list MSO can be involved in both the channel and timing analysis steps, acting as a bridge of sorts between the two expert classifications.

    In one embodiment, the measurement system may use streaming experts to compile stream specifications in the task specification into stream primitive settings in the task run-time specification. The term "streaming" refers generally to data transport, e.g., reads and writes, but may also include data processing operations, such as filtering, splitting and combining of signals, and scaling, among others. Streaming experts may collaborate to transfer and process the data between its source(s) and destination(s). Examples of streaming experts may include an environment changer, format changer, linear scaler, splitter, polynomial scaling filter, pattern matching filter, buffer writer, kernel reader proxy and dispatcher, splitting writer, and combining reader, among others. Note that in one embodiment, the components of the class library may be operable to not only move data, but to analyze, transform, split, and/or combine data, as well.

    In one embodiment, a user may modify the measurement task specification incrementally using the task specifier. The expert system may subsequently revalidate the task specification, making incremental changes to the run-time specification. In other words, the expert system may incrementally recompile the modified measurement task specification, thereby updating the run-time specification. Changes to the run-time specification may then be deployed incrementally to reconfigure the run-time. These changes may include adding new primitive settings, modifying existing primitive settings, and removing primitive settings, among others.

    In one embodiment, the measurement system may be operable to reserve one or more resources according to the generated run-time specification. In one embodiment, the generated run-time specification may comprise a specification of the parameters of one or more measurement primitives corresponding to rudimentary measurement operations of the measurement task. The measurement system may then instantiate measurement primitives in the form of software objects which may be used to configure one or more measurement devices when the run-time is executed, according to the run-time specification. This may comprise setting the values of parameters or registers of the measurement devices (hardware and/or software) as appropriate to carry out the specified measurement task. The measurement system may thus generate the run-time by creating instances of the measurement primitives with the specified parameters. The run-time may then be executable to perform the specified measurement task.

    In one embodiment, a language compiler, such as a C++, Java, or LabVIEW compiler, may be integrated into the measurement system. Integrating language compilation capabilities with the measurement task compilation capabilities of the expert system may provide "just in time" (JIT) functionality to the measurement system, thereby increasing the flexibility, as well as the portability of measurement solutions.

    Expert System Embodiment #2

    In another embodiment, the expert system may comprise a plurality of experts, where the expert system may be operable to analyze the generated measurement task specification, and select and invoke one or more experts to generate a solution suitable for the user's measurement system. The selected experts may each analyze the generated measurement task specification and populate a respective candidate run-time specification, thereby producing one or more further populated candidate run-time specifications, where each respective candidate run-time specification comprises a possible partial or complete solution for the measurement task. The expert system may then calculate one or more metrics for each of the populated candidate run-time specifications, and select one of the populated candidate run-time specifications based on the calculated metrics.

    In one embodiment, if the analysis by a respective expert indicates that the expert cannot populate at least a portion of the respective candidate run-time specification, the respective expert indicates to the expert system that it did not populate the candidate run-time specification for the measurement task specification. If the analysis by a respective expert indicates that the expert is operable to populate the respective candidate run-time specification, the expert populates the respective candidate run-time specification, and communicates the respective candidate run-time specification to the expert system. If the analysis by a respective expert indicates that the expert is operable to populate only a first portion of the respective candidate run-time specification corresponding to a first portion of the generated measurement task specification, the expert populates the first portion of the respective candidate run-time specification, communicates the first portion of the respective candidate run-time specification to the expert system, and submits a second portion of the respective measurement task specification to the expert system as a new, second measurement task specification, for which a respective candidate run-time specification portion was not populated.

    The expert system may thus be further operable to receive and analyze the second measurement task specification, in the manner described above. For example, the expert system may be further operable to select and invoke one or more other experts to analyze the second measurement task specification and populate the respective candidate run-time specification, thereby producing one or more further populated candidate run-time specifications, where each respective candidate run-time specification comprises a possible partial or complete solution for the measurement task. The expert system may then calculate one or more metrics for each of the candidate run-time specifications, and select one of the candidate run-time specifications based on the calculated metrics.

    The expert system may be further operable to iteratively perform the above process on unsolved portions of the measurement task (or sub-tasks) until either the entire measurement task has been solved, or until the expert system determines that a solution may not be found subject to the current system resources. The expert system may then operate to select a run-time specification from the candidates based on user specified and/or system-specified metrics.

    In one embodiment, the system may further include a storage system which is operable to store an expert registry. The expert registry may include information correlating each expert with aspects of one or more respective measurement tasks, and selection of the one or more experts may be performed based on the expert registry.

    In one embodiment, the run-time builder may be operable to reserve one or more resources according to the selected run-time specification. In one embodiment, the generated run-time specification may comprise a specification of the parameters of one or more measurement primitives corresponding to rudimentary measurement operations of the measurement task. The run-time builder may then instantiate measurement primitives in the form of software objects which may be used to configure one or more measurement devices when the run-time is executed, according to the run-time specification. This may comprise setting the values of parameters or registers of the measurement devices (hardware and/or software) as appropriate to carry out the specified measurement task. The run-time builder may thus generate the run-time by creating instances of the measurement primitives with the specified parameters. The run-time may then be executable to perform the specified measurement task.

    In one embodiment, the measurement task may comprise a plurality of measurement sub-tasks. In another embodiment, the measurement task may comprise a complex measurement operation using a plurality of measurement devices.

    As noted above, the measurement task specifier may comprise an API or an application programming development environment. For example, the user may begin in a text-based application programming development environment such as Visual Basic, Visual C++, Visual Studio .NET, LabWindows CVI or LabVIEW, among others. The user may enter textual source code that forms the measurement task specification. For example, the user may input function calls that correspond to the measurement task specification being created. As another example, the user may begin in a graphical programming application development environment such as LabVIEW. The user may select and configure one or more graphical nodes or icons and interconnect the nodes to represent the measurement task specification. As another example, the user may begin by using an interactive prototyping environment. The user may select measurement functions in the prototyping environment, where the functions are stored in a script or prototype that represents the measurement task specification. At this point, the measurement task specification (the textual code, the graphical program, or the prototype created by the user) is not a working program.

    The expert system may analyze the measurement task specification, created by executing the source code created by the user, validate the measurement task specification, and generate a run-time specification. The run-time specification may include a data structure comprising parameter specifications for one or more measurement primitives corresponding to rudimentary measurement operations of the measurement task. The run-time specification may then be interpreted by the run-time builder to generate a run-time which is executable to perform the specified measurement task.

    Thus, in various embodiments, the present invention provides systems and method whereby a user may specify a measurement task and generate a corresponding measurement application which may be executed to implement the measurement task using available system resources.

    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:

    FIGS. 1A and 1B illustrate representative instrumentation and process control systems including various I/O interface options;

    FIG. 2 is a block diagram of the computer system of FIGS. 1A and 1B;

    FIG. 3 illustrates one embodiment of a software architecture of a measurement system;

    FIG. 4 illustrates measurement driver program components, according to one embodiment;

    FIG. 5 flowcharts a measurement process, according to one embodiment;

    FIG. 6 illustrates a high level architecture of the system, according to one embodiment;

    FIG. 7A is a block diagram of a system for system configuration and task specification, according to one embodiment;

    FIG. 7B is a block diagram of a system for compiling a task specification to a task run-time specification, according to one embodiment;

    FIG. 7C is a block diagram of a system for building a task run-time from a task run-time specification, according to one embodiment;

    FIG. 7D is a block diagram of a system for executing tasks, according to one embodiment;

    FIG. 8A is a block diagram of packages for system configuration and task specification, according to one embodiment;

    FIG. 8B is a block diagram of packages for compiling a task specification to a task run-time specification, according to one embodiment;

    FIG. 8C is a block diagram of packages for building a task run-time from a task run-time specification, according to one embodiment;

    FIG. 8D is a block diagram of packages for executing a run-time, according to one embodiment;

    FIG. 9 is a state diagram for measurement tasks, according to one embodiment;

    FIG. 10 illustrates a high level measurement task configuration tool architecture, according to one embodiment;

    FIGS. 11-13 illustrate example measurement task configuration tool interface panels, according to one embodiment;

    FIG. 14 is a flow diagram of a run-time specification generation process performed by the expert system, according to one embodiment;

    FIG. 15 is a topography diagram for a data acquisition task, according to one embodiment;

    FIG. 16 is a LabVIEW VI for a data acquisition task, according to one embodiment;

    FIG. 17 is a block diagram of the creation of the device expert call tree, according to one embodiment;

    FIG. 18 is a block diagram of the creation of the channel experts, according to one embodiment;

    FIG. 19 is a block diagram of the deserialization of the channel measurement specification objects (MSOs), according to one embodiment;

    FIG. 20 is a block diagram of the configuration of timing properties of the measurement task, according to one embodiment;

    FIG. 21 is a block diagram of the configuration of channel properties of a channel in the measurement task, according to one embodiment;

    FIG. 22 is a block diagram of the analysis of channel properties of the measurement task, according to one embodiment;

    FIG. 23 is a block diagram of the analysis of timing properties of the measurement task, according to one embodiment;

    FIG. 24A is a block diagram of the compilation of the measurement task specification into a run-time specification, according to one embodiment;

    FIG. 24B is a block diagram of the commit step in the measurement task process, according to one embodiment;

    FIG. 24C is a block diagram of the start step of the measurement task execution, according to one embodiment;

    FIG. 24D is a block diagram of the read step of the measurement task execution, according to one embodiment;

    FIG. 24E is a block diagram of the stop step of the measurement task execution, according to one embodiment;

    FIG. 24F is a block diagram of the uncommits step of the measurement task, according to one embodiment;

    FIG. 25 is a complete block diagram of the various phases of the expert system, according to one embodiment;

    FIG. 26 flowcharts a run-time specification generation process performed by the expert system, according to one embodiment;

    FIG. 27 illustrates a decision tree, according to one embodiment;

    FIG. 28 flowcharts the processing of a measurement problem by the expert system, according to one embodiment;

    FIG. 29 is a flow diagram of a generic expert solution process, according to one embodiment;

    FIG. 30 is a block diagram of a run-time configuration process, according to one embodiment;

    FIG. 31 is a topography diagram for a routing task, according to one embodiment;

    FIG. 32 illustrates solution steps for solving the routing task of FIG. 31, according to one embodiment;

    FIG. 33 is a topography diagram for a synchronization task, according to one embodiment;

    FIG. 34 illustrates solution steps for solving the synchronization task of FIG. 33, according to one embodiment;

    FIG. 35 is a topography diagram for a data acquisition task, according to one embodiment;

    FIG. 36 illustrates solution steps for solving the data acquisition task of FIG. 35, according to one embodiment;

    FIG. 37 is a block diagram of an out-of-the-box configuration process, according to one embodiment;

    FIG. 38 is a block diagram of a point-of-sale configuration process, according to one embodiment;

    FIG. 39A illustrates a VI for simultaneous analog input and digital output with a single-threaded driver, according to the prior art;

    FIG. 39B illustrates a VI for simultaneous analog input and digital output with a multi-threaded driver, according to one embodiment;

    FIG. 40A illustrates a VI for simultaneous triggered buffered AI/AO, according to the prior art;

    FIG. 40B illustrates a VI for simultaneous triggered buffered AI/AO, according to one embodiment;

    FIG. 41A illustrates a VI for sharing a scan clock across two E-Series devices, according to the prior art;

    FIG. 41B illustrates a VI for sharing a scan clock across two E-Series devices, according to one embodiment;

    FIG. 42 illustrates a VI for buffered AI and DI sharing a clock and trigger, according to one embodiment;

    FIG. 43A illustrates a VI for acquisition of N scans with an external scan clock digital trigger, according to the prior art;

    FIG. 43B illustrates a measurement setup interface for acquisition of N scans with an external scan clock digital trigger, according to one embodiment;

    FIG. 43C illustrates an advanced configuration setup interface for acquisition of N scans with an external scan clock digital trigger, according to one embodiment;

    FIG. 43D illustrates a VI for acquisition of N scans with an external scan clock digital trigger, according to one embodiment;

    FIG. 44A illustrates a VI for triggered acquisition with an E-Series device, according to one embodiment;

    FIG. 44B illustrates a VI for triggered acquisition with a high speed digitizer, according to one embodiment;

    FIG. 44C illustrates a VI for triggered acquisition with a high speed digitizer with filtering, according to one embodiment;

    FIG. 45A illustrates a VI for an intermediate layer, according to the prior art;

    FIG. 45B illustrates a VI for analog window triggering, according to the prior art; and

    FIG. 45C illustrates a VI for analog window triggering, according to one embodiment.

    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

    FIGS. 1A and 1B—Instrumentation and Industrial Automation Systems

    FIGS. 1A and 1B 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. 1A and 1B, as well as other types of systems. The measurement system shown in FIGS. 1A and 1B may include software programs according to one embodiment of the present invention. These programs may of course be stored in or used by other types of systems as desired. In accordance with one embodiment of the present invention, the present system and method includes a novel software architecture and novel software programs for allowing users to more easily create measurement and automation tasks (collectively referred to as "measurement tasks"), verify functionality, and easily create application code to implement desired tasks.

    As used herein, the term "measurement system" is intended to include an instrumentation system such as that shown in FIG. 1A, an industrial automation system such as that shown in FIG. 1B, 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 validation. The term "measurement" may include instrumentation measurement, data acquisitions, automation, control, and simulation.

    FIG. 1A illustrates an exemplary instrumentation control system 100. The system 100 may comprise a host computer 102 which connects to one or more 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, among other types of devices. Note that the computer based instrument card 142 may be a board or card with one or more FPGAs, one or more CPUs and memory, or various combinations of the two.

    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. These cards 122, 134, 138, 114 may also connected to the computer 102 through a USB (Universal Serial Bus), IEEE 1394 or 1394.2 bus provided by the computer 102.

    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 instrument may be coupled to the computer 102 through the computer's PXI bus. The PXI chassis may be coupled to the computer 102 via a MXI-3 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 typical instrumentation control 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. 1B 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. 1A. Elements which are similar or identical to elements in FIG. 1A 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. 1B, 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, among other types of devices.

    The DAQ card 114, the PXI chassis 118, the video device 132 and image acquisition card 134, and the motion control device 136 and motion control interface card 138 may be coupled 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.

    Referring again to FIGS. 1A and 1B, the computer system 102 and/or one or more of the instruments or devices may include a memory medium (or memory mediums) on which software according to the present invention may be stored. The memory medium may store a measurement task specifier, an expert system, a plurality of experts, a run-time builder, and a plurality of measurement primitives. Additionally, the memory medium(s) may store various products produced by or with these software components, such as a measurement task specification, a run-time specification, and a run-time, all of which are described in more detail below. The memory medium(s) may also store configuration information for one or more of the above software programs.

    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 the shared library is stored 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. Also, the computer system 102 may take various forms, including a personal computer system, mainframe computer system, workstation, network appliance, Internet appliance, personal digital assistant (PDA), television set-top box, instrument, or other device. In general, the term "computer system" can be broadly defined to encompass any device having at least one processor which executes instructions from a memory medium.

    In one embodiment, the software programs and software architecture 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. However, it is noted that the present invention can be used for a plethora of applications and is not limited to instrumentation or industrial automation applications. In other words, FIGS. 1A and 1B are exemplary only, and the software programs and software architecture 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.

    FIG. 2—Computer System Block Diagram

    FIG. 2 is an exemplary block diagram of the computer system illustrated in FIGS. 1A and 1B. 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. 2 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. 1A and 1B, 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 160 which is coupled to a processor or host bus 162. The CPU 160 may be any of various types, including a x86 processor, e.g., a Pentium class; a PowerPC processor; a CPU from the SPARC family of RISC processors; as well as others. Main memory 166 is coupled to the host bus 162 by means of memory controller 164. The main memory 166 may store one or more computer programs or libraries according to one embodiment of the present invention. The main memory 166 also stores operating system software as well as the software for operation of the computer system, as well known to those skilled in the art.

    The host bus 162 is coupled to an expansion or input/output bus 170 by means of a bus controller 168 or bus bridge logic. The expansion bus 170 is preferably the PCI (Peripheral Component Interconnect) expansion bus, although other bus types can be used. The expansion bus 170 includes slots for various devices such as the data acquisition board 114 (of FIG. 1A), a GPIB interface card 122 which provides a GPIB bus interface to the GPIB instrument 112 (of FIG. 1A), and a reconfigurable instrument 120. Note that as used herein, the term "reconfigurable instrument" refers to an instrument with one or more of:
    • 1) a processor and memory which is capable of being configured by a user or software program; and/or
    • 2) reconfigurable logic, such as an FPGA (Field Programmable Gate Array).


  • For more information on a reconfigurable instrument which includes an embedded processor and embedded memory, please see U.S. Pat. No. 6,173,438 which is hereby incorporated by reference in its entirety as though fully and completely set forth herein. For more information on a reconfigurable instrument which includes reconfigurable hardware, e.g., an FPGA, please see U.S. Pat. No. 6,219,628 which is hereby incorporated by reference in its entirety as though fully and completely set forth herein. The computer 102 may further comprise a video display subsystem 180 and hard drive 182 coupled to the expansion bus 170.

    FIG. 3—Creating a Measurement Solution

    FIG. 3 illustrates one embodiment of a software architecture for a system such as a measurement system. As shown, the system may include one or more application programs 202. The application programs are typically developed by a user to accomplish a certain task or achieve a certain result. Thus, the application program is typically a user created or developed program to solve a desired problem or accomplish a desired result for the user. The application program 202 may be developed in any of various development environments. For example, the application program may be an application developed in the LabVIEW graphical programming environment of National Instruments Corporation. The application program 202 may also be developed in other applications, such as National Instruments Measurement Studio, Visual Basic, Visual C++, Delphi, or other programming development environments. Thus, the application program may be developed in graphical programming environments such as LabVIEW, or a text-based programming environment such as Measurement Studio or Visual Basic. The application program 202 may thus comprise the customer's entire measurement system, and may include many more features and functions in addition to managing the particular measurement task specification and run-time generation, such as data analysis, report generation, or other higher-level functions of the measurement system.

    As shown, the application 202 communicates with a measurement driver 212. The measurement driver 212 may include a measurement driver application programming interface (API) 214. As shown, the application program 202A or 202B interfaces with the measurement driver API 214 in order to access capabilities of the measurement driver 212. In this measurement example, the software architecture may also include interchangeable virtual instrument (IVI) drivers 222 wherein the application program 202B may interface through IVI drivers 222, which interface with the measurement driver API 214, to interface with the measurement driver 212.

    The measurement driver 212 interfaces to the one or more various measurement devices 230 comprised in this system. The measurement devices 230 may comprise any of the various devices discussed above with respect to FIG. 1A or 1B and may comprise other devices not shown in FIGS. 1A and 1B as desired. In one embodiment, at least one of the one or more measurement devices comprises a hardware measurement device. In another embodiment, at least one of the one or more measurement devices comprises a virtual measurement device.

    In one embodiment, the present invention provides an improved system and method for creating application programs, such as application programs 202A and 202B. The measurement driver 212 preferably includes various software that may allow creation of an application program 202A or 202B using a high-level interface and requiring reduced user effort and coding.

    FIG. 4—Measurement Driver Program Components

    FIG. 4 illustrates various software components or programs 400 comprised in the measurement driver program 212. As shown, the measurement driver program 212 may include a measurement task specifier 730, an expert system 750 with one or more experts 406, a run-time builder 780, and various measurement primitives 408. The measurement driver 212 may also include other software components as well.

    As FIG. 4 also illustrates, various of the measurement driver components may be operable to generate respective products which may be useable by other measurement driver components, by other software programs or systems, or by a user. More specifically, as shown in FIG. 4, in one embodiment, the measurement task specifier 730 may be operable to generate a measurement task specification 740. In one embodiment, the measurement task specification 740 may comprise software objects or data structures, such as C++ objects, which may specify the measurement task. In one embodiment, the measurement task specifier 730 may be a measurement task wizard, i.e., a software program which leads the user through a measurement task specification process to create the measurement task specification 740. In another embodiment, the measurement task specifier 730 may take the form of a measurement task configuration tool, which is a software program invocable by the user under a development environment, such as the National Instruments LabVIEW environment or Measurement Studio programming development environment. In yet another embodiment, the measurement task specifier 730 may simply be an API through which the user makes calls to generate the task specification. Thus, in various embodiments, the measurement task specifier 730 may generate the measurement task specification 740 in response to user input.

    As shown, the expert system 750 may use the measurement task specification 740 to generate a run-time specification 770. The expert system 750 may include a plurality of experts. The expert system 750 may include one or more experts for each of the measurement device types shown in FIGS. 1A and 1B, in addition to various other experts, including routing experts, streaming experts, and synchronization experts, among others

    In one embodiment, the run-time specification 770 may similarly comprise software objects or data structures, such as C++ objects, which may specify the run-time parameters for software and/or hardware used to implement the specified measurement task. The run-time specification 770 may comprise parameter specifications for one or more measurement primitives 408 which correspond to rudimentary measurement tasks or operations. Said another way, the run-time specification 770 may comprise a collection of primitive settings, each of which may comprise a detailed and unambiguous "recipe" for a primitive. For example, primitive settings for a digitizer, such as a National Instruments E-Series digitizer, may include: Dither (Yes, No), Polarity (Bi-polar, Uni-polar), Gain, Mode (Calibration, Differential, Non-Referenced Single-Ended, Referenced Single-Ended, Auxillary, Ghost), Generate Trigger (Yes, No), and Last Channel (Yes, No).

    The run-time specification 770 may in turn be interpreted by the run-time builder 780 to generate a run-time 790, which may be executable to perform the specified measurement task. More details of the operation of the measurement driver program are presented below with reference to the description of FIG. 5.

    FIG. 5—Method for Performing a Measurement Task

    FIG. 5 is a flowchart diagram illustrating one embodiment of the operation of the measurement system, the method being used to configure installed measurement hardware devices and to specify and create a measurement task or application program to operate the measurement system. In one embodiment, the measurement task may comprise a plurality of measurement sub-tasks. In another embodiment, the measurement task may comprise a complex measurement operation using a plurality of measurement devices. It is noted that the flowchart of FIG. 5 is exemplary only. Further, various steps in the flowchart of FIG. 5 may occur concurrently or in different order than that shown, or may not be performed, as desired. Also, various steps may be added to FIG. 5 as desired.

    As shown, in step 502 a user may optionally install measurement hardware within the system. This may comprise connecting a measurement device to the computer system or installing a measurement card or board within a slot of the computer system. This may further comprise installing a measurement card or board in a slot of a chassis, such as a PXI chassis, which itself is coupled to the computer system and/or which may contain a computer system comprised on a card within the chassis. In one embodiment, the measurement hardware may comprise a "reconfigurable measurement device" which may be operable to be reconfigured "on the fly" during a measurement task or operation. For example, the reconfigurable measurement device may include a processor and memory or an FPGA that may be reconfigured with different measurement programs or tasks.

    In step 504 the computer system and/or the user may optionally configure the measurement hardware device(s). This may involve operation of standard Plug & Play software to recognize the measurement device and select setting or parameters for the device. It should be noted that in many instances, the user may not be required to perform 502 and/or 504 before generating the measurement task. In other words, the measurement hardware may already be installed and configured and the user may proceed with the configuration and specification of the measurement task in step 506.

    In step 506 the user may invoke the measurement task specifier 730 to configure a desired task in the measurement driver 212, thereby producing a measurement task specification 740. In the preferred embodiment, the measurement task specifier 730 includes an interactive Graphical User Interface (GUI) configuration tool which enables the user to easily and simply 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, etc., and other measurement settings. In the preferred embodiment, the measurement task specifier 730 also includes an Application Programming Interface (API) which also enables the user to configure a desired measurement task.

    In one embodiment, once the task has been specified, the user may add specification objects, modules, or code, specifying start, read/write, and/or cleanup operations to the task specification. In one embodiment, once the task has been specified, the user may request the task specifier 730 to generate code. The task specifier may then programmatically generate code specifying start, read/write, and cleanup operations, among others. In various embodiments, this generated code may comprise icons in a LabVIEW graphical program (i.e., VIs), and/or function calls in a text-based program including one or more of C code, C++ code, C# code, Java code, Visual Basic code, or any other form of computer program code, which may specify support operations needed to implement the specified measurement task. In one embodiment, the generated code may comprise icons representing some or all of the specified measurement task operations, including clocking and trigger operations, among others. In one embodiment, the task specifier 730 may generate the icons and connect them together appropriately. In another embodiment, the task specifier 730 may generate the icons, but the user may be required to link the icons appropriately. Thus, in one embodiment, the method may include generating a measurement task diagram in response to user input specifying the measurement task. In one embodiment, the measurement task diagram may comprise a graphical program, such as a LabVIEW graphical program.

    In another embodiment, the user may specify the task manually. For example, the user may use a graphical programming development environment such as LabVIEW to place one or more icons or nodes on the display and connect them in a desired way to accomplish the desired result. In one embodiment, the user may select a small number of function icons or nodes, such as a measurement read node or measurement write node, to accomplish the configured measurement task. As another example, the user may use the Measurement Studio programming development environment from National Instruments Corporation (e.g., LabWindows/CVI) to create a text-based program to accomplish the measurement task. This text-based program would typically comprise very few lines of code. Thus, complex measurement procedures may be encapsulated and represented by simple icons or function calls, allowing the user to rapidly and easily create measurement "programs" to implement or carry out complex measurement operations.

    In one embodiment, the measurement task specifier 730 may comprise a measurement task wizard. In other words, the measurement task specifier 730 may be a software program which leads the user through a measurement task specification process, thereby generating the measurement task specification 740. In another embodiment, the measurement task specifier 730 may comprise a measurement task configuration tool. The measurement task configuration tool may be a software program invocable by the user within 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 730 may be an API through which the user makes calls to generate the task specification. The measurement task specifier 730 may thus generate the measurement task specification 740 in response to user input.

    For example, in the case that the measurement task specifier 730 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 740. In one embodiment, at this stage the measurement task specification 740 is not executable per se, but provides information which may be used by other components of the system to generate a measurement application suitable to carry out the measurement task, i.e., to implement the specified measurement operation.

    As another example, consider the case where the measurement task specifier 730 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. As mentioned above, the measurement task specification 740 may itself not be executable, but may provide information which may be used by other components of the system to generate a measurement application to implement the specified measurement task. Thus, when the application program 202 is executed, the API function calls may generate the measurement task specification 740, which may then be used later in the execution process to produce the run-time specification, as described below.

    In step 508 an expert system comprised in the measurement driver may operate to receive the measurement task specification 740, then analyze the measurement task specification 740, validate the measurement task specification 740, and create a run-time specification based on the measurement task specification 740. The run-time specification preferably comprises parameter settings for one or more measurement devices and other hardware comprised within the system, and may also specify software components or software programs which are to be used during execution of the task. In one embodiment, the run-time specification may comprise a specification of the parameters of one or more measurement primitives, where each measurement primitive comprises a software object and corresponding configuration settings, and where each measurement primitive is operable to implement at least a portion of the measurement task. Thus, the run-time specification may be useable to configure one or more measurement devices to perform the measurement task, and may be further useable to generate a run-time which is executable to perform the measurement task using the configured one or more measurement devices. The measurement driver 212 may include expert system 750 comprising the plurality of experts 406 where one or more experts 406 are available for each of the various types of measurement tasks or sub-tasks. Thus, depending upon the type of measurement task configured by the user in step 506, one or more corresponding experts 406 may be invoked to create the run-time specification. In one embodiment, multiple experts may each produce a candidate run-time specification. Thus, the measurement task specification 740 may be used in step 508 to ensure that the measurement task can operate as configured by the user.

    In one embodiment, one or more of the generated measurement task specification 740, the generated run-time specification, and configuration information for the one or more measurement devices may be stored, such as in a memory medium, e.g., a computer system's RAM or persistent storage medium.

    In one embodiment, the run-time builder may analyze the selected run-time specification, and then reserve one or more resources, such as hardware and/or software, according to the selected run-time specification. The run-time builder may also unreserve resources if the analysis of the selected run-time specification indicates that previously reserved resources are no longer needed to implement the measurement task. In another embodiment, the run-time builder may handle abnormal process termination and/or unexpected device removal.

    In step 510 a run-time may be created which embodies or implements the measurement task configured in step 506 based on the generated (and/or selected) run-time specification. In one embodiment, the run-time may comprise a collection of measurement operation primitives (or instances of measurement operation primitives) sequenced together which are executable to implement the measurement task.

    When the user (or software program) enters input to execute or run the program, the measurement driver 212 may invoke the run-time builder program. The run-time builder program operates to access the run-time specification and use the parameters and data contained in the run-time specification to assist in creating the run-time at run time. In one embodiment, the run-time builder uses the run-time specification to instantiate instances of various objects or primitives comprised in the measurement driver 212. After the run-time builder instantiates various instances of objects, the run-time builder may apply various parameters from the run-time specification to these object instances. The run-time builder may also provide various parameters to hardware and/or software resources or devices comprised in the system to configure the hardware and/or software devices in the system according to the run-time specification to allow these devices to be used during execution of the run-time. In other words, the run-time builder may configure one or more measurement devices according to the run-time specification. After the run-time builder has completed creating the run-time, the run-time may then be executable to perform the task specified by the user.

    After step 510 the user (or a software program) may execute the run-time to perform the measurement task. In other words, the run-time execution may invoke the various configured hardware and/or software components to perform the specified measurement task.

    Examples of Measurement Problems

    Below are listed several example problems suitable for solution by various embodiments of the present invention. It should be noted that these solutions are for example purposes only, and are not intended to limit the domains of application of the present invention.

    1. Point of Sale Configuration: Given all the hardware and software in the National Instruments catalog and a single computer, determine a set of hardware, hardware connections, hardware settings, and software configuration that can maintain a level in a tank (whose simulated linear model is specified to be M) by monitoring the present value of the tank level and controlling a valve connected to the tank. The solution should display the tank level and valve position on an HMI. Constraints include cost<$10000 and standard deviation of the tank level
    2. Out of the Box Configuration: Given 2 thermocouples, a National Instruments SCXI 1102 module, a National Instruments SCXI-1000 chassis, a National Instruments PCI-MIO-XE-50, and a set of appropriate terminal blocks cabling, determine the hardware connections (in the form of a wiring diagram), hardware settings, and software configuration for monitoring the two temperature values at a rate of 10 Hz each, with an accuracy=A and precision=P for each temperature measurement.

    3. Run-time Configuration: Given a high-frequency switch connected to three 2-channel scopes, determine the hardware settings and software configuration for measuring the waveform, overshoot, and rise time of a set of five simultaneous 10 MHz digital clock signals connected to the switch. The accuracy and precision of the measurements must meet certain requirements, and all 5 measurements should be synchronized to a start event which is triggered by a high level of the first digital clock. (The solution should take into account the signal delays from various routings through the switch).

    In various embodiments, the present invention may include some or all of the following features:

    1. Interactive design—the user may not have to specify a complete specification up front. Instead, the system may ask the user for more information as needed. For instance, while the system is building a solution, it may encounter one or more possibilities and may ask the user to specify new preferences at that point.

    2. Graphical and visual display of system specifications and realizations (including text-based displays where appropriate)—The system may display realizations so that they can be edited directly.

    3. Extensibility—ability to add new measurement methods/drivers to the system and use those methods in a derived realization as the system evolves over time to include more domains. The user is able to participate in this process by adding custom measurement methods. The system may be extended with new measurement methods/drivers in multiple independent efforts (i.e. with independent releases). Groups of extensions may be packaged with different products and installed separately.

    4. Visibility—ability for the user to see solutions generated by the system and extend and modify those solutions.

    5. Robustness—ability to detect and help correct invalid specifications and invalid realizations.

    The features mentioned above may allow the user to specify and execute a measurement task in substantially less time and with substantially less effort than previous methods. In addition, the system described may prevent the user from implementing a measurement solution which is inappropriate for the available resources. Further details of the system design and architecture are described below with reference to FIGS. 6, 7A-D, and 8A-D.

    FIG. 6—High-Level Architecture

    FIG. 6 is a block diagram of a high-level architecture of the present system, according to one embodiment. As FIG. 6 shows, the primary components of the system may comprise system configuration tools 700, system configuration 710, interactive and application programming interfaces 730 which comprise one or more measurement task specifiers 730, task specification 740, expert system 750, run-time specification 770, run-time builder 780, and the run-time 790. FIG. 6 also shows the communication between the various components. Further details of the architecture are presented below with reference to FIGS. 7A-D and 8A-D.

    FIGS. 7A-D—Static Diagrams of the System

    FIGS. 7A-D are static diagrams of the architecture and function of primary functional components or sub-systems used to implement measurement tasks according to one embodiment. FIGS. 7A-7D illustrate an embodiment of a measurement system architecture based on National Instruments measurement products. Each static diagram corresponds to a particular state of the measurement task, described below with reference to FIG. 9.

    FIG. 7A—System for System Configuration and Task Specification

    FIG. 7A is a block diagram of one embodiment of system configuration and measurement task specification components of the present invention. As FIG. 7A shows, there are four main functional groups, comprising system configuration tools 700, system configuration storage 710, interactive and application programming interfaces 730, and task specification 740. In one embodiment, the system configuration tools 700 comprise a DAQ measurements and automation explorer (MAX) provider 702 which may plug in to MAX 704. In one embodiment, the system configuration tools 700 may facilitate system configuration specification by the user. In other words, the system configuration tools, e.g., MAX provider 702, may receive user input indicating system configuration parameters and set system configuration parameters for the one or more measurement devices in response to the user input.

    As FIG. 7A also shows, once the user has specified a system configuration, the specified system configuration may be stored in system configuration storage 710. The system configuration storage 710 may be operable to store a measurements system configuration 706, as well as an MIO system configuration 708. In one embodiment, the MIO system configuration 708 may operate to extend the measurements system configuration 706. As may be seen, both the measurements system configuration 706 and the MIO system configuration 708 may be stored in MAX storage (MXS) 712.

    In one embodiment, interactive and application programming interfaces (IAPIs) 730 may be used to access various objects and functions of the system. These interfaces may provide mechanisms through which the user, other system components, or other systems, may specify a measurement task. As FIG. 7A shows, the IAPIs 730 may include a measurements configuration tool 714 and MIO configuration tool plug-in 716, which may be operable to extend the measurements configuration tool 714. In one embodiment, the system configuration information stored in system configuration storage 710 may be retrieved via the measurements configuration tool 714.

    The IAPIs may further include measurements APIs for various development environments or languages, such as a measurements API for LabVIEW 718 and MIO extensions to measurements API for LabVIEW 722, which may be operable to extend the measurements API for LabVIEW 718; a measurements API for C 728 and MIO extensions to measurements API for C 732, which may be operable to extend the measurements API for C 728; a measurements API for Measurement Studio Tools for Visual C++ 724 and MIO extensions to measurements API for Measurement Studio Tools for Visual C++ 726, which may be operable to extend the measurements API for Measurement Studio Tools for Visual C++ 724; and a measurements API for Measurement Studio Tools for Visual Basic 734 and MIO extensions to measurements API for Measurement Studio Tools for Visual Basic 736, which may be operable to extend the measurements API for Measurement Studio Tools for Visual Basic 734. It should be noted that in other embodiments, other interfaces or APIs may be included for other development environments and/or programming languages.

    As FIG. 7A further shows, a task specification 740 may be generated via the IAPIs 730. The task specification 740 may include measurements-wide measurements specification objects (MSOs) 742 and MIO MSOs 744, which may be operable to extend the measurements MSOs 742. Note that both the measurements MSOs 742 and the MIO MSOs 744 may be stored in the MXS 712.

    Thus, the system components described above may allow the user to configure the system, as well as to generate a measurement task specification 740. It should be noted that the system configuration tools 700, system configuration storage 710, interactive and application programming interfaces 730, and task specification 740 components correspond to a Unverified State 902 of the system, as described with reference to the state diagram of FIG. 9 below.

    FIG. 7B—System for Compiling a Task Specification to a Task Run-Time Specification

    FIG. 7B is a block diagram of one embodiment of system components for compiling the task specification to a task run-time specification. As FIG. 7B shows, in one embodiment, the system components for compiling the task specification to a task run-time specification may include the task specification 740 and the system configuration storage 710, described above with reference to FIG. 7A, as well as an expert system 750, an expert registration storage 760, and a task run-time specification 770.

    In one embodiment, the expert system 750 may be operable to retrieve system configuration information from the system configuration storage 710 to make decisions regarding the measurement task specification 740. The expert system 750 may be further operable to compile the task specification 740 to produce the task run-time specification 770, as shown. As FIG. 7B also shows, the expert system 750 may refer to the expert registration storage for matching experts to the task specification 740. In one embodiment, the expert system 750 may include measurements run-time experts 752, measurements streaming experts 756, MIO experts 754, routing experts 758, and a measurements expert library 759. Further examples of experts include sensor experts, smart sensor experts, scaling experts, and system calibration experts, among others. In general, an expert may be defined and used for any device or function. For example, a scaling expert may be operable to make changes to the run-time specification to specify or implement custom scaling operations for a measurement channel. In one embodiment, each of the experts may be operable to register with the measurements expert library 759 to indicate availability to the system. Further details of the expert system and its use are presented below with reference to FIGS. 14-25 and 26-38, below.

    As FIG. 7B shows, the expert registration storage 760 may include registration components which correspond to each of the experts included in the expert system 750. For example, the expert registration storage 760 may include components for MIO expert registrations 762, measurements run-time expert registrations 764, routing expert registration 766, and measurements streaming expert registrations 768. It should be noted that the expert system 750 and the expert registration storage 760 may also respectively use and store other experts and other expert registrations as needed. As shown, each expert registration may be stored in MXS 712.

    As mentioned above, the expert system 750 may produce the task run-time specification based on the task specification 740, the system configuration information stored in the system configuration storage 710, and the various experts comprised in the expert system 750. In one embodiment, the task run-time specification 770 may include various primitive settings specified by one or more of the above-mentioned experts. For example, the settings may include measurements run-time primitive settings 772, measurements streaming primitive settings 774, routing primitive settings 776, and MIO primitive settings 778. The primitive settings may each be stored in MXS 712, as shown.

    Note that when the measurement task specification does not specify any product-specific properties, i.e., any properties or specifications particular to a given device or product, then the measurement task specification may be compiled to various different measurement systems without modification. In other words, to the extent that the measurement task specification is generic, it is also portable, and thus a single measurement task specification may be used or compiled for multiple measurement systems.

    It should be noted that the task specification 740 and the system configuration storage 710, described above with reference to FIG. 7A, as well as the expert system 750, expert registration storage 760, and task run-time specification 770 correspond to a Verified State 904 in the state diagram of FIG. 9 below.

    FIG. 7C—System for Building a Task Run-Time from a Task Run-Time Specification

    FIG. 7C is a block diagram of system components for building a task run-time from a task run-time specification, according to one embodiment. As FIG. 7C shows, the system components for building a task run-time from a task run-time specification may include the task run-time specification 770, described above with reference to FIG. 7B, a run-time builder 780, and a task run-time 790. As shown, the run-time builder 780 may be operable to retrieve the task run-time specification (possibly from MXS 712) and build the task run-time 790.

    In one embodiment, the run-time builder 780 may include a measurements run-time builder 782 which may be operable to create primitive supervisors for each primitive setting in the run-time specification 770, such as measurements run-time primitive supervisors 784, MIO primitive supervisors 786, measurements streaming primitive supervisors 788, and routing primitive supervisors 789. As FIG. 7C shows, these primitives and supervisors may be included in the task run-time 790, described below.

    In one embodiment, the task run-time 790 may include a measurements run-time 792 which may manage routing primitives and supervisors 794, MIO primitives and supervisors 796, measurements streaming primitives and supervisors 798, and measurements run-time primitives and supervisors 799. The task run-time 790 may be operable to be executed by the system to implement the specified measurement task, as described below with reference to FIG. 7D.

    It should be noted that the task run-time specification 770, described above with reference to FIG. 7B, the run-time builder 780, and task run-time 790 correspond to a Constructed State 906 of the system, as described with reference to the state diagram of FIG. 9 below.

    FIG. 7D—System for Executing Tasks

    FIG. 7D is a block diagram of a system for executing measurement tasks. As FIG. 7D shows, the system may include the task run-time 790, described above with reference to FIG. 7C, as well as the interactive and application programming interfaces (IAPIs), described above with reference to FIG. 7A. As may be seen in FIG. 7D, in one embodiment, the IAPIs 730 may provide means for issuing start, stop, commit, reserve, unreserve, set, and get commands to the task run-time 790. The IAPIs 730 may also provide means for issuing reads and writes to the measurements streaming primitives and supervisors 798 as shown. Thus, the measurement task may be implemented by executing the task run-time 790 via various commands or calls via one or more of the IAPIs.

    It should be noted that the task run-time 790, described above with reference to FIG. 7C, as well as the interactive and application programming interfaces (IAPIs), described above with reference to FIG. 7A correspond to a Reserved State 908, a Committed State 910, and a Running State 912 of the system, as described with reference to the state diagram of FIG. 9 below.

    FIGS. 8A-D—Framework Software Package Diagrams

    FIGS. 8A-D are software package diagrams of the components used to implement the present method, according to one embodiment. Each of the package diagrams in FIGS. 8A-D may correspond respectively to one of the functional static diagrams of FIGS. 7A-D. It should be noted that each component may be marked with a U, K, or UK, denoting whether the component is a user-mode, kernel-mode, or dual-mode component, respectively.

    FIG. 8A—Packages for System Configuration and Task Specification

    FIG. 8A is a block diagram of packages for system configuration and task specification, according to one embodiment. As FIG. 8A shows, the packages for system configuration and task specification may include a system configuration tools package 810, corresponding to the system configuration tools 700 described above with reference to FIG. 7A, with corresponding component packages, namely a DAQ MAX provider package 812 and a MAX package 814. The system configuration and task specification packages also include a data dictionaries package 800 with component data dictionary packages corresponding to components of the task specification 740 and system configuration storage 710, also described above, as well as an API libraries package 820 with component packages corresponding to the interactive and application programming interfaces 730. Note that each component in these packages is a user-mode component.

    As FIG. 8A shows, the data dictionaries package 800 may include a measurements MSO data dictionary package 802, an MIO MSO data dictionary package 804, a measurements system configuration data dictionary package 806, and an MIO system configuration data dictionary package 808, all of which may be stored in the MXS package 809. Each data dictionary may include information or meta-data describing the data related to measurements system configuration data, MIO system configuration data, measurements MSO data, and MIO MSO data.

    As further shown in FIG. 8A, the API libraries package 820 may include a plurality of libraries which comprise the various APIs described above with reference to FIGS. 7A and 7D above. Specifically, the API libraries package 820 may include a measurements API for LabVIEW library package 822 and an MIO extensions to measurements API for LabVIEW library package 823, which may be operable to extend the measurements API for LabVIEW library package 822; a measurements API for C package 826 and MIO extensions to measurements API for C library package 827, which may be operable to extend the measurements API for C package 826; a measurements API for Measurement Studio Tools for Visual C++ library package 824 and MIO extensions to measurements API for Measurement Studio Tools for Visual C++ library package 825, which may be operable to extend the measurements API for Measurement Studio Tools for Visual C++ package 824; and a measurements API for Measurement Studio Tools for Visual Basic library package 828 and MIO extensions to measurements API for Measurement Studio Tools for Visual Basic library package 829, which may be operable to extend the measurements API for Measurement Studio Tools for Visual Basic library package 828. It should be noted that in other embodiments, other interfaces or API libraries may be included for other development environments and/or programming languages.

    FIG. 8B—Packages for Compiling a Task Specification to a Task Run-Time Specification

    FIG. 8B is a block diagram of packages for compiling a task specification to a task run-time specification, according to one embodiment. As FIG. 8B shows, the packages for compiling a task specification to a task run-time specification may include a measurements system data dictionaries package 830, an expert system package 840, and a user-mode run-time system package 850. Note that all components of these packages are user-mode components, as indicated.

    In one embodiment, the measurements system data dictionaries package 830 may include the components of the data dictionaries package 800 described above with reference to FIG. 8A, as well as an expert registration data dictionary package 832, a measurements run-time primitive settings data dictionary package 834, a measurements streaming primitive settings data dictionary package 835, a routine primitive settings data dictionary package 836, and an MIO primitive settings data dictionary package 837. As mentioned above, each data dictionary may contain information or meta-data describing the data related to a particular system component. In the preferred embodiment, all of the expert system data dictionaries are stored in the MXS package 809, as shown.

    As FIG. 8B shows, the expert system package 840 may include library packages corresponding to the various experts described above with reference to FIG. 7B. Specifically, the expert system package 840 may include a measurements expert library package 842, a routing expert library package 844, an MIO expert library package 846, a measurements streaming expert library package 848, an a measurements run-time expert library package 849, as shown.

    As also shown in FIG. 8B, the user-mode run-time system package 850 may include library packages corresponding respectively to each of the sets of primitives composed in the run-time package 790, the components of which are described above with reference to FIGS. 7C and 7D. Specifically, the user-mode run-time system package 850 may include a measurements run-time library package 852, a routing run-time library package 854 which may include all related primitive settings and user-mode primitive supervisors, a measurements streaming run-time library package 856, and an MIO run-time library package 858 which may include all related primitive settings packages and user-mode primitive supervisor packages.

    FIG. 8C—Packages for Building a Task Run-Time from a Task Run-Time Specification

    FIG. 8C is a block diagram of packages for building a task run-time from a task run-time specification, according to one embodiment. As FIG. 8C shows, the packages for building a task run-time from a task run-time specification may include a primitive settings data dictionaries package 860, and a user- and kernel-mode run-time system package 880.

    In one embodiment, the primitive settings data dictionaries package 860 may also include the primitive settings data dictionary packages described above with reference to the expert system data dictionaries package 830 of FIG. 8B. Specifically, the primitive settings data dictionaries package 860 may include the measurements run-time primitive settings data dictionary package 834, the measurements streaming primitive settings data dictionary package 835, the routine primitive settings data dictionary package 836, and the MIO primitive settings data dictionary package 837, all of which may be stored in the MXS 809. As mentioned before, each of the primitive settings library component packages may be a user-mode component, as indicated.

    In one embodiment, the user- and kernel-mode run-time system package 880 may include the run-time library component packages of the user-mode run-time system package 850 described above with reference to FIG. 8B, specifically, the measurements run-time library package 852, the routing run-time library package 854 which may include related primitive settings packages and primitive supervisor packages, the measurements streaming run-time library package 856, and the MIO run-time library package 858 which may include all related primitive settings packages and primitive supervisor packages. The user- and kernel-mode run-time system package 880 may further include a measurements streaming library package 886, a routing driver (driver and primitives) package 882, and an MIO driver (driver and primitives) package 884. Note that the drivers and library component packages are all dual-mode component packages (UK), meaning that they may be used in either user-mode or kernel-mode.

    FIG. 8D—Packages for Executing a Task Run-Time

    FIG. 8D is a block diagram of packages for executing the task run-time, according to one embodiment. As FIG. 8D shows, the packages for executing the task run-time may include the user- and kernel-mode run-time system package 880, described above with reference to FIG. 8C, as well as the API libraries package 820, described above with reference to FIG. 8A. As FIG. 8D indicates, the various objects and functions comprised in the user- and kernel-mode run-time system package 880 may be accessed via the APIs comprised in the API libraries package 820, thereby facilitating the execution of the task run-time, and thus implementing the specified measurement task.

    FIG. 9—State Diagram for Measurement Tasks

    FIG. 9 is a state diagram for measurement tasks, according to one embodiment. During the specification, compilation, and execution of a measurement task, the task may occupy a sequence of specific, well-defined states, as shown in FIG. 9. As mentioned above, each of the illustrated states may correspond to particular static diagrams, as shown in FIGS. 7A-D.

    As FIG. 9 shows, in one embodiment, the first state of the task after creation is the Unverified state 902, corresponding to the task specification 740 static diagram of FIG. 7A. In the Unverified state 902, all properties of the task may be set.

    The Verified state 904 corresponds to the state of the task at the end of the compiling task specification to run-time specification static diagram of FIG. 7B. More specifically, in the Verified state 904, the task may be represented by the run-time specification 770 of FIG. 7B. As may be seen, the task enters the Verified state 904 as a result of verification of the measurement task specification 740 by the expert system 750. This verification may also be invoked indirectly by a get operation. In order to modify the properties of the task, a transition back to the Specified state 902 may be necessary.

    The Constructed state 906 correspo