Abstract:
A display system is provided for a monitoring and alarm system. The monitoring and alarm system includes a central processing unit (10) and a plurality of sensors (14) polled by the central processing unit. A display which is part of the central processing unit is used to prompt user inputs to group a plurality of the sensed variables and the states and limits of each of the variables in a group. The display system is employed by the user to generate a schematic display of the system or environment being monitored. In the process of generating the schematic display, the user links alarm areas on the schematic display with a group or single variable defined by the user. In addition, the user links message areas on the schematic display with user defined messages to be displayed in the event all the conditions defined by the states and limits of variables in a group are true. After each schematic has been generated, it is stored together with the data defining the linked areas of the display. A stored schematic display may then be invoked, and once invoked, messages and status conditions are displayed in response to the sensed conditions of groups of variables sensed by said monitoring and alarm system.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     present application describes an improvement to the invention disclosed in application Ser. No. 06/531,650, filed concurrently herewith by Lawrence Keith Stephens and Robert B. Hayes entitled &#34;Monitoring and Alarm System for Custom Applications&#34;. The invention described in this application uses a schematic display generator which is the subject of application Ser. No. 06/499,458 filed May 31, 1983, entitled &#34;Schematic Building Cursor Character&#34;, a text placement scheme for graphics displays which is the subject of application Ser. No. 06/499,451 filed May 31, 1983, entitled &#34;Text Placement on Graphics Screen&#34;, and a graphics box generator that is described in application Ser. No. 06/531,651, filed concurrently herewith, all of which applications were filed by Lawrence Keith Stephens and assigned to a common assignee with this application. 
     FIELD OF THE INVENTION 
     The present invention is in the field of monitoring and alarm systems, and more particularly, the invention is directed to a display system which facilitates customization and use of a general purpose monitoring and alarm system to a variety of applications and environments. 
     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 valued 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 for 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. 
     In the aforementioned related application Ser. No. 06/531,650, there is described a monitoring and alarm system of general purpose design which can be customized for use with many different applications to provide sophisticated alarming functions based on logical relationships among several sensed variables. In that system, the end user inputs the desired states, limits and logical relationships for several sensed variables for a particular application. The user does this in response to prompts provided in the form of screens or menus displayed by the monitor of a microcomputer. The present invention is an extension or improvement of that basic monitoring and alarm system which allows the end user to generate and display schematic representations of the application or environment showing the locations of the various sensors and other components. The displayed schematic representation is linked with the logical groups and alarm conditions to provide the user of the monitoring and alarm system with the maximum possible information about the monitored application. 
     SUMMARY OF THE INVENTION 
     It is therefore an object of the present invention to provide a display system for a monitoring and alarm system which allows the end user to generate and display schematic representations of monitored application or environment. 
     It is a further object of the subject invention to provide an interactive display system that displays a schematic representation of a monitored application or environment in which the end user links logical groups and/or single variables to positions on the schematic display. 
     It is yet another object of the invention to provide a monitoring and alarm system adapted for custom applications with an interactive display that allows the end user to link areas of a graphic display to alarm situations and value areas. 
     The foregoing and other objects of the invention are attained by the linking of dynamic data and alarm areas during schematic generation. Variables or alarm/action definitions are linked to areas on a schematic of the system being monitored and this causes values, states or messages to be displayed on the screen or blink an area on the screen to show an alarm situation. A schematic of the environment or system being monitored is constructed using an interactive display. This is accomplished using the schematic display generator described in application Ser. No. 06/499,458 and the text placement scheme for graphics displays described in application Ser. No. 06/499,451. A logical group or variable name is then linked to a position on the screen by moving a cursor to starting coordinates on the display screen. A rectangular box with one corner at the starting coordinates is then generated to enclose the logical group or variable. The generated box represents an alarm window. An alarm/action is then linked to the logical group or variable enclosed in the box. This process is repeated until all logical groups and single variables have been linked to an alarm/action function. When this process has been completed, the display is stored. 
     Once the dynamic display has been generated, it is invoked from a menu selection on the display directory screen. For any given environment or system being monitored, there will typically be a plurality of dynamic displays. Most environments or systems that will be monitored will be too complex to permit the generation of a schematic display that can be accomodated on a single CRT screen. Therefore, the environment or system will be divided into a plurality of sections, and schematics generated for each section. Even for simple environments or systems, a plurality of displays may be generated to show specific components in the system in greater detail. The name selected from the display directory is passed to the dynamic display and employed to determine which dynamic display table and background is to be employed. The dynamic display creates an in-memory data base of variables, alarm/action entries and dynamic display entries. This data base is used to get alarm messages, blink locations on the screen, determine if alarm/action entries are active and write out history entries. The in-memory data base for variables consists of one multi-entry variable array with &#34;analog ins&#34; at one end and &#34;digital ins&#34; and &#34;digital outs&#34; mixed with timer variables at the other end. As defined in the aforementioned related application, Ser. No. 06/531,650, entitled &#34;Monitoring and Alarm System for Custom Applications&#34;, an &#34;analog in&#34; is an input signal from a sensor that produces a signal that may vary over a range of values. For example, an &#34;analog in&#34; might be generated by a thermocouple and represent a temperature 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. In addition, there are &#34;timer&#34;  signals which are input by the user to define a delay, if any, for the alarm/action function. When the desired dynamic display is invoked, sensors are monitored to acquire data and the data is checked against limits and statuses which were previously input by the user. Then the coniditions of defined logical groups are checked, and alarm/action signals are generated and messages displayed as required. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The foregoing and other objects, advantages and aspects of the invention will be understood from the following detailed description 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; 
     FIGS. 2 to 6 are illustrations of a schematic display for the pedagogical example of FIG. 1 showing the process of linking according to the subject invention; 
     FIGS. 7 and 7A, taken together, are a flow chart summarizing the process of linking the alarm/action variables with the schematic display; and 
     FIG. 8 is an illustration of the schematic display invoked in the dynamic display process showing an alarm condition of the furnace being too cool. 
    
    
     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 more particularly described in the copending application Ser. No. 06/531,650, entitled &#34;Monitoring and Alarm System for Custom Applications&#34;, the host computer 10 is programmed to permit the user to customize the monitoring and control functions of the computer for the specific applications and environment. In this simple example, a furnace burner 12 is operational to gernerate 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 as previously defined. 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. 
     In the invention described in application Ser. No. 06/531,650, entitled &#34;Monitoring and Alarm System for Custom Applications&#34;, the first operation that must be performed by the user 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. The next step in defining the control strategy employed is to create the logical groupings of the defined variables. This is also facilited with a series of screens or menus to first provide a name for the logical group, then define the logical group and the limits and status of the individual members of the group, and finally define the &#34;digital out&#34; signals and input the user defined messages to appear when all of the values of the logical group are true. 
     The present invention provides a dynamic display for the monitoring and alarm system which provides especially useful information to the system operator. This display is a schematic representation of the environment or system being monitored and provides a dynamic indication to the system operator of the status and values of the various variables being monitored, the status of the &#34;digital out&#34; signals, and an alarm condition, if any, plus any predefined messages as may be required by the conditions detected. The first step is the generation of the schematic and the linking of dynamic data and alarm areas in the display during the schematic generation. Reference may be made to applications Ser. No. 06/499,458 and Ser. No. 06/499,451, both filed May 31, 1983 by Lawrence Keith Stephens for details of generating the schematic display. 
     Referring now to FIG. 2, there is shown an illustration of a simple schematic display generated to represent the pedagogical example of FIG. 1. There is a menu at the bottom of the schematic display, and it will be observed that the function &lt;ASSOCIATE&gt;has been selected in order to invoke the linking function. The cursor is then moved above the menu lines and, as shown in FIG. 3, a prompt is presented for a pointing. According to a preferred embodiment of the invention, the pointing is for the upper left corner of the alarm area. Thus, as shown in FIG. 3, the cursor has been placed to the upper left of the funace. When the user presses the ENTER key, the cursor is XORed to remove it from the display and the program begins to draw a small box. The process of drawing the box or similar geometric character is described in more detail in my application Ser. No. 06/531,651, entitled &#34;Geometrical Display Generator&#34; filed concurrently herewith. In the preferred embodiment, a joy stick is used for the cursor control and box generation. For purposes of convenience, the ENTER key may be a button on the joy stick control. The box for the alarm area expands as the user moves the joy stick down to the right. The user can expand the box to enclose the area s/he wants to specify as the alarm area to a maximum x direction of 48 pixels and a maximum y direction of 40 pixels in the preferred embodiment being described. Obviously, these constraints are to a degree arbitrary, and any other dimensional limitations on the size of the box are clearly within the scope and meaning of the invention as defined in the appeded claims. 
     When the box encloses the area to be designated as the alarm area as shown in FIG. 4, the user again presses the joy stick button or ENTER key to signify completion of the designation of the alarm area. The program then stores the starting x and y coordinates in two arrays. The first pointing is the starting area of the alarm box in the dynamic display. The size parameters are the dimensions of the box. 
     Then the user is prompted for a name as shown in FIG. 5. This name can be a variable name or an alarm/action name as defined in application Ser. No. 06/531,650, entitled &#34;Monitoring and Alarm System for Custom Applications&#34; filed concurrently herewith. If the name is not found in the variable file and the name is not found in the alarm/action file, then an error message is printed and the user is asked if s/he would like to try again. If the user does not wish to try again, then s/he is returned to the function before &lt;ASSOCIATE&gt;was invoked. If a valid name is entered, the program stores the entry number of the variable or alarm/action in an array. Then the user is again prompted for a pointing for the center of the value area as shown in FIG. 6. The user positions the cursor in the center of the area s/he wants the value to be located and presses the joy stick button or the ENTER key. The x and y coordinates of the pointing are saved by the dynamic display for centering the value of an &#34;analog in&#34;, the state of a &#34;digital in&#34; and/or a &#34;digital out&#34; or the screen message for the logical group. After this pointing, the user is returned to the function previously active. 
     When the user files the schematic, s/he creates two files and makes an entry in a third. The user files the schematic by choosing the &lt;FILE&gt;option from the menu at the bottom of the schematic display. This option prompts the user for a file NAME of eight or fewer characters. Then the user is prompted for a file description of seventy characters or less. These are put in the first available blank record of the display table. Then the background image of the screen is saved in a file called NAME.SCR. Finally, the dynamic display information is stored in a file called NAME.ddt. This file contains a first record specifying how many records are in the file and N records containing the linking information described above, where N stands for the number of entries in the file. The linking process is summarized in the flow chart shown in FIG. 7. 
     After all the dynamic displays have been generated and stored for a given environment or system being monitored, a specific dynamic display is invoked from a menu selection on the display directory screen. An example of an invoked dynamic display is shown in FIG. 8. This display was invoked using the name &#34;BOCA&#34;. The name selected from the display directory is passed to the dynamic display and employed to determine which dynamic display table and background is to be employed The dynamic display creates an in-memory data base of variables, alarm/action entries and dynamic display entries. This data base is used to get alarm messages, blink locations on the screen, determine if alarm/action entries are active and write out history entries. The in-memory data base for variables consists of one multi-entry variable array with &#34;analog ins&#34; at one end and &#34;digital ins&#34; and &#34;digital outs&#34; mixed with timer variables at the other end. This array is 210 entries long with entries 201 to 210 reserved for timer variables. The total number of variables in the system cannot exceed 200, so by expanding the &#34;analog ins&#34; from 0 to increasing numerical values and expanding the &#34;digital ins&#34; and &#34;digital outs&#34; from 199 to decreasing numerical values, array space is conserved. This limitation is due to the requirement in the BASIC programming language of explicitly declaring array sizes. Thus, the limitation is imposed by the programming language used in the preferred embodiment and should not be construed as a limitation on the invention as defined in the appended claims since the use of other programming languages may not impose the same or a similar limitation. 
     The entries in the variable file for &#34;analog ins&#34; are as follows: 
     (1) Varentry: Entry number in the variable file for a variable. 
     (2) Sensor: Type of variable. 1=analog, 2=digital out, 3=digital in, 4=timer. 
     (3) Cluster: The cluster number. 
     (4) Chanport: The channel number. 
     (5) Engunits: Record number in the engunits.tab containing the engineering units for the variable. 
     (6) Deadband: The alarm deadband for the variable. 
     (7) Lowlimit: The low alarm limit for the variable. 
     (8) Highlimit: The high alarm limit for the variable. 
     (9) Roclimit: The rate of change alarm limit for the variable. 
     (10) Lowwlimit: The low warning limit for the variable. 
     (11) Highwlimit: The high warning limit for the variable. 
     (12) Ratio: The ratio for converting to engineering units. 
     (13) Yoffset: The y intersect for converting to engineering units 
     (14) Alarmflag: The alarm mask for the variable. 
     The entries in the variable file for the &#34;digital ins&#34; and the &#34;digital outs&#34; are as follows: 
     (1) Varentry: Entry number in the variable file for a variable. 
     (2) Sensor: Type of variable. 1=analog, 2=digital out, 3=digital in, 4=timer. 
     (3) Cluster: The cluster number. 
     (4) Chanport: The port number. 
     (5) Bit: The bit number. 
     (6) Zerostat: Record number in the name.tab containing the Name for the zero status of a variable. 
     (7) Onestat: Record number in the name.tab containing the Name for the one status of a variable. 
     (8) Alarmflag: The alarm mask for the variable. 
     The entries in the variable file for timer values are as follows: 
     (1) Varentry: Entry number in the variable file for a variable. 
     (2) Elapsed: The amount of elapsed time for the variable. 
     (3) Time: The amount of time for the timer. 
     The in-memory data base for alarm/action entries consists of one multi-entry array. The entries in the alarm/action file are as follows: 
     (1) Logic: A two dimensional array containing the internal pointers to the variable file and the state or limit mask for the entry. The first dimension facilitates the 15 possible logic entries for each logical group. The second dimension facilitates the 200 possible entries in the alarm/action file. 
     (2) Lentry: The alarm/action entry number. 
     (3) Scrmessage: Record number in the message.tab containing the user defined screen message. 
     (4) Botscrmessage: Record number in the message.tab containing the user defined alarm message. 
     (5) Fullscreen: Record number in the name.tab containing the name of the display to be invoked if the logical group is true. 
     (6) Event: Entry to determine whether or not to write a record to the event file. 0=no entry, 1=entry. 
     (7) Alarm: Entry to determine whether or not to write a record to the alarm file. 0=no entry, 1=entry. 
     (8) Audible: Entry to determine if an audible alarm will be sounded. 0=no audible alarm, 1=short audible alarm, 2=audible alarm until acknowledgement. 
     (9) Treset: Entry containing the internal pointers the variable file timer to be reset when the logical group becomes true. 0=no entry. 
     (10) Start: Entry containing the internal pointers to the variable file timer to be started when the logical group becomes true. 0=no entry. 
     (11) Digitalout: A two dimensional array containing the internal pointers to the variable file and the state mask for the &#34;digital out&#34; entry. The first dimension facilitates the 8 possible &#34;digital out&#34; entries for each logical group. The second dimension facilitates the 200 possible entries in the alarm/action file. 
     (12) Logicstat: The status mask denoting the current status of each alarm/action entry. 
     The in-memory data base for dynamic display information consists of one multi-entry array. The entries in the dynamic display file are as follows: 
     (1) Ddtentry: Internal pointers to the variable or alarm/action file for which the dynamic display information pertains. 
     (2) Ddttype: The type of entry. 1=variable, 2=alarm/action. 
     (3) Ulxchar: The upper left x coordinate for the alarm area. 
     (4) Ulychar: The upper left y coordinate for the alarm area. 
     (5) Sizex: Size of the alarm area in the x direction. 
     (6) Sizey: Size of the alarm area in the y direction. 
     (7) Ulxvalue: The center x coordinate for the value, display message or status message to appear. 
     (8) Ulyvalue: The center y coordinate for the value, display message or status message to appear. 
     The first in-memory data base built is the variable file. Each entry from the variable.tab on disk is read into the variable file in memory. No translation is necessary for elements of the variable file. As an entry is read from disk, the type of entry is determined and the proper entries as described above are taken from variable.tab on disk and added to the variable file in memory. 
     Next, the alarm/action disk is read in. Each entry from the alarm/action file is read from the file on disk and translated into the in-memory data base. As each entry is read, each of the 15 possible logical entries is looked up in the in-memory variable file and replaced with an internal pointer to the variable file. The same process is done for each &#34;digital out&#34; specified. All the other entries specified in the in-memory data base are directly obtained from the disk file. 
     Next, the dynamic display table is read in. Each entry from the dynamic display file on disk is read into the in-memory data base. As the entries from disk are read, the type of ddt entry is determined, and the entry number is changed into a pointer to the alarm/action file entry in memory or a pointer to the variable file entry in memory. 
     Next, the background screen is displayed. Then, the initial alarm box is built in memory by setting memory bit patterns. 
     A loop is then entered to do the data acquisition, check the logical groups and do the dynamic display work. The data acquisition requires going over a comm. link to acquire current values and states. Then the alarm flag entry for each variable is set to reflect the current state of the variable. Valid state masks are as follows: 
     Hex 8000--High alarm for analog, one state for digital, or time up for a timer variable. 
     Hex 4000--High warning limit for digital, zero state for digital. 
     Hex 2000--Rate of change limit for analog, start state for timer variables. 
     Hex 1000--Low alarm state for analog. 
     Hex 800--Low warning limit for analog, reset state for timer variable and change of state for digitals. 
     The logical grouping check requires that each entry in the n-memory alarm/action file be checked against the alarm flag masks identified above. If each logic entry for a given logical group is true, then: 
     (1) Set the logicstat entry for the logical group =2 if it was less than 2 else 4. 
     (2) If the in-memory alarm entry&gt;1 then beep. 
     (3) If the in-memory alarm entry &gt;1 then if logicstat entry=2 then write out alarm file entry. 
     (4) If the logicstat=2 then: 
     (a) use the botscrmessage entry if=&gt;0 to get the message from the message file and write it on the screen and the printer; 
     (b) use the fullscren entry if=&gt;0 to get the fullscreen name of the new display; then read in the new dynamic display file and load the new background screen and reset firstflag; 
     (c) if the treset entry=&gt;0 then set the alarm flag for reset for the entry specified by treset; 
     (d) if the start entry=&gt;0 then set the alarm flag for start for the entry specificed by start; 
     (e) if event is=&gt;0 then write a record to the event file. 
     (5) For each digitalout entry&lt;&gt;0 set the &#34;digital out&#34; to the specified value. 
     If any group was not true, then if the logicstat entry &lt;1, then the logicstat entry=1 else the logicstat entry=0. The dynamic display work requires each entry of the in-memory dynamic display file to be checked. If it is an alarm/action definition, then: 
     (1) if alarming is in effect, then: 
     (a) set the size of the box to alarm from the in-memory dynamic display sizex and sizey. 
     (b) set the number of times to blink the area; 3 times initially, 2 while still in alarm, 1 to exit. 
     (c) do the initial blink of the box and decrement the blink using the ulxchar and ulychar from the in-memory dynamic display data base. 
     (2) if scrmessage&gt;0then get the screen message from the message file and put it on the screen in the position specified in the in-memory xvalue and yvalue field. 
     (3) if blink&gt;0 then blink the box and decrement until blink =0. 
     If it is a variable entry then for an analog variable: 
     (1) Put the value in the position specified in the in-memory dynamic display data base items ulxvalue and ulyvalue. 
     (2) If firstflag =0 then use the engunits entry in the variable file in-memory data base and get the engineering units from the engunits.tab. Put them up after the value on the screen. 
     or for a digital variable: 
     (1) If a change of state occured (designated by loww in the alarmflag) or if firstflag=0 then: 
     (a) If alarmflag entry equal to Hia then use the onestat entry to get the 8 character message to appear on the screen and put it at the ulxvalue and ulyvalue from the dynamic display in-memory data base. 
     (b) If alarmflag entry equal to Hiw then use the zerostat entry to get the 8 character message to appear on the screen and put it at the ulxvalue and ulyvalue from the dynamic display in-memory data base. 
     The process continues to loop until function key F3, for example, is pressed. 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## ##SPC2## ##SPC3## ##SPC4## ##SPC5##