WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Computer language structure for process control applications and method of translating same into program code to operate the computer    
United States Patent5247693   
Link to this pagehttp://www.wikipatents.com/5247693.html
Inventor(s)Bristol; Edgar H. (Foxboro, MA)
AbstractA language structure and translator specifically adapted for use in constructing computer programs for controlling chemical and physical processing. The translator converts to compilable code programs written as statements expressing control intentions or results. Each textual function and statement is expressed as a data structure which expresses the function, as configured, and the state and values most recently calculated for the relevant variables. Provision is made for treating the program structure (i.e., control connections, program order and components, etc.) as a part of the dynamic state of the application. Graphical symbols, or icons, are employed to draw the eye to critical features in the control program and to lead the eye through critical interrelationships among the several commands of a complicated control system. At the same time, the translator treats the keystrokes generating these icons as statements (i.e., commands) which define the relationships among other associated program statements (which are usually textual commands), to control the order in which the operations represented by those statements are executed.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5247693
Computer language structure for process control applications and method

     of translating same into program code to operate the computer - US Patent 5247693 Drawing
Computer language structure for process control applications and method of translating same into program code to operate the computer
Inventor     Bristol; Edgar H. (Foxboro, MA)
Owner/Assignee     The Foxboro Company (Foxboro, MA)
Patent assignment
All assignments
Publication Date     September 21, 1993
Application Number     07/978,180
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     November 17, 1992
US Classification     717/139 345/440 700/83
Int'l Classification     G06F 015/46
Examiner     Harrell; Robert B.
Assistant Examiner     Geckil; Mehmet
Attorney/Law Firm     Wolf, Greenfield & Sacks
Address
Parent Case     This application is a continuation of application Ser. No. 07/344,492, filed Apr. 26, 1989 and now abandoned, which was a continuation of application Ser. No. 07/165,190 filed Mar. 7, 1988 and now abandoned, which was a continuation of application Ser. No. 06/785,575 filed Oct. 8, 1985, now U.S. Pat. No. 4,736,320, issued Apr. 5, 1988.
Priority Data    
USPTO Field of Search     395/800 395/700 395/140 364/188 364/191
Patent Tags     computer language control applications method translating into program code operate computer
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4975865
Carrette
700/10
Dec,1990

[0 after 0 votes]
4823255
Tanaka
700/86
Apr,1989

[0 after 0 votes]
4737919
Kanamori
700/181
Apr,1988

[0 after 0 votes]
4736320
Bristol
717/109
Apr,1988

[0 after 0 votes]
4695977
Hansen
379/93.14
Sep,1987

[0 after 0 votes]
4663704
Jones
700/83
May,1987

[0 after 0 votes]
4656603
Dunn
715/835
Apr,1987

[0 after 0 votes]
4628435
Tashiro
700/1
Dec,1986

[0 after 0 votes]
4570217
Allen
700/83
Feb,1986

[0 after 0 votes]
4547847
Olig
700/52
Oct,1985

[0 after 0 votes]
4546435
Herbert
717/109
Oct,1985

[0 after 0 votes]
4490781
Kishi
700/86
Dec,1984

[0 after 0 votes]
4470107
Daab
700/24
Sep,1984

[0 after 0 votes]
4451895
Sliwkowski
715/863
May,1984

[0 after 0 votes]
4315315
Kossiakoff
717/109
Feb,1982

[0 after 0 votes]
4227245
Edblad
700/95
Oct,1980

[0 after 0 votes]
4215406
Gomola
700/95
Jul,1980

[0 after 0 votes]
4215407
Gomola
700/95
Jul,1980

