|
|
|
| United States Patent | 5481741 |
| Link to this page | http://www.wikipatents.com/5481741.html |
| Inventor(s) | McKaskle; Greg (Austin, TX);
Kodosky; Jeffrey L. (Austin, TX) |
| Abstract | A system and method for providing attribute nodes in a data flow diagram
which allow a user to programmatically access various parameters of a
control or indicator. In this manner, a user can programmatically make
changes that affect the output or appearance of controls and indicators. A
user can also access these parameters interactively during execution of a
block diagram. A user can creates an attribute node containing one or more
attributes corresponding to controls that affect a parameter of the
control, such as the color used for the respective display, the visibility
of the control, the scales or cursor position for respective graphs or
charts, etc. The purpose of an attribute node is to affect the visual
output of a control provided on the front panel depending on events which
occur during execution of a VI or on user input during execution of a VI.
An attribute node thus allows the execution subsystem to monitor user
interaction by reading attribute data that previously was not available to
the program. An attribute node allows two types of operations, these being
reading an attribute node or writing to an attribute node. These
operations of reading and writing an attribute node can be performed
either by a block diagram during execution, wherein the user has
programmed the block diagram to perform this function, or interactively by
the user during execution. The process of writing to an attribute node
refers to the execution subsystem updating an attribute of a control in
the front panel display to reflect an attribute that has been set
programmatically in a block diagram. The user can also "write" to an
attribute node by providing input to a control in the front panel during
execution of a block diagram. Reading an attribute node refers to the
execution subsystem reading the value of an attribute for a certain
control during block diagram execution that may have been changed by the
user, or may have been changed during execution of a VI by the execution
subsystem. Reading an attribute also refers to the user viewing changes to
the attribute during execution. |
|
|
|
Title Information  |
|
|
|
|
|
Drawing from US Patent 5481741 |
|
|
Method and apparatus for providing attribute nodes in a graphical data
flow environment |
|
|
|
|
|
| Publication Date |
January 2, 1996 |
|
|
|
|
|
| Filing Date |
September 22, 1993 |
|
|
|
|
|
|
|
|
|
|
|
| Parent Case |
This is a continuation-in-part of copending application Ser. No.
07/979,416, now U.S. Pat. No. 5,291,587, filed Nov. 19, 1992 for
"Graphical System for Executing a Process and for Programming a Computer
to Execute a Process, Including Graphical Variable Inputs and Variable
Outputs" and assigned to National Instruments, which is a continuation of
Ser. No. 07/376,257 filed Jul. 6, 1989, now abandoned, which was a
continuation of Ser. No. 06/851,569 filed Apr. 14, 1986, which is now U.S.
Pat. No. 4,901,221.
Reservation of Copyright
A portion of the disclosure of this patent document contains material to
which a claim of copyright protection is made. The copyright owner has no
objection to the facsimile reproduction by anyone of the patent document
or the patent disclosure as it appears in the Patent and Trademark Office
patent file or records, but reserves all other rights whatsoever. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
|
|
|
| Market Size |
|
Estimate the gross annual revenues of the relevant market
sector:
|
| | |
| |
|
|
| Market Share |
|
Estimate the percentage of the relevant market sector this invention will capture:
|
| | |
| |
|
|
| Reasonable Royalty |
|
What percentage of gross sales should the inventor or assignee be paid?
|
| | |
| |
|
|
|
Public's "Guesstimation" of Royalty Value
|
| Market Size | N/A | [No votes] | | x | Market Share | N/A | [No votes] | | x | Reasonable Royalty | N/A | [No votes] |
| | N/A | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
Market Review  |
|
|
Technical Review  |
|
|
Claims  |
|
|
We claim:
1. A computer implemented method for programmatically affecting an
attribute of a control in a data flow program in a computer system
including a video screen, means for creating a graphical data flow
diagram, and means for creating a panel associated with said data flow
diagram for displaying data input to and output from said data flow
diagram, the method comprising the computer implemented steps of:
displaying on the screen a first panel;
displaying on the screen a first control which displays data, wherein said
first control is comprised in said first panel;
displaying on the screen a first function icon that references a function
icon control means for controlling a first function;
displaying on the screen an attribute node icon associated with said first
control, wherein the attribute node icon references an attribute control
means for programmatically affecting an attribute of said first control;
assembling on the screen a data flow diagram including the first function
icon and the attribute node icon, wherein the first function icon is
connected to the attribute node icon and wherein the function icon control
means provides data to the attribute control means during execution of the
data flow diagram, wherein said first panel is associated with said data
flow diagram and wherein said first control in said first panel displays
input or output data from said data flow diagram;
executing the data flow diagram;
the function icon control means writing a value to the attribute control
means to affect said attribute of said first control during said step of
executing; and
changing said attribute of said first control after said step of the
function icon control means writing said value to the attribute control
means to affect said attribute of said first control.
2. The method of claim 1, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon, the first function icon
and the attribute node icon.
3. The method of claim 1, wherein said first control includes a plurality
of attributes and wherein said attribute control means programmatically
affects said plurality of attributes of said first control;
wherein said step of the function icon control means writing a value
comprises the function icon control means writing values to said attribute
control means to affect said plurality of attributes of said first control
during said step of executing.
4. The method of claim 3, wherein said attribute node icon lists said
plurality of attributes of said first control, wherein said plurality of
attributes are listed sequentially;
wherein said step of the function icon control means writing values
comprises the function icon control means writing values to said attribute
control means sequentially according to said sequential listing of
attributes in said attribute node icon to affect said plurality of
attributes of said first control during said step of executing.
5. The method of claim 1, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
displaying on the screen a second control in said first panel;
displaying on the screen a second terminal icon that references said second
control prior to said step of assembling;
wherein said first control displays data input to the data flow diagram and
said second control displays data output from the data flow diagram;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon and the second terminal
icon and the first function icon and the attribute node icon, wherein the
data flow diagram displays a first procedure for producing a value for the
second terminal icon from a value provided by the first terminal icon.
6. The method of claim 1, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
displaying on the screen a second control in said first panel;
displaying on the screen a second terminal icon that references said second
control prior to said step of assembling;
wherein said second control displays data input to the data flow diagram
and said first control displays data output from the data flow diagram;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon and the second terminal
icon and the first function icon and the attribute node icon, wherein the
data flow diagram displays a first procedure for producing a value for the
first terminal icon from a value provided by the second terminal icon.
7. The method of claim 1, wherein said attribute comprises an element of
the appearance of said first control.
8. The method of claim 1, wherein said attribute comprises one or more of
the group consisting of: size, color, range, scale, visibility, disabled,
and key focus.
9. The method of claim 1, wherein said first control comprises one of the
group consisting of: digital numeric control, color numeric control,
rotary control, slide control, fill control, ring control, color ramp,
table, waveform chart, waveform graph, XY graph, intensity chart, and
intensity graph.
10. The method of claim 1, wherein said control comprises a waveform graph,
wherein said attribute comprises one or more of the group consisting of:
active cursor, cursor name, cursor color, cursor grid style, cursor point
style, cursor locked, cursor plot, cursor index, cursor location, cursor X
location, cursor Y location, cursor list, and smooth update.
11. The method of claim 1, wherein said control comprises a waveform graph
having a cursor, wherein said attribute comprises an attribute of said
cursor.
12. A computer implemented method for programmatically accessing an
attribute of a control in a data flow program in a computer system
including a video screen, means for creating a graphical data flow
diagram, and means for creating a panel associated with said data flow
diagram for displaying data input to and output from said data flow
diagram, the method comprising the computer implemented steps of:
displaying on the screen a first panel;
displaying on the screen a first control which displays data, wherein said
first control is comprised in said first panel;
displaying on the screen a first function icon that references a function
icon control means for controlling a first function;
displaying on the screen an attribute node icon associated with said first
control, wherein the attribute node icon references an attribute control
means for programmatically accessing an attribute of said first control;
assembling on the screen a data flow diagram including the first function
icon and the attribute node icon, wherein the attribute node icon is
connected to the first function icon and wherein the attribute control
means provides data to the function icon control means during execution of
the data flow diagram, wherein said first panel is associated with said
data flow diagram and wherein said first control in said first panel
displays input or output data from said data flow diagram;
executing the data flow diagram;
receiving input from a user during said step of executing to change said
attribute of said first control;
the attribute control means reading said attribute of said first control
and generating a value indicative thereof during said step of executing;
the attribute control means providing said value to said function icon
control means during said step of executing; and
the function icon control means computing a value using said value received
from the attribute control means during said step of executing.
13. The method of claim 12, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon, the first function icon,
and the attribute node icon.
14. The method of claim 12, wherein said first control includes a plurality
of attributes and wherein said attribute control means programmatically
accesses said plurality of attributes of said first control;
wherein said step of the attribute control means providing said value
comprises the attribute control means providing a plurality of values to
said function icon control means during said step of executing.
15. The method of claim 14, wherein said attribute node icon lists said
plurality of attributes of said first control, wherein said plurality of
attributes are listed sequentially;
wherein said step of the attribute control means providing said plurality
of values comprises the attribute control means providing said plurality
of values sequentially according to said sequential listing of attributes
in said attribute node icon during said step of executing.
16. The method of claim 12, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
displaying on the screen a second control in said first panel;
displaying on the screen a second terminal icon that references said second
control prior to said step of assembling;
wherein said first control displays data input to the data flow diagram and
said second control displays data output from the data flow diagram;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon and the second terminal
icon and the first function icon and the attribute node icon, wherein the
data flow diagram displays a first procedure for producing a value for the
second terminal icon from a value provided by the first terminal icon.
17. The method of claim 12, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
displaying on the screen a second control in said first panel;
displaying on the screen a second terminal icon that references said second
control prior to said step of assembling;
wherein said second control displays data input to the data flow diagram
and said first control displays data output from the data flow diagram;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon and the second terminal
icon and the first function icon and the attribute node icon, wherein the
data flow diagram displays a first procedure for producing a value for the
first terminal icon from a value provided by the second terminal icon.
18. The method of claim 12, wherein said step of the attribute control
means providing said value comprises the attribute control means providing
said value to said function icon control means to enable said function
icon control means to determine said attribute of said first control
during said step of executing.
19. The method of claim 12, wherein said attribute comprises an element of
the appearance of said first control.
20. The method of claim 12, wherein said attribute comprises one or more of
the group consisting of: size, color, range, scale, visibility, disabled,
and key focus.
21. The method of claim 12, wherein said first control comprises one of the
group consisting of: digital numeric control, color numeric control,
rotary control, slide control, fill control, ring control, color ramp,
table, waveform chart, waveform graph, XY graph, intensity chart, and
intensity graph.
22. The method of claim 12, wherein said control comprises a waveform
graph, wherein said attribute comprises one or more of the group
consisting of: active cursor, cursor name, cursor color, cursor grid
style, cursor point style, cursor locked, cursor plot, cursor index,
cursor location, cursor X location, cursor Y location, cursor list, and
smooth update.
23. The method of claim 12, wherein said control comprises a waveform graph
having a cursor, wherein said attribute comprises an attribute of said
cursor.
24. A computer implemented method for programmatically accessing an
attribute of a control in a data flow program in a computer system
including a video screen, means for creating a graphical data flow
diagram, and means for creating a panel associated with said data flow
diagram for displaying data input to and output from said data flow
diagram, the method comprising the computer implemented steps of:
displaying on the screen a first panel;
displaying on the screen a first control which displays data, wherein said
first control is comprised in said first panel;
displaying on the screen a first function icon that references a first
function icon control means for controlling a first function;
displaying on the screen a second function icon that references a second
function icon control means for controlling a second function;
displaying on the screen an attribute node icon associated with said first
control, wherein the attribute node icon references an attribute control
means for programmatically accessing an attribute of said first control;
assembling on the screen a data flow diagram including the first function
icon, the second function icon, and the attribute node icon, wherein the
first function icon is connected to the attribute node icon and wherein
the attribute node icon is connected to the second function icon, wherein
said first panel is associated with said data flow diagram and wherein
said first control in said first panel displays input or output data from
said data flow diagram;
executing the data flow diagram;
the first function icon control means writing a value to the attribute
control means to affect said attribute of said first control during said
step of executing; and
the second function icon control means reading a value from the attribute
control means to access said attribute of said first control during said
step of executing.
25. The method of claim 24, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon, the first function icon
and the attribute node icon.
26. The method of claim 24, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
displaying on the screen a second control in said first panel;
displaying on the screen a second terminal icon that references said second
control prior to said step of assembling;
wherein said first control displays data input to the data flow diagram and
said second control displays data output from the data flow diagram;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon and the second terminal
icon, the first function icon, the second function icon and the attribute
node icon, wherein the data flow diagram displays a first procedure for
producing a value for the second terminal icon from a value provided by
the first terminal icon.
27. The method of claim 24, further comprising:
displaying on the screen a first terminal icon that references said first
control prior to said step of assembling;
displaying on the screen a second control in said first panel;
displaying on the screen a second terminal icon that references said second
control prior to said step of assembling;
wherein said second control displays data input to the data flow diagram
and said first control displays data output from the data flow diagram;
wherein said step of assembling comprises assembling on the screen the data
flow diagram including the first terminal icon and the second terminal
icon and the first function icon and the second function icon and the
attribute node icon, wherein the data flow diagram displays a first
procedure for producing a value for the first terminal icon from a value
provided by the second terminal icon.
28. The method of claim 24, wherein said attribute comprises an element of
the appearance of said first control.
29. The method of claim 24, wherein said attribute comprises one or more of
the group consisting of: size, color, range, scale, visibility, disabled,
and key focus.
30. The method of claim 24, wherein said first control comprises one of the
group consisting of: digital numeric control, color numeric control,
rotary control, slide control, fill control, ring control, color ramp,
table, waveform chart, waveform graph, XY graph, intensity chart, and
intensity graph.
31. The method of claim 24, wherein said control comprises a waveform
graph, wherein said attribute comprises one or more of the group
consisting of: active cursor, cursor name, cursor color, cursor grid
style, cursor point style, cursor locked, cursor plot, cursor index,
cursor location, cursor X location, cursor Y location, cursor list, and
smooth update.
32. The method of claim 24, wherein said control comprises a waveform graph
having a cursor, wherein said attribute comprises an attribute of said
cursor.
33. A computer implemented method for programming a computer system
including a video screen, means for creating a graphical data flow
diagram, and means for creating a panel associated with said data flow
diagram for displaying data input to and output from said data flow
diagram, the method comprising the computer implemented steps of:
displaying on the screen a first panel;
displaying on the screen a first control in said first panel, wherein said
first control displays data;
displaying on the screen a second control in said first panel, wherein said
second control displays data;
displaying on the screen a first terminal icon that references said first
control;
displaying on the screen a second terminal icon that references said second
control;
displaying on the screen a first function icon that references a function
icon control means for controlling a first function;
displaying on the screen an attribute node icon associated with said first
control that references an attribute control means for programmatically
affecting an attribute of said first control;
displaying on the screen a connector pane icon having a plurality of
terminals for linking said first and second terminal icons, wherein said
connector pane icon has associated connector control means for linking
controls;
assigning said first control to a first terminal of said connector pane
icon;
assigning said second control to a second terminal of said connector pane
icon;
assembling on the screen a data flow diagram including the first terminal
icon and the second terminal icon and the first function icon and the
attribute node icon, wherein said first and second controls display data
in said data flow diagram;
executing the data flow diagram;
propagating control data from said first control to said second control in
a first data structure during said step of executing; and
propagating attribute data between said attribute control means and said
second control using a second data structure. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to graphical systems for creating and
executing data flow programs, and more specifically to a method and
apparatus for providing attribute nodes in a graphical data flow
environment.
2. Description of the Related Art
A computer system can be envisioned as having a number of levels of
complexity. Referring now to FIG. 1, the lowest level of a computer system
may be referred to as the digital logic level. The digital logic level
comprises the computer's true hardware, primarily consisting of gates
which are integrated together to form various integrated circuits. Other
hardware devices include printed circuit boards, the power supply, memory,
and the various input/output devices, among others. Gates are digital
elements having one or more digital inputs, signals representing 0 or 1
states, and which compute an output based on these inputs according to a
simple function. Common examples of gates are AND gates, OR gates, etc. It
is also noted that there is yet another level below level 0 which can be
referred to as the device level. This level deals with the individual
transistors and semiconductor physics necessary to construct the gates
comprising the digital logic level.
The next level, referred to as level 1, is referred to as the
microprogramming level. The microprogramming level is essentially a hybrid
between computer hardware and software. The microprogramming level is
typically implemented by software instructions stored in ROM (read only
memory), these instructions being referred to as microcode. The
microprogramming level can be thought of as including various interpreters
comprised of sequences of microcode which carry out instructions available
at the machine language level, which is at level 2. For example, when an
instruction such as an arithmetic or shift function appears at the machine
language level, this instruction is carried out one step at a time by an
interpreter at the microprogramming level. Because the architecture of the
microprogramming level is defined by hardware, it is a very difficult
level in which to program. Timing considerations are frequently very
important in programming at this level and thus usually only very skilled,
experienced microprogrammers operate at this level.
As mentioned above, the level above the microprogramming level is referred
to as the machine language level. The machine language level comprises the
1's and 0's that a program uses to execute instructions and manipulate
data. The next level above the machine language level is referred to as
the assembly language level. This level includes the instruction set of
the computer system, i.e. the various op codes, instruction formats, etc.
that cause the computer to execute instructions. In assembly language each
instruction produces exactly one machine language instruction. Thus, there
is a one to one correspondence between assembly language instructions and
machine language instructions. The primary difference is that assembly
language uses very symbolic human-readable names and addresses instead of
binary ones to allow easier programming. For example, where a machine
language instruction might include the sequence "101101," the assembly
language equivalent might be "ADD." Therefore, assembly language is
typically the lowest level language used by programmers, and assembly
language programming requires a skilled and experienced programmer.
The next level includes high level text-based programming languages which
are typically used by programmers in writing applications programs. Many
different high level programming languages exist, including BASIC, C,
FORTRAN, Pascal, COBOL, ADA, APL, etc. Programs written in these high
level languages are translated to the machine language level by
translators known as compilers. The high level programming languages in
this level, as well as the assembly language level, are referred to in
this disclosure as text-based programming environments.
Increasingly computers are required to be used and programmed by those who
are not highly trained in computer programming techniques. When
traditional text-based programming environments are used, the user's
programming skills and ability to interact with the computer system often
become a limiting factor in the achievement of optimal utilization of the
computer system.
There are numerous subtle complexities which a user must master before he
can efficiently program a computer system in a text-based environment. For
example, text-based programming environments have traditionally used a
number of programs to accomplish a given task. Each program in turn often
comprises one or more subroutines. Software systems typically coordinate
activity between multiple programs, and each program typically coordinates
activity between multiple subroutines. However, in a text-based
environment, techniques for coordinating multiple programs generally
differ from techniques for coordinating multiple subroutines. Furthermore,
since programs ordinarily can stand alone while subroutines usually cannot
in a text-based environment, techniques for linking programs to a software
system generally differ from techniques for linking subroutines to a
program. Complexities such as these often make it difficult for a user who
is not a specialist in computer programming to efficiently program a
computer system in a text-based environment.
The task of programming a computer system to model a process often is
further complicated by the fact that a sequence of mathematical formulas,
mathematical steps or other procedures customarily used to conceptually
model a process often does not closely correspond to the traditional
text-based programming techniques used to program a computer system to
model such a process. For example, a computer programmer typically
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 the retrieval of data from
different memory storage locations to implement a procedure which could be
conceptualized by a user in terms of a functional block. In other words,
the requirement that a user program in a text-based programming
environment places a level of abstraction between the user's
conceptualization of the solution and the implementation of a method that
accomplishes this solution in a computer program. Thus, a user often must
substantially master different skills in order to both conceptually model
a system and then to program a computer to model that system. Since a user
often is not fully proficient in techniques for programming a computer
system in a text-based environment to implement his model, the efficiency
with which the computer system can be utilized to perform such modeling
often is reduced.
One particular field in which computer systems are employed to model
physical systems is the field of instrumentation. An instrument is a
device which collects information from an environment and displays this
information to a user. Examples of various types of instruments include
oscilloscopes, digital multimeters, pressure sensors, etc. Types of
information which might be collected by respective instruments include:
voltage, resistance, distance, velocity, pressure, frequency of
oscillation, humidity or temperature, among others. An instrumentation
system ordinarily controls its constituent instruments from which it
acquires data which it analyzes, stores and presents to a user of the
system. Computer control of instrumentation has become increasingly
desirable in view of the increasing complexity and variety of instruments
available for use.
In the past, many instrumentation systems comprised individual instruments
physically interconnected. Each instrument typically included a physical
front panel with its own peculiar combination of indicators, knobs, or
switches. A user generally had to understand and manipulate individual
controls for each instrument and record readings from an array of
indicators. Acquisition and analysis of data in such instrumentation
systems was tedious and error prone. An incremental improvement in the
manner in which a user interfaced with various instruments was made with
the introduction of centralized control panels. In these improved systems,
individual instruments were wired to a control panel, and the individual
knobs, indicators or switches of each front panel were either preset or
were selected to be presented on a common front panel.
A 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 executing on the computer system through the video
monitor rather than through a manually operated front panel. These earlier
improved instrumentation systems provided significant performance
efficiencies over earlier systems for linking and controlling test
instruments.
However, these improved instrumentation systems had significant drawbacks.
For example, due to the wide variety of possible testing situations and
environments, and also the wide array of instruments available, it was
often necessary for a user to develop a program to control the new
instrumentation system desired. As discussed above, computer programs used
to control such improved instrumentation systems had to be written in
conventional text-based programming languages such as, for example,
assembly language, C, FORTRAN, BASIC, or Pascal. Traditional users of
instrumentation systems, however, often were not highly trained in
programming techniques and, in addition, traditional text-based
programming languages were not sufficiently intuitive to allow users to
use these languages without training. Therefore, implementation of such
systems frequently required the involvement of a programmer to write
software for control and analysis of instrumentation data. Thus,
development and maintenance of the software elements in these
instrumentation systems often proved to be difficult.
U.S. Pat. No. 4,901,221 to Kodosky et al discloses a graphical system and
method for modeling a process, i.e. a graphical programming environment
which enables a user to easily and intuitively model a process. The
graphical programming environment disclosed in Kodosky et al can be
considered the highest and most intuitive way in which to interact with a
computer. Referring now to FIG. 1A, a graphically based programming
environment can be represented at level 5 above text-based high level
programming languages such as C, Pascal, etc. The method disclosed in
Kodosky et al allows a user to construct a diagram using a block diagram
editor such that the diagram created graphically displays a procedure or
method for accomplishing a certain result, such as manipulating one or
more input variables to produce one or more output variables. As the user
constructs the data flow diagram using the block diagram editor, machine
language instructions are automatically constructed which characterize an
execution procedure which corresponds to the displayed procedure.
Therefore, a user can create a text-based computer program solely by using
a graphically based programming environment. This graphically based
programming environment may be used for creating virtual instrumentation
systems and modeling processes as well as for any type of general
programming.
Therefore, Kodosky et al teaches a graphical programming environment
wherein a user manipulates icons in a block diagram using a block diagram
editor to create a data flow "program" or virtual instrument (VI). In
creating a virtual instrument, a user first creates a front panel
including various controls or indicators that represent the respective
input and output that will be used by the VI. When the controls and
indicators are created in the front panel, corresponding icons or
terminals are automatically created in the block diagram by the block
diagram editor. The user then chooses various functions that accomplish
his desired result, connecting the corresponding function icons between
the terminals of the respective controls and indicators. In other words,
the user creates a data flow program, referred to as a block diagram,
representing the graphical data flow which accomplishes his desired
function. This is done by wiring up the various function icons between the
control icons and indicator icons. The manipulation and organization of
icons in turn produces machine language that accomplishes the desired
method or process as shown in the block diagram. A user then optionally
chooses a connector pane representing the input and output terminals
corresponding to the respective controls and indicators already created.
Once the controls and indicators have been placed on the front panel and a
connector pane has been selected, a user will then associate respective
terminals on the connector pane to the respective controls and indicators
on the front panel. For example, if a connector pane having three
terminals has been selected, and two controls and one indicator are
created on the front panel, the user can designate respective terminals on
the connector pane to correspond to the respective controls and indicators
on the front panel.
A user inputs data to a virtual instrument using front panel controls. This
input data propagates through the data flow block diagram or graphical
program and appears as changes on the output indicators. The data that
flows from the controls to the indicators in this manner is referred to as
control data. In an instrumentation application, the front panel can be
analogized to the front panel of an instrument. The user adjusts the
controls on the front panel to affect the input and views the output on
the respective indicators.
While a user could adjust the input to the virtual instrument using
controls on the front panel and view the corresponding change in output on
indicators on the front panel, the user could not affect any other changes
to the front panel during execution. For example, the user often desired
to change the appearance of a control, i.e. write to a control, on the
front panel during execution of a program to provide a more meaningful and
more intuitive visual display. For example, it would be highly desirable
that the user be able to move cursors on a graph to select points as input
to further parts of the block diagram. It would also be desirable for a
data flow program or block diagram to have the ability to programmatically
change the appearance of a control or write to a control during execution.
For example, the user may want the block diagram to automatically change
the display colors on an indicator depending on whether a certain output
is above or below a certain level. One example of this is where the user
wants the output of an indicator to show up in green if a given process
being modelled is running in a normal manner and show up in red if the
process is operating at undesirable levels. The user may also want to be
able to program the block diagram to automatically hide certain controls
or indicators when they are not in use.
In the method and apparatus described in Kodosky et al., it was not
possible for the user to programmatically control the appearance of the
front panel during execution other than control data that appeared as
conventional output data. Therefore, a method and apparatus is desired to
enable a user to set and read various attributes which affect the
appearance of controls on a front panel programmatically and can also
enable the user to provide interactive input that can be read by a block
diagram as it is executing.
SUMMARY OF THE INVENTION
The present invention comprises a system and method which allows a user to
programmatically access various parameters of a control or indicator. In
this manner, a user can programmatically make changes that affect the
output or appearance of controls and indicators. A user can also access
these parameters interactively during execution of a block diagram. In the
preferred embodiment of the invention, a user can create an object
referred to as an attribute node corresponding to a control containing one
or more attributes that affect parameters of the control, such as the
color used for the respective display, the visibility of the control, the
scales or cursor position for respective graphs or charts, etc. The
parameters of a control or indicator on the front panel which can be
programmatically accessed according to the present invention are referred
to as attributes.
An attribute node is associated with a control on the front panel and
operates to provide a more meaningful visual output to the user. The
purpose of an attribute node is to affect the visual output of a control
provided on the front panel depending on events which occur during
execution of a VI or on user input during execution of a VI. An attribute
node thus allows the execution subsystem to monitor user interaction by
reading attribute data that previously was not available to the program. A
control may be referred to as a data source, whereas an indicator may be
referred to as a data sink. An attribute node operates on panel display
elements regardless of whether the data flow happens to be from a data
source or a data sink.
An attribute node allows two types of operations, these being reading from
an attribute node or writing to an attribute node. These operations of
reading and writing an attribute can be performed either by a block
diagram during execution, wherein the user has programmed the block
diagram to perform this function, or interactively by the user during
execution. The process of writing to an attribute node refers to the
execution subsystem updating an attribute of a control in the front panel
display to reflect an attribute that has been set programmatically in a
block diagram. The user can also "write" to an attribute by providing
input to or manipulating a control in the front panel during execution of
a block diagram. Reading an attribute node refers to the execution
subsystem reading the value of an attribute for a certain control during
block diagram execution that may have been changed by the user, or may
have been changed during execution of a VI by the execution subsystem. The
user can also view changes to the attribute during execution. Some
attributes can be changed by a user and practically all can be changed by
the execution subsystem. Therefore, during execution of a VI, the process
of writing to an attribute node corresponds to changing the front panel
display and thus affecting what the user actually sees. The step of
reading an attribute node does not actively change the front panel, but
allows the program to see how the user or block diagram is changing the
front panel. Knowing this, the program can make further decisions, thus
greatly increasing the flexibility of a VI.
BRIEF DESCRIPTION OF THE DRAWINGS
The purpose and advantages of the present invention will be apparent to
those skilled in the art from the following detailed description in
conjunction with the appended drawings in which:
FIG. 1 illustrates various levels of complexity in a computer system
according to the prior art;
FIG. 1A illustrates the various levels of complexity of a computer system
including a graphical programming environment as the highest level;
FIG. 2 is a block diagram illustrating a system for modeling a process
according to the present invention;
FIG. 3 is an illustrative drawing of a representation of a virtual
instrument produced using the system of FIG. 2;
FIG. 4 shows a block diagram of an instrumentation system including the
system of FIG. 2;
FIG. 5 is a representative drawing of various choices for an illustrative
hardware instrumentation system of the preferred embodiment;
FIG. 5A is an illustrative hardware instrumentation system of the preferred
embodiment;
FIG. 6 is a block diagram of the computer system of FIGS. 5 and 5A;
FIG. 7 shows a block diagram representing an exemplary data flow system;
FIG. 8A illustrates a virtual instrument data structure diagram used by the
system of FIG. 2 and the instrumentation system of FIG. 4;
FIG. 8B shows a legend applicable to the illustration of FIG. 8A;
FIGS. 9A-L are flowchart diagrams illustrating operation of the execution
subsystem of FIGS. 2 and 4;
FIG. 10 shows an illustrative front panel produced using the front panel
editor of the instrumentation system of FIG. 4;
FIG. 11 shows an illustrative icon produced using the icon editor of the
instrumentation system of FIG. 4;
FIG. 12A shows a graphical representation of a sequence structure;
FIG. 12B shows a graphical representation of an iterative loop structure;
FIG. 12C shows a graphical representation of a conditional structure;
FIG. 12D shows a graphical representation of an indefinite loop structure;
FIG. 12E shows a graphical representation of shift registers on the
indefinite loop structure of FIG. 12D.
FIG. 13 shows an illustrative block diagram generally corresponding to the
graphical representation of a sequence structure shown in FIG. 12A;
FIG. 14 shows an illustrative block diagram generally corresponding to the
graphical representation of an iterative loop structure shown in FIG. 12B;
FIG. 15 shows an illustrative block diagram generally corresponding to the
graphical representation of a conditional structure shown in FIG. 12C;
FIG. 16 shows an illustrative block diagram generally corresponding to the
graphical representation of an indefinite loop structure shown in FIG.
12D;
FIG. 17 shows an illustrative block d | | |