Having interactive or visual

Graphical system for modelling a process and associated method

5732277

Abstract

A method for programming a computer to execute a procedure is based on a graphical interface which utilizes data flow diagrams to represent the procedure. The method stores a plurality of executable functions, scheduling functions, and data types. A data flow diagram is assembled in response to the user input utilizing icons which correspond to the respective executable functions, scheduling functions, and data types which are interconnected by arcs on the screen. A panel, representative of an instrument fron panel having input and output formats is likewise assembled for the data flow diagram. An executable program is generated in response to the data flow diagram and the panel utilizing the executable functions, scheduling functions, and data types stored in the memory. Furthermore, the executable functions may include user defined functions that have been generated using the method for programming. In this manner, a hierarchy of procedures is implemented, each represented by a data flow diagram.


Claims

What is claimed is:

1. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one iteration icon for controlling multiple iterations of operations, wherein said iteration icon includes an interior portion;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said at least one iteration icon, wherein said displaying on the screen said at least a portion of the graphical program includes arranging on the screen said at least a portion of the graphical program and said at least one iteration icon such that said at least a portion of the graphical program is displayed on the screen substantially inside said at least one iteration icon; and

executing said graphical program, wherein said executing comprises:

executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for said multiple iterations.

2. The method of claim 1, wherein said at least one iteration icon references software executing in the computer system for performing said multiple iterations of operations.

3. The method of claim 1, wherein said at least one iteration icon includes an iteration portion which receives the number of said multiple iterations to be performed, the method further comprising:

receiving, in response to user input, a number N which indicates the number of said multiple iterations to be performed; and

wherein said executing said at least a portion of the graphical program comprised in said at least one iteration icon executes for said number N of iterations.

4. The method of claim 3, wherein said receiving said number N which indicates the number of said multiple iterations to be performed comprises:

displaying on the screen a number icon which represents a number;

connecting said number icon to said iteration portion.

5. The method of claim 1, further comprising:

displaying on the screen a number of said multiple iterations that have been performed, wherein said displaying the number of said multiple iterations that have been performed is performed during said executing said at least a portion of the graphical program for said multiple iterations.

6. The method of claim 1,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is repetitively performed while said recirculation icon receives a true value.

7. The method of claim 1,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for said multiple iterations includes:

a) examining said value received by said recirculation icon of said iteration icon; and

b) executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

8. The method of claim 7, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

9. The method of claim 7,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

10. The method of claim 9, wherein said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is executed a first time prior to said examining;

wherein step b) is performed zero or more times after said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is executed said first time.

11. The method of claim 1,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for said multiple iterations includes:

a) executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for a first iteration;

b) examining said value currently received by said recirculation icon of said iteration icon after an iteration is performed; and

c) executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for another iteration if said examined value is a true value, wherein said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is not executed if said examined value is a false value;

wherein said examining step b) and said executing step c) are repetitively performed for zero or more iterations until said examining step b) indicates that said examined value is a false value.

12. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one iteration icon for controlling multiple iterations of operations, wherein said iteration icon includes an interior portion, wherein said at least one iteration icon includes an index portion which displays a number of iterations that have been performed;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said at least one iteration icon;

receiving, in response to user input, a number N which indicates the number of said multiple iterations to be performed; and

executing said graphical program, wherein said executing comprises:

executing said at least a portion of the graphical program comprised in said at least one iteration icon for said number N of iterations.

13. The method of claim 12, further comprising:

said index portion displaying on the screen a number of said multiple iterations that have been performed during said executing said at least a portion of the graphical program for said number N of iterations.

14. The method of claim 12, wherein said at least one iteration icon references software executing in the computer system for performing said multiple iterations of operations.

15. The method of claim 12, wherein said at least one iteration icon includes an iteration portion which receives the number N of said multiple iterations to be performed;

wherein said receiving said number N comprises said iteration portion receiving said number N which indicates the number of said multiple iterations to be performed.

16. The method of claim 15, wherein said receiving said number N which indicates the number of said multiple iterations to be performed further comprises:

displaying on the screen a number icon which represents a number; and

connecting said number icon to said iteration portion.

17. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one conditional icon for controlling conditional branching of operations, wherein said conditional icon includes a plurality of case icons each having an interior portion, wherein said conditional icon includes a selector input portion which selects between said plurality of case icons;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of case icons, wherein said displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons includes arranging on the screen said portions of the graphical program and said at least one conditional icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of case icons;

executing said graphical program, wherein said executing comprises:

said selector input portion of said at least one conditional icon receiving a value;

determining one of said plurality of case icons, wherein said determining depends on said value received by said selector input portion of said at least one conditional icon;

executing a portion of the graphical program comprised in said interior portion of said determined one of said plurality of case icons in response to said determining.

18. The method of claim 17, wherein said at least one conditional icon references software executing in the computer system for performing said conditional branching of operations.

19. The method of claim 17, wherein each of said case icons comprising said at least one conditional icon includes a portion which displays a value identifying said case icon.

20. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one conditional icon for controlling conditional branching of operations, wherein said conditional icon includes a plurality of case icons each having an interior portion, wherein each of said case icons comprising said at least one conditional icon includes a portion which displays a value identifying said case icon, wherein said conditional icon includes a selector input portion which selects between said plurality of case icons;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of case icons;

executing said graphical program, wherein said executing comprises:

said selector input portion of said at least one conditional icon receiving a value;

determining one of said plurality of case icons, wherein said determining depends on said value received by said selector input portion of said at least one conditional icon;

executing a portion of the graphical program comprised in said interior portion of said determined one of said plurality of case icons in response to said determining.

21. The method of claim 20, wherein said at least one conditional icon references software executing in the computer system for performing said conditional branching of operations.

22. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one sequence structure icon for controlling sequencing of operations, wherein said sequence structure icon includes a plurality of sequence icons each having an interior portion, wherein said sequence icons have an order including a first sequence icon and a last sequence icon;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of sequence icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of sequence icons, wherein said displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of sequence icons comprises arranging on the screen said portions of the graphical program and said at least one sequence structure icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of sequence icons; executing said graphical program, wherein said executing includes:

executing said portions of the graphical program comprised in said plurality of sequence icons, wherein said portions of the graphical program are executed in said order of said sequence icons from said first sequence icon to said last sequence icon.

23. The method of claim 22, wherein said at least one sequence structure icon references software executing in the computer system for controlling said sequencing of operations.

24. The method of claim 22, wherein each of said sequence icons comprising said at least one sequence structure icon includes a portion which displays a value identifying said order of said sequence icons.

25. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one sequence structure icon for controlling sequencing of operations, wherein said sequence structure icon includes a plurality of sequence icons each having an interior portion, wherein said sequence icons have an order including a first sequence icon and a last sequence icon, wherein each of said sequence icons comprising said at least one sequence structure icon includes a portion which displays a value identifying said order of said sequence icons;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of sequence icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of sequence icons;

executing said graphical program, wherein said step of executing includes:

executing said portions of the graphical program comprised in said plurality of sequence icons, wherein said portions of the graphical program are executed in said order of said sequence icons from said first sequence icon to said last sequence icon.

26. The method of claim 25, wherein said at least one sequence structure icon references software executing in the computer system for controlling said sequencing of operations.

27. The method of claim 25, further comprising:

arranging on the screen said at least a portion of the graphical program and said at least one sequence structure icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of sequence icons.

28. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one loop structure icon for controlling looping of operations, wherein said loop structure icon includes an interior portion, wherein said loop structure icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said at least one loop structure icon, wherein said displaying on the screen at least a portion of the graphical program includes arranging on the screen said at least a portion of the graphical program and said at least one loop structure icon such that said at least a portion of the graphical program is displayed on the screen substantially inside said at least one loop structure icon;

executing said graphical program, wherein said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is repetitively performed while said recirculation icon receives a true value.

29. The method of claim 28, wherein said at least one loop structure icon includes an index portion which displays a number of iterations that said at least a portion of the graphical program comprised in said loop structure icon has been executed;

the method further comprising:

said index portion displaying a number of iterations that said at least a portion of the graphical program comprised in said at least one loop structure icon has been executed during said executing said graphical program.

30. The method of claim 28, further comprising:

connecting a node to the recirculation icon which provides said value to said recirculation icon, wherein said connecting is performed after said displaying on the screen said at least one loop structure icon.

31. The method of claim 28, wherein said executing said graphical program includes:

a) examining said value received by said recirculation icon of said loop structure icon; and

b) executing said at least a portion of the graphical program comprised in said at least one loop structure icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

32. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one loop structure icon for controlling looping of operations, wherein said loop structure icon includes an interior portion, wherein said loop structure icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said at least one loop structure icon, wherein said displaying on the screen at least a portion of the graphical program includes arranging on the screen said at least a portion of the graphical program and said at least one loop structure icon such that said at least a portion of the graphical program is displayed on the screen substantially inside said at least one loop structure icon;

executing said graphical program, wherein said executing includes:

a) examining said value received by said recirculation icon of said loop structure icon; and

