(PICTURE)(PICTURE) (PICTURE)Europäi _hes Patentamt
_ (PICTURE) EuroPean Patent offi_e
(PICTURE) Offi_e euroPeen des brevets _ PubIication number . O 242 131 B1
_ EUROPEA_ PATE_T SPECIFICATlO_
_ Date oF pubI_i_t_ion oF patent spec_ircat_ion .. _ _nt. __.6 .. _O6F 9J44, _O6F __/5O,
29.O3.9_ BUlletin 9_l_3 _o6F 3/o33, _o6F 3/o_3
_ AppIication number . 8_3o3_22.3
_ Date oF FiIing . oa.o4.8_
(PICTURE)
(PICTURE)_ Graphi_al system ror modelling a pro_ess and asso_iated method.
_ Note . Within nine months from the publication of the mention of the grant of the European patent, any
penon may give notice to the European Patent Office of opposition to the European patent granted.
_ Notice of opposition shall be fled in a written reasoned statement. It shall not be deemed to have been
W rIed untiI the opposition Fee has been paid (A_. 99(1) European patent convention).
(PICTURE)Jouve, 18, rue Saint-Denis, 75OO1 PARIS
EP O 242 _3_ B_
Des_ription
(PICTURE)BACKGROUND OF THE INVENTlON
5 (PICTURE)1 . Field of the Invention
The present invention relates to systems for modeling processes and more particularly to computer sys-
tems for modeling processes.
1o 2(PICTURE). Description of the Related Art
Currently there is a strong movement toward very high level programming languages which can enhance
programmer productivity by making a programming task more understandable and intuitive. The increasing
use of computers by users who are not highly trained in computer programming techniques has lead to a sit-
15 uation in which the user's programming skills and ability to interact with a computer system often become a
limiting factor in the achievement of optimal utilization of the computer system.
There are numerous subtle complexities which a useroften must master before she can efficiently program
a computer system. For example, typical earlier computer systems generally comprise software subsystems
which include multiple programs, and such programs often utilize one or more subroutines. Software systems
2o typically coordinate activity between multiple programs, and each program typically coordinates activity be-
tween multiple subroutines. However, techniques forcoordinating multiple programs generally differfrom tech-
niques for coordinating multiple subroutines. Furthermore, since programs ordinarily can stand alone while
subroutines usally cannot, techniques for linking programs to a software system generally differ from techni-
ques for linking subroutines to a program. Complexities such as these often make it diffcult for a user, who
25 although she may be a specialist in her field is not a specialist in the computer field, to efficiently make use
of powerful computer systems which are available for her use.
The task of programming a computer system to model a process often is further complicated by the fact
that a sequence of mathematical formulas, mathematical steps or other procedures customarily used to con-
ceptually model such a process often does not closely correspond to the traditional programming techniques
3o used to program a computer system to model such a process. For example, a user of a computer system fre-
quently develops a conceptual model for a physical system which can be partitioned into functional blocks,
each of which corresponds to actual systems or subsystems. Computer systems, however, ordinarily do not
actually compute in accordance with such conceptualized functional blocks. Instead, they often utilize calls
to various subroutines and retrievals ofdata from different memory storage locations to implement a procedure
35 which could be conceptualized by a user in terms of a functional block. Thus, a user often must substantially
master different skills in order to both conceptually model a system and then to cause a computer system to
model that system. Since a user often is not fully proficient in techniques for causing a computer system to
implement her model, the efficiency with which the computer system can be utilized to perform such modelling
often is reduced.
4O One particular field in which computer systems are employed to model physical systems is the field of in-
strumentation. An instrument typically collects information from an environment. Some of the types of infor-
mation which might be collected by respective instruments, for example, include. voltage, distance, velocity,
pressure, frequency of oscillation, humidity or temperature. An instrumentation system ordinarily controls its
constituent instruments from which it acquires data which it analyzes, stores and presents to a user of the
45 system. Computer control of instrumentation has become increasingly desirable in view ofthe increasing com-
plexity and variety of instruments available for use.
In recent years, increasing effort has been directed toward providing more efficient means for implement-
ing instrumentation systems. The task has been complicated by the fact that such systems include arbitrary
combinations of hardware instruments and software components. The need for more efficient means of im-
5O plementation has been prompted by increasing demands for automated instrumentation systems and an in-
creasing variety of hardware and software combinations in use.
In the past, many instrumentation systems comprised individual instruments physically interconnected.
Each instrument typically included a physical front panel with its own peculiarcombination of indicators, knobs,
or switches. A user generally had to understand and manipulate individual controls for each instrument and
55 record readings from an array of indicators. Acquisition and analysis of data in such instrumentation systems
was tedious and error prone. An incremental improvement in user interface was made with the introduction of
centralized control panels. In these improved systems, individual instruments were wired to a control panel
and the individual knobs, indicators or switches of each front panel were either preset or were selected to be
2
EP O 242 _3_ B_
presented on a common front panel.
Another significant advance occurred with the introduction of computers to provide more flexible means
for interfacing instruments with a user. In such computerized instrumentation systems the user interacted with
a software program of the computer system through a terminal rather than through a manually operated front
5 panel. These earlier improved instrumentation systems provided significant performance efficiencies over
earlier systems for linking and controlling test instruments.
Additional problems soon developed, however. Computer programs used to control such improved instru-
mentation systems had to be written in conventional textual programming language such as, for example, ma-
chine code, FORTRAN, BASIC, Pascal, or ATLAS. Traditional users of instrumentation systems, however, of-
1o ten were not highly trained in programming techniques and, therefore, implementation of such systems fre-
quently required the involvement of a programmer to write software for control and analysis of instrumention
data. Thus, development and maintenance of the software elements in these instrumentation systems often
proved to be difficult.
Some reasons for the difficulties associated with earlier computerized instrumentation systems included,
15 for example. (1) textual programming languages were non-intuitive and unfamiliar to the instrumentation sys-
tem user; (2) traditional programming languages did not readily support the parallel activity of multiple individ-
ual instruments; (3) concepts embodied in a computer program often were significantly different from con-
cepts embodied in an instrumentation system's instrument hardware; (4) computer program software modules
often did not match an instrumentation system's hardware modularity making interchangeability of software
2o and hardware difficult; and (5) techniques for designing, constructing, and modifying computer software were
significantly different from corresponding techniques for developing an instrument hardware system.
A computer based test system is disclosed in Electronics Design, Vol. 34, No. 8, 3 April 1 986, pp 149-1 52,
1 54, 1 56, New York, USA, which provides a common hardware interface between instrument modules, and a
common programming environment through windowing software using an expanded version of Basic. A test
25 engineer specifies textually detailed steps of an operation in a first window, then uses a graphical represen-
tation ofan instrument function in anotherwindow to produce code to drive the equipment to perform a desired
step, and imports the code into the specification by indicating the step in the first window to which it should
be assigned.
A general type of program design technique involves data flow diagramming. Data flow diagramming typ-
3o ically involves an ordering of operations which is not specifically specified by a user but which is implied by
data interdependencies. An advantage ofdata flowdiagramming is that it introduces parallelism into a computer
system which, ofcourse, usually increases the speed and efficiency ofthe system. However as a design tech-
nique, data flow diagramming has had difficulty representing conditional or iterative functions. Thus, designing
using data flow techniques has been difficult.
35 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 parallels 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 diffi-
culties in representing condition and iterative functions as did the diagram form of data flow.
Thus, there exists a need for a system which can be relatively easily programmed for use in modelling a
4O process. Furthermore, there exists a need for an instrumentation system utilizing such a system. There exists
a need for such a system 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
such a system which represents data flow graphically rather than textually.
45 (PICTURE)SU__ARy OF THE lNVENTlON
The present invention as claimed provides a method for modelling a physical process. A process typically
can be characterized by one or more input variables and one or more output variables. The system includes a
computer. It also includes an editor for displaying at least one diagram and for constructing execution instruc-
5O tions. 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.
55 These and other features and advantages of the present invention will become more apparent from the
following detailed description ofexemplary embodiments thereof, as illustrated in the accompanying drawings.
3
EP O 242 _3_ B_
(PICTURE)BRIEF DESCRIPTlON 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.
5 Fig. 1 shows a block diagram of a first system for modelling a process in accordance with the present in-
vention;
Fig. 2 shows a block diagram of a second system including the first system of Fig. 1 ;
Fig. 3 is an illustrative drawing ofa representation ofa virtual instrument produced using the second sys-
tem of Fig. 2;
1o Fig. 4 shows a block diagram of an instrumentation system including the second system of Fig. 2;
Fig. 5 shows an illustrative front panel produced using the front panel editorofthe instrumentation system
of Fig. 4;
Fig. 6 shows an illustrative icon produced using the icon editor of the instrumentation system of Fig. 4;
Fig. 7 shows an illustrative representation of an icon library which can be stored in a memory and used
15 to construct a block diagram using the block diagram editor of the instrumentation system of Fig. 4;
Fig. 8 shows a graphical representation of a sequence structure;
Fig. 9 shows a graphical representation of an iterative loop structure;
Fig. 1 O shows a graphical representation of a conditional structure;
Fig. 11 shows a graphical representation of an indefinite loop structure;
2o Fig. 12 shows graphical representations ofshift registers on the respective iterative loop structure of Fig.
9 and indefinite loop structure of Fig. 11 ;
Fig. 1 3 shows an illustrative block diagram generally corresponding to the graphical representation of a
sequence structure shown in Fig. 8;
Fig. 14 shows an illustrative block diagram generally corresponding to the graphical representation of an
25 iterative loop structure show in Fig. 9;
Fig. 1 5 shows an illustrative block diagram generally corresponding to the graphical representation of a
conditional structure shown in Fig. 1 O;
Fig. 16 shows an illustrative block diagram generally corresponding to the graphical representation of an
indefinite loop structure shown in Fig. 11 ;
3o Fig. 17 shows an illustrative block diagram generally corresponding to the graphical representation of an
iterative loop structure including a shift register shown on the left in Fig. 12;
Fig. 18 shows a block diagram representing an exemplary data flow system;
Fig. 19a illustrates avirtual instrumentdata structure diagram used bythefirstsystem of Fig. 1 , the second
system of Fig. 2 and the instrumentation system of Fig. 4;
35 Fig. 19b shows a legend applicable to the illustration of Fig. 19a;
Figs. 2Oa-l illustrate computer terminal displays during each successive step in a construction of an ex-
emplary block diagram using the block diagram editor of Figs. 2 or 4;
Fig. 21 is a drawing of an illustrative hardware instrumentation system of the present invention;
Fig. 22 is a drawing representing a block diagram according to the present invention as displayed on a
4O computer console to model the illustrative hardware system of Fig. 21 .
Fig. 23a shows the PROTO icon;
Fig. 23b illustrates the startup screen with empty front panel window;
Fig. 24 illustrates the FILE menu (ltems in clearsurrounds can be used and stippled items do not yetwork);
Fig. 25 illustrates the EDIT menu;
45 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. 3O shows the GRAPHICAL dialog box;
5O Fig. 31 illustrates an OPEN DIAGRAM selection from the FILE menu ofthe active front panel window pens
and makes active a block diagram window;
Fig. 32 illustrates employ, active Block-Diagram window created by choosing OPEN DIAGRAM from the
FILE menu.
Fig. 33 illustrates FUNCTlON menu from Block-Diagram window;
55 Fig. 24 shows a graphical representation of a sequence structure;
Fig. 35 shows a graphical representation of a for loop structure;
Fig. 36 shows a graphical representation of a case selection structure;
Fig. 37 shows a graphical presentation of an indefinite loop structure;
4
EP O 242 _3_ B_
Fig. 38 shows a graphical representation of a shift register in loop;
Fig. 39 illustrates a dialog box obtained by choosing SPECIAL from the FUNCTlONS menu;
Fig. 4O illustrates a ''fo_' loop structure layed down in the active block diagram window by selecting a glyph
from the dialog box shown in Fig. 39;
5 Fig. 41 illustrates selection regions on structure glyphs (Moving dashded box encircles a glyph when it is
selected);
Fig. 42 illustrates that the the left side shows the proper position for placement of the grabber tool for re-
sizing the structure glyph (Click-dragging produces the result shown in the right side ofthe figure. Release
the mouse button and the enlarged structure will remain in place);
1o Fig. 43 shows two enlarged ''for'' loop structures rearranged for the Fibonacci instrument;
Fig. 44 shows the dialog box obtained by choosing ARITHMETIC from the FUNCTlON menu.
Fig. 45 shows a block diagram window after addition function was chosen from dialog box show in Fig.
44;
Fig. 46 shows a block diagram window with addition and multiplication functions placed inside loop struc-
15 tures_,
Fig. 47 shows a dialog box obtained by choosing CURVE FIT from the FUNCTlONS menu.
Fig. 48 shows a block diagram window with CURVE-FIT object in place;
Fig. 49 illustrates loop structure with shift register installed;
Fig. 5O is an illustration of the final positions of constant objects alongside the inputs to the shift register;
2o Fig. 51 shows a pointer control in the front panel window obtained from the dialog box displayed by choos-
ing the NUMERIC option from the CONTROLS menu;
Fig. 52 shows the front panel window with one pointer control and two indicator controls;
Fig. 53 shows the front panel window with graphical display repositioned to the upper right-hand corner
of the window;
25 Fig. 54 shows the block diagram for the Fibonacci instrument with components in position ready forwiring.
Fig. 55 illustrates thata connection is established between the slide-pointer control and the iteration vari-
able box of the loop structure using the wiring tool;
Fig. 56 illustrates ''hot spots'' for available functions;
Fig. 57 is an illustration of the wired Fibonacci virtual instrument block diagram;
3o Fig. 58 is an illustration of examples of data types and their block diagrams representations;
Fig. 59 is an illustration ofthe ICON EDITOR dialog box obtained by selecting the ICON EDIT PANE option
from the FORMAT menu in the front panel window;
Fig. 6O is an illustration of the icon editor following selection of the ICON button;
Fig. 61 is a drawing in the icon editor;
35 Fig. 62 is an illustration displaying the instrument icon in the front panel window;
Fig. 63 shows a terminal connector pane displayed in the upper left-had corner of the active window by
choosing CONNECTOR PANE option from the FORMAT menu;
Fig. 64 is an illustration of available arrangements of connector terminals;
Fig. 65a is an illustration of the front panel window with selected terminal in connector pane;
4O Fig. 65b is an illustration of the highlighted terminal and control to be connected;
Fig. 65c is an illustration of the connection between the established terminal and control;
Fig. 66 is an illustration of the dialog box warning of consequences of clearing associations between con-
trols and terminals;
Fig. 67 (left) is an illustration of the virtual instrument to invert value set by control and display result on
45 indicator_,
Fig. 68 (right) is an illustration of a diagram for a reciprocal virtual instrument;
Fig. 69 is an illustration of an icon for the reciprocal instrument;
Fig. 7O 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;
5O Fig. 72 is an illustration of an user-created reciprocal virtual instrument icon dropped into block-diagram
window;
Fig. 73 is an illustration of an icon for user-created invert-and-add instrument;
Fig. 74 is an example solution for adding two resistances in parallel using two low-level, user-created vir-
tual instruments in a hierarchical virtual instrument; and
55 Fig. 75 is an illustration of an dialog box from INSTRUMENTS option in the FUNCTlONS menu displaying
two user-created virtual instruments. _
EP O 242 _3_ B_
(PICTURE)DESCRIPTlON OF THE PREFERRED EMBODIMENTS
The present invention comprises a novel method for modelling a process. The following description is pre-
sented to enable any person skilled in the art to make and use the invention, and is provided in the context of
5 particular applications and their requirements.
Referring to the drawing of Fig. 1 , there is shown a generalized block diagram 2O of a first system for mod-
elling a process in accordance with the present invention. The first system 2O includes a block diagram editor
22, an execution subsystem 24 and a control processor 26. In the preferred embodiment, the block diagram
editor 22 and the execution subsystem 24 are constructed in software.
1o 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 a value for an input variable
can produce a value for an output variable. The procedure together with the input variable and output variable
comprise a model of a process. Furthermore, the block diagram editor 22 constructs execution instructions
which characterize an execution procedure which substantially corresponds to the displayed procedure. The
15 execution subsystem 24 assigns at least one value to the inputvariable and executes the execution instructions
to produce a value for the output variable. The control processor 26 implements the block diagram editor 22
and the execution subsystem 24 of the preferred embodiment.
The illustrative drawing of Fig. 2 shows a second system 28 for modelling a process in accordance with
the present invention. The second system 28 includes a respective block diagram editor 3O, and an execution
2o subsystem 32 which are substantially identical to the block diagram editor 22 and the execution subsystem 24
of the first system 2O. The second system 28 also includes an icon editor 34 and a front panel editor 36. The
second system 28 also includes a control processor 38 which is substantially identical to that ofthe first system
2O. The second system 28 permits a user to construct a virtual instrument 4O such as that represented in gen-
25 eralized form in the illustrative drawings of Fig. 3. The virtual instrument 4O includes a front panel 42 which
permits interactive use of the virtual instrument 4O 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 4O. The
virtual instrument 4O also includes an icon 44 which permits use of the virtual instrument 4O as a subunit in
othervirtual instruments (not shown). The virtual instrument 4O also includes a block diagram 46 which graph-
3o ically provides a visual representation ofa procedure by which a specified value for an input variable displayed
in the front panel 42 can produce a corresponding value for an output variable in the front panel 42. The virtual
instrument 4O itself is a hierarchical construction comprising within its block diagram 46 respective icons 48
and 5O referencing other virtual instruments indicated generally by respective blocks 52 and 54.
The generalized block diagram of Fig. 4 shows an instrumentation system 56 incorporating the second
35 system 28 shown in Fig. 2. Elements ofthe instrumentation system 56 which are substantially identical to those
ofthe second system 28 are referenced by primed reference numerals identical to those ofthe second system
28. The instrumentation system 56 includes a keyboard and display 58 and an instrument 6O. In a presently
preferred embodiment, the control processor 38' and the keyboard and display 58 are implemented using a
Macintosh Plus Computer manufactured by the Apple Computer Company of Cupertino , California. However,
4O a Macintosh Computer also produced by the Apple Computer Company could be used instead.
The instrumentation system 56 can be used to control the instrument 6O, to acquire data from the instru-
ment 6O to analyze that data, to store that data and to present that data. Figure 5 shows details ofan illustrative
front panel 62 which can be produced using the front panel editor 36' and which can be displayed using the
keyboard and display 58. It will be appreciated that the illustration of Fig. 5 represents an actual graphical com-
45 puter-generated display ofan exemplary front panel for the instrument 6O. The graphical representation of Fig.
5 illustrates physical control dials and switches for providing variable input information and illustrates a coor-
dinate plane type indicator for displaying variable output information. More particularly, Fig. 5 shows a circular
turn-dial and a slide switch for setting input variable data. The turn-dial and slide switch each correspond to
respective rectangular boxes fordigitally illustrating variable input data in digital form. The illustrative front pan-
5O el also includes a coordinate plane display for illustrating variable output data. The graphical representations
of input controls and output indicators are stored in a memory library, and a user may select from among a
variety ofdifferentgraphical representations of input controls and output indicators in orderto construct a panel
display which conforms to a user's intuitive understanding of how the instrument 6O is controlled and how it
provides data.
55 Figure 6 illustrates an icon 64 which can be used to reference a front panel (not shown). A visual repre-
sentation 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 hierarchial system constructed using the block diagram editor 3O'. The dashed lines of Fig. 6 indicate the
6
EP O 242 _3_ B_
one-to-one correspondance between the icon 62 and the respective two-dimensional regions (or hot spots)
66 and 68 which correspond to respective variable input data and variable output data illustrated by controls
and displays of the corresponding front panel (not shown). For example, the front panel might include input
data in the form a sequence of samples and might provide output data in the form of an indicator showing vol-
5 tage reading per sample. The icon 64 then might be divided into two two-dimensional regions 68 and 66 which
respectively correspond to the input sample count and the voltage reading for that sample count.
Figure 7 illustrates a memory library including a plurality ofsoftware modules each representing a respec-
tive front panel and each corresponding to a respective illustrative icon which references its respective front
panel. As will be explained more fully below, a user may utilize the icons of the memory library to build a block
1o diagram; or helshe may build hislherown respective front panels and corresponding icons using the front panel
editor 36' or the icon editor 34' in order to build a block diagram; or helshe may use both the icons of the icon
memory library and icons which helshe produces himselflherselfusing the front panel editor 36' and icon editor
34' in order to build a block diagram.
The drawings of Figs. 8-1 2 show the graphical representations ofstructures utilized in constructing a block
15 diagram as described below using the block diagram editor 3O'. The structures represented in Figs. 8-12 sub-
stantially facilitate the application of data flow programming techniques which are used in the preferred em-
bodiments of the present invention. Figure 8 illustrates a sequence structure. Figure 9 illustrates an iterative
Ioop structure. Figure 1 O illustrates a conditional structure. Figure 11 illustrates an indefinite loop structure.
Figure 1 2 illustrates a shift register on an iterative loop structure (on the left side) and a shift register on an
2o indefinite loop structure (on the right side).
It will be appreciated that the graphical representations of the structures illustrated in Figs. 8-12 can be
stored in a memory library as can execution instructions corresponding to the respective structures. Thus, a
user can call upon a graphical structure library in order to display any one or more of the structures using the
display facilities of the control processor 38' and keyboard and display 58 of the instrumentation system of
25 Fig. 4.
The sequence structure, which has its graphical representation illustrated in Fig. 8, serves to divide a data-
flow diagram into two subdiagrams, one representing an inside and another representing an outside of the
sequence structure borders. The outside diagram behaves exactly as if the sequence structure and its con-
tents were replaced by an icon with a terminal (or hotspot) foreach line crossing the sequence structure border.
3o The drawing of Fig. 8 shows a three-diagram sequence. In orderto minimize space used on a computerconsole
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 ofdiagrams are indicated
by the respective numbers in the respective sequence diagrams. When the first diagram (indicated by the num-
ber O) in this sequence completes its execution, the next one begins. The process is repeated until all diagrams
35 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). Con-
stants may be used with any ofthe diagrams without any constraints. Variables used within a diagram are strict-
Iy local to the sequence structure and may be assigned only once. Variables can be used multiple times in the
4O 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 1 3 shows an illustrative block diagram 7O of a sequence structure. The sequence structure is cou-
45 pled to receive input signals on respective lines 72 and 74 and to provide respective output signals on respec-
tive lines 76, 78 and 8O. Input registers 82 and 84 are provided to collect input data. A decoder 86 is provided
to determine which computation andlor control element 88, 9O, or 92 to select, and a sequence counter 94 is
included to undertake a count forsequencing between respective elements 88, 9O and 92. When all data inputs
are present, an output of AND gate 96 becomes TRUE. This starts computation in computation andlor control
5O element 88 (assuming that it is the first element selected). When the control element 88 has completed com-
putation, its output is stored in register 98. When the first element 88 has completed computation, the sequence
counter 94 is free to advance by one. The decoder 86 will select the second computation element 9O. The output
of AND gate 96 will become TRUE again and, computation will begin in the second element 9O. The output of
the second element 9O will be stored in output register 1 OO. The sequence repeats for the third element 92,
55 and its output is stored in output register 1 O2. After the completion of the computation by the third element 92,
the output data from all computations will be available forfurthercomputation 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 se-
l
EP O 242 _3_ B_
quence structure in that the iterative loop structure partitions the data-flow graph into two parts. The intefiof
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 transformation
5 performed.
All signal paths crossing the border must have the same size for the indexed dimension. It is possible to
disable the indexing on a signal path, in which case, the data behaves as if it were a constant available to each
iteration. If indexing is disabled on an outgoing signal path, the data value is repeatedly overwritten and only
the last value propagates out from the iteration structure.
1o There are two special variables which behave as constants within the body of the iterative loop structure.
the numberof iterations, N, and the iteration numberor index, i. Usually, the numberof 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
15 is O 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 would be executed strictly sequentially. In accordance with data flow principles, all
_o inputs must be available to start execution of an iteration loop. Furthermore, all outputs are generated after
execution completes.
Referring to the illustrative drawings of Fig. 14, there is shown a block diagram 1 O4 for an iterative loop.
An iterative loop structure operates on data in an array one element at a time. The data for each element are
sequentially stored in respective input buffers 1 O6 and 1 O8. A counter 11 O begins its count at O. When the first
_5 data elements are available for both inputs of both respective input buffers 1 O6 and 1 O8, computation andlor
control element 1 12 will generate outputs to be stored in respective output buffers 114 and 116. At that time,
the counter 11 O will advance to 1 , and the process will repeat for the second data element in the array. This
process will repeat until the counter 11 O reaches N-1 making a total of N computations. At that time a complete
cycle signal will be generated by the comparator 1 1 8. The output signals stored in the respective output buffers
3o 1 14 and 116 then will be available for use by other computation instruments (not shown).
The conditional structure, a graphical representation ofwhich is shown in Fig. 1 O, is similar in appearance
to the sequence structure in its use of screen space, but it differs in its handling of signal paths crossing its
border in that in each case a diagram may use any subset of incoming signal paths, but must produce all out-
going signal paths. In accordance with data-flow principles, all inputs must be available in order to start exe-
35 cution. Furthermore, all outputs are generated after execution is completed.
There must be a signal path that terminates at the case-selection terminal on the structure border. In the
simplest case, a boolean-valued scalar is connected to the selector to select between case O (FALSE) and
case 1 (TRUE). In the general case, a scalar number is connected to the selector. A special diagram (default
case) may be specified to be used in the event that the selector does not lie in the range of specified cases.
4o The drawings of Fig. 1 5 illustrate a block diagram 12O corresponding to a conditional structure. The block
diagram 1 2O forthe conditional structure is substantially similarto that ofthe block diagram 7O forthe sequenCe
structure. The block diagram 12O for the conditional structure includes respective input registers 1 22 and 124,
a decoder 1 26, an AND gate 128, three respective computation andlor control elements 1 3O, 1 32 and 1 34 and
three respective output registers 1 36, 1 38, and 14O all coupled as shown in the drawings of Fig. 1 5. In operation,
45 the conditional structure block diagram 12O operates in a manner substantially similar to that of the sequence
structure block diagram 7O, except that the decoder 126 of block diagram 12O is directly controlled by the case
selection input provided on line 142 to select only one diagram.
The indefinite loop structure, a graphical representation of which is shown in Fig. 1 1 , is similar in concept
to the iterative loop structure in that the interior of the structure diagram represents the body of the loop, but
5o it differs in that signal paths crossing the border ofthe indefinite loop structure do not usually have an indexing
transformation applied.
There are two special variables applied within the body of the indefinite loop structure. iteration number
or index, i, and recirculation flag, Q. The iteration number starts at zero and increments by one at the end of
each iteration. A boolean value or expression is connected to the recirculation flag. A value of TRUE means
55 thatanother iteration will be performed. Ifthe recirculation flag is left unconnected, it is equivalent to connecting
a TRUE constant. In accordance with data-flow principles applied in the preferred embodiments, all inputs must
be available in order to start execution. Furthermore, outputs are generated after execution is complete.
The illustrative drawings of Fig. 1 6 shows a block diagram 144 which corresponds to the graphical repre-
8
EP O 242 _3_ B_
sentation of an indefinite loop structure shown in Fig. 1 1 . In operation, when data inputs are available on both
respective input registers 146 and 148, an output of AND gate 1 5O will become TRUE to enable computation
andlor control element 1 52. After computation is complete, output data are stored in respective output registers
1 54 and 1 56. After completion of the first loop, counter 1 58 increments, and the cycle begins again. This proc-
5 ess continues until a recirculation flag provided on line 16O goes FALSE. The output data are present after
each cycle.
A special construction available for use only within the respective loop structures is the shift register. A
graphical representation of each respective loop structure type incorporating a shift register is show in Fig.
1 2. The shift registereliminates the need forcycles in a data-flowgraph making the result easierto comprehend
1o and to prove correct. The shift register behaves as if it were an ordered set of two or more variables, all of the
same type and dimensionality.
The first variable in a set is an output of the loop-body diagram and is located on the right border of the
Ioop structure. The other variables of the set are inputs to the loop-body diagram and are located on the left
border of the structure at the same elevation.
15 At the conclusion of each loop iteration, the data from the shift register output variable are shifted into the
first input variable, and the previous value of the first input variable is shifted into the second input variable.
The drawing of Fig. 1 7 shows an illustrative block diagram 162 illustrating operation of an iterative loop
structure including a shift register. Respective latches 164 and 166 are provided to implement the shift register.
In operation, the block diagram 162 of Fig. 1 7 (which represents an iterative loop structure with a shift register)
2o operates similarly to the block diagram 1 O4 of Fig. 14 (which represents an iterative loop structure minus a
shift register) except that computation inputs are provided which give the system feedback from a previous
cycle.
An output provided by loop counter 168 is sensed by the comparator 1 7O. For the first loop, the multiplexer
control 1 72 selects preselect inputs from respective preset gates 1 74 and 1 76. For all other cycles, respective
25 latches 164 and 166 are selected. The selected input is fed into the computation andlor control element 1 78.
Data from input buffer 1 8O also is fed into the computation element 1 78. After each cycle, the computed output
data are fed into respective output buffers 1 82 and 1 84. When the comparator 1 7O reaches N-1 , the process
is completed, and the output data can be passed to a next instrument (not shown).
The following discussion regarding data flow principles and a virtual instrument data structure diagram
3o will assist in understanding the operation of the respective block diagram editors 22, 3O and 3O' and the re-
spective execution subsystems 24, 32 and 32' of the respective first system 2O, second system 28 and the
instrumentation system 56.
Referring now to the illustrative drawings of Fig. 1 8, there is shown a block diagram 1 86 of an exemplary
data flow system. The block diagram 1 86 includes three respective input registers 1 88, 1 9O and 1 92 which
35 provide an accumulation of input data. As soon as all input data are present, an output of AND gate 1 94 will
become TRUE, and computation andlor control element 1 96 will begin computation. The computation element
1 96 will begin generating output data which are stored in respective output registers 1 98, 2OO and 2O2. When
all output data are available, an output token will be generated by the computation element 1 96 indicating that
output data are available for transmission to a next system (not shown). It will be appreciated that the compu-
4O tation element can be a combination of more than one subsystem (not shown).
Figure 1 9a illustrates a virtual instrument data structure diagram. The first system 2O of Fig. 1 , the second
system 28 of Fig. 2, and the instrumentation system 56 of Fig. 4 each utilize the principles set forth in the data
structure diagram of Fig. 1 9a. It will be appreciated that implementation of a system utilizing a data structure
such as that diagrammed in the diagram of Fig. 1 9a advantageously permits the implementation ofan extended
45 data flow system like that illustrated in Fig. 1 8.
Furthermore, it will be appreciated that implementation of the data structure like that of the diagram of
Fig. 1 9a advantageously permits the implementation of a system in which execution instructions can be con-
structed in a graphical fashion. More particularly, execution instructions can be constructed by constructing
a visual display in which at least one input variable produces at least one output variable according to a dis-
5O played procedure. Furthermore, the execution instructions are constructed such that, when a value is assigned
to a particular input variable, a value for a corresponding output variable is produced substantially according
to the procedure illustrated in the visual display. Additionally, the execution instructions can be constructed
in response to the construction of a block diagram comprising the graphical display. Thus, a user need only
construct an appropriate visual display in order to construct the execution instructions.
55 Moreover, implementation of data flow principles by using a data structure such as that shown in the di-
agram of Fig. 1 9a advantageously permit the use of parallel processing which increases the speed with which
the execution of execution instructions can be accomplished.
More particularly, Fig. 1 9a shows a system representation of a virtual instrument. Boxes 8a-8k, indicate
9
EP O 242 _3_ B_
conceptual objects in the system that havewell-defined properties. Objects 8i, 8j and 8kare grouped intosahp-
ed box 8s and share some properties and form a class of objects.
As indicated in Fig. 13b which represents a legend applicable to the illustration of Fig. 19a, a solid line
with an arrow is used to indicate a potential one-to- one relationship, i.e., the source object contains zero or
5 more destination objects (e.g., a vehicle containing zero or more wheels). Awiggly line with an arrow is used
to indicate a potential one-to-many relationship; i.e., the source object may reference zero or one destination
object (e.g., a library book may or may not have a borrower).
Line 8n indicates that a virtual instrument 8b contains a front panel with a multiplicity of controls 8c. A
control may be of clustered type in which case it contains a multiplicity of subcontrols as indicated by line 8p.
1o Line 8q indicates that a virtual instrument contains an icon with a multiplicity ofterminals 8d. Line 8l 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 primitive computations have no diagrams. Line 8r indicates that a block dia-
gram contains a multiplicity of objects of the node class. A block diagram contains exactly one self reference
15 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.
Asequence structure or a conditional structure contains one or more sub-diagrams, and an iterative loop
structure or indefinite loop structure contains exactly one subdiagram. Line 8m indicates that an instrument
use node is used to reference another virtual instrument. The instrument use node may reference a virtual
2o instrument in real-time; or it may reference previous data acquired by the virtual instrument. Line 8u indicates
that each object ofthe node class contains a multiplicity ofterminals 8g. Line 8v indicates that a block diagram
also contains a multiplicity ofsignal paths 8f. Each signal path contains a multiplicity ofterminals 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 which
25 are not 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 constant). Aterminal
references exactly one control, and it is either on the front panel or on the block diagram.
Figs. 2Oa-l illustrate computer screen displays during each successive step in a construction ofan exem-
plary block diagram using a block diagram editor such as that of Figs. 2 or 4. (lt should be appreciated that
3o the block diagram editor of Fig. 1 operates in a similar fashion; except that it does not include an icon editor
or a front panel editor for user-constructed front panel).
More particularly, in Fig. 2Oa, a control knob is placed in the front panel, and its associated terminal au-
tomatically appears in the block diagram. The system representation shows the virtual instrument with a dia-
gram containing a self reference node, and a terminal in the self reference node which references the front
35 panel control.
In Fig. 2Ob, a control graph indicator type is placed in the front panel, and its associated terminal auto-
matically 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 distinguish the terminal even without supplementing the graphics with text lab-
els.
4O In Fig. 2Oc, a constant with value 2O is placed in the block diagram, and is reflected in the system repre-
sentation by another terminal and control attached to the self reference node.
In Fig. 2Od, 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 itsel_. The system representation
shows another node of instrument use type in the virtual instrument diagram and three terminals and controls
45 corresponding to the terminals and controls the referenced virtual instrument.
In Fig. 2Oe, an iterative loop structure is placed in the block diagram. The system representation shows
the structure node in the diagram along with terminals and controlsforthe loopvariables. Note thatthe iteration
number is accessible only from within the loop; while the iteration limit is available inside and outside the loop
as evidenced by the two terminals which reference it, one in the structure node and the other in the self-
5O reference node of the diagram within the structure node.
In Fig. 2Of, an icon referencing another built-in virtual instrument is placed inside the iterative loop struc-
ture.
In Fig. 2Og, a wire is connected from the terminal associated with the front panel knob to the loop limit
terminal of the loop structure. The front panel knob terminal is determined to be the signal source.
55 In Fig. 2Oh, a wire is connected from the iteration number terminal to a terminal on the virtual instrument
inside the loop. This signal path lies completely within the loop structure subdiagram. The system represen-
tation 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 source.
_O
EP O 242 _3_ B_
In Fig. 2Oi, the constant is wired to a terminal of the virtual instrument within the loop. In this case, the
wire crosses the structure border so that a pair of terminals and a control are created, and the wire is split into
two signal paths, one outside the loop structure and one inside. The constant is determined to be the source
terminal of the outside signal, and the inside terminal at the border is determined to be the source of the inside
5 signal.
In Fig. 2Oj, a wire is drawn from the virtual instrument inside the loop to the virtual instrument outside the
Ioop. This wire crosses the border so it is split into two signal paths. The wire on the outside is thicker because
it represents an array signal path (as will be explained more fully below).
In Fig. 2Ok, the iteration number terminal is connected to a terminal on the outside virtual instrument. The
1o wire crosses the border so that it is split into two signal paths. The inside signal path is joined to the existing
signal path originating at the iteration number terminal. Again, the wire on the outside is thicker.
In Fig. 2O1 , the output of the virtual instrument outside the loop is connected to the terminal associated
with the front panel graph. The wire pattern indicates that it represents a clustersignal path (as will be explained
more fully below).
15 The following description describes the operation of the execution subsystems 24, 32 and 32' of the re-
spective first system 2O, second system 28 and the instrumentation system 56.
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 dia-
gram's self-reference node. For each terminal which is the source of a signal, the data token is moved from
_o 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
_5 placed on a destination terminal causes the short-count ofthe 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 step depends upon the type of node. For an instrument use node that
references a real-time virtual instrument, the next execution step is to copy the tokens from the node's controls
3o to the virtual instrument's controls and to execute the virtual instrument. For an instrument use node that ref-
erences 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 sequence structure node, the next step is to execute the first sub-
diagram. For a conditional structure node, the next step is to execute the subdiagram indicated by the value
of the token on the selected control. For an iterative or indefinite loop structure node, the next step is to set
35 the value of 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-reference 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 data tokens are propagated along the signal paths. For a sequence
4o structure node, the next subdiagram is executed, if one exists, and if not, the output tokens are propagated.
For a loop structure node, the shift registers are clocked (the data is shifted), the iteration numbers increment-
ed, 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 tokens on the front panel controls
if data logging is enabled. The third step in the execution of the virtual instrument is to copy the tokens from
45 the virtual instrument's indicators to the instrument use node's output terminals and to schedule the instrument
use node to execute its next step. The third step ofvirtual instrument execution is performed only if the virtual
instrumentwas executed in response to an instrument use node request. Ifthe virtual instrumentwas executed
interactively, there is no third step.
Figure 21 shows an illustrative hardware configuration of an instrumentation system 2O4 according to the
5O present invention. The system 2O4 includes a Macintosh computer 2O6 with an interface to a GPIB (general
purpose instrument bus) 2O7, a Tektronix 5O1 O Function generator 2O8, a Fluke 884OAdigital multimeter 21 O,
and a unit undertest 212 all coupled as shown. The traditional approach to automating this measurementwould
be to create a program in a computer language such as BASIC to interact with the test instruments 2O8 and
21 O to collect, format, and display in real time the measured values pertaining to the unit under test 212.
55 Figure 22 shows a drawing of a computer-generated display of a completed block diagram for the design
example of Fig. 21 . This block diagram is the graphical program representing the instrument's operation. It
shows the interconnections between the elements of the instrument, the signal paths, and the relationship to
other virtual instruments. At the upper left ofthe di_a_gram, fourfront panel input controls are shown connected
EP O 242 _3_ B_
to a ''Ramp'' icon. This icon is built-in function which takes input minimum and maximum values, number of
steps, and a flag to indicate linear or log steps, and produces as output an array ofsample points, in this case
the frequencies of interest. The output is a bold one, which indicates that the data type is an array.
The large rectangular region in the center ofthe diagram is an iteration loop structure. The diagram placed
5 inside this region will be executed multiple times. for i = O to N-1 . The inputs to the iteration loop are amplitude
and the array of frequencies, shown on the left. The amplitude remains the same data type as it crosses the
Ioop 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 iteration. 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.
1o Inside the iteration loop are two virtual instrument icons. The first takes as input an amplitude and a fre-
quency and performs the appropriate IEEE-488 operations to set the function generator 2O8 of Fig 21 . The
second performs the appropriate IEEE-488 operations to obtain a voltage measurement from the multimeter
21 O 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-
15 488 functions to communicate with the multimeter 21 O.
Each iteration ofthe iteration loop produces one voltage measurement. This results in an array ofvalues,
as shown by the line change as it exits the loop at the right. The graph function takes this array and the array
offrequencies as input and produces as output the data structure for the front panel graph indicator. Note the
self-documenting effect of the graphical language, with the iteration loop structure contributing to the read-
2o ability of the 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).
25 (PICTURE)Operation of the Preferred Embodiments
The presently preferred embodiments ofthe invention are implemented in software. Thefollowing descrip-
tion explains the operation ofthe presently preferred embodiment as implemented using eitheran Apple Mac-
intosh Plus Computer or an Apple Macintosh Computer. The explanation is intended to be illustrative and not
3o exhaustive and uses specific examples to explain the principles of operation of the preferred embodiments.
Itwill be appreciated thatthe principles ofoperation explained belowwill serve as a basisforthe heuristic learn-
ing 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 as claimed be limited in
any way by the following explanation.
35 The following explanation explains how to use the implemented functions of the preferred 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 is shown in Fig. 23b. This screen is the front panel window on which controls can be
4O placed. The tools and controls below the menu bar will be described later.
Figure 24 shows the contents of the FILE menu. In this and subsequent screen pictures, items in clear
surrounds can be selected. Stippled items do not yet work. The NEW, OPEN, CLOSE, SAVE and SAVE AS...
items work as in any other Maclntosh program that follows Apple's user-interface guidelines. NEW opens a
new instrument, OPEN brings up a dialog box with existing instruments' names, CLOSE closes the current
45 instrument, SAVE saves the instrumentwith the current file name, and SAVE As... saves a copy ofthe 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 easy. Only CLEAR works. CLEAR is useful for
removing items from the active window, e.g., selected wires and structures from the block diagram window,
5O or controls from the front panel window.
Figure 26 shows the FORMAT menu. The FORMAT menu has five working items. The first two FULL
SCREEN and TILE alter the screen 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 is dimmed if a block diagram window is not open.
55 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 workto some degree. Choos-
ing the NUMERIC item brings up the dialog box shown 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 ofthe box offer
_2
EP O 242 _3_ B_
the choice of display style. clicking on the chosen glyphs produces a reverse-video display of that pictograph.
MINIMUM, MAXIMUM and DEFAULT work by selecting their adjacent frames and filling in the desired values.
Arrays can be specified by choosing the number of dimensions and inserting that number into the frame to
the leftofARRAY DIMENSlONS. The numberofelements in each array dimension is then specified by entering
5 appropriate values into the dimension frames numbered 1 to 8. Selecting the INDICATOR ONLY box makes
the control a passive indicatoron the front panel. Selecting SHOW DIGITAL READOUT provides a digital read-
out of the value of the control. The current value of the control can be altered by adjusting the control itself or
by altering the value 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 avail-
1o able 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 for use
as controls or indicators. This capability is useful for sending command or address strings for writing to and
reading from a GPIB.
Figure 3O shows the dialog box for the GRAPHICAL control. This control is used to display graphs. It must
15 be used with the INDICATOR ONLY box selected.
The FUNCTlONS 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 item se-
Iected. Selecting this item opens a block diagram window. Figure 32 shows the screen for a new block diagram
_o window.
Notice that the untitled block diagram window is distinguishable from an untitled front panel window by
the presence of the black bullets (_____) in the title bar and the dimming of the CONTROL menu name. A block
diagram is created by choosing items from the FUNCTlONS menu. Figure 33 shows the contents of the FunG
tions menu. Only a subset offunctions from the items SPECIAL, ARITHMETIC, COMPARATIVE, INPUT-OUT-
_5 PUT are working. Single functions are also available from STRING, SIGNAL PROCESS and CURVE FIT. The
working functions from each of the menu options will be described in turn.
The functions available from the SPECIAL option of FUNCTlONS menu include STRUCTURES, SPECIAL
ITEMS, and CONSTANTS. Each of the available functions is described below.
3o (PICTURE)Structures
To remedy shortcomings of the conventional data flow, which makes it substantially unusable as a pro-
gramming language, the present invention includes graphical operators. These structures implement in a data
flow environment what typical structured programming control do.
35 (PICTURE)Sequence Structure
The sequence structure in its simplest form serves to divide the data flow diagram into two subdiagrams,
the inside of the structure and the outside of the structure. The outside diagram behaves exactly as if the
4o sequence structure and its contents were replaced by an icon with hotspots foreach 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 leftcorner. When the first diagram in the sequence completes
45 execution, the next one begins. The process is repeated until all the diagrams in the sequence have been exe-
cuted.
Each diagram in the sequence uses a subset of the incoming arcs and produces a subset of the outgoing
arcs (the outgoing subsets must be mutually exclusive to avoid arc fan in, but the incoming subsets are arbi-
trary). Constants may be used within any of the diagrams without any constraints. Variables used within a di-
5O agram are strictly local to the sequence structure and may be assigned only once. Variables can be used mul-
tiple times in the diagrams following the diagram where the variable was defined.
The sequence structure does not begin execution until all the incoming arcs have data available, and none
of the outgoing arcs produce data until all the diagrams have completed execution. There may be at most one
arc that terminates at the sequence structure border itself, acting as a trigger for the sequence (it is just one
55 more input which must be present for the sequence to begin). An arc originating at the sequence structure bor-
der may be used as a ready signal indicating that the sequence has completed execution.
_3
EP O 242 _3_ B_
(PICTURE)lnteractive Loop (''for'' loop) Structure
The iterative loop structure is similar to the sequence structure in that it partitions the data flow graphic
into two pieces. The interior diagram represents the body of the loop and is similar to a sequence structure
5 with N identical diagrams (Fig. 35). Arcs crossing the borderofan iteration loop structure typically have a trans-
formation applied. Incoming arcs are indexed in the most significant dimension so that the data inside the struG
ture has dimensionality one less than outside. Outgoing arcs have the reverse transformation performed.
All arcs crossing the border must 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 in-
1o dexing is disabled for an outgoing arc the value is repeatedly overwritten and only the last value propagates
out from the iteration structure (this is one difference from the way N sequence diagrams would behave). By
default, the most significant dimension is the one indexed but this may change to any dimension.
There are two special variables that behave as constants within the body of the iteration loop structure.
the number of iterations (N) and iteration number or index (i).
15 The number of iterations to be executed is automatically set by the size of the dimension being indexed.
In the event that there are no incoming arcs a scalar value must be specifically connected to this variable to
specify the number of iterations. The other variable is the iteration number (ranging from O to N-1 , as in C).
Iterations are independent and could in principle be executed in any order or completely in parallel, except
in the case where a non-reentrant virtual instrument is used. In this case, the iterations behave exactly like
_o N identical sequence diagrams.
As usual, the iteration loop does not begin execution until all the incoming arcs have data available, and
no outgoing arcs have tokens generated 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 has completed execution.
_5 (PICTURE)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. The usual execution rules apply (all inputs available to start,
3o 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
selectorforthe case. In the simplest case a boolean valued scalar is connected to the selectorto select between
case O (false) and case 1 (true). In the general case a scalar number (or string variable, if it is specified as a
discrete list of strings) is connected to the selector.
35 A special diagram (default case) may be specified to be used in the event that the selector does not lie in
the range of specified cases. An arc originating at the case selection structure border may be used a a ready
signal indicating that the selected case has completed execution.
Indefinite Loop (''do-while'' loop) Structure
4O (PICTURE)
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 shows a graphical representation of an in-
definite loop structure.
45 There are two special variables available within the body ofthe indefinite loop structure. One is the iteration
number which starts with a value of O and the other is the recirculation flag to which the value of the ''while''
expression is connected (if left unconnected it is equivalent to ''while(true)'').
Iterations are typically related so the operation of the indefinite loop is similar to an indefinite number of
identical sequence diagrams. The usual execution rules apply. There may be at most one arc that terminates
5o at the indefinite loop structure border itself, acting as a triggerfor the loop (it is just one more input which must
be present for the loop to begin). An arc originating at the indefinite loop structure border may be used as a
ready signal indicating that the loop has completed execution.
Special Items. Shift Registers
55 (PICTURE)
There is one special construction which is available for use only within the loop structures. This construG
tion is the shift register. The shift register eliminates the need for cycles in a data flow graph making the result
much easier to understand and to prove correct. The shift register behaves as if it were an ordered set of two
_4
EP O 242 _3_ B_
or more variables all of the same type and dimensionality.
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 structure, one must first highlight
the desired structure and then select the shift registerfrom the functions menu item. The indefinite structure
5 now shows two boxes on its left edge (root nodes) and one box on the right edge (leaf node). See Fig. 38.
At the conclusion of each iteration of the indefinite loop all shift registers within the body are ''clocked'',
i.e., the value of the leaf node is placed in the first root node while the previous value of the first root node is
placed in the second root node, etc.
Prior to the first iteration of the indefinite loop, root nodes of shift registers are set to false, zero, or empty
1o string, as appropriate. These default initial values may be overridden by specifying alternative constants, or
by setting the nodes using incoming arcs from arbitrary external expressions.
(PICTURE)Using PROTO. The Fibonacci Number Problem
15 The best way to learn to use the presently preferred embodiment of the invention is to create a working
virtual instrument. The following exercise is a standard one from introductory textbooks on computer program-
ming. Creating a Fibonacci sequence. In place of the traditional programming languages like C or Pascal, we
will use the presently preferred embodiment of the invention.
The Fibonacci sequence (1 , 1 , 2, 3, 5, 8, 13, 21 , 34 ....) arises in such diverse applications as the number
_o of petals in a daisy, the maximum time it takes to recognize a sequence of characters, and the most pleasing
proportions for a rectangle. It is defined by the relations.
f(1) = 1
f(2) = 1
_5 f(n) = F(n - 1) + f(n - 2) for n > 2
Starting with the third term, each Fibonacci number is the sum ofthe two previous Fibonacci numbers. In
the Fibonacci instrument described below, the presently preferred embodiment is used to create a virtual in-
strument to generate and display a sequence of Fibonacci numbers. To accomplish this a number offeatures
of the preferred embodiment are used including iterative-loop structure arithmetic functions, numeric and
3O gfaphIC COntfOlS and COnStantS.
(PICTURE)Getting Started
To get started double click on the PROTO icon You new screen should like Fig 1 Construction ofvirtual
35 ' ' ' '
inStfument Can Staft ffom eithef the Ffont-Panel of the bloCk diagfam windowS, howevef, SinCe labeIS fof the
controls are not yet implemented, it is perhaps easier to begin from the block diagram window. To reach the
block diagram window pull down the FILE menu and choose OPEN DIAGRAM. This action will open an active
block diagram window (see Fig. 32). You are now ready to build your virtual instrument.
Pull down the FUNCTlONS menus and choose SPECIAL This choice will produce a dialog box with a dis-
4O '
play offunCtionS (See Fig. 39). The fouffunCtionS fepfeSented on the fifSt line in the dialog box afe deSCfibed
above. All fourofthese functions are implemented. An item is selected by placing the cursor on it and clicking.
This action closes the dialog box and deposits the chosen item in your active block diagram window. Figure
4O shows an example of a ''for'' loop structure layed down in the block diagram window in this manner.
Items chosen from the FUNCTlONS menu are always deposited nearthe centerofthe window and if pre-
45 '
viouS itemS afe not moved new itemS may obSCufe old itemS.
Items may be selected and moved about in the activewindow by using the grabberglyph. 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-window
5o area. The TAB key can also be used to change the tool. Pressing the TAB selects the next cunor 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, require that the object be ''selected'' before some action can
be performed. To select a structure its ''select regions'' must be identified. The ''for'' loop structure object has
two select regions, one along the rightedge and a second along the bottom edge ofthe object. Figure 41 shows
55 the location ofthese regions. Positioning the grabber's hot spot in one ofthese regions and clicking will select
the object. The case and ''do-while'' structures are selectable anywhere along their borders. The sequence
structure is also selectable along its borderexceptfor the uppercorners which perform the function ofshifting
forward and backward through the sequence. When selected, the object is surrounded by a moving dashed
__
EP O 242 _3_ B_
box. The object can now be moved by placing the grabber on the object and click-dragging to a new location.
Releasing the mouse button will leave the object selected in its new location. Moving the cursor off the object
and clicking will de-select the object.
Sometimes you may need to duplicate the structure you are working with. You could return to the FUNC-
5 TlON menu, choose SPECIAL again and click on the object you want to use. There is a short-cut to duplicate
objects from within the block diagram window. To duplicate the object from within the active window, use the
grabber tool to select the objection to be duplicated, press the OPTlON key and click-drag a copy offthe orig-
inal.
Note. Select can be an ambiguous term with reference to the Mac user interface. It is not synonymous
1o with choose, rather, it is used to indicate that the object is to be ''selected'' by placing the cursor into a select
region for that object and clicking the mouse button.
Two ''for'' loop structures are required for the Fibonacci instrument we are building. Use one ofthese two
methods to duplicate a copy of the structure in your active window. Your active window should now contain
two identical ''for''loop structures.
15 It is often necessary to place objects within objects. To do this, it is helpful to be able to resize objects.
The structures can all be resized in the same fashion. Place the grabber tool in the lower right-hand corner of
the structure and click-drag the objectto the desired size. Figure 42 shows the proper placementofthe grabber
for the resize operation and the results of enlarging the original structure object.
Additional functions are required in both loop structures for our instrument. Resize both loop structures
_o to be about the same size of the larger objection in Fig. 42. Now reposition the two structures into locations
similar to those shown in Fig. 43.
The Fibonacci virtual instrument uses two arithmetic functions. addition and multiplication. These func-
tions are obtained by choosing ARITHMETIC from the FUNCTlONS menu (see Fig. 33). Choosing this menu
item opens the dialog box shown in Fig. 44. The functions currently implemented are. addition, subtraction,
_5 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 object 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 object is a select region. The selected object can now be click-dragged to a new position.
Move the addition-function object to a location on the upper loop structure similar to the position shown in
3o Fig. 46. Select a multiplication function and position it in the lower loop similar to Fig. 46.
Three more functions are needed before we move to the front panel and install some controls and indica-
tors. First, pull down the FUNCTlONS 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 is implemented. Choose LINEAR FIT. The object
will drop approximately in the center of the screen. Click-drag the object to a position similar to the one illu-
35 strated in Fig. 48.
The next function we need is a shift register. This function must be used within a control structure, there-
fore a structure object must be selected before the shift register is selected from the SPECIAL menu item.
Selectthe top loop, pull down the FUNCTlON menu and select SPECIAL. From the SPECIALdialog box choose
the shift register glyph from the row of glyphs labelled. SPECIAL ITEMS (see Fig. 39). Figure 49 shows what
4o the loop structure looks like with the shift register function installed. 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 FUNCTlONs menu from the menu item labelled SPECIAL. We need two constants. Choose a numeric
constant glyph from the dialog box and duplicate its object in the window. Figure 5O shows the two constant
45 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 finge_') 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 ex-
posed edge of the front panel (see Fig. 32). The Front-panel window should come to the front with an empty
5O window. Notice that now the FUNCTlONS option in the menu bar is dimmend, by the CONTROLS option is
darkened indicating that it can be accessed. Pull down the CONTROLS menu and choose NUMERIC. The con-
tents 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 ofthe three display styles on the left side of the dialog box and select the center glyph
55 representing a ''pointe_' control. Notice that then selected the image ofthe glyph will change to reverse video.
Move the cursor to the box labelled MINIMUM and double click to select it. If the interior of the box does not
darken move your cursor around inside the box while clicking until you find the right spot. When the interior is
darken enter 1 from the keyboard. Move the cursor to the box labelled MAXIMUM and enter 2O. Now move
_6
EP O 242 _3_ B_
the cursor to the box labelled OK and click. This action will close the dialog box and return you to the front
panel window where you should see a larger representation of the pointer control you selected from the dialog
box inside a moving dashed rectangle. Controls can be moved about the front panel window just as objects
were moved in the block diagram window. Notice that the behaviorofthe controls is more like the non-structure
5 objects in 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 one shown in Fig. 51 . This control will determine the length of the Fibonacci sequence that your instru-
ment calculates.
Return to the CONTROLS menu and again choose the NUMERIC option. This time select the box labelled
1o INDICATOR ONLY and choose the DIGITAL CONTROL glyph (the right-most control glyph), then click in the
OK box. The front panel window should now display a rectangle within a rectangle with the interior rectangle
containing a O. This control is a passive indicator. It will be used to display intermediate was well as final values
ofour Fibonacci instrument. We need a second indicator display. Controls can be duplicated in the same man-
ner as objects in the block diagram window. Use the grabber tool. First select the control to be duplicated, de-
15 press the OPTlON key and click-drag a copy off of the original. Arrange these two indicators to the left of the
front panel window similar to the positions shown in Fig. 52.
We need one more front panel control to complete or instrument, a graphical display. Return to the CON-
TROLS menu one more time and choose the GRAPHICA1 option. This option will produce a dialog box like
the one shown in Fig. 29. Choose INDICATOR ONLY. Do this and click the OK box to return to the front panel
2o window. There should now be a rectangular-shaped graph with linear coordinates setting in the middle of the
window. This is the graphical display control. It can be moved just like the objects in the block diagram window
and the other controls 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
25 NUMERIC controls is the same but because the fullness ofthe 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 should now look like the one shown in Fig. 53. At this point we can
return to the blockdiagram window to ''wire-up'' the components ofour block diagram into a working instrument
3o that will be controlled by the front panel and display its output there as well.
You can return to the block diagram window either by clicking on the exposed edge of that window or by
choosing OPEN DIAGRAM from the Fl1 E menu. The first think you will notice is that your 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 representations of the front panel controls are called ''terminals''. These objects can be moved
35 about the block diagram just like the original block diagram elements. Notice that with the exception of the
constants, each of these elements bears a resemblance to the control laid down on the front panel. The con-
stants are distinguished by their numerical contents representing the values they hold. When a control is ''se-
Iected on the front panel, its terminal 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
4O of action. Using the grabber tool, click-drag each of the control terminals 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 your original
positioning of the block diagram objects differed significantly from our example, now is the time to rearrange
your block diagram so that it more closely resembles Fig. 54. Eventually it should be relative easy to move
about pieces of a wired diagram, but at present this is not possible.
45 To connect component in the block diagram you must use the wiring tool. This tool is represented 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. Connections are established between block diagram components by clicking in a hot spot of one element
5O and pulling the flickering line to a hot spot of component to which you want to connect. Figure 55 shows the
connection between the slide-pointer control used to set number of iterations in the loop and the iteration-va-
riable box in the loop (labelled N). The ''wire'' is represented by a flickering line during the connecting operation.
Clicking in a hot spot of the terminal component will change the wire to a non-flickering representation of the
connection. The interior ofobjects, orobject elements, represented by heavy black borders are ''hot'' anywhere
55 within their borders. Other objects, for example, the LINEAR FIT object, have localized hot spots representing
specific inputs and outputs. Figure 56 shows the arrangement of hot spots for all available functions.
Connecting wires can be ''forced'' to turn corners where the user wants them to for purposes of neatness
and legibility ofthe diagram. Asingle clickwhile dragging a wire outside ofa structure or otherobject, will allow
_l
EP O 242 _3_ B_
the user to change direction at that point by 9O'. Pulling the wire again will allow the user to continue toward
their target connection. Try using this technique to connect the pointer control to the iteration variable box on
the lower loop structure.
Often it is necessary to erase and redraw lines. To do this, use the grabber tool to select the line segment
5 to be removed. Remember where the grabber hot spot is located (at the junction of the thumb and first finger)
when trying to select wires. With the line segment selected, pull down the EDIT menu and choose CLEAR.
This action will erase only the selected line segment. Successive pieces ofthe line must be removed individually
repetitions of this sequence of actions. Tiny pieces of line segment may be difficult to select. Sometimes line
segments successfully selected and cleared appearto remain on the blockdiagram. Trial-and-error is the name
1o of the game here. Drawing replacement lines is identical to rawing new lines.
Figure 57 shows the Fibonacci virtual instrument completely wired. Notice that the representations of the
wires vary when they exit from various structures and functions.
These changes reflect the data type being represented. Figure 58 shows the data types used by the pre-
ferred embodiment and their representations in the block diagram. Notice that the data type output from the
15 LINEAR CURVE function in Figure 57 is a structure. This structure consists of two arrays representing the
two functions to be graphed. One function is the connected 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. Return to the front panel
by finding the edge of the hidden window and clicking to bring it to the front. The front panel window has not
2o changed and should still appear as it did in Fig. 53. To operate the front panel choose the operator tool from
the tool palette. The operator tool is the left-most glyph in the palette, with the appearance of a finger about
to press a button. This tool's hot spot is at the end of the pointed finger. Use this tool to move the pointer on
the pointer control to some value between 1 and 2O. 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 iter-
25 ations, N, to be performed by the upper control loop in the block diagram to which it is connected. To the right
of the tool palette, above the front panel window, but below 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
3o increment the loop. At the end of the loop a graph is displayed that contains two functions, the dark line is the
connected data points representing the relation between a Fibonacci number and the square of its index in
the sequence. The grey line represents the linear fit performed by the LINEAR CURVE function.
You now have a working instrument, the construction of which has used many, but not all of the working
features of the current prototype of the preferred embodiment.
35 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 forusing the sequence and ''for'' loop structures. These appendices
and Fig. 56 are probably useful as ''cheat sheets'' forthe new userafterthe firstwalk-through with the Fibonacci
virtual instrument.
4O (PICTURE)First Additional Explanation Section
OPERATE TOOL. Use this tool to operate the controls on the front panel orset constants on the block diagram.
(PICTURE)_ et or change control values
- DOUBLE-CLICK in control to select region for typing in value
45 _ Begin execution
CLICK in log or free box
_ Set or change constants on block diagram
- DOUBLE-CLICK in control to select region for typing in value
_ Duplicate control, indicator, constants or structures
5O - SeleCt objeCt, then OPTlON-CLICK and DRAG Copy
_ Clear object from front panel or Block Diagram
- select object, then chose clear from edit menu
GRABBER. Use this tool to select regions and move or resize objects.
(PICTURE)_ Select control, indicator, or non-structure object
55 - CLICK anywhere on control or indicatoron front panel, or non-structure object on block diagram
_Select structure
- CLICK on bottom or right edge of structure
_ Move object _8
EP O 242 _3_ B_
- once selected, CLICK anywhere in selected region and drag
_ Resize object
- CLICK-AND-DRAG on lower right corner to desired shape and size (sometimes it is easier to
see ''corne_' you are looking for if you select the object first)
5 WIRING TOOL. Use this tool to connect objects in the block diagram and to associate controls and indicators
w(PICTURE)ith erminals on the front panel.
_ Connect objects on the block diagram
- CLICK on first object, draw wire to second object and CLICK
- CLICK to make 9O' turn in wire
1o _ Choose Term Pane Pattern
- drop TermPane (Format menu)
- OPTlON-COMMAND-CLICK to go to next pattern
_ Associate control or indicator and terminal
- with chosen pattern visible in Term Pane, CLICK on control then CLICK on terminal
15 _ Check association of control and terminal
- CLICK on control (associated terminal will be hilighted)
_ Disassociate control or indicator and terminal
- OPTlON-CLICK on control to be disassociated
ALL TOOLS
2o (PICTURE)_ elect new tool
- CLICK on tool
_ Select menu item
- CLICK on menu bar and drag down menu
_ Drop Control, function or structure
25 - within dialog boxes, anytool may be used
_ Move windows
- CLICK-AND-DRAG on title bar ofwindow
_ Title windows
- DOUBLE-CLICK on title bar of one of the windows
3o _ Resize window to full screen
- DOUBLE-CLICK on title bar of window
_ Scroll windows
- CLICK on arrows, or inside scroll bars
_ Resize windows
35 - CLICK-AND-DRAG on grow-box in lower right corner ofwindow
(PICTURE)Second Additional Explanation Section
SEQUENCE STRUCTURE. Express explicit time dependencies, i.e., execute block diagram in frame O, then
4O f(PICTURE)rame 1 , hen frame 2.
For best results, follow this sequence.
1) Determine how may frames you want
- the first frame, O, is given when you drop the structure
- to make a new frame COMMAND-CLICK with the grabber in the upper right corner and the frame
45 number will increment
- do this for each frame desired - before filling any frames
2) Build block diagram in each frame
- select frame to work on by CLICKING with the grabber in the upper left corner
3) Awire coming into a sequence can be used in any of the frames in the sequence by wiring to the dark
5O rectangle at the border.
4) Wires leaving a sequence can only come from one source.
''FOR'' LOOP STRUCTURE. Execute block diagram within loop N times.
(PICTURE)So e hints.
1) To force the number of iterations connect a numeric control to the box in the upper left corner of the
55 structure containing an N, otherwise the loop will iterate ARRAYSIZE times
2) If new elementfrom an array is used at each iteration, the array must be outside ofthe loop. The number
of iterations will be set by the number of 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.
_9
EP O 242 _3_ B_
3) The index (boxed i) in the structure is for your use, but need not be wired up
4) When building an array by producing a value at each iteration, the array is an indicator outside of the
Ioop. Notice the scalar wire inside the loop, and array wire outside the loop structure.
5) To view intermediate values at run-time, place a scalar indicator inside the loop and connect it to the
5 wire carrying the value of interest before the wire leaves the structure.
CASE (CONDITlONAL) SELECTlON STRUCTURE. Executes the block diagram chosen by the selector.
(PICTURE)1) Same s sequence
2) Same as sequence
3) Awire coming in (same as sequence)
1o 4) All wires leaving a sequence must have sources (be wired) in every frame of the sequence.
5) The little box on the left-hand border is the selector box. At present, only numbers can be wired to it.
''WHILE'' LOOP STRUCTURE. Execute diagram within loop until test becomes false.
(PICTURE)Som hints.
1) The little box with the Q in it should receive a boolean. When the input boolean is FALSE the loop will
15 terminate. If it is not wired 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 structure is for the user's use, but it need not be wired up.
4) Arrays are not presently indexed when entering a while loop.
5) Same as ''for'' loop.
2O (PICTURE)Creating and Using Hierarchical Instruments
The capability ofthe 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
25 a hierarchy ofvirtual instruments by including previously implemented virtual instruments as ''parts'' in a new
instrument. Tofacilitate the construction ofsuch complex instruments the usermust ''prepare'' the instruments
to be included as components in an instrument hierarchy. This preparation includes defning the connections
that will exist between the ''controlling'' (superior?) and ''Component'' (inferior?) virtual instruments and de-
signing an icon to represent the ''component'' virtual instrument in the block diagram ofthe ''controlling'' virtual
3o instrument. Three items in the FORMAT menu support these features. ICON PANE, ICON EDIT PANE and
CONNECTOR PANE.
Choosing the ICON EDIT PANE option brings up the dialog box shown in Figure 59. Clicking on the ICON
button brings forth two boxes, one large and one small (see Fig. 6O). The large box is the icon editing pane.
Placing the cursor inside this box and clicking the mouse button produces a signal black square. Each square
35 will appear as a single black dot on the screen in the finished icon. Click dragging inside the box produces a
line of these squares (see Fig. 61). Clicking on existing squares removes them.
Operations inside this window are similar to the operation of MacPaint's FatBits mode. Actions performed
in the large square are mimicked in the small square. The image in the small box is the default size ofthe object
that will represent the instrument in the block diagram ofthe superior instrument. The dialog window has sev-
4O eral additional buttons formanipulating the editing pane. The CLEAR button clears the contents ofthe 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
45 returned upon choosing the REVERT button. QUIT returns the user to the front panel window.
(PICTURE)Displaying the Instrument Icon
Chosing the ICON PANE option from the FORMAT menu puts the icon, Demo here, associated with the
5O current instrument in the 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.
(PICTURE)Using the Connector Pane to Establish Terminals
55 Creating instruments to serve as components within other virtual instruments requires that input-output
connections or''terminals'' be established to provide a means fortransferring information between instruments.
These connections are established through the mechanism of the CONNECTOR PANE.
In the front panel window, selecting the CONNECTOR PANE option from the FORMAT menu places a
2O
EP O 242 _3_ B_
small rectangular pane in the upper left-hand corner of the active window (see Fig. 63). Within this pane are
several sectors, or ''terminals''. The configuration of terminals displayed in this pane represent the pattern of
''hot spots'' or terminal connections thru which information can flow between this instrument and other instru-
ments, or instrument components. There are currently eight different patterns ofconnector terminals available
5 (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 OPTlON and COMMAND keys, clicking the mouse button. Note. the cursor does not
have to be in the connector pane to shift patterns. Each click will bring 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''. To make an association between a terminal
1o in the connector pane and a control (or display) select the terminal by clicking in it with the wiring tool. The
selected terminal will turn black (see Fig. 65a). Move the cursorto the control to be associated with this terminal
and click. The selected control will be encircled by the familiar moving dashed rectangle to indicate its selected
status (see Fig. 65b). Moving the cursor off the selected control and clicking will de-select both the terminal
and the control. The connected but de-selected terminal will now appear grey to show that it is connected (see
15 Fig. 65c). Connections can be established in the opposite order also. select the control and then select the
terminal. At any later time the established 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
2o the COMMAND key and clicking. All connections can be severed by holding down both the OPTlON and COM-
MAND keys and clicking (cursor must be the wiring tool). This action brings up the dialog box shown 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 disconnected by selecting the control, holding down
the COMMAND key and clicking. All connections can be servered by holding down both the OPTlON and COM-
25 MAND keys and clicking (cursor must 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 created an icon and implemented terminal connections in the connector pane you can use
this instrumentas a component in another instrument. From the blockdiagram window, pulling down the FUNC-
TlONS menu and selecting the INSTRUMENTS option will bring up the familiar dialog box offering a choice
3o offile names in a window. Select the name ofthe instrument you wish to use in your block diagram. The dialog
box will close and the icon associated with your chose virtual instrument will appear in the block diagram win-
dow. At this point the virtual instrument object can be manipulated in exactly the same fashion as the functions
you have used previously. In the next section a simple hierarchical instrument will be constructed in which
two low-level instruments are operated through a controlling virtual instrument.
35 A(PICTURE)Hierarchial Virtual Instrument
The simple hierarchical virtual instrument we will walk through calculates the total resistance for a parallel
circuit with two resistive elements;
4O 1JR_ _ 1JR_ + 1JR_
SinCe We mUSt peffOfm SeVefal inVefSiOn OpefatiOnS tO Obtain R_, a fifSt inStfUment tO COnStfUCt iS a Simple
inverter.
Note.
45 1 . In building this hierarchial instrument it is assumed that the reader is familiar with the system as descri-
bed 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).
5o 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 in-
verted. When these elements have been wired together, their correct function should be verified by setting
55 the slide control in the front panel window should display the inverse ofthe 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-
Ievel virtual instrument. 2_
EP O 242 _3_ B_
To obtain the connection pane in the front panel window, pull down the FORMAT menu and select CON-
NECTOR PANE. This action will display a connector pane in the upper left corner of the front panel window.
With the wiring tool selected, ''toggle'' through the terminal patterns by clicking the mouse button while holding
down both the OPTlON and COMMAND keys until the two-terminal pattern is displayed (the left-most pane
5 in Fig. 63). Use the wiring tool to select the left terminal and then select the slide control. The terminal will
blacken and the slide control will be surrounded by the familiar moving dashed line when they are selected
(see Fig. 65) for the consequences ofa similar sequence ofactions). Click outside the control to complete the
connection. The selected terminal will turn grey and the moving dashed line will disappear. The grey terminal
is now ''connected'' to the slide control. The indicated portion ofthe square connector pane corresponds to the
1o 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 correspond to
the output region on the instrument's icon. When both connections are complete, both terminals in the con-
nector pane will be grey. At this time your screen display should appear similar to Fig. 64b. The next task is
to create an icon to use with the inverter instrument.
15 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 the icon editor. The inverter instrument is now ready
to be saved. From the FILE menu select CLOSE and save the instrument with a descriptive name, like IN-
VERTER.
In yOUf neXt inStfUment yOU Will USe the INVERTER inStfUment tO CaICUlate 1lR_ f_ftWO feSiStanCeS in paf-
2o allel. Figure 7O shows the front panel and block diagram for an instrument to perform this calculation. At this
point, only one new piece of information is necessary to construct this instrument. How to drop the new in-
strument 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 menu and select TILE. From within the block dia-
gram window, pull down the FUNCTlONS MENU and select INSTRUMENTS. A dialog box similar to the one
25 shown in Fig. 71 will appear.
Unless you have done this before, or are using someone else's system, only one instrument will be avail-
able. the INVERTER instrument you just created. Select this instrument by double clicking on the instrument
name (or single clicking on the name and then single clicking on the OPEN button). The dialog box will disap-
pear and your icon for the inverter instrument will appear in the block diagram window (see Fig. 72). This icon
3o now represents an object that can be moved about in the block diagram windowjust like the pre-defined func-
tions and structures you have previously used. The ''hot spot'' for wiring to and from the instrument are the
ones you specified when you connected the terminals in the connectorpane. As defined above in the connector
panel, the left half of this icon's area accepts inputs to the control which it is wired and the right half provides
output from the lower-level instrument's indicator-only control.
35 Verify that the virtual instrument correctly (see Fig. 7O) displays the sum ofthe inverses ofthe two resis-
tances set with the two front-panel controls on the present instrument. Now use the icon editor to construct
an icon for this instrument. Figure 51 shows the one used here. Finally, assign terminals to the controls and
display in the connector pane. Use the 2-to-1 terminal pattern (second from the left in Fig. 64). Close and name
the instrument.
4O Armed with the two low-level instrument you have created you are ready to implement a solution to the
pfOblem Set. COmpUte R_ fOf tWO feSiStanCeS Wifed in pafallel. FigUfe 74 ShOWS the eXample SOlUtiOn tO the
problem. Two controls are provided to provide the two resistances to be summed and an indicator-only control
is implemented to display the answer. The block diagram window shows the two quantities specified by the
front panel controls as input to the invert-and-add instrument (here named ADDlOVERR, see Fig. 75). The
45 OUtpUt ffOm thiS inStfUment iS inpUt tO the inVeftef tO yield the SOlUtiOn, R_, ShOWn in the diSplay Of the ffOnt
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 virtual instrument using native preferred embodiment func-
tions and two user-created instruments. Hierarchical virtual instruments work. Libraries of instruments can
5O be created and selected instruments can be used as components in new instruments. With the principles dem-
onstrated in this exercise you should be able to carry out your assignment and create libraries of instruments
that perform functions useful to you as an end-user.
Conclusion
55 (PICTURE)
The method of the present invention, therefore, permits the computer-aided modelling of a process using
graphical techniques which generally are more easily comprehended, especially by penons who do not pos-
sess specialized skills in computer programming techniques. The use ofa computer-generated image ofafront
22
EP O 242 _3_ B_
panel display 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 permits 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 hislher own icons; or helshe may call upon a ready-made
5 library of icons. The execution subunit executes execution instructions which are constructed in response to
the graphical images produced by a user to model a process. Thus, a user can program a computer substan-
tially by construsing a hierarchy of icons connected to one-another so as to model a process. A user, therefore,
can use the system and method ofthe present invention to program a computerto model a process using graph-
ical techniques which generally are easier to comprehend.
1o Furthermore, the method of the present invention advantageously can use data flow techniques. The use
ofthe structures, illustrated in Figs. 8-1 7, facilitates the use of such data flow techniques. By using such tech-
niques, a system modelled in block diagram form can operate in a parallel fashion, since each individual icon
in a hierarchy comprising such a block diagram, operates as soon as all input data provided to it are available.
In addition, such structures render graphical representations of block diagrams using such data flow techni-
15 ques more comprehensible to a user, and, therefore, simplify the task of using such techniques. It will be un-
derstood that the above-described embodiments and methods are merely illustrative ofmany possible specific
embodiments and methods which can represent the principles of the invention. Numerous and varied other
arrangements and methods can be readily devised in accordance with these principles without departing from
the scope ofthe invention claimed. Thus, the foregoing description is not intended to limit the invention claimed.
2O Claims
_ . A method of producing a program modelling a physical process for a computer using data flow diagram-
25 ming, wherein the computer includes a memory which stores a plurality ofexecutable functions and a plur-
ality of data ofvarious types, a display, means for receiving user input, and a data processor, the method
characterised by the steps of.
assembling, in response to user input, a data flow diagram on the display, the data flow diagram
specifying the process and including function-icons corresponding to respective ones of the plurality of
3o executable functions, terminal-icons corresponding to respective ones of the plurality of data types, a
structure-icon indicating control flow of the data flow diagram, and arcs interconnecting the function-
icons, terminal-icons, and structure-icon; and
generating an executable program in response to the data flow diagram, the executable program
including one or more of the executable functions as indicated by the function-icons and interconnected
35 as indicated by the arcs to operate upon data identified by the terminal-icons, the executable program
having control flow established as indicated by the structure-icon.
2. The method of Claim 1 , wherein the structure-icon comprises an iteration-icon and the step ofgenerating
the executable program further comprises the step of establishing iteration constructs in the executable
4o program as indicated by the iteration-icon.
3. The method of Claim 2, wherein the step of assembling the data flow diagram further comprises the step
of positioning a function-icon in the data flow diagram substantially within an iteration-icon in the data
flow diagram.
45 4. The method of Claim 2 or 3, wherein the structure-icon further comprises a shift register-icon associated
with the iteration-icon, and the step of generating the executable program further comprises the step of
including iterative feedbackcontrol constructs in the executable program as indicated by the shift register-
icon and the iteration-icon.
5O _. The method oF any preced_ing c_a_im, where_in the structure__icon compr_ises a cond_it_iona___icon, and the
step of generating the executable program further comprises the step of including conditional flow
constructs in the executable program as indicated by the conditional-icon.
6. The method of Claim 5, wherein the step of assembling the data flow diagram further comprises the step
55 of positioning one or more of the function_icons in the data flow diagram substantially within the condi_
tional-icon in the data flow diagram.
l. The method of any preceding claim, wherein the structure-icon comprises a sequence-icon, and the step
23
EP O 242 _3_ B_
ofgenerating the executable program furthercomprises the step of including sequence control constructs
in the executable program as indicated by the sequence-icon.
8. The method of Claim 7, wherein the step of assembling the data flow diagram further comprises the step
5 Of diSplaying One Of the funCtiOn-iCOnS SubStantially within the SequenCe-iCOn.
9. The method of any preceding claim, wherein the structure-icon comprises an indefinite loop icon, and
the step ofgenerating the executable program further comprises the step of including indefinite loop con-
structs in the executable program as indicated by the indefinite loop icon.
1O _ O. The method of claim 9, wherein the step of assembling the data flow diagram further comprises the step
of positioning one of the function-icons substantially within the indefinite loop icon.
__. The method of any preceding claim, further comprising the step of providing a library ofone or more user-
defined functions.
15 _2. The method of any preceding claim, wherein the function-icons include user-defined-function-icons, and
the step of generating the executable program further comprises the step of including at least one of the
one or more user-defined functions in the executable program as indicated by the user-defined-function-
ICOnS.
2O _3. The method of any preceding claim, wherein the data flow diagram is acyclic.
_4. The method ofany preceding claim, wherein-the executable program comprises a program for performing
real-time data analysis.
25 _ _. The method of any preceding claim, wherein the executable program comprises a program for simulating
an instrument.
_ 6. The method of any preceding claim, wherein the executable program and the display comprise a virtual
instrument
3O '
_ l. The method of any preceding claim, further comprising the step of assembling a plurality of data flow di-
agrams.
_ 8. The method of Claim 1 7, wherein the step of assembling the plurality of data flow diagrams further com-
35 prises the steps of including one or more data-flow-diagram-icons in at least one of the plurality of data
flow diagrams, the one or more data-flow-diagram-icons corresponding to respective ones ofthe plurality
of data flow diagrams, and interconnecting the function-icons, terminal-icons, structure-icons, and data-
flow-diagram-icons in the at least one of the plurality of data flow diagrams, by arcs in the at least one of
the plurality of data flow diagrams; and
4O the step ofgenerating the executable program further comprises the steps ofgenerating a plurality
of executable programs in response to the plurality of data flow diagrams, and linking the executable pro-
grams in response to the data-flow-diagram-icons in the at least one of the data flow diagrams.
_9. The method of any preceding claim, further comprising the step of assembling a panel on the display in
45 response to user input, the panel representing a user interface for the executable program, and wherein
the step of generating the executable program is further responsive to the panel.
2O. The method of Claim 1 9, further comprising the step of simultaneously displaying the data flow diagram
and the panel on the display.
5O 2_. The method of Claim 1 9 or 2O, further comprising the step of executing the executable program in re-
sponse to input values provided through the panel.
22. The method of Claim 1 9, 2O or 21 , wherein the step of assembling the panel further comprises the steps
of_
55 ' inCluding input tefminal-iConS in the panel, the input tefminal-iConS indiCating input valueS to tef-
minal-icons in the data flow diagram; and
including output terminal-icons in the panel, the output terminal-icons indicating output values for
24
EP O 242 _3_ B_
terminal-icons in the data flow diagram.
23. The method of Claim 22, further comprising the step of, in response to the panel, defining a relational
database in which input values and output values may be stored.
5 24. The method of Claim 22, wherein the output terminal-icons include a strip chart for displaying a history
of output values.
2_. The method of Claim 22, wherein the input terminal-icons include an input control specifying a range of
1o possible values for at least one of the input variable-icons; and
the step ofgenerating the executable program further comprises the step of including in the execu-
table program a process for detecting values falling outside the range.
26. The method ofany of Claims 22 to 25, wherein the executable program provides a procedure forcontrolling
an instrument, and further comprising the steps of.
15 ass_ign_ing va_ues to one or more oF the _input term_ina_-_icons on the pane_, to prov_ide va_ues to ter-
minal-icons in the data flow diagram; and
performing the executable program to control the instrument and generate the output values.
2l. The method of any Claims 22 to 25, wherein the executable program provides a procedure for simulating
2O a virtual instrument, and further comprising the steps of.
assigning values to one or more of the input terminal-icons on the panel, to provide the values to
terminal-icons in the data flow diagram; and
performing the executable program to simulate operation of the virtual instrument and generate
the output values.
25 28. The method of any of Claims 1 8 to 25, wherein the panel and the executable program comprise a virtual
instrument.
29. A method of producing a program modelling a physical process for a computer to execute a procedure
3o uSing data flOw diagfamming, whefein the COmputef inCludeS a memOfy whiCh StOfeS a plufality Of exeCu-
table functions and a plurality of data of various types, a display, means for receiving user input, and a
data processor, characterised in that the method comprises the steps of.
assembling a data flow diagram on the display in response to user input, the data flow diagram
specifying the process and including function-icons corresponding to respective ones of the plurality of
35 exeCutable funCtionS, tefminal-iConS CoffeSponding to feSpeCtive oneS of the plufality of data of vafiouS
types, and arcs interconnecting the function-icons and terminal-icons;
assembling a panel on the display in response to user input, the panel including input terminal-icons
for assigning input values to terminal-icons in the data flow diagram, and output terminal-icons for dis-
playing output values from terminal-icons in the data flow diagram; and
4o genefating an exeCutable pfogfam in feSponSe to the data flow diagfam and the panel, the exeCu-
table program including interconnected executable functions and data of various types as indicated by
the data flow diagram, the executable program receiving inputvalues indicated in the panel, and executing
the procedure including the process specified in the data flow diagram to generate output values for dis-
play in the panel.
45 3O. The method of Claim 29, further comprising the steps of assembling a plurality of data flow diagrams,
and assembling a plurality of panels.
3_. The method of Claim 3O, wherein.
5o the step ofassembling a plurality of data flow diagrams further comprises including, in at least one
of the plurality of data flow diagrams, one or more data-flow-diagram-icons corresponding to respective
ones of the plurality of data flow diagrams, and interconnecting the function-icons, terminal-icons, and
data-flow-diagram-icons by the arcs in the at least one of the plurality of data flow diagrams; and
the step of generating the executable program further comprises generating a plurality of execu-
55 table programs in response to the plurality of data flow diagrams, and linking the executable programs
as indicated in at least one of the plurality of data flow diagrams.
32. The method of Claim 29, 3O or 31 , wherein. 2_
EP O 242 _3_ B_
the step of assembling the data flow diagram further comprises including a structure-icon in the
data flow diagram, the structure-icon indicating control flow of the data flow diagram; and
the step of generating the executable program further comprises establishing control flow in the
executable program as indicated by the structure-icon.
5 33. The method of Claim 32, wherein the structure-icon comprises one or more of an iteration-icon, a condi-
tional-icon, a sequence-icon, and an indefinite loop-icon in the data flow diagram.
34. The method ofany of Claims 29 to 33, wherein the executable program provides a procedure forcontrolling
_o an instrument, the method further comprising the steps of.
assigning values to one or more of the input terminal-icons in the panel, to provide the values to
terminal-icons in the data flow diagram; and
performing the executable program to control the instrument and generate the output values.
_5 3_. The method of Claim 34, further comprising the step ofsetting the one or more ofthe input terminal-icons
in the panel to display the values assigned.
36. The method ofany of Claims 29 to 33, wherein the executable program provides a procedure forsimulating
a virtual instrument, the method further comprising the steps of.
assigning values to one or more of the input terminal-icons on the panel, to provide values to ter-
2O m_ina_-_icons on the data F_ow d_iagram., and
performing the executable program to simulate operation of the virtual instrument and generate
the output values.
3l. The method of Claim 36, further comprising the step ofsetting the one or more ofthe input terminal-icons
25 in the panel to display the values assigned.
Patentansprü_he
3O _ . Verfahren zum Erzeugen eines einen physischen Proze_ modellierenden Programmes füreinen Rechner
unter Verwendung eines Datenflu_diagramms, wobei der Rechner einen Speicher, welcher mehrere aus-
führbare Funktionen und mehrere Daten unterschiedlicherArten speichert, eine Anzeige, eine Vorrichtung
zum Empfangen einer Benutzereingabe und einen Datenprozessor aufweist, gekennzeichnet durch die
folgenden Verfahrensschritte.
35 Zusammensetzen eines Datenflu_diagramms auf der Anzeige abhängig von Benutzereingaben, wobei
das Datenflu_diagramm den Proze_ spezifiziert und Funktions-Piktogramme, welche jeweils einer der
mehreren ausführbaren Funktionen entsprechen, Terminal-Piktogramme, welche jeweils einzelnen der
mehreren Datenarten entsprechen, ein StrukturPiktogramm, welches den Steuerflu_ des Datenflu_dia-
gramms anzeigt, und Bögen, welche die Funktions-Piktogramme, die Terminal-Piktogramme und das
4O Struktur-Piktogramm verbin- den, aufweist, und
Erzeugen eines ausführbaren Programmes abhängig von dem Datenflu_diagramm, wobei das ausführ-
bare Programm eine oder mehrere der ausführbaren Funktionen umfa_t, welche durch die Funktions-
Piktogramme angezeigt und wie durch die Bögen angezeigt miteinander verbunden sind, um mit durch
die Terminal-Piktogramme identifizierten Daten zu arbeiten, wobei der Steuerflu_ des ausführbaren Pro-
45 grammes wie durch die Struktur-Piktogramme angezeigt verläuft.
2. Verfahren nach Anspruch 1 , bei dem das Struktur-Piktogramm ein Iterations-Piktogramm umfa_t und der
Schritt des Erzeugens des ausführbaren Programmes ferner einen Verfahrensschritt umfa_t, bei dem
Iterations-Konstrukte in dem ausführbaren Programm wie durch die Iterations-Piktogramme angezeigt
5o eingebaut werden.
3. Verfahren nach Anspruch 2, bei dem der Schritt des Zusammensetzens des Datenflu_diagramms ferner
einen Verfahrensschritt umfa_t, bei dem ein Funktions-Piktogramm in dem Datenflu_diagramm im we-
sentlichen innerhalb eines Iterations-Piktogramms in dem Datenflu_diagramm positioniert wird.
55 4. Verfahren nach Anspruch 2 oder 3, bei dem das Struktur-Piktogramm ferner ein Schieberegister-Pikto-
gramm aufweist, das dem Iterations-Piktogramm zugeordnet ist, und der Schritt des Erzeugens des aus-
führbaren Programmes ferner einen Verfahrensschritt umfa_t, bei dem iterative Regeikreis-Konstrukte
26
EP O 242 _3_ B_
in das ausführbare Programm wie durch das Schieberegister-Piktogramm und das Iterations-Piktogramm
angezeigt eingefügt werden.
_. Verfahren nach einem dervorangehenden Ansprüche, bei dem das Struktur-Piktogramm ein Bedingungs-
5 PiktOgfamm aufweiSt und def SChfitt deS EfzeugenS deS auSfühfbafen PfOgfammS fefnef einen Veffah-
rensschritt umfa_t, bei dem bedingte Flu_-Konstrukte in das ausführbare Programm wie durch die
Bedingungs-Piktogramme angezeigt eingefügt werden.
6. Verfahren nach Anspruch 5, bei dem der Schritt des Zusammensetzens des Datenflu_diagrammes ferner
_o einen Verfahrensschritt umfa_t, bei dem eine oder mehrere Funktions-Piktogramme in dem Datenflu_-
diagramm im wesentlichen innerhalb des Bedingungs-Piktogramms in dem Datenflu_diagramm positio-
niert werden.
l. Verfahren nach einem der vorangehenden Ansprüche, bei dem das Struktur-Piktogramm ein Sequenz-
_5 Piktogramm aufweist und der Schritt des Erzeugens des ausführbaren Programms ferner einen Verfah-
rensschritt umfa_t, bei dem Sequenzsteuerungs-Konstrukte in das ausführbare Programm wie durch das
Sequenz-Piktogramm angezeigt eingefügt werden.
8. Verfahren nach Anspruch 7, bei dem der Schritt des Zusammensetzens des Datenflu_diagramms ferner
einen Verfahrensschritt umfa_t, bei dem eines der Funktions-Piktogramme im wesentlichen innerhalb
2O des Sequenz-p_iktogramms angeze_igt w_ird.
9. Verfahren nach einem dervorangehenden Ansprüche, bei dem das Struktur-Piktogramm ein unbestimm-
tes Schleifen-Piktogramm aufweist und der Schritt des Erzeugens des ausführbaren Programms ferner
einen Verfahrensschritt umfa_t, bei dem unbestimmte Schleifen-Konstrukte in das ausführbare Pro-
25 gramm wie durch das unbestimmte Schleifen-piktogramm angezeigt eingefügt werden.
_ O. Verfahren nach Anspruch 9, bei dem der Schritt des Zusammensetzens des Datenflu_diagramms ferner
einen Verfahrensschritt umfa_t, bei dem eines der Funktions-Piktogramme im wesentlichen innerhalb
des unbestimmten Schleifen-Piktogramms positioniert wird.
3O __. Verfahren nach einem dervorangehenden Ansprüche, miteinem weiteren Verfahrensschritt, bei dem eine
Bibliothek aus einer oder mehreren vom Benutzer definierten Funktionen vorgesehen wird.
_2. Verfahren nach einem dervorangehenden Ansprüche, bei dem die Funktions-Piktogramme vom Benutzer
35 definierte Funktions-Piktogramme einschlie_en und der Schritt des Erzeugens des ausführbaren Pro-
gramms ferner einen Verfahrensschritt umfa_t, bei dem mindestens eine der einen oder der mehreren
vom Benutzer definierten Funktionen in das ausführbare Programm wie durch die vom Benutzer definier-
ten Funktions-Piktogramme angezeigt eingefügt werden.
4o _3. Verfahren nach einem der vorangehenden Ansprüche, bei dem das Datenflu_diagramm azyklisch ist.
_4. Verfahren nach einem dervorangehenden Ansprüche, bei dem das ausführbare Programm ein Programm
zum Ausführen einer Datenanalyse in Echtzeit umfa_t.
_ _. Verfahren nach einem dervorangehenden Ansprüche, bei dem das ausführbare Programm ein Programm
45 zum Simulieren eines Gerätes umfa_t.
_ 6. Verfahren nach einem der vorangehenden Ansprüche, bei dem das ausführbare Programm und die An-
zeige ein virtuelles Gerät umfassen.
5o _ l. Veffahfen naCh einem def vOfangehenden AnSpfüChe, mit einem weitefen VeffahfenSSChfitt, bei dem
mehrere Datenflu_diagramme zusammengesetzt werden.
_ 8. Verfahren nach Anspruch 1 7, bei dem der Schritt des Zusammensetzens der mehreren Datenflu_dia-
gramme ferner einen Verfahrensschritt umfa_t, bei dem ein oder mehrere Datenflu_diagramm-Pikto-
55 gramme in mindestens eines der mehreren Datenflu_diagramme eingefügt werden, wobei das eine oder
die mehreren Datenflu_diagramm-Piktogramme jeweils einem der mehreren Datenflu_diagramme ent-
sprechen, und die Funktions-Piktogramme, Terminal-Piktogramme, Struktur-Piktogramme und Daten-
flu_diagramm-Piktogramme in dem mindestens einen der mehreren Datenflu_diagramme durch Bögen
2l
EP O 242 _3_ B_
in dem mindestens einen der mehreren Datenflu _diagramme miteinander verbunden werden, und
der Schritt des Erzeugens des ausführbaren Programms ferner einen Verfahrensschritt umfa_t, bei dem
mehrere ausführbare Programme abhängig von den mehreren Datenflu_diagrammen erzeugt werden
und die ausführbaren Programme abhängig von den Datenflu_diagramm-Pi ktogrammen in dem minde-
5 stens einen Datenflu_diagramm verknüpft werden.
_ 9. Verfahren nach einem der vorangehenden Ansprüche, mit einem weiteren Verfahrensschritt, bei dem ein
Bedienungsfeld auf der Anzeige abhängig von Benutzereingaben zusammengesetzt wird, wobei das Be-
dienungsfeld eine Benutzerschnittstelle für das ausführbare Programm darstellt, und wobei der Schritt
_o deS EfzeugenS deS auSfühfbafen PfogfammS fefnef auf daS BedienungSfeld anSpfiCht.
2O. Verfahren nach Anspruch 1 9, mit einem weiteren Verfahrensschritt, bei dem gleichzeitig das Datenflu_-
diagramm und das Bedienungsfeld auf der Anzeige angezeigt werden.
_5 2_ . Verfahren nach Anspruch 1 9 oder 2O, mit einem weiteren Verfahrensschritt, bei dem das ausführbare Pro-
gramm abhängig von Eingabewerten ausgeführt werden, die über das Bedienungsfeld vorgesehen wer-
den.
22. Verfahren nach Anspruch 1 9, 2O oder 21 , bei dem der Schritt des Zusammensetzens des Bedienungs-
feldes ferner folgende Verfahrensschritte umfa_t.
2O E_inFu__gen von E_ingabeterm_ina_-p_i ktogrammen _in das Bed_ienungs Fe_d, wobe_i d_ie E_ingabeterm_ina_-p_i kto-
gramme Eingangswerte für die Terminal-Piktogramme in dem Datenflu_diagramm anzeigen, und
Einfügen von Ausgangsterminal-Piktogrammen in das Bedienungsfeld, wobei die Ausgangsterminal-Pi k-
togramme Ausgangswerte für Terminal-Pi ktogramme in dem Datenflu_diagramm anzeigen.
25 23. Verfahren nach Anspruch 22, mit einem weiteren Verfahrensschritt, bei dem als Reaktion auf das Bedie-
nungsfeld eine relationale Datenbank definiert wird, in der Eingangswerte und Ausgangswerte gespei-
chert werden können.
24. Verfahren nach Anspruch 22, bei dem die Ausgangsterminal-Piktogramme ein Streifendiagramm zum An-
3o zeigen der Entwicklung der Ausgangswerte umfassen.
2_. Verfahren nach Anspruch 22, bei dem die Eingangsterminal-Piktogramme eine Eingangssteuerung um-
fassen, welche einen Bereich möglicher Werte für mindestens eines der Eingangsvariablen-Pi ktogramme
spezifizieren, und
35 def SChfitt deS EfzeugenS deS auSfühfbafen PfogfammS fefnef einen V_ff_hfenSSChfitt umfa_t, bei dem
in das ausführbare Programm ein Proze_ zum Erfassen von Werten, welche au_erhalb dieses Bereichs
liegen, eingefügt wird.
26. Verfahren nach einem der Ansprüche 22 bis 25, bei dem das ausführbare Programm eine Prozedur zum
4o Steuern eines Gerätes vorsieht, und mit den weiteren Verfahrensschritten. Zuordnen von Werten zu ei-
nem oder mehreren Eingangsterminal-Piktogrammen auf dem Bedienungsfeld, um Werte für die Termi-
nal-Piktogramme in dem Datenflu_diagramm vorzusehen, und
Ausführen des ausführbaren Programmes, um das Gerät zu steuern und die Ausgangswerte zu erzeugen.
45 2l. Verfahren nach einem der Ansprüche 22 bis 25, bei dem das ausführbare Programm eine Prozedur zum
Similieren eines virtuellen Gerätes vorsieht, und mit den weiteren Verfahrensschritten.
Zuordnen von Werten zu einem oder mehreren Eingangsterminal-Pi ktogrammen auf dem Bedienungs-
feld, um die Werte für Terminal-Piktogramme in dem Datenflu_diagramm vorzusehen, und
Ausführen des ausführbaren Programmes, um einen Betrieb des virtuellen Gerätes zu simulieren und die
5o Ausgangswerte zu erzeugen.
28. Verfahren nach einem der Ansprüche 1 8 bis 25, bei dem das Bedienungsfeld und das ausführbare Pro-
gramm ein virtuelles Gerät umfassen.
29. Verfahren zum Erzeugen eines einen physischen Proze_ modellierenden Programms für einen Rechner,
55 um unter Verwendung eines Datenflu_diagramms eine prozedur auszuführen, wobei der Rechner einen
Speicher, welcher mehrere ausführbare Funktionen und mehrere Daten unterschiedlicherArten speichert,
eine Anzeige, eine Vorrichtung zum Empfangen von Benutzereingaben und einen Datenprozessor auf-
28
EP O 242 _3_ B_
weist, gekennzeichnet durch die folgenden Verfahrensschritte.
Zusammensetzen eines Datenflu_diagramms auf der Anzeige abhängig von Benutzereingaben, wobei
das Datenflu_diagramm den Proze_ spezifiziert und Funktions-Piktogramme, welche jeweils einer der
mehreren ausführbaren Funktionen entsprechen, Terminal-Piktogramme, welche jeweils einzelnen der
5 mehreren Daten der unterschiedlichen Arten entsprechen, und Bögen, welche die Funktions-
Piktogramme und die Terminal-Piktogramme verbinden, aufweist,
Zusammensetzen eines Bedienungsfeldes auf der Anzeige abhängig von Benutzereingaben, wobei das
Bedienungsfeld Eingangsterminal-Piktogramme zum Zuordnen von Eingangswerten zu Terminal-Pikto-
grammen in dem Datenflu_diagramm und Ausgangsterminal-Piktogramme zum Anzeigen von Ausgangs-
1o werten von den Terminal-Piktogrammen in dem Datenflu_diagramm aufweist, und
Erzeugen eines ausführbaren Programms in Abhängigkeit von dem Datenflu_diagramm und dem Bedie-
nungsfeld, wobei das ausführbare Programm miteinanderverbundene ausführbare Funktionen und Daten
unterschiedlicher Arten wie durch das Datenflu_diagramm angezeigt umfa_t, wobei das ausführbare Pro-
gramm Eingangswerte empfängt, welche auf dem Bedienungsfeld angezeigt werden, und wobei die Aus-
15 führung des Programms den Proze_ einschlie_t, welcher in dem Datenflu_diagramm spezifiziert wird,
um Ausgangswerte zur Anzeige auf dem Bedienungsfeld zu erzeugen.
3O. Verfahren nach Anspruch 29, mit einem weiteren Verfahrensschritt, bei dem mehrere Datenflu_diagram-
me zusammengesetzt werden und mehrere Bedienungsfelder zusammengesetzt werden.
2O 3_. Verfahren nach Anspruch 3O, bei dem
der Schritt des Zusammensetzens mehrerer Datenflu_diagramme weitere Schritte umfa_t, bei denen in
mindestens eines der mehreren Datenflu_diagramme eine oder mehrere Datenflu_diagramm-Piktogram-
me eingefügt werden, welche jeweils einem der mehreren Datenflu_diagramme entsprechen, und die
25 Funktions-Piktogramme, Terminal-Piktogramme und Datenflu_diagramm-Piktogramme durch die Bögen
in dem mindestens einen der mehreren Datenflu_diagramme verbunden werden, und
der Schritt des Erzeugens des ausführbaren Programmes weitere Schritte umfa_t, bei denen mehrere
ausführbare Programme abhängig von den mehreren Datenflu_diagrammen erzeugtwerden und die aus-
führbaren Programme wie in dem mindestens einen der mehreren Datenflu_diagramme angezeigt ver-
3o knüpft werden.
32. Verfahren nach Anspruch 29, 3O oder 31 , bei dem der Schritt des Zusammensetzens des Datenflu_dia-
grammes ferner einen Schritt umfa_t, bei dem ein Struktur-Piktogramm in das Datenflu_diagramm ein-
gefügt wird, wobei das Struktur-Piktogramm den Steuerflu_ des Datenflu_diagramms anzeigt, und
35 der Schritt des Erzeugens des ausführbaren Programms einen weiteren Schritt umfa_t, bei dem in dem
ausführbaren Programm ein Steuerflu_ wie durch das Struktur-Piktogramm angezeigt eingerichtet wird.
33. Verfahren nach Anspruch 32, bei dem das Struktur-Piktogramm eines oder mehrere oder folgenden Pik-
togramme in dem Datenflu_diagramm umfa_t. ein Iterations-Piktogramm, ein Bedingungs-Piktogramm,
ein Sequenz-Piktogramm und ein unbestimmtes Schleifen-Piktogramm.
4O 34. Verfahren nach einem der Ansprüche 29 bis 33, bei dem das ausführbare Programm eine Prozedur zum
Steuern eines Gerätes vorsieht, mit den weiteren Verfahrensschritten. Zuordnen von Werten zu einem
oder mehreren Eingangsterminal-Piktogrammen in dem Bedienungsfeld, um die Werte für die Terminal-
Piktogramme in dem Datenflu_diagramm vorzusehen, und
45 Ausführen des ausführbaren Programms, um das Gerät zu Steuern und die Ausgangswerte zu e_eugen.
3_. Verfahren nach Anspruch 34, mit ferner einem Verfahrensschritt, bei dem das eine oder die mehreren
Eingangsterminal-Piktogramme in dem Bedienungsfeld eingestellt werden, um die zugeordneten Werte
anzuzeigen.
5O 36. Verfahren nach einem der Ansprüche 29 bis 33, bei dem das ausführbare Programm eine Prozedur zum
Simulieren eines virtuellen Gerätes vorsieht, mit den weiteren Verfahrensschritten.
Zuordnen von Werten zu einem oder mehreren Eingangsterminal-Piktogrammen in dem Bedienungsfeld,
um Werte für die Terminal-Piktogramme in dem Datenflu_diagramm vorzusehen, und
55 Ausführen des ausführbaren Programms, um den Betrieb des virtuellen Gerätes zu simulieren und die
Ausgangswerte zu erzeugen.
3l. Verfahren nach Anspruch 36, mit ferner einem Verfahrensschritt, bei dem das eine oder die mehreren
29
EP O 242 _3_ B_
Eingangsterminal-Pi ktogramme in dem Bedienungsfeld eingestellt werden, um die zugeordneten Werte
anzuzeigen.
_ Revend i_ations
_ . Procédé pour produire un programme de modélisation d'un processus physique pour un calculateur uti-
lisant des ordinogrammes de données, dans lequel le calculateur comprend une mémoire qui stocke une
pluralité de fonctions exécutables et une pluralité de données de types divers, un affichage, des moyens
1o pour recevoir une entrée d'un utilisateur, et un processeur de données, le procédé étant caractérisé par
Ies étapes suivantes .
assembler, en réponse à une entrée d'un utilisateur, un ordinogramme de données sur l'affichage,
l'ordinogramme de données spécifiant le processus et comprenant des icônes de fonction correspondant
à celles correspondantes d'une pluralité de fonctions exécutables, des icônes terminales correspondant
1_ à celles correspondantes d'une pluralité de types de données, une icône de structure indiquant un trajet
de commande de l'ordinogramme de données, et des arcs reliant les icônes de fonction, icônes terminales
et icônes de structure ; et
produire un programme exécutable en réponse à l'ordinogramme de données, le programme exé-
cutable comprenant une ou plusieurs des fonctions exécutables telles qu'indiquées par les icônes de fonc-
_o tion et reliées ainsi qu'indiqué par les arcs pour fonctionner avec des données identifiées par les icônes
terminales, le programme exécutable ayant un trajet de commande établi ainsi qu'indiqué par l'icône de
structure.
2. Procédé selon la revendication 1 , dans lequel l'icône de structure comprend une icône d'itération, et l'éta-
__ pe de production du programme exécutable comprend en outre l'étape consistant à établir des construG
tions d'itération dans le programme exécutable tel qu'indiqué par l'icône d'itération.
3. Procédé selon la revendication 2, dans lequel l'étape d'assemblage de l'ordinogramme de données
comprend en outre une étape consistant à positionner une icône de fonction dans l'ordinogramme de don-
3o nées pratiquement à l'intérieur d'une icône d'itération dans l'ordinogramme de données.
4. Procédé selon la revendication 2 ou 3, dans lequel l'icône de structure comprend en outre une icône de
registre à décalage associée à l'icône d'itération, et l'étape de production du programme exécutable
comprend en outre l'étape consistant à inclure des constructions de commande itérative en boucle fermée
3_ dans le programme exécutable ainsi qu'indiqué par l'icône de registre à décalage et l'icône d'itération.
_. Procédé selon l'une quelconque des revendications précédentes, dans lequel l'icône de structure
comprend une icône de condition, et l'étape de production du programme exécutable comprend en outre
l'étape consistant à inclure des constructions de séquences conditionnelles de données dans le program-
me exécutable ainsi qu'indiqué par l'icône de condition.
4O 6. Procédé selon la revendication 5, dans lequel l'étape d'assemblage de l'ordinogramme de données
comprend en outre l'étape consistant à positionner une ou plusieurs icônes de fonction dans l'ordinogram-
me de données pratiquement à l'intérieur de l'icone de condition dans l'ordinogramme de données.
4_ l. Procédé selon l'une quelconque des revendications précédentes, dans lequel l'icône de structure
comprend une icône de séquence, et l'étape de production du programme exécutable comprend en outre
l'étape consistant à inclure des constructions de commande de séquence dans le programme exécutable
ainsi qu'indiqué par l'icône de séquence.
_o 8. Procédé selon la revendication 7, dans lequel l'étape d'assemblage de l'ordinogramme de données
comprend en outre l'étape consistant à afficher une des icônes de fonction pratiquement à l'intérieur de
l'icône de séquence.
9. Procédé selon l'une quelconque des revendications précédentes, dans lequel l'icône de structure
__ comprend une icône de boucle indéfinie, et l'étape d'assemblage de l'ordinogramme de données
comprend en outre l'étape consistant à inclure des constructions à boucle indéfinie dans le programme
exécutable ainsi qu'indiqué par l'icône de boucle indéfinie.
3O
EP O 242 _3_ B_
_ O. Procédé selon la revendication 9, dans lequel l'étape d'assemblage de l'ordinogramme de données
comprend en outre l'étape consistant à positionner une des icônes de fonction pratiquement à l'intérieur
de l'icône de boucle indéfinie.
5 __. PfOCédé SelOn l'une queICOnque deS fevendiCatiOnS pféCédenteS, COmpfenant en Outfe l'étape COnSiStant
à fournir une librairie d'une ou plusieurs fonctions définies par l'utilisateur.
_2. Procédé selon l'une quelconque des revendications précédentes, dans lequel les icônes de fonction
comprennent des icones de fonction définie par l'utilisateur, et l'étape de création du programme exécu-
_o table comprend en outre l'étape consistant à inclure au moins une parmi une ou plusieurs des fonctions
définies par l'utilisateur dans le programme exécutable ainsi qu'indiqué par les icônes de fonction définie
par l'utilisateur.
_3. Procédé selon l'une quelconque des revendications précédentes, dans lequel l'ordinogramme de données
_5 est acyclique.
_4. Procédé selon l'une quelconque des revendications précédentes, dans lequel le programme exécutable
comprend un programme pour effectuer une analyse de données en temps réel.
_ _. Procédé selon l'une quelconque des revendications précédentes, dans lequel le programme exécutable
2O comprend un programme pour simuler un instrument.
_ 6. Procédé selon l'une quelconque des revendications précédentes, dans lequel le programme exécutable
et l'affichage comprennent un instrument virtuel.
25 _ l. PfOCédé SelOn l'une queICOnque deS fevendiCatiOnS pféCédenteS, COmpfenant en Outfe l'étape COnSiStant
à assembler une pluralité d'ordinogrammes de données.
_ 8. Procédé selon la revendication 1 7, dans lequel l'étape d'assemblage d'une pluralité d'ordinogrammes de
données comprend en outre les étapes consistant à inclure une ou plusieurs icônes d'ordinogramme de
3o données dans au moins un parmi la pluralité d'ordinogrammes de données, celle parmi une ou plusieurs
icônes d'ordinogramme de données correspondant à celles correspondantes de la pluralité d'ordinogram-
mes de données, et à interconnecter les icônes de fonction, les icônes terminales, les icônes de-structure
et les icônes d'ordinogramme de données, dans au moins l'un de la pluralité d'ordinogrammes de don-
nées, par des arcs dans au moins l'un de la pluralité d'ordinogrammes de données ; et
35 l'étape de création du programme exécutable comprend en outre les étapes consistant à créer une
pluralité de programmes exécutables en réponse à la pluralité d'ordinogrammes de données, et à lier les
programmes exécutables en réponse aux icônes d'ordinogramme de données dans au moins l'un des or-
dinogrammes de données.
4o _9. Procédé selon l'une quelconque des revendications précédentes, comprenant en outre l'étape consistant
à assembler un panneau sur l'affichage en réponse à une entrée de l'utilisateur, le panneau représentant
une interface d'utilisateur pour le programme exécutable, et dans lequel l'étape de création du programme
exécutable est en outre sensible au panneau.
2O. Procédé selon la revendication 1 9, comprenant en outre l'étape consistant à afficher simultanément sur
45 l,aFF_ichage l,ord_inogramme de donne_es et le panneau.
2_. Procédé selon la revendication 1 9 ou 2O, comprenant en outre l'étape consistant à exécuter le programme
exécutable en réponse à des valeurs d'entrée fournies par l'intermédiaire du panneau.
5o 22. Procédé selon la revendication 1 9, 2O ou 21 , dans lequel l'étape consistant à assembler le panneau
comprend en outre les étapes suivantes .
inclure dans le panneau des icônes terminales d'entrée, les icônes terminales d'entrée indiquant
des valeurs d'entrée à des icônes terminales dans l'ordinogramme de données ; et
inclure dans le panneau des icônes terminales de sortie, les icônes terminales de sortie indiquant
55 des valeurs de sortie pour des icônes terminales dans l'ordinogramme de données.
23. Procédé selon la revendication 22, comprenant en outre l'étape consistant, en réponse au panneau, à
définir une base de données relationnelle dans laquelle des valeurs d'entrée et des valeurs de sortie peu-
3_
EP O 242 _3_ B_
vent être stockées.
24. Procédé selon la revendication 22, dans lequel les icônes terminales d'entrée comprennent un diagramme
à bandes pour afficher un historique de valeurs de sortie.
5 2_. Procédé selon la revendication 22, dans lequel les icônes terminales d'entrée comprennent une comman-
de d'entrée spécifiant une gamme de valeurs possibles pour au moins une des icônes de variable d'en-
trée ; et
l'étape de création du programme exécutable comprend en outre l'étape consistant à inclure dans
_o le programme exécutable un processus pour détecter des valeurs situées en dehors de la gamme.
26. Procédé selon l'une quelconque des revendications 22 à 25, dans lequel le programme exécutable fournit
une procédure pour commander un instrument, et comprenant en outre les étapes suivantes .
assigner des valeurs à une ou plusieurs des icônes terminales d'entrée sur le panneau afin de four-
_5 nir des valeurs aux icônes terminales dans l'ordinogramme de données ; et
exécuter le programme exécutable pour commander l'instrument et produire les valeurs de sortie.
2l. Procédé selon l'une quelconque des revendications 22 à 25, dans lequel le programme exécutable fournit
une procédure pour simuler un instrument virtuel, et comprenant en outre les étapes suivantes .
assigner des valeurs à une ou plusieurs des icônes terminales d'entrée sur le panneau afin de four-
2O n_ir _es va_eurs aux _ico_ nes term_ina_es dans _,ord_inogramme de donne_es ., et
exécuter le programme exécutable pour simuler le fonctionnement de l'instrument virtuel et pro-
duire les valeurs de sortie.
28. Procédé selon l'une quelconque des revendications 1 8 à 25, dans lequel le panneau et le programme exé-
25 cutable comprennent un instrument virtuel.
29. Procédé pour produire un programme de modélisation d'un processus physique afin qu'un calculateur
exécute une procédure utilisant des ordinogrammes de données, dans lequel le calculateurcomprend une
mémoire qui stocke une pluralité de fonctions exécutables et une pluralité de données de types divers,
3o un affichage, des moyens pour recevoir une entrée d'un utilisateur, et un processeur de données, carac-
térisé en ce que le procédé comprend les étapes suivantes .
assembler, en réponse à une entrée de l'utilisateur, un ordinogramme de données sur l'affichage,
l'ordinogramme de données spécifiant le processus et comprenant des icônes de fonction correspondant
à celles correspondantes d'une pluralité de fonctions exécutables, des icônes terminales correspondant
35 à celles correspondantes de la pluralité de données de types divers, et des arcs reliant les icônes de fonc-
tion et les icônes terminales ;
assembler un panneau sur l'affichage en réponse à une entrée de l'utilisateur, le panneau compre-
nant des icônes terminales d'entrée pour assigner des valeurs d'entrée à des icônes terminales dans l'or-
dinogramme de données, et des icônes terminales de sortie pour afficher des valeurs de sortie à partir
4o d'icones terminales dans l'ordinogramme de données ; et
produire un programme exécutable en réponse à l'ordinogramme de données et au panneau, le
programme exécutable comprenant des fonctions exécutables interconnectées et des données de divers
types ainsi qu'indiqué par l'ordinogramme de données, et exécuter la procédure comprenant le processus
spécifié dans l'ordinogramme de données afin de produire des valeurs de sortie pour un affichage dans
45 le panneau.
3O. Procédé selon la revendication 29, comprenant en outre les étapes consistant à assembler une pluralité
d'ordinogrammes de données et à assembler une pluralité de panneaux.
5o 3_. Procédé selon la revendication 3O, dans lequel .
l'étape d'assemblage d'une pluralité d'ordinogrammes de données comprend en outre d'inclure,
dans au moins un de la pluralité d'ordinogrammes de données, une ou plusieurs icônes d'ordinogramme
de données correspondant à ceux correspondants de la pluralité d'ordinogrammes de données, et de re-
lier les icônes de fonction, icônes terminales, et icônes d'ordinogramme de données par les arcs dans au
55 moins l'une de la pluralité d'ordinogrammes de données ; et
l'étape de création du programme exécutable comprend en outre de produire une pluralité de pro-
grammes exécutables en réponse à la pluralité d'ordinogrammes de données, et de lier les programmes
exécutables comme indiqué dans au moins un de la pluralité d'ordinogrammes de données.
32
EP O 242 _3_ B_
32. Procédé selon la revendication 29, 3O ou 31 , dans lequel .
l'étape d'assemblage de l'ordinogramme de données comprend en outre d'inclure une icône de
structure dans l'ordinogramme de données, l'icône de structure indiquant un trajet de commande de l'or-
dinogramme de données ; et
5 l'étape de création du programme exécutable comprend en outre d'établir un trajet de commande
dans le programme exécutable ainsi qu'indiqué par l'icône de structure.
33. Procédé selon la revendication 32, dans lequel l'icône de structure comprend une ou plusieurs parmi une
icône d'itération, une icône de condition, une icône de séquence, et une icône de boucle indéfinie dans
_o l'ofdinogfamme de donnéeS.
34. Procédé selon l'une quelconque des revendications 29 à 33, dans lequel le programme exécutable fournit
une procédure pour commander un instrument, le procédé comprenant en outre les étapes suivantes .
assigner des valeurs à une ou plusieurs des icônes terminales d'entrée dans le panneau afin de
_5 fournir des valeurs aux icônes terminales dans l'ordinogramme de données ; et
exécuter le programme exécutable pour commander l'instrument et produire les valeurs de sortie.
3_. Procédé selon la revendication 34, comprenant en outre l'étape consistant à placer celle ou celles des
icônes terminales d'entrée dans le panneau afin d'afficher les valeurs assignées.
2O 36. proce_de_ se_on _,une que_conque des revend_icat_ions 2g a_ 33, dans _eque_ _e programme exe_cutab_e Fourn_it
une procédure pour simuler un instrument virtuel, le procédé comprenant en outre les étapes suivantes .
assigner des valeurs à une ou plusieurs des icônes terminales d'entrée sur le panneau afin de four-
nir des valeurs aux icônes terminales dans l'ordinogramme de données ; et
exécuter le programme exécutable pour simuler le fonctionnement de l'instrument virtuel et pro-
25 du_ire _es va_eurs de sort_ie.
3l. Procédé selon la revendication 36, comprenant en outre l'étape consistant à placer celle ou celles des
icônes terminales d'entrée dans le panneau afin d'afficher les valeurs assignées.
3O
35
4O
45
5O
55 33
(PICTURE)
. . (PICTURE)
_2O
6
FIG. _ _
FlG.-a _
(PICTURE)
EP O 242 _3_ B_ __
_
_
3_
(PICTURE)
EP O 242 _3_ B_ __
_
_
36
(PICTURE)
EP O 242 _3_ B_ __
_
k
3l
(PICTURE)
EP O 242 _3_ B_
(PICTURE)64
_
(PICTURE)'''''(PICTURE)
'_ ''''''' ''''''_ 62
E SAMPLES
F _ __ _ 6
38
(PICTURE)(PICTURE) (PICTURE)
(PICTURE)
EPO242_3_B_
SEQUENCE STRUCTURE CoN_lT_oNA_ STRuCTuRe
(PICTURE)
FIG.-8 (PICTURE)
F. lG.-lO
ITERATlVE LOOP STRUCTURE l_CteFINITE tOOP STRUCTURE
FIG.-_ FIG.- Il
SHIFT REGISTER ON EACH LOOP STRUCTURE -
FIG. -l2
39
EP O 242 _3_ B_
(PICTURE)
O 4O
EPO242_3_B_
__
(PICTURE)
4 _ O-
- -4_
EPO242_3_B_
O
N-.
4_ _ u
4Z _ Z u Z
iW_ i __ _ __
jô j ô j O
(PICTURE)
__ _ _ _ i
-__
_
-_
- - 42
EP O 242 _3_ B_
4 _
q Z _ Z
_ __ _ __
_ O _ o
__ __ __ '_ __
_ _ _ _
(PICTURE)
O O o o . x .
_-_
_
_
_
_
43
_
EPO242_3_B_
4 _
4 _ _ _
__ __
_j O _j O
ii_ __ ii_ __
_ _ j _
(PICTURE)
O O _
_1- q 4 _
_ Z
_ W
- _ Cto_
Z_
- Z-
44
_
(PICTURE)
EPO242_3_B_
_7
lt_
7
O -4_ -
(PICTURE)
EPO242_3_B_
VlRTUAL lNSTRUMENT
OATA STRUCTURE OlAGRAM
_E_END_. ' FIG__l_A
sysTeMoBJEcT _
SYSTEM CLASS (PICTURE)
ONE-TO-MANY (PICTURE)
(SOURCE CONTAINS ZERO OR MORE OEsTl_ATlON OBJECTS)
ONE-7O-ONE -- ----_ -
(SouRCE REFERENCES ZERO OR ONE DESTINATION OBJECTS)
FIG.- I__
46
(PICTURE) (PICTURE)
EPO242_3_B_
4 _
g _o
_ _
(PICTURE)
_ k (PICTURE)
' k
_
4
_
_
4
O
U_
O_
_
__
Z
4_
_Z
O
_
_ N _
4l
EPO242_3_B_
_ _
O__ O_
_ _
(PICTURE)
. k (PICTURE)
k
(PICTURE)_ (PICTURE)_
48
(PICTURE)
EPO242_3_B_ 5
FIG.-2OE
(PICTURE)6
FIG.-2OF
(PICTURE) 7
FIG.-2OG
(PICTURE)8
,, FIG.-.2OH
9 (PICTURE) FIG.-2O_
IO (PICTURE) FIG.-2O_
'' (PICTURE) FlG.-2OK
'2 (PICTURE) FIG.-2- OL
EP O 242 _3_ B_ _
_ W
G _
(PICTURE)
N W
__ _
O_ _
_ _
-_
4 _
_ _
k
O
O
_
_
_
X
-_
O
_Cf
W__
__
(PICTURE)
EP O 242 _3_ B_ __
l_
_
_2
(PICTURE)
lD
___
_
_
_4
. _o __ '
g_ _
_3 _-
(PICTURE)
EP O 242 _3_ B_ ___
_
k
_4
(PICTURE)
EP O 242 _3_ B_ _
__
_
k
__
(PICTURE)
EP O 242 _3_ B_ ___
_
k
_6
(PICTURE)
EP O 242 _3_ B_ h
__
_
-k
_l
(PICTURE)
EP O 242 _3_ B_ _
hli
_
_
_8
(PICTURE)
(PICTURE)
FIG. - 2_
F l G. - 3O
(PICTURE)
EP O 242 _3_ B_ _-i
_
_
6O
(PICTURE)
EP O 242 _3_ B_ _
_i
_
_
6_
(PICTURE)
(PICTURE)F iG.-33 F l G. - 34
NUM_ER OF (PICTURE)'
ITERAT_O__ (PICTURE)
lNPUT
ARRAY FlG._35
ITERATlON
NUM_ER (PICTURE)(PICTURE)(PICTURE)
FIG.- 3. 6
(PICTURE)
(PICTURE)
EPO242_3_ B_
NO IN_E_lNG
RE_UCT_ON FlG.- 3_
_(PICTURE)
__E_F NOOE
_T NOOE_ F l G.-3_ _
F _G - 3_
6_3
(PICTURE)(PICTURE)F IG.-(PICTURE)4O
(PICTURE) FIG.-4(PICTURE)l
F I G.' ,,- 42 -
(PICTURE)(PICTURE)
EPO242_3_ B_
F l G, _ 4_
F l G. - 4Q
6_
(PICTURE)(PICTURE)
EPO242_3_ B_
_ IG, -__
' F l G. - 46
66
(PICTURE)
(PICTURE)
EPO242_3_ B_
_ l G. _4_
F l G. - Q_
6l
(PICTURE)
(PICTURE)
EPO242_3_ B_
_l G. - 4_
_ F l G. -5O
68
(PICTURE)
(PICTURE)Fl G. _ _ _
F l G.,,- 52
_
(PICTURE)(PICTURE)
EPO242_3_B_
_lG____
F._ JG. -_Q
lO
(PICTURE)
EP O 242 _3_ B_ _
__
_
k-
l_
Ae>
RlTHMETlC FuNCT_oNS
ADO ' NuM_gC _gg
_ SuBT_A.CT NUMERlC Ul NUME_lC
e> c -- o op b
MULTIPLy
_ DIVlOE
COMPARATIVE Fu_CTlo__
_ E_uAL _
_ NNUuM_EeRglg_e _l_ARy
@J GREATER-THAN ' '
Eg p __ __ _p b
LESS-THAN
lNPuT OU7PUT FuN_TloN_
_ _p _ B ffeAo _NpuOTUMg__M___p___ Nouu_TEpRugTC
_ GpE B _ffgTe COMMANo STR_Ne __ ouMMy
_ AOORESS STRINe ___ STRgN_
OTHER FuNCTgoNS
_ STRING FffE_ue_Cy _ po_ER SuppLy
BUILOSTRING AMpL_Tuoe _ ooMMAND STffgNG
_ ffSAIGMNpALGePRNE_RAETSoSR S7E_ __ _Mp
_ CURVE FgT AffRAy g3
_ _
Ll NEAR FIT Y_-- Aff_Ay LIN_E_AARpHFgT
F l,G, . - 56
(PICTURE)
EPO242_3_B_
FIG. ___
_ _UMBER
_ A_RAy oF NuMgE_
_ MULT__lMEN_lON_ A_RAy oF NuMgQ_
_ BOOUA_
_ ARRAY OF BOOLEA__
_ MULTl_lMEN_lONAL ARRAY oF BooLEAN_
_ STRl__
_ ARRAY OF STRJN__
q MULTlDIMEN_loN_ ARRAy oF STRl__
_ STRUCTURES
-------_ BA_ CO__ECTlO_ _
FIG. -58
l3
(PICTURE)
(PICTURE)F l G. -__ _
F IG. ,-, 6O
(PICTURE)
(PICTURE)_lG. - _l _
F l G,., -62
(PICTURE)
EPO242_3_B_
F_G. _6_ '
(PICTURE)(PICTURE)(PICTURE)FIG(PICTURE). -(PICTURE)64 (PICTURE)(PICTURE)
l6
(PICTURE)
(PICTURE)FIG._(PICTURE)
65_'
FIG.-65_ ,, FIG.-65C
(PICTURE)
(PICTURE)FIG.-(PICTURE)
66.
FIG.-67 ,, FlG.-68
(PICTURE)
(PICTURE)_lG. - 6_ _
Fl,G, . -7O
(PICTURE)
_
(PICTURE)FlG. -7l
FIG,,. -' 72 _
(PICTURE)
EP O 242 _3_ B_
F l G_ _7_
8_
_(PICTURE)
(PICTURE)Fl_.-_4 .
_ F_ IG,,.-_5 _