United States Patent Application20030035006
Kind CodeA1
Kodosky, Jeffrey L. ; et al.February 20, 2003

Graphical association of a device icon with a graphical program
Abstract
A system and method for creating and using configuration diagrams for configuring distributed systems. The methods described herein may be used for various types of operations in configuring distributed systems, including creating programs, managing programs in the distributed system, deploying programs to various distributed devices, configuring remote execution or inter-operation of distributed programs, and executing distributed applications. Embodiments of the invention utilize graphical iconic-based techniques for performing the above operations. The configuration diagram may include device icons which represent devices and program icons which represent programs. Device icons and program icons may be associated with each other to accomplish various program creation and deployment operations. Device icons and program icons may also interact with graphical program nodes or icons. Context sensitive device connections and/or program connections are displayed. An asynchronous data flow node may be used to facilitate asynchronous data flow between two graphical programs. The distributed system may also support distributed graphical debugging.

Inventors:Kodosky; Jeffrey L. (Austin, TX), Shah; Darshan  (Round Rock, TX), Rogers; Steven W.  (Austin, TX)
Correspondence Name and Address:Conley, Rose & Tayon, P.C. P.O. Box 398
Jeffrey C. Hood
Austin
TX
78767-0398
US
Series Code:123851
Filed:April 16, 2002
U.S. Current Class:345/763; 345/846
U.S. Class at Publication:345/763; 345/846
Intern'l Class:G09G 005/00

Claims


We claim:
1. A method for configuring a graphical program, wherein the method executes on a first computer system, the method comprising: displaying a first device icon on a display of the first computer system, wherein the first device icon corresponds to a first device; displaying a graphical program on the display of the first computer system, wherein the graphical program is stored on a second device; associating the first device icon with the graphical program in response to user input; displaying the first device icon in the graphical program in response to said associating, wherein the first device icon is operable to perform at least one of receive data from the device or provide data to the device during execution of the graphical program.

2. The method of claim 1, further comprising: configuring the first device icon as a node in the graphical program.

3. The method of claim 2, wherein said configuring the first device icon as a node in the graphical program comprises creating one or more input terminals and one or more output terminals on the first device icon based on at least one of: parameters of the first program and parameters of the graphical program.

4. The method of claim 3, connecting at least one of the input terminals and output terminals of the first device icon to an existing node in the graphical program.

5. The method of claim 1, wherein said associating comprises dragging and dropping the first device icon into the graphical program.

6. The method of claim 1, wherein the graphical program comprises a block diagram, wherein the block diagram comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program; wherein said displaying the graphical program comprises displaying the block diagram.

7. The method of claim 1, further comprising: positioning the first device icon at a first location in the graphical program in response to user input.

8. The method of claim 1, wherein the graphical program comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program; the method further comprising positioning the first device icon at a first location in the graphical program.

9. The method of claim 8, wherein said positioning comprises positioning the first device icon as a node in the graphical program.

10. The method of claim 8, wherein the graphical program comprises a plurality of nodes interconnected by wires; wherein said positioning comprises positioning the first device icon at a first location on a wire in the graphical program proximate to an existing node in the graphical program; the method further comprising displaying the first device icon in the graphical program connected through the wire to the existing node in the graphical program.

11. The method of claim 8, wherein said positioning the first device icon is performed using a pointing device.

12. The method of claim 1, further comprising: displaying a second device icon on a display of the first computer system, wherein the second device icon corresponds to the second device.

13. The method of claim 1, further comprising: displaying a program icon on the display, wherein the program icon corresponds to the graphical program; and associating the first device icon with the program icon in response to user input; wherein said displaying the graphical program on the display of the first computer system is automatically performed in response to said associating the first device icon with the program icon.

14. The method of claim 13, wherein said associating the first device icon with the program icon comprises dragging and dropping the first device icon proximate to or onto the program icon.

15. The method of claim 14, wherein said dragging and dropping the first device icon proximate to or onto the program icon comprises receiving further user input indicating that the first device icon is to be configured as a node in the graphical program.

16. The method of claim 13, further comprising: displaying a second device icon on a display of the first computer system, wherein the second device icon corresponds to the second device; wherein the program icon is displayed proximate to the second device icon to visually indicate that the graphical program is stored on the second device.

17. The method of claim 1, wherein said associating the first device icon with the graphical program comprises positioning the first device icon at a desired location in the graphical program in response to user input.

18. The method of claim 1, further comprising: displaying a program icon on the display, wherein the program icon corresponds to the graphical program; wherein said associating the first device icon with the graphical program comprises: associating the first device icon with the program icon in response to user input; wherein said displaying the graphical program on the display of the first computer system is performed in response to said associating the first device icon with the program icon; and positioning the first device icon at a desired location in the graphical program in response to user input.

19. The method of claim 1, further comprising: modifying the graphical program to include program instructions and/or data structures that are executable to read and/or write data from/to the first device during execution of the graphical program, wherein said modifying is performed after said associating; wherein the first device icon in the graphical program represents the program instructions and/or data structures that are executable to read and/or write data from/to the first device.

20. The method of claim 1, further comprising: executing the graphical program after said associating and said displaying the first device icon, wherein said executing the graphical program includes performing at least one of reading data from the device or writing data to the device.

21. The method of claim 1, wherein the graphical program includes a first node which visually indicates that associated operations are repetitively performed; the method further comprising positioning the first device icon proximate to the first node in the graphical program to configure repetitive operation of the first device icon in the graphical program.

22. The method of claim 21, wherein the first node is a loop structure node; wherein said positioning comprises positioning the first device icon within the loop structure node to visually indicate that first device icon is to repetitively operate in the graphical program.

23. The method of claim 1, wherein the first device is a sensor; wherein the first device icon in the graphical program is operable to receive data from the sensor during execution of the graphical program.

24. The method of claim 1, wherein the first device is a measurement device; wherein the first device icon in the graphical program is operable to receive data from the measurement device during execution of the graphical program.

25. The method of claim 1, wherein the first device is a data acquisition device; wherein the first device icon in the graphical program is operable to receive data from the data acquisition device during execution of the graphical program.

26. The method of claim 1, wherein the first device is an actuator; wherein the first device icon in the graphical program is operable to provide data to the actuator during execution of the graphical program.

27. The method of claim 1, wherein the first device is a measurement device; wherein the first device icon in the graphical program is operable to provide data to the measurement device during execution of the graphical program.

28. The method of claim 1, wherein the first device is a data acquisition device; wherein the first device icon in the graphical program is operable to provide data to the data acquisition device during execution of the graphical program.

29. The method of claim 1, wherein the graphical program comprises a data flow diagram.

30. The method of claim 1, the method further comprising: positioning the first device icon at a first location in the graphical program in response to user input; automatically modifying the graphical program to access the first device after said positioning; wherein during execution the graphical program is operable to access the first device.

31. The method of claim 1, further comprising: displaying a configuration diagram on the display of the computer system, wherein the configuration diagram includes the first device icon corresponding to the first device.

32. The method of claim 31, wherein the configuration diagram includes the graphical program.

33. The method of claim 31, wherein the configuration diagram represents a system comprising a plurality of devices including the first device, wherein the configuration diagram includes a plurality of device icons corresponding to the plurality of devices, wherein the first device icon is one of the plurality of device icons.

34. The method of claim 31, wherein the configuration diagram comprises a program icon, wherein the program icon corresponds to the graphical program; the method further comprising: associating the first device icon with the program icon in response to user input; wherein said displaying the graphical program on the display of the first computer system is automatically performed in response to said associating the first device icon with the program icon.

35. A method for configuring a graphical program, wherein the method executes on a first computer system, the method comprising: displaying a first device icon on a display of the first computer system, wherein the first device icon corresponds to a first device; displaying a graphical program on the display of the first computer system, wherein the graphical program is stored on a second device; associating the first device icon with the graphical program in response to user input; displaying a new icon in the graphical program in response to said associating, wherein the new icon corresponds to the first device, where the new icon is operable to perform at least one of receive data from the device or provide data to the device during execution of the graphical program.

36. The method of claim 35, wherein the new icon is the first device icon.

37. The method of claim 35, wherein the new icon has an appearance which visually indicates the first device.

38. The method of claim 35, wherein the first device icon has a first appearance; wherein the new icon has the first appearance of the first device icon.

39. The method of claim 35, further comprising: wherein the new icon is a first node in the graphical program, wherein the first node is operable to access the first device during execution of the graphical program.

40. A method for configuring a graphical program, wherein the method executes on a first computer system, the method comprising: displaying a first device icon on a display of the first computer system, wherein the first device icon corresponds to a first device; displaying a graphical program on the display of the first computer system, wherein the graphical program is stored on a second device associating the first device icon with the graphical program in response to user input; displaying the first device icon in the graphical program in response to said associating; wherein, in response to said associating and said displaying, during execution the graphical program is operable to access the device.

41. The method of claim 40, further comprising: modifying the graphical program to include program instructions and/or data structures that are executable to perform at least one of read data from the first device or write data to the first device during execution of the graphical program, wherein said modifying is performed after said associating; wherein the first device icon represents the program instructions and/or data structures.

