WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Communication coordinator for messages to be sent from at least one data source to a plurality of clients    
United States Patent5606705   
Link to this pagehttp://www.wikipatents.com/5606705.html
Inventor(s)Randall; Jeffrey C. (Minneapolis, MN); Gowda; Anil K. (Eden Prairie, MN); McCarthy; Timothy F. (Plymouth, MN); Schwarz; Edward L. (Minneapolis, MN)
AbstractA computer has access to a number of data items available from at least one data source. The computer receives requests for the values of certain of these data items from a number of different clients which may be either devices external to the computer or application programs operating in a multitasking environment within the computer. As each request is received from a client, it is stored in a data item table. The computer replies to each client request in the data item table with a data item value available somewhere in the data item table. The computer updates older data item values held by the data item table by requesting those data item values from the data sources which provide them. The data item values supplied to clients are those from previously received data source replies if these replies are not too old. This reduces the number of requests for data item values which the data sources must handle, reduces traffic on a data link which might otherwise be overloaded, and reduces the delay in responding to client requests.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5606705
Communication coordinator for messages to be sent from at least one data

     source to a plurality of clients - US Patent 5606705 Drawing
Communication coordinator for messages to be sent from at least one data source to a plurality of clients
Inventor     Randall; Jeffrey C. (Minneapolis, MN); Gowda; Anil K. (Eden Prairie, MN); McCarthy; Timothy F. (Plymouth, MN); Schwarz; Edward L. (Minneapolis, MN)
Owner/Assignee     Honeywell Inc. (Minneapolis, MN)
Patent assignment
All assignments
Publication Date     February 25, 1997
Application Number     08/228,057
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     April 15, 1994
US Classification     709/203 340/506
Int'l Classification     G06F 015/00
Examiner     Coleman; Eric
Assistant Examiner     Follansbee; John
Attorney/Law Firm     Schwarz; Edward L.
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/800 395/200 395/200.01 340/506 379/88
Patent Tags     communication coordinator messages be sent least one data source plurality clients
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

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

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5390138
Milne
381/119
Feb,1995

[0 after 0 votes]
5388255
Pytlik
707/4
Feb,1995

[0 after 0 votes]
5386503
Staggs
715/788
Jan,1995

[0 after 0 votes]
5369570
Parad
705/8
Nov,1994

[0 after 0 votes]
5155842
Rubin
714/22
Oct,1992

[0 after 0 votes]
5049873
Robins
340/825.01
Sep,1991

[0 after 0 votes]
5039980
Aggers
340/506
Aug,1991

[0 after 0 votes]
4804937
Barbiaux
340/459
Feb,1989

[0 after 0 votes]
4554418
Toy
379/88.01
Nov,1985

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

N/A

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

No, license is not currently available



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

No, license is not currently available



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

No



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

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

No



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

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


The embodiments of an invention in which an exclusive property or right is claimed are defined as follows:

1. An improvement in a communication system for supplying values provided by at least one data source for a plurality of data items each having assigned to it, its own data item identity code and each data item having its value available from a single data source, to each of a plurality of clients each having its own client identity code, each client supplying on a client data link, client request signals encoding a data item identity code and the client identity code and receiving on the client data link, client reply signals encoding values of data items in association with the respective data item identity codes thereof, said communication system including a server comprising i) a processing unit connected to at least one client data link and at least one source data link, and ii) a data memory in which data may be recorded and retrieved by the processing unit and in which may be recorded by the processing unit a data item table comprising a plurality of entries where in each entry may be recorded a client identity code, a data item identity code, and a data item value and wherein each data item table entry is designated by an identifier, and wherein each said data source is connected to a source data link allowing two way communication between the data source and the processing unit, each said data source providing a source reply signal to the server on the source data link to which it is connected responsive to a source request signal provided on the source data link by the processing unit, each said source request signal encoding a data item identity code, and said source reply signal encoding a value for the data item whose identity code was encoded in the source request signal for which the source reply signal is the response, wherein the processing unit includes the improved apparatus comprising:

