CA1285655C - Graphical system for modelling a process and associated method - Google Patents

Graphical system for modelling a process and associated method

Info

Publication number
CA1285655C
CA1285655C CA000534709A CA534709A CA1285655C CA 1285655 C CA1285655 C CA 1285655C CA 000534709 A CA000534709 A CA 000534709A CA 534709 A CA534709 A CA 534709A CA 1285655 C CA1285655 C CA 1285655C
Authority
CA
Canada
Prior art keywords
icon
screen
function
variable
control means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CA000534709A
Other languages
French (fr)
Inventor
Jeffrey L. Kodosky
James J. Truchard
John E. Maccrisken
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Instruments Corp
Original Assignee
National Instruments Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25311082&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CA1285655(C) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by National Instruments Corp filed Critical National Instruments Corp
Application granted granted Critical
Publication of CA1285655C publication Critical patent/CA1285655C/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/319Tester hardware, i.e. output processing circuits
    • G01R31/31903Tester hardware, i.e. output processing circuits tester configuration
    • G01R31/31912Tester/user interface

Abstract

Abstract:
A method is provided for programming a computer system including a display console for displaying images to control at least one of a virtual instrument and an instrument, the method comprising the steps of displaying on the screen at least one first function-icon that references at least one first control module for controlling at least one first function; displaying on the screen at least one iteration-icon that references iteration control module for controlling multiple iterations of data flow of data flow;
displaying on the screen at least one first input variable-icon that references at least one first input variable, displaying on the screen at least one first output variable-icon that references at least one first output variable; and asssembling on the screen a first acyclic data flow diagram including the at least one first function-icon and the at least one iteration-icon and the at least one first input variable-icon and the at least one first output variable-icon, such that the diagram displays a first procedure for producing at least one value for the at least one first output variable-icon from at least one value for the at least one first input variable-icon, and such that the at least one iteration-icon in the diagram indicates multiple iterations of the at least one first function in the course of the first procedure.

Description

~5~

GRAPHICAL SYSTEM FOR MODELLING
A PROCESS AND ASSOCIATED METHOD

BACKGROUND OF THE INVENTION
1~ Field of the Invention The present in~ention 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 movemP-nt toward very high level program~ing languages which can e~hance programmer productivity by making a program-ming task more understandable and intuitiv~O The increasing use of computers by users who are not highly trai~ed in computer programming techniques has lead to a situation in which the user's program-ming skills and ability to interact with a computer system often become a limiting factor in the ach-ievement of optimal utilization of the computer system.
There are numerous subtle complexities which a user often must ma6ter be~sre she can e~ficiently : program a computer system. For exa~ple, typical earlier computer ~ystems generally comprise software subsystems which include multiple programs, and such programs o~ten utilize one or more subroutines.
Software systems typically coordinate activity between multiple programs, and each program typi-cally coordinates activity between multiple subrou-tines. However, techniques for coordinating multi-ple programs generally dif~er from techniques forcoordinating multiple subroutines. Furthermore, since programs ordinarily can stand alone while :`

.~ .
'' ' ~' '' , ' :
: , ' ' ' ' : ' , ' ' ' ~8~;~

subroutines usally cannot, techniques for linking programs to a software system generally differ from techniques for linking subroutines to a program.
Complexities such as the~e often make it difficult for a user, who although she may be a specialist in her field i5 not a specialist in the computer field, to efficiently make use of powerful computer systems which are available for her use.
The tas~ of programming a computer system to model a process o~ten is further complicated by the ~act that a sequence of mathematical formulas, mathematical 8tQpS or other procedures cu-~tomarily used to conceptually model such a process often does not closely correspond to the traditional program-ming tech~iques used to program a computer system tomodel 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 coxresponds 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 o~ten i8 not fully pro~icient in kechniques ~or causing a computer sy~tem to implement her model, the e~iciency 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 .
~ .

~s~s~
of instrumentation. An instrument typically col-lects information from an environment. Some of the types of information which might be collect~d by respective instruments, fvr example, include:
5 voltage, distance, velocity, pressure, ~requency of oscillation, humidity or temperature. An instrumen-tation system ordinarily controls its constituent instruments from which it acquires data which it analyzes, stores and presents to a user of the 10 system. Computer control of instrumentation has become increasingly desirable in view of the in-creasing complexity and variety of instruments available for use.
In recent years, increasing effort has been 15 directed toward providing ~ore efficient means for implementing instrumentation systems. The task has been complicated by the fact that such systems include arbitrary combinations of hardware instru-ments and software components. The need for more 20 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 25 comprised individual instruments physically inter-connected. Each instrument typically included a physical front panel with its own peculiar com-bination of indicators, knobs, or switches. A user generally had to understand and manipulate individu~
30 al controls for each instrument and record readings from an array of indicators. Acquisition and ana}ysis of data in such instrumentation systems was tedious and error prone. An incremental improvement in user interface was made with the introduction of 35 centralized control panels. In these improved systems, individual instruments were wired to a control panel and the individual knobs, indicators ~L~15~;S
., or switches of each front panel were either preset or were selected to be presented on a common ~ront panel.
Another significant advance occurred with the introduction of computers to provide more flexible means for interfacing instru~ents with a user. In such computerized instrumentation systems the user interacted with a software program of the computer system through a terminal rather th~n through a manually oparated front panel. These earlier improved instrumentation systems provlded signifi-cant performance efficiencies over earlier systems for linking and controlling test instru~ents.
Additional problems soon developed, however.
~omputer programs used to control such impr~v~
instrumentation systems had to be written in conven-tional bextual progr~ng language such as, for e~le, machine cod~, FORTRAN, BASIC, Pascal, or ATL~S.
Traditional users of instrumentation systems, however, often were not highly trained in program-ming techniques and, therefore, implementation of such systems frequently required the involvement of a programmer to write software for control and analysis of instrumention data. Thu6, development and maintenance of the software elements in these instrumentation systems often proved to be diffi-cult.
Some reasons for the difficulties associated with earlier computerized instrumentation systems included, for example: (1) textual programmlng languages were non-intuitive and unfamiliar to the instrumentation system user; ~2) traditional pro gramming languages did not readily support the parallel activity of multiple individual instru-ments; (3) concepts embodied in a computer programoften were significantly different from concepts embodi~d in an instrumentation system's instrument ~951~,5~;

hardware; (4) computer program.software modules often did not match an instrumentation system's hardware moduIarity making interchangeability of software and hardware difficult; and (S~ techniques for designing, constructing, and modifying computer software were significantly different from corre-sponding techniques for developing an instrument hardware system.
A general type of program design technique involves data flow diagramming. Data flcw diagramming.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 diagramming is that it introduces parallelism into a computer system which, of course, `usually increases the speed and efficiency of the system. However, as a design technique, data ~low diagramming has had difficulty representing conditional or iterative functions.
Thus, designing using data flow techniques has been difficult.
Current attempts to develop text based data flow.software.systems generally have been unsuccessful.
This lack of success may be due to difficulties in perceiving paralle].s between text based software and actual data flow, and it may be due to the fact that the text form of data flow generally suffered from the same difficulties in representing conditional : and iterative functions as did the diagram form of data ~low.
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 3s a system. There exists a need for such a system , .,. . . . :
',,' ' . : ' :
,~ . ' .

- Sa -which employs data flow techniques and overcomes the difficulties in representing conditional and iterative functions. The present invention meets these needs. Finally, there exists a need for S such a system which represents data flow graphically rather than textually.

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 ~C35~-5S

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.
In accordance with one aspect of the invention there is provided a method for programming a computer system including means for displaying images to control at least one of a virtual instrument and an instrument, the method comprising the steps of: displayiny on the screen at least one first function-icon that references at least one first control means for controlling at least one first function; displaying on the ;35 screen at least one iteration-icon that references iteration control means for controlling multiple iterations of data ; flow; displaying on the screen at least one first input .; .
, : .

~35~;55 6 a variable-icon that references at least one first input variable; displaying on the screen at least one first output variable-icon that references at least one first output variable; and assembling on the screen a first acyclic data flow diagram including the at least one first function-icon and the at least one iteration-icon and the at least one first input variable-icon and the at least one first output variable-icon, such that the diagram displays a first procedure for producing at least one value for the at least one first output variable-icon from at least one value for the at least one first input variable-icon, and such that the at least one iteration-icon in the diagram indicates multiple iterations of the at l.east one first function in the course of the first procedure.
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.

,~ ~
`:

, ' ,i, ., 1 .
... .

~3S~;55 BRIEF DESCRIPTl:ON 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. l;
Fig. 3 i8 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 instrument-lS ation system including the second system of Fig. 2;
Fig. 5 shows an illustrative front panelproduced using the front panel editor of the in-strumentation system of Fig. 4;
Fig. 6 shows an illustrative icon produced using the icon editor of the inst~umentation system o~ 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 SeqUQnCe structure;
Fig. 9 shows a graphical representation of an iterative loop structure;
Fig. 10 shows a graphical representatiQn 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 ~ 285655 structure of Fig. 9 and Indafinite loop structure of Fig. 11:
Fig. 13 shows an illustrative block diagram generally corresponding to the graphical representa- _ 5 tion of a sequence structure shown in Fig. 8;
Fig. 14 ~hows an illustrative block di~gram generally corresponding to the graphical representa-tion of an iterative loop structure show in Fig. 9;
Fig. 15 shows an illustrative block diagram generally corresponding to the graphical representa-tion o~ a conditional structure shown in Fig. 10;
Flg. 16 shows an illustrative block diagram generally corresponding to the graphical representa-tion of an indefinite loop structure shown in Fig.
: 15 11;
Fig. 17 show~ an ~llustratiYe block diagram generally corresponding to the graphical representa-tion o~ 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. l9a illustrates a virtual instrument data : structure diagram used by tAe first system of Fig.
1, the second system of Fig. 2 and the instrumenta-tion system of Fig. 4;
Fig. 19b shows a legend applicable to the illustration of Fig. l9a;
Figs. 20a-1 illustrate computer terminal displays during each succes~ive step in a con-struction o~ an exemplary block diagram using theblock diagram editor o~ Flgs. 2 or ~:
Fig. 21 is a drawing of an illustrative hard-ware instrumentation system of the present in-vention;
Fig. 22 i~ a drawing representing a block diagram according to the present invention as ., .~ .

~, .

,, 12~35655 g 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 illu~trates 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 . 3 0 shows the GRAPHICAL dialog box;
Fig. 31 illustrat~s 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 illustrate~ FUNCTION menu from Block-Diagram window;
Fig. 34 shows a graph~cal representation of a sequence structure;
Fig. 35 show~ a graphical representation of a ~or loop structure;
Fig. 36 ~how~ a graphical representat~on 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 bychoosing SPECIAL from the FUNCTIONS ~enu;

~ 285~i5~;

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.
3g;
Fig. 41 illustrates selection regions on structure glyphs (~oving 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 resizing the structure glyph (Click-dragging produces the result shown in the right side of the fi~ure. Release the mouse button and tha enlarged structure will remain in place);
Fig~ 43 shows two enlarged "~or" loop structures rearranged for the Fibonacci instrument:
Flg. 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;
~ig. 46 shows a block diagram window with addition and multiplication functions placed inside loop structures;
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 po-sitions of constant ob~ects alongside the inputs to the shi~t 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;

,' ' .
;

3L2856~i~

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 o~ the loop structure using the wiring tool;
Fig. 56 illustrates "hot spots" for available functions;
- 15 Fig. 57 is an illustration of the wired Fibonacci virtual 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;
.~ 25 Fig. 61 is a drawing in the icon editor;
i Fig. 62 is an illustration displaying the instrument icon in the front panel window;
~ Fig. 63 show~ a terminal connector pane `: displayed in the upper left-had aorner of the active 30 window by choo~ing CONNECTOR PANE option from the FORMAT menu;
Fig. 64 is an illustration of available ar~
~i rangements o~ connector terminals;
~` Fig. 65a is an illustration of the front panel . 35 window with selected terminal in connector pane, ..~ Fig. 65b is an illustration of the highlighted . terminal and control to be connected;
...

....
~, ~, . , j~ .
"
., Fig. 65c is an illustration of the connection between the e~tablished te~minal and control;
Fig. S6 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 in~trument to i~vert value set by control and display result on indicator;
Fig. 68 (right) is an illustration of a diagram for a reclp~ocal virtual instrument;
Yig. 69 is an illu~tration of an icon for the reciprocal instrument;
Fig. 70 is an illustration of an instrument for taking reciprocals of 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 re-ciprocal virtual instrument icon dropped into block-diagram window;
Fig. 73 is an illustration of an icon foruser-created invert-and-add instrument;Fig. 74 is an example solution ~or addin~ two resistances in parallel using two low-level, user-- 25 created virtual instruments in a hierarchical virtual instrument; and Fig. 75 is an illustration of an dialog box from INST~UMENTS option in the FUNCTIONS menu displaying two user-created virtual instruments.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
~ he present invention comprises a novel system and associated method for modelling a process. The following description is presented to enable any ~5 person skilled in the art to make and use the invention, and is provided in the context of partic-ular applications and their requirements. Various ~L2~3S~;5~;

~odifications 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 departlng from the spirit and scope of the in-vention. Thus, the present invention is not in-tended to be limited to the embodiments shown, but is to be accorded the widest scope co~sistent 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 flrst system 20 includes a block diagram editor 22, an eXecution subsystem 24 and a control processor 26. In the preferred embodimenk, the block diagram editor 22 and the execution subsystem 24 are constructed in so~tware.
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 à value for an input variable can produce a value for an output variable. The procedure together with the input vari-able and output variable comprise a model of a process.
Furthermore, the block diagram editor 22 constructs execution instructions wh$ch characterize an exe-cution procedure which substantially corresponds to the displayed procedure. The execution subsystem 24 assigns at least one value to the input variable and execukes the execution instructions to produce a value for the output variable. The control proces-sor 26 implsments the block diagram editor 22 and the execution subsystem 24 of the preferred embodi-ment.
The illustrative drawing of Fig. 2 shows a second system 28 for modelling a process in accor-dance with the present invention. The second system . ~ .
.

~28S~

28 includes a respective block diagram editor 30, and an execution subsystem 32 which are substan-tially identical to the block diagram editor 22 and the execution subsystem 24 of the fir~t system 20.
The second system 28 also includes an icon editor 34 and a front panel editor 35. The second 3y~tem 28 also includes a zontrol processor 38 which i~
substantially identical to that of the first system 20.
The second system 28 permits a u~er to con-struct a virtual instrument 40 such a~ that repre-sented in generalized form in the illustrative drawings of Fig. 3. The virtual instrument 40 includes a ~ront panel 42 which permits interactive use o~ 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 25 value ~or 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 constxuction comprising within its block diagram 46 respective icons 48 and 50 re~erencing other vlrtual in~tru-ment~ indicated generally by respective blocks 52 and 54.
The generalized block diagram of Fig. 4 shows an instrumentation system 56 incorporating the 35 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 ~28~

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, S the control processor 38 and the keyboard and display 58 are implemented using a Macintosh Plus Computer manufactured by the Apple Computer Company o~ Cupertino, California. ~owever, a Macintosh Computer also produced by the Apple Computer Comp~ny could be used i~stead.
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. Figure 5 shows lS 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 illus-tration o~ Fig. 5 represents an actual graphical computer-generated display of an exemplary front panel for the instrument 60. The graphical rep resentation o~ Fig. 5 illustrates physical control dials and switches for providing variable input information and illustrates a coordinate plane type indicator for displaying variable output in~orma-tion. More particularly, Fig. 5 shows a ci~cular 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 i}lustrating 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 ~rom among a variety of dif~erent graphical representations of input controls and output * Trade Mark ~3~;55 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.
Figure 6 illustrates an icon 64 which can be used to reference a front panel (not shown). A
visual representation of the icon 64 can be produced using the icon editor 34'. The icon 64 corresponds to a particular front panel (not shown).
As will be explained more fully below, the icon 64 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 64 and the respective two-dimensional regions (or hot spots) 56 and 68 which correspond to respective variable input data and variable output data illustrated by controls and displays of the corresponding front panel (not shown~. For example, the front panel might include input data in the form of a se~uence of samples and might provide output data in the form of an indicator showing voltage reading per sampIe. The icon 64 then might be divided into two-dimensional regions 68 and 66 which raspectively correspond to the input sample count and the voltage reading for that sample count.
Figure 7 illustrates a memory library including a plurality of soEtware 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 ~he 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' ln order to build a block ',:
,:~
.

:
.,,; ':
,, , ~`,',' .
~ ~ .

~ ~8~i~;SS

diagram; or he/she may use both the icons of the icon ~emory library and icons which he/she pxoduces 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 construct-ing a block diagram as described below using the block diagram editor 30 . The structures repre-sented in Figs. 8-12 substantially facilitate the application of data flow programming techniques which are used in the preferred embodiments o~ the present invention. Figure 8 illustrates a sequence structure. Figure 9 i~lustrates an iterative loop structure. Figure 10 illustrates a conditional structure. Figure 11 illustrates an indefinite loop structure. Figure 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 t~e respec-tive structures. Thus, a user can call upon a graphica} structure library in order to di~play any one or more of the structures using the display facilities o~ the control processor 38 and keyboard and display 58 of the instrumentatiQn 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 o~ 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 ~ 2~35~

the sequence structure border. The drawing of Fig.
8 shows a three-diagram sequence. In order to mini-mize space used on a computer console screen, only one diagram of the sequence structure is visible at a time. Inside the structure border, multiple diagrams (not shown) can be constructed which execute in sequence. The sequence of diagrams are indicated b~ the respective numbers in the respective sequence diagrams. When the first diagram ~indicated by the number O) 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)O Constants may be used with any of the diagrams without any constraints. Variables used within a diagram are strictly local to the sequence structuxe and may be assigned onl~ 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.
Figure 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 ;

~35~55 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 reyister 98. When the first element 88 has com-pleted computation, the sequence counter 94 is freeto advance by one. The decoder 86 wi.ll select 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 g2, 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 1QOP 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 dimension so that the data inside the structure have dimensionality one less than outside. Outgoing data has the inverse trans-formation 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, , ~2~356~S

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 value propagates 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 (for example, a virtual instrument which cannot execute in parallel with itself such as one which manipulates or communicates with a physical instrument) is used. In that case, the iterations wouId 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.
1~, there is shown a block diagram 10~ for an iterative loop. An iterative loop structure oper-ates on data in an array one element at a time. The data for each element are sequentially stored in respective input buffers 106 and lQ8. A counter 110 begins its count at 0. When the first data elements .