42. A method for configuring a graphical program, wherein the method executes on a first computer system, the method comprising: displaying a first icon on a display of the first computer system, wherein the first icon corresponds to a first device; displaying a graphical program on the display of the first computer system; dragging and dropping the first icon into the graphical program in response to user input; and displaying the first icon in the graphical program in response to said dragging and dropping; wherein the graphical program is operable to access the device during execution in response to said dragging and dropping and said displaying.

43. The method of claim 42, wherein said dragging and dropping comprises positioning the first device icon at a first location in the graphical program in response to user input.

44. The method of claim 42, wherein the graphical program comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program; wherein said dragging and dropping comprises positioning the first device icon as a node in the graphical program in response to user input.

45. The method of claim 42, wherein the graphical program comprises a plurality of nodes interconnected by wires; wherein said dragging and dropping comprises dropping the first device icon on a first wire in the graphical program; the method further comprising displaying the first device icon in the graphical program connected to the first wire in the graphical program.

46. The method of claim 42, further comprising: modifying the graphical program to include program instructions and/or data structures that are executable to perform at least one of read data from the first device or write data to the first device during execution of the graphical program, wherein said modifying is performed after said dragging and dropping; wherein the first device icon represents the program instructions and/or data structures.

47. A method for configuring a graphical program, wherein the method executes on a first computer system, the method comprising: displaying a first device icon on a display of the first computer system, wherein the first device icon corresponds to a first device; displaying a graphical program on the display of the first computer system; associating the first device icon into the graphical program in response to user input; displaying a new icon in the graphical program in response to said associating, wherein the new icon corresponds to the first device, where the new icon is operable to invoke execution of the first device during execution of the graphical program.

48. A method for creating a graphical program, the method comprising: displaying a device icon corresponding to a device; displaying a block diagram of the graphical program; associating the device icon with the block diagram; programmatically creating code in the graphical program which is executable to provide programmatic access to the device, wherein said programmatically creating is performed in response to said associating.

49. The method of claim 48, wherein the programmatically created code comprises program instructions.

50. The method of claim 48, wherein the programmatically created code comprises at least one node icon in the graphical program.

51. The method of claim 48, further comprising: programmatically creating a graphical program element in the block diagram in response to said associating, wherein the graphical program element corresponds to the device icon; wherein the graphical program element is operable to access the device during graphical program execution.

52. The method of claim 51, wherein said programmatically creating a graphical program element in the block diagram comprises: displaying the device icon in the graphical program; and creating program instructions corresponding to the device icon in the graphical program, wherein the program instructions are executable to provide programmatic access to the device.

53. The method of claim 51, wherein the device icon has a first appearance; wherein the graphical program element has the first appearance

54. The method of claim 51, wherein the graphical program element is operable to perform at least one of: read values of the data point during graphical program execution or write values to the data point during graphical program execution.

55. The method of claim 51, wherein the graphical program comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program; the method further comprising: connecting the graphical program element to at least one node present in the graphical program.

56. The method of claim 48, wherein the graphical program comprises a plurality of nodes interconnected by wires; wherein said associating comprises positioning the device icon at a first location on a wire in the graphical program proximate to an existing node in the graphical program; the method further comprising displaying the device icon in the graphical program connected through the wire to the existing node in the graphical program.

57. The method of claim 48, further comprising: displaying a configuration diagram on the display of the computer system, wherein the configuration diagram includes the device icon corresponding to the device.

58. The method of claim 57, wherein the configuration diagram includes the graphical program.

59. The method of claim 57, wherein the configuration diagram comprises a program icon, wherein the program icon corresponds to the graphical program; the method further comprising: associating the device icon with the program icon in response to user input; wherein said displaying the graphical program on the display of the first computer system is automatically performed in response to said associating the device icon with the program icon.

60. A computer-implemented method for creating a graphical program, the method comprising: displaying a configuration diagram on the display of the computer system, wherein the configuration diagram represents a system comprising a plurality of devices, wherein the configuration diagram includes a first device icon corresponding to a first device, wherein the configuration diagram includes a second device icon corresponding to a second device, wherein the second device icon stores a graphical program; displaying the graphical program on the display of the computer system; associating the first device icon with the graphical program in response to user input; programmatically creating code in the graphical program which is executable to provide programmatic access to the first device, wherein said programmatically creating is performed in response to said associating.

61. The method of claim 60, wherein said associating comprises dragging and dropping the first device icon to a location within the block diagram of the graphical program.

62. The method of claim 60, wherein the configuration diagram includes a program icon corresponding to the graphical program; wherein the method further comprises receiving user input selecting the program icon, wherein said displaying the block diagram of the graphical program is performed in response to said user input selecting the program icon.

63. The method of claim 60, wherein the configuration diagram includes a program icon corresponding to the graphical program; wherein said associating the first device icon with the block diagram comprises: associating the first device icon with the program icon; wherein said displaying the block diagram of the graphical program is performed in response to said associating the first device icon with the program icon; and graphically positioning the first device icon within the block diagram.

64. A computer-implemented method for creating a graphical program, the method comprising: displaying a configuration diagram on the display of the computer system, wherein the configuration diagram represents a system comprising a plurality of devices, wherein the configuration diagram includes a plurality of device icons each corresponding to a respective one of the plurality of devices, wherein the plurality of devices includes a first device, wherein the plurality of device icons includes a first device icon; displaying a block diagram of the graphical program; associating the first device icon with the block diagram of the graphical program in response to user input; programmatically creating code in the graphical program which is executable to provide programmatic access to the first device, wherein said programmatically creating is performed in response to said associating.

65. A computer-implemented method for configuring a graphical program, the method comprising: displaying a configuration diagram on the display of the computer system, wherein the configuration diagram represents a system comprising a plurality of devices, wherein the configuration diagram includes a plurality of device icons each corresponding to a respective one of the plurality of devices, wherein the plurality of devices includes a first device, wherein the plurality of device icons includes a first device icon, wherein the configuration diagram includes a program icon corresponding to a graphical program; associating the first device icon with the program icon in response to user input; displaying a block diagram of the graphical program in response to said associating; displaying the first device icon in the block diagram in response to said associating, wherein the first device icon is operable to programmatically access the first device during execution of the graphical program.

66. The method of claim 65, wherein the first device icon is operable to perform at least one of receive data from the first device or provide data to the first device during execution of the graphical program.

67. The method of claim 65, further comprising programmatically creating code in the graphical program which is executable to provide programmatic access to the first device, wherein said programmatically creating is performed after said associating.

68. A method for configuring a graphical program, wherein the method executes on a first computer system, the method comprising: displaying a first device icon on a display of the first computer system, wherein the first device icon corresponds to a first device; displaying a program icon on the display of the first computer system, wherein the program icon corresponds to a graphical program; associating the first device icon with the program icon in response to user input; displaying the graphical program in response to said associating the first device icon with the program icon; and displaying the first device icon in the graphical program after said displaying, wherein the first device icon in the graphical program is operable to access the first device during execution of the graphical program.

69. The method of claim 68, further comprising: modifying the graphical program to include program instructions and/or data structures that are executable to perform at least one of read data from the first device or write data to the first device during execution of the graphical program, wherein said modifying is performed after said associating; wherein the first device icon represents the program instructions and/or data structures.

70. A method for graphically configuring a program, wherein the method executes on a first computer system, the method comprising: displaying a first device icon on a display of the first computer system, wherein the first device icon corresponds to a first device; displaying source code of a first program on the display of the first computer system; associating the first device icon with the source code of the first program in response to user input; inserting new source code into the first program in response to said associating.

71. The method of claim 70, wherein the new source code is executable to access the first device during execution of the first program.

72. The method of claim 70, wherein the new source code is executable to invoke the first device during execution of the first program.

73. The method of claim 70, wherein the source code of the first program is of a text-based programming language; wherein the new source code comprises a function call to perform at least one of read data from the first device or write data to the first device.

74. The method of claim 70, further comprising: displaying a first program icon on the display, wherein the first program icon corresponds to the first program; and associating the first device icon with the first program icon in response to user input; wherein said displaying the source code of the first program on the display of the first computer system is automatically performed in response to said associating the first device icon with the first program icon.

75. The method of claim 70, wherein said associating the first device icon with the source code of the first program comprises positioning the first device icon at a desired location in the source code of the first program in response to user input; wherein said inserting comprises inserting the new source code into the first program at the desired location in response to said positioning.

76. The method of claim 70, wherein said associating the first device icon with the source code of the first program comprises: displaying the first device icon in the source code of the first program; and positioning the first device icon in the source code of the first program at a first location in response to user input; wherein said inserting comprises inserting the new source code into the first program at the desired location in response to said positioning.

77. The method of claim 70, wherein the first program is stored on a second device.

78. A method for graphically configuring a program, wherein the method executes on a first computer system, the method comprising: displaying a first device icon on a display of the first computer system, wherein the first device icon corresponds to a first device; displaying a first program icon on the display of the first computer system, wherein the first program icon corresponds to a first program; associating the first device icon with the first program icon in response to user input; displaying source code of the first program on the display of the first computer system in response to said associating; displaying the first device icon in the source code of the first program in response to said associating; positioning the first device icon in the source code of the first program at a first location in response to user input; and inserting new source code into the first program at the first location.