b) executing said at least a portion of the graphical program comprised in said at least one loop structure icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

33. The method of claim 32, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

34. The method of claim 32,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

35. The method of claim 34, wherein said at least a portion of the graphical program comprised in said interior portion of said at least one loop structure icon is executed a first time prior to said examining;

wherein step b) is performed zero or more times after said at least a portion of the graphical program comprised in said interior portion of said at least one loop structure icon is executed said first time.

36. The method of claim 32, wherein said at least one loop structure icon includes an index portion which displays a number of iterations that said at least a portion of the graphical program comprised in said loop structure icon has been executed;

the method further comprising:

said index portion displaying a number of iterations that said at least a portion of the graphical program comprised in said at least one loop structure icon has been executed during said executing said graphical program.

37. The method of claim 32, further comprising:

connecting a node to the recirculation icon which provides said value to said recirculation icon, wherein said connecting is performed after said displaying on the screen said at least one loop structure icon.

38. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one loop structure icon for controlling looping of operations, wherein said loop structure icon includes an interior portion, wherein said loop structure icon includes an index portion which displays a number of iterations that said at least a portion of the graphical program comprised in said loop structure icon has been executed;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said loop structure icon;

executing said graphical program, wherein said executing comprises:

a) examining a value provided to said loop structure icon;

b) executing said at least a portion of the graphical program comprised in said at least one loop structure icon for an iteration after said examining if said examined value is a true value, wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value; and

c) said index portion displaying a number of iterations that said at least a portion of the graphical program comprised in said loop structure icon has been executed during said executing said graphical program.

39. The method of claim 38, wherein said loop structure icon includes a recirculation icon which is adapted to receive a value which is either true or false;

wherein said examining a value provided to said loop structure icon includes:

said recirculation icon receiving said value; and

examining said value received by said recirculation icon.

40. The method of claim 39, further comprising:

connecting a node to the recirculation icon which provides said value to said recirculation icon, wherein said connecting is performed after said displaying on the screen said loop structure icon.

41. The method of claim 38, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

42. The method of claim 38,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

43. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one iteration icon for controlling multiple iterations of operations, wherein said iteration icon includes an interior portion;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said at least one iteration icon, wherein said displaying on the screen said at least a portion of the graphical program includes arranging on the screen said at least a portion of the graphical program and said at least one iteration icon such that said at least a portion of the graphical program is displayed on the screen substantially inside said at least one iteration icon;

executing said graphical program, wherein said executing comprises:

executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for said multiple iterations.

44. The computer-readable storage medium of claim 43, wherein said at least one iteration icon references software on said computer-readable storage medium for performing said multiple iterations of operations.

45. The computer-readable storage medium of claim 43, wherein said at least one iteration icon includes an iteration portion which receives the number of said multiple iterations to be performed, wherein said program instructions are further operable to implement the steps of:

receiving, in response to user input, a number N which indicates the number of said multiple iterations to be performed; and

wherein said executing said at least a portion of the graphical program comprised in said at least one iteration icon executes for said number N of iterations.

46. The computer-readable storage medium of claim 45, wherein said receiving said number N which indicates the number of said multiple iterations to be performed comprises:

displaying on the screen a number icon which represents a number; and

connecting said number icon to said iteration portion.

47. The computer-readable storage medium of claim 43, wherein said program instructions are further operable to implement the step of:

displaying on the screen a number of said multiple iterations that have been performed, wherein said displaying the number of said multiple iterations is performed during said executing said at least a portion of the graphical program for said multiple iterations.

48. The computer-readable storage medium of claim 43,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is repetitively performed while said recirculation icon receives a true value.

49. The computer-readable storage medium of claim 43,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for said multiple iterations includes:

a) examining said value received by said recirculation icon of said iteration icon; and

b) executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

50. The computer-readable storage medium of claim 49, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

51. The computer-readable storage medium of claim 49,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

52. The computer-readable storage medium of claim 51, wherein said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is executed a first time prior to said examining;

wherein step b) is performed zero or more times after said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is executed said first time.

53. The computer-readable storage medium of claim 43,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for said multiple iterations includes:

a) executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for a first iteration;

b) examining said value currently received by said recirculation icon of said iteration icon after an iteration is performed; and

c) executing said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon for another iteration if said examined value is a true value, wherein said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is not executed if said examined value is a false value; wherein said examining step b) and said executing step c) are repetitively performed for zero or more iterations until said examining step b) indicates that said examined value is a false value.

54. Computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one iteration icon for controlling multiple iterations of operations, wherein said iteration icon includes an interior portion, wherein said at least one iteration icon includes an index portion which displays a number indicating the number of iterations that have been performed;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said at least one iteration icon;

receiving, in response to user input, a number N which indicates the number of said multiple iterations to be performed;

executing said graphical program, wherein said executing comprises:

executing said at least a portion of the graphical program comprised in said at least one iteration icon for said number N of iterations.

55. The computer-readable storage medium of claim 54, wherein said program instructions are further operable to implement the step of:

said index portion displaying on the screen a number of said multiple iterations that have been performed during said executing said at least a portion of the graphical program.

56. The computer-readable storage medium of claim 54, wherein said at least one iteration icon references software on said computer-readable storage medium for performing said multiple iterations of operations.

57. The computer-readable storage medium of claim 54, wherein said at least one iteration icon includes an iteration portion which receives the number N of said multiple iterations to be performed;

wherein said receiving said number N comprises said iteration portion receiving said number N which indicates the number of said multiple iterations to be performed.

58. The computer-readable storage medium of claim 57, wherein said receiving said number N which indicates the number of said multiple iterations to be performed further comprises:

displaying on the screen a number icon which represents a number;

connecting said number icon to said iteration portion.

59. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one conditional icon for controlling conditional branching of operations, wherein said conditional icon includes a plurality of case icons each having an interior portion, wherein said conditional icon includes a selector input portion which selects between said plurality of case icons;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of case icons, wherein said displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons includes arranging on the screen said portions of the graphical program and said at least one conditional icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of case icons;

executing said graphical program, wherein said executing comprises:

said selector input portion of said at least one conditional icon receiving a value;

determining one of said plurality of case icons, wherein said determining depends on said value received by said selector input portion of said at least one conditional icon;

executing a portion of the graphical program comprised in said interior portion of said determined one of said plurality of case icons in response to said determining.

60. The computer-readable storage medium of claim 59, wherein said at least one conditional icon references software on said computer-readable storage medium for performing said conditional branching of operations.

61. The computer-readable storage medium of claim 59, wherein each of said case icons comprising said at least one conditional icon includes a portion which displays a value identifying said case icon.

62. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one conditional icon for controlling conditional branching of operations, wherein said conditional icon includes a plurality of case icons each having an interior portion, wherein each of said case icons comprising said at least one conditional icon includes a portion which displays a value identifying said case icon, wherein said conditional icon includes a selector input portion which selects between said plurality of case icons;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of case icons;

executing said graphical program, wherein said executing comprises:

said selector input portion of said at least one conditional icon receiving a value;

determining one of said plurality of case icons, wherein said determining depends on said value received by said selector input portion of said at least one conditional icon;

executing a portion of the graphical program comprised in said interior portion of said determined one of said plurality of case icons in response to said determining.

63. The computer-readable storage medium of claim 62, wherein said at least one conditional icon references software on said computer-readable storage medium for performing said conditional branching of operations.

64. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one sequence structure icon for controlling sequencing of operations, wherein said sequence structure icon includes a plurality of sequence icons each having an interior portion, wherein said sequence icons have an order including a first sequence icon and a last sequence icon;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of sequence icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of sequence icons, wherein said displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of sequence icons comprises arranging on the screen said at least a portion of the graphical program and said at least one sequence structure icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of sequence icons;

executing said graphical program, wherein said executing includes:

executing said portions of the graphical program comprised in said plurality of sequence icons, wherein said portions of the graphical program are executed in said order of said sequence icons from said first sequence icon to said last sequence icon.

65. The computer-readable storage medium of claim 64, wherein said at least one sequence structure icon references software on said computer-readable storage medium for controlling said sequencing of operations.

66. The computer-readable storage medium of claim 64, wherein each of said sequence icons comprising said at least one sequence structure icon includes a portion which displays a value identifying said order of said sequence icons.

67. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one sequence structure icon for controlling sequencing of operations, wherein said sequence structure icon includes a plurality of sequence icons each having an interior portion, wherein said sequence icons have an order including a first sequence icon and a last sequence icon, wherein each of said sequence icons comprising said at least one sequence structure icon includes a portion which displays a value identifying said order of said sequence icons;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of sequence icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of sequence icons;

executing said graphical program, wherein said step of executing includes:

executing said portions of the graphical program comprised in said plurality of sequence icons, wherein said portions of the graphical program are executed in said order of said sequence icons from said first sequence icon to said last sequence icon.

68. The computer-readable storage medium of claim 67, wherein said at least one sequence structure icon references software on said computer-readable storage medium for controlling said sequencing of operations.