a) client request means connected to a client data link and receiving client request signals thereon, for recording in a data item table entry for a client request signal, the identity code for the client supplying that client request signal and the identity code of the data item in that client request signal;

b) source request means connected to a preselected source data link and receiving from the data memory, the data recorded in selected entries in the data item table, for issuing source request signals to a data source on the preselected source data link, said source request signals encoding the data item identity codes recorded in the selected data item table entries;

c) a clock providing a clock signal encoding a time value comprising the current time of day wherein the source reply means further comprises means receiving the clock signal;

d) source reply means connected to each source data link and receiving the source reply signals therefrom, and connected to the clock and receiving the clock signal therefrom, i) for recording in an entry in the data item table in which is recorded the data item identity code encoded in the source request signal for which each source reply signal is a response, the data item value encoded in that source reply signal, and ii) for recording in the data item table in the entry whose data item value is provided by a source reply signal, a time stamp value equal to the time value encoded in the clock signal at the time that source reply signal was received;

e) client reply means connected to each client data link, for scanning the data item table, and for issuing a client reply signal on a client data link to at least two of the plurality of clients, each client reply signal encoding data item value and the data item identity code recorded in an entry of the data item table and wherein each client reply signal is provided to a client whose identity code is recorded in a data item table entry in which the data item identity code encoded in the client reply signal is also recorded;

f) data item selection means for selecting a data item table entry in which is recorded a time stamp value; and

g) valid time means receiving the valid interval signal and the clock signal for calculating a valid data time value as a function of i) the time stamp value recorded in the selected data item table entry and ii) the valid data time interval encoded in the valid interval signal, and for issuing a client reply signal encoding the data item value recorded in the selected data item table entry responsive to the valid data time value exceeding the time value in the clock signal.

2. The communication system of claim 1, wherein the data item selection means comprises means for issuing a selection signal encoding the identifier designating the selected data item table entry; wherein the valid time means includes means for issuing an invalid data signal having a preselected value responsive to the time value in the clock signal exceeding the valid data time value; and wherein the source request means includes means receiving the selection signal and the invalid data signal, for issuing a source request signal encoding the data item identity code in the data item table entry designated by the identifier encoded in the selection signal responsive to the preselected value of the invalid data signal.

3. The communication system of claim 1, wherein the data item selection means includes means for selecting at least two data item table entries having recorded therein equal data item identity codes; and wherein the valid time means includes means for calculating for each of the selected data item table entries a valid data time value equal to the sum of i) the time stamp value recorded in the data item table entry and ii) the valid data time interval encoded in the valid interval signal, and for including in the client reply signal the data item value from the selected entry whose valid data time value is larger than that of any other selected entry and larger than the time value in the clock signal.

4. The communication system of claim 3, wherein the data item selection means comprises means for issuing a selection signal encoding an identifier designating the selected data item table entry; wherein the valid time means includes means for issuing an invalid data signal having a preselected value responsive to the time value in the clock signal exceeding each of the valid data time values; and wherein the source request means includes means receiving the selection signal and the invalid data signal, for issuing a source request signal encoding the data item identity code recorded in the data item table entry designated by the identifier encoded in the selection signal responsive to the preselected value of the invalid data signal.

5. The communication system of claim 4, wherein the source reply means comprises means for recording the data item value encoded in the source reply signal in the data item table entry designated by the identifier encoded in the selection signal which designated the data item table entry from which was retrieved the data item identity code in the source request signal to which the source reply signal is the response.

6. The communication system of claim 4, wherein the client request means further comprises means receiving a plurality of client request signals each encoding an update interval, for recording the update interval in the data item table entry for that update interval's client request signal; wherein the data item selection means includes means for selecting a data item table entry in which is recorded an update interval and in which is recorded an update time value smaller than the time value encoded in the clock signal, and means for thereafter setting the update time value equal to the time value encoded in the clock signal plus the update interval; wherein the valid interval means comprises means for encoding as the valid data time interval in the valid data time signal, the update interval in the selected data item table entry.