79. A computer-implemented method for creating a graphical program, the method comprising: displaying a configuration diagram on the display of the computer system, wherein the configuration diagram represents a system comprising a plurality of devices, wherein the configuration diagram includes a plurality of device icons each corresponding to a respective one of the plurality of devices, wherein the plurality of devices includes a first device, wherein the plurality of device icons includes a first device icon; displaying source code of a program; associating the first device icon with the source code of the program in response to user input; programmatically creating new code in the program which is executable to provide programmatic access to the first device, wherein said programmatically creating is performed in response to said associating.

80. The method of claim 79, wherein said associating comprises dragging and dropping the first device icon to a first location within the source code of the program; wherein said programmatically creating comprises creating the new code at the first location within the source code of the program.

81. The method of claim 79, wherein the configuration diagram includes a program icon corresponding to the graphical program; wherein the method further comprises receiving user input selecting the program icon, wherein said displaying the source code of the program is performed in response to said user input selecting the program icon.

82. The method of claim 79, wherein the configuration diagram includes a program icon corresponding to the program; wherein said associating the first device icon with the source code comprises: associating the first device icon with the program icon; wherein said displaying the source code of the program is performed in response to said associating the first device icon with the program icon; and graphically positioning the first device icon within the source code of the program.

83. The method of claim 79, wherein the source code of the program is of a text-based programming language; wherein the new code comprises a function call to perform at least one of read data from the first device or write data to the first device.

84. A method for graphically configuring a program, wherein the method executes on a first computer system, the method comprising: displaying a configuration diagram on a display of the first computer system, wherein the configuration diagram includes a first device icon that corresponds to a first device and a first program icon that corresponds to a first program; associating the first device icon with the first program icon in response to user input; displaying source code of the first program on the display of the first computer system in response to said associating; displaying the first device icon in the source code of the first program in response to said associating; positioning the first device icon in the source code of the first program at a first location in response to user input; and inserting new source code into the first program at the first location in response to said positioning.

85. A computer-implemented method for configuring a graphical program, the method comprising: displaying a configuration diagram on the display of the computer system, wherein the configuration diagram represents a system comprising a plurality of devices, wherein the configuration diagram includes a plurality of device icons each corresponding to a respective one of the plurality of devices, wherein the plurality of devices includes a first device, wherein the plurality of device icons includes a first device icon, wherein the configuration diagram includes a program icon corresponding to a program; associating the first device icon with the program icon in response to user input; displaying source code of the program in response to said associating; inserting new source code into the program in response to said associating, wherein the new source code is operable to programmatically access the first device during execution of the program.

86. The method of claim 85, wherein the first device icon is operable to perform at least one of receive data from the first device or provide data to the first device during execution of the graphical program.

87. The method of claim 85, wherein the source code of the program is of a text-based programming language; wherein the new source code comprises a function call to perform at least one of read data from the first device or write data to the first device.

88. A memory medium comprising program instructions for configuring a graphical program, wherein the program instructions execute on a first computer system, wherein the program instructions are executable to implement: displaying a first device icon on a display of the first computer system, wherein the first device icon corresponds to a first device; displaying a graphical program on the display of the first computer system; associating the first device icon with the graphical program in response to user input; displaying the first device icon in the graphical program in response to said associating, wherein the first device icon is operable to perform at least one of receive data from the device or provide data to the device during execution of the graphical program.

89. The memory medium of claim 88, wherein the program instructions are further executable to implement: modifying the graphical program to include program instructions and/or data structures that are executable to read and/or write data from/to the first device during execution of the graphical program, wherein said modifying is performed after said associating.

Description



PRIORITY CLAIM

[0001] This application claims benefit of priority of U.S. provisional application Serial No. 60/312,242 titled "System and Method for Graphically Creating, Deploying and Executing Programs in a Distributed System" filed Aug. 14, 2001, whose inventors are Jeffrey L. Kodosky, Darshan Shah and Steven W. Rogers.

FIELD OF THE INVENTION

[0002] The present invention relates to the fields of system design and distributed software programming and deployment, and more particularly to a system and method for enabling a user to more easily specify or create distributed systems and/or applications utilizing a configuration diagram. The present invention further relates to techniques for graphically distributing or deploying programs among a plurality of different devices or nodes in a distributed system.

DESCRIPTION OF THE RELATED ART

[0003] With the advent of networked computer systems, there has been a trend in computer software to provide more distributed software applications. For example, in some fields developers are attempting to distribute software applications among two or more nodes or computer systems in a network, wherein the application may comprise a plurality of different software programs executing in a plurality of different computer systems.

[0004] Measurement and automation systems are moving toward computer based systems wherein a computer system performs much of the processing, analysis, or control for measurement and automation applications. Measurement and automation systems are also moving toward network-based or distributed systems, wherein a plurality of network-based devices operate together to perform a desired measurement and/or automation function. Various new intelligent devices are also starting to appear in measurement and automation systems, such as smart sensors, smart cameras, smart motion control devices, smart distributed data acquisition devices, computer based instrument cards, PXI and VXI systems which may include intelligent controllers or reconfigurable devices, programmable logic controllers (PLCs), etc.

[0005] Computer-based measurement and automation systems which employ intelligent devices have become increasingly desirable in view of the increasing complexity of measurement and automation tasks, and the variety of intelligent or programmable instruments and devices available for use. However, due to the wide variety of possible testing and control situations and environments, and also the wide array of instruments or devices available, it is often necessary for a user to develop custom programs to control a desired system.

[0006] Increasingly, computers are required to be used and programmed by those who are not highly trained in computer programming techniques. This is particularly true in the measurement and automation fields, where engineers are often required to develop a test, measurement or automation application to accomplish a certain objective. As a result, in many cases it is extremely difficult for a user to be able to create various computer programs and distribute these programs among devices in a distributed system.

[0007] Therefore, it would be desirable to be able to provide the capability for a user or developer to easily create, distribute and/or deploy applications among various components in a distributed system.

SUMMARY OF THE INVENTION

[0008] One embodiment of the present invention comprises a system and method for creating and using configuration diagrams for configuring systems. The methods described herein may be used for various types of operations in configuring, managing and specifying systems and devices, including creating programs, managing programs in the system, deploying programs to various distributed devices, configuring remote execution or inter-operation of distributed programs, and executing distributed applications. Embodiments of the present invention may also be used for device configuration, data distribution among or between devices, system and I/O configuration, data storage/management, and debugging and performance analysis. Embodiments of the invention may utilize graphical iconic-based techniques for performing the above operations.

[0009] In one embodiment, the user may create or assemble a configuration diagram on a computer system (e.g., the "main" computer system) representing a system, e.g., a distributed system. The configuration diagram may include device icons that represent devices in the system. The device icons preferably have an appearance which corresponds to the device they represent. This allows the viewer to easily view and consider what devices are present in the system. Thus, in a system which comprises two or more devices coupled to each other, such as through a network, a serial or parallel bus, or through wireless means, etc., the configuration diagram may include a device icon for each of the devices present in the system. The user may at least partially create or assemble the configuration diagram, or the configuration diagram may at least partially be automatically or programmatically created, or both.

[0010] One or more of the device icons may also store information associated with its respective device, such as information regarding I/O channels, data points, current configuration, calibration information, etc. The user may select a device icon to configure or view I/O channels, data points, and/or other information or elements associated with the device.

[0011] The configuration diagram may display connections between the device icons. The displayed connections may correspond to couplings between the plurality of devices. In one embodiment, the displayed connections between respective device icons have an appearance to visually indicate a type of connection between the devices corresponding to the respective device icons. For example, the displayed connections may have an appearance that varies according to one or more of color, size or shading to indicate the type of connection between the devices. The appearance of the respective connections may indicate whether the connection is a network connection, internal bus connection, external parallel bus connection, external serial bus connection (e.g., USB or IEEE 1394) or a wireless connection. The appearance of the respective connections may also, or instead, indicate the type of data or material flow between devices. In another embodiment, the configuration diagram may include labels displayed proximate to the connections to visually indicate types of connection. The displayed connections or displayed information may also operate to indicating cabling or connection requirements, or recommend cabling or connection types between devices.

[0012] The configuration diagram may also display program icons corresponding to programs present in the system, e.g., programs residing in the various devices or programs available for deployment to the various devices. The program icons may be displayed associated with or proximate to the respective device icons corresponding to the respective devices in which the programs reside. The user may also at least partially create one or more programs which perform a desired function within the system. For example, the user can create a program (or select an existing program), create a program icon for the program, if necessary, and iconically deploy the program icon to a device. As described below, the user may create or modify programs using the configuration diagram.