[0 after 0 votes]
3668653
Fair
700/1
Jun,1972

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A method of operating a computer system to form computer program code from user programmed source statements indicative of process control operations, the source statements including textual statements of process control intentions, wherein a process control intention specifies a control objective without specifying detailed, implementing calculations, each statement of process control intentions comprising (a) a representation of a regulatory function to be implemented in a process control system controlled by the computer system, (b) an identification of a dependent, control variable to be controlled within the process control system and (c) a list of independent, controlling variables to be used by the regulatory function in controlling the dependent variable, the process control system being formed and described in part by a plurality of elements, interconnections between said elements and control variables having time-variant values, and the statements of process control intentions establishing a plurality of control calculations to be performed in a sequence to be determined, such method comprising the steps of:

a. when configuring the system using the source statements, the computer system allocating memory areas in the computer system for receiving and retaining the values of control variables and information describing the interconnections of elements in the process control system;

b. at a run time when the source statements are first encountered, the computer system automatically determining the sequence of control calculations according to a required order of execution of the control calculations needed to carry out the regulatory function and the interconnections between the elements and the control variables; and

c. at a sample time when one of the source statements is active during a process control operation, the computer system executing the plurality of control calculations in the order of execution determined at run time.

2. A method of operating a computer system responsive to user programmed source statements, called IDIOMS, indicative of process control operations, to effectuate interconnection and operation of components of a system to be controlled, each IDIOM including a statement of control intention translatable automatically into context-dependent control instructions, the method comprising the steps of:

(a) at control system configuration time, for each IDIOM, the computer system setting aside in memory any control blocks needed to store adjustments to values of respective control parameters and to establish control connections based on the permanent aspects of system context;

(b) at run time, the computer system automatically configuring control calculations to implement an IDIOM when the IDIOM is to be executed including automatically determining a computation sequence according to a required order of execution of the control calculations needed to carry out the control intention and the control connections established at the control system configuration time;

(c) at system sample time, the computer system executing the control calculations in accordance with the computation sequence determined in the configuring step; and

(d) after execution of the control calculations implementing the IDIOM, the computer system automatically disconnecting the control calculations.

3. A method of operating a computer system to form computer program code from user programmed source statements, comprising the steps of:

providing a set of source statements including textual statements of process control intentions, wherein a process control intention specifies a control objective without specifying detailed, implementing calculations, each statement of process control intentions comprising

(a) a representation of a regulatory function to be implemented in a process control system controlled by the computer system,

(b) an identification of a dependent, control variable to be controlled within the process control system, and

(c) a list of independent controlling variables to be used by the regulatory function in controlling the dependent control variable; and

translating for each occurrence of a textual statement during computer system operation, the source statement into a set of conventional, more-detailed commands that cause the computer to generate control signals usable by the process control system to implement the regulatory function.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

This invention relates to the field of computer languages and translators, as well as to the field of control systems. More particularly, it relates to a method (i.e., an applications-oriented computer language structure and a translator therefor, such as an interpreter or compiler) for developing, describing and implementing process control system for a wide variety of industrial applications. The translator accommodates the writing of programs in terms of self-documenting statements of control objectives or intentions.

BACKGROUND AND OBJECTS OF THE INVENTION

The present invention has broad application in a wide range of computer-driven control applications and analogous enviroments. Its virtues and operation will best be understood if it is described in the context of a specific type of control system, rather than in the abstract. For convenience, the context for explanatory purposes will be the field of industrial process control; it should be appreciated, however, that this is simply an exemplary context and is not limiting of the invention.

Industrial process control, as that term is used herein, refers to the control of manufacturing processes in industries wherein a product is, in at least some significant stage of production, a homogeneous fluid capable of being flowed in pipes or a stream of particles capable of being moved by a conveyor belt. The product can be operated upon by simple actuators such as valves, baffles and deflectors and its state can be determined (or at least estimated) by simple probing and sampling sensors. Typical industries included within this framework are those which manufacture petroleum products, chemicals, power, paper, and films, metals, textiles, plastics, foods, drugs, cement, and, increasingly, semiconductors.