69. The computer-readable storage medium of claim 67, wherein said program instructions are further operable to implement the step of:

arranging on the screen said at least a portion of the graphical program and said at least one sequence structure icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of sequence icons.

70. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a display screen of the computer system at least one loop structure icon for controlling looping of operations, wherein said loop structure icon includes an interior portion, wherein said loop structure icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said at least one loop structure icon, wherein said displaying on the screen at least a portion of the graphical program includes arranging on the screen said at least a portion of the graphical program and said at least one loop structure icon such that said at least a portion of the graphical program is displayed on the screen substantially inside said at least one loop structure icon;

executing said graphical program, wherein said at least a portion of the graphical program comprised in said interior portion of said at least one iteration icon is repetitively performed while said recirculation icon receives a true value.

71. The computer-readable storage medium of claim 70, wherein said at least one loop structure icon includes an index portion which displays a number of iterations that said at least a portion of the graphical program comprised in said loop structure icon has been executed;

wherein said program instructions are further operable to implement the step of:

said index portion displaying a number of iterations that said at least a portion of the graphical program comprised in said at least one loop structure icon has been executed during said executing said graphical program.

72. The computer-readable storage medium of claim 70, wherein said program instructions are further operable to implement the step of:

connecting a node to the recirculation icon which provides said value to said recirculation icon, wherein said connecting is performed after said displaying on the screen said at least one loop structure icon.

73. The computer-readable storage medium of claim 70, wherein said executing said graphical program includes:

a) examining said value received by said recirculation icon of said loop structure icon; and

b) executing said at least a portion of the graphical program comprised in said at least one loop structure icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

74. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a display screen of the computer system at least one loop structure icon for controlling looping of operations, wherein said loop structure icon includes an interior portion, wherein said loop structure icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said at least one loop structure icon, wherein said displaying on the screen at least a portion of the graphical program includes arranging on the screen said at least a portion of the graphical program and said at least one loop structure icon such that said at least a portion of the graphical program is displayed on the screen substantially inside said at least one loop structure icon;

executing said graphical program, wherein said executing includes:

a) examining said value received by said recirculation icon of said loop structure icon; and

b) executing said at least a portion of the graphical program comprised in said at least one loop structure icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

75. The computer-readable storage medium of claim 74, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

76. The computer-readable storage medium of claim 74,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

77. The computer-readable storage medium of claim 76, wherein said at least a portion of the graphical program comprised in said interior portion of said at least one loop structure icon is executed a first time prior to said examining;

wherein step b) is performed zero or more times after said at least a portion of the graphical program comprised in said interior portion of said at least one loop structure icon is executed said first time.

78. The computer-readable storage medium of claim 74, wherein said at least one loop structure icon includes an index portion which displays a number of iterations that said at least a portion of the graphical program comprised in said loop structure icon has been executed;

wherein said program instructions are further operable to implement the step of:

said index portion displaying a number of iterations that said at least a portion of the graphical program comprised in said at least one loop structure icon has been executed during said executing said graphical program.

79. The computer-readable storage medium of claim 74, wherein said program instructions are further operable to implement the step of:

connecting a node to the recirculation icon which provides said value to said recirculation icon, wherein said connecting is performed after said displaying on the screen said at least one loop structure icon.

80. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a display screen of the computer system at least one loop structure icon for controlling looping of operations, wherein said loop structure icon includes an interior portion, wherein said loop structure icon includes an index portion which displays a number of iterations that said at least a portion of the graphical program comprised in said loop structure icon has been executed;

displaying on the screen at least a portion of the graphical program, wherein said at least a portion of the graphical program is comprised within said interior portion of said loop structure icon;

executing said graphical program, wherein said executing comprises:

a) examining a value provided to said loop structure icon;

b) executing said at least a portion of the graphical program comprised in said at least one loop structure icon for an iteration after said examining if said examined value is a true value, wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value; and

c) said index portion displaying a number of iterations that said at least a portion of the graphical program comprised in said loop structure icon has been executed during said executing said graphical program.

81. The computer-readable storage medium of claim 80, wherein said loop structure icon includes a recirculation icon which is adapted to receive a value which is either true or false;

wherein said examining a value provided to said loop structure icon includes:

said recirculation icon receiving said value; and

examining said value received by said recirculation icon.

82. The computer-readable storage medium of claim 81, wherein said program instructions are further operable to implement the step of:

connecting a node to the recirculation icon which provides said value to said recirculation icon, wherein said connecting is performed after said displaying on the screen said loop structure icon.

83. The computer-readable storage medium of claim 80, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

84. The computer-readable storage medium of claim 80,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

85. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one iteration icon for controlling multiple iterations of operations;

displaying on the screen at least a portion of the graphical program;

arranging on the screen said at least a portion of the graphical program and said at least one iteration icon such that said at least a portion of the graphical program is displayed on the screen substantially inside said at least one iteration icon;

executing said graphical program, wherein said executing comprises:

executing said at least a portion of the graphical program displayed substantially inside said at least one iteration icon for said multiple iterations.

86. The method of claim 85, wherein said at least one iteration icon references software executing in the computer system for performing said multiple iterations of operations.

87. The method of claim 85, wherein said at least one iteration icon includes an iteration portion which receives the number of said multiple iterations to be performed, the method further comprising

receiving, in response to user input, a number N which indicates the number of said multiple iterations to be performed; and

wherein said executing said at least a portion of the graphical program comprised in said at least one iteration icon executes for said number N of iterations.

88. The method of claim 87, wherein said receiving said number N which indicates the number of said multiple iterations to be performed comprises:

displaying on the screen a number icon which represents a number;

connecting said number icon to said iteration portion.

89. The method of claim 85, further comprising:

displaying on the screen a number of said multiple iterations that have been performed, wherein said displaying the number of said multiple iterations is performed during said executing said at least a portion of the graphical program for said multiple iterations.

90. The method of claim 85,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said at least a portion of the graphical program displayed substantially inside said at least one iteration icon is repetitively performed while said recirculation icon receives a true value.

91. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one iteration icon for controlling multiple iterations of operations;

displaying on the screen a first one or more function icons;

displaying on the screen a second one or more function icons;

assembling on the screen a graphical program, wherein said assembling on the screen the graphical program comprises arranging on the screen the first one or more function icons substantially inside said at least one iteration icon, and arranging on the screen the second one or more function icons outside of said at least one iteration icon; and

executing said graphical program, wherein said executing comprises:

executing said first one or more function icons arranged substantially inside said at least one iteration icon for said multiple iterations; and

executing said second one or more function icons, wherein said second one or more function icons arranged outside of said at least one iteration icon are not executed for said multiple iterations.

92. The method of claim 91, wherein said at least one iteration icon references software executing in the computer system for performing said multiple iterations of operations.

93. The method of claim 91, wherein said at least one iteration icon includes an iteration portion which receives the number of said multiple iterations to be performed, the method further comprising

receiving, in response to user input, a number N which indicates the number of said multiple iterations to be performed; and

wherein said executing said first one or more function icons arranged substantially inside said at least one iteration icon is performed for said number N of iterations.

94. The method of claim 93, wherein said receiving said number N which indicates the number of said multiple iterations to be performed comprises:

displaying on the screen a number icon which represents a number;

connecting said number icon to said iteration portion.

95. The method of claim 91, further comprising:

displaying on the screen a number of said multiple iterations that have been performed, wherein said displaying the number of said multiple iterations that have been performed is performed during said executing said graphical program.

96. The method of claim 91,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said first one or more function icons arranged substantially inside said at least one iteration icon is repetitively performed while said recirculation icon receives a true value.

97. The method of claim 91,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said first one or more function icons arranged substantially inside said at least one iteration icon for said multiple iterations includes:

a) examining said value received by said recirculation icon of said iteration icon; and

b) executing said first one or more function icons arranged substantially inside said at least one iteration icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

98. The method of claim 97, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

99. The method of claim 97,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

100. The method of claim 99, wherein said first one or more function icons arranged substantially inside said at least one iteration icon are executed a first time prior to said examining;

wherein step b) is performed zero or more times after said first one or more function icons arranged substantially inside said at least one iteration icon are executed said first time.

101. The method of claim 91,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said first one or more function icons arranged substantially inside said at least one iteration icon for said multiple iterations includes:

a) executing said first one or more function icons arranged substantially inside said at least one iteration icon for a first iteration;

b) examining said value currently received by said recirculation icon of said iteration icon after an iteration is performed;

c) executing said first one or more function icons arranged substantially inside said at least one iteration icon for another iteration if said examined value is a true value, wherein said first one or more function icons arranged substantially inside said at least one iteration icon are not executed if said examined value is a false value;

wherein said examining step b) and said executing step c) are performed for zero or more iterations until said examining step b) indicates that said examined value is a false value.

102. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one loop structure icon for controlling looping of operations;

displaying on the screen a first one or more function icons;

displaying on the screen a second one or more function icons;