7. The communication system of claim 1, wherein the valid time means further comprises means responsive to the condition of the time value encoded in the clock signal exceeding the valid data time value, for scanning a plurality of the data item table entries, for comparing the time stamp values for each entry having a data item identity code equalling the data item identity code in the selected data item table entry, and for issuing a client reply signal encoding the data item value recorded in the entry having the largest time stamp value.

8. The communication system of claim 1, wherein the client reply means further comprises request table update means responsive to the time value in the clock signal exceeding the valid data time value, for recording in an entry of a request table held in a preselected portion of the data memory, the identifier of the selected data item table entry, and wherein the source request means comprises means for selecting a request table entry, and for issuing on the source data link to a data source a source request signal encoding a data item identity code recorded in the data item table entry designated by the data item table entry identifier recorded in the selected request table entry.

9. The communication system of claim 8, wherein the source reply means comprises means receiving the current source reply signal, and responsive thereto, for retrieving the request table entry in which is recorded the data item table identifier designating the data item identity code encoded in the source request signal to which the current source reply signal is the response, and for recording the data item value encoded in the source reply signal, in the data item table entry designated by the data item table entry identifier in the retrieved request table entry.

10. The communication system of claim 9, wherein the processing unit includes means for activating the source request means responsive to a source reply signal.

11. The communication system of claim 8, wherein the client reply means further comprises means for recording the time of day value encoded in the clock signal as a request time value in the request table entry in association with the data item table entry identifier, and wherein the source request means includes means for selecting the request table entry having the smallest request time value.

12. The communication system of claim 8, wherein the client reply means includes means for recording the identifier of the selected data item table entry in the request table responsive only to inequality between the identifier for the selected data item table entry and each of the data item table entry identifiers recorded in the request table entries.

13. The communication system of claim 8, wherein the valid time means further comprises means for selecting a plurality of data item table entries having equal data item identity codes, and for calculating a valid data time value for each of said selected entries, each said valid data time value for an entry equal to the time stamp value recorded in the entry plus the valid data time interval, and responsive to the largest valid data time value exceeding the time value in the clock signal, issuing a client reply signal encoding the data item value recorded in the data item table entry having the largest time stamp value, and wherein the request table update means further records in the request table, the identifier of a selected data item table entry responsive to the time value in the clock signal exceeding said largest valid data time value.

14. The communication system of claim 13, wherein the processing unit includes means for activating the source request means responsive to a source reply signal.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

With the decreasing cost and increasing power of microcontrollers, it has become common to use them as individual processing modules for all sorts of complex information gathering, processing, and displaying functions, as well as for controlling the operation of systems of all types. Microcontrollers are typically used in two different ways. In the first of these, they are embedded in a system along with ROM (read only memory) in which dedicated software instructions are permanently held, and with a modest amount of RAM (random access memory) for holding operand values for short periods of time. An embedded microcontroller and its software usually comprise only a single processing module. These microcontrollers are also used as the processing element in the extremely common personal computers having large disk memories, a large RAM, and a keyboard and display unit for communication with a human. A personal computer can hold a number of separate software applications and operate these more or less simultaneously in a multitasking mode. By "multitasking" is meant that instruction execution proceeds for one software application for a period of time, and then is transferred to another application. An external event or simply the passage of a prescribed period of time may transfer execution of instructions from one to another application. The appearance is thus created that a number of multitasked applications are operating simultaneously, even though two instructions from two different applications are typically not executed precisely simultaneously. Each of the multitasked applications can be considered a separate processing module, in that each has an independent existence. As a practical matter, it is frequently possible to perform a particular function with a processing module of either of these types.

