Many measurement and control applications use a central controller in conjunction with a number of remotely located transducers: sensors or actuators. These transducers are connected to the central controller via a point to point link. Recently, a number of `field-busses` have emerged that allow several of these devices to share a packet-based bus for communication to the central controller but also permit distributed operation with peer-to-peer communication. Busses require addressing schemes to establish the communication patterns over this shared media. These addressing schemes are often implemented by assigning identifiers called `tags` to each addressable entity in each node or computing entity in the system. The communication patterns among such entities are established by associating or "binding" the various tags defining the elements in each pattern.
One example of tag-based binding, disclosed by Skeen, et al., in U.S. Pat. No. 5,187,787 issued Jul. 27 1989, is a publisher-subscriber based system using "subject-based" addressing. Subjects are defined as a tags having a parsable hierarchical structure. To illustrate, the tag `SFB.P39.temp` represents the `temperature at Pier 39 on San Francisco Bay`. If this temperature is displayed on an annunciator with a tag of `display.sub.-- 7.row 2`, then these two tags would be used "bound" according to a defined procedure. These tag fields are in string format.
Management of the tag name-space increases with the complexity of the communication patterns. As a result, the tags must be overloaded to express several kinds of information in a single structure. The binding of the overloaded tags restricts computability. The binding "temperature at Pier 39 on San Francisco Bay" combines three pieces of data: the temperature is being reported and the measurement was made at Pier 39 which is located on San Francisco Bay. If the system involves a large variety of measurements of the San Francisco Bay environment such as salinity, pH, etc. and numerous locations in addition to Pier 39, then the resulting tag name-space would be quite large.
Another problem is the units and storage type of the values referenced by the tags are implicitly bound. At one site, the temperature may be reported as an integer in degrees Fahrenheit while for another location, the value may be a real number in degrees Centigrade. When the bindings are established, care must be taken to insure that only like units and storage types are bound or that suitable conversion operations are provided. A more explicit definition of the representations is needed.
The overloaded tags are ill-suited for systems where computations must be made on the data from several sources. Often spatial data in a non-computable form is overloaded into the tag along with what is being measured. If the system needs to compute the temperature gradient along the waterfront in the vicinity of Pier 39, it is difficult to establish the necessary bindings and to extract the necessary spatial data.
Tag-based systems may impede the development of application code and bindings for managing data according to dynamically changing requirements. Introducing new spatial locations involves establishing names which do not conflict with existing tags and then revisiting the binding process. The problem resides both in the static and inappropriate representation of spatial data and in the static nature of the bindings. Similarly, it is difficult to dynamically change the bindings to receive different data, e.g. to receive temperature measurements from all locations within a changing range of locations.
The tag-based architecture does not lend itself to the problem of creating truly distributed computational and communication entities. Collective entities behave as a single program executing in a single component, a normal or compact entity or application, but are in fact a collection of program fragments which execute on several components and collectively appear as one. It is usually not possible to state which of the fragments in the collective will be involved for any specific binding at a specific time. These entities are a poor match to these tag-based systems.
What is needed is a flexible, yet compact, nomenclature and method to allow bindings to be established in distributed systems of normal and collective entities. It is further desirable that such a nomenclature and method have a dynamic nature and allow for a rich and computable expression of the semantics of the application.