assembling on the screen a graphical program, wherein said assembling on the screen the graphical program comprises arranging on the screen the first one or more function icons substantially inside said at least one loop structure icon, and arranging on the screen the second one or more function icons outside of said at least one loop structure icon; and

executing said graphical program, wherein said executing comprises:

executing said first one or more function icons arranged substantially inside said at least one loop structure icon for multiple iterations;

executing said second one or more function icons, wherein said second one or more function icons arranged outside of said at least one loop structure icon are not executed for said multiple iterations.

103. The method of claim 102, wherein said loop structure icon includes an index portion which displays a number of iterations that said first one or more function icons arranged substantially inside said at least one loop structure icon have been executed;

the method further comprising:

said index portion displaying on the screen a number of iterations that said first one or more function icons arranged substantially inside said loop structure icon have been executed during said executing said graphical program.

104. The method of claim 102, wherein said loop structure icon includes a recirculation icon which is adapted to receive a value which is either true or false; wherein said executing said graphical program further comprises:

receiving a value for said recirculation icon, wherein said received value is true for a first period of time;

executing said first one or more function icons arranged substantially inside said at least one loop structure icon for said multiple iterations during said first period of time in response to said received value.

105. The method of claim 104, further comprising:

connecting a node to the recirculation icon which provides said value to said recirculation icon, wherein said connecting is performed after said displaying on the screen said at least one loop structure icon.

106. The method of claim 102,

wherein said loop structure icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said first one or more function icons arranged substantially inside said at least one loop structure icon for said multiple iterations includes:

a) examining said value received by said recirculation icon of said iteration icon; and

b) executing said first one or more function icons arranged substantially inside said at least one loop structure icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

107. The method of claim 106, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

108. The method of claim 106,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

109. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video semen of the computer system at least one iteration icon for controlling multiple iterations of operations;

displaying on the screen a first one or more function icons;

displaying on the screen a second one or more function icons;

assembling on the screen a graphical program, wherein said assembling on the screen the graphical program comprises arranging on the screen the first one or more function icons substantially inside said at least one iteration icon, and arranging on the screen the second one or more function icons outside of said at least one iteration icon; and

executing said graphical program, wherein said executing comprises:

executing said first one or more function icons arranged substantially inside said at least one iteration icon for said multiple iterations; and

executing said second one or more function icons, wherein said second one or more function icons arranged outside of said at least one iteration icon are not executed for said multiple iterations.

110. The computer-readable storage medium of claim 109, wherein said at least one iteration icon references software on said computer-readable storage medium for performing said multiple iterations of operations.

111. The computer-readable storage medium of claim 109, wherein said at least one iteration icon includes an iteration portion which receives the number of said multiple iterations to be performed, wherein said program instructions are further operable to implement the step of:

receiving, in response to user input, a number N which indicates the number of said multiple iterations; and

wherein said executing said first one or more function icons arranged substantially inside said at least one iteration icon is performed for said number N of iterations.

112. The computer-readable storage medium of claim 111, wherein said receiving said number N which indicates the number of said multiple iterations to be performed comprises:

displaying on the screen a number icon which represents a number;

connecting said number icon to said iteration portion.

113. The computer-readable storage medium of claim 109, wherein said program instructions are further operable to implement the step of:

displaying on the screen a number of said multiple iterations that have been performed, wherein said displaying the number of said multiple iterations that have been performed is performed during said executing said graphical program.

114. The computer-readable storage medium of claim 109,

wherein said iteration icon further includes a recirculation icon which receives a value,

wherein said value is either true or false;

wherein said executing said first one or more function icons arranged substantially inside said at least one iteration icon is repetitively performed while said recirculation icon receives a true value.

115. The computer-readable storage medium of claim 109,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said first one or more function icons arranged substantially inside said at least one iteration icon for said multiple iterations includes:

a) examining said value received by said recirculation icon of said iteration icon; and

b) executing said first one or more function icons arranged substantially inside said at least one iteration icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

116. The computer-readable storage medium of claim 115, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

117. The computer-readable storage medium of claim 115,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

118. The computer-readable storage medium of claim 117, wherein said first one or more function icons arranged substantially inside said at least one iteration icon are executed a first time prior to said examining;

wherein step b) is performed zero or more times after said first one or more function icons arranged substantially inside said at least one iteration icon are executed said first time.

119. The computer-readable storage medium of claim 109,

wherein said iteration icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said first one or more function icons arranged substantially inside said at least one iteration icon for said multiple iterations includes:

a) executing said first one or more function icons arranged substantially inside said at least one iteration icon for a first iteration;

b) examining said value currently received by said recirculation icon of said iteration icon after an iteration is performed;

c) executing said first one or more function icons arranged substantially inside said at least one iteration icon for another iteration if said examined value is a true value, wherein said first one or more function icons arranged substantially inside said at least one iteration icon are not executed if said examined value is a false value;

wherein said examining step b) and said executing step c) are performed for zero or more iterations until said examining step b) indicates that said examined value is a false value.

120. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one loop structure icon for controlling looping of operations;

displaying on the screen a first one or more function icons;

displaying on the screen a second one or more function icons;

assembling on the screen a graphical program, wherein said assembling on the screen the graphical program comprises arranging on the screen the first one or more function icons substantially inside said at least one loop structure icon, and arranging on the screen the second one or more function icons outside of said at least one loop structure icon; and

executing said graphical program, wherein said executing comprises:

executing said first one or more function icons arranged substantially inside said at least one loop structure icon for multiple iterations;

executing said second one or more function icons, wherein said second one or more function icons arranged outside of said at least one loop structure icon are not executed for said multiple iterations.

121. The computer-readable storage medium of claim 120, wherein said loop structure icon includes an index portion which displays a number of iterations that said first one or more function icons arranged substantially inside said at least one loop structure icon have been executed;

wherein said program instructions are further operable to implement the step of:

said index portion displaying on the screen a number of iterations that said first one or more function icons arranged substantially inside said loop structure icon have been executed during said executing said graphical program.

122. The computer-readable storage medium of claim 120, wherein said loop structure icon includes a recirculation icon which is adapted to receive a value which is either true or false; wherein said executing said graphical program further comprises:

receiving a value for said recirculation icon, wherein said received value is true for a first period of time;

executing said first one or more function icons arranged substantially inside said at least one loop structure icon for said multiple iterations during said first period of time in response to said received value.

123. The computer-readable storage medium of claim 122, wherein said program instructions are further operable to implement the step of:

connecting a node to the recirculation icon which provides said value to said recirculation icon, wherein said connecting is performed after said displaying on the screen said at least one loop structure icon.

124. The computer-readable storage medium of claim 120,

wherein said loop structure icon further includes a recirculation icon which receives a value, wherein said value is either true or false;

wherein said executing said first one or more function icons arranged substantially inside said at least one loop structure icon for said multiple iterations includes:

a) examining said value received by said recirculation icon of said iteration icon; and

b) executing said first one or more function icons arranged substantially inside said at least one loop structure icon for an iteration after said examining if said examined value is a true value;

wherein said executing step b) is not performed after said examining step a) if said examining step a) indicates that said examined value is a false value.

125. The computer-readable storage medium of claim 124, wherein said examining step a) is performed after each occurrence of said executing step b);

wherein said executing step b) is performed after each said examining step a) until said examining step a) indicates that said examined value is a false value.

126. The computer-readable storage medium of claim 124,

wherein said examining step a) and said executing step b) repeat until said examining step a) indicates that said examined value is a false value.

127. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one conditional icon for controlling conditional branching of operations, wherein said conditional icon includes a plurality of case icons each having an interior portion, wherein said conditional icon includes a selector input portion which selects between said plurality of case icons;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of case icons, wherein said displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons includes arranging on the screen said portions of the graphical program and said at least one conditional icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of case icons;

executing said graphical program, wherein said executing comprises:

said selector input portion of said at least one conditional icon receiving a value;

determining one of said plurality of case icons, wherein said determining depends on said value received by said selector input portion of said at least one conditional icon;

executing a portion of the graphical program comprised in said interior portion of said determined one of said plurality of case icons in response to said determining.

128. The computer-readable storage medium of claim 127, wherein said at least one conditional icon references software on said computer-readable storage medium for performing said conditional branching of operations.

129. The computer-readable storage medium of claim 127, wherein each of said case icons comprising said at least one conditional icon includes a portion which displays a value identifying said case icon.

130. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one conditional icon for controlling conditional branching of operations, wherein said conditional icon includes a plurality of case icons each having an interior portion, wherein each of said case icons comprising said at least one conditional icon includes a portion which displays a value identifying said case icon, wherein said conditional icon includes a selector input portion which selects between said plurality of case icons;

displaying on the screen portions of the graphical program comprised within said interior portions of each of said plurality of case icons, wherein a different portion of the graphical program is comprised within said interior portions of each of said plurality of case icons;

executing said graphical program, wherein said executing comprises:

said selector input portion of said at least one conditional icon receiving a value;

determining one of said plurality of case icons, wherein said determining depends on said value received by said selector input portion of said at least one conditional icon;