- ~ i a-re 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. ~t that ti~e, the counter 110 will advance to 1, and the proces6 will repeat for the second data element in the array. This process will repeat until the counter 110 reaches N-l making a tota:l of N compu-tations. At that time a complete cycle signal will be generated by the comparator 118. 'rhe output ~ignals ~tored in the respective OUtpllt buffers 114 and 116 then will be available for use by other computation instru~ents (not shown).
The conditional structure, a graphical rep-resentation 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 20 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 a~ter exe-cution i8 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 scalar is connected to the selector to select b~tween case 0 (FALSE) and case 1 ~TRUE). In the general case, a 30 scalar number is connected to the selector. A
~pecial diagram (de~ault 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 35 diagram 120 corresponding to a conditional struc-ture. The block diagram 120 for the conditional structure is substantially similar to that of the .
,, ~

~, ;655 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 ~ND gate 128, three respective com-S putation and/or control elements 130, 132 and 134and three respective output registers 136, 138, and 140 all coupled as shown in the drawings of Fig. 15.
In operation, the condition~l struckure block diagram 120 operates in a manner substantially 10 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 selec-tion input provided on line 142 to select only one diagram.
The indefinite loop structure, a graphical 15 representation o~ 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 indefi-20 nite loop structure do not usually have an indexingtransformation applied.
There are two Rpecial variables applied within the body of the indefinite loop structure: it-eration number or ~ndex, i, and recirculation flag, 25 Q. The iteration number starts at zero and incre-ments by one at the end of each iteration. A
boolean value or expression is connected to the re-circulation flag. A value of TRUE means that another iteration will be performed. If the recir-30 culation Plag is left unconnected, it is equivalentto 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 35 generated after execution is complete.
The illustrative drawings of Fig. 16 shows a block diagram 144 which corre~sponds 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 registerR 154 and 156.
After completion of the first loop, counter 158 increments, and the cycle begins again. This process continues until a recirculation flag pro-vid~d on line 160 goes FALSE. The output data are present after each cycl~.
A special construction available for use only within the respective loop structures is the shift register. A graphical representation of each respective loop ~tructure type incorporating a shiit register is show in FigO 12. The shift register eliminates the need for cycles in a data-flow graph ~aking the result easier to comprehend and to prove correct. The shi~t register behaves as if it were an ordered set of two or more variables, all of the same type and dimensionality.
The first variable $n a set is an output of the loop-body diagram and is located on the right border of the loop structure~ The other variables o~ the set are înputs to the loop-body diagram and are located on the left border of the structure at the same elevation.
At the conclu~ion of each loop iteration, the data from the shi~t register output variable are shiftQd into the first lnput 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 diagra~ 162 illustrating operation of an iterative loop structure including a shi~t register.
~ Respective latches 164 and 166 are provided to :, ' ' ~ ' ...

~s~

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 co~bination of more than one sub~ystem (not shown).
Figure l9a illustrates a virtual instrument 10~ data structured diagram. The ~irst system 20 of Fig. 1, the second system 28 o~ Fig. 2, and the instrumentation ~ystem 56 of Fig. 4 each utilize the principles set ~orth in the data ~tructure diagram of Fig. l9a. It will be appreciated that implemen-tation of a system utilizing a data structure suchas that diagrammed in the diagram of Fig. l9a advantageously permits the implementation of an extended data ~low system like that illustrated in Fig. 18.
Furthermore, it will be appreciated that : 20 implementation of the data structure li~e that of the diagram of Fig. l9a advantageously permits the implementation of a system in which execution instructions can be constructed ~n a graphical fashion. More particularly, execution instructions 25 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 30 to a particular input variable, a value for a corresponding output variable is produced substan-tially according to the procedure illustrated ln the vi~ual display. Additionally, the execution in-structions can be constructed in response to the 35 construction of a block diagram comprising the graphical display. Thus, a user nsed only construct ~' ' ', ' ;

~' `: ' `

~:~8S~

an appropriate visual display in oxder to construct the execution instructions.
Moreover, implementation of data flow princi-ples by using a data structure such as that shown in the diagram of F~g. l9a advantageoucly permit the use of parallel processing which increases the speed with which the execution of execution instructions can be accomplished.
More particularly, Fig. l9a shows a system representation of a virtual instrument. Boxes 8a-8k, indicate conceptual objects in the system that have well~defined properties. Objects 8i, 8;
and 8k are grouped into shaded box 8s and share some properties and form a class of ob;ects.
As indicated in Fig. l9b which represents a legend applicable to the illustration of Fig. l9a, 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 ob;ects (e.g., a vehicle containing zero or more wheels). A
wiggly lin~ with an arrow is used to indicate a potential one-to-one relationship, i.e., the source ob;ect may reference zero or one destination object (e.g., a li~rary book may or may not have a bor-rower).
Line 8n indicates that a virtual instrument ~bcontains a front panel with a muItiplicity of controls 8c. A control ~ay be of clustered type in which case it contains a multiplicity of subcontrols as indicated by line 8p. Line 8q indicates that a virtual instrument contains an icon with a multi-plicity o~ terminals 8d. Line 81 indicates that virtual instrument also contains a multiplicity of block diagrams 8e.
In the system of the present invention, a virtual instrument either contains one diagram or none. Built-in virtual instruments representing ~2~3S~5Si implement the ~hift register~ In operation, the block diagram 162 of Fig. 17 (which represents an iterative loop ~tructure 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 sy~tem 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 ~rom respective preset gates 174 and 176. For all other cycles, respective latches 164 and 166 are selected. The selected input is fed into the 15 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-l, the 20 process i6 completed, and the output data can be passed to a next instrument (not shown).
The ~ollowing discussion regarding data flow principle~ and a virtl~al instr~ment data structure diagram will a~sist in understanding the operation 25 of the respective block diagram editors 22, 30 and and the respective execution subsystems 24, 32 and 32 o~ the respective first system 20, second system 28 and the instrumentation system 56.
~eferring now to the illustrative drawings of 30 Fig. 18, there i6 ~hown a block diagram 186 o~ an exemplary data ~low system. The block diagram 186 includes three respective input registers 1~8, 190 and 192 which provide an accumulation of input data.
A5 soon as all input data are present, an output of 35 AND gate 194 will become TRUE, and computation and/or control element 196 will begin computation.
The computation element 196 will begin generating ' i:
.
;
' .
,:

- 27 ~
primitive computations have no diagrams. Line 8r indicates that a block diagram contains a multiplic-ity of objects of the node class. A block diagram contains exactly one self reference node 8i, and an arbitrary number of structure nodes 8j or instrument use nodes 8k. Line 8t indicates that a structure node contains a multiplicity of subdiagrams.
A sequence structure or a conditional structure contains one or more sub-diagrams, and an iterative loop structure or indefinite loop structure contains exactl~ one sub-diagram. Line 8m indicates that an instrument use node is used to reference another virtual instrument. The instrument use node may reference a virtual instrument in real-time; or it may reference previous data acquired by the virtual instrument. Line ~u indicates that each ob~ect of the node class contains a multiplicity of terminals 8g. Line 8v indicates that a block diagram also contains a multiplicity of signal paths 8f. Each signal path contains a multiplicity of terminals as indicated by line 8w. There is at most one terminal per signal path that is designated as the source of the signal. Each terminal contained in a signal path also is contained in a node. However, there may be terminals in nodes whirh are no~ in signal paths. The terminals in a signal path are typically in different nodes. Lines 8y and 8z indicate that each terminal may reference a front panel control or a block diagram control (e.g., a aonstant). A
terminal references exactly one aontrol, and it is either on the front panel or on the block diagram.
Figs. 20a-1 illustrate computer screen displays during each succes~ive ~tep in a construction of an exemplary block diagram using a block diagram editor such as that of Figs. 2 or 4. (It should be appre-ciated that the block diagram editor of Fig. 1 operates in a similar fashion; except that it does .

--.~ .

; :

3565i~

not include an icon editor or a front panel editor for user-constructed front panel).
More particularly, in Fig. 20a, a control knob i8 placed in the front panel, and its associated terminal automatically appears in the block diagram The 8y8tem representation shows the virtual in~tru-ment with a diagram containing a sel~ reference node, and a terminal in the self reference node which references the front panel control.
In Fig. 20b, a control graph indicator type is placed in the front panel, and it~ associated terminal automatically appears in the block diagram in the same position relative to the other terminal as the graph is to the knob. This makes it possible to di~inguish the terminal even wi~hout supplement-ing the graphics with text labels.
In Fig. 20c, a constant with value 20 is placed in the block diagram, and is reflected in the system representation by another terminal and control attached to the self reference node.
In Fig. 20d, an icon referring to a built-in virtual instrument is placed in the block diagram.
(An alternative view of the block diagram could show the icon terminals instead of the icon itself3. Ihe system representation shows another node of instru-ment use type in the virtual instrument diagram and three terminals and controls corresponding to the terminals and controls the referenced virtual instrument.
In Fig. 20e, an iterative loop structure is placed in the block diagram. The system representa-tion shows the structure node in the diagram along with terminals and controls for the loop variables.
Note that the iteration number ia acces~ibla only from within the loop; while the iteration limit is available inside and outside the loop as evidenced ~y the two terminals which reference it, one in the ~L~8~ S~i -- :29 --tructure node and the other in the sel~-reference nodR of the diagram within the structure node.
In Fig. 20f, an icon referencing another built-in virtual instrument is placed inside the iterative loop structure.
In Fig. 20g, a wire is connected from the terminal associated with the ~ront panel knob to the loop limit terminal of the loop structure. The front panel knob terminal is determined to be the signal source.
In Fig. 20h, a wire is connected ~rom the iteration number terminal to a terminal on the virtual instrume~t inside the loop. This sign~l path l~es completely within the loop structure subdiagram. The system representation shows the signal path with the iteration number terminal and the terminal on the instrument use node. The iteration number terminal is determined to be the signal souxce.
In Fig. 20i, the constant is wired to a termi-nal of the virtual instrument within the loop. In this case, the wire crosses the structure border so that a pair of terminal~ and a control are created, and the wire is split into two signal paths, one 25 outgide the loop structure and one inside. The constant is determined to be the ~ource terminal of the outside signal, and the inside terminal at the border is determined to be the source of the inside signal.
In Fig. 20~, a wire iB drawn from the virtual instrument inside the loop to the virtual instrument outside the loop. This wire crosses the border so it i~ split into two signal paths. The wire on the outside i~ thicker because it represents an array 35 signal path (as will be explained more fully below).
In Fig. 20k, the iteration number terminal is connected to a terminal on the outside virtual `:
:
~ ' ' `
.
, . .
.

~35~)55 instrument. The wire crosses the border so that it is split into two signal paths. The inside signal path is joined to the existing signal path originat-ing at the iteration number terminal. Again, the wire on the outside is thicker.
In Fig. 201, the output of the virtual instru-ment outside the loop is connected to the terminal associated with the front panel graph. The wire pattern indicates that it represents a cluster signal path (as will be explained more fully below).
The following description descxibes the opera-tion of the execution subsystems 24, 32 and 32'of the respective first system 20, second system 28 and the instrumentation system 56.
lS The first step in the execution of a virtual instrument is accomplished by executing its block diagram. The first step in the execution of a block diagram is accomplished by scanning the terminals contained in the diagram's self-reference node. For each terminal which is the source of a signal, the data token is moved from the control referenced by the terminal to the terminal itself. The second step in the execution of a diagram is to initialize the token short-count of each node in the diagram to the number of input signals to that node. The third step in the execution of a diagram is to propagate signals from the self-reference node. Propagation of signals from a node is accomplished by scanning all of the node's terminals~ For each terminal that is source of a signal the data token on the terminal is copied to each destination terminal of the signal path. Each token placed on a destination terminal causes the short-count of the node containing the terminal to be decremented. If it becomes zero in the process, then that node is~scheduled to execute.
The first step in the execution of a node is accomplished by copying the tokens from the node's terminals to the reference controls. The second 35~;55 step depends upon the type o~ node. For an instru-ment use node that references a real-time virtual instrument, the next execution step is to copy the token~ from the node~s controls to the virtual instrument's controls and to execute the virtual instrument. For an instrument use node that re~er-ences previously stored data of a virtual instrument, the tokens from the appropriate data record are read in and placed on the node's terminals. For a gequence structure node, the next step is to execute the first subdiagram. For a conditional structure node, the~next step is to exe~ute the subdiagram indicated by the value of the token on the selectecl control. For an iterative or indefinite loop structure node, the next step is to set the value o~
the token on the iteration number control to zero and to execute the subdiagram. For a self-reference node, the next step is to perform the next step in the execution of the node or the virtual instrument which contains the diagram that contains the self-re~exen~e node.
The third step in the execution of a node also depends upon the type of node. For an instrument use node or a conditional structure node the output 25 data tokens are propagated along the signal paths.
For a ~equence structure node, the next subdiagram is executed, if one exists, and i~ not, the output tokens are propagated. F~r a loop structure node, the ~hift registers are clocked, ~the date is shifted?, 30 the iteration numbers incremented, and the subdiagram is re-executed, if appropriate; otherwise the output tokens are propagated.
The second step in the execution of the virtual instrument is to log the token~ on the front panel 35 controls if data logging is enabled. The third step in the execution of the virtual instrument is to copy the tokens from the virtual instrument's '.
. .
, ' ' :

, 1~8565~i indicators to the instrument use node's output terminals and to schedule the instrument use node to execute its next step. The third step o~ virtual instrument execution is performed only if the S virtual instrument was executed in response to an instrument use node request. I~ the virtual instru-ment was executed interactively, there is no third step.
Figure 21 shows an illustrative hardware con~iguration o~ an instrumentation system 204 according to the present invention. The system 204 includes a Macintosh computer 206 with an inter~ace to a GPIB tgeneral purpose instrument bus) 207, a Tektronix S010 Function generator 208, a Fluke 8840A
digi~al multimeter 210, and a unit under test 212 all coupled as shown. The traditional approach to automating this measurement would be to create a program in the computer language such as BASIC to interact with the test instruments 208 and 210 to collect, format, and display in real time the measured values pertaining to the unit under test 212.
Figure 22 shows a drawing of a computer-generated display of a completed block diagram for the design example o~ Fig. 21. This blocX diagram is the graphical program representing the instru-ment's operation. It shows the interconnections between the elements of the instrument, the signal paths, and the relationship to other virtual instru-ments. At the upper left of the diagram, four front 30 panel input controls are shown cQnnected to a ~Ramp"
icon. This icon is built-in function whlch takes input minimum and maximum values, number o~ steps, and a flag to indicate linear or log steps, and produces as output an array of sample points, in 35 this case the frequencies o~ interest. The output is a bold one, which indicates that the data type is an array.

* Trade Mark The large rectangular region in the center of the diagram is an itsration loop structure. The diagram placed inside this region will be executed multiple times: for i = 0 to N-l. The inputs to the iteration loop are amplitude and the array of frequencles, shown on the left. The amplitude remains thé same data type as it cros~es the 1QP
boundary. The array, however, as shown by the change in line type, is automatically indexed as it crosses the boundary to provide one array element per iterationO Since there is no connection to the loop-count (the N at the upper left corner), the length of the input array is used by default as the number of iterations.
Inside the iteration loop are two virtual instrument icons. The firs~ takes as input an amplitude and a frequency and performs the appropri-ate IEEE-488 operations to set the ~unction genera-tor 20% of Fig 21. The second performs the appropriate IEEE-488 operations to obtain a voltage measurement from the multimeter 210 of Fig. 21. The dotted line indicates that there is no data flow, but ensures that they execute sequentially. These two icons represent simple virtual instruments that are easily designed using built-in high level IEEE-488 ~unctions to communicate with the multime-ter 210.
Each iteration of the iteration loop produces olle voltage measurement. This results in an array of values, as shown by the line change as it exits the loop at the right. The graph function takes this array and the array of frequencies as input and produaes as output the data ~tructure for the front panel graph indicator. Note the self-documenting effect of the graphical language, with the iteration loop structure contributing to the readabi}ity of tho program.

.
~'~ '' .

.. ~ .

With the front panel and block diagram complete, the instrument is ready to be used. The instrument is operated from the front panel. To execute the instrument, the user simply configures the input controls and "clicks" the GO
button on the top of the screen (as will be appreciated from the description below.) Operation of the Preferred Embodiments The presently preferred embodiments of the invention are implemented in software. The following description explains the operation of the presently preferred embodiment as implemented using either an Apple Macintosh Plus Computer or an ~pple Macintosh Computer. The explanation is intended to be illustrative and not exhaustive and uses specific examples to explain the principles of operation of the preferred embodiments. It will be appreciated that the principles of operation explained below will serve as a basis for the heuristic learning process necessary to fully appreciate and practice the full scope of the present invention. Thus, it is not intended that the scope and content of protection afforded to the present invention be limited in any way by the following explanation.
The following explanation explains how to use the implemented functions of the pref~rred embodiments. A walk through of the display menus is provided first, with working functions described. This presentation is followed by a walk through of an example application program that computes Fibonacci numbers.
To start, double click on PROTO icon. The PROTO icon is illustrated in Fig. 23a.

`

:

The opening screen i8 shown in Fig. 23b. This screen is the fxont panel window on which controls can be pla~ed. The tools and controls below the menu bar will be described later.
Figure 24 shows the contents of the FILE menu.
In thi~ and subsequent screen pictures, items in clear ~urrounds can be selected. Stippled items do not yet work. The NEW, OPEN, CLOSE, SAVE and SAVE
AS... itQms work as in any other ~acIntosh program that follows Apple's user-interface guidelines. NEW
opens a new instr~ment, OPE~ brings up a dialog box with existing in~trument~' names, CLOS~ closes the current instrument, SAVE saves the instrument with the current file name, and SAVE ~S... saves a copy o~ the current instrument under the user-specified instrument name. OPEN DIAGRAM opens the block diagram window. Its use will be describe later.
QUIT exits from PROTO and returns the user to the Finder.
Figure 25 shows the EDIT menu selections. This one is ea~y. Only CLEAR works. CLEAR is useful for removing items ~rom the active window, e.g., selected wires and structures from the block diagram window, or controls from the front panel window.
Figure 26 shows the FORMAT menu. The FORMA~
menu has five working items. The first two FU~L
SC~EEN and TILE alter the 6creen display. The FULL
SCREEN options produces over-lapping windows. The TILE option produces non overlapping windows. Both the FULL SCREEN and TILE selections can be reverted by selecting them again. The TILE option i5 di~med if a block diagram window is not open.
Figure 27 shows the contents of the CONTROL
menu. The CONTROL menu is only available when the front panel window is active. The NUMERIC, STRING
and GRAPHICAL items all work to some degree. Choos-ing the NUMERIC item brings up the dialog box ~hown - -:

~35655 in Figure 28. This box offers the user many choices, however, only a few are implemented at this time. The small glyphs half~way down the left side of the box offer the choice of display style.
clicking on the chosen glyphs produces a reverse-video display of that pictograph. MINIMUM, ~AXI~UM and DEFAU~T work by selecting the~r adjacenk ~rames and filling in the desired values. Arrays can be speci~ied by choosing the numbler of dimensions and inserting that number into the frame to the left of A~RAY DIMENSIONS. The number of elements in each array dimension is then specified by entering appropriate values into the dimension frames numbered 1 to 8. Selecting the INDICATOR
ONLY box makes the control a passive indicator on the front panel. Selecting SHOW DIGITAL REA WUT
provides a digital readout o~ the value of the control. The current value of the control can be ; altsred by ~djusting the control itself or by altering the va}ue in the digital read out by selecting and entering values from the keyboard.
Note the CONTROL menu is dimmed when the block diagram window is the active window. It is made available by making the front panel window the active window.
Figure 29 shows the dialog box for the STRING
control. String controls can be filled with values ~or use as controls or indicators. This capability i8 u~eful ~or sendin~ command or address strings for 30 writing ~o and reading ~rom a GPIB.
Figure 30 shows the dialog box for the GR~PHICAL control. This control is used to display graphs. It must be used with the INDICATOR ONLY box selected.
The FUNCTIONS menu name is dimmed when the front panel window is active. It becomes available when the block diagram window is made the active window.
Figure 31 shows the FILE menu displayed from the front panel window and the OPEN DIAGRAM ~tem selected. Selecting this item opens a block diagram window. Figure 32 shows the screen for a new block diagram window.
Notice that the untitled block diagram window is distinguishable from an untitled ~ront panel 10 window by the pre~ence of the black bullets ( ) in the title bar and the dimming o~ the CONTROL mem name. A block diagram is created by choosing items fxom the FUNCTIONS menu. Figure 33 shows the content~ of the Function-~ menu. Only a subset of 15 functions ~rom the item~ SPECIAL, ARITH~ETIC, COMPARATIVE, INPUT-OUTPUT are working. Single fuActions are also available from STRING, SIGNAL
PROCESS and CURVE FIT. The working functions ~rom each of the menu option~ will be described in turn.
2a ~he functions available from the SPECIAL option of FUNCTIONS menu include STRUCTURES, SPECIAL XTEMS, and CONSTANTS. Each of the available functions is described below.
.
25 Struc~ureS
To remedy shortcomings o~ the conventional data flow, which ~akes it substantially unusable as a programming language, the present invention lncludes graphical operators. ~hese structures implement in 30 a ~ata flow environment what typical structured programming control do.