Industrial processing systems, such as systems for preparing chemical compounds and for controlling other complex operation, frequently implement lengthy and highly detailed procedures. These procedures may involve hundreds, or even thousands, of steps in which various process parameters are monitored and selected process variables are controlled in predefined functional relationships which depend on the monitored parameters. Frequently, the control of such steps involves monitoring one or more measurements and initiating an action or setting a parameter (such as a temperature, pressure, composition, rate of change, amount of change, or the like) in response to the value or condition of the monitored measurement. Additionally, such procedures determine and control when individual processing steps are initiated as well as when they are terminated. Many of these steps typically must be performed in an established temporal relationship relative to one or more other steps. That is, step "x" is begun only after step "y" has been completed, or some predefined interval before or after step "y"; or steps "x" and "y" are carried out concurrently.

There are many ways in which industrial process control systems can be categorized or classified. One of the most basic categorizations groups systems into so-called "batch control" systems (or processes) and so-called "continuous control" systems. In continuous processes, production material is flowed through a series of processing units in such a way that each unit performs a logically independent production step. In batch processing, by contrast, the production material is placed in a vessel (the batch processing unit) with various pieces of support equipment. That equipment may perform multiple production steps, such as heating, cooling, and pressurizing the vessel. A batch process may carry out all production by itself or it may be arranged in a production line with other batch processes or with continuous units.

In some situations, an entire processing complex may occupy more than one square mile. With such a large facility, organization has a significant effect on efficiency. A processing complex typically may be organized into a hierarchy of (from bottom to top) units, processes and plants. At the lowest levels, the elements may be integrated in an appropriate manner governed by the requirement of meeting the detailed stoichiometric requirements involved in producing a given product. At higher levels, processing may be more flexibly arranged and rearranged to respond to the needs of the business (e.g., to take advantage of the processing units which happen to be available at the time there is a desire to manufacture a given product). The present invention, which is explained below, addresses the lower levels, where there is a desire for a highly integrated automation of control processing; it is well-suited to developing both batch control and continuous control systems. The scheduling and rearrangement of the higher level processing resources is the role of process management, not process control, and is therefore outside the scope of this invention.

In batch processing, the sequencing of the production procedure is divided hierarchically into various levels of operation. The divisions are made generally along the lines of stages of production, operator intervention and monitoring. This facilitates the use of a plant for producing a variety of products. The physical plant resources may be shared so that these products may be produced at different times while using some or all of the same production equipment, either by rearranging the processing or by using the same procedure but varying parameters to yield a different grade of product.

Control automation in this environment must provide a method for imposing control procedures in a relatively simple form.

It is also highly desireable that the control automation process automate the record-keeping associated with the production of each lot, based on the control parameterization and sources of raw materials used therefor; this is important since there is often a need or desire, at some later time, to be able to identify the source of particular characteristics in a product.

Further, a given industrial process may have to be adjusted or changed from time to time--for example, to accomodate a substitution of raw materials or to make an improvement to the product. It is therefore important that the users of a computer-controlled processing plant be able to identify the portions (and the specific instructions) of the control program which require revision. In the past, these requirements have given rise to a need for extensive documenting of such programs, parameters and materials. This level of documentation is only achieved at considerable expense. And undocumented changes could be difficult to detect and analyze.

Various computer languages have been used in the past for developing and implementing process control procedures. These languages have included general purpose computer languages such as FORTRAN, BASIC, PASCAL, C and other high-level textually-oriented programming languages, as well as specially adapted variants of such languages. Other languages used for process control applications have included graphic features such as block diagrams and ladder diagrams, either by themselves or in conjunction with textual language features; these graphic features, however, typically have no command significance. Moreover, most such prior languages share certain characteristics. For example, they typically require the user to follow a rigid control format using a general purpose instruction set. Further, they provide at best an awkward connection between control functions. These drawbacks are often the result of trying to employ a highly generalized and highly structured language which is implementation oriented instead of being intention oriented. That is, the instruction sets of those prior languages typically emphasize the implementation of an operation as a series of instructions, whereas the control system designer is concerned with what he is seeking to accomplish (i.e., his intentions). Consequently, the control system designer, though generally not interested in the details of how the machine implements each control operation, is forced to become a computer programmer. Many of the errors introduced in system control programs are believed to be the result of the constant need for mental translation which this regime imposes on the designer.