It is common to employ a number of these processing modules in a single system, each of them dedicated to a specific function or group of functions. These processing modules may each comprise a separate microcontroller. It is also possible to have a number of different software applications of a single system operating in this multitasking mode within a single microcontroller, each software application also comprising a processing module. It is also possible to have a hybrid system, comprising a personal computer with a number of software types of processing modules along with a number of embedded microcontrollers also performing functions in the system. There are a number of advantages in dividing the computing burden in this way. Some functions are more effectively performed with one type of processing module, some with others. It is possible that there are uses for certain types of processing modules in different types of systems, and by modularizing the function, can be more easily transferred between the systems. Also, modular systems can be more easily analyzed when the inevitable errors arise, in that there are well-defined inputs and outputs lending themselves to easier access.

In order to coordinate the activities of these processing modules, it is useful to connect the individual processing modules of a larger system which perform these functions in a way which allows transfer of data among the processing modules. Where these processing modules are separate microcontrollers, they may be interconnected by cabling over which data is transferred. Many different types of arrangements permitting efficient and reliable transfer of data between a number of embedded or stand-alone processing modules have been designed. This problem is not trivial. Where the processing modules are multitasked software applications, it is of course possible to establish protocols allowing these processing modules to communicate with each other. Since only one at a time is typically active, the problem is somewhat simpler.

The data involved will typically indicate some quantity or value to which the processing module has access say through external sensors or which the module generates during its processing operations. This data will typically comprise discrete elements, and each of these elements of data will be referred to as a data item. For example in an environment control system, ambient air temperature may be a data item. Status, open or closed, of a valve controlling flow of fuel or refrigerant may be another data item. The result of a calculation may be another example of a data item. A data item may be generally considered to be a particular data element which has some digital value. A data item will typically also have an identity code which uniquely identifies it, since a source for a data item value may well be able to provide a number of different data items values.

As a system becomes more complex, the number of data items available will usually become large. In most cases, one processing module will have need for only some of the data item values which another of the processing modules has available. For example, a furnace controller may not need to have access to the temperature of the controlled space. All that it may need from the temperature control processing module is a demand flag which is set whenever the furnace must operate. One way to address the problem arising from transferring data unnecessarily between processing modules is to establish the protocol that one processing module will transmit a data item value to another only when requested. To follow the example from above, the furnace controller may request the demand flag data item every second or so from the temperature controller, and then based on its value will start up, shut down, or continue the current status of the furnace. In such a system, the processing module initiating a request signal is known as the client, and the processing module to which the request signal is sent is known as the data source, or simply "source". In an appropriate system, a particular processing module may be a client with respect to one request signal and a source with respect to another.

As the communication and control required by physical systems have become greater, the connections between the processing modules involved with these systems have become increasingly complex. If there are a large number of either clients or sources, it is not practical to have individual data paths from each of the modules to every other module. The situation may be complicated even more by the fact that the replies from data sources to requests may proceed very slowly compared to the internal speed of the clients because of high traffic levels on the data paths involved or because of slow processing speed for one or another reason on the part of the data source. The fact that individual processing modules may be physically spaced a substantial distance from each other and connected by a telephone modem is one obvious cause for slower speed. For all of these reasons, it has been found that it is sometimes more efficient to route all of the requests for data items and the replies to them through a single processing module. This routing function is one made to order for the high data handling capabilities of the small and cheap but powerful desktop computers now available. Where at least one of the processing modules in the system is already implemented within a desktop computer, it is convenient and cheap to devise a processing module which operates within that desktop computer, for directing and routing processing module communications.

The computer in which operates the processing module redirecting the client requests to the various sources and receiving and replying with the data item values, will be called the server computer, whether serving as the host for clients or data source applications or not. That is, in the case where client or source processing modules are multitasked software applications, the host computer in which the client or source applications execute may also be the server.