[0013] The program icons may be displayed with connections to visually indicate their relationship, such as their invocation (e.g., caller/callee) relationship. Thus the configuration diagram may display an iconic relationship view of the various programs present within the system. The iconic relationship view may comprise an object-oriented view, a hierarchy view, a tree view, a data flow view, an execution flow view, a control flow view, or combinations thereof. Thus, in the case of a program which is configured as a hierarchy of a main program and one or more sub-programs, the system may display a hierarchy view comprising an icon representing the main program and an icon representing each of the one or more sub-programs, wherein the icons are arranged and/or are shown as being connected in the respective hierarchy. In the case of a plurality of software objects configured to invoke methods and trigger events on each other, the system may display an object-oriented view comprising an icon representing each of the programs, and possibly connections indicating the method invocation and/or event messaging. In the case of a graphical program which is configured as a hierarchy of a main graphical program and one or more sub-graphical programs (e.g., a main VI and one or more sub-VIs), the system may display a hierarchy view comprising an icon representing the main graphical program, an icon representing each of the one or more sub-graphical programs, and connections between the program icons visually indicating the hierarchy.

[0014] The iconic relationship view of the various software programs may be displayed in the configuration diagram, or may be displayed in a separate window on the display. In one embodiment, the program icons are displayed in the configuration diagram proximate to (or connected to) the device icons of the devices in which they are stored. Connections are displayed between the various program icons to visually indicate their invocation relationship. As another example, the program icons may be displayed in a separate window to avoid cluttering the configuration diagram.

[0015] The configuration diagram may also display a GUI or palette of program icons corresponding to programs that may be included in the user's system. For example, the user of the main computer system may access a server and view a palette of program icons, from which the user may select program icons to include in his/her configuration diagram.

[0016] The configuration diagram may support various types of views, such as an entire system view, a subsystem view, a device view, a program view, etc. For example, the user can "drill down" in the configuration diagram to view a selected portion of the diagram, e.g., a selected subsystem of devices, a single device, the programs associated with a device, the data points associated with a device, the I/O channels associated with a device, etc.

[0017] In one embodiment, the configuration diagram may at least partly be automatically or programmatically created by the computer system based on an automatic detection of devices, programs, and/or other elements resident in the system. For example, Plug & Play software or other detection software may detect devices present in the system, their interconnections or couplings, information associated with the various devices, and programs resident in the various devices, and automatically display a portion or all of a configuration diagram. For example, the computer system may perform an automatic detection and automatically display device icons corresponding to detected devices and connections (e.g., "connection icons" or "wires") between respective device icons corresponding to the couplings between devices automatically detected in the system. The connections between device icons that are automatically displayed may be displayed with an appearance indicating the type of detected connection. The detection software may also automatically detect programs present in the system and display corresponding program icons. In a similar manner, software may also detect the relationship (e.g., invocation relationship) among programs resident in the various devices in the system and automatically display connections between the program icons to visually indicate the determined relationship. Detection software may also detect other elements in the system (e.g., data points, I/O channels) and display corresponding icons in the configuration diagram.

[0018] The configuration diagram may also be created at least partly based on manual user input. For example, the user may manually drag and drop device icons and/or program icons from a palette or menu to at least partially create the configuration diagram. In one embodiment, the user may manually connect device icons on the configuration diagram, such as by using a pointing device. For example, in creating or modifying a configuration diagram, the user can associate, e.g., drag and drop, or otherwise connect, a first device icon to a second device icon. For example, the user may use a pointing device (e.g., a mouse), and may possibly use a "wiring tool" icon on the display, to connect a first device icon to a second device icon. This may cause a connection, e.g., a wire, to appear between the device icons to indicate a coupling relationship between the two (or more) device icons. The connection that is displayed between two device icons may be context sensitive as described above. In other words, the connection that is displayed or created on the display may have a context or appearance that is associated with the types of devices that are being connected, the type of physical connection between the respective devices, and/or the type of data or material flow between the devices.

[0019] In one embodiment, the user may manually connect program icons on the configuration diagram, such as by using a pointing device (and/or "wiring tool" icon), to specify an invocation (caller/callee) relationship among the programs. The user may also modify connections between program icons to modify the invocation relationship among programs. For example, the user can graphically modify (e.g., using a pointing device) the connection displayed between a first program and a second program so that the connection is displayed between the first program and a third program. This graphical operation by the user may operate to change the invocation relationship between these programs (including changes to the programs themselves) so that the first program now calls the third program instead of the second program. In other words, this graphical operation may also cause a modification or addition of code in one or more of these programs to effect the change in invocation relationship.

[0020] In one embodiment, the configuration diagram (i.e., software) is operable to perform type checking of connections between device icons. The configuration diagram may also be operable to perform type checking of connections between program icons, e.g., to verify that a first program corresponding to a first program icon can invoke (or be invoked by) a second program corresponding to a second program icon.

[0021] The user may perform various operations using the configuration diagram.

[0022] In one embodiment, the user may operate to deploy programs to devices by graphically associating program icons with device icons. For example, the user may select various program icons, e.g., from the relationship view (within or outside the configuration diagram), or from a palette or other GUI, and associate them with various device icons (or other program icons) contained in the configuration diagram. This operation of associating program icons with device icons (or other program icons) in the configuration diagram may operate to deploy, either immediately or when the use selects "apply", the respective programs on the various devices which correspond to the device icons (or within a program relationship or hierarchy represented by the program icons). Deploying a program (e.g., graphically associating a program icon corresponding to a program residing in a first device with a device icon corresponding to a second device) may comprise: 1) moving the program from the first device to the second device (where the program is deleted from the first device), 2) copying the program from the first device to the second device (where the program remains stored on the first device), 3) transferring the program from the first device to the second device for remote execution on the second device, wherein the program on the second device is invoked for execution by a program on the first device, and wherein at least one program on the first device may be configured or modified to invoke the program on the second device; 4) transferring remote execution of the program from the first device to the second device, wherein the program is originally to be remotely invoked on the first device, and after the operation the program is remotely invoked on the second device, wherein the remote invocation is performed by a program or application on a different device (other than the first device or second device), such as the main computer system; or 5) creating a call or invocation in a program on the second device to invoke the program on the first device, wherein the program remains on the first device, and at least one program on the second device may be configured or modified to invoke the program on the first device. Various other deployment operations are also contemplated.

[0023] The operation of associating program icons with device icons (or other program icons) in the configuration diagram may operate to deploy, or cause to be deployed, the respective programs on the various devices which correspond to the device icons. For example, if the user selects a first program icon and associates (e.g., drags and drops) this first program icon on to a first device icon which represents a first device, and the user optionally selects "apply", this may operate to deploy a first program corresponding to that first program icon on to the first device which corresponds to that first device icon. This provides a greatly simplified mechanism for deploying programs on various devices in a distributed system.

[0024] The graphical association or deployment performed by the user as described herein is preferably graphically or visually performed and represented in the configuration diagram. Thus the configuration diagram may be visually updated to reflect the actions performed by the user. Stated another way, the configuration diagram may be updated in real time as the user performs iconic operations as described herein, such as the deployment operations discussed above. Thus the configuration diagram may display an updated iconic relationship view of the devices and distributed programs as the user associates (e.g., drags and drops) the program icons on the device icons, the program icons on other program icons, the device icons on other device icons, etc. For example, as the user drags and drops program icons (e.g., from the configuration diagram) on to various device icons on the configuration diagram, the system may operate to update the displayed relationship (e.g., hierarchy) of programs proximate to, e.g., underneath, the respective device icon to where they have been deployed, modify the appearances of icons, etc.

[0025] In one embodiment, when the user associates program icons with various device icons contained in the configuration diagram, the configuration diagram is immediately updated accordingly, but this operation of associating does not operate to deploy programs at that time. Rather, the user may be required to select an "apply" feature for the deployment to actually occur. This allows the user to view various configuration diagram options before a deployment actually occurs. In another embodiment, a preview window may be employed to allow the user to view proposed changes to a configuration diagram prior to the change being committed or applied.

[0026] In one embodiment, the user can graphically manipulate program icons to add or modify program code in the programs. For example, the user can select a first program icon or node, which may be associated with (e.g., stored on) a device (e.g. a first device), and associate this first program icon with (e.g., drag and drop onto) a second program icon of a second device (or of the first device). This may cause the code (source code) of the second program to be displayed. Alternatively, the user may first cause the source code of the second program to be displayed, and then may drag and drop the program icon into the displayed source code. The user may then further graphically navigate, e.g., move or drag, the first program icon within the source code that has been displayed and drop or place the first program icon at a respective location in the displayed source code. As a result, the first program corresponding to the first program icon may be deployed within the second program, e.g., the second program may be automatically modified to include the first program. Alternatively, the second program may be modified to invoke the first program. The first program may be deployed to the second device for execution with the second program on the second device. Alternatively, at the user's option, the first program may remain on the first device, and the second program on the second device may be configured or modified to remotely invoke the first program on the first device.