One result of this situation has been an attempt to develop programming strategies to minimize the translation effort. The most obvious of these strategies is the use of subroutines. Subroutines, however, are of only limited benefit. They help when the subroutine requires only a few arguments which act only once each time the subroutine is called. When there are many arguments which must be passed between the main program and the subroutine, though, the subroutine call becomes confusing and the order and meaning of its arguments becomes difficult to remember. Further, it can be an onerous task to link up every argument; and the format is made even more awkward when any of the arguments is optional.

Ambiguity is also a problem in most general purpose programming languages. For example, the expression I=1 could represent a direct calculation, a flag setting, a loop initialization, or some other operation. By contrast, application functions are not likely to be this general.

Another result of the conflict between the application orientation of the control designer and the implementation orientation of general purpose programming languages is that control programs written in such languages require an extensive documentation effort, if they are to be intelligible to future users and are to be capable of being modified from time to time. The documentation activity typically is two-fold. First, the source code for the program must be supported with extensive textual comments. Second, a written manual or the like must be prepared to explain the logical organization and features of the program, nomenclature of variables and labels, and other appropriate information. Consequently, each time the program is modified, the comments in the source code must be revised and the manual must be updated. With a large control program which is being used and modified by a number of people, the support effort needed to maintain up to date documentation is substantial.

It is therefore an object of the present invention to overcome some of these deficiencies by providing a new type of language structure (and translator therefor) specifically suitable for use in designing and documenting control systems.

It is a further object of the present invention to provide a computer language structure and translator which allow a control system designer to program in terms of the control functions he desires to implement, rather than in terms of the computer's internal details.

Another object of the invention is to provide a computer language structure for use in developing programs to control process operations, such that control programs developed therewith are largely self-documenting.

A still further object of the invention is to provide a computer language structure in which the temporal relationships between controlled processes is readily apparent to a reader of a program listing.

Yet another object of the invention is to provide a data structure for a programming environment in which the supporting details for carrying out control operations are segregated from expressions of control intentions, so as to enhance representation of the control intentions.

Still another object is to provide a programming environment for control system programming in which statements of control intentions can be expressed clearly and with little or no ambiguity.

SUMMARY OF THE INVENTION

These objects are achieved in the present invention by the provision of a novel language structure and translator; that is, a new method of operating and programming a computer system and a computer system thus controlled. The statements employed in this language structure are action-oriented and are specifically adapted for use in constructing process control programs. From these control-oriented statements, appropriate program code may be generated for operation of a computer to implement the desired control functions.

In its most complete implementation, this language structure exhibits the following characteristics: (1) it organizes the control system into logically distinct application subsystems according to processing and control activities; (2) it provides distinct representations for logically different control activities; (3) it orders the display of configured data to make it predictable and easy to read and understand; (4) it represents and displays the program structure graphically, in a way which guides the eye to and through critical relationships; (5) it employs command statements which define precise application function roles, to reduce ambiguity in the underlying intent and in the relationships between the functional elements of a control program; and (6) it uses logical and/or standard application functions and practices to account for implied configuration activities.

Graphical symbols, or icons, are employed to draw the eye to critical features in the control program and to lead the eye through critical interrelationships among the several commands of a complicated control system. At the same time, the translator treats these icons as statements (i.e., commands) which define the relationships among other associated program statements (which are usually textual commands). While prior languages designed for development of documentation have used somewhat similar graphical symbol systems to make the documentation more readable, those graphical symbols have been only passive in nature and have not also served as command statements. Thus this language structure uses as commands a mixture of textual statements and graphic symbols.