executing a portion of the graphical program comprised in said interior portion of said determined one of said plurality of case icons in response to said determining.

131. The computer-readable storage medium of claim 130, wherein said at least one conditional icon references software on said computer-readable storage medium for performing said conditional branching of operations.

132. A method for assembling a graphical program in a computer system, wherein the computer system includes a video screen, the method comprising:

displaying on the screen at least one conditional icon for controlling conditional branching of operations, wherein said conditional icon includes a plurality of case icons each having an interior portion, wherein said conditional icon includes a selector input portion which selects between said plurality of case icons;

displaying on the screen portions of the graphical program;

arranging on the screen said portions of the graphical program and said at least one conditional icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of case icons;

executing said graphical program, wherein said executing comprises:

said selector input portion of said at least one conditional icon receiving a value;

determining one of said plurality of case icons, wherein said determining depends on said value received by said selector input portion of said at least one conditional icon;

executing a portion of the graphical program comprised in said interior portion of said determined one of said plurality of case icons in response to said determining.

133. The method of claim 132, wherein said at least one conditional icon references software executing in the computer system for performing said conditional branching of operations.

134. The method of claim 132, wherein each of said case icons comprising said at least one conditional icon includes a portion which displays a value identifying said case icon.

135. The method of claim 132, further comprising:

connecting a node to said selector input portion which provides said value to said selector input portion, wherein said connecting is performed after said displaying on the screen said at least one conditional icon.

136. A computer-readable storage medium comprising program instructions, wherein said program instructions are operable to assemble a graphical program in a computer system, wherein said program instructions are operable to implement the steps of:

displaying on a video screen of the computer system at least one conditional icon for controlling conditional branching of operations, wherein said conditional icon includes a plurality of case icons each having an interior portion, wherein said conditional icon includes a selector input portion which selects between said plurality of case icons;

displaying on the screen portions of the graphical program;

arranging on the screen said portions of the graphical program and said at least one conditional icon such that said different portions of the graphical program are comprised within said interior portions of each of said plurality of case icons;

executing said graphical program, wherein said executing comprises:

said selector input portion of said at least one conditional icon receiving a value;

determining one of said plurality of case icons, wherein said determining depends on said value received by said selector input portion of said at least one conditional icon;

executing a portion of the graphical program comprised in said interior portion of said determined one of said plurality of case icons in response to said determining.

137. The computer-readable storage medium of claim 136, wherein said at least one conditional icon references software on said computer-readable storage medium for performing said conditional branching of operations.

138. The computer-readable storage medium of claim 136, wherein each of said case icons comprising said at least one conditional icon includes a portion which displays a value identifying said case icon.

139. The computer-readable storage medium of claim 136, wherein said program instructions are further operable to implement the step of:

connecting a node to said selector input portion which provides said value to said selector input portion, wherein said connecting is performed after said displaying on the screen said at least one conditional icon.


Description

CROSS-REFERENCE

Inventors: Jeffery L. Kodosky, James J. Truchard and John E. MacCrisken, Ser. No.: 06/851,569; Filed: Apr. 14, 1986, now U.S. Pat. No. 4,901,221. 06/923,127 filed Oct. 4, 1986, which is now U.S. Pat. No. 4,914,568. Ser. No.: 06/851,569; Filed: Apr. 14, 1986, now U.S. Pat. No. 4,901,221.

A portion of the disclosure of this patent document contains material to which a claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but reserves all other rights whatsoever.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to systems for modeling processes and more particularly to computer systems for modeling processes.

2. Description of the Related Art

Currently there is a strong movement toward very high level programming languages which can enhance programmer productivity by making a programming task more understandable and intuitive. The increasing use of computers by users who are not highly trained in computer programming techniques has lead to a situation in which the user's programming skills and ability to interact with a computer system often become a limiting factor in the achievement of optimal utilization of the computer system.

There are numerous subtle complexities which a user often must master before she can efficiently program a computer system. For example, typical earlier computer systems generally comprise software subsystems which include multiple programs, and such programs often utilize one or more subroutines. Software systems typically coordinate activity between multiple programs, and each program typically coordinates activity between multiple subroutines. However, techniques for coordinating multiple programs generally differ from techniques for coordinating multiple subroutines. Furthermore, since programs ordinarily can stand alone while subroutines usally cannot, techniques for linking programs to a software system generally differ from techniques for linking subroutines to a program. Complexities such as these often make it difficult for a user, who although she may be a specialist in her field is not a specialist in the computer field, to efficiently make use of powerful computer systems which are available for her use.

The task of programming a computer system to model a process often is further complicated by the fact that a sequence of mathematical formulas, mathematical steps or other procedures customarily used to conceptually model such a process often does not closely correspond to the traditional programming techniques used to program a computer system to model such a process. For example, a user of a computer system frequently develops a conceptual model for a physical system which can be partitioned into functional blocks, each of which corresponds to actual systems or subsystems. Computer systems, however, ordinarily do not actually compute in accordance with such conceptualized functional blocks. Instead, they often utilize calls to various subroutines and retrievals of data from different memory storage locations to implement a procedure which could be conceptualized by a user in terms of a functional block. Thus, a user often must substantially master different skills in order to both conceptually model a system and then to cause a computer system to model that system. Since a user often is not fully proficient in techniques for causing a computer system to implement her model, the efficiency with which the computer system can be utilized to perform such modelling often is reduced.

One particular field in which computer systems are employed to model physical systems is the field of instrumentation. An instrument typically collects information from an environment. Some of the types of information which might be collected by respective instruments, for example, include: voltage, distance, velocity, pressure, frequency of oscillation, humidity or temperature. An instrumentation system ordinarily controls its constituent instruments from which it acquires data which it analyzes, stores and presents to a user of the system. Computer control of instrumentation has become increasingly desirable in view of the increasing complexity and variety of instruments available for use.

In recent years, increasing effort has been directed toward providing more efficient means for implementing instrumentation systems. The task has been complicated by the fact that such systems include arbitrary combinations of hardware instruments and software components. The need for more efficient means of implementation has been prompted by increasing demands for automated instrumentation systems and an increasing variety of hardware and software combinations in use.

In the past, many instrumentation systems comprised individual instruments physically interconnected. Each instrument typically included a physical front panel with its own peculiar combination of indicators, knobs, or switches. A user generally had to understand and manipulate individual controls for each instrument and record readings from an array of indicators. Acquisition and analysis of data in such instrumentation systems was tedious and error prone. An incremental improvement in user interface was made with the introduction of centralized control panels. In these improved systems, individual instruments were wired to a control panel and the individual knobs, indicators or switches of each front panel were either preset or were selected to be presented on a common front panel.

Another significant advance occurred with the introduction of computers to provide more flexible means for interfacing instruments with a user. In such computerized instrumentation systems the user interacted with a software program of the computer system through a terminal rather than through a manually operated front panel. These earlier improved instrumentation systems provided significant performance efficiencies over earlier systems for linking and controlling test instruments.

Additional problems soon developed, however. Computer programs used to control such improved instrumentation systems had to be written in conventional programming language such as, for example, machine code, FORTRAN, BASIC, Pascal, or ATLAS. Traditional users of instrumentation systems, however, often were not highly trained in programming techniques and, therefore, implementation of such systems frequently required the involvement of a programmer to write software for control and analysis of instrumention data. Thus, development and maintenance of the software elements in these instrumentation systems often proved to be difficult.

Some reasons for the difficulties associated with earlier computerized instrumentation systems included, for example: (1) textual programming languages were non-intuitive and unfamiliar to the instrumentation system user; (2) traditional programming languages did not readily support the parallel activity of multiple individual instruments; (3) concepts embodied in a computer program often were significantly different from concepts embodied in an instrumentation system's instrument hardware; (4) computer program software modules often did not match an instrumentation system's hardware modularity making interchangeability of software and hardware difficult; and (5) techniques for designing, constructing, and modifying computer software were significantly different from corresponding techniques for developing an instrument hardware system.

A general type of programing technique involves data flow programing. Data flow programming typically involves an ordering of operations which is not specifically specified by a user but which is implied by data interdependencies. An advantage of data flow programming is that it introduces parallelism into a computer system which, of course, usually increases the speed and efficiency of the system.

Unfortunately, there has been difficulty constructing data flow computer systems because such systems often experience difficulty implementing conditional type and loop type operations. Furthermore, data flow computer systems often are relatively difficult to construct or even to comprehend due to the their relative complexity.

Thus, there exists a need for a system which can be relatively easily programmed for use in modelling a process. Furthermore, there exists a need for an instrumentation system utilizing such a system. Finally, there exists a need for such a system which employs data flow techniques. The present invention meets these needs.

SUMMARY OF THE INVENTION

The present invention provides a system for modelling a process. A process typically can be characterized by one or more input variables and one or more output variables. The system includes a computer. It also includes an editor for displaying at least one diagram and for constructing execution instructions. The diagram graphically displays a procedure by which the one or more input variables can produce the one or more output variables. It also results in the construction of execution instructions which characterize an execution procedure which substantially corresponds to the displayed procedure. The system also includes an execution subsystem for assigning respective values for the one or more input variables and for executing the execution instructions to produce respective values for the one or more output variables.