[0027] Where the second program icon corresponds to a graphical program, this association may cause the block diagram corresponding to this program icon to automatically be displayed. In this instance, the user may then further graphically navigate, e.g., move or drag, the first program icon within the block diagram that has been displayed and drop or place the first program icon at a respective location in the graphical program. This may cause the first program icon to be copied or inserted into the displayed block diagram at the selected location. Alternatively, a graphical program node may be displayed in the diagram which is associated with or operable to call the first program, and the user may graphically position this node at a desired location in the block diagram. The user may select a flow path, such as a data flow wire, in which to position or "drop" the first program icon (or node). As a result, the first program icon (or node) may be inserted on to or in the execution or data path of the selected wire in the block diagram of the graphical program and configured to execute. For example, where the first program is itself a graphical program, the first program icon may be inserted as a sub-VI in the second graphical program or block diagram. Alternatively, the first program icon (or node) may appear or be placed in a location of the block diagram, and the user may then manually connect or "wire up" the first program icon (or node) with other nodes in the block diagram.

[0028] The first program icon that is being dragged and dropped into the block diagram may also be of a different type, such as a DLL or an executable program compiled from a text based programming language, etc. When the user drags and drops this first program icon into the block diagram corresponding to the destination program icon, and on to a respective dataflow path, the first program icon (or another node) may be automatically created in the respective dataflow path that is able to invoke or call this first program, or which may otherwise represent execution of the first program. For example, if the first program is a DLL, and the user drags the first program icon on to a data flow wire of a block diagram, a node may be inserted into the block diagram that is configured to invoke the first program as a DLL. The node may have the appearance of the first program icon. Alternatively, the first program may be programmatically converted into a graphical code format, e.g., LabVIEW code.

[0029] Where the second program icon in this example corresponds to a textual programming language based program, this association of the first program icon with the second program icon may cause the textual source code corresponding to the second program icon to automatically be displayed. The user may then further graphically navigate, e.g., move or drag, the first program icon within the textual source code that has been displayed and drop or place the first program icon at a respective location in the textual source code. This may cause a call or invocation (e.g., a function call) to the first program to be copied or inserted into the displayed textual source code of the second program at the selected location. In other words, textual source code may be automatically added to the second program. The type of call inserted into the displayed textual source code of the second program may depend on whether the first program is a graphical program or another type of program. The first program corresponding to the first program icon may then be deployed to the second device for execution with the block diagram on the second device. Alternatively, at the user's option, the first program may remain on the first device, and configured for remote invocation by the textual source code program (after compilation) on the second device.

[0030] In one embodiment, the user may associate (e.g., drag and drop) a device icon into the source code of a program. For example, the user can select a first device icon, which may correspond to a device and associate this device icon with (e.g., drag and drop onto) a program icon. This may cause the code (source code) of the corresponding program to be displayed. Alternatively, the user may first cause the source code of the program to be displayed, and then may drag and drop the device icon into the displayed source code. As a result, the device icon may appear in the displayed source code. The user may then further graphically navigate, e.g., move or drag, the device icon within the source code that has been displayed and drop or place the first device icon at a respective location in the source code. In response to this operation, e.g., placement of the device icon in the program source code, additional program code may be included in the program that performs functionality associated with the device.

[0031] Where the program icon corresponds to a graphical program, this association may cause the block diagram corresponding to this program icon to automatically be displayed. In this instance, the user may then further graphically navigate, e.g., move or drag, the device icon within the block diagram that has been displayed and drop or place the device icon at a respective location in the graphical program. This may cause the device icon to be copied or inserted into the displayed block diagram at the selected location. Alternatively, a graphical program node may be displayed in the diagram which is associated with or operable to access or invoke functionality of the device, and the user may position this node at a desired location in the block diagram. The user may select a flow path, such as a data flow wire, in which to position or "drop" the device icon (or node). The device icon may then be inserted on to or in the execution or data path of the selected wire in the block diagram of the graphical program and configured to execute. The user may also manually connect or wire the device icon with other nodes in the diagram.

[0032] The user may optionally indicate an operation that is desired with respect to this device in the block diagram. In one embodiment, a graphical user interface (GUI) or configuration dialog may appear wherein the user can provide input indicating the desired operation. For example, the user may drag and drop a device icon of a first device into a block diagram, and provide user input that indicates that the block diagram should create code and/or data structures, and/or should include a node icon in the diagram, which operates to programmatically access this device to publish and/or subscribe data to/from the device.

[0033] For example, the user may create a graphical program which communicates with one or more measurement devices by dragging and dropping corresponding device icons into the graphical program diagram. As one example, the user may open a LabVIEW block diagram and create a While loop structure. The user may then drag and drop device icons corresponding to sensors into the While loop structure. This may cause the graphical program diagram to be configured to access these sensors and read data produced by these sensors.

[0034] In one embodiment, the user may graphically configure or deploy a program. The user may cause the computer system to display the source code of a program. The program may be written in a text-based programming language, or may be a graphical program. The computer system display may also include a configuration diagram that displays a first device icon that corresponds to a first device. The user may then select a portion of the source code of the program and graphically associate the portion of the source code with the first device icon. Where the program is written in a text-based programming language, the user may highlight the desired source code portion (e.g., highlight the C code portion, such as a subroutine) and drag and drop this code portion onto the device icon. Where the program is written in a graphical programming language, the user may select one or more nodes in the graphical program and drag and drop them on one or more device icons. This graphical association may cause deployment of the source code portion onto the first device for execution on the first device. In addition, the system may modify the program to configure the program to invoke execution of the source code portion on the first device. Thus, when the program executes, the program invokes execution of the source code portion on the first device.

[0035] As an example of the embodiment described above, the user can graphically configure nodes in a graphical program for remote execution. For example, where the program is a graphical program, such as a LabVIEW VI, the system may display the block diagram of the graphical program. The user can select nodes in the graphical program and associate, e.g., by drag and drop or menu selection techniques, these graphical program nodes with device icons (or program icons) in the configuration diagram. As a result, the functionality (program instructions and/or data structures) of the node (or nodes) may be deployed to the selected remote devices. A new icon may be displayed in the block diagram to visually indicate to the user that this node is being remotely executed. The new icon may be a modified node icon which includes at least a portion of the appearance of the original node, as well as an additional image portion to indicate the remote execution. For example, the icon in the block diagram may change its appearance to visually indicate to the user that this node (the code represented by this node) is deployed on a remote device and will execute on the remote device. The deployment of a sub-program of a graphical program block diagram on a remote device is particularly useful where there are multiple instances of the same sub-program in the main graphical program, and the user desires to select a particular sub-program for deployment.

[0036] This graphical association may involve determining if the device is capable of executing graphical programming code. If the device is not capable of executing graphical programming code, the graphical program code corresponding to this node may be automatically converted to a DLL, hardware configuration program, or other appropriate software format.

[0037] Therefore, as described above, where a program icon on the configuration diagram corresponds to a graphical program, the user may perform various additional operations. As another example, if the user desires to choose a specific location in the graphical program to have a call made to a remote device, this may be performed graphically within the graphical program. In other words, if the user desires to choose a particular function node in the graphical program to make a call or invoke a program on a remote device (e.g., different computer), this may be easily performed using the block diagram of the graphical program and graphical association techniques described herein. Additionally, as described above, if the user desires to have one or more nodes or sub-programs in the graphical program execute on a remote device, this may also be performed easily using the graphical association techniques described herein. The user may further incorporate device icons or program icons directly into a desired location in a graphical program using the graphical association techniques described herein. This provides a simple graphical mechanism for distributing functionality of a graphical program among various devices in a system. The user can simply drag and drop nodes in the graphical program on to various device icons to distribute the functionality represented by these nodes among the various devices.

[0038] The operation of associating icons with other icons (e.g., associating program icons with device icons, program icons with other program icons, device icons with program icons, etc.) in the configuration diagram may be performed with "drag and drop" techniques, menu-based techniques, dialog box techniques, speech recognition techniques, or other techniques.

[0039] In one embodiment, the user may be able to include an asynchronous data flow node or icon in two or more block diagrams or graphical programs to allow distributed execution among the two or more block diagrams or graphical programs. An asynchronous data flow icon may include two portions which are related to the same queue or memory. One portion of the asynchronous data flow icon may be a reader portion and the other portion may be a writer portion. The user may distribute the reader and writer portions with different devices or different programs, e.g., using the association techniques described above. Thus, a writer portion of the asynchronous data flow node in a first block diagram may operate to write data to the queue, and a reader portion of the asynchronous data flow node (or a different asynchronous data flow node) in a second different block diagram may operate to read data from this queue. These reads and writes may occur asynchronously to each other. This allows a first block diagram to communicate data to a second block diagram, wherein the data may be communicated asynchronously with respect to the second block diagram. This asynchronous data flow may also be configured for bi-directional communication, i.e., with readers and writers in both the first and second block diagrams or graphical programs. This asynchronous data flow may be particularly desirable between a computer system and a remote device.

[0040] In another embodiment, remote debugging of graphical program block diagrams may be performed in a distributed system. For example, where a graphical program is deployed on a remote device, the user at the main computer may be able to select the device icon and/or select a respective program icon associated with the device and view the block diagram of the graphical program. The user may thus be able to view the block diagram on the display of the main computer system, wherein this block diagram is actually executing on a remote device. The user may then be able to use various debugging tools that are useful with respect to block diagrams, such as break points, single stepping, and execution highlighting.