Examples are shown below of specific commands for use in a language comporting with these characteristics and adapted for use in an industrial process environment. The invention, however, does not require the use of any specific set of command statments. Other command sets can and will be readily conceived to comport with this novel language concept. Indeed, in applications other than that shown herein, it will be necessary to provide a suitable set of commands which reflects the control or other functions to be implemented.

Every textual function and statement in the present invention is expressed as a data structure. The data structure expresses the function, as configured, and the state and values most recently calculated for the relevant variables. The program structure (i.e., control connections, program order and components, etc.) is considered to be as much a part of the state of the application as any process data, and as dynamic.

The invention is pointed out with particularity in the appended claims. The above and further objects, features and advantages of the invention may be better understood by referring to the following detailed description, which should be read in conjunction with the accompanying drawing.

BRIEF DESCRIPTION OF THE DRAWING

In the drawing,

FIG. 1A is a listing of a short routine illustrating three so-called IDIOM-type statements of process control of the type employed by the present invention, wherein the control intentions are immediately apparent in the formulation of each control statement;

FIG. 1B is a schematic diagram of a debutanizer bottom composition control system to which the example of FIG. 1A relates;

FIG. 1C is a diagrammatic illustration of an exemplary IDIOM according to the present invention, further illustrating the relationship between the IDIOM and its Command Feedback and State ASPECTS;

FIG. 2 is a diagrammatic illustration of the relationships between the various specially formatted portions (referred to as "PAGEs") of the control computations of a program written for execution with the present invention, depicting how each type of PAGE contains a different category of function;

FIG. 3 is a pictorial illustration of an exemplary set of icons which may be employed with the present invention to illustrate and control the selection of an order of processing for the statements in a group of control statements labelled by the icons;

FIG. 4 is an example of a sequence of statements whose order is illustrated and controlled by the icons of FIG. 3;

FIG. 5A is a schematic illustration of a tank equipped with sensors for determining the state of the tank by detecting the presence or absence of fluid at three levels therein, annotated to show the four potential conditions of the tank depending on the sensor states;

FIGS. 5B and 5C are truth tables defining the tank states in FIG. 5A as a function of the sensor states;

FIGS. 5D and 5E are ladder diagram counterparts to the truth tables of FIGS. 5B and 5C;

FIG. 6 is an example of a TEST function call according to the present invention, for generating a message conditioned on the tank state;

FIG. 7A is a diagrammatic representation of the keyboard entry for an exemplary portion of a control program written in accordance with the present invention;

FIG. 7B is an illustration of a CRT display which would result from the keyboard input of FIG. 7A;

FIGS. 8A-8H are diagrammatic illustrations of an OPERATION and its related DEFINITIONS PAGE data blocks according to the invention;

FIG. 9A is a diagrammatic representation of the keyboard entry for an exemplary portion of another control program written in accordance with the present invention;

FIG. 9B is a diagrammatic illustration of the data structures resulting from the keyboard input of FIG. 9A;

FIG. 9C is an illustration of the CRT display of the keyboard entry of FIG. 9A;

FIGS. 10A-10D are diagrammatic illustrations of the data fields of the Parameters and ACTIVITIES related blocks of FIG. 9B;

FIGS. 11A-11G are diagrammatic illustrations of exemplary P-code formats for various IDIOM statements according to the invention; and

FIG. 12 is a diagrammatic illustration of the IDIOM SPACE data structure according to the present invention.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

In the following description, extensive use will be made of terms having defined meanings. A convention has therefore been adopted to distinguish the use of such terms in their specially defined contexts from their use as terms having ordinary dictionary meanings. According to this convention, all terms defined as objects in this object-oriented language structure will be displayed in upper case block letters; and all terms defined as concepts will be displayed in upper case italics. Some terms will appear both as objects and as concepts.

After discussing the language structure, a translator for certain aspects thereof will be explained.