The invention also provides a method for electronically modelling a process. A process typically can be characterized by a reception of one or more input variables and a provision of one or more output variables. The method includes the step of electronically constructing at least one diagram display such that the diagram display graphically displays a procedure by which the one or more input variables can produce the one or more output variables. In response to the step of electronically constructing the diagram display, execution instructions are electronically constructed which characterize an execution procedure which substantially corresponds to the displayed procedure. Respective values are assigned for the respective input variables. The execution instructions are electronically executed to produce respective values for respective output variables.

These and other features and advantages of the present invention will become more apparent from the following detailed description of exemplary embodiments thereof, as illustrated in the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The purpose and advantages of the present invention will be apparent to those skilled in the art from the following detailed description in conjunction with the appended drawings in which:

FIG. 1 shows a block diagram of a first system for modelling a process in accordance with the present invention;

FIG. 2 shows a block diagram of a second system including the first system of FIG. 1;

FIG. 3 is an illustrative drawing of a representation of a virtual instrument produced using the second system of FIG. 2;

FIG. 4 shows a block diagram of an instrumentation system including the second system of FIG. 2;

FIG. 5 shows an illustrative front panel produced using the front panel editor of the instrumentation system of FIG. 4;

FIG. 6 shows an illustrative icon produced using the icon editor of the instrumentation system of FIG. 4;

FIG. 7 shows an illustrative representation of an icon library which can be stored in a memory and used to construct a block diagram using the block diagram editor of the instrumentation system of FIG. 4;

FIG. 8 shows a graphical representation of a sequence structure;

FIG. 9 shows a graphical representation of an iterative loop structure;

FIG. 10 shows a graphical representation of a conditional structure;

FIG. 11 shows a graphical representation of an indefinite loop structure;

FIG. 12 shows graphical representations of shift registers on the respective iterative loop structure of FIG. 9 and indefinite loop structure of FIG. 11;

FIG. 13 shows an illustrative block diagram generally corresponding to the graphical representation of a sequence structure shown in FIG. 8;

FIG. 14 shows an illustrative block diagram generally corresponding to the graphical representation of an iterative loop structure show in FIG. 9;

FIG. 15 shows an illustrative block diagram generally corresponding to the graphical representation of a conditional structure shown in FIG. 10;

FIG. 16 shows an illustrative block diagram generally corresponding to the graphical representation of an indefinite loop structure shown in FIG. 11;

FIG. 17 shows an illustrative block diagram generally corresponding to the graphical representation of an iterative loop structure including a shift register shown on the left in FIG. 12;

FIG. 18 shows a block diagram representing an exemplary data flow system;

FIG. 19a illustrates a virtual instrument data structure diagram used by the first system of FIG. 1, the second system of FIG. 2 and the instrumentation system of FIG. 4;

FIG. 19b shows a legend applicable to the illustration of FIG. 19a;

FIGS. 20a-l illustrate computer terminal displays during each successive step in a construction of an exemplary block diagram using the block diagram editor of FIGS. 2 or 4;

FIG. 21 is a drawing of an illustrative hardware instrumentation system of the present invention;

FIG. 22 a drawing representing a block diagram according to the present invention as displayed on a computer console to model the illustrative hardware system of FIG. 21;

FIG. 23a shows the PROTO icon;

FIG. 23b illustrates the startup screen with empty front panel window;

FIG. 24 illustrates the FILE menu (items in clear surrounds can be used and stippled items do not yet work);

FIG. 25 illustrates the EDIT menu;

FIG. 26 illustrates the FORMAT menu;

FIG. 27 illustrates the CONTROL menu from the front panel window;

FIG. 28 illustrates the NUMERIC control dialog box;

FIG. 29 is an illustration of the STRING control dialog box;

FIG. 30 shows the GRAPHICAL dialog box;

FIG. 31 illustrates an OPEN DIAGRAM selection from the FILE menu of the active front panel window pens and makes active a block diagram window;

FIG. 32 illustrates employ, active Block-Diagram window created by choosing OPEN DIAGRAM from the FILE menu;

FIG. 33 illustrates FUNCTION menu from Block-Diagram window;

FIG. 34 shows a graphical representation of a sequence structure;

FIG. 35 shows a graphical representation of a for loop structure;

FIG. 36 shows a graphical representation of a case selection structure;

FIG. 37 shows a graphical presentation of an indefinite loop structure;

FIG. 38 shows a graphical representation of a shift register in loop;

FIG. 39 illustrates a dialog box obtained by choosing SPECIAL from the FUNCTIONS menu;

FIG. 40 illustrates a "for" loop structure layed down in the active block diagram window by selecting a glyph from the dialog box shown in FIG. 39;

FIG. 41 illustrates selection regions on structure glyphs (Moving dashded box encircles a glyph when it is selected);

FIG. 42 illustrates that the the left side shows the proper position for placement of the grabber tool for residing the structure glyph (Click-dragging produces the result shown in the right side of the figure. Release the mouse button and the enlarged structure will remain in place);

FIG. 43 shows two enlarged "for" loop structures rearranged for the Fibonacci instrument;

FIG. 44 shows the dialog box obtained by choosing ARITHMETIC from the FUNCTION menu;

FIG. 45 shows a block diagram window after addition function was chosen from dialog box show in FIG. 44;

FIG. 46 shows a block diagram window with addition and multiplication functions placed inside loop structure;

FIG. 47 shows a dialog box obtained by choosing CURVE FIT from the FUNCTIONS menu.

FIG. 48 shows a block diagram window with CURVE-FIT object in place;

FIG. 49 illustrates loop structure with shift register installed;

FIG. 50 is an illustration of the final positions of constant objects alongside the inputs to the shift register;

FIG. 51 shows a pointer control in the front panel window obtained from the dialog box displayed by choosing the NUMERIC option from the CONTROLS menu;

FIG. 52 shows the front panel window with one pointer control and two indicator controls;

FIG. 53 shows the front panel window with graphical display repositioned to the upper right-hand corner of the window;

FIG. 54 shows the block diagram for the Fibonacci instrument with components in position ready for wiring.

FIG. 55 illustrates thata connection is established between the slide-pointer control and the iteration variable box of the loop structure using the wiring tool;

FIG. 56 illustrates "hot spots" for available functions;

FIG. 57 an illustration of the wired Fibonacci visual instrument block diagram;

FIG. 58 is an illustration of examples of data types and their block diagrams representations;

FIG. 59 is an illustration of the ICON EDITOR dialog box obtained by selecting the ICON EDIT PANE option from the FORMAT menu in the front panel window;

FIG. 60 is an illustration of the icon editor following selection of the ICON button;

FIG. 61 is a drawing in the icon editor;

FIG. 62 is an illustration displaying the instrument icon in the front panel window;

FIG. 63 shows a terminal connector pane displayed in the upper left-had corner of the active window by choosing CONNECTOR PANE option from the FORMAT menu;

FIG. 64 is an illustration of available arrangements of connector terminals;

FIG. 65a is an illustration of the front panel window with selected terminal in connector pane;

FIG. 65b is an illustration of the highlighted terminal and control to be connected;

FIG. 65c is an illustration of the connection between the established terminal and control;

FIG. 66 is an illustration of the dialog box warning of consequences of clearing associations between controls and terminals;

FIG. 67 (left) is an illustration of the virtual instrument to invert value set by control and display result on indicator;

FIG. 68 (right) is an illustration of correctly operating inverter virtual instrument;

FIG. 69 is an illustration of an icon for the inverter instrument;

FIG. 70 is an illustration of an instrument for inverting and then adding two numbers;

FIG. 71 is an illustration of the dialog box for selecting instrument to drop into block diagram window;

FIG. 72 is an illustration of an user-created INVERTER virtual instrument dropped into block-diagram window;

FIG. 73 is an illustration of an icon for user-created invert-and-add instrument;

FIG. 74 is an example solution for adding two resistances in parallel using two low-level, user-created virtual instruments in a hierarchical virtual instrument;

FIG. 75 is an illustration of an dialog box from INSTRUMENTS option in the FUNCTIONS menu displaying two user-created virtual instruments;

FIG. 76 illustrates serial execution mode;

FIG. 77 illustrates "wait" icon execution;

FIG. 78 illustrates the parallel execution mode;

FIG. 79 illustrates a ready mode lost;

FIG. 80 illustrates atomic execution mode;

FIG. 81 illustrates serial execution mode;

FIG. 82 illustrates parallel execution mode for code virtual instruments;

FIG. 83 illustrates parallel execution mode for block diagram virtual instrument;

FIGS. 84-95 illustrate various virtual instrument execution states;

FIG. 96 illustrates an execution road map;

FIG. 97 illustrates execution state symbols;

FIG. 98 illustrates virtual instruments in various execution states;

FIG. 99 illustrates virtual instruments in various execution states;