These host computers use an operating system of some type to accomplish the various communication and control functions which are a necessary adjunct to the application programs. For the IBM compatible types of computers, the most widely used of these operating systems is DOS. It is now usual for the more powerful types of these computers to use a higher level graphics-based operating system to accomplish many of these communication and control functions. For IBM compatible computers, this graphics-based operating system is known as "Windows". The function set available from the Windows operating system is much larger than that of DOS, but Windows uses many of the functions in DOS in implementing its own functions. Both DOS and Windows include a number of utility routines which are available to all of the application programs to perform common software communication and other functions, thereby freeing each of the users from having to individually replicate these frequently used functions. Certain of these utility routines will be mentioned in the description which follows.

The Windows operating system, recognizing the need for communication among the applications resident in the host computer, includes a function known as Dynamic Data Exchange (DDE) which allows one application program to request data items from another. In this function, an application provides a request to the Windows system identifying another application and the data item desired from it. The Windows system DDE function then requests that data item from the designated application, and responds to the requesting client application with that data item. A protocol is provided for this function which specifies such matters as formats of requests and replies, timing requirements, and error management. DDE data requests are of two types. One type is called a cold link, where a client request requires only a single response. The other type is a hot link, where a single request causes an immediate response, and then further responses at intervals specified by the hot link request, until the requesting client closes down the hot link request. Since each hot link periodically requires additional processing time, it is in no application's interest for a hot link to exist if unneeded. Therefore, as the need for a particular data item disappears, the requesting application should close down the hot link request, and this is customary.

The DDE function is intended for use where the data links between both the clients and the sources are host computer software processing modules, and therefore relatively fast. We have found that the DDE mechanism can also work reasonably well in a situation where the requested information is provided by the external sources mentioned above, rather than by application programs within the host computer. In one situation, the routing computer may be considered to include a single multiplexer or gateway to which is connected a number of data sources, each of which can have a relatively large number of data items available. A request (hereafter "source request") supplied to the gateway specifies the data source connected to the gateway and the specific data item value desired from that gateway. The gateway will send its own request to the specified data source and receive in reply the data item value from the data source in a data source reply. Because of the relative slowness of replies from the individual data sources and the extra gateway stage for both request and reply however, there is a substantial delay of at least several tenths of a second, and perhaps even several seconds, for the server to receive the data source reply sent in response to each request.

If client requests are relatively infrequent and the data link to the source is fast, the server can provide the requested information to clients relatively promptly. When a client request arrives, the routing computer simply sends the appropriate data source request via the gateway to the source from which the data item value is available. When the data source reply is returned to the routing computer, it passes the data item value therein on to the requesting client per the usual DDE procedure. Each data source reply includes a number of other parameters. These identify the data item value, the client which originated the client request to which the reply is directed, etc.

The server must be able to deal with the situation where a number of client data requests are pending at a particular time. This happens frequently where the gateway is of the type which accepts only a single source request at a time, but it can also happen where the volume of client requests exceeds the processing speed of the gateway. In such a situation, replies to client requests are delayed, perhaps to an extent where the data item value is worthless to the client when it is finally received. In the situation where the long term rate of client requests is greater than the capacity of the gateway or data sources to respond, then client requests will simply be lost since the table in which they are stored can have only finite capacity, and the entries will continue to grow. Thus, it would extremely valuable to be able to limit the number of source requests without limiting the number of replies sent to the clients.

BRIEF DESCRIPTION OF THE INVENTION

It may not be possible to speed up the data paths or the gateway linking the server computer and its clients to the data sources, and yet it is possible in many cases to provide data item values in a more timely manner to many of the clients by using the apparatus of this invention. We have found that in many of these types of systems, duplicate requests from different clients for the same data item occur relatively close in time to each other. We have further found that it is sometimes acceptable to answer all of these duplicate requests with the value provided in response to a single reply from a source for a data item value. The apparatus and method of our invention recognize this situation and allows a single data request from the routing computer to the data source for the data item involved to provide the data item encoded in the response to each of a number of the client requests for that data item.