[0041] The user thus may be able to use the displayed block diagram as a graphical user interface for debugging the block diagram executing on the remote device. The user can single step through the block diagram executing on the remote device using the block diagram GUI displayed on the main computer system display. Also, as a block diagram executes on a remote device, the user may be able to view the block diagram on the main computer system, wherein the respective nodes in the block diagram displayed on the main computer system are highlighted as these nodes execute on the remote device. The user may also be able to view the data output from each of the respective nodes on the block diagram displayed on the main computer system as the respective nodes produce data executing on the remote device.

[0042] The user may use the configuration diagram to start execution of the programs contained in the devices. As the various programs execute, the configuration may be animated to visually indicate which programs and/or devices are executing. For example, the various program icons and/or device icons may be highlighted to visually indicate which programs and/or devices, respectively, are executing.

[0043] The user may incorporate programs into the configuration diagram from any of various devices, including remote servers coupled to a network, such as the Internet. For example, in a measurement application, a server at National Instruments may store or host various measurement applications or programs that can be used by any user, or registered users. The user may choose to connect to a server and view icons corresponding to the programs, applications, or projects present on the server, and incorporate these program icons (or application or project icons) into the configuration diagram using graphical association techniques described herein. The programs used or represented in the configuration diagram may be any of various types, including software programs of various types, hardware configuration programs, etc. The user may also select an entire configuration diagram from the server.

[0044] The user may use the configuration diagram as a mechanism for specifying devices to be purchased from a vendor. For example, the user can assemble a configuration diagram including device icons which represent devices (and/or programs) that the user desires to use or purchase for his/her system. The user may then connect to a server computer system and provide the configuration diagram as a specification for the devices and/or programs the user desires +to purchase. The server computer system, which may be located at a manufacturing site, may receive the configuration diagram, determine the desired devices from the configuration diagram, and present information to the user indicating the total cost for the requested devices. The user may then choose to purchase one or more of the recommended devices from the server computer system. These devices may then be shipped to the user. In another embodiment, the server may programmatically query the devices and/or programs present in the user system, and generate a configuration diagram that is displayed on the user's computer system representing the current state of the user's system. The user may then add device icons and/or program icons from a palette on the server or the client computer to indicate desired modifications to the user system. This updated configuration diagram may then be provided back to the server as a purchase request as described above.

BRIEF DESCRIPTION OF THE DRAWINGS

[0045] 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:

[0046] FIG. 1 illustrates a network system comprising two or more computer systems that may implement an embodiment of the present invention;

[0047] FIG. 2A illustrates an instrumentation system according to one embodiment of the invention;

[0048] FIG. 2B illustrates an industrial automation system according to one embodiment of the invention;

[0049] FIG. 3 illustrates an exemplary distributed measurement system according to one embodiment of the invention;

[0050] FIG. 4 is an exemplary block diagram of the computer systems of the preceding Figures;

[0051] FIG. 5 is a block diagram of an exemplary development environment for creating and using configuration diagrams;

[0052] FIG. 6 is a flowchart diagram illustrating creating a configuration diagram and using the configuration diagram to graphically configure program deployment and/or invocation, e.g., deploy programs on devices in the system;

[0053] FIG. 7 is a flowchart diagram illustrating creation of a configuration diagram according to one embodiment of the invention;

[0054] FIG. 8 is a flowchart diagram illustrating display of program icons or element icons corresponding to programs or elements comprised in a device;

[0055] FIG. 9 is a flowchart diagram illustrating deploying a program on to a device according to one embodiment of the invention;

[0056] FIG. 10 is a flowchart diagram illustrating examining a program type of a program and selectively converting the program to a type compatible with the destination device;

[0057] FIG. 11 is a flowchart diagram illustrating various operations that may be performed when moving a program icon from source device icon to a destination device icon;

[0058] FIG. 12 is a flowchart diagram illustrating association of a program icon from a remote device to the main computer system to configure the main computer system to invoke the program;

[0059] FIG. 13A is a flowchart diagram illustrating various operations that may be performed on a program icon;

[0060] FIG. 13B is a flowchart diagram illustrating execution of an application;

[0061] FIG. 14 illustrates a configuration dialog which may be used in creating a configuration diagram;

[0062] FIGS. 15-19 are screen shots illustrating graphical deployment or invocation changes of programs in exemplary simple configuration diagrams;

[0063] FIG. 20A illustrates selection of options on the configuration diagram;

[0064] FIG. 20B illustrates selection of a "Remote Call" feature;

[0065] FIGS. 21A and 212B illustrate exemplary configuration diagrams for a measurement system;

[0066] FIG. 22 is a flowchart diagram illustrating creation of a graphical program;

[0067] FIG. 23 is a flowchart diagram illustrating configuration of a node in a graphical program for remote execution;

[0068] FIG. 24A illustrates an exemplary block diagram of a graphical program where the user is configuring a remote call of a node;

[0069] FIG. 24B illustrates the exemplary block diagram of FIG. 24A after the user has deployed the node to a remote device for remote execution;

[0070] FIG. 25 is a flowchart diagram illustrating graphically incorporating a program icon from a remote device into another program;

[0071] FIG. 26 is a flowchart diagram illustrating creation of a graphical program which includes incorporation of device icons into the graphical program;

[0072] FIGS. 27A-E are screen shots illustrating a sequence where the user drags a device icon onto another configuration diagram, selects a particular device icon in the configuration diagram, selects a particular program icon, and inserts the device icon into the program represented by the program icon;

[0073] FIGS. 28A and 28B are screen shots illustrating incorporating a program icon from a configuration diagram into a graphical program;

[0074] FIG. 29 illustrates a simple configuration diagram where the user has selected a device icon to configure the device;

[0075] FIG. 30 illustrates the configuration diagram of FIG. 30 where the user has selected an option to view I/O channels and data points of a device icon, and a context-sensitive help window is displayed;

[0076] FIG. 31 illustrates operation whereby a user drags and drops a program icon from a first device icon onto a second device icon;

[0077] FIG. 32 illustrates operation whereby a user selects a data point element from the configuration diagram and drags and drops the data point element from the configuration diagram on to the front panel of a graphical program;

[0078] FIG. 33A illustrates operation whereby a user selects a data point element from the configuration diagram and drags and drops the data point element from the configuration diagram on to the block diagram of a graphical program;

[0079] FIG. 33B illustrates operation whereby a user "wires up" an icon representing the data point element with other nodes or graphical program elements in the block diagram;

[0080] FIG. 34 illustrates operation whereby a user selects a program icon to start operations;

[0081] FIG. 35 illustrates exemplary service icons that can be used to control device execution; and

[0082] FIG. 36 illustrates operation whereby a user desires to copy settings from a device icon to another device icon.

[0083] 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

[0084] Incorporation by Reference

[0085] The following references are hereby incorporated by reference in their entirety as though fully and completely set forth herein:

[0086] U.S. Pat. No. 4,914,568 titled "Graphical System for Modeling a Process and Associated Method," issued on Apr. 3, 1990.

[0087] U.S. Pat. No. 5,481,741 titled "Method and Apparatus for Providing Attribute Nodes in a Graphical Data Flow Environment".

[0088] U.S. Pat. No. 6,173,438 titled "Embedded Graphical Programming System" filed Aug. 18, 1997.

[0089] U.S. Pat. No. 6,219,628 titled "System and Method for Configuring an Instrument to Perform Measurement Functions Utilizing Conversion of Graphical Programs into Hardware Implementations," filed Aug. 18, 1997.

[0090] U.S. patent application Ser. No. 09/617,600 titled "Graphical Programming System with Distributed Block Diagram Execution and Front Panel Display," filed Jun. 13, 2000.

[0091] U.S. patent application Ser. No. 09/745,023 titled "System and Method for Programmatically Generating a Graphical Program in Response to Program Information," filed Dec. 20, 2000.

[0092] U.S. Provisional Patent Application Serial No. 60/312,242 titled "System and Method for Graphically Creating, Deploying and Executing Programs in a Distributed System" filed Aug. 14, 2001.

[0093] The LabVIEW and BridgeVIEW graphical programming manuals, including the "G Programming Reference Manual", available from National Instruments Corporation, are also hereby incorporated by reference in their entirety.

[0094] FIG. 1--Computer Network

[0095] FIG. 1 illustrates an exemplary system including a first computer system 82 that is coupled to a second computer system 90 over a network. The computer system 82 may be coupled through a network 84 (or a computer bus) to the second computer system 90. The computer systems 82 and 90 may each be any of various types, as desired. Also, the network 84 can also be any of various types, including a LAN (local area network), WAN (wide area network), the Internet, or an Intranet, among others.

[0096] The first and second computer systems 82 and 90 may comprise devices that form at least a portion of a system, such as a distributed system. Alternatively, the computer system 82 may comprise part of the system, and the server computer system 90 may provide various services to the system, such as a selection of programs and/or devices for the system, or generation of a configuration diagram for the system as described herein.