Se~uence Structure The sequence structure in its simplest form serves to divide the data ~low diagram into two 35 ~ubdiagrams, the inside o~ the structure and the ~ ~5~;5S

outside of the structure. The outside diagram behaves exactly as i~ the sequence structure and its contents were replaced by an icon with hot spots for each line crossing the structure border.
Figure 34 shows a 3D view of a three diagram sequence; however, to minimize screen space, only one diagram at a time is visible. Inside the structure border are multiple diagrams which execute in sequence. This sequence is indicated by the numeral in the upper left corner. When the first diagram in the sequence completes execution, the next one beings. The process i5 repeated until all the diagrams in khe sequence have been executed.
Each diagram in the sequence uses a subsat of the incoming arcs and produces a subset of the outgoing arcs (the outgoing subsets must be mutually sxclusive to avoid arc ~an in, but the incoming subsets are arbitrary). ~onstants may be used within any of the diagra~s 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 def ined.
The sequence structure does not begin execution until all the incoming arcs have data available, and none of t~e outgoing arcs produce data until all the diagrams have completed execution. There may be at most one arc that tarminates at the sequence struc-ture border itsel~, acting as a trigger ~or the sequence (it is ~ust one more input which must be present ~or the sequence to begin). An arc orig-inating at the sequance structure border may be used as a ready signal indicatiny that the sequence has completed execution.

35~5~

Interactive Loop ~"for" looe2 Structure The iterative loop structure is similar to the sequence structure in that it partitions the data flow graphic into two piece~. The interiox diagram represents the body of the loop and ts imllar to a sequence ~tructure with N identical diagram6 (Fig.
35). Arcs crossing the border of an iteration loop structure typically have a transformation applied.
Incoming arcs are indexed in the most ~ignificant 10 dimension so that the data inside the structure has dimensionality one less than outside. Outgoing arcs have the reverse transformation performed.
All arcs cr4~6ing the border mu~t have the same size for the indexed dimension. It is possible to disable the indexing in which case an incoming arc behaves as if it were a constant available to each iteration. If indexing is disabled ~or an outgoing arc the value is repeatedly overwritten and only the last value propagates out from the iteration struc- -ture (this is one difference from the way N sequence diagrams would behave). By default, the ~ost significant dimension i6 the one indexed but this may change to any dimension.
There are two special variables that behave as ~5 constants within the body of the iteration loop struc~ure: the number of iterations (N) ~nd it-eration number, or index (i).
The number o~ iterations to be executed is automatically ~et by the si2e of th~ dimension being indexed. In the event that there are no incoming arcs a scalar value must be specifically connected to this variable to speci~y the number o~ it-erations. The other variable is the lteration number ~ranging from 0 to N-l, as in C).
Iterations are independent and could in princi-ple be executed in any order or completely in parallel, except in the case where a non-reentrant ~3565i5 virtual instrument is u~ed. In this case, the iterations behave exactly like N identical sequence diagrams.
As u~ual, the iteration loop does not begin execution until all the incoming arcs have data available, and no outgoing arcs have tokens generat-ed until all iterations have completed execution.
An arc originating at the iteration loop structure border may be used as a ready signal indicating that the loop ha~ completed execution.

Case (Conditional) Selection Structure The case (conditional) selection structure of Fig. 36 is similar to the sequence structure in its usage of screen real estate, but it differs in its handling of arcs crossing the border in that each case diagram must use all incoming arcs and generate all outgoing arcs. rhe usual execution rules apply (all inputs available to start, all outputs generated simultaneously after all execution completes).
There must be exactly one arc that terminates at the case selection structure border itself, acting as a selector for the case. In the simplest case a boolean valued scalar is connected to the ~5 selector to select between case 0 (false~ and case 1 ~true). In the general case a scalar number (or string variable, if it i8 specified as a discrete list of strings) is connected to the selector.
A speaial diagram (default case) may be spec-i~ied to be used in the event that the selector doesnot lie in the range o~ speci~ied cases. An arc originating at the case selection structure border may be used a a ready signal indicatlng that the selected case has completed execution.

~35655 Indefinite Loop ~'do-while" loop~ Structure The indefinite loop structure is similar in concept to the iterative loop structure in that the interior diagram represents the body of the loop, but it differs in that arcs crossing the border of an indefinite loop structure typically do not have an indexing transformation applied. Figure 37 ~hows a graphical representation of an indefinite loop structure.
~here are two special variables available within the body of the indefinite loop structure.
One is the iteration number which starts with a value of 0 and the other is the recirculation ~lag to which the value of the l'while" expression is connected (if left unconnected it is equivalent to "while(true)").
Iterations are typically related so the opera-tion of the indefinite loop is similar to an indefi-nite number of identical sequence diagrams. The usual execution rules apply. There may be at most one arc that terminates at the indefinite loop structure border itself, acting as a trigger for the loop (it is ~ust one more input which must be present for the loop to begin). An arc originating 25 at the indefinite loop structure border may be used as a ready signal indicating that the loop has completed execution.

Special Items: ShLft Reqister~
There is one special construction which is available for use only within the loop structures.
This construction is the shift register. The shi~t register eliminates the need for cycles in a data flow yraph making the result much easier to under-35 stand and to prove correct. The shi~t register behaves as if it were an ordered set of two or more variables all of the same type and dimensionality.

i !~., ~' .

. ` .
.1,~

The first one in the set must be a left node within the loop body diagram. The others must be root nodes within the loop body diagram. To include a shift register in the indefinite loop structurer one must first highliyht the desired structure and then seleck the shift register from the functions menu item. The indefinite structure now shows two boxes on its left edge (root nodes) and one ~ox on the right edge (le~f node). See Fig. 38.
At the conclu~ion of each iteration of the indeflnite loop all shift registQrs within the body are "clocked", i.e., the value o~ the leaf node is placed in the first root node while the previous value of the first root node is placed in the seco~d root node, etc.
Prior to the first iteration of the inde~inite loop, root nodes of shift registers are set to false, zero, or empty string, as appropriate. These default initial values may be overridden by specify-ing alternative constants, or by setting the nodesusing incoming arcs from arbitrary external ex-pressions.

Usinq PROTO:_ The Fibonacct Number Problem The best way to learn to use the presently preferred embodiment of the invention is to create a working virtual instrument. The following exercise ls a standard one ~rom introductory textbooks on computer programming: Creatiny a Fibonacci se-guence. In p}ace o~ the trad,itional programming langua~es like C or Pascal, we will use the pre~
sQntly pre~erred embodiment of the invention.
The Fibonacci sequence (1, 1, 2, 3, 5, B, 13, ; 21, 34 .... ) arises in such diverse applications as the number of petals in a daisy, the maximum time it 35 takes to recognize a sequence of characters, and the . ~
~35~i~;i5i most pleasing proportions for a rectangle. It is defined by the relations:
f(l) = l f(~) = l f(n) = F~n - l~ + f(n - 2) for n>2 Starting with the third terml each Fibonacci number is the sum of the two previous Fibonacci numbers. In the Fibonacci instrument described helow, the presQntly prefQrred embodi~ent is used to create a virtual instrument to generate and display a sequence o~ Fibonacci number~. To accomplish this a number of features of the preferred embodiment are used including i~erative-loop structure arithmetic functions, numeric and graphic controls and con-stants.

Getting Started To get started, double click on the PROTO icon.You new screen should like Fig. 1. Construction of virtual instrument can start fro~ either the Front-Panel or the block diagram windows, however, sincelabels for the controls are not yet implemented, it i8 perhaps easier to begin from the block diagram window. To reach the block diagram window pull down the FILE ~enu and choose OPEN DIAGRAM. This action 25 will open an active block diagram window ~see Fig.
32). You are now ready to build your virtual instrument.
Pull down the FUMC~IONS menus and choose SPECIAL. This choice will produce a dialog box with 30 a display of functions (see Fig. 39). The four ~unctions represented on the ~irst line in the dialog box are described above. All four of these ~unctions are implemented. An item is selected by placing the cursor on it and clicking. This action 35 closes the dialog box and deposits the chosen item in your active bloc~ diagram window. Figure 40 ' ' . ,, ,~

~ ~5~;55 shows an example of a "for'~ loop structure layed down in the block diagram window in this manner.
Items chosen from the FUNCTIONS menu are always deposited near the center of the window, and if previous items are not moved new items may obscure old items.
Items may be selected and moved about in the active window by using the grabber glyph. Placing the cursor on the grabber glyph in the tool palette in the upper left portion of the screen just beneath the menu bar and clicking will change the cursor into the grabber when you move the mouse back down into the active-wi~dow area. The TAB key can also be used to change the tool. ~ressing ~he TAB
selects the next cursor in the palette.
Note: the "hot spot" on the grabber icon is at the base of the thumb and first finger.
Several actions, including moving objects, xequire that the object be "selected" before some action can be performed. To select a structure its "select regions" must be identified. The "for" }oop structure ob;ect has two select regions, one along the right edge and a second along the bottom edge of the ob~ect~ Figure 41 shows the location of these 25 regions. Positioning the grabber's hot spot in one of these regions and clicki~g will select the object. The case and 'Ido-while'' structures are selectabla anywhere along their borders. The sequence structure is also selectable along its 30 border except for the upper corners which perform the function of shifting forward and backward through the sequence. When selected, the object is surrounded by a moving dashed hox. The object can now be moved by placing the grabber on the object 35 and click-dragging to a new location. Releasing the mouse button will leave the ob~ect selected in its ~ ~5~S~

new location. Moving the cursor off the object and clickinq will de-select the object.
Sometimes you may need to duplicate the struc-ture you are worXing with. You could return to the FUNCTION menu, choo e SPECIAL again and click on the object you want to use. There is a short-cut to duplicate objects from within the blocX diagram window. To duplicate the object from within the active window, use the grabber tool to select the objection to be duplicated, press the OPTION key and click-drag a copy o~f the origina~.
Note: Select can be an ambiguous term with reference to the Mac user interface. It is not synonymous with choose, rather, it is used to 15 indicate that the object is to be "selected" by placing the cursor into a select region for that object and clicking the mouse button.
TWQ "for" loop structures are required for the Fibonacci instrument we are building. Use one of 20 these two methods to duplicate a copy of the struc-ture in your active window. Your active window should now contain two identical "for"loop struc-tures.
It is often necessary to place objects within 25 objects. To do this, it is helpful to be able to resize objects. The structures can a~l be resized in the same fashion. Place the grabber tool in the lower right-hand corner of the structure and alick-drag the ob~ect to the desired size. Figure 30 42 shows tha proper placement of the grabber for the resize operation and the results of enlarging the original struature ob~ect.
Additional functions are required in both loop structures for our instrument. Resize both loop 35 structures to be about the same size of the larger objection in Fig. 42. Now reposition the two 5~

structures into locations simllar to those shown in Fig. 43.
The Fibonacci virtual instrument uses two arithmetic functions: addition and multiplication.
These functions are obtained by choosing ARITHMETIC
from the FUNCTIONS ~enu (see Fig. 33). Choosing thi~ menu item opens the dialog box ~hown in Fig.
44. The functions currently implemented are:
addition, subtraction, multiplication and division.
Choose addition by clicking on the addition function glyph. Figure 45 shows the result of choosing the addition function. The dialog box is closed and an ob~ect is placed near the center of the Block-Diagram window. Select this object by placing the grabber on it and clicking. The entire area of the arithmetic-function ob~ect is a select region. The selected object can now be click-dragged to a new position. Mova th0 addition-function object to a location on the upper loop structure similar to the position shown in Fig. 46. Select a multiplication function and position it in the lowex loop similar to Fig. 46.
Three more functions are needed before we move to the front panel and install some controls and indicators. First, pull down the FUNCTIONS menu again and select CURVE FIT. This choice will display the dialog box shown in Fig. 47. At this time only the linear-fit function i9 implamented.
Choose LINEAR FIT. The object will drop approxi-mately in the center of the screen. Click-drag the object to a position similar to the one i}lustrated in Fig. 48.
The next function we need is a shift register.
Thi~ function must be used within a control 6truc 35 ture, therefore a structure object must be selected before the shift register is selected from the SPECIAL menu item. Select the top loop, pull down :1 ,(, , , ~ :
'~ ' , ~' " ~ ' .~: . , .
.j ~

;1 :
., ~5~55 the FUNCTION menu and select SPECIAL. From the SPECIAL dialog box choose the shift register glyph from the row of glyphs labelled: SPECIAL ITEMS (see Fig. 39). Figure 49 shows what the loop structure looks like with the shift regist~r ~unction in-stalled. Operation of the shift register function was reviewed above.
The last functions to be implemented in the block diagram window are constants. Constants are available from the FUNCTIONs menu from the menu item labelled SPECIAL. We need two constants. Choose a numeric con-~tant glyph from the dialog box and duplicate its object in the window. Figure 50 shows the two constant objects moved into position along-side the inputs to the shift register. Set one constant to 1 and the other to O by using the operator (the "pointing finger") tool and double clicking in the constant box then typing in values from the keyboard.
Now we will move to the front panel window to implement some controls and indicators. Click on the exposed edge of the front panel tsee Fig. 32).
The Front-panel window should come to the front with an empty window. Notice that now the FUNCTIONS
25 option in the menu bar is dimmend, by the CONTROLS
option is darXened indicating that it can be ac-cessed. Pull down the CONTROLS menu and choose NUMERIC. The content~ of the CONTROLS menu are described above.
Choose the NUMERIC option from the menu. The dialog box should look like the one in Fig. 28.
Move your cursor to the area of the three display styles on the left side of the dialog box and select tha center glyph representlng a "pointer" control.
35 Notice that then selected the image of the glyph will change to reverse video. Move the cursor to the box labelled MINIMUM and double click to select ~35~S5 it. If the interior of the box does not daxken move your cursor around inside the box while clic~ing until you find the right spot. When the interior is darken enter 1 from the keyboard. Move the cursor to the box labelled M~XIMUM and enter 20. Now move the cursor to the box lahelled OK and click. This action will close the dialog box and return you to the front panel window where you shou:ld ~e2 a larger representation of the pointer control you selected from the dialog box inside a moving dashed rectan-gle. Controls can be moved about the front panel window ~ust as objects were moved in the block diagram window. Notice that the behavior o~ the controls is more like the non-structure objects in 15 the block diagram window: the entire control is electable, there is not a limited select region like on the structures. Click-drag the pointer control to the upper left-hand region of the Window to a position similar to the ons ehown in Fig. 51. This 20 control will determine the length of the Fibonacci sequence that your instrument calculates.
Return to the CONTROLS menu and aga$n choos2 the NUMERIC option. This time ~elect the box labelled INDICATOR ONLY and choose the DIGITAL
; 25 CONTROL glyph (the right-most control glyph~, then click in the OK box. The ~ront panel window should now display a rectangle within a rectangle with the interior rectangle containing a 0. This control i8 a passive indicator. it will be used to display 30 intermediate was well as final values of our Fibonaaci instrument. We need a second indicator display. Controls can be duplicated in the same manner as ob;ects in the block diagram window. Use.
the grabbex tool. First select the control to be 35 duplicated, depress the OPTION key and click-drag a copy off o~ the original. Arrange these two ~35~;S5 indicators to the left of the front panel window similar to the positions shown in Fig. $2.
We need one more front panel control to com-plete or instrument, a graphical display. Return to the CONTROLS menu one more time and choose the GRAPHICAl option. This option will produce a dialog box like the one shown in Fig. 29. Choose INDICATO~
ONLY. Do this and click the OK box to return to the front panel window. There should now be a rectangu-lar-~haped graph with linear coordinates setting in tha middle of the window. This is the graphical display control. It can be moved just like the ob;ects in the block diagram window and the other co~trols on the front panel. It can also be resized, as can the other controls. The procedure for resizing is identical to the procedure used to resize objects in the block diagram: select the control and then click-drag with the grabber tool from the lower right-hand corner of the selected area. The situation with the NUNERIC controls is the same but because the fullness of the select region the area to "grab" with the grabber is less obvious, but it is the same region just interior to the lower right-hand corner of the select area. It may take a little practice to be able to reliably resize these controls. Move the graphical display to the upper right-hand corner of the window. Your screen ~hould now look like the one shown in Fig.
53. At thls point we can return to the block diagra~ window to "wire-up" the components o~ our block diagram into a working instrument that will be controlled by the front panel and display its output there as well.
You can return to the block diagram window ; 35 either by clicking on the exposed edge of that window or by choosing OPEN DIAGRAM from the FIlE
menu. The first think you will notice is that your :

`:

iS5 block diagram has changed. There are now four new objects in the block diagram window that were not there when we left. These block diagram representa-tion~ of the front panel controls are called "ter-minal~". These objects can be moved about the blockdiagram just like the original block diagram elements. Notice that with the exception of the constants, each o~ these elements bears a resem-blance to the control laid down on the front panel.
The constants are distinguished by their numèrical contents representing the values they hold. When a control i5 "selected on the front panel, its termi-nal equivalent on the block diagram is "high-lighted", and vice-versa. Before we begin wiring up the block diagram we need to move the control terminals into closer proximity to their points of action. Using the grabber tool, click-drag each of the control terminal~ into positions similar to those shown in Fig. 54. We are now ready to begin to wire the elements into a working instrument.
Note: If you original positioning of the block diagram objects differed significantly fxom our ; example, now is the time to rearrange your block diagra~ so that it more closely resembles Fig. 54.
Evenkually it should be relative easy to move about pieces of a wired diagram, but at present this is not possible.
To aonnect component in the block diagram you mu~t use the wirlng tool. This tool is reprssented in the tool palette in the upper left-hand corner of the block diagram window by the wire-roll glyph.
The hot spot on this took is the end of the unrolled stretch of wire. Move the cursor to the tool palette and click to select the connector, when you move the cursor back into the active window area your cursor will now be the connector tool. Con-nectlons are established between block diagram ~i35~5 components by clicking in a hot spot of one element and pulling the flickering line to a hot spot of component to which you want to connect. Figure 55 shows the connection bPtween the slide-pointer control used to set number of iterations in the loop and the iteration-variable box in the loop (labelled N~. The "wire" i8 represented by a flickering line during the connecting operat$on. Clicking in a hot spot of the terminal component will change the wire to a non-flickering representation of the con-nection. The interior of ob~ects, or ob;ect ele-ments, represented by heavy black borders are "hot"
an~where within their borders. Other objects, for exa~ple, the LINEAR FIT object, have localized hot spots representing specific inputs and outputs.
Figure 56 shows the arranyement of hot spots for all -- available functions.
Connecting wires can be "forced" to turn corners where the user wants them to for purposes o~
neatness and legibility of the diagram. A single click while dragging a wire outside of a structure or other ob;ect, will allow the user to change direction at that point by 90-. Pulling the wire again will allow the user to continue toward their target connection. Try using this technigue to connect the pointer control to the iteration vari-` able box an the lower loop structure.
Often lt is nzcessary to erase and redrawline~. To do this, use the grabber tool to select the line segment to be removed. Remember where the grabber hot spot i8 located (at the ~unction of the thumb and first finger) when trying to select wires.
With the line segment Gelected~ pull down the EDIT
i menu and choose CLEAR. This action will erase only 35 the selected line segment. Successive pieces of the line must be removed individually repetitions of this sequence of actions. Tiny pleces of line . ` .
.t;

,, ., i6S~

segment may be difficult to select~ Sometimes line segments successfully selected and cleared appear to remain on the block diagram. Trial-and-error is the name of the game here. Drawing replacement lines is identical to rawing new line~.
Figure 57 shows the Fibonacci virtual instru-ment completely wired. Notice that the representa-tions of the wires vary when they exit from various structures and functions.
The~e changes reflect the data type being represented. Figure 58 shows the data type~ used by the preferred embodiment and their representations in the block diagram. Notice that the data type output from the LINEAR CVRVE function in Figure 57 is a structure. This structure consists of two arrays representing the two functions to be graphed.
One function is the conn~cted data points, the second the linear fit calculated by the LINEAR CURVE
function.
You are now ready to return to the control panel and operate your instrument. ~eturn to the front panel by finding the edge of the hidden window and clicking to bring it to the front. The ~ront panel window has not changed and sh~uld still appear as it did in Fig. 53. To operate the front panel choo3e the operator tool ~rom the tool palette. The operator tool is the le~t-most glyph in the palette, with the appearance of a ~inger about to press a button. This tool 1 5 hot spot i~ at the end o~ the pointed finger. Use this tool to move the pointer on the pointer control to some value between 1 and 20. Bring the pointed finger into proximity with the pointer on the control, click and drag the pointer to a new location. This action changes the value of the number of iterations, N, to be performed by the upper control loop in the block diagram to which it i5 connected. To the right of :.

i5~

the tool palette, above the front panel window, but ~elow the menu bar are several controls (see Fig.
23). Only GO is currently operable, but this is all you need to set your instrument into motion. Use the operator tool to select the button and watch the indicators and graph. The top indicator represents the current value of the Fibonacci number generated in the top loop and the bottom indicator displays the square of the index used to increment the loop.
At the end of the loop a graph is displayed that contains two ~unctions, the dark line is the connected data points representing the relation between a Fibonacci number and the square of it~
index in the sequence. The grey line represents the linear fit performed by the LINE~R CURVE function.
You now have a working instrument, the con-struction of which has used many, but not all of the working features of the current prototype of the preferred embodiment.
To help you in your further exploration of the system, two sections follow which describe the use of the tools in more detail, and provide some hints for using the sequence and "for" loop structures.
These appendices and Fig. 56 are probably use~ul as "cheat sheets" for the new user after the first walk-through with the Fibonacci virtual instrument.

First Additional_Explanation Section OP~RATE TOOL: Use this tool to operate the controls on the front panel or set constants on the block diagram.
Set or change control values DOUBLE-CLICK ln control to select region for typing in value Begin execution - CLICX in log or free box Set or change constants on block diagram - DOUBLE-CLICK in control to select region ~or typing in value Duplicate control, indicator, constants or structures c~elect object, then OPTION-CLICK and DRAG
copy ' Clear object from ~ront panel or Block Diagram - select ob;ect, then chose clear from edit menu GRABBER~ Use this tool to select regions and move :
or resize objects.
Select control, indicator, or non-structure ob~ect - CLICX anywhere on control or indicator on ~ront panel, or non-structure object on block diagram Select structuxe - C~ICK on bottom or right edge of ~tructure ' Move object - once selected, CLICK anywhere in selected region and drag Resize object .
- CLICK-AND-DRAG on lower right corner to desired shape and BiZe (sometimes it is easier to see "cornerl' you are looking for i~ you select the ob~ect ~irst) WIRING TOO~: Use thls tool to connect objects in : the block diagram and to associate controls and indicators with terminals on the ~ront panel.
Connect ob~ects on the block diagram - CLICK on first object, draw wire to second : 35 object and CLICK
. - ChICK to make 90 turn in wire Choose Term Pane Pattern ':
.~
J

.

. ,.

~3565~i - drop TermPane (Format menu) : - OPTION-COMMAND-CLICK to go to next pattern Associate control or indicator and terminal - with chosen pattern visible in Term Pane, CLICR on control then CLICX on terminal Check as~ociation of control and terminal - CLICK on control (associated terminal will be hilighted) Disa~sociate control or indicator and termi-nal - OP~ION-CLICK on control to be disassociated ALL TOOLS
Select new tool - CLICK on tool Select menu item - CLICK on menu bar and drag down menu ' Drop Control, function or structure - within dialog boxes, anytool ~ay be used Move windows - CLICR-AND-DRAG on title bar of window Title windows . - DOUBLE-CLICK on title bar of one of the wlndows Resize window to full screen - DOUBLE-CLICK on title bax of window Scroll windows - CLICK on arrows, or inside scroll bars l~eslze wlndows - CLICK-AND-DRAG on grow-box in lower right corner of window Second Additional ExPlanation Section SEQUENCE STRUCTURE: Express explicit time depen-: dencies, i.e., execute block diagram in frame 0, : 35 then frame 1, then frame 2.
For best results, follow this se~uence:

.- , : ........ .

~s~ss 1) Determine how may frames you want - the first fram~, O, i8 given when you drop the structure - to make a new frame CO~MAND-CLICK with the grabber in the upper right corner and the frame number will increment - do this for each frame desired - before filling any ~rames 2) Build block diagram in each Erame - select ~rame to work on by CLICKING with the grabber in the upper left corner 3) A wire coming into a sequence can be used in any of the ~rames in the sequence by wiring to the dark rectangle at the border.
4) Wires leaving a sequence can only come from one source.

"FOR" hOOP STRUCTURE: Execute block diagram within loop N times.
Some hints:
1) To force the number o~ iterations connect a numeric control to the box in the upper left corner of the structure oontaining an N, otherwise the loop will iterate ARRAYSIZE
times 2) If new element from an array is used at each iteration, thQ array mu6t be outside of the loop. Th~ number o~ itQrations will be set by the numbar o~ elements in the array (unless overridden by setting N ?). Notice the array wire outside of the loop changes to a scalar wire inside the loop.
3) The index (boxed i) in the structure is ~or your use, but need not be wired up ; 35 4) When building an array by producing a value at each iteration, the array is an indicator ~ outside of the loop. Notice the scalar wire :

',' ' , i:: ;
~ .
~ . .
, ~

~856~i~

inside the loop, and array wire outside the loop structure.
S) To view intermediate ~alues at run-time, place a scalar indicator inside the loop and connect it to the wire carrying the value o~
interest be~ore the wire leaves the struc-ture.

CASE (CONDITIONAL) SELECTION STRUCTURE: Executes the block diagram chosen by tha selector.
1) Same as sequence 2) Same a~ seguence 3) A wire coming in (same as seguence~
4) All wires leaving a sequence m~st have sources (be wired~ in every ~rame of the sequence, 5) The little box Q~ the left~hand border is th~ selector box. At present, only nu~bers can be wir d to it.

"WHILE" LOOP STRUCTURE: Execute diagram within loop until test becomes false.
Some hints:
1) The little box with the Q in it should receive a boolean. When the input boolean is FALSE the loop will terminate. If it is not wir2d the loop will be infinite!
2) The diagram in the "while" loop will always execute at least once.
3) The index (boxed i) in the struicture is for the user'~ use, but it need not be wired up.
4) Arrays are not presently indexed when entering a while loop.
5) Same as "for" loop.