FIG. 100 illustrates a scrolling waterfall graph;

FIG. 101 illustrates a strip chart recorder;

FIG. 102 illustrates a block diagram of strip chart recorder operation;

FIG. 103 illustrates a relational data base;

FIG. 104 illustrates a chart showing different data types;

FIG. 105 illustrates a virtual instrument icon in a diagram;

FIG. 106 illustrates a virtual instrument icon together with a data base structure; and

FIGS. 107-110 illustrates LabVIEW error handling.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention comprises a novel system and associated method for modelling a process. The following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of particular applications and their requirements. Various modifications to the preferred embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.

Referring to the drawing of FIG. 1, there is shown a generalized block diagram 20 of a first system for modelling a process in accordance with the present invention. The first system 20 includes a block diagram editor 22, an execution subsystem 24 and a control processor 26. In the preferred embodiment, the block diagram editor 22 and the execution subsystem 24 are constructed in software.

As will be explained more fully below the block diagram editor 22 can be used to construct and to display a graphical diagram which visually and pictorially displays a procedure by which an input variable can produce an output variable. The procedure together with the input variable and output variable comprise a model of a process. Furthermore, the block diagram editor 22 constructs execution instructions which characterize an execution procedure which substantially corresponds to the displayed procedure. The execution subsystem 24 assigns at least one value to the input variable and executes the execution instructions to produce a value for the output variable. The control processor 26 implements the block diagram editor 22 and the execution subsystem 24 of the preferred embodiment.

The illustrative drawing of FIG. 2 shows a second system 28 for modelling a process in accordance with the present invention. The second system 28 includes a respective block diagram editor 30, and an execution subsystem 32 which are substantially identical to the block diagram editor 22 and the execution subsystem 24 of the first system 20. The second system 28 also includes an icon editor 34 and a front panel editor 36. The second system 28 also includes a control processor 38 which is substantially identical to that of the first system 20.

The second system 28 permits a user to construct a virtual instrument 40 such as that represented in generalized form in the illustrative drawings of FIG. 3. The virtual instrument 40 includes a front panel 42 which permits interactive use of the virtual instrument 40 by a user. As will be explained more fully below, the front panel permits graphical representation of input and output variables provided to the virtual instrument 40. The virtual instrument 40 also includes an icon 44 which permits use of the virtual instrument 40 as a subunit in other virtual instruments (not shown). The virtual instrument 40 also includes a block diagram 46 which graphically provides a visual representation of a procedure by which a specified value for an input variable displayed in the front panel 42 can produce a corresponding value for an output variable in the front panel 42. The virtual instrument 40 itself is a hierarchical construction comprising within its block diagram 46 respective icons 48 and 50 referencing other virtual instruments indicated generally by respective blocks 52 and 54.

The generalized block diagram of FIG. 4 shows an instrumentation system 56 incorporating the second system 28 shown in FIG. 2. Elements of the instrumentation system 56 which are substantially identical to those of the second system 28 are referenced by primed reference numerals identical to those of the second system 28. The instrumentation system 56 includes a keyboard and display 58 and an instrument 60. In a presently preferred embodiment, the control processor 38' and the keyboard and display 58 are implemented using a Macintosh Plus Computer manufactured by the Apple Computer Company of Cuppertino, Calif.. However, a Macintosh Computer also produced by the Apple Computer Company could be used instead.

The instrumentation system 56 can be used to control the instrument 60, to acquire data from the instrument 60 to analyze that data, to store that data and to present that data. FIG. 5 shows details of an illustrative front panel 62 which can be produced using the front panel editor 36' and which can be displayed using the keyboard and display 58. It will be appreciated that the illustration of FIG. 5 represents an actual graphical computer-generated display of an exemplary front panel for the instrument 60. The graphical representation of FIG. 5 illustrates physical control dials and switches for providing variable input information and illustrates a coordinate plane type indicator for displaying variable output information. More particularly, FIG. 5 shows a circular turn-dial and a slide switch for setting input variable data. The turn-dial and slide switch each correspond to respective rectangular boxes for digitally illustrating variable input data in digital form. The illustrative front panel also includes a coordinate plane display for illustrating variable output data. The graphical representations of input controls and output indicators are stored in a memory library, and a user may select from among a variety of different graphical representations of input controls and output indicators in order to construct a panel display which conforms to a user's intuitive understanding of how the instrument 60 is controlled and how it provides data.

FIG. 6 illustrates an icon 62 which can be used to reference a front panel 64. A visual representation of the icon 62 can be produced using the icon editor 34'. The icon 62 corresponds to a particular front panel 64. As will be explained more fully below, the icon 62 can be used as a building-block in a hierarchical system constructed using the block diagram editor 30'. The dashed lines of FIG. 6 indicate the one-to-one correspondence between the icon 62 and the particular front panel 64. The icon 62 can be divided into respective two-dimensional regions (or hot spots) 66 and 68 which correspond to respective variable input data and variable output data illustrated by controls and displays of the corresponding front panel 64. For example, the front panel might include input data in the form a sequence of samples and might provide output data in the form of an indicator showing voltage reading per sample. The icon 62 then might be divided into two two-dimensional regions 68 and 66 which respectively correspond to the input sample count and the voltage reading for that sample count.

FIG. 7 illustrates a memory library including a plurality of software modules each representing a respective front panel and each corresponding to a respective illustrative icon which references its respective front panel. As will be explained more fully below, a user may utilize the icons of the memory library to build a block diagram; or he/she may build his/her own respective front panels and corresponding icons using the front panel editor 36' or the icon editor 34' in order to build a block diagram; or he/she may use both the icons of the icon memory library and icons which he/she produces himself/herself using the front panel editor 36' and icon editor 34' in order to build a block diagram.

The drawings of FIGS. 8-12 show the graphical representations of structures utilized in constructing a block diagram as described below using the block diagram editor 30'. The structures represented in FIGS. 8-12 substantially facilitate the application of data flow programming techniques which are used in the preferred embodiments of the present invention. FIG. 8 illustrates a sequence structure. FIG. 9 illustrates an iterative loop structure. FIG. 10 illustrates a conditional structure. FIG. 11 illustrates an indefinite loop structure. FIG. 12 illustrates a shift register on an iterative loop structure (on the left side) and a shift register on an indefinite loop structure (on the right side).

It will be appreciated that the graphical representations of the structures illustrated in FIGS. 8-12 can be stored in a memory library as can execution instructions corresponding to the respective structures. Thus, a user can call upon a graphical structure library in order to display any one or more of the structures using the display facilities of the control processor 38' and keyboard and display 58 of the instrumentation system of FIG. 4.

The sequence structure, which has its graphical representation illustrated in FIG. 8, serves to divide a data-flow diagram into two subdiagrams, one representing an inside and another representing an outside of the sequence structure borders. The outside diagram behaves exactly as if the sequence structure and its contents were replaced by an icon with a terminal (or hot spot) for each line crossing the sequence structure border. The drawing of FIG. 8 shows a three-diagram sequence. In order to minimize space used on a computer console screen, only one diagram of the sequence structure is available at a time. Inside the structure border, are multiple diagrams which execute in sequence. The sequence of diagrams are indicated by the respective numbers in the respective sequence diagrams. When the first diagram (indicated by the number 0) in this sequence completes its execution, the next one begins. The process is repeated until all diagrams in the sequence have been executed.

Each diagram in the sequence uses a subset of incoming signal paths and produces a subset of outgoing signal paths (the outgoing subsets must be mutually exclusive, but the incoming subsets are arbitrary). Constants may be used with any of the diagrams without any constraints. Variables used within a diagram are strictly local to the sequence structure and may be assigned only once. Variables can be used multiple times in the diagrams following the diagram where the variable was assigned.

In accordance with data-flow principles, used in the preferred embodiments of the present invention, the sequence structure does not begin execution until all incoming signal paths have data available, and none of the outgoing signal paths produce data until all diagrams have completed execution.

FIG. 13 shows an illustrative block diagram 70 of a sequence structure. The sequence structure is coupled to receive input signals on respective lines 72 and 74 and to provide respective output signals on respective lines 76, 78 and 80. Input registers 82 and 84 are provided to collect input data. A decoder 86 is provided to determine which computation and/or control element 88, 90, or 92 to select, and a sequence counter 94 is included to undertake a count for sequencing between respective elements 88, 90 and 92. When all data inputs are present, an output of AND gate 96 becomes TRUE. This starts computation in computation and/or control element 88 (assuming that it is the first element selected). When the control element 88 has completed computation, its output is stored in register 98. When the first element 88 has completed computation, the sequence counter 94 is free to advance by one. The decoder 86 will select the second computation element 90. As soon as inputs are available for the second computation element 90, the output of AND gate 96 will become TRUE again and, computation will begin in the second element 90. The output of the second element 90 will be stored in output register 100. The sequence repeats for the third element 92, and its output is stored in output register 102. After the completion of the computation by the third element 92, the output data from all computations will be available for further computation by other instruments (not shown) of a block diagram system as will be explained more fully below.