[0097] Additional computer systems (not shown) may also couple to the first and/or second computer systems 82 and 90. Various other devices may connect or couple to one or more of the computer systems 82 and 90, or to other computer systems in the system. For example, any one or more of the devices shown in FIGS. 2A and 2B may couple to one or both of the computer systems 82 and 90. In addition, the system may comprise a single computer system, such as computer system 82, coupled to one or more other devices.

[0098] As used herein, the term "system" is intended to include a system comprising two or more interconnected or coupled devices, i.e., two or more devices that are coupled together in some fashion. The two or more devices may be coupled together via wired or wireless means. Wired means may include a network, such as a local area network (LAN) and/or a wide area network (WAN), such as the Internet, a computer bus, a serial or parallel bus, or other wired communication methods. Example local area networks include Ethernet networks, Token Ring networks, and various industrial communication networks such as Foundation Fieldbus, DeviceNet, and CAN (Controller Area Network) networks. Example parallel buses include the PCI bus, PXI bus, GPIB, and VXI bus, among others. Example serial buses include USB (Universal Serial Bus), IEEE 1394, RS-242, and RS-485, among others. Wireless means may include wireless protocols such as IEEE 802.11 (wireless Ethernet), Bluetooth, and other types of wireless communication.

[0099] As used herein, the term "device" is intended to have its ordinary meaning as any of various types of devices, units or components. The term "device" is intended to include "programmable devices" and "non-programmable devices".

[0100] As used herein, the term "programmable device" is intended to include any of various types of devices that include one or more of: 1) a processor and memory; or 2) a programmable hardware element or reconfigurable logic. Exemplary types of processors include a conventional microprocessor or CPU (such as an X86, PowerPC, SunSparc, etc.), a digital signal processor (DSP), microcontroller, or other type of processor. Exemplary types of programmable hardware elements include a programmable logic device (PLD), e.g., an FPGA (field programmable gate array), or other types of reconfigurable logic. It is noted that a program may typically only be deployed to or stored on a programmable device. In the description that follows, references to devices in the context of deploying, storing, or modifying programs on the device generally refer to programmable devices.

[0101] Exemplary types of programmable devices include computer systems; network devices; personal digital assistants (PDAs); television systems; measurement devices (including instruments, industrial automation devices, process control devices, smart data acquisition devices, smart sensors (including smart cameras), smart actuators, video devices (e.g., digital cameras, digital video cameras); audio devices; computer peripherals; telephones; appliances; or other processor-based or programmable hardware-based devices. Exemplary measurement and automation devices include any of the devices shown in FIGS. 2A and 2B. Exemplary network devices include network interface cards, routers, bridges, switches, hubs, etc.

[0102] The term "non-programmable device" is intended to include any of various components, such as transducers, sensors, connector blocks, cabling, and other non-programmable devices.

[0103] As used herein, the term "computer system" may include any type of computer system, including a personal computer system, mainframe computer system, workstation, network appliance, Internet appliance, etc. In general, the term "computer system" can be broadly defined to encompass any device having at least one processor that executes instructions from a memory medium.

[0104] As used herein, the term "application" includes one or more programs. An application may comprise a plurality of programs which operate together to perform a function or accomplish a certain result. The plurality of programs may operate together in a system, wherein various programs may be deployed to various devices in the system for distributed execution. An application may thus comprise a plurality of programs distributed among a plurality of devices for distributed execution. An application may also include other data structures such as configuration files for configuring hardware devices, help files, supporting documentation, etc. The term "project" may be used similarly to an "application".

[0105] As used herein, the term "program" is intended to include 1) a software program which may be stored in a memory and is executable by a processor or 2) a hardware configuration program useable for configuring a programmable hardware element or reconfigurable logic. A software program may be any type of code, script and/or data that may be stored in a memory medium and executed by a processor. Exemplary software programs include programs written in text-based programming languages, such as C, C++, Pascal, Fortran, Cobol, Java, etc.; programs written in assembly language; programs written in graphical programming languages; programs that have been compiled to machine language; scripts; and other types of executable software. Exemplary hardware configuration programs include netlists or bit files for elements such as FPGAs and other reconfigurable hardware.

[0106] As used herein, the term "graphical program" or "block diagram" is intended to include a program comprising graphical code, e.g., two or more interconnected nodes or icons, wherein the interconnected nodes or icons may visually indicate the functionality of the program. The nodes may be connected in one or more of a data flow, control flow, and/or execution flow format. The nodes may also be connected in a "signal flow" format, which is a subset of data flow. Thus the terms "graphical program" or "block diagram" are each intended to include a program comprising a plurality of interconnected nodes or icons which visually indicate the functionality of the program.

[0107] A "data flow" graphical program or diagram refers to a plurality of interconnected nodes or icons, wherein the interconnections among the nodes visually indicate that data produced by one node is used by another node. A "data flow" graphical program or diagram may also include one or more control flow constructs or other non-data flow constructs.

[0108] A graphical program may also optionally comprise a user interface or front panel. The user interface may be contained in the block diagram of the graphical program or may be contained in one or more separate panels or windows (or both). The user interface of a graphical program may include various graphical user interface elements or front panel objects, such as user interface controls and/or indicators, that represent or display the respective input and/or output that will be used by the graphical program or VI, and may include other icons which represent devices being controlled. The user interface or front panel may be comprised in a single window of user interface elements, or may comprise a plurality of individual windows each having one or more user interface elements, wherein the individual windows may optionally be tiled together. As another example, the user interface or front panel may comprise user interface or front panel objects, e.g., the GUI, embedded in the block diagram. The user interface of a graphical program may display only output, only input, or both input and output. The term "front panel" refers to a user interface wherein the user is able to interactively control or manipulate the input being provided to the graphical program and view resulting output. Any of various types of programs may include a user interface or front panel, including graphical programs, text-based programs, etc.

[0109] Examples of graphical program development environments that may be used to create graphical programs include LabVIEW, DasyLab, and DiaDem from National Instruments, VEE from Agilent, WiT from Coreco, Vision Program Manager from PPT Vision, SoftWIRE from Measurement Computing, Simulink from the MathWorks, Sanscript from Northwoods Software, Khoros from Khoral Research, SnapMaster from HEM Data, VisSim from Visual Solutions, ObjectBench by SES (Scientific and Engineering Software), and VisiDAQ from Advantech, among others. In the preferred embodiment, the system uses the LabVIEW graphical programming system available from National Instruments.

[0110] A program for performing an instrumentation, measurement, automation or simulation function, such as measuring phenomena of a Unit Under Test (UUT) or device, controlling or modeling instruments, controlling or measuring a system or process, or for modeling or simulating devices, may be referred to as a virtual instrument (VI).

[0111] As shown in FIG. 1, at least one of the computer systems 82 and/or 90 may be referred to as the "main" computer system, i.e., the computer system used by the user in creating, using and/or executing a configuration diagram. For example, computer system 82 may be referred to as the main computer system. Thus, the computer system 82 may include a display device operable to display a graphical user interface (GUI). The graphical user interface may comprise any type of graphical user interface, e.g., depending on the computing platform. The GUI may be useful in assembling, creating, using and/or executing a configuration diagram as described herein. Multiple computer systems may also be used in assembling a configuration diagram.

[0112] As described below, a configuration diagram may comprise one or more device icons which each correspond to a device in the system. A configuration diagram may also comprise one or more program icons which each correspond to a program in the system. A configuration diagram may also comprise one or more system icons and/or one or more application icons or project icons. A configuration diagram may comprise various other icons, e.g., for I/O channels or data points of a device. A configuration diagram may also display connections between icons, such as physical connections between device icons and/or invocation or caller/callee connections between program icons.

[0113] As described below, the configuration diagram may be useful in representing the configuration of a system, e.g., for documentation or specification purposes. The configuration design may also be useful in deploying programs among a plurality of devices in the system. The configuration diagram may also be used in creating one or more programs and deploying these created programs in the system. The configuration diagram may further be useful in displaying and/or executing an application comprising a plurality of programs distributed among a plurality of devices in a system. The configuration diagram may further be useful in controlling device or program execution. The configuration diagram may be used for other purposes as well. The display device may also be operable to display a graphical program block diagram of a deployed program, or other source code of a deployed program. The display device may also be operable to display a graphical user interface or front panel of deployed programs, wherein the GUI or front panel of deployed programs may be selectively displayed using the configuration diagram.

[0114] The computer system 82 and/or 90 may include a memory medium(s) on which one or more computer programs or software components according to one embodiment of the present invention may be stored. For example, the memory medium may store one or more programs which are executable to create, present and/or allow use of a configuration diagram as described herein. Also, the memory medium may store a programming development environment application used to create and/or execute programs. For example, the memory medium may store a graphical programming development environment application used to create and/or execute graphical programs, such as LabVIEW. The memory medium may also store various programs in the system. The memory medium may also store operating system software, as well as other software for operation of the computer system.

[0115] 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, Rambus RAM, 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 programs are 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 may provide program instructions to the first computer for execution.

[0116] The software programs which implement embodiments of the present invention may be stored in a memory medium of the respective computer 82, or in a memory medium of another computer, and executed by the CPU. The CPU executing code and data from the memory medium thus may comprise a means for performing the methods described herein. For example, the CPU executing code and data from the memory medium may comprise a means for graphically specifying or creating a configuration diagram, creating applications or programs utilizing a configuration diagram and/or enabling a user to graphically distribute, deploy, configure and/or execute programs among a plurality of different devices or nodes in a system according to the description herein.

