Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
4227245
Edblad , ; et al.
October 7, 1980
Title
Digital computer monitored system or process which is configured with the aid of an improved automatic programming system
Abstract
An industrial production or other operational system is established by connecting apparatus which implements system operations to a digital computer system using an interface system. Machine readable definitions of events, of executable jobs, and of system variables are prepared for computer entry and ultimately for configuration of the system apparatus into an entity having operational characteristics corresponding to the entered definitions. The definitions of system variables may include definitions of signals which are coupled between the system apparatus and the computer through the interface system, and such signals may be put to system monitoring or control uses or both of these uses in the structured system. Some of the definitions may be computer programs, but most are preferably definitions of the system configuration written out in a language which a systems engineer can understand and use. Generally, definitions may include designators which are names or numbers. Any definition may refer to an event, a job, or a variable by making reference to the designator that is included in the definition of the event, the job or the variable. Executable job definitions may, by referring to event designators, specify specific events which are to trigger their execution--for example, variable scanning events or variable change-of-state events--or they may specify that they are to be periodically executed at a specified frequency or rate. The definitions are processed individually by an off-line preliminary processor which converts the systems engineer's language into a numeric language intelligible to processing programs within the computer system or to the computer system itself. The definitions are then fed into the computer system. Automatic programming means within the computer system establish all the necessary linkages between each new definition and previously entered definitions and other operative portions of the computer system so as to implement each definition relative to the system apparatus as soon as the definition is received and so as automatically to establish the desired system operating configuration through the controlled operation of the computer relative to the interfaced system apparatus. Definitions may be deleted from the computer system at any time and in any order by the automatic programming means without shutting down the system, and the system operating configuration may thus be modified whenever necessary or desirable. Following such deletions, the automatic programming means eliminates linkages which are no longer required and compresses the tables in which such linkages may be stored so as to maximize the storage space which is available for additional new definitions and their associated linkages.
Inventors:
Edblad; Warren A.
(Pittsburgh,
PA
)
, Gomola; John W.
(Pittsburgh,
PA
)
, Wallace; Frank E.
(Irwin,
PA
)
, Wood; William G.
(Pittsburgh,
PA
)
, Jones; F. David
(Pittsburgh,
PA
)
Assignee:
Westinghouse Electric Corp.
(Pittsburgh,
PA
)
Appl. No.:
258800
Filed:
June 1, 1972
Current U.S. Class:
700/95
Field of Search:
235/151.21,151.3 415/17 60/73,105 340/172.5 444/1 364/200,300,103,107,492,468,472,550
Claims
We claim:
1. A data gathering system for collecting data from a plurality of analog signal sources, comprising:
a digital computer system;
means for converting an analog signal into a digital value when supplied with an analog signal address, said means connecting said plurality of analog signal sources to said digital computer system;
a plurality of machine readable definitions each defining an analog signal scanning operation, and each specifying an analog signal address and a variable scanning frequency or period;
means for operating said computer system to accept and to store said definitions;
means for operating said computer system to establish linkages between groups at least portions of said stored definitions such that each group includes portions of definitions which specify the same scanning frequency or period; and
means for operating said computer system to process each group of linked definition portions periodically at a rate determined by the scanning frequencies or periods specified by the definitions whose portions comprise each linked group, where processing comprises following the linkages from one definition to the next and carrying out the analog signal scanning operation called for by each definition.
2. A data gathering system in accordance with claim 1 wherein each definition is accompanied into the system by a designator which serves as a variable name, and wherein the system includes means for operating said computer system to establish a directory of designators each of which designators is stored within the directory together with the computer system address of at least a portion of the corresponding variable definition.
3. A data gathering system in accordance with claim 2 and further including means for operating said computer system to use said directory and said definitions to determine the magnitude of any given variable when supplied by another system entity with the variable designator.
4. A data gathering system in accordance with claim 2 wherein at least some of the definitions specify a variable address, said system further including definitions of executable jobs at least some of which contain references to variable addresses by designator, and which further includes means for operating said computer system to accept said job definitions and to replace designators within such job definitions with the variable addresses of the corresponding variables, said means utilizing the directory and the variable definitions to obtain said variable addresses when supplied with said designators.
5. A data gathering system in accordance with claim 2 and which includes job definitions at least some of which contain triggering references to variable designators; which further includes means for operating said computer system to accept said job definitions, to locate linked portions of the variable definitions corresponding to designators contained within such job definitions using said directory, and to include such job definitions in the linkage of definition portions with the job definition linked immediately following the portion relating to the triggering variable; and further including means for operating said computer system to execute the job defined by said definitions when such a definition is encountered during the processing of a linkage of definition portions.
6. A data gathering system in accordance with claim 2 to which is added job definitions containing identifiers some of which also contain triggering references to variable designators; and which further include means for operating said computer system to link the identifier of such job definition to the linked portion of the definition of the designated trigger variable, using said directory to locate the variable definition portion; and means for operating said computer system to initiate execution of a job definition when the identifier for the job definition is encountered during the processing of a linkage of definition portions.
7. A data gathering system in accordance with claim 2 and further including means for operating said computer system to remove any of said definitions from said computer system when supplied with the designator that accompanied the definition into the system, said removal means using the directory to locate the portion of said definition connected within a linkage, said removal means including means for re-establishing the linkage from which said definition is removed, and said removal means including means for removing the designator for a variable from the directory.
8. A data gathering system in accordance with claim 7 and further including means for operating said computer system to maintain a record of all locations previously occupied by definitions which have been removed, said record maintaining means cooperating with said acceptance and storing means to reassign previously occupied locations to definitions newly entered into the computer system.
9. A data gathering system in accordance with claim 1 which includes a plurality of said means for converting analog signals into digital values and which further includes means for operating said computer system to organize the definition portions within each linkage in such a manner that definition portions within a linkage are linked into converter sets, and the converter sets are linked to form a complete linkage, where a converter set is defined as a group of any number of definitions each of which requires the services of a different one of said means for converting.
10. A data gathering system in accordance with claim 9 to which is added means for operating said computer system to assign a priority level to each linkage of definition portions, wherein the means for operating said computer system to process includes means for processing linkages in order of their priority, and wherein means are provided to limit the number of converter sets within each linkage to a predetermined value so as to prevent the processing of a low priority linkage from substantially interfering with the prompt processing of a high priority linkage.
11. A data gathering system in accordance with claim 1 wherein the computer system includes a scheduling program containing at least one table relating the identifier to the address of each executable system job definition, wherein the means for operating the computer system to establish linkages includes means for assigning an identifier to each such linkage and means for supplying the identifier along with a linkage address to said scheduler, wherein the means for operating said computer system to process comprises means for periodically supplying each linkage identifier to said scheduler at the desired frequency rate and separate means for interpreting definition portions and for carrying out scanning operations, and wherein said scheduler includes means for supplying the address of a linkage to said means for interpreting after an identifier assigned to a linkage is supplied to said scheduler by said means for periodically supplying.
12. A method of automatically organizing analog signal variable monitor data files to facilitate the operation of a digital computer system having a plurality of analog-to-digital converters, said method comprising the steps of:
grouping the files into groups each of which contains files assigned to a single scanning frequency or period;
within each group, grouping the files into converter sets, where a converter set is defined as a group of any number of files each of which requires the services of a different one of said plurality of analog-to-digital converters; and
periodically carrying out the analog scans defined by the files in each group, carrying out the scans defined by all of the files within each converter set before proceeding to carry out the scans defined by a file in any other converter set within the group.
13. A method in accordance with claim 12 wherein the grouping of files is achieved by linking the files within a group or a set into a continuous chain-linkage of files.
14. A method in accordance with claim 13 wherein the linking of files is carried out one file at a time as files are fed into the system; and wherein each new file is added into an existing linkage, if an appropriate existing linkage does exist, and into an existing converter set within that linkage, if the new file can possibly be included in an existing converter set.
15. A method in accordance with claim 13 wherein each file contains a number identifying the analog-to-digital converter whose services it requires, and wherein the files within each converter set are linked together in numerical order by converter number.
16. A data gathering system for collecting analog data from a plurality of analog signal sources, comprising:
a digital computer system;
means for converting an analog signal into a digital value and connecting said plurality of analog signal sources to said digital computer system;
a plurality of machine readable definitions of analog signal scanning operations each specifying a scanning frequency or period;
means for operating said computer system to accept and to store said definitions;
means for operating said computer system to group at least portions of each of said definitions such that each group includes portions of definitions which specify the same scanning frequency or period and to assign an address to each such group;
means for operating said computer system to carry out, in cooperation with said converting means, the signal scanning operations defined by a group of said portions when supplied with an address of such a group;
a program entity within said computer system including at least one table relating group scanning frequencies or periods to group addresses, said program including means for transferring the group addresses from said table to said carrying out operations means at periodic intervals in accordance with the associated group scanning frequencies or periods; and
means for operating said computer system to enter the address and the frequency or period of each group into said tables.
17. A data gathering system for collecting analog data from a plurality of analog signal sources, comprising: a digital computer system; means for converting an analog signal into a digital value and connecting said plurality of analog signal sources to said digital computer system;
a plurality of machine readable definitions of analog signal scanning operations each specifying a scanning frequency or period;
means for operating said computer system to accept and to store said definitions;
means for operating said computer system to group at least portions of each of said definitions such that each group includes portions of definitions which specify the same scanning frequency or period and to assign an address and an identifier to each such group;
means for operating said computer system to carry out, in cooperation with said converting means, the signal scanning operations defined by a group of said portions when supplied with an address of such a group;
a first program entity within said computer system including at least one table relating identifiers to group addresses and including means for transferring a group address from said table to said carrying out operations means when supplied with the corresponding group identifier;
a second program entity within said computer system including at least one table relating scanning frequencies or periods to group identifiers and including means for periodically transferring group identifiers from said table to aid first program entity at intervals governed by the related scanning frequencies or periods; and
means for operating said computer system to associate the address and the identifier of each group within said first program entity tables and to associate the identifier and the scanning frequency or period of each group within said second program entity tables.
18. A data gathering system in accordance with claim 17 wherein the first program entity is a computer system job scheduler which includes means for accepting job identifiers corresponding to executable job definitions and means for executing the corresponding jobs on a priority basis in response to receipt of the identifiers from other computer system entities.
19. A data gathering system in accordance with claim 18 wherein the second program entity is a synchronizing program which controls the periodic execution of a variety of computer system executable jobs.
20. A data gathering system in accordance with claim 17 to which is added means for removing group entries from the tables within said program entities.
21. A data gathering system in accordance with claim 17 wherein the computer system includes an addressable memory and at least one mass data storage device, wherein at least some groups of definition portions are stored together in said device, wherein said first program entity includes means for temporarily transferring entire groups from said device into a portion of said addressable memory, wherein the tables within said first portion contain the mass storage address of said groups, and wherein said first program means supplies the address of the location where a group temporarily resides in said addressable memory to said carrying out operations means.
22. A signal monitoring system which automatically scans a plurality of analog signals at arbitrary frequencies and which scans several signals simultaneously whenever it is possible to do so, said system comprising:
a plurality of analog-to-digital converters each of which has plural analog inputs and each of which, when supplied with an address, scans and digitizes whatever signal is present at a correspondingly-addressed analog input to the converter and, after a finite time interval, presents a digitized value representing the magnitude of the scanned signal at a digital output;
means for connecting each analog signal to analog inputs of one of said converters;
a memory containing a plurality of addressable storage locations;
means for storing the digital values presented by said converters in said memory;
loader means for loading files into said memory each of which files contains data representing a converter identifier, an input signal address, and a frequency-of-scan designation;
means responsive to the acceptance by said loader program of a file containing a new frequency-of-scan designation for recording in said memory a linkage to said file and the frequency-of-scan of said file so that the file is established as the first file in a linkage of files all of which files are to contain the same frequency-of-scan designation;
means responsive to the acceptance by said loader program of a new file containing a frequency-of-scan designation for which a linkage has been established for locating where within the existing linkage the new file may be placed, said means including means for scanning the linkage starting with the first file in the linkage, means for examining each "converter set" of files in the linkage to determine if a file in that set already contains a converter identifier identical to the identifier within the new file, where a "converter set" is a set of files each of which contains a different converter identifier from all other files in the set, and means for transferring to the means for incorporating data indicating which converter set within the linkage the new file may be linked into or else data indicating that the new file is to be linked to the end of the linkage as the first file in a new converter set, since all other converter sets already contain a file containing the same converter identifier as the new file;
means for incorporating a new file into a linkage of files at a location determined by said means for locating, whereby the linkage of files is extended;
means for initiating sequential signal scans by said analog-to-digital converters including means for tracing a linkage of files and means for sequentially supplying the signal addresses from the traced files to the converters whose identifiers are contained within each of the files; and
means for periodically retrieving from said memory and supplying to said means for initiating the linkage to each linkage of files at periodic intervals determined by the frequency-of-scan designation which is recorded, along with the linkage to each linkage of files, in said memory;
whereby a highly efficient, parallel utilizaton of the analog-to-digital converters is realized regardless of the order in which files are loaded by the loader means.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
Ser. No. 250,826 entitled "A Digital Computer Monitored and/or Operated System Or Process Which is Structured for Operation With an Improved Automatic Programming Process and System", filed by J. W. Gomola et al on May 5, 1972 and assigned to the present assignee.
INDEX
BACKGROUND OF THE INVENTION
SUMMARY OF THE INVENTION
BRIEF DESCRIPTION OF THE DRAWINGS
DESCRIPTION OF THE PREFERRED EMBODIMENT
INTRODUCTION
1. OVERVIEW OF THE SYSTEM
A. COMMUNICATION DEVICES--GENERATION OF FILES
B. THE DIGITAL COMPUTER SYSTEM AND ITS PROGRAM SYSTEM
C. FILE GENERATION AND INTERMEDIATE FILE FORMAT
D. DATA FILES AND THE DATA FILE GENERATOR
E. CONTROL CHAINS AND THE CONTROL CHAIN GENERATOR
F. THE FILE STORAGE AREA AND FILE FORMAT
G. THE SYSTEM DIRECTORY
H. SUBTASK PROCESSOR
I. LOGIC INITIATOR
J. AUXILIARY SYNCHRONIZER
K. CONTROL CHAIN PROCESSOR, CONTROL CHAINS, AND ALGORITHMS
L. MONITOR DATA FILE PROCESSOR
M. ADVANTAGES OF THE SYSTEM
2. THE COMPUTER SYSTEM
3. SYSTEM IMPLEMENTATION OF THE INVENTION
A. METAL ROLLING MILL
B. METAL ANNEALING FURNACE
C. ELECTRICAL POWER PLANT MONITORING SYSTEM
4. COMPUTER SYSTEM ORGANIZATION
5. THE SYSTEM FILE LOADER
A. FILE LOAD RECORDS
B. LOAD MODULES
C. OVERVIEW OF THE FILE LOADER PROGRAM
D. FILE ADDRESS LINKAGES AND THE ADDRESS LINK MODULE SUBROUTINE
E. BEGINNING OF FILE MODULE SUBROUTINE
F. TRIGGER MODULE SUBROUTINE
G. SYMBOL REFERENCING AND THE SYMBOL REFERENCE MODULE SUBROUTINE
H. THE ESTABLISHMENT OF A FILE WITHIN THE SYSTEM
I. TRIGGER CONNECT SUBROUTINE
6. THE FILE SYSTEM
A. FILE STORAGE AREAS
B. THE FORMAT OF A FILE
C. CORE-RESIDENT FILE STORAGE AREAS
D. DISK-RESIDENT FILE STORAGE AREAS
E. ASSIGNMENT OF SUBTASK NUMBERS TO FILES AND TO GROUPS OF FILES
F. CONVERTER SETS
G. LINKING FILES INTO CONVERTER SETS
H. ADDING A FEW FILE TO A LINKAGE
I. AN OVERVIEW OF THE FILE AND DIRECTORY ACCESS SUBROUTINES
J. GENERATE FILE SUBROUTINE
K. FIND AN EMPTY SECTOR SUBROUTINE
L. SUBROUTINE TO OPEN A NEW DISK SECTOR
M. SUBROUUTINE TO FIND A HOLE IN THE FILE STORAGE AREA
N. SUBROUTINES TO REMOVE AN EMPTY SLOT FROM EMPTY FILE LINKAGE
O. ROUTINE TO FIND WHERE A NEW ANALOG SCAN FILE SHOULD GO INTO A LINKAGE
P. SUBROUTINE TO CONNECT A NEW FILE INTO A CONVERTER LINKAGE
Q. SUBROUTINE TO WRITE DATA INTO A FILE
R. SUBROUTINE TO TRANSFER THE CONTENTS OF A FILE INTO A DESIGNATED CORE BUFFER
S. SUBROUTINE TO DELETE A FILE FROM THE FILE STORAGE AREA
T. DIRECTORY FILES AND THE DIRECTORY FILE STORAGE AREA
U. SUBROUTINE FOR MAKING ENTRIES INTO THE SYSTEM DIRECTORY
V. SUBROUTINE FOR LOCATING A DIRECTORY FILE
W. SUBROUTINE TO FIND THE NEXT FILE IN THE ALPHANUMERIC LINKAGE
X. SUBROUTINE TO COMPARE TWO SYMBOLS
Y. SUBROUTINE TO RETRIEVE DATA FROM THE DIRECTORY
Z. SUBROUTINE TO REMOVE A DIRECTORY ENTRY
AA. OBTAINING THE NAMES OF FILES IN ALPHANUMERIC ORDER
7. THE CONTROL CHAIN PROCESSOR
8. CONTROL CHAIN ALGORITHMS AND THE USE OF CONTROL CHAINS
A. CREATION AND ESTABLISHMENT OF A CONTROL CHAIN--IN GENERAL
B. REPRESENTATIVE ALGORITHM SUBROUTINES
i. Logic Algorithm Subroutines
ii. Arithmetic Algorithm Subroutine
iii. Flip-Flop Algorithm Subroutine
iv. Set and Reset Algorithm Subroutine
v. Logical Time Delay Algorithm Subroutine
vi. Comparator Algorithm Subroutine
vii. Algorithm Subroutines Specifically Arranged for Use In Process Control
a. Contact Closure Timed Output Algorithm Subroutine
b. Proportional Plus Reset Controller Algorithm Subroutines
c. Proportional Plus Rate Controllers
d. Lead and Lag Controllers
e. Special Purpose Controllers
viii. Algorithm Subroutines which Allow Branching Within a Control Chain
ix. Algorithm Subroutines Which Allow Interaction Between Control Chains And the System
9. THE AUXILIARY SYNCHRONIZER
A. DELAYED SUBTASK BID COUNTDOWN ROUTINE
B. PERIODIC SUBTASK BID COUNTDOWN ROUTINE
C. LOGICAL TIME DELAY COUNTDOWN ROUTINE
D. TIME DELAYED SUBTASK COUNTDOWN ROUTINE
E. CONTACT CLOSURE OUTPUT DEVICE COUNTDOWN ROUTINE
10. TASK, SUBTASK, AND FILE BIDDING PROCESSOR
A. TERMINOLOGY
B. THE SUBLEVEL PROCESSOR PROGRAM
C. THE DISCAN PROGRAM
D. SUBLEVEL PROCESSOR TABLES
E. THE ESTABLISHMENT OF SUBTASKS
F. THE TASK DATA POOL
11. THE LOGIC INITIATOR PROGRAM
A. DIGITAL SCAN BIT TABLES
B. ALARM AND TRIGGER TABLES
C. ADDRESSING LOGICAL VARIABLES
D. THE DIGITAL SCAN PROGRAM AND THE ALARM AND TRIGGER CHECK ROUTINE
E. AUTOMATIC IMPLEMENTATION OF A LOGIC DIRECTOR CONTROL SYSTEM
12. THE MONITOR DATA FILE PROCESSING PROGRAM
13. THE OPERATOR CONSOLE PROGRAM
14. THE MESSAGE WRITER PROGRAM
15. FILE GENERATING PROGRAMS
A. THE DATA FILE GENERATOR PROGRAM
B. FILES CREATED BY THE DATA FILE GENERATOR PROGRAM
C. THE CONTROL CHAIN GENERATOR PROGRAM
16. EXPLANATION OF PROGRAM LISTINGS
17. DETAILED DESCRIPTION OF PROGRAM LISTINGS
A. THE FILE LOADER PROGRAM
B. THE FILE AND DIRECTORY SYSTEM SUBROUTINES
i. RDFIL
ii. WTFIL
iii. MOVFIL
iv. GNFIL
v. CLSFIL
vi. LOCHOL
vii. LOCSEQ
viii. LOCBUF
ix. OPNBUF
x. OPNFIL
xi. LNKSEQ
xii. TYPSZE
xiii. CLSBUF
xiv. CVTOAB
xv. CVTORL p3 xvi. WRSYMB
xvii. ERSYMB
xviii. NXSYMB
xix. NXFLNM
xx. LOCDIR
xxi. FDIDX
xxii. RDSYMB
xxiii. IHASH
xxiv. COMSYM
xxv. DELFIL
xxvi. RESEQ
xxvii. DLELNK
xxviii. MOVLNK
C. THE CONTROL CHAIN PROCESSOR PROGRAM
D. ALGORITHM SUBROUTINE PROGRAM LISTINGS
i. General Properties of Algorithm Subroutine Program Listings
ii. Logic Algorithm Subroutine
iii. Arithmetic Algorithm Subroutines
iv. The Flip-Flop Algorithm Subroutine
v. Compare and Set Algorithm Subroutine
vi. Set and Reset Algorithm Subroutines
vii. Logical Time Delay Algorithm Subroutine
viii. Function Generator Algorithm Subroutine
ix. Timed Contact Closure Output Algorithm Subroutine
x. PIR and Related Algorithm Subroutines
xi. Trapezoidal Algorithm Subroutines
xii. Lag Controllers
xiii. Ramp Algorithm Subroutine
xiv. Limiting and Deadband Algorithm Subroutines
xv. High and Low Selector Algorithm Subroutines
xvi. Threshold Algorithm Subroutine
xvii. Transfer Algorithm Subroutines
xviii. Algorithm Subroutines Which Call For the Execution of Other System Subroutines
E. AUXILIARY SYNCHRONIZER PROGRAM
i. Counter Decrement and Subtask Bidding Subroutine
ii. Delayed Subtask Bid Countdown Routine
iii. Subroutine for Recording Delayed Subtask Bids
iv. Logical Time Delay Countdown Routine
v. Subroutines For Establishing and Cancelling Periodic Subtask Bids
F. THE SUBLEVEL PROCESSOR PROGRAM AND THE ESTABLISHMENT OF SUBTASKS
i. Terminology
ii. Creating Subtasks
iii. Form of a Program Subtask
iv. Subtask Control Subroutines
v. Bidding for the Execution of a Subtask
vi. The CHKBID Subroutine
vii. Termination of Program Execution
viii. The DISCAN Routine
ix. The WRITDISK Routine
x. The READDISK Routine
xi. The CKSTUS Routine
xii. Routine to Find Bidding Sublevel
xiii. The FINDBIT Routines
xiv. Find Empty Buffer Routine
xv. The Calculate Subtask Number Routine
xvi. Subtask Read and Write Subroutines
xvii. Subtask TIme Delay and Suspension
xviii. The Time Delay and Suspend Subroutine
xix. The Time Delay Count Down Program
xx. Removing a Subtask From Time Delay or Suspension
xxi. Subtask Number Expansion Routine
xxii. Buffer Release Subroutine
G. LOGIC INITIATOR PROGRAM
i. Digital Scan Program
ii. Alarm and Trigger Check Subroutine
iii. Subtask Trigger Connect Subroutine
iv. Alarm Message Connect Subroutine
v. Subtask Trigger Delete Subroutine
vi. Alarm Delete Subroutine
vii. Check Bit Subroutine
viii. Alter Bit Subroutines
H. THE DATA FILE PROCESSING PROGRAM
I. FILE ACCESS AND ENTER SUBROUTINE
J. THE DATA FILE GENERATOR PROGRAM AND THE CONTROL CHAIN GENERATOR PROGRAM
i. The Data File Generator Program
ii. The Control Chain Generator Program Listing
BACKGROUND OF THE INVENTION
The present invention relates to automated systems and processes which are operated to manufacture goods or to generate services under the control of one or more digital computer systems. The invention also relates to digital computer operated systems which simulate system or process operations. The present invention further relates to digital computer systems which are used to monitor system apparatus and to act as a communications link between system apparatus and supervisory personnel. More particularly, the present invention is directed to systems which include apparatus connected to a digital computer system by an interface system and which further include provision for automatically establishing a system or process operating configuration through the use of automated computer programming techniques.
The use of digital computers in system monitoring and control has revolutionized the whole field of systems engineering. While solving many of the problems which faced systems designers of the past, computers have introduced a host of new problems for present day system designers. As will subsequently become more apparent herein, the present invention provides improved solutions to the more serious problems which face a systems engineer when he employs a digital computer for monitor control purposes in a system to be operated for production or other end purposes.
In a typical industrial system, literally hundreds of monitoring and control functions may have to be carried out. In an electrical power generating system, for example, it may be necessary to monitor hundreds of signals generated by sensor components associated with the power generation apparatus and representing temperatures, pressures, voltages, currents, and other system parameters. It may also be necessary to supply control signals to motor driven valves, electrical controls, relays, motors, and other system control components.
Prior to development of the modern digital computer, monitoring and control equipment usually was constructed entirely from independent hardware components. For monitoring, system parameter sensing components were connected singly or in groups to visual display meters and to recording meters. For alarm monitoring, the signal outputs of system sensors were usually fed into alarm devices which could sound an alarm when a system parameter indicated a system abnormality. For automatic control, signals generated by one or more system parameter sensing components were connected by hardware controllers to system control components in one or more control loops, and the characteristics of the hardware controllers were adjusted to give the desired control action and system or process performance.
In control applications where the on/off control of apparatus depended only or primarily upon the status of system contacts or switches, customized digital logic circuits typically were constructed to accept as input signals a plurality of contact closure or switch input signals, to operate logically upon these input signals, and to generate contact closure output signals to control directly the system apparatus in accordance with the hardware logic. A typical system might have included a large number of logic circuits interconnected with the system apparatus and with each other to form a highly complex hardware director system.
A primary advantage of these hardware arrangements is their inflexibility. Once a hardware monitoring or control system is assembled, changes may only be made by shutting down the system and rewiring the hardware into a new configuration or by the addition of supplemental hardware. Another disadvantage of these hardware arrangements is the high cost of having a separate hardware device to carry out each monitoring and control function.
Both the inflexibility and the cost disadvantages of hardware arrangements may be overcome through the use of a digital computer, assuming there is a sufficient duty assignment of monitor and/or control functions to provide an economic justification for digital computer usage. Digital computers may be reprogrammed to handle changes in a system configuration. A single digital computer may be programmed to carry out a wide number of different control functions and thus has the potential to replace literally thousands of independent hardware devices with a single, compact unit. While digital computers are not typically as rapid in their operations as are some hardware devices, the vast majority of control applications do not require extremely high execution speeds.
In adapting a digital computer system to monitoring and control system applications, certain provisions are usually made in the structure of the computer system and in the programming or "software" which resides within the computer. With regard to the computer system structure, it is usually necessary to provide an input interface subsystem for the computer so that signals generated by sensors associated with system apparatus may be fed into the computer in the case of either a monitoring or a control system, and it is necessary to provide an output interface subsystem for the computer so that internally generated signals within the computer may be fed back to the system apparatus in the case of a control system. The input and output interface subsystems further provide operator and programmer interface through panelboard switches and through communication devices. It is also necessary to enable the computer to allow predefined external events to interrupt normal computer operations so that the computer may respond quickly to sudden changes in the system.
With regard to the program system or "software", the process control executive program differs from the conventional control or executive program of a general purpose computer particularly in that it includes a scheduling program or an executive scheduler which may accept real time bids for the execution of jobs or tasks and which then may execute the jobs or tasks in accordance with assigned priorities. A digital computer system which includes most or all of the provisions just considered may be called a process control computer system and is the type of computer system most related to the present invention. The term "process control computer system" as used herein is applicable to a computer that is used for monitoring system variables without actually controlling a system or process as well as to a computer that directly controls the apparatus used in the operation of a system or process.
Soon after digital computers were introduced into the fields of system monitoring and system control, it was found that the task of structuring a system for process operations under computer monitoring or control, i.e. the task of adapting a process control computer system to a particular plant system or the like, was one which often required many man-years of programming effort by skilled computer programmers. It was found that half the cost of a process control computer system often went into the production of programs which were custom-tailored to a particular system or process. With so large a proportion of the computer system cost going into programming, workers in the systems engineering field directed their efforts at an early date towards the development of techniques which enable automation of the programming of process control computer systems and the structuring of systems or processes into operational entities. A long-term objective of workers in this field is to enable instructions written out by a systems engineer who is not necessarily a skilled computer programmer to be quickly and efficiently converted into an operative set of computer programs which configure a monitoring/control system and the system or process it is associated with when the instructions are fed into a process control computer in the monitoring/control system.
The first efforts in the direction of automatic programming led to the development of what are now commonly called "fill-in-the-blank programming systems". These systems were originally developed to simplify the complicated process of generating programs to perform elaborate data monitoring tasks and were later extended so that the same basic approach could be used to implement simple control strategies, such as simple control feedback loops. A relatively thorough discussion of this type of system may be found in the article "Process Control Software" by Herbert E. Pike, Jr. which appears in the PROCEEDINGS OF THE IEEE, Volume 58, Number 1, published in January 1970 beginning on page 87.
Perhaps the first such system is the PROSPRO/1800 system developed by the IBM Corporation. This system utilizes six coding forms which the systems engineer fills in to define the monitoring functions to be implemented in his system. The forms contain information such as monitored signal identifications, engineering units for signals (feet, pounds, volts, etc.), signal averaging and filtering characteristics, signal correction and linearizing data, and other information. Each set of forms defines how a particular incoming signal is to be scanned, processed, and stored within the computer system. In addition, these forms contain blanks into which alarm limiting values may be entered for each signal, for example, high and low limits beyond which the signal should not ordinarily fluctuate.
After the forms for signals which are to be monitored have been filled out, the information which they bear is punched into machine readable cards and fed into a process control computer system. A special processing program residing within the computer system converts the information presented by the punched cards into files of coded data. Each file defines how the monitoring of a particular incoming signal is to be carried out. The resulting files are stored away in the computer system and are periodically processed by other programs residing within the computer system. To summarize the PROSPRO/1800 programming system, a standard package of computer programs are used in conjunction with a set of coding forms to allow the speedy establishment of a monitoring system which is equipped to handle many routine signal monitoring and alarm tasks.
At a later time, when the use of digital computers for system control was becoming more widespread, IBM developed an expanded system called the PROSPRO II system. In addition to the type of coding forms used in the PROSPRO/1800 system, the PROSPRO II system includes an additional set of coding forms which allow moderately elaborate control loops to be established.
In the PROSPRO II system, any monitored variable may also be defined as a direct digital control variable by filling out an additional coding form. The data on the additional form allows the systems engineer to specify variable target values or setpoints, controller gains, controller integral (or reset) and derivative (or lead), characteristics, and other controller parameters of the type which are frequently encountered in common control situations. In addition, the PROSPRO II system provides coding forms which allow the implementation of general equations that may be used to carry out somewhat more complex control strategies.
A general action coding form allows the systems engineer to modify control actions in response to the status of the system, for example to take into account the status of system switches and relays and the relative magnitudes of signals derived from the system. The rigid format imposed upon all control actions by the structured coding forms which are a necessary part of the PROSPRO II system makes it somewhat difficult to achieve operating configurations which are in any way unusual or out of the ordinary. Provision is therefore made within the PROSPRO II system for the calling of conventional computer programs to handle the more unusual or special tasks. A general description of the PROSPRO II system may be found in the IBM Program Product Manual PROSPRO II (TSX/1800) Process Systems Programs Application Description Manual, Number GH20/0718/0 which may be obtained from the IBM Corporation, Poughkeepsie, New York.
A similar fill-in-the-blanks programming system has been developed by the General Electric Company and is called the BICEPS system. For each signal which is to be monitored, a BICEPS coding form is filled in with information defining the nature of the signal, how often it is to be scanned, and how its magnitude is to be computed by the computer system. This coding form allows the establishment of alarm limits and also includes provision for linearization and correction of each signal. The same coding form is used for both continuous or analog signals and for logical or "on-off" signals which are sometimes called digital signals or contact-closure signals.
If a control action is to be associated with a signal, information defining the control action is placed upon a second coding form for that signal. The second coding form includes control parameters such as setpoints and also includes the address of a controller output signal applied to the process or of a controller output applied as an intermediate variable to some other control element. For example, a control action associated with a first variable may be used to calculate a setpoint or target value for use in a control action associated with some other variable.
The two BICEPS coding forms provide for common monitoring and control functions. If any unusual action is desired, the action is defined by a BPL program that is written in a special language called the BPL language, a language quite similar to Fortran IV. As an example, such a BPL program may be caled upon to compute the setpoint or target value for a control action. Each BPL program associated with a signal is given a number, and the numbers of the BPL programs are placed in appropriate locations upon the coding forms for that signal so that linkages may be later established between the automatically established BICEPS monitoring and control functions and the BPL program. The BICEPS coding forms allow a BPL program to be called upon whenever the magnitude of a signal exceeds or falls below certain predefined limits. A more detailed description of the BICEPS system may be found in a manual BICEPS Summary Manual/BICEPS Supervisory Control, number GET-3559A (6/69) which is available from the General Electric Company, Process Computer Department, Phoenix, Arizona.
As a variation upon the General Electric technique of having Fortran-like computer programs accompanying monitor and control action definitions into a computer system, a programming system called the BATCH sequencing system developed by the Foxboro Company includes a programming language each line of which is intended to correspond to a single block or element of a monitoring or control system. The first word on each line of programming is the name of a function which is to be carried out, and subsequent items on the same line are data values or the names of signals or variables which are required for the execution of the function. The BATCH programming language is not translated into executable machine code as is the BPL programming language described above. Each line of BATCH programming is translated into a data body that is stored within the computer system for later processing by an interpretive processing program. The data on each line of a BATCH programming statement must be carefully ordered, since the ordering of the data determines how the data is interpreted by the processing program. Only a limited number of functions are available to the BATCH programmer. A more detailed description of the BATCH sequencing system may be found in a document entitled "BATCH Sequencing System", Number TIM-R-97400A-5-4, 1968, which may be obtained from the Systems Division of the Foxboro Company, Foxboro, Massachusetts.
A major drawback of most known fill-in-the-blank programming systems is that they represent only a part of the overall programming effort which is necessary to structure a system or process and its monitoring/process control system, and an isolated part at that. Separate program packages are required to handle other problems, such as intricate computations which are required to implement a control strategy or to produce particular computer system outputs for desired process operations. These separate packages typically are prepared by computer programmers without the benefit of automatic programming techniques. In an adaptive control system of the type which automatically adjusts itself to changes in the nature of the process which is under control, for example, the programs used to adapt the control system to changing conditions typically are entirely separate from the monitoring and simple control function programs. Interaction between such isolated programs is difficult to achieve and often requires custom tailoring of the programs by skilled programmers having an intimate knowledge of where different parameters are stored within the computer system. The resultant monitoring or control systems are often somewhat disjoined, since completely free interaction between such isolated programs is not readily achieved. In order to obtain a desired software configuration with minimum effort, programmers often resort to special and often clever shortcut techniques and intricate program interacting devices which complicate the program system and make it extremely difficult for one who did not initially participate in the establishment of a program system to perceive exactly what that system is and to modify it at a later time.
Additional faults of present day computer controlled and/or monitored systems become apparent when one attempts to modify the monitoring or control functions in such a system after the system has once been placed in operation, i.e. to restructure or reconfigure the system or process and its computer. Consider first the problem of adding a new program to the computer used in such a system. First, the new program is written out with instructions directed to achieve predetermined process or systems operating on monitoring purposes, typically in a programming language such as Fortran IV. Then a detailed map of the computer system memory allotment is usually checked to find a location where the new program may be stored within the computer system.
All system signals and variables which the new program has occasion to reference are located and their addresses are inserted into the new program so that they may be accessed. Calls for execution of the new program are then inserted manually into existing programs within the computer system. These calls and their equivalents may be called linkages between the existing programs and the new program. The insertion of such linkages into existing programs is typically accomplished by removing the existing programs from the computer system, recompiling or reassembling the existing programs to include the linkages to the new program, and reinserting the recompiled and reassembled programs into the computer system. If the reinsertion of a program into the computer system exceeds the storage space allocated to the program, then new storage space must be found for the modified programs as well as for the new program. It is usually necessary for an engineer attempting such a modification to have a detailed knowledge not only of the programs which reside within the computer system and of the signals and variables which are involved in the monitoring or control function, but also of the exact placement of all of these elements within the computer system.
If programs are to be deleted from an operating computer system in order to restructure the system or process and its computer, additional problems arise. If the memory space occupied by a program which is to be deleted is to be reused, the location of this space usually has to be determined and a record of the availability of this space has to be made. Preferably, all programs which have occasion to call for the execution of a program which is to be removed are located, and all linkages to the program being removed are deleted from the calling programs. Such a removal normally is accomplished by recompiling or reassembling and then reloading the calling programs. It is desirable to remove all such call linkages to keep the size of the calling programs as small as possible because space is usually at a premium within most process control computer systems. It is also desirable to remove all such calls so that the name or number which identifies a program that is removed may be reused to identify a program that is later added to the system and so that the later-entered program will not be placed into operation improperly by linkages which were not removed.
In prior art computer controlled or monitored systems, it is usually too difficult to remove all removable call linkages, and typically many are allowed to remain within the computer system, occupying valuable computer systems storage space and generally limiting the flexibility of the system or process and its computer system to accept additional modifications at a later time. The amount of editing which may be done upon such a system or process is limited to the number of programs which may be altered in the computer system without leaving the computer system so full of unused linkages and data segments that the system may not accept any more new programs or modifications.
Conventional processes or systems and their monitoring and control systems are commonly established by laying out all of the monitoring and control strategies in advance and by feeding the programs and data files which implement the strategies into the computer system before the system or process is initially placed into operation. Some such systems even require data files which contain signal and variable names to be fed into the computer system in alphanumeric order by name to facilitate locating variables and signals by name at a later time within the system. Conventional systems do not generally allow additional programs and data files to be inserted into a system after the initial loading of programs and data files unless room has been reserved for the programs or files when the original system configuration is established. Systems of this type are easily set up initially but may be modified only with considerable difficulty.
Another defect in conventional systems or processes and their computer systems is their inability to allow flexible interaction between monitoring and control jobs which are defined in different ways. In a typical process control computer system, monitoring functions and some control functions may be defined not by executable computer programs but by data file definitions of jobs which are processed or interpreted by executable processing programs on a regular basis. Other jobs are defined by conventional computer programs which are placed in execution by some form of executive scheduling program.
Provision is usually made for computer programs to interact with one another and for computer programs to be called upon by data file job definitions during monitoring and control operations to perform special tasks. However, different supervisory programs are provided for these different types of programming entities. The scheduler which controls program execution is separate from a first processing program which may interpret monitor data file job definitions and from a separate second processing program which may interpret control data file job definitions.
The presence of a number of separate software entitles which control the execution of jobs defined in different ways not only increases the complexity of a program system but also makes it necessary for a system job wishing to cause the execution of another system job not only to know the identification of that other job but also to have a knowledge of which of three possible entitles controls the execution of that job.
Even overlooking this defect, interaction between jobs defined in different ways is possible only on a limited basis. Typically, program control may not pass freely back and forth between conventional programs and data interpretive programs in both directions. As a direct result, the simplified programming techniques which are available for monitoring and for elementary control operations are typically not available to conventionally programmed sections of a computer system and are not called upon to aid conventional computer programs in carrying out various tasks.
Another limitation on present day production and other systems results in part from the small size of the typical process control computers in which monitoring or control systems are implemented. Because of space limitations within the computer system, the programs which accept directions from the systems engineer as to how a system or process is to be configured necessarily have to be kept relatively simple and compact. It is necessary for these programs to run on-line within the process control computer system because these programs require knowledge of where data values, variables, and signals are stored within the computer system. As a result of this limitation on program complexity, conventional fill-in-the-blank and other special programming systems are necessarily limited in their ability to accept sophisticated instructions or in their ability to interpret instructions written in a language which is meaningful to the engineer who is actually developing the system configuration and who may not be a skilled programmer.
The above-mentioned shortcomings of existing approaches to the structuring of operating production and other systems or processes and their computer monitoring/control systems become most apparent when one considers the actual way in which an elaborate system might be established. If a system is being configured for the first time, one or more systems engineers and management personnel typically make a fundamental analysis of the system to determine what it is the system should do and what apparatus items will be needed. Next, with an understanding of the characteristic behavior of the apparatus, the system operation, and of the controllable elements in the system, a determination typically is made of which variables are to be defined for monitoring or for control purposes and of which variables if any, are to be intermediately or end controlled for the purpose of achieving the performance standards defined as a result of the basic system analysis. Functional flowcharts and other documentary records may be used at this stage to define how variables in the process are to be monitored and/or controlled.
After completion of the initial systems engineering, the sensing elements and the controlled elements, if any, of the system apparatus are interfaced with a process control computer system. Particular terminals at the input and output of the computer system are associated with each sensor and with each controlled element. The physical construction of the monitoring or control system is then complete.
It is next necessary to program the process control computer system so as to carry out the desired monitoring task and to implement the desired control functions. To the extent that fill-in-the-blank program techniques may be used, the system design engineer is able to write out on programming forms definitions of monitoring and control jobs which he wishes to have implemented, using the above-mentioned functional flowcharts as a guide.
With the assistance of a skilled computer programmer, the systems engineer may also generate additional computer programs for performing more sophisticated jobs which cannot easily be handled by fill-in-the-blank programming. Care must be taken to see that the necessary linkages between programs and between coding-form-defined job definitions are established, and all such linkages are of necessity established manually. When all job definitions have been prepared, the computer programs and the data from the coding forms are fed into the operating computer system at one time and are arranged into an operating monitoring and/or control configuration.
Up to this point, existing techniques for programming process control computers do an acceptably good job of implementing the system. Interaction between conventionally programmed and automatically programmed portions of the system software is limited in the manner previously noted, but generally any desired system configuration may ultimately be achieved in this manner, albeit at considerable expense.
It is during the debugging, troubleshooting, and modification stages of system implementation that the short-comings of existing systems become most noticeable. In any complex system, unanticipated changes typically have to be introduced before an operating configuration is finalized. Conventional systems handle minor changes, such as changes in the magnitudes of constant values, of alarm limits, of controller parameters, or of setpoints, in a relatively satisfactory fashion.
More serious changes, such as a change in control strategy or a change in the way in which the execution of monitor tasks and control tasks are synchronized and coordinated, are difficult to implement in such a conventional system. Inter-program linkages are especially difficult to locate and to alter after an operating configuration is established. The cost, in time and in effort, of eliminating linkages which are no longer serving a useful purpose is often so great that such linkages are simply left as permanent scars within an operating system. Scars of this type occupy valuable storage space which could be profitably used for the storage of operating programs.
If major changes have to be made in a system operating configuration, the interactions and linkages between system elements can grow and become so complicated that only the programmer who has supervised the making of the changes can ever fully understand the nature of these linkages. Adequate records of system linkages are essential if some party other than this programmer is ever to be enabled to make further modifications to the operating system. Unfortunately, most programmers maintain only a very sketchy documentation of the systems upon which they work, and it is common for a programmer to use shorthand notations which are unintelligible to anyone other than himself.
Even in the case of well documented systems, it can often take so long for an outsider to come to a full understanding of a system that the engineers and programmers who initially implemented the system have to be called back again and again to make modifications. If some of these engineers and programmers leave the employ of the company which is implementing the system, it can be extremely costly to train their replacements, and it may be impossible for a new party ever to fully understand the system. It is not uncommon for programmers to be called back at great expense by their former employers to modify a system configuration which no one else can understand.
Modifications to a monitoring or control system can even become so expensive that they are simply not implemented, and non-optimal operating configurations are then tolerated because of the high cost of making modifications. In cases where changes absolutely have to be made, it is sometimes necessary to scrap entire segments of programming for a system and to replace these segments with entirely new programming segments simply because it is cheaper and faster to rewrite the programming in its entirety than to modify the existing programming to work in accordance with a modified plan of system operations.
The described characteristics of the known existing art on automated systems or processes and their monitoring and/or control digital computer systems have limited the economy and efficiency with which such systems can be established, the degree to which automation can be injected into the computer programming and system configuring process, and the flexibility with which system operations can be established and modified. Accordingly, these and other prior art limitations provide a background from which substantial opportunity exists for improvement.
No representation is made that the background art considered herein is the best art nor that alternative interpretations cannot be placed on the prior art.
SUMMARY OF THE INVENTION
In brief summary of the present invention, a production or other system includes apparatus which implements system operations and a process control digital computer system which either monitors or operates the apparatus. Within the computer system there exist mechanisms for executing programs on a priority basis and for handling system input data, output data, and interrupts. There also preferably exists within the computer system processing programs or processors for processing or executing jobdefining data files.
In the preferred embodiment of the invention, many system monitoring tasks are defined by job definitions called monitor data files which are processed by a data file processor program and many system control and other tasks are defined by job definitions called control chains or control chain data files which are processed by a control chain processor program. It is contemplated that computer programs will also be used as process or other job definitions, and no processing program is required for the execution of such programs.
In order to provide a uniform method in the preferred embodiment whereby an entity within the system may trigger the execution of any executable job within the system, the executable job definitions within the system are grouped into executable data packages which may be called subtasks. A subtask may be a control chain, a computer program, or a group of one or more data file job definitions which are to be executed as a group. Each such subtask is preferably assigned an identifier which may be a number and which may also serve as an indication of subtask execution priority. Subtask identifier numbers are hereinafter called subtask numbers.
A single executive scheduling program which hereinafter is called the "subtask processor" is established to control the execution of subtasks of all types in the preferred embodiment. Tables within the subtask processor contain the address of each system subtask and also a designation of the nature of each subtask--whether it is a program, a control chain, or a group of monitored data files, for example. Since every executable job within the system is identified by a subtask number, any operative entity within the system may call for the execution of any executable job within the system by supplying to the subtask processor the subtask number of the job which is to be executed. This procedure is hereinafter called bidding for execution of a subtask.
In response to a bid for the execution of any subtask, the preferred subtask processor first determines the nature of the subtask. If the subtask is a computer program, the subtask processor transfers program control directly to the program.
If the subtask includes one or more data files or control chains which are to be processed or interpreted, then the executive scheduler transfers the address of the first data file or control chain which is to be processed to one of the system processing programs or processors. Hence, a completely uniform system is established whereby the execution of any job which exists within the computer system may be initiated by supplying a unique subtask number for that job to a single subtask processor. Simple and flexible interaction between differing types of job definitions is thus assured.
In the preferred embodiment, machine readable definitions of jobs, of variables including signals, and of significant events are initially written out by the engineer who is setting up the system and who is hereinafter referred to as the systems engineer. Job, variable, and event definitions relating to variable monitoring are preferably written out simultaneously on separate coding forms for each system variable. Other job, variable, and event definitions may be written out either as computer programs or as control chains which preferably utilize the systems engineer's own chosen terminology and his own choice of engineering units.
A control chain consists of a series of calls by the systems engineer upon predefined algorithm subroutines within the system to carry out specific tasks. In the preferred embodiment, any desired number of algorithm subroutines may be included in the computer system for use in structuring and implementing the operation of the system or process. Many useful subroutines may be selected from a library of algorithm subroutines, and others may be custom-tailored to suit the special needs of a given operating system. Unlike prior systems, the number and the nature of the algorithm subroutines is limited only by available space within the computer system and by the imagination of the engineer who configures the system. Within a control chain, data values do not have to be arranged in a particular order. Each argument may be uniquely identified by a label or a name that is chosen by the systems engineer to be meaningful to him in the context of the system or process which he is establishing.
Each individual definition of a job, variable, or event is preferably subjected to preliminary processing by an off-line or remote processor which converts the terminology of the systems engineer and his choice of engineering units into a primarily numeric terminology that is understandable to the routines within the on-line process control computer system. The off-line processor has a complete knowledge of the monitor definition coding forms and is supplied with definitions, called macro specifications, of the systems engineer's terminology used in writing out control chains. The off-line processor is able to arithmetically or algebraically convert numeric values supplied by the systems engineer into any desired form for use within the computer system under the control of the macro specifications. For example, feet may be converted to meters or feet and inches may be converted to inches.
The output data generated by the preliminary processor for each definition is called an intermediate file. In the preferred embodiment, each intermediate file typically contains a designator which is a name or number identifying the file and also identifying any job, variable, or event which the file defines. An intermediate file may refer to system variables, including signals, defined by other files or not otherwise defined by referring to designators for the variables. An intermediate file may also include the designator for a file defining an event which is to trigger execution of the intermediate file, or identifiers of jobs the execution of which the intermediate file is to trigger. An executable intermediate file may contain its own subtask number and data indicating how frequently the job defined by the file is to be executed. In all other respects, each executable intermediate file is in proper form to be directly interpreted and executed by one of the processors which reside within the on-line computer system.
Since intermediate files preferably refer to designators and not to absolute computer system addresses, the preliminary processor which generates the intermediate files may reside in an Off-line general purpose computer and does not have to reside within the on-line process control computer system itself. Because of the ability of a general purpose computer to handle much more sophisticated and much longer programs than can typically be handled by a process control computer system, the off-line preliminary processor may be much more elaborate than the typical on-line preliminary processors used by prior art systems.
The intermediate files are fed to a loader or loader program within the operating process control computer system. The loader preferably stores each intermediate file in a file storage area and records the file designator, if any, and file address in a directory. If a file refers to the designator for a variable, including variables which are computer system input or output signals, the loader program goes to the directory, finds the address of a file containing the specific designator if any file contains the variable designator, and retrieves the address of the variable from that file. The loader program then places the variable address into the intermediate file in the place of the designator for the variable. In this manner, linkages between job definitions and specific variable addresses are automatically established.
If a variable designator referred to by an intermediate file is not found within a file and is not otherwise defined, the loader program may allocate memory space for storage of the variable within a global variable storage area and may then place the designator and the global address of the variable into the system directory. All later references to the same variable designator may then be replaced by the same global address. Intermediate files containing references to variable designators are thus converted into executable files which contain variable addresses and which are ready for direct processing by the system file and control chain processors.
If the systems engineer has assigned a specific subtask number to a job-defining file, the loader program preferably automatically supplies the subtask number together with the file address, to the subtask processor and thereby establishes the file as an executable entity within the computer system. Computer programs may also be established within the subtask processor in a similar manner with the aid of a special subtask processor subroutine. If a job-defining file is to be periodically executed, the loader program automatically transfers the subtask number for the file and an execution frequency which is retrieved from the file to a synchronizing program which thereafter automatically places periodic bids for execution of the file subtask with the subtask processor. Again, the same technique may be used to cause periodic execution of conventionally entered computer programs.
A complete analog signal monitoring system may be quickly and easily established by feeding to the loader program file definitions corresponding to each analog signal variable which is to be monitored. Each such file definition may specify a designator which may serve as a name for the monitored signal variable. The designator for such a variable may then be referred to by other system job definitions which need to know the computer system address of such a variable or which are to be triggered into execution when such a variable is scanned or processed. Each file definition also preferably specifies the computer system signal input hardware address of an analog signal. For example, the signal address may include an analog-to-digital (a. to d.) converter number and a multiplexer address which, when supplied to a multiplexer associated with the proper a. to d. converter, causes a particular analog signal to be connected to the a. to d. converter. A file definition may additionally specify the address of a location in the computer system memory where a number proportional to the magnitude of this same analog signal is to be stored, and this address may be called the variable address.
A file definition may specify how often the value of an analog signal variable is to be scanned and transferred into the computer system for storage, and this specification may be called the variable scanning frequency specification. The scanning frequency specification may be either the period of time which elapses between successive scans, or it may be the number of scans which occur during a fixed time interval. Alternatively, the systems engineer may simply specify that a given variable is to be scanned immediately after some other variable is scanned, and the systems engineer may include a designator identifying that other variable within the file definition of the given variable.
The file definition of an analog signal variable typically includes a complete definition of how the corresponding signal variable is to be scanned. Scan defining data usually includes data defining alarm limits for the signal variable, data defining any linear or nonlinear conversion which is to be carried out upon the signal magnitude before that magnitude is stored as a digital value in the designated variable address location, and other similar scan defining data. The file definition of a variable may typically also contain an English language description of the signal variable and an English language statement of the engineering units which are applicable to the signal variable. Examples of engineering units are "volts", "pounds per square inch", "megawatts", and "dynes per square centimeter".
When an intermediate file definition of an analog signal variable is presented to the file loader program, the loader program first stores the file within the computer system. The loader program and its subroutines then automatically add the new file to a chain-linkage of other analog signal monitor data files which are assigned to the same period or frequency of execution, if any such linkage exists. If no such linkage exists, then the new file is treated as the first file in a new linkage.
A subtask number or other job identifier is automatically assigned to each such linkage, and this subtask number is supplied to the subtask processor along with the address of the linkage or of a file within the linkage. In this manner, each such linkage is established as an executable job within the computer system. In the preferred embodiment of the invention, each such chain-linkage of data files is usually stored within a single sector of a magnetic disk memory of the computer system. If more monitor data files are assigned to a single frequency than can be contained within a single disk sector, then the invention automatically establishes multiple linkages of monitor data files which are assigned to separate subtask numbers but which are periodically executed at the same rate or frequency. In the preferred embodiment, provision is also made whereby linkages of monitor data files may be established within the system core memory, if the systems engineer so desires.
The loader program also is arranged to automatically supply the subtask number for each linkage of monitor data files, together with the variable scanning frequency specification for the file or files in the linkage, to the synchronizing program. The synchronizing program then places bids properly spaced from one another in time for the periodic processing of each linkage of monitor data files.
Once the loader program has established an efficient arrangement of monitor data file subtask linkages, the execution of scanning and monitoring operations automatically commences. The synchronizing program periodically places bids with the subtask processor for the execution of the subtasks which have been assigned automatically to the linkages of monitor data files. The subtask processor program includes routines which automatically retrieve the file linkages from mass storage, assuming they are not normally core-resident, and place the linkages into core buffers ready for execution. When a linkage has been transferred into core, the subtask processor program calls upon the data file processor program to process each file in the subtask linkage by retrieving the magnitude of the corresponding signal variable and by carrying out any other scan instructions included within each file definition. It is noteworthy that the same synchronizer and subtask processor programs which are used to control the execution of conventional programs and control chains may also be used to control the execution of analog signal scanning operations. The data file processing program is thus reduced to a relatively simple file interpreting program which interprets the data contained within each monitor data file definition and which processes the corresponding analog signal variable data accordingly. The resultant modular design of the overall signal monitoring and program execution system is more efficiently organized than prior art systems, since a uniform mechanism is achieved for initiating the execution of any job, regardless of the nature of that job.
In most monitoring and control systems, a number of analog-to-digital converters are associated with the computer system to interconnect the computer system with groups of analog signal variables associated with the process. A. to d. converters of this type generally operate fairly slowly in comparison with the speed at which a digital computer may operate. It is therefore customary to give each a. to d. converter a request to retrieve and to digitize the magnitude of an analog signal variable and to then allow the computer system to perform some other task while the a. to d. conversions are carried out by the converters. In a highly complex process control system, where the instructions for operation of the converters are typically stored in mass storage and where the converters are in almost continuous operation at times, it is necessary to carefully structure the arrangement of monitor scan defining data within mass storage so that all of the system converters are kept as busy as possible. An important feature of the present invention is its ability to automatically organize data files in such a manner that the monitoring system efficiency is kept as high as is possible. A high level of efficiency is maintained even though the monitor file definitions are fed into the computer system in random order and even though monitor file definitions may be deleted from the system long after the system is first placed in operation.
To achieve this efficiency, the loader program calls upon sub-routines which carefully organize the monitor file definitions within each linkage so that groups of data files which may be called "converter sets" are established. A "converter set" is a group of any number of monitor data files each of which calls upon the services of a different one of the system a. to d. converters. By carefully arranging the linkages between the files within each linkage of files, the present invention contemplates organizing the files into several "converter set" linked groups within each linkage. Each "converter set" group is typically arranged to contain as many files as is possible without containing more than one file requiring the services of a particular a. to d. converter. The present invention thus makes it possible for the data file processor program to follow the linkages within a subtask linkage of files and to call upon the a. to d. converters of the system to process each file that is encountered until the maximum practicable number of a. to d. converters have been called upon and are occupied in gathering data.
As a simple example, if the system includes four a. to d. converters numbered 0 to 3, then each subtask linkage of monitor data files may contain several converter sets of files each of which sets may contain a maximum of four data files, and each of which files requires the services of a different a. to d. converter. Assuming that the first converter set in a linkage contains a full complement of four files, the data file processor program processes the subtask linkage by examining the first four files and by supplying the signal hardware addresses from those files to the four system a. to. d. converters. When the processing program attempts to process the fifth file in the linkage, the processing program discovers that it has to call upon one of the a. to d. converters which is already busy. The processing program may therefore terminate program execution and allow other computer programs to run until the a. to d. converters have completed the process of scanning the four signals which correspond to the first four files in the linkage. At that time, the signal variable addresses from the next four files in the linkage may be supplied to the four a. to d. converters, assuming that the next converter set in the linkage also includes a full complement of four files. In this manner, the careful organization of the files within each subtask into converter sets enables the systems analog-to-digital converters to be kept simultaneously busy as often as is practicable without unduly complicating the data file processing program. The rate at which analog data may be transferred into the computer system from the monitored system or process is thus maximized, even though file definitions are fed into the system in random order and in a haphazard manner.
In order to further improve the efficiency of the system, each subtask linkage is preferably assigned a priority in relation to all other subtask linkages. To insure that the processing of a low frequency analog scan subtask linkage does not interfere with the execution of a more critical high frequency analog scan subtask, the loader program includes means for automatically assigning higher priorities to those subtask linkages which are executed more often and lower priorities to those linkages which are executed less often.
In the preferred embodiment of the invention, the system subtask numbers which identify any system job also serve as priority numbers. Hence, the assignment of subtask numbers to a linkage establishes the priority of the linkage. It can happen that a particular numerically sequential group of subtask numbers may all be assigned to subtask linkages at a time whem a new monitor data file is received by the loader program which new file is assigned to a frequency intermediate to the frequencies of the linkages assigned to the sequential group of subtask numbers. The loader program includes automatic means which may alter the assignment of subtask numbers to linkages so as to leave one subtask number not assigned which may be assigned to the new monitor data file and which has a numerical value such that the new data file is given the proper priority of execution with respect to other subtask linkages. Hence, a careful arrangement of priority assignments is automatically maintained within the system even if the linkage subtask numbers have to be reassigned.
In the preferred embodiment of the invention, increased execution speed is achieved by not permitting the scanning of one subtask linkage to interrupt the scanning of another. The number of files in each subtask linkage is limited to a fixed number of converter sets so that the execution time of each subtask linkage is held to a reasonable level.
In addition to monitor data file definitions for analog signal variables, a subtask linkage may contain monitor data file definitions for calculated internal computer systems variables. These calculated value file definitions are handled in essentially the same manner as are the signal variable file definitions. However, calculated value file definitions may be placed anywhere within a subtask linkage, since there is no need to organize such definitions into converter sets. Within the preferred embodiment of the present invention, automatic means are provided for scattering calculated value data files throughout the linkages assigned to a given scanning frequency so that they are not grouped together at one end of a linkage where they might tie up the computer system for any significant time interval.
It has already been noted that a variable file definition may specify that the variable to which it relates is to be scanned or processed immediately after another designated variable is scanned or processed. Upon receipt of such a file definition, the loader program obtains the address of the file definition corresponding to the variable which is to be processed first, using the system directory. The new file definition is then linked directly behind the file definition for the variable which is to be scanned or processed first within the same linkage of files.
This automatic linking feature of the present invention has another important use. A control chain or other job-defining entity may designate that it is to be processed immediately after the processing of a file. For example, a particular control chain or other executable job definition may be supplied to perform computations upon the value of a particular analog signal variable as soon as the value is retrieved by the computer system. Assume that the designator for the analog signal variable is "A100". The systems engineer may include within the control chain file the designator "A100" as a trigger reference to the signal variable. In response to such a designation by the systems engineer, the system loader program automatically links the control chain into the linkage of files which contains the file definition of the variable "A100" and automatically positions the control chain file immediately behind the file definition of the variable "A100" within the linkage. The data file processor program upon encountering such a control chain file within a linkage, automatically transfers program control to an appropriate control chain processing program within the system. Hence, a job may be executed immediately following the periodic scanning of any system analog variable by simply placing a trigger reference to the designator for the variable within a control chain definition of the job which is to be triggered.
In the case of system jobs which are not defined by control chains but which are assigned subtask numbers within the subtask processor program, the computer system includes means whereby a file containing the subtask number of a job may be created and linked immediately following the file for a signal variable the scanning of which signal variable file is to trigger execution of the job. The data file processor program automatically transfers the subtask numbers from such files to the sublevel processor program in the form of bids for execution of the corresponding jobs.
An important feature of the present invention is that a monitoring system once set up may be quickly and easily modified in any desired way. Monitor data file definitions may be easily removed from the system by an appropriate set of subroutines which are provided for that purpose. Afer such a removal, the linkages between other files in the same subtask linkage are reestablished so as to preserve the integrity of the linkage without actually repositioning the files which comprise the linkage. The space previously occupied by the file is automatically linked into a linkage of empty locations and is available for occupancy by new data files which are fed into the system at a later time. The arrangement of converter sets within the system is maintained to the extent possible when files are deleted. New files are automatically placed into any vacancies within a converter set that are left by the deletion of files from that converter set so as to keep the converter sets as full as possible.
If an entire subtask linkage of files are deleted from the system, the disk sector previously occupied by that subtask is automatically made available for the storage of some other subtask, and the subtask number previously assigned to the linkage is made available for assignment to some other linkage. Means are provided within the system for preventing the removal from the system of a variable file definition which serves as a trigger for some other file until after the file which is to be triggered is first removed from the system.
In combination, the above attributes of the invention enable a systems engineer to feed file definitions of signal variables into the computer system in a generally random order. He is enabled to make minor or major modifications to his monitoring or data gathering system at any time, even years after the system is initially placed into service. Generally, the system does not have to be closed down while such changes are made. The automatic programming techniques which establish linkages between definitions within the system force a tight, logical organization onto the system and thus make it practicable for an engineer who did not assist in the establishment of a system and who does not know precisely where variables and definitions are stored within the system to quickly learn enough about how the system is configured so that he may make modifications and changes in the system.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1
FIGS. 1 and 1 (Cont.) together form a block diagram of a process and of a process control system arranged in accordance with the present invention.
FIGS. 2/1 et seq.
The FIGS. 2/- illustrate the computer system which is used in implementing the preferred embodiment of the present invention. FIG. 2/1 is an overview block diagram of the computer system. FIG. 2/2 is a block diagram representation of the arithmetic and logic portions of the computer system. FIG. 2/3B is a block diagram representation of the computer system executive and FIG. 2/3A illustrates the words within this executive which control the operation of 16 different task levels. FIG.
2/4A is a block diagram representation of an analog-to-digital converter, and FIG. 2/4B illustrates graphically the operation of this converter.
FIG. 3A et seq.
FIGS. 3A through 3E show schematic diagrams of a metal reduction rolling mill and a digital computer control system therefor arranged and operated in accordance with the principles of the invention. FIGS. 3F through 3H schematically illustrate a metal coil annealing furnace system and a digital computer control system therefor configured and operated in accordance with the principles of the invention. FIGS. 3I through 3K schematically show an electric power plant and a digital monitoring computer system therefor arranged and operated in accordance with the principles of the invention.
FIG. 4
FIG. 4 is a block diagram representation of a number of computer programs which reside within the computer system shown in FIG. 2.
FIG. 5A et seq.
Fig. 5A is an overview block diagram of a file loader program. FIGS. 5B through 5K illustrate various details of the file loader program. FIG. 5B is a flow chart of an address link module routine. FIG. 5C is a flow chart of a routine which processes the last module in a file. FIG. 5D is a flow chart of a routine which processes symbol reference modules. FIG. 5E is a flow chart of a routine which processes beginning of file modules. FIG. 5F is a flow chart of a routine which processes trigger modules. FIG. 5G illustrates a typical load record format for the file loader program. FIG. 5H illustrates various load module formats which may be incorporated into the load record shown in FIG. 5G. FIG. 5I illustrates tables used to store global variables, and FIG. 5J illustrates tables used to store process variables. FIG. 5K is a flow chart of a trigger connect subroutine which is called upon by the file loader program to establish trigger connections.
FIG. 6 et seq.
FIG. 6 is an overview block diagram representation of file and directory handler subroutines which are sometimes called the file and directory access and entry subroutines. FIGS. 6/100 through 6/810 are detailed illustrations of these subroutines. The file handler subroutines are presented in FIGS. 6/100 through 6/400, and the directory handler subroutines are presented in FIGS. 6/500 through 6/810.
FIGS. 6/100, 6/101, 6/102, and 6/103 together form a flow chart of a generate file subroutine. FIG. 6/104 illustrates the format of a typical data file. FIG. 6/105 illustrates the format of an empty file. FIG. 6/106 illustrates the format of a coupler file. FIG. 6/107 illustrates the structure of a typical file storage area. FIG. 6/108 illustrates the structure of a subtask and trigger file core storage area. FIG. 6/109 illustrates the structure of a general file core storage area. FIG.
6/110 illustrates the structure of general file disk storage areas. FIG. 6/111 illustrates the structure of subtask and triggered file disk storage areas. FIG. 6/112 illustrates the various buffers and tables involved in the file generation process.
FIG. 6/120 is a flow chart of the find an empty sector subroutine. FIG. 6/130 is a flow chart of a subroutine which opens a new disk sector. FIG. 6/140 is a flow chart of a subroutine which finds a hole in a file storage area. FIG. 6/150 is a flow chart of a subroutine which removes an empty slot from an empty file linkage. FIG. 6/160 is a flow chart of a subroutine which finds where a new analog scan monitor data file should go in a linkage of such files. FIG. 6/170 is a flow chart of a subroutine which connects a new file into a converter linkage of files.
FIG. 6/200 is a flow chart of a subroutine which writes data into a file. FIG. 6/300 is a flow chart of a subroutine which transfers a file into a designated core buffer. FIG. 6/400 is a flow chart of a subroutine which deletes a file from a file storage area.
FIG. 6/500 is a flow chart of a subroutine which enters a new symbol name into the system directory. FIG. 6/501 is aflow chart of the alphanumeric and hash code linkage portions of the subroutine shown in FIG. 6/500. FIG. 6/502 illustrates the format of a typical directory file. FIG. 6/503 is a simplified representation of the directory file storage area. FIG. 6/504 illustrates the hash code pointer table arrangement. FIG. 6/505 illustrates the actual directory storage area as it appears in the preferred embodiment of the invention.
FIG. 6/510 is a flow chart of a subroutine for locating an entry in the system directory. FIG. 6/511 is a flow chart of a subroutine which computes the hash code for a given symbol. FIG. 6/520 is a flow chart of a subroutine which locates the next directory file in the directory storage area within an alphanumeric linkage of directory files. FIG. 6/530 is a flow chart of a subroutine which compares two symbol names and determines their alphanumeric order.
FIG. 6/600 is a flow chart of a subroutine which obtains data from the directory storage area when supplied with a symbol name. FIG. 6/700 is a flow chart of a subroutine which removes entries from the directory storage area. FIG. 6/800 is a flow chart of a subroutine which finds the next file name in the alphanumeric linkage of directory entries. FIG. 6/810 is a flow chart of a subroutine which finds the next alphanumeric symbol name in the alphanumeric linkage of directory files.
FIG. 7
FIG. 7 is a block diagram representation of the control chain processor program.
FIG. 8/A00 et seq.
FIG. 8/A00 through 8/A33 present descriptions of algorithm subroutines which may be called upon by the control chain processor program illustrated in FIG. 7. FIG. 8/A00 illustrates the format of a typical control chain which is to be processed by algorithm subroutines. FIG. 8/A01 describes an algorithm subroutine which performs logical operations. FIG. 8/A02 describes an algorithm subroutine which performs arithmetic operations. FIG. 8/A03 describes an algorithm subroutine which can cause a pair of logical variables to behave as a flip-flop. FIG. 8/A04 describes an algorithm subroutine which compares a reference value with an input value and which then adjusts the status of logical variables in accordance with the results of the comparison. FIG. 8/A05 describes an algorithm subroutine which sets logical variables true or false. FIG. 8/A06 describes an algorithm subroutine which executes logical time delays.
FIGS. 8/A06I through 8/A06L describe the process of establishing a simple control chain in an operating computer system. FIG. 8/A06K illustrates the format of a typical control chain intermediate file as the control chain appears when first generated by the control chain generator program, and FIG. 8/A06L illustrates the same control chain completely assembled and ready for storage within the operating computer system.
FIG. 8/A07 describes an alternative form of algorithm subroutine which executes logical time delays. FIG. 8/A08 describes an algorithm time delays.
FIG. 8/A08 describes an algorithm subroutine which carries out arbitrary, nonlinear transformations. FIG. 8/A09 describes an algorithm subroutine which controls the operation of timed contact closure outputs in accordance with the magnitude of a system variable.
FIG. 8/A10 describes an algorithm subroutine which functions as a proportional-plus-reset controller, which uses rectangular integration, and which has an adjustable gain and time constant. FIG. 8/A11 describes an algorithm subroutine which functions as a proportional-plus-reset controller and which uses rectangular integration. FIG.8/A12 describes an algorithm subroutine which functions as a proportional-plus-reset controller and which uses trapezoidal integration. FIGS. 8/A12K and
8/A12L illustrate graphically the difference between rectangular and trapezoidal integration. FIG. 8/A13 describes an algorithm subroutine which functions as a proportional-plus-reset controller, which uses trapezoidal integration, and which includes provision for using different time constants and gains during automatic and manual modes of operation. FIG. 8/A14 describes an algorithm subroutine which functions as a proportional-plus-reset controller, which uses rectangular integration, and which sets high and low limits to the controller integral and output values.
FIG. 8/A15 describes a pair of algorithm subroutines which function as proportional-plus-rate controllers, one of which uses rectangular differentiation and the other of which uses trapezoidal differentiation. FIG. 8/A15P illustrates graphically the difference between rectangular and trapezoidal differentiation. FIG. 8/A16 describes an algorithm subroutine which functions as a proportional-plus-reset-plus-rate controller and which uses trapezoidal integration. FIG. 8/A17 describes a variety of algorithm subroutines which function as lag controllers and as lead-plus-lag controllers.
FIG. 8/A18 describes an algorithm subroutine which functions as a proportional-plus-reset controller using rectangular integration and which generates both absolute and velocity (differential) output variables. FIG. 8/A19 describes an algorithm subroutine which functions as a ramp controller and which causes an output variable to rise or fall at a constant rate until it equals an input variable.
FIG. 8/A20 describes an algorithm subroutine which sets an output variable equal to an input variable so long as the input variable does not fall below a low limit constant. FIG. 8/A21 describes an algorithm subroutine which sets an output variable equal to an input variable so long as the input variable does not exceed a high limit constant. FIG. 8/A22 describes an algorithm subroutine which sets an output variable equal to an input variable so long as the input variable stays within a designated range. FIG. 8/A23 describes an algorithm subroutine which sets an output variable equal to the lowest of two input variables. FIG. 8/A24 describes an algorithm subroutine which sets an output variable equal to the highest of two input variables. FIG. 8/A25 describes an algorithm subroutine which sets an output variable to zero when an input variable is within a predefined range. FIG. 8/A26 describes an algorithm subroutine which sets or clears a logical variable in accordance with whether an input variable is within a predefined range.
FIG. 8/A27 describes an algorithm subroutine capable of carrying out a transfer within a control chain. FIG. 8/A28 is the data module for an algorithm subroutine which carries out a transfer to one of two locations depending on the value of a logical variable. FIG. 8/A29 is the data module for an algorithm subroutine which executes a transfer to one of two locations within a control chain depending upon whether or not a certain relationship exists between two system variables. FIG. 8/A30 is the data module for an algorithm subroutine which may place a bid for the execution of a subtask, enable a subtask to be executed, or inhibit the execution of a subtask. FIG. 8/A31 is the data module for an algorithm subroutine which may halt and delay the execution of a control chain. FIG. 8/A32 is the data module for an algorithm subroutine which may place a time delayed bid for the execution of a subtask. FIG. 8/A33 is the data module for an algorithm subroutine which may place a subroutine call to any desired subroutine within an operating computer system.
FIG. 9A et seq.
FIG. 9A is an overview block diagram of the auxiliary synchronizer program. FIGS. 9B through 9G illustrate the details of the auxiliary synchronizer program.
FIG. 9B is a flow chart of a periodic subtask bid countdown routine. FIG. 9C is a flow chart of a logical time delay countdown routine. FIG. 9D illustrates a table in which delayed subtask bids may be recorded. FIG. 9E illustrates tables in which periodic subtask bids may be recorded. FIG. 9F illustrates an arrangement of logical time delay linkages within the operating computer system. FIG. 9G illustrates the linkages which may exist between subtasks which are in time delay or suspended. FIG. 9H illustrates a table which may be used for timing the actuation of contact closure outputs.
FIG. 10A et seq.
FIG. 10A is an overview block diagram of the subtask processor program and includes a block diagram of the sublevel processor program.
FIG. 10B is a flow chart of the program which transfers subtasks between core and disk storage.
FIG. 10C illustrates the task tables within the sublevel processor program. FIG. 10D illustrates the group tables within the sublevel processor program. FIG. 10E illustrates the subtask tables within the sublevel processor program. FIG. 10F illustrates the buffer tables within the sublevel processor program. FIG. 10G illustrates other miscellaneous system tables which are called upon by the subtask processor program. FIG. 10H illustrates how task levels may be broken into sublevels which are assigned to different types of subtasks. FIG. 10I illustrates the composition of task numbers, sublevel numbers, and subtask numbers both within and without the operating computer system.
FIG. 11A et seq.
FIG. 11A is an overview block diagram of the logic initiator program, including the digital scan program.
FIGS. 11B and 11B (Cont.) together form a flow chart of the digital scan program and of the alarm and trigger check routine.
FIGS. 11C and 11C (Cont.) together illustrate the various logical variable bit tables which may exist within the operating computer system, and FIG. 11D illustrates how the two halves of FIG. 11C are to be assembled. FIG. 11E illustrates a logical word table, an alarm and trigger table, a bit mask table, and an array LOGBAS all of which are part of the logic initiator program. FIG. 11F illustrates how logical variables are addressed within the preferred embodiment of the present invention. FIG. 11G presents examples of entries which may be encountered in the logical word table shown in FIG. 11E. FIG. 11H illustrates the two types of entries which may be encountered within the trigger and alarm table in FIG. 11E.
FIG. 12
FIG. 12 is a block diagram representation of the data file processing program.
FIG. 13A et seq.
FIG. 13A is an overview block diagram representation of the system operator's console program. FIG. 13B is a more detailed block diagram representation of function programs which may be a part of the operator's console program shown in FIG. 13A. FIG. 13C is a block diagram representation of a file access and enter subroutine which appears in FIG. 13B.
FIG. 14
FIG. 14 is a block diagram representation of a message writer program.
FIG. 15 et seq.
FIG. 15 is an overview block diagram of the file generation process, including the data file generation process, the control chain generation process, and the process of loading intermediate files into an operating computer system.
FIG. 15/100 is a flow chart of a data file generator program. FIG. 15/101 illustrates the data input arrangement expected by the data file generator program. FIG. 15/102 illustrates the intermediate files which form the output of the data file generator program. FIGS. 15/103 through 15/109 are illustrative coding forms which may be used in preparing data for the data file generator program.
FIG. 15/200 is a flow chart of a control chain generator program. FIGS. 15/201 through 15/204 illustrate different combinations of instructions which may be used in writing out the initial portions of a control chain. FIG. 15/205 is a flow diagram of a hypothetical control system which is to be implemented using a control chain, and FIG. 15/206 illustrates a control chain written out in the language of a systems engineer to implement the control system shown in FIG. 15/205.
FIG. 15/211 shows the control chain generator program calculation table. FIGS. 15/210, 15/212, 15/213, 15/215, and 15/216 illustrate the format of data which is used by the systems engineer in writing out his macro data specifications which define both the systems engineer's terminology and the preliminary computations which are to be carried out on the systems engineer's data before that data is presented to the operating system. FIG. 15/214 is a table explaining the codes used to designate the operation which is carried out by a type 3 macro data specification of the type illustrated in FIG. 15/213. FIG. 15/217 illustrates a possible macro specification which might be used to define how a particular algorithm subroutine is to be used by a systems engineer.
FIGS. 15/301 through 15/304 illustrate the organization of data within four different types of analog scan monitor data files. FIGS. 15/305 through 15/308 illustrate the organization of data within calculated value monitor data files. FIG.
15/309 illustrates the organization of data within a contact closure input logical variable data file of the type which is processed by the logic initiator program. FIG. 15/310 illustrates the organization of data within the file for a contact closure input which is not a logical variable and which is not processed by the logic initiator program. FIG. 15/311 illustrates a type of data file which may be used in association with a contact closure output logical variable. FIG. 15/312 illustrates a type of data file which may be used in defining a constant value. FIG. 15/313 illustrates a type of data file which may be used in defining a system logical variable other than a contact closure input or output. FIG. 15/314 illustrates the organization of data within an analog control chain file of the type which is linked into a subtask linkage of data files. FIG. 15/315 illustrates the organization of data within a normal control chain file which is assigned its own subtask number. FIG. 15/316
illustrates one possible format for a subtask bidding file containing subtask numbers which are to be bid when the file is processed as part of a subtask linkage of files. FIG. 15/317 illustrates a dummy file which occupies some locations in the file storage area not otherwise occupied by files. FIGS. 15/318 through 15/321 illustrate various forms of general files which may be defined by the systems engineer for any number of purposes.
FIGS. 17/500A et seq.
All of the figures prefixed by "17/-" contain computer program listings written out either in FORTRAN or in assembly language.
FIGS. 17/500A through 17/500F present a listing of the file loader program. FIGS. 17/510, 17/520, 17/530, and 17/540 present listings of subroutines which are called upon by the file loader program.
FIGS. 17/601 through 17/619 present listings of all of the file handler subroutines, and FIGS. 17/620 through 17/622 and 17/624 through 17/629 present listings of all of the directory handling subroutines.
FIGS. 17/700, 17/710, 17/720, and 17/730 present a listing of the control chain processor program. FIGS. 17/8A01 through 17/8A06, 17/8A08 through 17/8A11, 17/8A13 through 17/8A15, and 17/8A17 through 17/8A32 present listings of a representative selection of algorithm subroutines.
FIGS. 17/900A through 17/900D present a listing of the auxiliary synchronizer program. FIGS. 17/910, 17/920, 17/930, 17/940, 17/950A and B, 17/960, and 17/970 present listings of various subroutines which are part of the auxiliary synchronizer program.
A listing of the sublevel processor program is presented in FIGS. 17/1000 through 17/1090. FIGS. 17/100 to 17/1017 present listings of miscellaneous subroutines which form a part of the sublevel processor program. FIGS. 17/1020 and 17/1021 are listings of the subroutines which record and execute subtask bids. FIG. 17/1030 presents a listing of the basic task program.
FIG. 17/1040 presents a listing of the basic subtask exit program. FIGS. 17/1050 to 17/1056 together form a listing of the CHKBID routine. FIGS. 17/1060 through 17/1067 present a listing of the program which transfers subtasks between disk and core storage. FIGS. 17/1070A, 17/1070B, 17/1071, 17/1072 and 17/1073 present a listing of the various subroutines which include provision for automatic suspension of a calling subtask while a subtask is transferred between core and disk storage. FIGS.
17/1080 through 17/1083 present listings of the subroutines which participate in the execution and in the termination of subtask time delay and suspension. FIG. 17/1090 presents a listing of the subroutine which releases a core buffer occupied by one subtask for use by another subtask.
The logic initiator program is presented in FIGS. 17/1101A through 17/1170. A listing of the digital scan program is presented in FIGS. 17/1101A through 17/1101E, and a relevant set of tables are presented in FIG. 17/1102. A listing of the alarm and trigger check subroutine is presented in FIG. 17/1103. A listing of a subroutine which establishes logical variables as triggers for subtask bids is presented in FIG. 17/1110. A listing of a subroutine which establishes logical variables as triggers for alarm messages is presented in FIG. 17/1120. A listing of a subroutine which terminates logical variable - to - subtask trigger linkages is presented in FIG. 17/1130, and a listing of a subroutine which terminates logical variable - to - alarm message trigger linkages is presented in FIG. 17/1140. FIG. 17/1150 presents a listing of a subroutine which determines the state of any system logical variable. FIGS. 17/1160 and 17/1170 are listings of subroutines which allow the state of a system logical variable to be altered.
A listing of the data file processing program is presented in FIGS. 17/1200A, 17/1200B, and 17/1210.
FIGS. 17/1310A through D present a listing of the file access and enter subroutine. FIGS. 17/1311 to 17/1313 present listings of subroutines which are called upon by the file access and enter subroutine.
FIGS. 17/1501 through 17/1531 present a listing of the data file generator program. FIGS. 17/1541 through 17/1566 present a listing of the control chain generator program.
ALPHABETICAL LIST OF SYMBOLIC NAMES
Many of the programs, routines, subroutines, locations, and tables involved in implement