The iterative loop structure, a graphical representation of which is shown in FIG. 9, is similar to the sequence structure in that the iterative loop structure partitions the data-flow graph into two parts. The interior diagram contains the body of the loop. Signal paths crossing the border of an iteration loop structure typically have a transformation applied. Incoming data are indexed in the most significant dimensions so that the data inside the structure have dimensionality one less than outside. Outgoing data has the inverse transformation performed.

All signal paths crossing the border must have the same size for the indexed dimension. It is possible to disable the indexing on a signal path, in which case, the data behaves as if it were a constant available to each iteration. If indexing is disabled on an outgoing signal path, the data value is repeatedly overwritten and only the last sequence progates out from the iteration structure.

There are two special variables which behave as constants within the body of the iterative loop structure: the number of iterations, N, and the iteration number or index, i. Usually, the number of iterations to be executed is automatically set by the size of the dimension being indexed for an incoming signal path. In the event that there are no incoming signal paths, a scaler value must be specifically connected to the variable to specify the number of iterations. The iteration number is similar to a constant within the diagram except that its value is 0 for the first iteration and increments by 1 at the end of each iteration.

Iterations are independent and can, in principle, be executed in any order or completely in parallel except in the case where a non-reentrant virtual instrument is used. In that case, the iterations would be executed strictly sequentially. In accordance with data flow principles, all inputs must be available to start execution of an iteration loop. Furthermore, all outputs are generated after execution completes.

Referring to the illustrative drawings of FIG. 14, there is shown a block diagram 104 for an iterative loop. An iterative loop structure operates on data in an array one element at a time. The data for each element are sequentially stored in respective input buffers 106 and 108. A counter 110 begins its count at 0. When the first data elements are available for both inputs of both respective input buffers 106 and 108, computation and/or control element 112 will generate outputs to be stored in respective output buffers 114 and 116. At that time, the counter 110 will advance to 1, and the process will repeat for the second data element in the array. This process will repeat until the counter 110 reaches N-1 making a total of N computations. At that time a complete cycle signal will be generated by the comparator 118. The output signals stored in the respective output buffers 114 and 116 then will be available for use by other computation instruments (not shown).

The conditional structure, a graphical representation of which is shown in FIG. 10, is similar in appearance to the sequence structure in its use of screen space, but it differs in its handling of signal paths crossing its border in that in each case a diagram may use any subset of incoming signal paths, but must produce all outgoing signal paths. In accordance with data-flow principles, all inputs must be available in order to start execution. Furthermore, all outputs are generated after execution is completed.

There must be a signal path that terminates at the case-selection terminal on the structure border. In the simplest case, a boolean-valued scaler is connected to the selector to select between case 0 (FALSE) and case 1 (TRUE). In the general case, a scaler number is connected to the selector. A special diagram (default case) may be specified to be used in the event that the selector does not lie in the range of specified cases.

The drawings of FIG. 15 illustrate a block diagram 120 corresponding to a conditional structure. The block diagram 120 for the conditional structure is substantially similar to that of the block diagram 70 for the sequence structure. The block diagram 120 for the conditional structure includes respective input registers 122 and 124, a decoder 126, an AND gate 128, three respective computer and/or control elements 130, 132 and 134 and three respective output registers 136, 138, and 140 all coupled as shown in the drawings of FIG. 15. In operation, the conditional structure block diagram 120 operates in a manner substantially similar to that of the sequence structure block diagram 70, except that the decoder 126 of block diagram 120 is directly controlled by the case selection input provided on line 142.

The indefinite loop structure, a graphical representation of which is shown in FIG. 11, is similar in concept to the iterative loop structure in that the interior of the structure diagram represents the body of the loop, but it differs in that signal paths crossing the border of the indefinite loop structure do not usually have an indexing transformation applied.

There are two special variables applied within the body of the indefinite loop structure: iteration number or index, i, and recirculation flag, Q. The iteration number starts at zero and increments by one at the end of each iteration. A boolean value or expression is connected to the circulation flag. A value of TRUE means that another iteration will be performed. If the recirculation flag is left unconnected, it is equivalent to connecting a TRUE constant. In accordance with data-flow principles applied in the preferred embodiments, all inputs must be available in order to start execution. Furthermore, outputs are generated after execution is complete.

The illustrative drawings of FIG. 16 shows a block diagram 144 which corresponds to the graphical representation of an indefinite loop structure shown in FIG. 11. In operation, when data inputs are available on both respective input registers 146 and 148, an output of AND gate 150 will become TRUE to enable computation and/or control element 152. After computation is complete, output data are stored in respective output registers 154 and 156. After completion of the first loop, counter 158 increments, and the cycle begins again. This process continues until a recirculation flag provided on line 160 goes FALSE. The output data are present after each cycle.

A special construction available for use only within the respective loop structures is the shift register. A graphical representation of each respective loop structure type incorporating a shift register is show in FIG. 12. The shift register eliminates the need for cycles in a data-flow graph making the result easier to comprehend and to prove correct. The shift register behaves as if it were an ordered set of two or more variables, all of the same type and dimensionality.

The first variable in a set is an output of the loop-body diagram and is located on the right border of the loop structure. The other variables of the set are inputs to the loop-body diagram and are located on the left border of the structure at the same elevation.

At the conclusion of each loop iteration, the data from the shift register output variable are shifted into the first input variable, and the previous value of the first input variable is shifted into the second input variable.

The drawing of FIG. 17 shows an illustrative block diagram 162 illustrating operation of an iterative loop structure including a shift register. Respective latches 164 and 166 are provided to implement the shift register. In operation, the block diagram 162 of FIG. 17 (which represents an iterative loop structure with a shift register) operates similarly to the block diagram 104 of FIG. 14 (which represents an iterative loop structure minus a shift register) except that computation inputs are provided which give the system feedback from a previous cycle.

An output provided by loop counter 168 is sensed by the comparator 170. For the first loop, the multiplexer control 172 selects preselect inputs from respective preset gates 174 and 176. For all other cycles, respective latches 164 and 166 are selected. The selected input is fed into the computation and/or control element 178. Data from input buffer 180 also is fed into the computation element 178. After each cycle, the computed output data are fed into respective output buffers 182 and 184. When the comparator 170 reaches N-1, the process is completed, and the output data can be passed to a next instrument (not shown).

The following discussion regarding data flow principles and a virtual instrument data structure diagram will assist in understanding the operation of the respective block diagram editors 22, 30 and 30' and the respective execution subsystems 24, 32 and 32' of the respective first system 20, second system 28 and the instrumentation system 56.

Referring now to the illustrative drawings of FIG. 18, there is shown a block diagram 186 of an exemplary data flow system. The block diagram 186 includes three respective input registers 188, 190 and 192 which provide an accumulation of input data. As soon as all input data are present, an output of AND gate 194 will become TRUE, and computation and/or control element 196 will begin computation. The computation element 196 will begin generating output data which are stored in respective output registers 198, 200 and 202. When all output data are available, an output token will be generated by the computation element 196 indicating that output data are available for transmission to a next system (not shown). It will be appreciated that the computation element can be a combination of more than one subsystem (not shown).

FIG. 19a illustrates a virtual instrument data structured diagram. The first system 20 of FIG. 1, the second system 28 of FIG. 2, and the instrumentation system 56 of FIG. 4 each utilize the principles set forth in the data structure diagram of FIG. 19a. It will be appreciated that implementation of a system utilizing a data structure such as that diagrammed in the diagram of FIG. 19a advantageously permits the implementation of a data flow system like that illustrated in FIG. 18.

Furthermore, it will be appreciated that implementation of the data structure like that of the diagram of FIG. 19a advantageously permits the implementation of a system in which execution instructions can be constructed in a graphical fashion. More particularly, execution instructions can be constructed by constructing a visual display in which at least one input variable produces at least output variable according to a displayed procedure. Furthermore, the execution instructions are constructed such that, when a value is assigned to a particular input variable, a value for a corresponding output variable is produced substantially according to the procedure illustrated in the visual display. Additionally, the execution instructions can be constructed in response to the construction of a block diagram comprising the graphical display. Thus, a user need only construct an appropriate visual display in order to construct the execution instructions.

Moreover, implementation of data flow principles by using a data structure such as that shown in the diagram of FIG. 19a advantageously permit the use of parallel processing which increases the speed with which the execution of execution instructions can be accomplished.

More particularly, FIG. 19a shows a system representation of a virtual instrument. Boxes 8a-8k, indicate conceptual objects in the system that have well-defined properties. Objects 8i, 8j and 8k are grouped into shaded box 8s and share some properties and form a class of objects.

As indicated in FIG. 19b which represents a legend applicable to the illustration of FIG. 19a, a solid line with an arrow is used to indicate a potential one-to-many relationship, i.e., the source object contains zero or more destination objects (e.g., a vehicle containing zero or more wheels). A wiggly line with an arrow is used to indicate a potential one-to-many relationship, i.e., the source object may reference zero or one destination object (e.g., a library book may or may not have a borrower).