. . ' ' `

~8Sf;S~;

_reatinq and Usin~ Hierarchical Instruments The capability of the preferred embodiments to use previously implemented virtual instruments within new instruments is a fundamental and powerful feature of the system. This capability allows the user to construct a hierarchy of virtual instruments by including previously implemented virtual instru-ments as "parts" in a new instrument. To facilitate the construction of such complex instruments the user must "prepare" the instruments to be included as components in an instrument hierarchy. This preparation includes de~ining the connections that will exist be~ween the "controlling" ~superior?) and "Component" (inferior?) virtual instruments and designing an icon to represent the "component'l virtual instrument in the block diagram of the "controlling" virtual instrument. Three items in the FORMAT menu support these ~eatures: ICON PANE, ICON EDIT PANE and CONNECTOR PANE.
Choosing the ICON EDIT PANE option brings up the dialog box shown in Figure 49. Clicking on the ICON button brings forth two boxes, one large and one small (see Fig. 60). The large box is the icon editing pane. Placing the cursor inside thi~ box 25 and clic~ing the mouse button produces a signal black square. Each sguare will appear as a single blaok dot on the screen in the finished icon. Click dragging inside the box produces a llne o~ these squares (see Fig. 61). Clicking on existing squares 30 remov~ them.
Operations inside this window are similar to the operation of MacPaint's FatBits mode. Actions perfoxmed in the large square are mimlcked in the 35 small square. The image in the small box is the default size of the object that will represent the instrument in the block diagram of the superior instrument. The dialog window has several .:

~s~s~

additional buttons for manipulating the editing pane. The CLEAR button clears the contents of the window. The INVERT button swaps black squares for white squares (and vice-versa) across the whole editing pane. REVERT replaces the current contents of the editing window with the last saved version of the icon. SAVE saves the current contents of the editing pane. Possibly useful if you have made a number of changes in the image and are uncertain, about the remaining changes you are about to make!
The save version is the version returned upon choosing the REVERT button. QUIT returns the user to the front panel window.

DisplaYin~ the Instrument Icon Chosing the ICON PANE option from the FORMAT
menu puts the icon, Demo here, associated with the current instrument in tha upper left-hand corner of the front panel window (see Fig. 62). Choosing the same option again (now "checked" in the menu) removes the icon from the active window.

Usinq the Connector Pane to Establish Terminals Creating instruments to serve as components within other virtual instruments requires tha~
input-output connections or "terminals" be estab-lished to provide a means for transferring in~orma-tion between instruments. These connections are established through the m~chanism of the CONNECTOR
PANE~
In the front panel window, selecting the CONNECTOR PANE option from the FORM~T menu places a emall rectangular pane in the upper le~t-hand corner of the active window (see Fig. 63). Within this pane are several sectors, or "terminals". The j confiyuration of terminals displayed in this pane , 35 represent the pattern of "hot spots" or terminal , . . .

., .

~85~55 connections thru which information can flow between this instrument and other instruments, or instrument components. There are currently eight different patterns of connector terminals available (see Fig.
64). The user can view the selection of available terminal patterns, when the wiring tool is in use, by holding down both the OPTION and COM~AND keys, clicking the mouse button. Note: the cursor does not have to be in the connector pane to ehift patterns. Each click will hring up a new terminal pattern. Once the eight available patterns are displayed, continuing to click will cycle through the selection again. The pattern displayed in the connector pane is the one available for "wiring".
15 To make an association between a terminal in the connector pane and a control (or display) selsct the terminal by clicking in it with the wirinq tool.
The selected terminal will turn black (sse Fig.
65a). Move the cursor to the control to be associ-20 ated with this terminal and click. The selectedcontrol will be encircled by the familiar moving dashed rectangle to indicate its selected status (see Fig. 65b). Moving the cursor off the selected co~trol and clicking will de-select both the termi-25 nal and the control. The connected but de-selected terminal will now appear grey to show that it is connected (see Fig. 65c). Connections can be established in the opposite order also: select khe control and then select the terminal. At any later 30 time the establi~hed associations between terminals in the connector pane and controls or displays on the Front panel can be examined by clicking on either a terminal or a control. The associated elements will both appear selected.
Associations between terminals and controls can be disconnected by selecting the control, holding down the COMMAND key and clicking. A11 connections can b~ severed by holding down both the OPTION and COMMAND keys and clicking (cursor must be the wiring tool). This action bring sup the dialog box show in Fig. 66. Choose OK and all associations will be removed and a new terminal pattern can be selected.
Associations between terminals and controls can be disoonnected by ~electing the control, holding down the COMMAND key and clicking. All connections can be servered by holding down both the OPTION and COMMAND keys and clicking (cursor mu~t be the wiring tool). This action rings up the dialog box shown in Fig. 66. Choose OK and all associations will be removed and a new terminal pattern can be selected.
Once you have areated an icon and implemented terminal connections in the connector pane you can use this instrument as a component in another ; instrument. From the block diagram window, pulling down the FUNCTIONS menu and selecting the INSTRU-M2NTS option will bring up the familiar dialog box o~fering a choice of file names in a window. Select the name of the instrument you wish to use in your block diagram. The dialog box will close and the icon associated with your chose virtual lnstrument will appear in the block diagram window. At this point the virt~al instrument object can be manip-ulated in exactly the Game fashion as the functions you have used previously. In the next section a simple hierarchical instrument will be constructed in which two low-level instrumQnts are operated through a controlling virtual instrument A Hierarchial Virtual Instrument .
The simple hierarchical virtual instrument we will walk through calculates the total resistance for a parallel circuit with two resistive elements;
1/ ~ - l/Rl + l/R2 Since we must perform several inversion op-erations to obtain RT, a first instrument to con-struct is a simple inverter:
Note: 1. In building this hierarchial instrument it is assumed that the reader is familiar with the system as described in earlier sections of this patent application, and has successfully implemented the Fibonacci number generator.
2. To illustrate the construction of this instrument "tiled" windows are used to conserve time and space in generating the figures (see Fig. 26 re TILE option).
The first task, then, is to build a simple inverter Figure 67 shows the front panel and block diagram for this instrument. In the block diagram, a constant and a variable quantity are the input to a division operator. The output from the division operation is fed to an "indicator-only" control.
The constant has been set to one (in the block diagram). The slide control (with digital display) in the front panel determines the value to be inverted. When these elements have been wired together, their correct function should be verified by setting the slide control in the front panel window should display the inverse of the value specified on the slide control (see Fig. 68). You are now ready to establish the terminal that will accept a value from a higher-level instrument to set the slide control's value in this instrument, and to return the calculated value displayed here to the higher-level virtual instrument.
To obtain the connection pane in the front panel window, pull down the FORMAT menu and select CONNECTOR PANE. This action will display a connec-tor pane in the upper left corner of the front panel window. With the wiring tool selected. "toggle"

~35~

- 63 ~
through the terminal patterns by clicking the mouse button while holding down both the OPTION and COMMAND keys until the two-terminal pattern is displayed (the left-most pane in Fig. 63). Use the S w~ring tool to select the left terminal and then select the slide control. The ter~inal will blacken and the--~lide control will be surrounded by the familiar moving dashed line when thay are selected (~ee Fig. 65) for the consequenc~s of a simllar sequence o~ action3). Click out6ide the control to complete the connection. The selected tarminal will turn grey and the moving da~hed line will disappear.
~he grey terminal is now "connected" to the slide aontrol. The indicated portion of the square connector pane corresponds to the input "hot spot~' region on the instrument's to-be-built icon. Select the remaining terminal and connect it to the indicator-only control. In the same fashion as described above, this newly selected region will ; 20 correspond to the output region on the instrument's icon. When both connections are complete, both terminals in the connector pane will be grey. At this time your ~creen display should appear similar to Fig. 64b. The next task is to create an icon to use with the inverter instrument.
Review the section on icon editing, set forth above, and create an icon similar to the one shown in Fig. 69. When your icon has been created, and saved, QUIT ths icon editor. The inverter instru-30 ment is now ready to be saved. From the FILE menu~elect CLOS~ and ~ave the instrument with a descrip--tive name, like INVERTER.
In your next instrument you will use the INVERTER instrument to calculate 1/ ~ for two 35 resistances in parallel. Figure 70 shows the front panel and block diagram for an instrument to perform this calculation. At this point, only one new piece 5~;5~5 of information is necessary to construct this instrument. How to drop the new instrumen into the block diagram window. Pull down the FILE menu and select NEW. Pull down the FILE menu again and select OPEN DIAGRAM. Pull down the FORMAT ~enu and select TILE. Fro~ within the block diagram window, pull down the FUNCTIONS MENU and select INSTRUMENTS.
A dialog box similar to the one shown in Fig. 71 will appear.
Unless you have done this be~ore, or are using someone else's system, only ona instrument will be available: the INVERTER instrument you just cre-ated. Select this instxument by double clicking on the instrument name (or single clicking on the name 15 and then single clicking on the OPEN button). The dialog box will disappear and your icon for the inverter instrument will appear in the block diagram window (see Fig. 72). This icon now represents an object that can be moved about in the block diagram 20 window just like the pre-defined functions and structures you have previously used. The "hot spot"
f or wiring to and from the instrument are the ones you specified when you connected the terminals in the connector pane. As de~ined above in the connec-25 tor panel, the left half of this icon's area acceptsinputs to the control which it is wired and the right half pro~ides output ~rom the lower-level instrument's indicator-only control.
Veri~y that the virtu~l instrument correctly 30 (see Fig. 70) displays the sum of the inverses o~
the two resistances set with the two fxont-panel controls on the present instrument. Now use the icon editor to construct an icon for this instru-ment. Figure 51 shows the one used here. Finally, 35 assign terminals to the controls and display in the connector pane. Use the 2-to-1 terminal pattern . :
.
., :

~5~i5~

(second from the left in Fig. 64). Close and name the instrument.
Armed with the two low-level instru~snt you have created you are ready to implement a solution to the problem ~et: compute ~ for two resistances wired in parallel. Figure 74 shows the example solution to the problem. Two controls are provided to provide the two resistances to be summed and an lndicator-only control is implemented to display the answer. The block diagram window shows the two quantities specified by the ~ront panel controls as input to the invert-and-add instrument (here named ADDlOVE~R, see Fig. 75). The output from this instrument i8 input to the inverter to yield the solution, ~, shown in the display of the front panel window. Use several different values for input to verify the correct operation of your instrument (see Fig. 75).
At this point you have created a hierarchical 20 virtual instxument using native preferred embodiment functions and two user-created instruments. Hierar chical virtual instruments work. Libraries of instruments can be created and selected instru~ents c~n be used as components in new instruments. With 25 the principles demonstrated in this exercise you should be able to carry out your assignmant and create libraries of instruments that perform functions useful to you as an end-user.

Conclusion The system and method of the present invention, there~ore, permit the computer-aided modelling of a process using graphical technlques which generally are more easily comprehended, especially by persons who do not possess specialized skills in computer 35 programming techniques. The use of a computer-generated image of a front panel display ~5~.5~

permits a user to easily understand how data is provided to a system being modelled and how data is provided by the system. The block diagram editor permit~ a user to construct a graphical representation of a procedure for producing output data from input data using icons which reference modularized procedural units. A user may use the icon editor to construct hi~/her own icons; or he/she may call upon a ready-made library of icons.
The execution subunit exQcutes executlon instructions which are constructed in response to the graphical images produced by a user to model a proces~. Thus, a user can program a computer substantially by constructing a hierarchy of icons connected to one-another so as to model a process.
A user, therefore, can use the system and method of the present invention to program a computer to model a process using graphical techniques which generally are easier to comprehend.
Furthermore, the system and method of the present invention advantageously can use data flow techniques. The use o~ the structures, illustrated in Figs. 8-17, facilitates the use of such data flow techni~ues. By using such ~echniques, a system 25 modelled in block diagra~ form can operate in a parallel ~ashion, since each individu~l icon in a hierarchy comprising such a block diagram, operates as soon as all lnput data provided to it are avail-able. In addition, suah structures render gxaphica:L
rapresentations of block diagrams using such data ~low techniques more comprehensib~e to a user, and, tharefore, simplify the task of using such tech-niques. It will be understood that the above-described embodiments and methods are merely illustrative of many possible specific embodiments and methods which can represent the principles of the invention. Nu~erous and varied other ,, .
. .

~ ;~85~5~

arrangements and methods can be readily devised in accordance with these principles without departing from the spirit and scope of the invention. Thus, the foregoing description is not intendad to llmit the invention which is defined by the appended claims in which:

-:

: '

Claims (125)

Claims:
1. A method for programming a computer system including means for displaying images to control at least one of a virtual instrument and an instrument, the method comprising the steps of:
displaying on the screen at least one first function-icon that references at least one first control means for controlling at least one first function;
displaying on the screen at least one iteration-icon that references iteration control means for controlling multiple iterations of data flow;
displaying on the screen at least one first input variable-icon that references at least one first input variable;
displaying on the screen at least ore first output variable-icon that references at least one first output variable;
and assembling on the screen a first acyclic data flow diagram including the at least one first function-icon and the at least one iteration-icon and the at least one first input variable-icon and the at least one first output variable-icon, such that the diagram displays a first procedure for producing at least one value for the at least one first output variable-icon from at least one value for the at least one first input variable-icon, and such that the at least one iteration-icon in the diagram indicates multiple iterations of the at least one first function in the course of the first procedure.
2. The method of claim 1 and further comprising the step of:
assembling on the screen a first front panel including the at least one first input variable-icon and the at least one first output variable-icon.
3. The method of claim 2 and further comprising the step of:
simultaneously displaying on the screen the first front panel and the first data flow diagram.
4. The method of claim 1 wherein said step of assembling on the screen the first diagram includes:
arranging on the screen the at least one first function-icon and the at least one iteration-icon such that in the first diagram the at least one first function-icon is displayed on the screen adjacent to the at least one iteration-icon.
5. The method of claim 1 wherein said step of assembling on the screen the first diagram includes:
arranging on the screen the at least one first function-icon and the at least one iteration-icon such that in the first diagram the at least one first function-icon is displayed on the screen substantially inside the at least one iteration-icon.
6. The method of claim 1 and further comprising the step of:

selecting the at least one first control means.
7. The method of claim 6 and further comprising the step of selecting the iteration control means.
8. The method of claim 7 wherein:
said steps of selecting the at least one first control means and selecting the at least one iteration control means are performed automatically in the course of said steps of displaying on the screen the at least one first function-icon and displaying on the screen the at least one iteration-icon and assembling on the screen the first diagram.
9. The method of claims 7 or 8 wherein said first control means and said iteration control means are substantially implemented in software.
10. The method of claim 7 and further comprising the steps of:
reserving first input variable space in memory of the computer system corresponding to the selected at least one first input variable-icon; and reserving first output variable space in memory of the computer system corresponding to the selected at least one first output variable-icon.
11. The method of claim 10 wherein:
said step of reserving first input variable space is performed automatically in the course of said steps of displaying the at least one first input variable icon and assembling on the screen the first diagram; and said step of reserving first output variable space is performed automatically in the course of said steps of displaying the at least one first output variable-icon and assembling on the screen the first diagram.
12. The method of claim 1 wherein said step of assembling on the screen the first diagram further includes the steps of displaying at least one first input arc between the at least one first input variable-icon and at least one of the at least one first function-icon and the at least one iteration-icon and displaying on the screen at least one first output arc between the at least one first output variable-icon and at least one of the at least one first function-icon and the at least one iteration-icon.
13. The method of claim 10 wherein said step of assembling on the screen the first diagram further includes the steps of displaying on the screen at least one first input arc between the at least one first input variable-icon and at least one of the at least one first function-icon and the at least one iteration-icon; and displaying on the screen at least one first output arc between the at least one first output variable-icon and at least one of the at least one first function-icon and the at least one iteration-icon; and further comprising the steps of:
forming first input means for moving respective input values for the at least one first input variable between the at least one first input variable space and at least one of the at least one first control means and the iteration control means.
14. The method of claim 13 wherein:
said step of forming first input means is performed automatically in the course of said step of displaying on the screen the at least one first input arc.
15. The method of claim 13 wherein:
the at least one first control means and the iteration control means and the first input means are substantially implemented in software.
16. The method of claim 2 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
after assigning at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon from the at least one assigned value for each at least one first input variable-icon.
17. The method of claim 16 wherein said step of assigning includes the steps of:
displaying said first front panel;
setting the at least one first input variable-icon to display the at least one assigned value.
18. The method of claim 17 and further including the step of:

displaying the at least one produced value in conjunction with the at least one first output variable icon.
19. The method of claim 16 wherein said step of producing at least one value for the at least one first output variable-icon includes using said at least one first control means to control the first function.
20. The method of claim 19 wherein said step of producing at least one value for the at least one output variable-icon includes using the iteration control means to control multiple iterations of data flow to the at least one first control means.
21. The method of claim 10 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon; and storing each value for the at least one first output variable in the reserved first output variable space.
22. The method of claim 21 wherein:
said step of storing each at least one assigned value is performed automatically in the course of said step of assigning.
23. The method of claim 14 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, moving each at least one value for the at least one first input variable-icon from the reserved first input variable space to at least one of the at least one first control means and the iteration control means using the first input means;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon using the at least one first control means to control the first function and using the iteration control means to control multiple iterations of data flow to the at least one first control means; and storing each produced value for the at least one first output variable-icon in the reserved first output variable space.
24. A method for programming a computer system including display means for displaying images to control at least one of a virtual instrument and an instrument, the method comprising the steps of:

displaying on the screen at least one first function-icon that references at least one first control means for controlling at least one first function;
displaying on the screen at least one second function-icon that references at least one second control means for controlling at least one second function;
displaying on the screen at least one conditional-icon that references conditional control means for controlling conditional branching of data flow;
displaying on the screen at least one first input variable-icon that references at least one first input variable;
displaying on the screen at least one first output variable-icon that references at least one first output variable;
and assembling on the screen a first acyclic data flow diagram including the at least one first function-icon and the at least one second function-icon and the at least one conditional-icon and the at least one first input variable-icon and the at least one first output variable-icon, such that the diagram displays a first procedure for producing at least one value for the at least one first output variable-icon from at least one value for the at least one first input variable-icon, and such that the at least one conditional-icon in the diagram indicates a conditional branching of data flow to at least one of the at least one first function and the at least one second function in the course of the first procedure.
25. The method of claim 24 and further comprising the step of:
assembling on the screen a first front panel including the at least one first input variable-icon and the at least one first output variable-icon.
26. The method of claim 24 and further comprising the step of:
simultaneously displaying on the screen the first front panel and the first data flow diagram.
27. The method of claim 24 wherein said step of assembling on the screen the first diagram includes:
arranging on the screen the at least one first function-icon and the at least one second function-icon and the at least one conditional-icon such that in the first diagram the at least one first function-icon is displayed on the screen adjacent to the at least one conditional-icon and the at least one second function-icon is displayed on the screen adjacent to the at least one conditional-icon.
28. The method of claim 24 wherein said step of assembling on the screen the first diagram includes:
arranging on the screen the at least one first function-icon and the at least one second function-icon and the at least one conditional-icon such that in the first diagram the at least one first function-icon is displayed on the screen substantially inside the at least one conditional-icon and the at least one second function-icon is displayed on the screen substantially inside the at least one conditional-icon.
29. The method of claim 23 and further comprising the step of:
selecting the at least one first control means and the at least one second control means.
30. The method of claim 29 and further comprising the step of selecting the conditional control means.
31. The method of claim 30 wherein:
said steps of selecting the at least one first control means and selecting the at least one second control means and selecting the at least one conditional control means are performed automatically in the course of said steps of displaying on the screen the at least one first function-icon and displaying on the screen the at least one second function-icon and displaying on the screen the at least one conditional-icon and assembling on the screen the first diagram.
32. The method of claims 30 or 31 wherein said first control means and said second control means and said conditional control means are substantially implemented in software.
33. The method of claim 28 and further comprising the steps of:
reserving first input variable space in memory of the computer system corresponding to the selected at least one first input variable-icon, and reserving first output variable space in memory of the computer system corresponding to the selected at least one first output variable-icon.
34. The method of claim 33 wherein:
said step of reserving first input variable space is performed automatically in the course of said steps of displaying the at least one first input variable-icon and assembling on the screen the first diagram; and said step of reserving first output variable space is performed automatically in the course of said steps of displaying the at least one first output variable-icon and assembling on the screen the first diagram.
35. The method of claim 24 wherein said step of assembling on the screen the first diagram further includes the steps of displaying at least one first input arc between the at least one first input variable-icon and at least one of the at least one conditional-icon and the at least one first function-icon and the at least one second function-icon and displaying on the screen at least one first output arc between the at least one first output variable-icon and at least one of the at least one conditional-icon and the at least one first function-icon and the at least one second function-icon.
36. The method of claim 32 wherein said step of assembling on the screen the first diagram further includes the steps of displaying on the screen at least one first input arc between the at least one first input variable-icon and at least one of the at least one first function-icon and the at least one second function-icon and the at least one conditional-icon; and displaying on the screen at least one first output arc between the at least one first output variable-icon and at least one of the at least one first function-icon and the at least one second function-icon and the at least one conditional-icon; and further comprising the steps of:
forming first input means for moving respective input values for the at least one first input variable between the at least one first input variable space and at least one of the at least one first control means and the at least one second control means and the conditional control means.
37. The method of claim 36 wherein:
said step of forming first input means is performed automatically in the course of said step of displaying on the screen the at least one first input arc.
38. The method of claim 36 wherein:
the at least one first control means and the at least one second control means and the conditional control means and the first input means are substantially implemented in software.
39. The method of claim 25 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
after assigning at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon from the at least one assigned value for each at least one first input variable-icon.
40. The method of claim 39 wherein said step of assigning includes the steps of:
displaying said first front panel;
setting the at least one first input variable-icon to display the at least one assigned value.
41. The method of claim 40 and further including the step of:
displaying the at least one produced value in conjunction with the at least one first output variable-icon.
42. The method of claim 39 wherein said step of producing at least one value for the at least one first output variable-icon includes at least one of:
using said at least one first control means to control the first function; and using the at least one second control means to control the second function.
43. The method of claim 42 wherein said step of producing at least one value for the at least one output variable-icon includes using the conditional control means to control conditional branching of data flow to at least one of the at least one first control means and the at least one second control means in the course of the first procedure.
44. The method of claim 33 and further comprising the steps of:

assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon; and storing each produced value for the at least one first output variable in the reserved first output variable space.
45. The method of claim 44 wherein:
said step of storing each at least one assigned value is performed automatically in the course of said step of assigning.
46. The method of claim 36 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, moving each at least one value for the at least one first input variable-icon from the reserved first input variable space to at least one of the at least one first control means the at least one second control means and the conditional control means using the first input means;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon using at least one of a step using the at least one first control means to control the first function and a step of using the at least one second control means to control the second function;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, using the iteration control means to control conditional branching of data flow to at least one of the at least one first control means and the at least one second control means; and storing each produced value for the at least one first output variable-icon in the reserved first output variable space.
47. A method for programming a computer system including means for displaying images to control at least one of a virtual instrument and an instrument, the method comprising the steps of:
displaying on the screen at least one first function-icon that references at least one first control means for controlling at least one first function;
displaying on the screen at least one second function-icon that references at least one second control means for controlling at least one second function;

displaying on the screen at least one sequence-icon that references sequence control means for controlling sequencing of data flow;
displaying on the screen at least one first input variable-icon that references at least one first input variable;
displaying on the screen at least one first output variable-icon that references at least one first output variable;
and assembling on the screen a first acyclic data flow diagram including the at least one first function-icon and the at least one second function-icon and the at least one sequence-icon and the at least one first input variable-icon and the at least one first output variable-icon, such that the diagram displays a first procedure for producing at least one value for the at least one first output variable-icon from at least one value for the at least one first input variable-icon and such that the at least one sequence-icon in the diagram indicates a sequencing of the at least one first function and the at least one second function in the course of the first procedure.
48. The method of claim 47 and further comprising the step of:
assembling on the screen a first front panel including the at least one first input variable-icon and the at least one first output variable-icon.
49. The method of claim 48 and further comprising the step of:

simultaneously displaying on the screen the first front panel and the first data flow diagram.
50. The method of claim 47 wherein said step of assembling on the screen the first diagram includes:
arranging on the screen the at least one first function-icon and the at least one second function icon and the at least one sequence-icon such that in the first diagram the at least one first function-icon is displayed on the screen adjacent to the at least one sequence-icon and the at least one second function-icon is displayed on the screen adjacent to the at least one sequence-icon.
51. The method of claim 47 wherein said step of assembling on the screen the first diagram includes:
arranging on the screen the at least one first function-icon and the at least one second function-icon and the at least one sequence-icon such that in the first diagram the at least one first function-icon is displayed on the screen substantially inside the at least one sequence-icon and the at least one second function-icon is displayed on the screen substantially inside the at least one sequence-icon.
52. The method of claim 47 and further comprising the steps of:
selecting the at least one first control means and the at least one second control means.
53. The method of claim 52 and further comprising the step of selecting the sequence control means.
54. The method of claim 53 wherein:

said steps of selecting the at least one first control means and selecting the at least one second control means and selecting the at least one sequence control means are performed automatically in the course of said steps of displaying on the screen the at least one first function-icon and displaying on the screen the at least one second function-icon and displaying on the screen the at least one sequence-icon and assembling on the screen the first diagram.
55. The method of claims 53 or 54 wherein said first control means and said second control means and said sequence control means are substantially implemented in software.
56. The method of claim 53 and further comprising the steps of:
reserving first input variable space in memory of the computer system corresponding to the selected at least one first input variable-icon; and reserving first output variable space in memory of the computer system corresponding to the selected at least one first output variable-icon.
57. The method of claim 56 wherein:
said step of reserving first input variable space is performed automatically in the course of said steps of displaying the at least one first input variable-icon and assembling on the screen the first diagram; and said step of reserving first output variable space is performed automatically in the course of said steps of displaying the at least one first output variable-icon and assembling on the screen the first diagram.
58. The method of claim 47 wherein said step of assembling on the screen the first diagram further includes the steps of displaying at least one first input arc between the at least one first input variable-icon and at least one the at least one first function-icon and the at least one second function-icon and the at least one sequence-icon and displaying on the screen at least one first output arc between the at least one first output variable-icon and at least one of the at least one first function-icon and the at least one second function-icon and the at least one sequence-icon.
59. The method of claim 57 wherein said step of assembling on the screen the first diagram further includes the steps of displaying on the screen at least one first input arc between the at least one first input variable-icon and at least one of the at least one first function-icon and the at least one second function-icon and the at least one sequence-icon; and displaying on the screen at least one first output arc between the at least one first output variable-icon and at least one of the at least one first function-icon and the at least one second function-icon and the at least one sequence-icon; and further comprising the steps of:
forming first input means for moving respective input values for the at least one first input variable between the at least one first input variable space and at least one of the at least one first control means and the at least one second control means and the at least one sequence control means.
60. The method of claim 59 wherein:
said step of forming first input means is performed automatically in the course of said step of displaying on the screen the at least one first input arc.
61. The method of claim 60 wherein:
the at least one first control means and the at least one sequence control means and the first input means are substantially implemented in software.
62. The method of claim 48 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
after assigning at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon from the at least one value for each at least one first input variable-icon.
63. The method of claim 62 wherein said step of assigning includes the steps of:
displaying said first front panel;
setting the at least one first input variable-icon to display the at least one assigned value.
64. The method of claim 63 and further including the step of:
displaying the at least one produced value in conjunction with the at least one first output variable-icon.
65. The method of claim 63 wherein said step of producing at least one value for the at least one first output variable-icon includes the steps of using the at least one first control means to control the first function and using the at least one second control means to control the second function.
66. The method of claim 65 wherein said step of producing at least one value for the at least one output variable-icon includes using the sequence control means to control sequencing of data flow to the at least one first control means and the second control means.
67. The method of claim 56 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon; and storing each produced value for the at least one first output variable in the reserved first output variable space.
68. The method of claim 67 wherein:

said step of storing each at least one assigned value is performed automatically in the course of said step of assigning.
69. The method of claim 59 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, moving each at least one value for the at least one first input variable-icon from the reserved first input variable space to at least one of the at least one first control means and the at least one second control means and the sequence control means using the first input means;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon using the at least one first control means to control the first function and using the at least one second control means to control the second function and using the sequence control means to control sequencing of data flow to the at least one first control means and the at least one second control means; and storing each produced value for the at least one first output variable-icon in the reserved first output variable space.
70. A method for programming a computer system including display means for displaying images to control at least one of a virtual instrument and an instrument, the method comprising the steps of:
displaying on the screen at least one first function-icon that references at least one first control means for controlling at least one first function;
displaying on the screen at least one iteration-icon that references iteration control means for controlling multiple iterations of data flow;
displaying on the screen at least one feedback-icon that references feedback control means for controlling feedback of data;
displaying on the screen at least one first input variable-icon that references at least one first input variable;
displaying on the screen at least one first output variable-icon that references at least one first output variable;
assembling on the screen at least one first acyclic data flow diagram including the at least one first function-icon and the at least one iteration-icon and the at least one feedback-icon and the at least one first input variable-icon and the at least one first output variable icon, such that the diagram displays a first procedure for producing at least one value for the at least one first output variable-icon from at least one value for the at least one first input variable-icon and such that the at least one iteration-icon in the diagram indicates multiple iterations of the at least one first function and such that the at least one feedback-icon in the diagram indicates that in the course of the multiple iterations, at least one value for the at least one first output variable-icon produced in at least one iteration of the at least one first function is used in a subsequent iteration of the at least one first function to produce at least one subsequent value for the at least one first output variable-icon.
71. The method of claim 70 and further comprising the step of:
assembling on the screen a first front panel including the at least one first input variable-icon and the at least one first output variable-icon.
72. The method of claim 70 and further comprising the step of:
simultaneously displaying on the screen the first front panel and the first data flow diagram.
73. A method for programming a computer system including display means for displaying images to control at least one of a virtual instrument and an instrument, the method comprising the steps of:
providing a function class of respective function icons that respectively reference respective control means for controlling respective functions;

providing a scheduling class of respective scheduling-icons that respectively reference scheduling control means for scheduling of data flow, wherein the class of respective scheduling icons includes, i) an iteration-icon that references iteration control means for controlling multiple iterations of data flow, and ii) a conditional-icon that references conditional control means for controlling conditional branching of data flow;
providing a variable class of respective variable-icons that respectively reference respective variables;
selecting at least one first function-icon from the function class, the selected at least one first function-icon referencing at least one first control means;
selecting at least one scheduling-icon from the scheduling class, the selected at least one scheduling-icon referencing at least one scheduling control means;
selecting at least one first input variable-icon from the variable class;
selecting at least one first output variable-icon from the variable class; and assembling on the screen a first acyclic data flow diagram including the selected at least one first function-icon and the selected at least one scheduling-icon and the at least one first input variable-icon and the at least one first output variable icon, such that the diagram displays a first procedure for producing at least one value for the at least one first output variable-icon from at least one value for the at least one first input variable-icon and such that the selected scheduling-icon in the diagram indicates scheduling of the at least one first function in the course of the first procedure.
74. The method of claim 73 and further comprising the step of:
assembling on the screen a first front panel including the at least one first input variable-icon and the at least one first output variable-icon.
75. The method of claim 74 and further comprising the step of:
simultaneously displaying on the screen the first front panel and the first data flow diagram.
76. The method of claim 73 wherein said step of assembling on the screen the first diagram includes:
arranging on the screen the at least one first function-icon and the at least one scheduling-icon such that in the first diagram the at least one first function-icon is displayed on the screen adjacent to the at least one scheduling-icon.
77. The method of claim 73 wherein said step of assembling on the screen the first diagram includes:
arranging on the screen the at least one first function-icon and the at least one scheduling-icon such that in the first diagram the at least one first function-icon is displayed on the screen substantially inside the at least one scheduling-icon.
78. The method of claim 73 and further comprising the step of:
selecting the at least one first control means.
79. The method of claim 78 and further comprising the step of selecting the scheduling control means.
80. The method of claim 79 wherein:
said steps of selecting the at least one first control means and selecting the at least one scheduling control means are performed automatically in the course of said steps of displaying on the screen the at least one first function-icon and displaying on the screen the at least one scheduling-icon and assembling on the screen the first diagram.
81. The method Or claims 79 or 80 wherein said first control means and said scheduling control means are substantially implemented in software.
82. The method of claim 79 and further comprising the steps of:
reserving first input variable space in memory of the computer system corresponding to the selected at least one first input variable-icon; and reserving first output variable space in memory of the computer system corresponding to the selected at least one first output variable-icon.
83. The method of claim 82 wherein:

said step of reserving first input variable space is performed automatically in the course of said steps of displaying the at least one first input variable-icon and assembling of the screen the first diagram; and said step of reserving first output variable space is performed automatically in the course of said steps of displaying the at least one first output variable-icon and assembling on the screen the first diagram.
84. The method of claim 73 wherein said step of assembling on the screen the first diagram further includes the steps of displaying at least one first input arc between the at least one first input variable-icon and at least one of the at least one first function-icon and the at least one scheduling-icon and displaying on the screen at least one first output arc between the at least one first output variable-icon and at least one of the at least one first function-icon and the at least one scheduling-icon.
85. The method of claim 82 wherein said step of assembling on the screen the first diagram further includes the steps of displaying on the screen at least one first input arc between the at least one first input variable-icon and at least one of the at least one first function-icon and the at least one scheduling-icon; and displaying on the screen at least one first output arc between the at least one first output variable-icon and at least one of the at least one first function-icon and the at least one scheduling-icon; and further comprising the steps of:

forming first input means for moving respective input values for the at least one first input variable between the at least one first input variable space and at least one of the at least one first control means and the scheduling control means.
86. The method of claim 85 wherein:
said step of forming first input means is performed automatically in the course of said step of displaying on the screen the at least one first input arc.
87. The method of claim 85 wherein:
the at least one first control means and the scheduling control means and the first input means are substantially implemented in software.
88. The method of claim 74 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
after assigning at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon from the at least one assigned value for each at least one first input variable-icon.
89. The method of claim 88 wherein said step of assigning includes the steps of:
displaying said first front panel;
setting the at least one first input variable-icon to display the at least one assigned value.
90. The method of claim 89 and further including the step of:
displaying the at least one produced value in conjunction with the at least one first output variable-icon.
91. The method of claim 88 wherein said step of producing at least one value for the at least one first output variable-icon includes using said at least one first control means to control the first function.
92. The method of claim 91 wherein said step of producing at least one value for the at least one output variable-icon includes using the scheduling control means to control scheduling of data flow to the at least one first control means.
93. The method of claim 82 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon; and storing each value for the at least one first output variable in the reserved first output variable space.
94. The method of claim 93 wherein:

said step of storing each at least one assigned value is performed automatically in the course of said step of assigning.
95. The method of claim 84 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, moving each at least one value for the at least one first input variable-icon from the reserved first input variable space to at least one of the at least one first control means and the scheduling control means using the first input means;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon using the at least one first control means to control the first function and using the scheduling control means to control scheduling data flow to the at least one first control means; and storing each value for the at least one first output variable-icon in the reserved first output variable space.
96. The method of claim 73 wherein said step of providing a scheduling class includes providing in the scheduling class iii) a feedback-icon that references feedback control means for controlling feedback of data.
97. The method of claim 73 wherein said step of providing a scheduling class includes providing in the scheduling class:
iv) a sequence-icon that references sequencing control means for controlling sequencing of data flow.
98. A method for programming a computer system including means for displaying images on a screen to control at least one of a virtual instrument and an instrument, the method comprising the steps of:
providing a class of respective function-icons that reference respective control means for controlling respective functions;
selecting from the class of function-icons at least one first function-icon that references at least one first control means for controlling a first function;
providing a class of respective variable-icons wherein each respective variable-icon references a respective variable;
selecting at least one first input variable-icon from the class of variable-icons;

selecting at least one first output variable-icon from the class of variable-icons;
assembling on the screen a first front panel including the at least one first input variable-icon and the at least one first output variable-icon; and assembling on the screen a first data flow diagram including the at least one first function-icon and the at least one first input variable-icon and the at least one first output variable-icon, wherein the first diagram displays a first procedure for producing at least one value for the at least one first output variable-icon from at least one value for the at least one first input variable-icon.
99. The method of claim 98 and further comprising the step of:
in the course of said step of assembling on the screen said front panel, displaying on the screen the at least one first input variable-icon and the at least one first output variable-icon.
100. The method of claim 98 and further comprising the step of:
in the course of said step of assembling on the screen said first data flow diagram, displaying on the screen the at least one first function-icon and the at least one first input variable-icon and the at least one first output variable-icon.
101. The method of claim 98 and further comprising the step of:

simultaneously displaying on the screen the first front panel and the first data flow diagram.
102. The method of claim 98 and further comprising the steps of:
assembling on the screen a first user-defined function-icon that displays on the screen a reference to the first diagram;
selecting from the class of function-icons at least one second function-icon that references at least one second control means for controlling a second function;
selecting at least one second input variable-icon from the class of variable-icons;
selecting at least one second output variable-icon from the class of variable-icons;
assembling on the screen a second front panel including the at least one second input variable-icon and the at least one second output variable-icon; and assembling on the screen a second data flow diagram including the first user-defined-function-icon and the at least one second function-icon and the at least one second input variable-icon and the at least one second output variable-icon, wherein the second diagram displays a second procedure for producing at least one value for the at least one second output variable-icon from at least one value for the at least one second input variable-icon;

whereby a hierarchy of diagrams is produced in which the first diagram is referenced by the first user-defined-function-icon in the second diagram.
103. The method of claim 102 and further comprising the steps of:
assembling of the screen a second user-defined-function-icon that displays on the screen a reference to the second diagram;
selecting from the class of function-icons at least one third function-icon that references at least one third control means for controlling a third function;
selecting at least one third input variable-icon from the class of variable-icons;
selecting at least one third output variable-icon from the class of variable-icons;
assembling on the screen a third front panel including the at least one third input variable-icon and the at least one third output variable-icon; and assembling on the screen a third data flow diagram including the second user-defined-function-icon and the at least one third function-icon and the at least one third input variable-icon and the at least one third output variable-icon wherein the third diagram displays a third procedure for producing at least one value for the at least one third output variable-icon from at least one value for the at least one third input variable-icon;

whereby a hierarchy of diagrams is produced in which the first diagram is referenced by the first user-defined-function-icon in the second diagram and the second diagram is referenced by the second user-defined-function-icon in the third diagram.
104. The method of claim 103 and further comprising the steps of:
assembling on the screen a third user-defined-function-icon that displays on the screen a refer-ence to the third diagram;
selecting from the class of function-icons at least one fourth function-icon that references at least one fourth control means for controlling a fourth function;
selecting at least one fourth input variable-icon from the class of variable-icons;
selecting at least one fourth output variable-icon from the class of variable-icons;
assembling on the screen a fourth front panel including the at least one fourth input variable-icon and the at least one fourth output variable-icon; and assembling on the screen a fourth data flow diagram including the third user-defined-function-icon and the at least one fourth function-icon and the at least one fourth input variable-icon and the at least one fourth output variable-icon, wherein the fourth diagram displays a fourth procedure for producing at least one value for at least one fourth output variable-icon from at least one value for the at least one fourth input variable-icon;
whereby a hierarchy of diagrams is produced in which the first diagram is referenced by the first user-defined-function-icon in the second diagram and the second diagram is referenced by the second user-defined-function-icon in the third diagram and the third diagram is referenced by the third user-defined-function-icon in the fourth diagram.
105. The method of claim 104 and further comprising the steps of:
assembling on the screen an (n-1)th user-defined-function-icon that displays on the screen a reference to an (n-1)th data flow diagram, wherein n is an integer and n?5;
selecting at least one nth function-icon from the class of function-icons;
selecting at least one nth input variable-icon from the class of variable-icons;
selecting at least one nth output variable-icon from the class of variable-icons;
assembling on the screen an nth front panel including the at least one nth input variable-icon and the at least one nth output variable-icon, and assembling on the screen an nth data flow diagram including the (n-1)th user-defined-function-icon and the at least one nth function-icon and the at least one nth input variable-icon and the at least one nth output variable-icon, wherein the nth diagram displays an nth procedure for producing at least one value for the at least one nth output variable-icon from at least one value for the at least one nth input variable-icon;
whereby a hierarchy of diagrams is produced in which the (n-1)th diagram is referenced by the (n-1)th user-defined-function-icon in the nth diagram.
106. The method of claim 98 and further comprising the step of:
displaying on the the screen a first menu identifying a class of functions that respectively correspond to the function-icons of the class of function-icons.
107. The method of claim 98 and further comprising the steps of:
displaying on the screen a first menu identifying a class of functions that respectively correspond to the function-icons of the class of function-icons; and displaying on the screen a second menu identifying a class of variables that respectively correspond to the variable-icons of the class of variable-icons.
108. The method of claim 102 wherein said step of assembling on the screen a first user-defined-function-icon includes the steps of:
displaying on the screen at least one panel-pattern-icon from a set of respective panel-pattern-icons wherein each respective panel-pattern-icon references a distinct arrangement of panels;

selecting a first panel-pattern-icon from the set of panel-pattern-icons;
displaying on the screen the first panel-pattern-icon and the at least one first input variable-icon;
displaying on the screen the first panel-pattern-icon and the at least one first output variable-icon;
defining an association between at least one first input panel of the first panel-pattern icon and the at least one first input variable-icon; and defining an association between at least one first output panel of the first panel-pattern-icon and the at least one first output variable-icon.
109. The method of claim 108 and further comprising the step of:
in the course of said step of defining an association between the at least one first input panel of the first panel-pattern-icon and the at least one first input variable-icon, displaying the defined association between the at least one first input panel of the first panel-pattern-icon and the at least one first input variable-icon; and in the course of said step of defining an association between the at least first output panel of the first panel-pattern-icon and the at least one first output variable-icon, displaying the defined association between the at least one first output panel of the first panel-pattern-icon and the at least one first output variable-icon.
110. The method of claim 98 and further comprising the step of:
selecting the at least one first control means.
111. The method of claim 110 wherein:
said step of selecting the at least one first control means is performed automatically in the course of said steps of selecting the at least one first function-icon and assembling on the screen the first front panel and assembling on the screen the first diagram.
112. The method of claims 110 or 111 wherein said first control means is substantially implemented in software.
113. The method of claim 110 and further comprising the steps of:
reserving first input variable space in memory of the computer system corresponding to the selected at east one first input variable-icon; and reserving first output variable space in memory of the computer system corresponding to the selected at least one first output variable-icon.
114. The method of claim 113 wherein:
said step of reserving first input variable space is performed automatically in the course of said steps of selecting the at least one first input variable-icon and assembling on the screen the first front panel and assembling on the screen the first diagram; and said step of reserving first output variable space is performed automatically in the course of said steps of selecting the at least one first output variable-icon and assembling on the screen the first front panel and assembling on the screen the first diagram.
115. The method of claim 98 wherein said step of assembling on the screen the first diagram further includes the steps of displaying at least one first input, arc between the at least one first input variable-icon and the at least one first function-icon and displaying on the screen at least one first output arc between the at least one first output variable-icon and the at least one first function-icon.
116.The method of claim 113 wherein said step of assembling on the screen the first diagram further includes the steps of displaying on the screen at least one first input arc between the at least one first input variable-icon and the at least one first function-icon and displaying on the screen at least one first output arc between the at least one first output variable-icon and the at least one first function-icon; and further comprising the steps of:
forming first input means for moving respective input values for the at least one first input variable between the at least one first input variable space and the at least one first control means.
117. The method of claim 116 wherein:

said step of forming first input means is performed automatically in the course of said step of displaying on the screen the at least one first input arc.
118.The method of claim 116 wherein:
the at least one first control means and the first input means are substantially implemented in software.
119. The method of claim 98 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
after assigning at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon from the at least one value for each at least one first input variable-icon.
120. The method of claim 119 wherein said step of assigning includes the steps of:
displaying said first front panel; and instructing the at least one first input variable-icon to display the at least one assigned value.
121. The method of claim 120 and further including the step of:
displaying the at least one produced value in conjunction with the at least one first output variable icon.
122. The method of claim 119 wherein said step of producing at least one value for the at least one first output variable-icon includes using said at least one first control means to control the first function.
123. The method of claim 113 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon; and storing each value for the at least one first output variable in the reserved first output variable space.
124. The method of claim 123 wherein:
said step of storing each at least one assigned value is performed automatically in the course of said step of assigning.
125. The method of claim 116 and further comprising the steps of:
assigning at least one value for each at least one first input variable-icon;
storing in the reserved first input variable space each at least one assigned value;
after said steps of assigning and storing at least one value for each at least one first input variable-icon, moving each at least one value for the at least one first input variable-icon from the reserved first input variable space to the at least one first control means using the first input means;

after said steps of assigning and storing at least one value for each at least one first input variable-icon, producing at least one value for the at least one first output variable-icon using the at least one first control means to control the first function; and storing each value for the at least one first output variable-icon in the reserved first output variable space.
CA000534709A 1986-04-14 1987-04-14 Graphical system for modelling a process and associated method Expired - Lifetime CA1285655C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US851,569 1986-04-14
US06/851,569 US4901221A (en) 1986-04-14 1986-04-14 Graphical system for modelling a process and associated method

Publications (1)

Publication Number Publication Date
CA1285655C true CA1285655C (en) 1991-07-02

Family

ID=25311082

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000534709A Expired - Lifetime CA1285655C (en) 1986-04-14 1987-04-14 Graphical system for modelling a process and associated method

Country Status (7)

Country Link
US (1) US4901221A (en)
EP (1) EP0242131B1 (en)
JP (1) JP3016783B2 (en)
AT (1) ATE120570T1 (en)
CA (1) CA1285655C (en)
DE (1) DE3751192T2 (en)
ES (1) ES2072849T3 (en)

Families Citing this family (307)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6241704B1 (en) 1901-11-22 2001-06-05 Sims Deltec, Inc. Drug pump systems and methods
US5338157B1 (en) * 1992-09-09 1999-11-02 Sims Deltec Inc Systems and methods for communicating with ambulat
US4849880A (en) * 1985-11-18 1989-07-18 John Fluke Mfg. Co., Inc. Virtual machine programming system
JPH0812206B2 (en) * 1986-03-07 1996-02-07 ヒューレット・パッカード・カンパニー Measuring device controller
US5734863A (en) * 1986-04-14 1998-03-31 National Instruments Corporation Method and apparatus for providing improved type compatibility and data structure organization in a graphical data flow diagram
US5291587A (en) * 1986-04-14 1994-03-01 National Instruments, Inc. Graphical system for executing a process and for programming a computer to execute a process, including graphical variable inputs and variable outputs
US4914568A (en) * 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US5155836A (en) * 1987-01-27 1992-10-13 Jordan Dale A Block diagram system and method for controlling electronic instruments with simulated graphic display
US4868785A (en) * 1987-01-27 1989-09-19 Tektronix, Inc. Block diagram editor system and method for controlling electronic instruments
US5230040A (en) * 1988-09-21 1993-07-20 Fuji Xerox Co., Ltd. Table calculating device
JP3178531B2 (en) * 1988-11-15 2001-06-18 株式会社日立製作所 Menu presentation method and data processing device
JPH02271471A (en) * 1989-01-26 1990-11-06 Cybermation Inc Management system of execution sequence
US5371851A (en) * 1989-04-26 1994-12-06 Credence Systems Corporation Graphical data base editor
US5418942A (en) * 1989-07-06 1995-05-23 Krawchuk; Kenneth V. System and method for storing and managing information
US5339392A (en) * 1989-07-27 1994-08-16 Risberg Jeffrey S Apparatus and method for creation of a user definable video displayed document showing changes in real time data
EP0416512B1 (en) * 1989-09-04 1995-12-20 Omron Corporation A programmable monitor system and method
JPH03102501A (en) * 1989-09-18 1991-04-26 Mitsubishi Heavy Ind Ltd System for preparing function element for direct digital control
JP3168570B2 (en) * 1989-11-08 2001-05-21 富士通株式会社 Icon pattern automatic generation apparatus and method
JPH03202963A (en) * 1989-12-28 1991-09-04 Brother Ind Ltd Graphic processor
EP0444251A3 (en) * 1990-03-02 1992-12-02 Hewlett-Packard Company Image oriented method and apparatus for computer control of mechanical devices
US5430837A (en) * 1990-03-27 1995-07-04 Mitsubishi Denki Kabushiki Kaisha Mechanism conceptual drawing formation method and apparatus
US5146591A (en) * 1990-04-27 1992-09-08 Bachman Information Systems, Inc. Dynamic information management system utilizing entity-relationship information model in which the attribute is independent of an entity
FR2662009B1 (en) * 1990-05-09 1996-03-08 Apple Computer MULTIPLE FACES MANOPULABLE ICON FOR DISPLAY ON COMPUTER.
US5168441A (en) * 1990-05-30 1992-12-01 Allen-Bradley Company, Inc. Methods for set up and programming of machine and process controllers
US5551041A (en) * 1990-06-13 1996-08-27 Hewlett-Packard Company Wait for service request in an iconic programming system
US5313575A (en) * 1990-06-13 1994-05-17 Hewlett-Packard Company Processing method for an iconic programming system
US5313574A (en) * 1990-06-13 1994-05-17 Hewlett-Packard Company Method for starting processing of an iconic programming system
US5255363A (en) * 1990-06-19 1993-10-19 Mentor Graphics Corporation Graph-based programming system and associated method
US5414810A (en) * 1990-06-28 1995-05-09 International Business Machines Corporation Method and apparatus for maintaining data integrity when displaying multiple dialog windows
GB2278250B (en) * 1990-08-31 1995-03-15 Canon Kk Image processing
WO1992004678A1 (en) * 1990-09-10 1992-03-19 Lotus Development Corporation Apparatus and method for reformattable spreadsheet
US5428740A (en) * 1990-10-18 1995-06-27 Ventana Systems, Inc. Applying successive data group operations to an active data group
US5283864A (en) * 1990-10-30 1994-02-01 Wang Laboratories, Inc. Computer apparatus and method for graphical flip book
US5491495A (en) * 1990-11-13 1996-02-13 Wang Laboratories, Inc. User interface having simulated devices
US5148155A (en) * 1990-11-13 1992-09-15 Wang Laboratories, Inc. Computer with tablet input to standard programs
US5260697A (en) * 1990-11-13 1993-11-09 Wang Laboratories, Inc. Computer with separate display plane and user interface processor
JPH0727504B2 (en) * 1990-12-10 1995-03-29 インターナショナル・ビジネス・マシーンズ・コーポレイション System for defining network configuration, method for generating configuration parameters for network, and system for configuring network
US5257349A (en) * 1990-12-18 1993-10-26 David Sarnoff Research Center, Inc. Interactive data visualization with smart object
US5377318A (en) * 1991-02-28 1994-12-27 Hewlett-Packard Company Line probe diagnostic display in an iconic programming system
US5293476A (en) * 1991-03-12 1994-03-08 Hewlett-Packard Co. System for entering and modifying variable names for terminals of icons in an iconic programming system
US5261043A (en) * 1991-03-12 1993-11-09 Hewlett-Packard Company Input and output data constraints on iconic devices in an iconic programming system
US5278934A (en) * 1991-03-18 1994-01-11 Newport Corporation Throughput maximizing systems for substantially unimodal throughput profiles
US6342894B1 (en) * 1991-03-22 2002-01-29 Canon Kabushiki Kaisha Icon display method
US5325481A (en) * 1991-04-12 1994-06-28 Hewlett-Packard Company Method for creating dynamic user panels in an iconic programming system
US5455903A (en) * 1991-05-31 1995-10-03 Edify Corp. Object oriented customer information exchange system and method
US5375199A (en) * 1991-06-04 1994-12-20 Digital Equipment Corporation System monitoring method and device including a graphical user interface to view and manipulate system information
JPH0520044A (en) * 1991-07-15 1993-01-29 Personal Joho Kankyo Kyokai User interface device
US5452468A (en) * 1991-07-31 1995-09-19 Peterson; Richard E. Computer system with parallel processing for information organization
EP0528631B1 (en) * 1991-08-13 1998-05-20 Xerox Corporation Electronic image generation
JP2697399B2 (en) * 1991-09-13 1998-01-14 三菱電機株式会社 Positioning device and program display method thereof
US5351995A (en) * 1992-01-29 1994-10-04 Apple Computer, Inc. Double-sided, reversible electronic paper
US5630164A (en) * 1992-02-27 1997-05-13 Associative Measurements Pty. Ltd. Scientific instrument emulator having a computer and an analog signal interface for real-time signal processing
JPH0644339A (en) * 1992-03-06 1994-02-18 Hewlett Packard Co <Hp> Graphic object operation system and method
FR2692055B1 (en) * 1992-06-09 1996-10-25 Bull Sa DEVICE FOR DESIGNING INFORMATION CONTROL NETWORKS FOR MODELING ALL PROCESSES.
US5442746A (en) * 1992-08-28 1995-08-15 Hughes Aircraft Company Procedural user interface
US5602981A (en) * 1992-10-21 1997-02-11 Microsoft Corporation Quickselect icon button on a computer display which redisplays the last view style activated by the icon button
US5331111A (en) * 1992-10-27 1994-07-19 Korg, Inc. Sound model generator and synthesizer with graphical programming engine
AU5451794A (en) * 1992-10-28 1994-05-24 Intellution, Inc. A dynamic graphical system configuration utility
US5432940A (en) * 1992-11-02 1995-07-11 Borland International, Inc. System and methods for improved computer-based training
US5437007A (en) * 1992-11-10 1995-07-25 Hewlett-Packard Company Control sequencer in an iconic programming system
US5428730A (en) * 1992-12-15 1995-06-27 International Business Machines Corporation Multimedia system having software mechanism providing standardized interfaces and controls for the operation of multimedia devices
US5450540A (en) * 1992-12-16 1995-09-12 Apple Computer, Inc. Graphical interface for interacting constrained actors
US5542039A (en) * 1993-03-05 1996-07-30 International Business Machines Corporation Control for scaled parameters
US5428738A (en) * 1993-05-21 1995-06-27 Novell, Inc. Logical expression calculation interface
US6064409A (en) * 1993-09-22 2000-05-16 National Instruments Corporation System and method for providing audio probe and debugging features in a graphical data flow program
US5596704A (en) * 1993-11-11 1997-01-21 Bechtel Group, Inc. Process flow diagram generator
US5506952A (en) * 1994-01-03 1996-04-09 International Business Machines Corporation Method and system for guiding the formation of a correctly structured instruction for data processing systems
JP3220588B2 (en) * 1994-01-28 2001-10-22 三菱電機エンジニアリング株式会社 Positioning device
US5664216A (en) * 1994-03-22 1997-09-02 Blumenau; Trevor Iconic audiovisual data editing environment
US6216138B1 (en) * 1994-04-22 2001-04-10 Brooks Automation Inc. Computer interface system for automatically generating graphical representations of computer operations linked together according to functional relationships
US5526478A (en) 1994-06-30 1996-06-11 Silicon Graphics, Inc. Three dimensional model with three dimensional pointers and multimedia functions linked to the pointers
US5801687A (en) * 1994-09-30 1998-09-01 Apple Computer, Inc. Authoring tool comprising nested state machines for use in a computer system
US6226785B1 (en) * 1994-09-30 2001-05-01 Apple Computer, Inc. Method and apparatus for storing and replaying creation history of multimedia software or other software content
US5652714A (en) * 1994-09-30 1997-07-29 Apple Computer, Inc. Method and apparatus for capturing transient events in a multimedia product using an authoring tool on a computer system
US5623592A (en) * 1994-10-18 1997-04-22 Molecular Dynamics Method and apparatus for constructing an iconic sequence to operate external devices
JPH08241185A (en) * 1994-11-03 1996-09-17 Motorola Inc Integrated testing and measuring means as well as method foradoption of graphical user interface
US5852825A (en) * 1994-12-05 1998-12-22 Trimble Navigation Limited Form data message formatting method, program and system
US5736847A (en) 1994-12-30 1998-04-07 Cd Power Measurement Limited Power meter for determining parameters of muliphase power lines
US5650936A (en) * 1994-12-30 1997-07-22 Cd Power Measurement Limited Power monitor apparatus and method with object oriented structure
CA2214972C (en) * 1995-02-22 2000-07-18 Agust Sverrir Egilsson Graphical environment for managing and developing applications
US5664180A (en) * 1995-03-20 1997-09-02 Framework Technologies Corporation Design tool for complex objects which links object structures of a design object in multiple design domains
US5909595A (en) * 1995-05-15 1999-06-01 Nvidia Corporation Method of controlling I/O routing by setting connecting context for utilizing I/O processing elements within a computer system to produce multimedia effects
US6272672B1 (en) 1995-09-06 2001-08-07 Melvin E. Conway Dataflow processing with events
US5726883A (en) * 1995-10-10 1998-03-10 Xerox Corporation Method of customizing control interfaces for devices on a network
US6816914B1 (en) * 1995-12-29 2004-11-09 Agilent Technologies, Inc. Callable graphical programming language
US6016143A (en) * 1995-12-29 2000-01-18 Hewlett Packard Company Multi-device direct I/O object that generates transactions capable of controlling multiple instruments and transaction dialog boxes having device and address fields
US5963724A (en) * 1996-02-16 1999-10-05 Analogy, Inc. Component-based analog and mixed-signal simulation model development
US6236956B1 (en) 1996-02-16 2001-05-22 Avant! Corporation Component-based analog and mixed-signal simulation model development including newton step manager
US5870088A (en) * 1996-05-09 1999-02-09 National Instruments Corporation System and method for editing a control via direct graphical user interaction
US6542166B1 (en) * 1996-05-09 2003-04-01 National Instruments Corporation System and method for editing a control
US5807336A (en) * 1996-08-02 1998-09-15 Sabratek Corporation Apparatus for monitoring and/or controlling a medical device
US5885245A (en) * 1996-08-02 1999-03-23 Sabratek Corporation Medical apparatus with remote virtual input device
US6689091B2 (en) * 1996-08-02 2004-02-10 Tuan Bui Medical apparatus with remote control
US5895371A (en) * 1996-08-27 1999-04-20 Sabratek Corporation Medical treatment apparatus and method
US5847953A (en) * 1996-09-23 1998-12-08 National Instruments Corporation System and method for performing class checking of objects in a graphical data flow program
US6437805B1 (en) 1996-09-23 2002-08-20 National Instruments Corporation System and method for accessing object capabilities in a graphical program
US5905649A (en) * 1996-09-23 1999-05-18 National Instruments Corporation System and method for performing type checking and class propagation of attributes in a graphical data flow program
US6102965A (en) * 1996-09-23 2000-08-15 National Instruments Corporation System and method for providing client/server access to graphical programs
US6064816A (en) * 1996-09-23 2000-05-16 National Instruments Corporation System and method for performing class propagation and type checking in a graphical automation client
US5784275A (en) * 1996-09-23 1998-07-21 National Instruments Corporation System and method for performing interface independent virtual instrumentation functions in a graphical data flow program
US6605057B2 (en) 1996-10-24 2003-08-12 Medtronic Ave, Inc. Reinforced monorail balloon catheter
US6002395A (en) * 1996-10-31 1999-12-14 Ncr Corporation System and method for building, testing and integrating a graphical touch user interface
US5920312A (en) * 1996-10-31 1999-07-06 Ncr Corporation System and method for building testing and integrating a graphical dynakey user interface
US6408429B1 (en) 1997-01-17 2002-06-18 Cognex Corporation Machine vision system for identifying and assessing features of an article
US6438615B1 (en) 1997-01-31 2002-08-20 Sun Microsystems, Inc. System, method and article of manufacture for using multiple bidirectional ports in association with a java application or applet
US5884078A (en) * 1997-01-31 1999-03-16 Sun Microsystems, Inc. System, method and article of manufacture for creating an object oriented component having multiple bidirectional ports for use in association with a java application or applet
US5790855A (en) * 1997-01-31 1998-08-04 Sun Microsystems, Inc. System, method and article of manufacture for type checking appropriateness of port connection and variable type matching in connection with multiport object-oriented components
US5842020A (en) * 1997-01-31 1998-11-24 Sun Microsystems, Inc. System, method and article of manufacture for providing dynamic user editing of object oriented components used in an object oriented applet or application
US5913065A (en) * 1997-01-31 1999-06-15 Sun Microsystems, Inc. System, method and article of manufacture for creating hierarchical folder components for use in a java application or applet
US6496870B1 (en) 1997-01-31 2002-12-17 Sun Microsystems, Inc. System, method and article of manufacture for collaboration with an application
US5987246A (en) * 1997-02-14 1999-11-16 National Instruments Corp. Graphical programming system and method including three-dimensional nodes with pre-defined input and output capabilities
US6112126A (en) * 1997-02-21 2000-08-29 Baker Hughes Incorporated Adaptive object-oriented optimization software system
US6990652B1 (en) 1997-03-04 2006-01-24 National Instruments Corporation System and method for determining methods and properties to be invoked on objects in a graphical program
JP3489962B2 (en) * 1997-04-23 2004-01-26 沖電気工業株式会社 Program development device and parallel real-time processing device
KR100224379B1 (en) * 1997-05-29 1999-10-15 박호군 Process line control alogorithm automatic generation method
US5974254A (en) * 1997-06-06 1999-10-26 National Instruments Corporation Method for detecting differences between graphical programs
US5990906A (en) * 1997-06-25 1999-11-23 National Instruments Corporation Undo feature for a graphical programming system
US5966532A (en) * 1997-07-10 1999-10-12 National Instruments Corporation Graphical code generation wizard for automatically creating graphical programs
CN1105349C (en) * 1997-07-29 2003-04-09 株式会社山武 System designing support apparatus
WO1999006907A1 (en) * 1997-07-29 1999-02-11 Yamatake Corporation System designing support apparatus
US6219628B1 (en) * 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6802053B1 (en) * 1997-08-18 2004-10-05 National Instruments Corporation Graphical programming system with distributed block diagram execution and front panel display
US6173438B1 (en) * 1997-08-18 2001-01-09 National Instruments Corporation Embedded graphical programming system
US6311149B1 (en) 1997-08-18 2001-10-30 National Instruments Corporation Reconfigurable test system
US5991537A (en) * 1997-09-16 1999-11-23 The United States Of America As Represented By The Secretary Of The Navy VXI test executive
US6063126A (en) * 1997-12-04 2000-05-16 Autodesk, Inc. Modeling system having constraint solvers
US7743362B2 (en) * 1998-02-17 2010-06-22 National Instruments Corporation Automatic generation of application domain specific graphical programs
US7085670B2 (en) * 1998-02-17 2006-08-01 National Instruments Corporation Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources
US7152027B2 (en) * 1998-02-17 2006-12-19 National Instruments Corporation Reconfigurable test system
US6357039B1 (en) * 1998-03-03 2002-03-12 Twelve Tone Systems, Inc Automatic code generation
US6587969B1 (en) * 1998-06-22 2003-07-01 Mercury Interactive Corporation Software system and methods for testing the functionality of a transactional server
US6455316B1 (en) 1998-08-13 2002-09-24 Symyx Technologies, Inc. Parallel reactor with internal sensing and method of using same
US6528026B2 (en) * 1998-08-13 2003-03-04 Symyx Technologies, Inc. Multi-temperature modular reactor and method of using same
US6890492B1 (en) * 1998-08-13 2005-05-10 Symyx Technologies, Inc. Parallel reactor with internal sensing and method of using same
US6548026B1 (en) 1998-08-13 2003-04-15 Symyx Technologies, Inc. Parallel reactor with internal sensing and method of using same
US6306658B1 (en) 1998-08-13 2001-10-23 Symyx Technologies Parallel reactor with internal sensing
US7092837B1 (en) 1998-10-30 2006-08-15 Ltx Corporation Single platform electronic tester
US6449741B1 (en) 1998-10-30 2002-09-10 Ltx Corporation Single platform electronic tester
US6398727B1 (en) * 1998-12-23 2002-06-04 Baxter International Inc. Method and apparatus for providing patient care
US6453435B1 (en) * 1998-12-29 2002-09-17 Fujitsu Network Communications, Inc. Method and apparatus for automated testing of circuit boards
US6231560B1 (en) 1999-02-10 2001-05-15 Baxter International Inc Method and apparatus for automatically controlling the level of medication
US7101510B2 (en) * 1999-02-16 2006-09-05 Applera Corporation Matrix storage and dispensing system
US6282699B1 (en) * 1999-02-23 2001-08-28 National Instruments Corporation Code node for a graphical programming system which invokes execution of textual code
US6507945B1 (en) 1999-05-05 2003-01-14 Symyx Technologies, Inc. Synthesizing combinatorial libraries of materials
US6615147B1 (en) 1999-08-09 2003-09-02 Power Measurement Ltd. Revenue meter with power quality features
US6611922B2 (en) 1999-08-09 2003-08-26 Power Measurement, Ltd. Power system time synchronization device and method for sequence of event recording
US6186842B1 (en) 1999-08-09 2001-02-13 Power Measurement Ltd. Revenue meter bayonet assembly and method of attachment
US6397155B1 (en) 1999-08-09 2002-05-28 Power Measurement Ltd. Method and apparatus for automatically controlled gain switching of monitors
US6825776B2 (en) * 1999-08-09 2004-11-30 Power Measurement Ltd. External I/O and communications interface for a revenue meter
US6798191B1 (en) 1999-08-09 2004-09-28 Power Measurement Ltd. Revenue meter with a graphic user interface being operative to display scalable objects
US6493644B1 (en) 1999-08-09 2002-12-10 Power Measurement Ltd. A-base revenue meter with power quality features
DE19938490B4 (en) * 1999-08-13 2005-04-21 Danfoss Drives A/S Procedure for checking a system
US7000190B2 (en) * 1999-08-19 2006-02-14 National Instruments Corporation System and method for programmatically modifying a graphical program in response to program information
US7937665B1 (en) 2000-06-13 2011-05-03 National Instruments Corporation System and method for automatically generating a graphical program to implement a prototype
DE19942315A1 (en) 1999-09-04 2001-05-17 Gfs Systemtechnik Gmbh & Co Kg Process for the configuration and parameterization of a computer program for the operation of a plant for process data processing
US6684385B1 (en) 2000-01-14 2004-01-27 Softwire Technology, Llc Program object for use in generating application programs
US6701513B1 (en) 2000-01-14 2004-03-02 Measurement Computing Corporation Program-development environment for use in generating application programs
US6425120B1 (en) 2000-01-14 2002-07-23 Softwire Technology Llc Repeating program object for use with a graphical program-development system
US6425121B1 (en) 2000-01-14 2002-07-23 Softwire Technology, Llp Method and apparatus for resolving divergent paths in graphical programming environments
US20020089541A1 (en) * 2000-02-14 2002-07-11 Julian Orbanes System for graphically interconnecting operators
US6994827B2 (en) * 2000-06-03 2006-02-07 Symyx Technologies, Inc. Parallel semicontinuous or continuous reactors
US8640027B2 (en) * 2000-06-13 2014-01-28 National Instruments Corporation System and method for configuring a hardware device to execute a prototype
US6895563B2 (en) * 2000-08-15 2005-05-17 Paul K. Dixon Universal laboratory prototyping interface system
AUPQ966400A0 (en) * 2000-08-24 2000-09-21 Xemplex Pty Ltd Method of graphically defining a formula
US7020868B2 (en) * 2000-11-22 2006-03-28 General Electric Company Graphic application development system for a medical imaging system
US7913170B2 (en) * 2000-12-20 2011-03-22 National Instruments Corporation System and method for performing type checking for hardware device nodes in a graphical program
US20020082722A1 (en) * 2000-12-22 2002-06-27 Rosenberg Jens Ansgar Addon mechanism for a control system based on an extension data field
US7080353B2 (en) * 2000-12-22 2006-07-18 Siemens Aktiengesellschaft Addon mechanism for a control system based on a type data field
US7761270B2 (en) * 2000-12-29 2010-07-20 Exxonmobil Upstream Research Co. Computer system and method having a facility management logic architecture
US7277836B2 (en) * 2000-12-29 2007-10-02 Exxonmobil Upstream Research Company Computer system and method having a facility network architecture
US7904358B2 (en) * 2001-02-28 2011-03-08 Goldman Sachs & Co. Computerized interface for monitoring financial information and executing financial transactions
DE10110208A1 (en) * 2001-03-02 2002-09-19 Siemens Production & Logistics Method for specifying, executing and analyzing processes in recognition
US7313761B1 (en) 2001-03-13 2007-12-25 Cognex Technology And Investment Corporation Tree-style hierarchical control with graphical depiction of non-hierarchical interrelationships
US7010744B1 (en) * 2001-05-14 2006-03-07 The Mathworks, Inc. System and method of navigating and creating electronic hierarchical documents
US7103843B2 (en) * 2001-05-25 2006-09-05 International Business Machines Corporation Method and apparatus for visualizing metrics in a data space
US6859683B2 (en) 2001-06-04 2005-02-22 Futaba Corporation Of America Integrated robotic cell
US20020196282A1 (en) * 2001-06-20 2002-12-26 Washington Jeffrey D. Collector node for a graphical program
US7058899B2 (en) * 2001-06-20 2006-06-06 National Instruments Corporation System and method for creating a graphical program based on a pre-defined program process
US7337430B2 (en) * 2001-07-20 2008-02-26 The Mathworks, Inc. Optimized look-up table calculations in block diagram software
US7613716B2 (en) * 2001-07-20 2009-11-03 The Mathworks, Inc. Partitioning for model-based design
US6876368B2 (en) * 2001-08-14 2005-04-05 National Instruments Corporation System and method for deploying a graphical program to a PDA device
US7010779B2 (en) * 2001-08-16 2006-03-07 Knowledge Dynamics, Inc. Parser, code generator, and data calculation and transformation engine for spreadsheet calculations
DE10150141A1 (en) * 2001-10-11 2003-04-24 Siemens Ag Device for acquisition and representation of movements, e.g. for use in capture of handwriting or sketches drawn on a plasma type display, and also for use as a conventional mouse type device with single hand operation
US7134086B2 (en) * 2001-10-23 2006-11-07 National Instruments Corporation System and method for associating a block diagram with a user interface element
US8104017B2 (en) * 2001-10-25 2012-01-24 The Mathworks, Inc. Traceability in a modeling environment
US7849394B2 (en) 2001-10-25 2010-12-07 The Math Works, Inc. Linked code generation report
US20030125662A1 (en) 2002-01-03 2003-07-03 Tuan Bui Method and apparatus for providing medical treatment therapy based on calculated demand
US8504179B2 (en) * 2002-02-28 2013-08-06 Smiths Medical Asd, Inc. Programmable medical infusion pump
US8250483B2 (en) * 2002-02-28 2012-08-21 Smiths Medical Asd, Inc. Programmable medical infusion pump displaying a banner
JP3990944B2 (en) * 2002-06-28 2007-10-17 株式会社日立ハイテクノロジーズ Automatic analyzer
US7340737B2 (en) * 2002-07-03 2008-03-04 National Instruments Corporation Wireless deployment / distributed execution of graphical programs to smart sensors
US7356774B2 (en) * 2002-08-13 2008-04-08 National Instruments Corporation Grouping components of a measurement system
US7484200B2 (en) * 2002-08-14 2009-01-27 National Instruments Corporation Automatically analyzing and modifying a graphical program
US20040150667A1 (en) * 2003-01-30 2004-08-05 Dove Andrew Philip Performing wireless communication in a graphical program
US7478016B2 (en) * 2003-04-16 2009-01-13 The Mathworks, Inc. Block modeling input/output buffer
US20040225800A1 (en) * 2003-05-06 2004-11-11 Alan Lin Wireless network card connectable with SIM card
US20040268320A1 (en) * 2003-06-13 2004-12-30 Camille Huin Graphical computer programming for a digital signal processor
US20040268300A1 (en) * 2003-06-13 2004-12-30 Camille Huin Graphical computer programming
US20040264704A1 (en) * 2003-06-13 2004-12-30 Camille Huin Graphical user interface for determining speaker spatialization parameters
US7827526B2 (en) * 2003-06-13 2010-11-02 Analog Devices, Inc. Stacking and repeating graphical controls
US7703034B2 (en) * 2003-08-07 2010-04-20 National Instruments Corporation Visualization tool for viewing timing information for a graphical program
DE10339764A1 (en) * 2003-08-27 2005-03-17 Siemens Ag Method for the graphical configuration of the control of a technical system with integrated configuration of operating devices, including a project planning system and a computer program product
US7570443B2 (en) 2003-09-19 2009-08-04 Applied Biosystems, Llc Optical camera alignment
US20050262451A1 (en) * 2003-10-09 2005-11-24 Jesse Remignanti Graphical user interface for changing parameters
US8683426B2 (en) 2005-06-28 2014-03-25 The Mathworks, Inc. Systems and methods for modeling execution behavior
US8793602B2 (en) 2004-01-15 2014-07-29 The Mathworks, Inc. System and method for scheduling the execution of model components using model events
US20080109785A1 (en) * 2004-01-16 2008-05-08 Bailey Bendrix L Graphical Program Having Graphical and/or Textual Specification of Event Handler Procedures for Program Objects
US8954336B2 (en) * 2004-02-23 2015-02-10 Smiths Medical Asd, Inc. Server for medical device
US7992093B2 (en) * 2004-02-25 2011-08-02 Beptech Inc. Method of programming a processing system
US7552024B2 (en) * 2004-03-08 2009-06-23 Kelbon Richard G Circuit board diagnostic operating center
US7861177B2 (en) * 2004-04-21 2010-12-28 Sap Aktiengesellschaft Software configuration program for software applications
JP2007536634A (en) 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド Service-oriented architecture for process control systems
US7836426B2 (en) * 2004-05-06 2010-11-16 National Instruments Corporation Automatic generation of application domain specific graphical programs
US7799273B2 (en) * 2004-05-06 2010-09-21 Smp Logic Systems Llc Manufacturing execution system for validation, quality and risk assessment and monitoring of pharmaceutical manufacturing processes
US20050268173A1 (en) * 2004-05-11 2005-12-01 National Instruments Corporation Programmatically analyzing a graphical program by traversing objects in the graphical program
US8397214B2 (en) * 2004-05-14 2013-03-12 National Instruments Corporation Generating a hardware description for a programmable hardware element based on a graphical program including multiple physical domains
US8453111B2 (en) 2004-05-14 2013-05-28 National Instruments Corporation Generating a hardware description for a programmable hardware element based on a graphical program including multiple models of computation
US7565609B2 (en) * 2004-07-16 2009-07-21 National Instruments Corporation Synchronizing execution of graphical programs executing on different computer systems
US7761847B2 (en) * 2004-07-16 2010-07-20 National Instruments Corporation Timed sequence for a graphical program
US7831680B2 (en) * 2004-07-16 2010-11-09 National Instruments Corporation Deterministic communication between graphical programs executing on different computer systems
US7797674B1 (en) * 2004-12-28 2010-09-14 The Mathworks, Inc. Independent component-wide parameter specification for graphical languages
US7622079B2 (en) * 2005-03-22 2009-11-24 Applied Biosystems, Llc Dual nest microplate spotter
US20070006145A1 (en) * 2005-05-04 2007-01-04 Hill Russell K Iterative operator in a graphical programming language
WO2006121764A2 (en) * 2005-05-06 2006-11-16 Applera Corporation Multiple capillary device and method for synthesis and dispensing
US7761846B2 (en) * 2005-08-16 2010-07-20 National Instruments Corporation Graphical programming methods for generation, control and routing of digital pulses
US8131529B2 (en) * 2005-09-01 2012-03-06 Advanced Testing Technologies Inc. Method and system for simulating test instruments and instrument functions
KR100678967B1 (en) * 2006-01-25 2007-02-06 삼성전자주식회사 Apparatus and method for providing relationship according to user on the basis of sharing information
US7689582B2 (en) * 2006-03-10 2010-03-30 International Business Machines Corporation Data flow system and method for heterogeneous data integration environments
US9361137B2 (en) * 2006-03-10 2016-06-07 International Business Machines Corporation Managing application parameters based on parameter types
US9727604B2 (en) * 2006-03-10 2017-08-08 International Business Machines Corporation Generating code for an integrated data system
US7689576B2 (en) * 2006-03-10 2010-03-30 International Business Machines Corporation Dilation of sub-flow operators in a data flow
US7562340B2 (en) * 2006-03-23 2009-07-14 International Business Machines Corporation Method for graphically building business rule conditions
US20070258862A1 (en) * 2006-05-02 2007-11-08 Applera Corporation Variable volume dispenser and method
US7954059B2 (en) * 2006-07-24 2011-05-31 National Instruments Corporation Automatic conversion of text-based code having function overloading and dynamic types into a graphical program for compiled execution
US7975233B2 (en) * 2006-07-24 2011-07-05 National Instruments Corporation Automatic conversion of a textual language into a graphical program representation
US8965707B2 (en) 2006-08-03 2015-02-24 Smiths Medical Asd, Inc. Interface for medical infusion pump
US8435206B2 (en) * 2006-08-03 2013-05-07 Smiths Medical Asd, Inc. Interface for medical infusion pump
US20080126969A1 (en) * 2006-08-03 2008-05-29 Blomquist Michael L Interface for medical infusion pump
US8149131B2 (en) 2006-08-03 2012-04-03 Smiths Medical Asd, Inc. Interface for medical infusion pump
US8858526B2 (en) * 2006-08-03 2014-10-14 Smiths Medical Asd, Inc. Interface for medical infusion pump
US8108784B2 (en) * 2006-08-04 2012-01-31 National Instruments Corporation Configuring icons to represent data transfer functionality
US20080126956A1 (en) 2006-08-04 2008-05-29 Kodosky Jeffrey L Asynchronous Wires for Graphical Programming
US8028241B2 (en) * 2006-08-04 2011-09-27 National Instruments Corporation Graphical diagram wires whose appearance represents configured semantics
US8028242B2 (en) * 2006-08-04 2011-09-27 National Instruments Corporation Diagram with configurable wires
US7668608B2 (en) * 2006-09-01 2010-02-23 Fisher-Rosemount Systems, Inc. Graphical programming language object editing and reporting tool
DE102006044141A1 (en) * 2006-09-15 2008-04-03 Dspace Digital Signal Processing And Control Engineering Gmbh Device and method for configuring a control system
US8099725B2 (en) * 2006-10-11 2012-01-17 International Business Machines Corporation Method and apparatus for generating code for an extract, transform, and load (ETL) data flow
US8160999B2 (en) * 2006-12-13 2012-04-17 International Business Machines Corporation Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation
US8219518B2 (en) 2007-01-09 2012-07-10 International Business Machines Corporation Method and apparatus for modelling data exchange in a data flow of an extract, transform, and load (ETL) process
US8640100B2 (en) * 2007-04-20 2014-01-28 National Instruments Corporation Debugging a statechart using a graphical program
US8271943B2 (en) * 2007-04-24 2012-09-18 National Instruments Corporation Automatically generating a graphical program with a plurality of models of computation
US8249845B1 (en) 2007-05-03 2012-08-21 Advanced Testing Technologies, Inc. Electro-mechanical system simulator arrangement and method
US7996782B2 (en) * 2007-06-08 2011-08-09 National Instruments Corporation Data transfer indicator icon in a diagram
US9311111B2 (en) * 2007-07-12 2016-04-12 The Mathworks, Inc. Programming environment with support for handle and non-handle user-created classes
US20090019429A1 (en) * 2007-07-14 2009-01-15 Andreas Randow Virtualization of data source components in subject-oriented graphical programming environments for test and measurement applications
US8782618B1 (en) 2008-01-08 2014-07-15 The Mathworks, Inc. Instrument based processing
US8458667B2 (en) * 2008-01-30 2013-06-04 National Instruments Corporation Debugging a statechart for a real time target
US8078980B2 (en) * 2008-03-20 2011-12-13 National Instruments Corporation User defined wire appearance indicating communication functionality in a graphical programming environment
US8074177B2 (en) * 2008-03-20 2011-12-06 National Instruments Corporation User defined wire appearance indicating data type in a graphical programming environment
US8133197B2 (en) 2008-05-02 2012-03-13 Smiths Medical Asd, Inc. Display for pump
US8589886B2 (en) 2008-07-07 2013-11-19 Qualisystems Ltd. System and method for automatic hardware and software sequencing of computer-aided design (CAD) functionality testing
US8291390B2 (en) * 2008-07-30 2012-10-16 National Instruments Corporation Testing a graphical program intended for a programmable hardware element
US8832579B2 (en) * 2008-08-12 2014-09-09 Rockwell Automation Technologies, Inc. System for creation and management of industrial automation and information solutions and services
WO2010093933A1 (en) * 2009-02-13 2010-08-19 Ab Initio Technology Llc Communicating with data storage systems
US8423981B2 (en) * 2009-06-18 2013-04-16 National Instruments Corporation Compiling a graphical program having a textual language program portion for a real time target
US8756539B2 (en) * 2009-07-31 2014-06-17 National Instruments Corporation NetList maintenance in a circuit diagram
DE102009035751A1 (en) * 2009-08-03 2011-02-10 Anetseder, Leo Philip, Dipl.-Ing. Specification method for the generation of data processing systems
US8458653B2 (en) * 2009-09-29 2013-06-04 National Instruments Corporation Debugging a graphical program deployed on a programmable hardware element
US10845962B2 (en) * 2009-12-14 2020-11-24 Ab Initio Technology Llc Specifying user interface elements
US20120047467A1 (en) * 2010-08-17 2012-02-23 International Business Machines Corporation Port compatibilty checking for stream processing
KR101685529B1 (en) * 2010-08-20 2016-12-12 삼성전자주식회사 Method for configurating screen, user device, and storage medium thereof
US8661424B2 (en) 2010-09-02 2014-02-25 Honeywell International Inc. Auto-generation of concurrent code for multi-core applications
US8612637B2 (en) 2011-09-25 2013-12-17 National Instruments Corportion Configuring buffers with timing information
US9058205B2 (en) 2011-10-24 2015-06-16 Symantec Corporation Automatically performing operations on applications based on dependencies on other applications
CA3111631C (en) 2013-01-28 2022-12-13 Smiths Medical Asd, Inc. Medication safety devices and methods
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
JP6062281B2 (en) * 2013-02-21 2017-01-18 アラオ株式会社 Concrete stopper
US9665088B2 (en) 2014-01-31 2017-05-30 Fisher-Rosemount Systems, Inc. Managing big data in process control systems
US10649424B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US9558220B2 (en) 2013-03-04 2017-01-31 Fisher-Rosemount Systems, Inc. Big data in process control systems
US10909137B2 (en) 2014-10-06 2021-02-02 Fisher-Rosemount Systems, Inc. Streaming data for analytics in process control systems
US10223327B2 (en) 2013-03-14 2019-03-05 Fisher-Rosemount Systems, Inc. Collecting and delivering data to a big data machine in a process control system
US10678225B2 (en) 2013-03-04 2020-06-09 Fisher-Rosemount Systems, Inc. Data analytic services for distributed industrial performance monitoring
US10866952B2 (en) 2013-03-04 2020-12-15 Fisher-Rosemount Systems, Inc. Source-independent queries in distributed industrial system
US10649449B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US10282676B2 (en) 2014-10-06 2019-05-07 Fisher-Rosemount Systems, Inc. Automatic signal processing-based learning in a process plant
US10386827B2 (en) 2013-03-04 2019-08-20 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics platform
EP2973242B1 (en) 2013-03-15 2020-12-23 Fisher-Rosemount Systems, Inc. Modelling and adjustment of process plants
US10671028B2 (en) 2013-03-15 2020-06-02 Fisher-Rosemount Systems, Inc. Method and apparatus for managing a work flow in a process plant
US20140337774A1 (en) * 2013-05-08 2014-11-13 Adobe Systems Incorporated Proxy for Sorting and Navigating Cards
US20140359590A1 (en) 2013-05-30 2014-12-04 National Instruments Corporation Development and Deployment of Parallel Floating-Point Math Functionality on a System with Heterogeneous Hardware Components
EP2827240A1 (en) * 2013-07-17 2015-01-21 ABB Technology AG Method for generating control-code by a control-code-diagram
USD747344S1 (en) 2013-08-02 2016-01-12 Apple Inc. Display screen with graphical user interface
US10168691B2 (en) 2014-10-06 2019-01-01 Fisher-Rosemount Systems, Inc. Data pipeline for process control system analytics
US9652213B2 (en) 2014-10-23 2017-05-16 National Instruments Corporation Global optimization and verification of cyber-physical systems using floating point math functionality on a system with heterogeneous hardware components
US11762542B2 (en) * 2014-12-19 2023-09-19 Rockwell Automation Technologies, Inc. Industrial automation visualization dashboard creation paradigm
USD775185S1 (en) 2015-03-06 2016-12-27 Apple Inc. Display screen or portion thereof with graphical user interface
US10503483B2 (en) 2016-02-12 2019-12-10 Fisher-Rosemount Systems, Inc. Rule builder in a process control network
DE102016208382A1 (en) * 2016-05-17 2017-11-23 BSH Hausgeräte GmbH System for implementing a process engineering process on a domestic appliance
US11853690B1 (en) 2016-05-31 2023-12-26 The Mathworks, Inc. Systems and methods for highlighting graphical models
USD790575S1 (en) 2016-06-12 2017-06-27 Apple Inc. Display screen or portion thereof with graphical user interface
USD837260S1 (en) * 2017-02-22 2019-01-01 Samsung Electronics Co., Ltd. Display screen or portion thereof with icons
RU2681408C2 (en) * 2017-08-22 2019-03-06 Александр Павлович Соколов Method and system of graphical oriented creation of scalable and supported software realizations of complex computational methods
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
USD877174S1 (en) 2018-06-03 2020-03-03 Apple Inc. Electronic device with graphical user interface
JP2021099697A (en) * 2019-12-23 2021-07-01 富士フイルムビジネスイノベーション株式会社 Information processing device and computer program
USD942509S1 (en) 2020-06-19 2022-02-01 Apple Inc. Display screen or portion thereof with graphical user interface

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4315315A (en) * 1971-03-09 1982-02-09 The Johns Hopkins University Graphical automatic programming
US4064394A (en) * 1975-05-28 1977-12-20 American Chain & Cable Company, Inc. Electronic digital process controller having simulated analog control functions
JPS56168263A (en) * 1980-05-30 1981-12-24 Hitachi Ltd Program making device
US4546435A (en) * 1980-06-24 1985-10-08 Herbert Frank P Graphic computer system and keyboard
WO1985002033A1 (en) * 1983-11-03 1985-05-09 Prime Computer, Inc. Digital system simulation method and apparatus
US4656603A (en) * 1984-03-01 1987-04-07 The Cadware Group, Ltd. Schematic diagram generating system using library of general purpose interactively selectable graphic primitives to create special applications icons
US4813013A (en) * 1984-03-01 1989-03-14 The Cadware Group, Ltd. Schematic diagram generating system using library of general purpose interactively selectable graphic primitives to create special applications icons
US4663704A (en) * 1984-12-03 1987-05-05 Westinghouse Electric Corp. Universal process control device and method for developing a process control loop program
US4725970A (en) * 1985-02-05 1988-02-16 Sanders Associates, Inc. Simulation device
US4677587A (en) * 1985-05-14 1987-06-30 Sanders Associates, Inc. Program simulation system including means for ensuring interactive enforcement of constraints

Also Published As

Publication number Publication date
ATE120570T1 (en) 1995-04-15
JPS63184104A (en) 1988-07-29
US4901221A (en) 1990-02-13
EP0242131A2 (en) 1987-10-21
EP0242131A3 (en) 1991-07-31
DE3751192T2 (en) 1995-10-05
ES2072849T3 (en) 1995-08-01
DE3751192D1 (en) 1995-05-04
EP0242131B1 (en) 1995-03-29
JP3016783B2 (en) 2000-03-06

Similar Documents

Publication Publication Date Title
CA1285655C (en) Graphical system for modelling a process and associated method
US5291587A (en) Graphical system for executing a process and for programming a computer to execute a process, including graphical variable inputs and variable outputs
US4914568A (en) Graphical system for modelling a process and associated method
US5610828A (en) Graphical system for modelling a process and associated method
US5652909A (en) Method and apparatus for providing autoprobe features in a graphical data flow diagram
US5481741A (en) Method and apparatus for providing attribute nodes in a graphical data flow environment
US5475851A (en) Method and apparatus for improved local and global variable capabilities in a graphical data flow program
US5734863A (en) Method and apparatus for providing improved type compatibility and data structure organization in a graphical data flow diagram
US5497500A (en) Method and apparatus for more efficient function synchronization in a data flow program
US5504917A (en) Method and apparatus for providing picture generation and control features in a graphical data flow environment
US5821934A (en) Method and apparatus for providing stricter data type capabilities in a graphical data flow diagram
US5737622A (en) Method and apparatus for more efficient function synchronization in a data flow program
US7340684B2 (en) System and method for programmatically generating a second graphical program based on a first graphical program
US7043693B2 (en) System and method for programmatically generating a second graphical program based on a first graphical program
US4868785A (en) Block diagram editor system and method for controlling electronic instruments
US5155836A (en) Block diagram system and method for controlling electronic instruments with simulated graphic display
US6880130B2 (en) Specifying timing and triggering functionality in a graphical program using graphical program nodes
KR101169702B1 (en) Method of programming a processing system
US8146007B2 (en) Converting a first graphical program into an intermediate abstract representation for new graphical program generation
US8539367B2 (en) Automatic re-positioning of graphical program nodes during node placement or node movement
US8539505B2 (en) Automatically arranging objects in a selected portion of a graphical program block diagram
Koskimies et al. SCED: A tool for dynamic modelling of object systems
Korhonen et al. Matrix: concept animation and algorithm simulation system
US8533738B2 (en) Excluding a portion of a graphical program from re-arrangement
US8533739B2 (en) Re-arranging a graphical program while keeping contents of a structure object fixed

Legal Events

Date Code Title Description
MKEX Expiry
MKEX Expiry

Effective date: 20080702