Our invention is an improvement in a communication system for supplying values for data items each having its own identity code and each available from a single one of at least one data source, to each one of a plurality of clients each having its own identity code. Each of these clients requests the data item values by transmitting client request signals encoding the identity codes of the data items and the client identity code to the server or data item router on a client data link. The client data link allows for two way communication directed between each client and the server or router. A source data link allows two way communication between each data source and the server. Each data source provides to the server on the source data link a source reply signal encoding a data item value and the data item identity code for that data item responsive to a source request signal provided on the source data link by the server to the data source from which that data item's value is available. The source request signal sent by the server encodes the identity code of the data item desired.

The server includes a processing unit and a data memory. The processing unit can store data in and retrieve data from the data memory. In particular, the processing unit can transmit to, and the data memory can record, a data item table and a request table each comprising a plurality of entries. Each of these tables is built up an entry at a time by the processing unit. Each data item table entry is associated with a data item identity code and records a data item value, and each request table entry records a client identity code in association with a data item identity code. The processing unit can also retrieve the contents of the individual entries from each of these tables by appropriate searches or other access based on a key such as the identity code of a particular data item.

The activity of the processing unit is controlled by software instructions which may be stored in a part of the data memory or in a separate instruction memory which may be a so-called read only memory (ROM). The individual means to be described in the following materials will preferably be a part of the processing unit and thus implemented in software, since software means create the necessary functions more efficiently. However, the means may also be implemented in hardware only or be a combination of both hardware and software. Where the invention is implemented as software controlling the processing unit operation, the client data links and the source data links may comprise a part of the internal data transfer paths of the processing unit and also a part of its internal memory elements.

The invention includes a request table means connected to the client data link and receiving each client request signal. The request table means records in an entry in the request table for each client request signal, the identity code for the client supplying that client request signal in association with the identity code of the data item in that client request signal. The invention also includes source request means for scanning the request table and for issuing source request signals encoding the data item identity codes recorded in the request table.

Further, there is a data item value means connected to the source data link and receiving the source reply signals. The data item value means records in an entry in the data item table in association with the data item identity code encoded in each source reply signal, the data item value encoded in that source reply signal. There is also a data item reply means connected to each client data link for scanning the request table, and for issuing a plurality of client reply signals on the client data link. Each of these client reply signals encodes a data item value recorded in the data item table and is directed to a client whose identity code is in the request table.

In a preferred embodiment, this communication system further includes a clock providing a clock signal encoding a time value comprising the time of day and the identity of the day. The typical personal computer includes an internal clock which serves this function. In this embodiment, the data item value means further comprises time stamp means receiving the clock signal for recording in the data item table in association with the data item whose identity code is encoded in a source reply signal, the time value encoded in the clock signal at the time the source reply signal was received. The data item reply means includes age value means for calculating an age value equal to the difference of the time value encoded in the clock signal and the time value recorded in the data item table in association with a data item whose identity code is recorded in the request table. The age value means also issues a client reply signal encoding the data item value recorded in the data item table in association with that data item responsive to the time value encoded in a valid item signal exceeding the age value calculated for that data item. The data item reply means also includes valid item means for issuing a valid item signal encoding a valid item time value.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating the major elements of the invention as embodied by a typical small computer.

FIG. 2 is a flowchart of object code for loading in such a computer to cause it to comprise a part of an interrupt processing element.

FIG. 3 is a flowchart of object code for loading in such a computer to cause it to comprise a means for entering into the data item table, a data item request supplied by a client.

FIGS. 4A-4C in combination form a flowchart of object code for loading in such a computer to cause it to comprise a means for supplying the value of a requested data item to the requesting client.

FIG. 5 is a flowchart of object code for loading in such a computer to cause it to comprise means for processing an interrupt announcing a data value-containing reply from a data source.