The guiding concept of the invention is expressed in a novel control structure, termed the IDIOM, for expressing individual control statements directly in terms of clear application intentions. As a concept, an IDIOM is a well-developed and standardized control strategy defined by its normal intention, its normal implementation, and the normal practices for connecting its implementing elements together to each other and to the surrounding system to accommodate the relevant control intentions and context. As a language element, the IDIOM is represented as a simple statement of control intention which is compilable or interpretable automatically into a user-adjustable, context-dependent control implementation. Beyond that, it is a statement which is structured to conform to or reflect necessary control function interconnections.

The IDIOM is a replacement for block diagrams and control loops. Using IDIOMs, the signal relationships between control functions are established (or replaced) by top down analyzed statements of control intention. Isolated single and multi-loop blocks are replaced by an automatic degree-of-freedom analysis of flexibly interconnected IDIOM calls.

Referring now to FIG. 1A, an example is given of several IDIOM-type intention-oriented control statements such as might be used to operate the bottom composition portion of the debutanizer of FIG. 1B. Statement 1 signifies to regulate the bottom's composition (BC1) of the debutanizer tower by manipulating a target value for the heat flow (Q1), which is itself regulated by manipulating the oil flow (OF1) with a valve (OV1). Statement 2 is an instruction to "low limit" the heat flow (Q1) to avoid tray weeping. And statement 3 is a direction to constrain within a high limit the differential pressure (DP1) across the tower to avoid flooding. Similarly, a statement such as R(TL2,OV2) could be used to represent the goal of regulating the Top Level TL2 with the Oil Valve OV2. That is, the single degree of freedom of OV2 is used to control TL2. Each of these IDIOMs would be implemented by one or more conventional controllers (which are implemented as software processes). The distinct IDIOM statement form of each of these expressions provides an unambiguous announcement of the intended role of each controller. At the same time, the listing and writing of the control program are not overburdened with the details of how the controllers are to be operated to bring about the respective control objectives. Thus in each case, the goal (i.e., the control objective) is defined by the function designation (e.g., R, LL, CH), the variable associated with the single controlled degree of freedom (BC1, Q1, DP1, or TL2, which are termed "control variables") and the manipulated variable (e.g., OV2, which is termed a "controlling variable"). The "low limit" statement is a unique case; it represents a limiting action on the controller set point corresponding to the heat flow variable Q1, which serves as both control variable and controlling variable.

Such IDIOM statements may be cascaded, as well. In that case, the controlled variable of the secondary controller through, its set point, is used as the controlling variable of the primary controller.

The notation of IDIOM statements, while similar to that of conventional subroutines or macros, invokes different actions at different times. A macro acts at system configuration or compilation time and a subroutine acts when it is encountered at run time in a program. By contrast, there are four different times of interest for a continuous control IDIOM. At system configuration time, the IDIOM is analyzed to set aside any control blocks needed to store tunings (i.e., adjustments to control parameters) and to establish basic control connections based on the permanent aspects of system context--i.e., to connect the control elements together in a way which reflects the physical connections between the various components in the processing system. At run time, when an IDIOM is encountered, the control calculations are configured automatically, based on context, to determine relative computation order and final connections. At sample time, while the IDION is active, the configured calculations are run in appropriate order. Finally, when the segment of program involving the IDIOM calculations completes execution, the IDIOM's calculations are disconnected.

Various types of IDIOMs are provided for in the language structure, along with the freedom for the user to define its own IDIOMs.

Briefly, there are two key IDIOM concepts: the KEY VARIABLE and the IDIOM SPACE. KEY VARIABLES are variables whose values are controlled, or manipulated to carry out control; they model the process variables in their feedback control participation. The IDIOM SPACE is a directed graph which is modeled by data structures described below, to represent the current disposition of degrees of freedom called for by the IDIOMatic control subsystem.

KEY VARIABLES must have a measurement ASPECT and a control ASPECT; these will normally be drawn from the attributes defined on the DEFINITIONS PAGE. These ASPECTs permit the monitoring of success and failure to control. Every IDIOM call is implemented in a way that allows access to the Co