Abstract:
A monitoring and alarm system of general purpose design can be customized for use with many different applications to provide sophisticated alarming and control functions based on logical relationships among several sensed variables. A central processing unit is connected to receive a plurality of inputs from various sensors, the variety and type of which are the choice of the user depending on the specific application to which the monitoring and alarm system is to be connected. The central processing unit is programmed to provide the user with an interactive display to first define the variables in the application and the states and/or limits of the variables. This action defines a logical group. Next, the user enters the alarm/action functions to be performed on the condition that all the conditions in the logical group are true. Once this interactive process has been completed, the central processing unit performs the alarm and control functions specified by the user.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     The present application describes an invention which uses a schematic display generator that is the subject of application Ser. No. 499,458 filed May 31, 1983, entitled &#34;Schematic Building Cursor Character&#34; and a text placement scheme for graphics displays that is the subject of application Ser. No. 499,451 filed May 31, 1983, entitled &#34;Text Placement on Graphics Screen&#34;, both of which applications were filed by Lawrence Keith Stephens and assigned to a common assignee with this application. Related to this application and filed concurrently herewith are application Ser. No. 531,774 entitled &#34;Display for Monitoring and Alarm System&#34; now U.S. Pat. No. 4,588,987 issued May 13, 1986, and application Ser. No. 531,651 entitled &#34;Geometrical Display Generator&#34;, both also filed by Lawrence Keith Stephens and assigned to the same common assignee. 
     FIELD OF THE INVENTION 
     The present invention is in the field of monitoring and alarm systems, and more particularly, the invention is directed to such a system which can be customized by the end user to provide monitoring and alarm functions for a variety of applications. 
     BACKGROUND OF THE INVENTION 
     Monitoring and alarm systems are required for a wide variety of applications ranging from simple mechanisms to rather complex processes. An example of a simple mechanism requiring a monitoring and alarm system would be a home heating system, and an example of a complex process also requiring a monitoring and alarm system would be a petroleum cracking plant. In the past, the monitoring and alarm systems that have been provided for such diverse applications have been quite different reflecting the differing complexity of the applications. For example, a heating system might be equipped with a temperature sensor to monitor the plenum temperature of the furnace and a simple audio or visual alarm to provide an indication when a safe temperature is exceeded. In contrast, the petroleum cracking plant incorporates many processes that are mutually interdependent. Not only are temperatures at various points in the plant monitored, but flow rates, chemical constituents and various other variables are monitored. Some of the monitored variables may have single value set points or limits which, if exceeded, would constitute an alarm condition. More often, however, the variables being monitored are interdependent meaning that an alarm condition is not indicated unless a certain combination of variable values is detected. 
     The monitoring and alarm systems which have been developed for very complex applications are characterized by central processing units (CPU) connected to receive inputs from a plurality of sensors and to generate the appropriate alarms or other indications that may be required for the particular application. The CPU is programmed and otherwise adapted fo use in the specific environment. Since each installation is, in effect, a special purpose design, the monitoring and alarm systems for such complex applications are very expensive; however, the expense is justified by the relatively great cost of the application itself. There are on the other hand many applications which would be greatly improved by more sophisticated monitoring and alarm systems but for which the expense of such systems as presently designed cannot be justified. 
     SUMMARY OF THE INVENTION 
     It is therefore an object of the present invention to provide a monitoring and alarm system of general purpose design which can be customized for use with many different applications to provide sophisticated alarming and control functions based on logical relationships among several sensed variables. 
     It is another object of the subject invention to provide a monitoring and alarm system for custom applications that uses a CPU to not only monitor a plurality of variables and test their values against predetermined values, but also allow the end user to easily and readily adapt the system to a specific environment. 
     It is a further object of the invention to provide a CPU based monitoring and alarm system of general purpose design in which the end user can input the desired values and logical relationships for several sensed variables and the alarms and/or control actions to be provided for a particular application. 
     The foregoing and other objects of the invention are attained in a preferred embodiment by using a microcomputer as the CPU for the monitoring and alarm system. The microcomputer may be one of the popular personal or small business computers now on the market, but in the preferred embodiment, the microcomputer is the IBM Personal Computer. This microcomputer is connected to receive a plurality of inputs from various sensors, the variety and type of which are the choice of the end user depending on the specific application to which the monitoring and alarm system is to be connected. The microcomputer may also be connected to suitable audio and/or visual alarms or instead of or in addition to may be programmed to employ the built in speaker and/or the display monitor to provide the required alarm functions. 
     The microcomputer is programmed to provide the end user with a plurality of screens or menus to first allow the user to input data that defines the input variables. This is done by associating the variable names with the hardware addresses of the several sensors that provide inputs to the microcomputer. Next the end user is prompted to input data that determines the states, limits and logical groupings of the several variables being monitored. This allows a very flexible arrangement that allows the end user to customize a general purpose design to a specific end use environment. Moreover, it is possible to easily modify the system by adding or removing sensors or by changing the states, limits and logical groupings of the variables being monitored without expensive modifications or reprogramming. When a logical group has been defined, then on the basis of all the conditions defined by the logical group being true, the microcomputer is programmed to perform the alarm and control functions which are also determined by the end user by inputing data in response to screen prompts. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The objects of the invention as well as other aspects and advantages thereof will be better understood from the following detailed description of the invention with reference to the accompanying drawings, in which: 
     FIG. 1 is a block diagram of a simple furnace control system used as a pedagogical example of the operation of the invention; 
     FIG. 2 is an illustration of a schematic display for the pedagogical example of FIG. 1; 
     FIG. 3 is an illustration of the initial schematic display showing temperature and state conditions of the furnace and state condition of the cooler or fan for the pedagogical example of FIG. 1; 
     FIG. 4 is an illustration of the schematic display showing the furnace in an alarm condition as well as the temperature and state condition of the furnace and the state condition of the cooler or fan for the pedagogical example of FIG. 1; and 
     FIG. 5 is a flow chart summarizing the process of making the logical groupings according to the invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring now to the drawings and more particularly to FIG. 1, there is shown a simple furnace control system which illustrates the basic principles of the subject invention. A host computer 10 is the principle monitoring and control element. In the preferred embodiment, the host computer 10 is an IBM Personal Computer or similar microcomputer, and as will become clear in the following description, the host computer 10 is programmed to permit the user to customize the monitoring and control functions of the computer for the specific application and environment. In this simple example, a furnace burner 12 is operational to generate heat, and a thermocouple 14 is responsive to the heat generated and produces an electrical signal which is amplified by amplifier 16. The output of amplifier 16 is connected to one input of the host computer 10 by means of an appropriate analog-to-digital interface 18. The signal from the amplifier 16 is referred to as an &#34;analog in&#34; signal because the signal may vary over a range of values. For example, the &#34;analog in&#34; signal from amplifier 16 may represent thermocouple temperatures in the range of -120° to + 120° Fahrenheit. In contrast a &#34;digital in&#34; signal would have either an on or off value. Similarly, a &#34;digital out&#34; signal may be turned on or off by a software transaction initiated at the host computer 10. Thus, a &#34;digital in&#34; or a &#34;digital out&#34; signal represent a single bit of information which may be in either the 0 or the 1 state. In FIG. 1, there are three &#34;digital out&#34; signals from the host computer 10. One is supplied to a valve 20 that is operative to turn the burner 12 either on or off. A second is supplied to the fan 22 to turn it either on or off. The third is supplied to the alarm 24 to activate it. 
     The first operation that must be performed by the user of the subject invention is to define the variables of the system that is being monitored and controlled. This process may be characterized as creating a strategy of control and is accomplished by associating variable names with sensor hardware addresses. This is facilitated with a series of screens or menus which are generated by any well known display manager utility. The first of these is illustrated below: 
     
         ______________________________________VARD              VARIABLE DEFINITIONVariable Name     [FURNONOF]Cluster Number     0-7     [0]  Sensor Type AI,DO,DI,TI [DO]Port              [1 ]Bit       0-7     [1]Zero Status       [OFF ]One Status        [ON]Messages - Press appropriate function key when allfields are filled in.F1 = Delete    F2 = File    F3 = Quit F4 = Reset______________________________________ 
    
     In the screen illustrated above, the brackets indicate the locations of user inputs which are typically made by means of a keyboard that is part of the host computer 10. This convention is common to many well known programs requiring data input from the user. In this specific screen, a &#34;digital out&#34; is defined. The variable&#39;s hardware address is cluster 0, port 1 and bit 1. Note that the sensor type is specified as DO meaning that it is a &#34;digital out&#34;. Obviously, AI stands for analog in and DI stands for &#34;digital in&#34;. Not previously mentioned, however, is TI which stands for &#34;Timer&#34;. This is another type of input to the host computer that allows the user flexibility in deciding whether a delay should be built into the alarm. When the variable defined by the illustrated screen is in the zero state, the message &#34;OFF&#34; will appear on any screen for which this variable is defined. This particular variable is assigned the eight character name &#34;FURNONOF&#34;. The name was chosen to reflect the ability to turn the furnace on or off. 
     The second variable defined is &#34;COOLONOF&#34;. As the name suggests, this variable is a &#34;digital out&#34; employed to turn the fan 22 on and off. The definition for it is found in the screen illustrated below: 
     
         ______________________________________VARD              VARIABLE DEFINITIONVariable Name     [COOLONOF]Cluster Number     0-7     [0]  Sensor Type AI,DO,DI,TI [DO]Port              [1 ]Bit       0-7     [0]Zero Status       [OFF ]One Status        [ON]Messages - Press appropriate function key when allfields are filled in.F1 = Delete    F2 = File    F3 = Quit F4 = Reset______________________________________ 
    
     The variable &#34;COOLONOF&#34; has a hardware address of cluster number 0, port 1 and bit 0. It is also a &#34;digital out&#34; as indicated by the sensor type DO. 
     The third variable to be defined is &#34;SETALARM&#34;. As the name suggests, this variable has the purpose of turning the alarm 24 on and off. It is also a digital out, and it is defined by the screen shown below: 
     
         ______________________________________VARD              VARIABLE DEFINITIONVariable Name     [SETALARM]Cluster Number     0-7     [0]  Sensor Type AI,DO,DI,TI [DO]Port              [1 ]Bit       0-7     [2]Zero Status       [OFF ]One Status        [ON]Messages - Press appropriate function key when allfields are filled in.F1 = Delete    F2 = File    F3 = Quit F4 = Reset______________________________________ 
    
     The fourth variable defined is &#34;FURNTEMP&#34;. It represents the analog in coming from the thermocouple 14. The limits associated with &#34;FURNTEMP&#34; and its addressing information are contained in the screen illustrated below: 
     
         ______________________________________VARD          VARIABLE DEFINITIONVariable Name [FURNTEMP]Cluster Number 0-7         [0]   Sensor Type AI,DO,DI,TI [AI]Channel       [1 ]Engineering Units         [DEGF]Alarm Dead Band         [10  ]   Zero Entries in bothLow Alarm Limit         [70  ]   Eng. Unit FieldsHigh Alarm Limit         [180 ]   assumes input in Eng.Rate of Change Limit         [10  ]   UnitsLow Warning Limit         [168  ]  Zero Eng. U. [0 ]High Warning Limit         [170 ]   Full Scale [0 ]Messages - Press appropriate function key when allfields are filled in.F1 = Delete    F2 = File    F3 = Quit F4 = Reset______________________________________ 
    
     The fifth variable defined is &#34;FURN1&#34;. This variable represents an &#34;analog in&#34; whose value is obtained by a conversion algorithm defined at file definition time. The conversion information is displayed in the &lt;Zero in Eng. Unit&gt; field and the &lt;Full Scale in Eng. Unit&gt; field. The values in this example are -17.777 and 37.7777. They facilitate the conversion of a value 0-100% full scale to a value in engineering units. In this specific case, a value in degrees Fahrenheit is converted to degrees Celcius. The addressing and limit information for the variable are shown in the screen below: 
     
         ______________________________________VARD          VARIABLE DEFINITIONVariable Name [FURN1 ]Cluster Number 0-7         [0]   Sensor Type AI,DO,DI,TI [AI]Channel       [1 ]Engineering Units         [DEGC]Alarm Dead Band         [10  ]   Zero Entries in bothLow Alarm Limit         [0  ]    Eng. Unit FieldsHigh Alarm Limit         [200 ]   assumes input in Eng.Rate of Change Limit         [10  ]   UnitsLow Warning Limit         [20  ]   Zero Eng. U.[-17.777]High Warning Limit         [100 ]   Full Scale [37.7777]Messages - Press appropriate function key when allfields are filled in.F1 = Delete    F2 = File    F3 = Quit F4 = Reset______________________________________ 
    
     The next step in defining the control strategy employed is to create the logical groupings of the defined variables. The screen shown below shows the name of the alarm/action definition (logical group) which, for this example, is &#34;BOCA&#34;: 
     
         ______________________________________ACTN       ALARM/ACTION DEFINITIONAction Name [BOCA ]Messages - Fill in the action name or F9 for rotateand press - F1 = Del F2 = File F3 = QuitF4 = Reset F7 = Bck F8 = For F9 = Rotate______________________________________ 
    
     The screen shown below shows the single variable &#34;FURNTEMP&#34; and the state of interest for the control logic: 
     
         __________________________________________________________________________ACTN       ALARM/ACTION DEFINITIONVARIABLE NAME      ANALOG or DI       DIGITAL      HIAL          HIWA RCHG LOWA LOAL                         ZERO ONE(1)   [FURNTEMP]  170(2)   [](3)   [](4)   [](5)   [](6)   [](7)   [](8)   [](9)   [](10)   [](11)   [](12)   [](13)   [](14)   [](15)   []Messages - Fill in the variable name or F9 for rotateand press - F1 = Del F2 = File F3 = QuitF4 = Reset F7 = Bck F8 = For F9 = Rotate__________________________________________________________________________ 
    
     As shown in this screen, the state is in the high warning condition at 170° F. When &#34;FURNTEMP&#34; is in high warning, the alarm and action definitions outlined in the following two screens will occur: 
     
         ______________________________________ACTN     ALARM/ACTION DEFINITIONMESSAGE TO APPEAR ON USER DEFINED SCREEN[FURNACE ON/OFF CONTROL    ]MESSAGE TO APPEAR ON THEBOTTOM OF THE SCREEN[***FURNACE TOO HOT, CALL SUPERVISOR.                      ]NAME OF THE NEW SCREEN TO APPEAR: [SIMULATE]EVENT HISTORY ENTRY Y/N [N]ALARM FUNCTION Y/N [Y]AUDIBLE ALARM 1 = SHORT 2 =UNTIL ACKNOWLEDGED [1]RESET TIMER [  ] START TIMER [                      ]Messages - Fill in the message and pressF1 = Del  F2 = File  F3 = Quit    F4 = ResetF7 = Bck  F8 = For   F9 = Rotate______________________________________ 
    
     
         ______________________________________ACTN         ALARM/ACTION DEFINITIONVARIABLE NAME        DIGITAL OUT STATUS ZERO ONE(1)  [COOLONOF]  ON(2)  [](3)  [](4)  [](5)  [](6)  [](7)  [](8)  []Messages - Fill in the Digital Out, or F9 for rotateand Press - F1 = Del F2 = File F3 = QuitF4 = Reset F7 = Bck F8 = For F9 = Rotate______________________________________ 
    
     In the first of the above two screens, the first item is the &lt;Message to Appear on User Defined Screen&gt;. The message appears when the logical group becomes true and remains until the logical group becomes not true. The next item is the &lt;Message to Appear on the Bottom of the Screend&gt;. This message appears on the bottom of the display when the logical group becomes true. The message is also logged to the printer and time and date stamped. The next item defines the new display to appear when the logical group becomes true. The next item says that no record is to be written to the event history file. The next item says that this logical group is an alarmable function. That implies that any alarm area on a dynamic display that is linked to this logical group will blink red, for example, when the logical group becomes true. It also implies that a record will be written to the alarm file when the logical group becomes true, when the alarm is responded to, and when the logical group is no longer true. The next entry is the audible alarm entry. By putting a 1 in the blank, a short audible alarm will occur when the logical group becomes true. The next two entries are blank because no timer is involved in this strategy. In the next screen, the digital outs and their states are defined for this logical group. When the logical group becomes true, these digital outs will be set if they are not already in the specified states. The purpose of this logical group is to set an alarm on the screen and turn on the fan whenever the furnace gets too warm. 
     Another alarm/action (logical) group is defined to turn on the furnace initially and turn off the fan when the furnace gets too cold. Its name is BOCA1 in this example. In the screen shown below, the name of the alarm/action (logical) group is inserted by the user: 
     
         ______________________________________ACTN       ALARM/ACTION DEFINITIONAction Name [BOCA1 ]Messages - Fill in the action name or F9 for rotateand press - F1 = Del F2 = File F3 = QuitF4 = Reset F7 = Bck F8 = For F9 = Rotate______________________________________ 
    
     The next screen shows the single variable FURNTEMP and the state of interest for the control logic, which in this case is the low warning condition. This screen is shown below: 
     
         __________________________________________________________________________ACTN       ALARM/ACTION DEFINITIONVARIABLE NAME      ANALOG or DI           DIGITAL      HIAL HIWA RCHG LOAL                       LOWA ZERO ONE(1)   [FURNTEMP]               168(2)   [](3)   [](4)   [](5)   [](6)   [](7)   [](8)   [](9)   [](10)   [](11)   [](12)   [](13)   [](14)   [](15)   []Messages - Fill in the variable name or F9 for rotateand press - F1 = Del F2 = File F3 = QuitF4 = Reset F7 = Bck F8 = For F9 = Rotate__________________________________________________________________________ 
    
     When FURNTEMP is in low warning, the alarm and action definitions shown in the next two screens will appear. In the first of these screens shown below, the first item is again the &lt;Message to Appear on User Defined Screen&gt;. The message appears when the logical group becomes true and remains until the logical group becomes not true. The next item is the &lt;Message to Appear at the Bottom of the Screen&gt;. This message appears on the bottom of the display when the logical group becomes true and is also logged to the printer and time and data stamped. The next item defines the new display to appear when the logical group becomes true and so forth as before: 
     
         ______________________________________ACTN     ALARM/ACTION DEFINITIONMESSAGE TO APPEAR ON USER DEFINED SCREEN[                              ]MESSAGE TO APPEAR ON THE BOTTOM OF THE SCREEN[                              ]NAME OF NEW SCREEN TO APPEAR:                     [        ]EVENT HISTORY ENTRY Y/N [N]ALARM FUNCTION Y/N [N]AUDIBLE ALARM 1 = SHORT 2 =UNTIL ACKNOWLEDGED [1]RESET TIMER [    ] START TIMER                         [        ]Messages - Fill in the message and press - F1 = DelF2 = File    F3 =    F4 = Reset  F7 = Bck                                F8 = ForF9 = Rotate    Quit______________________________________ 
    
     In the next screen, the &#34;digital outs&#34; and their states are defined for this logical group: 
     
         ______________________________________ACTN         ALARM/ACTION DEFINITIONVARIABLE NAME        DIGITAL OUT STATUS ZERO ONE(1)  [FURNONOF]  ON(2)  [COOLONOF]  OFF(3)  [](4)  [](5)  [](6)  [](7)  [](8)  []Messages - Fill in the Digital Out, or F9 for rotateand press - F1 = Del F2 = File F3 = QuitF4 = Reset F7 = Bck F8 = For F9 = Rotate______________________________________ 
    
     As part of the customization process, the user generates a schematic display of the process to which the monitoring and alarm system is being applied. The preferred method of generating the schematic display is disclosed in application Ser. No. 499,458 entitled &#34;Schematic Building Cursor Character&#34;. Text is added to this display according to the technique described in application Ser. No. 499,451 entitled &#34;Text Placement on Graphics Screen&#34;. For the specific example being described, the schematic display is quite simple as shown in FIG. 2. The symbol labeled &#34;Alarm&#34; corresponds to alarm 24 shown in FIG. 1. Similarly, the symbol labeled &#34;Furnace&#34; corresponds to the furnace including burner 12, and the symbol labeled &#34;Cooler&#34; corresponds to the fan 22. The steps involved in creating the schematic display of FIG. 2 are as follows: 
     (1) Place all the primary symbols on the screen in the locations desired. 
     (2) Position the text strings in the appropriate locations. 
     (3) Underline any locations of primary importance. 
     (4) Link all alarm/action definitions and variables with the areas designated for them on the screen. 
     (5) File the schematic away under a name of the user&#39;s choice. In the specific example being described, the name chose was &#34;Simulate&#34;. 
     (6) Press function key F3 to signify the completion of the schematic generation process. 
     The screen shown below is an example of a screen that allows the user to select the desired dynamic display: 
     
         ______________________________________DSEL        DISPLAY MENUName        DescriptionWHOLE       This is an example of logical groupings.NEWMANUAL      This is an example of a manual override.SIMULATE    This is the furnace on/off control screen.______________________________________ 
    
     Assuming that &#34;Whole&#34; is selected, FIG. 3 shows the dynamic display initially. FIG. 4 shows the display after the alarm/action (logical) group BOCA becomes true and the new display &#34;Simulate&#34; is invoked. In FIG. 4, the furnace is shown in alarm. The logical group also turned on the fan to cool down the furnace. As the fan cools the furnace, it will cause the temperature to approach the low warning state. When this occurs, the fan is turned off as a result of the logical group BOCA1 becoming true. 
     The simple example just described demonstrates the basic operation and principles of a preferred embodiment of the subject invention. The flow chart shown in FIG. 5 illustrates the process. Briefly summarizing, the system performs the function of monitoring and comparing values to limits, changes of states, elapsed time and combinations of these. The limits consist of user defined low alarm limits, low warning limits, rate of change limit, high alarm limit and high warning limit. The states consist of a &#34;digital in&#34; or &#34;digital out&#34; being in the logical one or zero state. Timer variables are provided to allow the user to define strategies based on time. Monitoring consists of acquiring the value of each variable on a user defined frequency and a system defined phase. The values are compared to limits or states, and a bit mask is set to note the current state of each variable in the system. Users will define limits and the frequency at which the variable is scanned during variable definition. Alarm definition is accomplished by linking up to 16 variables and a state or limit for each variable to a specific action/alarm name. Also linked to this name is the action to be taken when all the states are true. The actions (alarms) can include any or all of the following: 
     (1) Setting up to 8 &#34;digital outs&#34; to a user defined value. 
     (2) Blinking an area on the screen in a user defined color. 
     (3) Replacing the current display with a user defined display. 
     (4) Putting a message on the user&#39;s display. 
     (5) Displaying an alarm message. 
     (6) Writing a record to the event file. 
     (7) Sounding the horn on the Personal Computer. 
     (8) Resetting a timer variable. 
     (9) Starting a timer variable. 
     The logical grouping function of the invention is performed by first employing a display manager to retrieve data from the user. The display manager is not a part of the invention and could be any commercially available product similar to SPF or CICS. The data items input by the user include the following: 
     (1) At least one and up to 15 variables and their states. 
     (2) A message to display on a schematic. 
     (3) An alarm message. 
     (4) Another dislay name. 
     (5) Whether a record should be written to the event history file. 
     (6) Whether a record should be written to the alarm history file. 
     (7) Whether an audible alarm should be sounded for a short time, until acknowledged, or never. 
     (8) Whether a timer variable should be reset. 
     (9) Whether a timer variable should be started. 
     (10) Up to 8 &#34;digital outs&#34;. 
     When logical groupings is initially invoked, the old alarm/action file&#39;s first record is acquired. The first two bytes of the record contain the number of records in the file. The second two bytes contain the last entry number used in the file. Total records is set equal to the number of records in the file, and Oldentry is set equal to the last entry number used. 
     The data items are collected interactively by the user filling in the blanks of successive screens. The first screen of data is a prompt for the alarm/action name. The user enters a name consisting of 8 alpha-numeric characters. The alarm/action file is searched for the entry. If the entry exists in the file, the items previously entered are retained as the current items to be edited. If the entry does not exist, the current items are blanked out and the name is used as a new entry. One function key is a dedicated rotate key. This key enables the user to display each alarm/action name in the prompt field one-at-a-time. 
     After a name is entered, the second screen is displayed with the contents of the current items. If the current items are blanks, then all data fields on the second screen are blank. The user must enter at least one variable name and choose the state or alarm limit of interest. Additionally, the user may choose up to 14 other variables and their states or limits. The way the user enters a variable state combination is to enter the variable name or use the rotate key to rotate through all the valid variable names from the variable file. When a valid variable is entered, the 5 limits will appear under their categories or the two digital states will appear. The user can use the tab key to select a state, differentiation of the selected state or limit is achieved by reverse-video display of the selected time or state. When the state or limit of interest is selected, the user presses the enter key to signify choice. The entry number in the variable file for the variable selected is then ORed with the state or limit fo form the logic entry for the alarm/action entry. The masks are as follows: Hex 8000 for High Alarm, Hex 4000 for High Warning, Hex 2000 for rate of change, Hex 1000 for Low Alarm, Hex 800 for Low Warning, Hex 8000 for digital status of on or timer elapsed, and Hex 4000 for digital status off or timer reset. 
     When the user has completed his/her selection of the variables and their states, the user is then prompted to save the entries. The user can press function keys F2 or F8 to save the entries in a memory resident data base. At that point, the third screen of information is presented to the user. 
     The third screen first prompts the user for a message to appear on the user defined screen and a message to appear on the bottom of the screen. If entered, these are stored in the memory resident data base; otherwise, a null entry is stored. The next entry is for a new screen to appear. All new screens must have a unique file type of &#34;.ddt&#34;; therefore, checking can be done to assure the user&#39;s entry is a valid new screen. If a screen&#39;s name is entered, the name is stored in the memory resident data base; otherwise, a null entry is saved. The next entry is the event history entry. This field calls for a &#34;Y&#34; or &#34;N&#34; entry. A default of &#34;N&#34; is assumed. This entry determines whether a record is written to the event history file whenever the logical group becomes true. The next entry is the alarmable function entry. It is also a &#34;Y&#34; or a &#34;N&#34; field. A default of &#34;N&#34; is assumed. This entry determines whether alarm records should be written to the alarm history file for the logical group. If a &#34;Y&#34; is entered, a record will be written whenever the logical group becomes true, is acknowledged, and becomes not true. The next entry is the audible alarm field. A &#34;1&#34; in this field signifies a single beep whenever the logical group is true, a &#34;2&#34; signifies a continual beeping until acknowledgement of the alarm, and a blank entry signifies no beep is to occur. The final two entries are the reset and start timer entries. These entries are timer variable names. The reset timer allows a timer variable to be reset on the occurance of a logical group becoming true. The start time allows a timer variable to be started on the basis of a logical group becoming true. Both of these entries are checked by searching the variable file to determine if the name entered is an actual timer variable. After all the entries have been filled out properly, the user is prompted to save the entries. This is accomplished by pressing either of the function keys F2 or F8. When the user presses F2 or F8, the next screen is presented. 
     The fourth screen of data presents the user with 8 blank variable name slots. The user is prompted to fill-in-the-blanks with &#34;digital outs&#34;. Up to eight &#34;digital outs&#34; and their states may be specified for control action in the event of the logical group becoming true. When a user enters a variable name, the variable file is searched to verify the name being a &#34;digital out&#34;. If it is, the zero state name and the one state name are obtained from the name file through pointers contained in the variable file record for the &#34;digital out&#34;. The state names are then displayed on the screen under their titles. The user can tab between the two entries to select the state of his/her choice. After the desired choice is displayed in reverse-video, the user can press the enter key to signify selection and if the zero state name is selected, the variable file entry number is ORed with Hex 4000. If on the other hand the one state is selected, the variable file entry is ORed with Hex 8000. The modified entry number is the stored in the memory resident data base. This process continues until the user presses function key F2 to save the alarm/action entry. 
     When the function key F2 is pressed on the final page, the memory resident data base is transformed into a record to be entered into the alarm/action file. The memory resident data base consists of an 8 byte alarm/action name, a 32 byte array containing the logic entries, two 39 byte message fields, an 8 byte screen field, a two byte event history field, a two byte alarm field, a two byte audible alarm field, a two byte reset timer field, a two byte start timer field, and an 18 byte &#34;digital out&#34; array. If the user entries are an update of an already existing logical group, the entries go into the existing record in the alarm/action file. If not, a search of the alarm/action file is made to find a free record (designated by a -1 in the entry field). Oldentry is then incremented and the empty records entry number is set equal to Oldentry. Each logic entry is then entered into the record. Then the user defined screen message is entered into the message file and a pointer to the message file record is saved in the alarm/action file. If no message was entered by the user, a &#34;-1&#34; is entered as the pointer value. The Bottom of the screen message is handled the same way. The full screen name is entered into the name file and a pointer to the name record is entered into the alarm/action file. The entries for event history field, alarm field and the audible alarm field are put into the record, then the reset timer entry and the start timer, and finally the 8 &#34;digital out&#34; entries are inserted into the record. Then, the record is written to the alarm/action file, the memory data base is initialized and the first screen is presented to the user. 
     Whenever the user selects the function key F3 to end the program, the alarm/action file is cleaned-up. This process consists of searching the alarm/action file for any entry numbers not equal to &#34;-1&#34; and putting the entries at the front of the file starting with the second record. Then, the number of records is entered in the first two bytes of the first entry, and the last entry nyumber used is entered in the second two bytes of the first record. 
     The following is a description of the files used in the preferred embodiment of the invention: 
     
         ______________________________________(1)  Variable file (varfile.tab):(a)    The first record of the variable file has two  entries. The first two bytes is the number of  records contained in the file. The second two  bytes contain the largest entry number used.(b)    Each record after the first record have one of  two formats. Differentiation of format is  accomplished by the type entry which occurs in  the same location of each format.  Type 1 (Analog In) has a format as given below:     Name of Field                  Description(1)       SENSEUP$:    2 byte integer field                  containing the type.(2)       VARUP$:      8 byte character field                  containing the variable name.(3)       CLUSTERUP$:  2 byte integer field                  containing the cluster the                  variable is in.(4)       ET$:         2 byte integer field                  containing the entry number                  for the record.(5)       CHANNELUP$:  2 byte integer field                  containing the analog channel                  the &#34;analog in&#34; should come                  from.(6)       ENGUP$:      2 byte integer field                  containing the pointer to the                  engineering units file record                  for the &#34;analog in&#34;.(7)       DEADUP$:     4 byte single precision real                  value containing the alarming                  dead band.(8)       LOWUP$:      4 byte single precision real                  value containing the low alarm                  limit.(9)       HLUP$:       4 byte single precision real                  value containing the high                  alarm limit.(10)      ROCUP$:      4 byte single precision real                  value containing the rate of                  change alarm limit.(11)      LWLUP$:      4 byte single precision real                  value containing the low                  warning limit.(12)      HWLUP$:      4 byte single precision real                  value containing the high                  warning limit.(13)      ZENGUP$:     4 byte single precision real                  value containing the zero                  value in engineering units.(14)      FENGUP$:     4 byte single precision real                  value containing the full                  value in engineering units.(15)      RATIO$:      4 byte single precision real                  value containing the ratio to                  be employed in converting to                  engineering units.(16)      FILLA$:      10 byte filler for future                  expansion.Type 2, 3 and 4 (Digital In, Digital Out andTimer) have a format as given below:     Name of Field                  Description(1)       SENSEUP$:    2 byte integer field                  containing the type.(2)       VARUP$:      8 byte character field                  containing the variable name.(3)       CLUSTERUP$:  2 byte integer field                  containing the cluster the                  variable is in.(4)       ET$:         2 byte integer field                  containing the entry number                  for the record.(5)       PORTUP$:     2 byte integer field                  containing the Digital Port                  the &#34;digital in&#34; should come                  from or the time in seconds                  for the timer.(6)       BITUP$:      2 byte integer field                  containing the bit of interest                  for a &#34;digital in&#34; or a                  &#34;digital out&#34;.(7)       ZEROSUP$:    2 byte integer field                  containing a pointer to the                  name file for the record                  containing the message.(8)       ONESUP$:     2 byte integer field                  containing a pointer to the                  name file for the record                  containing the message.(9)       FILLD$:      42 byte filler for future                  expansion.(2)  Alarm/Action file (scrfile.tab):(a)    The first record of the Alarm/Action file has  two entries. The first two bytes is the number  of records contained in the file. The second  two bytes contain the largest entry number  used.(b)    Each record after the first record has the  following:     Name of Field                  Description(1)       A$:          2 byte integer field                  containing the entry number                  for the record.(2)       B$:          8 byte character field                  containing the                  Alarm/Action name.(3)       C$:          2 byte integer field                  containing the first                  logical entry.(4)       D$:          2 byte integer field                  containing the second                  logical entry.(5)       E$:          2 byte integer field                  containing the third                  logical entry.(6)       F$:          2 byte integer field                  containing the fourth                  logical entry.(7)       G$:          2 byte integer field                  containing the fifth                  logical entry.(8)       H$:          2 byte integer field                  containing the sixth                  logical entry.(9)       I$:          2 byte integer field                  containing the seventh                  logical entry.(10)      J$:          2 byte integer field                  containing the eighth                  logical entry.(11)      K$:          2 byte integer field                  containing the ninth                  logical entry.(12)      L$:          2 byte integer field                  containing the tenth                  logical entry.(13)      M$:          2 byte integer field                  containing the eleventh                  logical entry.(14)      N$:          2 byte integer field                  containing the twelfth                  logical entry.(15)      O$:          2 byte integer field                  containing the thirteenth                  logical entry.(16)      P$:          2 byte integer field                  containing the fourteenth                  logical entry.(17)      Q$:          2 byte integer field                  containing the fifteenth                  logical entry.(18)      R$:          2 byte integer field                  containing the pointer to the                  message file entry                  for the user&#39;s screen image.(19)      S$:          2 byte integer field                  containing the pointer to the                  message file entry                  for the alarm message.(20)      T$:          2 byte integer field                  containing the pointer to the                  name file for the                  new screen name.(21)      T$:          2 byte integer field                  containing the event history                  file entry specifier.(22)      U$:          2 byte integer field                  containing the alarmable                  function specifier.(23)      V$:          2 byte integer field                  containing the audible                  alarm specifier.(24)      W$:          2 byte integer field                  containing the timer                  entry number for resetting.(25)      X$:          2 byte integer field                  containing the timer                  entry number for starting.(26)      Y$:          2 byte integer field                  containing the first &#34;digital                  out&#34; entry and state.(27)      A0$:         2 byte integer field                  containing the second                  &#34;digital out&#34; entry and state.(28)      A1$:         2 byte integer field                  containing the third &#34;digital                  out&#34; entry and state.(29)      A2$:         2 byte integer field                  containing the fourth &#34;digital                  out&#34; entry and state.(30)      A3$:         2 byte integer field                  containing the fifth &#34;digital                  out&#34; entry and state.(31)      A4$:         2 byte integer field                  containing the sixth &#34;digital                  out&#34; entry and state.(32)      A5$:         2 byte integer field                  containing the seventh &#34;digital                  out&#34; entry and state.(33)      A6$:         2 byte integer field                  containing the eighth &#34;digital                  out&#34; entry and state.(3)  Message file (message.tab):The message file has a format as given below:     Name of Field                  Description(1)       message$:    39 byte character field                  containing the message.(2)       fm$:         1 byte filler.(4)  Name file (names.tab):The name file has a format as given below:     Name of Field                  Description(1)       nameentry$:  8 byte character field                  containing the name.(2)       nametype$:   2 byte type of name. 1 =                  screen name, 2 = &#34;digital out&#34;(5)  Engineering Units file (engunit.tab):The engineering units file has a format as below:     Name of Field                  Description(1)       engineeringunits$:                  4 byte character field                  containing the                  engineering units.(6)  Event table file (event.tab):(a)    The first record of the Event table file has  one entry. The first two bytes is the number  of the last record written.(b)    Each record after the first record has:     Name of Field                  Description(1)       actent$:     2 byte entry number of the                  alarm/action entry.(2)       actdate$:    12 byte date and time of the                  entry.(7)  Alarm table file (alarm.tab):(a)    The first record of the Alarm table file has  one entry. The first two bytes is the number  of the last record written.(b)    Each record after the first record has:     Name of Field                  Description(1)       alarment$:   2 byte entry number of the                  alarm/action entry.(2)       typealarm$:  2 byte type of the alarm                  entry. 1 = alarm occurred,                  2 = alarm acknowledged, 3 =                  out of alarm(3)       alamrdate$:  12 byte date and time of the                  entry.(8)  Dynamic Display Table (NAME.ddt where NAME is thedisplay name):(a)    The first record of the Dynamic Display Table  file has one entry. The first two bytes is the  number of records in the file.(b)    Each record after the first record has:     Name of Field                  Description(1)       entry$:      2 byte entry number of the                  alarm/action or variable                  entry.(2)       ulxchar$:    2 byte x coordinate of the                  upper left corner of the                  alarm area.(3)       ulychar$:    2 byte y coordinate of the                  upper left corner of the                  alarm area.(4)       boxx$:       2 byte size of the alarm area                  in the x direction.(5)       boxy$:       2 byte size of the alarm area                  in the y direction.(6)       alarm$:      2 byte alarm area for color of                  alarm.(7)       ulxvalue$:   2 byte x coordinate of the                  center of the value area.(8)       ulyvalue:    2 byte y coordinate of the                  center of the value area.(9)       typeddt$:    2 byte type of record. 1 =                  variable, 2 = alarm/action(10)      fill$:       2 byte filler for future use.(9)  Dynamic Display Background file (NAME.SCR whereNAME is the display name):This file contains the background bit patternmaking up the graphic screen image of the process.(10) Symbol Tables file (NAME.SYM where NAME is thesymbol table name):This file contains the graphic images of thesymbols used to create a screen. Each symboltable has a similar format as follows:(1)       The first two bytes are used for the number of     symbols.(2)       The next 2$n bytes (where n = number of     symbols) - each of these locations contains the     offset in bytes from the start of the symbol     buffer area where the symbol is contained.(3)       The next ??? bytes is the symbol buffer area.     The symbols are all stored adjacent each other     in screen-ready format. Each symbol has four     bytes of x,y information and INT((2*X + 7)/8)*Y     bytes of bit information.(11) Display Table file (display.tab):This file contains the schematic names and adescription for each schematic. Each record has:     Name of Field                  Description(1)       entryname$:  8 byte name of the schematic.(2)       entry$:      70 byte description of the                  schematic.______________________________________ 
    
     The following is the complete program for the preferred embodiment of the invention, which program was written using the IBM Personal Computer BASIC Compiler, version 1:00: ##SPC1##