FIG. 6 is a flowchart of object code for loading in such a computer to cause it to comprise means for requesting the value of a data item from a data source.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 illustrates the broad outline of the invention as it might be embodied in a small computer 10 such as those based on the microcontrollers commonly used in the personal desktop and laptop computers now widely available. The invention is implemented by means of software instructions which form a part of the preferred embodiment of the invention. The various means shown in this block diagram are momentarily created by execution of these instructions. That is, the computer 10 momentarily becomes each of these means as the appropriate instructions are executed. While computer 10 executes instructions which configure computer 10 as one of these means, computer 10 actually becomes these means, and then becomes some other type of element, perhaps not even part of this invention.

Computer 10 is shown as conventionally comprising three main parts, a processing unit 12, a data memory 14, and an input/output (I/O) unit 17. Three clients 21-23 are shown as connected for two way communication with processing unit 12 on a client data link having an output (with respect to processing unit 12) path 37 and an input path 36. Each client 21-23 may have its own data link or the clients may share a single data link in some way. The two sections of the input and output paths 36 and 37 shown passing through the I/O unit 17 are connected to external (to the computer 10) clients 22 and 23. Showing the input and output paths 36 and 37 as passing through the I/O unit 17 symbolizes that clients 22 and 23 are external to computer 10. Client 21 is internal to computer 10, so the input and output paths 36 and 37 are shown as directly connected with client 21. As an internal client, client 21 is a software program which operates in a multitasking mode, sharing time with other clients not illustrated in FIG. 1 as well as with the individual means shown within processing unit 12 as forming the invention itself. Clients 21-23 provide on the input paths 36 of their data links, messages encoded in client request signals which specify the sources which are to provide data identified in the client request messages as well as specifying other information related to the way in which each client request message should be processed. Each client request message includes a number of parameters which specify the data item whose value is desired and the conditions under which this value is provided. Clients 21-23 receive client reply signals encoding the values of the data items specified in the client request signals.

A gateway element 53 serves as an interface unit between computer 10 and a number of data sources 56-58 which transmit the data values to gateway element 53 on paths 60-62 respectively. In a sense, gateway element 53 itself forms a data source which performs a multiplexer function in supplying requested data values to processing unit 12. Gateway element 53 is connected to the processing unit through a source data link having an output path 43 and an input path 42. Gateway element 53 will typically have its own microcontroller which will interpret source request messages provided on path 43. These paths 42 and 43 are shown as passing through I/O unit 17 and connected to various of the means within processing unit 12. This is meant to symbolize that gateway 53 is connected to a standard port of the computer 12. Each data source 56-58 has a unique address which identifies it.

Each data source 56-58 may itself also include a microcontroller for controlling operation of a physical process of some kind, or may on the other hand be nothing more than a sensor or group of sensors connected to a gateway element 53 which provides as data item values, the sensed numeric values of varying physical parameters such as temperature, pressure, etc. The term "data item" will be used hereafter to generally refer to the identity of a particular parameter having a varying value to be supplied from the data sources 56-58 to the clients 21-23. A data item need not be a physical parameter, but may also be a digital code value indicating the status for some condition in a physical process, such as presence of flame in a burner, on or off status of a switch, etc. A data item may also be a computed numeric value such as operating efficiency, mean or standard deviation of a sample, etc.

Gateway element 53 supplies a data item value in a source reply message in response to a message encoded in a source request signal carried on path 43 and supplied by a source request means 39 forming a part of processing unit 12. Each source request message includes a data item identity code which includes the address of the data source 56-58 and the address within the data source 56-58 if appropriate, from which the value of the particular data item is available. The data item identity codes supplied to gateway 53 in source request messages were previously a part of client request messages received from the clients 21-23, and it is from these client request messages that the data item identity codes contained in the source request messages originate.

As explained above, it is likely that the time required for gateway element 53 and a data source 56-58 to supply a requested data item value may be several tenths of a s