[0117] FIGS. 2A and 2B--Instrumentation and Industrial Automation Systems

[0118] The following describes embodiments of the present invention involved with creating distributed applications which perform test, measurement and/or automation functions, including control and/or modeling of instrumentation or industrial automation hardware. 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, the following description is exemplary only, and the present invention may be used in any of various types of systems. Thus, the system and method of the present invention is operable to be used in any of various types of applications, including distributed systems which include other types of devices such as multimedia devices, video devices, audio devices, telephony devices, Internet devices, network devices, etc.

[0119] FIG. 2A illustrates an exemplary instrumentation system 100 which may implement embodiments of the invention. The system 100 comprises a host computer 82 which connects to one or more measurement devices or instruments. The host computer 82 may comprise a CPU, a display screen, memory, and one or more input devices such as a mouse or keyboard as shown. Each of (or at least a subset of) the measurement devices may include a processor and/or a programmable hardware element, and may be capable of receiving and executing programs in a distributed application. The computer 82 may couple to one or more other computers, such as computer 90, over a network, wherein the one or more other computers may form part of the distributed system. The computer 82 may operate with the one or more measurement devices to analyze, measure or control a unit under test (UUT) or process 150 or to perform simulation of a system, such as hardware-in-the-loop simulation.

[0120] The one or more measurement devices or 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 (or machine vision) 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.

[0121] The GPIB instrument 112 may be coupled to the computer 82 via the GPIB interface card 122 provided by the computer 82. In a similar manner, the video device 132 may be coupled to the computer 82 via the image acquisition card 134, and the motion control device 136 may be coupled to the computer 82 through the motion control interface card 138. The data acquisition board 114 may be coupled to the computer 82, 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.

[0122] 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 82, such as a PCI bus slot, a PC Card slot, or an ISA, EISA or MicroChannel bus slot provided by the computer 82. However, these cards 122, 134, 138 and 114 are shown external to computer 82 for illustrative purposes. These devices may also be connected to the computer 82 through a serial bus or through other means.

[0123] The VXI chassis or instrument 116 may be coupled to the computer 82
via a VXI bus, MXI bus, or other serial or parallel bus provided by the computer 82. The computer 82 may include VXI interface logic, such as a VXI, MXI or GPIB interface card (not shown), which interfaces to the VXI chassis 116. The PXI chassis or instrument may be coupled to the computer 82 through the computer's PCI bus.

[0124] A serial instrument (not shown) may also be coupled to the computer 82 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 82. In typical instrumentation control systems an instrument will not be present of each interface type, and in fact many systems may only have one or more instruments of a single interface type, such as only GPIB instruments.

[0125] The measurement devices or instruments may be coupled to a unit under test (UUT) or process 150, or may be 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, an image processing or machine vision application, a process control application, a man-machine interface application, a simulation application, or a hardware-in-the-loop validation application.

[0126] FIG. 2B illustrates an exemplary industrial automation system 160
which may implement embodiments of the invention. The industrial automation system 160 is similar to the instrumentation or test and measurement system 100 shown in FIG. 2A. Elements which are similar or identical to elements in FIG. 2A have the same reference numerals for convenience. The system 160 may comprise a computer 82 which connects to one or more devices or instruments. The computer 82 may comprise a CPU, a display screen, memory, and one or more input devices such as a mouse or keyboard as shown. Each of the devices shown in FIG. 2B may include a processor and/or a programmable hardware element, and may be capable of receiving and executing programs in a distributed application. The computer 82 may couple to one or more other computers, such as computer 90, over a network, wherein the one or more other computers may form part of the distributed system. The computer 82 may operate with the one or more devices to measure or control a process or device 150. The distributed system may 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.

[0127] 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 185, such as the Fieldpoint system available from National Instruments, among other types of devices.

[0128] The DAQ card 114, the PXI chassis 118, the video device 132, and the image acquisition card 134 may be connected to the computer 82 as described above. The serial instrument 182 may be coupled to the computer 82 through a serial interface card 184, or through a serial port, such as an RS-232 port, provided by the computer 82. The PLC 176 may couple to the computer 82 through a serial port, Ethernet port, or a proprietary interface. The fieldbus interface card 172 may be comprised in the computer 82 and may interface 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 82 as described above. However, these cards 114, 184, 172, 134, and 138 are shown external to computer 82 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 may be coupled to the device or process 150.

[0129] As used herein, the term "measurement device" or "instrument" is intended to include any of the devices that are adapted to be connected to a computer system as shown in FIGS. 2A, 2B and 3, traditional "stand-alone" instruments, as well as other types of measurement and control devices. The term "measurement function" may include any type of data acquisition, measurement or control function, such as that implemented by the instruments shown in FIGS. 2A, 2B and 3. For example, the term "measurement function" includes acquisition and/or processing of an image. As described below, a distributed program (e.g., a distributed graphical program) may be created that implements a measurement function. For example, the program may be used to acquire a signal and perform the measurement function on the acquired signal.

[0130] In the embodiments of FIGS. 2A and 2B above, one or more of the various instruments may couple to the computer 82 over a network, such as the Internet. In one embodiment, the user operates to select one or more target instruments or devices from a plurality of possible target devices for programming or configuration according to the methods described herein. Thus the user may create a program on a computer, such as computer 82, and use the program in conjunction with one or more target devices or instruments that are remotely located from the computer 82 and coupled to the computer 82 through a network. As described below, according to one embodiment of the invention, the user may use a configuration diagram to graphically create and distribute or deploy programs among a number of different devices in a distributed system. The configuration diagram may also be used to initiate execution of the programs, and optionally to control and/or monitor execution of the programs.

[0131] Software programs which perform data acquisition, analysis and/or presentation, e.g., for measurement, instrumentation control, industrial automation, or simulation, such as in the applications shown in FIGS. 2A and 2B, may be referred to as virtual instruments.

[0132] Although in the preferred embodiment the methods described herein are involved with measurement and automation applications, including data acquisition/generation, analysis, and/or display, and for controlling or modeling instrumentation or industrial automation hardware, as noted above the present invention can be used for a plethora of applications and is not limited to measurement, instrumentation or industrial automation applications. In other words, FIGS. 2A and 2B are exemplary only, and the present invention may be used in any of various types of systems. Thus, the system and method is operable for creating and using configuration diagrams for deploying programs in distributed systems for any of various types of applications.

[0133] Network System

[0134] As one example, embodiments of the invention may be used to create, configure, deploy and/or execute programs for network systems. Exemplary network systems may include a main computer system that couples to one or more network devices, such as switches, bridges, routers, hubs, network processors, etc. A configuration diagram for a network system may include device icons that represent the various network devices, as well as program icons that represent programs in the system. Programs may be created, configured and/or deployed among the network devices, (including having their invocation relationships changed) using the configuration diagram and the methods described herein.

[0135] FIG. 3--Distributed Measurement System

[0136] FIG. 3 is a block diagram of an exemplary distributed measurement system. As shown, an exemplary measurement system may include a computer system 82 having a display. The computer system 82 may couple through one or more networks or buses to various measurement devices.

[0137] In this exemplary embodiment, the computer 82 may couple through the Internet to a second computer 90 and to a database 92. The computer 82 may couple to a PCI/PXI chassis 118 comprising one or more DAQ cards, which in turn couple to one or more Plug & Play analog sensors 123 or other sensors 127. The computer 82 may couple to a distributed I/O system (or distributed data acquisition system) 185, such as the Fieldpoint system available from National Instruments, which in turn couples to one or more Plug & Play analog sensors 123 or other sensors 127. The computer 82 may couple to a PCI/PXI chassis 118 comprising one or more industrial network cards, such as a CAN interface card 173 and a serial interface card 184, which in turn may couple to one or more networked smart sensors 125. The computer 82 may couple to a PXI system 118 and/or distributed I/O system 185, which in turn couples to one or more DAQ modules 115
connected in a wired manner, such as through a serial, parallel, or network bus. The DAQ modules 115 may couple to one or more Plug & Play analog sensors 123, smart sensors 125, or other sensors 127. The PXI system 118 and/or distributed I/O system 185 may also couple to one or more wireless DAQ modules 117 connected in a wireless manner. The wireless DAQ module 117 may couple to one or more Plug & Play analog sensors 123 and/or other sensors 127.

[0138] The exemplary distributed measurement system may include a RIO (Reconfigurable I/O) system as described in U.S. Provisional Patent Application Serial No. 60/312,242 titled "System and Method for Graphically Creating, Deploying and Executing Programs in a Distributed System" filed Aug. 14, 2001.

[0139] The computer system 82 may serve as the central console (or main computer system) of the distributed measurement system. The display of the computer system 82 may be used to assemble a configuration diagram of the distributed measurement system. The configuration diagram may include various device icons that represent or correspond to the various physical ("real") devices, and possibly virtual or simulated devices, that are present in the