METHOD AND APPARATUS FOR NETWORK VARIABLE ALIASING

Abstract: A network connection point (214) cannot be added to a first network connection (1) when it already belongs to a second network connection (2). When a particular configuration would otherwise violate this rule, a network connection point (600) on the node is established as an alias to the network connection point. The alias network connection point (600) is added to the first network connection (1). A correlation is established between the alias network connection point (600) and the network variable that is associated with the network connection point (214). The correlation between the alias network connection point (600) and the network variable may be established through tables (700, 702, 704) in the apparatus.

Description: METHOD AND APPARATUS FOR NETWORK VARIABLE ALIASING BACKGROUND OF THE INVENTION 1. FIELD OF INVENTION The present invention relates to the field of network communications. In particular, the present invention describes a method and apparatus for network variable aliasing. 2. DESCRIPTION OF RELATED ART In most computer networks, information is communicated using messages. Nodes on the network prepare messages and transmit the messages to other nodes on the network. Each message contains a number of bytes identifying the message (a "header") and a number of bytes corresponding to the information to be communicated. These types of networks can be used in control systems. For example, a control system network can be used to control the heating, lighting and the ventilation of a large building. Nodes contain the mechanisms through which application programs can share information with other application programs. Application programs store infoπnation in variables. For example, a switch control application may store in a variable SWl a value indicating whether a particular switch is on. The value of the variable SWl may be required Ly a light control application program which controls power to a light. The light control application program may store this value in a variable with a different name than that used by the switch control application. For example, the light control application may store the value in a variable LGT5. The process of communicating the value stored in the variable SWl of the switch control application to the variable LGT5 in the light control application involves (1) communicating the value stored in SWl to a node (NODE1) associated with the switch control prog-am, (2) packaging the value in a message, (3) sending the message to a node (NODE2) associated with the light control program, (4) retrieving the value from the message, and (5) storing the value in the variable LGT5 of the light control program. If the value of a variable in one application is sent over the network to another application, the variable is referred to as an ouφut network variable. If the value of a variable in one application is updated based on information sent over the network from another application, then the variable is referred to as an input network variable. As mentioned above, the variables used to store the same value in different applications may have different names. To make sure that information is routed to and from the correct network variables, a common connection name or "selector" is assigned to each of the related network variables. For example, the connection used to transfer the value of SWl between the NODE1 and NODE2 may be assigned the selector "CN1". Each network variable corresponds to a network connection point on a node. Each node stores information indicating the correspondence between each of its network connection points and the connection to which its network connection points correspond. For example, NODE1 would keep track of the fact that connection CN1 corresponds to a network connection point associated with SWl, and NODE2 would keep track of the fact that connection CN1 corresponds to a network connection point associated with LGT5. Thus, when NODE1 is instructed to send the value of SWl, it sends the value to NODE2 in a message which identifies the connection CN1. When NODE2 receives the message, it determines that the message is associated with connection CN1, and therefore knows to store the value contained in the message in variable LGT5. A node may keep track of the correspondence between its network connection points and their respective connections by maintaining a table in which each entry includes data indicating a network variable and the selector for the network variable. Certain constraints exist on the network variable-to-connection mapping. For example, there may be only one connection associated with each network connection point of a given node. For example, the network connection point associated with SWl may not be associated with any connection other than connection CN1. Similarly, within NODE2, the network connection point associated with LGT5 may not be associated with any connection other than connection CN1. More specifically, an input network variable can only be associated with one connection and no other input network variable of that node can be associated with that same connection. Similarly, an ouput network variable can only be associated with one connection and no other output network variable of that node can be associated with that same connection. As a result of these constraints, when a connection is made between an input variable and an ouφut variable and one of die variables is already in a connection, then d e new connection must use the same selector as the previous connection. For example, if a valve control application associated with a NODE3 has a variable VCl into which the value of SWl must be stored, then the network connection point associated widi the variable VCl must be associated with the selector CN1. If the network connection point associated with VCl was associated with a different selector, then NODE3 would not know to store the value contained in the messages identifying connection CN1 into VCl. Because only one selector can be associated with each network connection point of a node and because the selector is used to determine which input variables to update when a network variable message is received, some network configurations are illegal. For example, consider the situation shown in Figure 1 in which a node 100 has two ouφut network variables SWl and SW2. The value of SWl indicates whether a switch 104 is on, and the value of SW2 indicates whether a switch 106 is on. A node 102 has two input network variables LGTl and LGT2. The value of LGTl determines whether a light 108 is on, and the value of LGT2 determines whether a light 110 is on. A user may want the switch 104 to control the light 108, and die switch 106 to control both light 108 and light 110. To establish a connection between the variables SWl and LGTl, a selector is established for the messages which convey die value of SWl to node 100. The process of establishing a connection between variables is referred to herein as "binding" the variables. For example, SWl may be bound to LGTl by establishing a selector CN1 between the ouφut 112 of node 102 associated with the variable SWl and the input 116 of node 100 associated with variable LGTl . This binding is illustrated by line 120. Node 100 would store a selector indicating that SWl is associated widi CNl, and node 102 would store a selector indicating mat LGTl was associated with CNl. To allow die switch 106 to control both the light 108 and light 110, SW2 must be bound to both LGTl and LGT2. Since LGTl already belongs to a connection, die name of the pre-existing connection (CNl) must be used to bind the ouφut 114 associated witii SW2 to the input 116 associated with LGTl. The resulting binding is illustrated by line 122. Thus, messages sent over connection CNl responsive to switch 106 will be used to update LGTl. For the switch 106 to also control d e light 110, SW2 must also be bound to LGT2. Since SW2 now belongs to the connection CNl , the binding of SW2 to LGT2 is performed by establishing the input 118 associated with LGT2 as pan of connection CNl. This binding is illustrated by line 124. After these bindings are performed, both LGTl and LGT2 will be associated with the same connection CNl. Therefore, both LGTl and LGT2 will be updated by messages identifying CNl . Unfortunately, die configuration shown in Figure 1 does not yield the desired functionality. Specifically, node 100 would not be able to distinguish between messages containing the value SWl and messages containing die value SW2, since both would be identified by the selector CNl. Thus, a message indicating that switch 104 was turned on would affect both lights 108 and 110. In addition, if node 102 is polled over connection CNl, it would not know whether to respond by sending the value contained in SWl, die value contained in SW2, or two messages, one for SWl and one for SW2. If node 102 sent two messages in response to a single polling operation, node 100 would not know how to interpret the two responses. Typically, die second response would be discarded as a duplicate of d e first response. Another problematic configuration is illustrated in Figure 2. In Figure 2, a connection labeled "1" connects an ouφut network connection point 208 of a node 200 with an input network connection point 210 of a node 202 and an ouφut network connection point 212 of a node 204. A connection labeled "2" connects an ouφut network connection point 216 of node 200 with an input network connection point 214 of a node 206. This configuration may occur, for example, if input network connection point 210 is associated with a light and ouφut network connection points 212 and 208 are associated with switches to control the light, while input network connection point 214 is associated with a second light and ouφut network connection point 216 is associated with a switch to control the second light. A problem occurs when an attempt is made to bind ouφut network connection point 212 with input network connection point 214. This binding may be desirable, for example, to control d e lights associated with inputs 210 and 214 with the single switch associated witii ouφut network connection point 212. Input network connection point 214 is already associated with connection "1", while ouφut network connection point 212 is already associated with connection "2". Since neither input network connection point 214 nor ouφut network connection point 212 can be associated with both connections "1" and "2", input network connection point 214 cannot be bound with ouφut network connection point 212. This type of problem is referred to hereafter as a connection conflict. Based on the foregoing, it is desirable to provide a control system with greater flexibility than is currentiy provided. It is also desirable to provide a node with fewer configuration constraints than die nodes currently used in control networks. Fuπher, it is desirable to provide an apparatus and method for handling connection conflicts. SUMMARY OF THE INVENTION An apparatus for communicating information between applications in a network is provided. The apparatus includes a first network connection point, a second network connection point, memory, a transmit mechanism and an update mechanism. The first network connection point is coupled to at least one node on the network by a first connection. The second network connection point is coupled to at least one node on the network by a second connection, where the second connection is different from me first connection. The memory contains an application which defines a network variable, a first indicator indicating that the network variable corresponds to the first network connection point, a second indicator indicating that the first network connection point corresponds to the first connection, a third indicator indicating that the network variable corresponds to the second network connection point, and a fourth indicator indicating mat d e second network connection point corresponds to the second connection. The transmit mechanism transmits a first message over d e first connection and a second message over the second connection when the network variable is updated if die network variable is an ouφut network variable. The update mechanism updates th., ..ctwork variable responsive to messages over the first connection and responsive to messages over the second connection if die network variable is an input networr. variable. According to one aspect of die invention die memory stores a network variable configuration table and an alias configuration table. The second indicator is stored in an entry in the network variable configuration table. The third indicator and the fourth indicator are stored in an entry in the alias configuration table. According to anodier aspect of me invention, the transmit mechanism transmits the first message responsive to information contained in die entry in the network variable configuration table and transmits die second message responsive to information contained in die entry in the alias configuration table. Optionally, die entry in die network variable configuration table may specify a different message priority level tiian d e entry in die alias configuration table. According to anodier embodiment of die present invention, a mediod for resolving connection conflicts in a network is provided. The method includes the step of detecting when a first network connection point of a node cannot be added to a second connection because die first network connection point belongs to a first connection. The first network connection point corresponds to a network variable. According to die mediod, a second network connection point of the node is added to the second connection. A correspondence is established between die second network connection point and the network variable. If die network variable is an input network variable, then d e network variable is updated responsive to messages received on the first network connection point. The network variable is also updated responsive to messages received on the second network connection point. If die network variable is an ouφut network variable, then when the network variable is updated wid a value, the value is transmitted in a first message identifying die first connection though the first network connection point and d e value is transmitted in a second message identifying die second connection through die second network connection point. According to one aspect of die invention, a correspondence between the second network connection point and the network variable is established by providing an alias configuration table. An entry is added to die alias configuration table. The entry corresponds to the second network connection point and contains a selector identifying the second connection, and a network variable index identifying the network variable. According to anodier aspect of the invention, d e network variable is defined in an application associated with die node. A correspondence between the second network connection point and die network variable is established by defining an alias variable in the application, establishing a correspondence between d e alias variable and d e network variable, and establishing a correspondence between die alias variable and die second network connection point. The network variable is updated by updating die alias variable responsive to messages received on the second network connection point, and updating d e network variable responsive to updating d e alias variable. The value is transmitted in a tecond message identifying die second connection through die second network connection point by updating die alias variable widi die value and transmitting the value in die second message responsive to updating d e alias variable. A correspondence between die alias variable and the network variable may be established by defining a network-variable-to-alias map in the application and processing die network- variable-to-alias map to cause the network- variable-to-alias map to indicate a correspondence between die network variable and die alias variable. According to yet another aspect of die invention, if network variable is an input network variable, then when the second network connection point is polled, a response message is transmitted through the second network connection point. When die first network connection point is polled, a response message is transmitted through die first network connection point. In both instances, die value sent in the message is die value of die same network variable. BRIEF DESCRIPTION OF THE DRAWINGS The present invention is illustrated by way of example, and not limitation, in die figures. Like references indicate similar elements. Figure 1 illustrates a node configuration which results in a connection conflict. Figure 2 illustrates a second node configuration which results in a connection conflict Figure 3 illustrates a node widiin which an embodiment of the invention may be implemented. Figure 4 illustrates a node configuration which resolves die conflict illustrated in Figure 2 by adding a node to the system. Figure 5 illustrates a node configuration which resolves the conflict illustrated in Figure 2 tiirough use of additional input and ouφut variables. Figure 6 illustrates a node configuration which resolves die conflict illustrated in Figure 2 using an alias network variable. Figure 7 illustrates primary and alias variable definitions and an alias-to- pπmary mapping table. Figure 8 illustrates a flow chart of steps for updating an alias variable when a primary variable is modified. Figure 9 illustrates a flow chan of steps for updating a primary variable when an alias variable is modified. Figure 10 illustrates a node configuration which resolves the conflict illustrated in Figure 2 using an alias network connection point. Figure 11 illustrates a table for storing indications of the correlation between network connection points and network connection points. Figure 12 illustrates an expanded table entry for a table that stores indications of die correlation between network connection points and network connection points. Figure 13 illustrates a node configuration which resolves the conflict illustrated in Figure 1 using alias network connection points. Figure 14 illustrates a portion of the memory configuration of a node according to an embodiment of the invention. DESCRIPTION OF THE PREFERRED EMBODIMENT OVERVIEW An improved mediod and apparatus for communicating messages within a network is described. In die following description, numerous specific details are set foπh in order to provide a thorough understanding of die present invention. It will be obvious, however, to one skilled in the an that die present invention may be practiced widiout tiiese specific details. In otiier instances, well-known circuits, structures and techniques have not been shown in detail in order not to unnecessarily obscure die present invention. A NODE Figure 3 illustrates a node as may be used by one embodiment of die present invention. Node 301 includes a number of circuits which can be used to control devices and communicate on a network. Node 301 includes processor 300, ROM 310, EEPROM 320, RAM 330, I/O circuit 340, and network interface 350. Processor 300 controls all die otiier circuits on die node. Processor 300 communicates to die otiier nodes by bus 360. Application programs and network software can be executed on processor 300. Such nodes may be implemented using computer chips available from Motorola Corporation, pan numbers MCI 43150 and MC143120. ROM 310 is also coupled to bus 360. ROM 310 is permanent storage for initialization routines and fundamental node control routines, for example. EEPROM 320 is also coupled to bus 360. EEPROM 320 is typically used for storing information which changes rarely. For example EEPROM 320 may store an address table for network addresses. EEPROM 320 is also used to store information, which although changing, should not be lost in die event of a power loss. RAM 330 is coupled to bus 360. RAM 330, typically, is used to store data which can vary often. For example, transaction ids can be stored in RAM 330. I/O circuit 340 is coupled to bus 360. I/O circuit 340 is used to connect to the device, or devices, being controlled by die node 301. For example, I/O circuit 340 can be used to control the on/off switch of a ventilation system. Network interface 350 is coupled to bus 360. Network interface 350 couples to die network medium and is used to communicate widi other nodes on die network. The network medium can be any of a number of mediums, such as, twisted pair, wireless communications, or power lines. Otiier combinations of circuits can be used in node 301. For example, the memory contained in ROM 310, and EEPROM 320 can be combined into one larger EEPROM 320. Processor 300 can be implemented in a number of processors rather man just the one shown in Figure 3. One processor may be responsible for controlling I O circuit 340 and another processor may be responsible for controlling access to the memories. In anodier embodiment of node 301, I/O circuit 340 can be a number of VO circuits, all of which support different types of I/O. Fuπher, node 301 can be implemented on one or more substrates, and in one or more packages. INTERMEDIARY MESSAGE CONVERSION NODES Figure 4 illustrates an example control system network which overcomes the connection conflict problem described above widi reference to Figure 2. Specifically, an additional node 400 including an input network connection point 402 and an ouφut network connection point 404 is introduced between nodes 204 and 206. Instead of coupling ouφut network connection point 212 directly to input network connection point 214, ouφut network connection point 212 is coupled to input network connection point 402 of node 400, and ouφut network connection point 404 of node 400 is coupled to input network connection point 214. Since input network connection point 402 is not already associated with any connection, it may be associated widi connection "1". Likewise, ouφut network connection point 404 is not yet associated widi any connection. Therefore ouφut network connection point 404 may be associated widi connection "2". For die switch associated widi ouφut network connection point 212 to control die light associated with input network connection point 214, node 400 simply forwards messages received at input network connection point 402 to input network connection point 214 tiirough ouφut network connection point 404. The forwarding procedure would simply involve replacing die selector (which indicates connection "1") from messages received at input network connection point 402 with a selector indicating connection "2", and then transmitting the revised messages through ouφut network connection point 404. While die technique of using intermediary message conversion nodes such as node 400 solves die configuration problem described above with reference to Figure 2, this technique has three disadvantages. First, the use of intermediary message conversion nodes increases the cost of die control system network. Second, die use of intermediary message conversion nodes makes the task of setting up a network more complex. A technician may have difficulty determining where and when to use intermediary message conversion nodes. Third, die application associated with node 400 must be specifically programmed to handle the message conversion process. As explained above, each input and each ouφut of a node is associated widi a variable of an application. For example, input network connection point 402 may be associated widi a variable in_l of an application, while ouφut network connection point 404 is associated widi a variable out_l of die application. The application must be programmed to assign the value of die variable in_l to die variable out_l when the variable in_l is updated, and tiien to cause a message containing die value of out_l to be transmitted through ouφut network connection point 404. Ideally, the messaging mechanism used by die nodes in a control system network is transparent to the applications associated widi die nodes. Therefore, placing the burden of handling message conversions on die application developers is undesirable. SAME-NODE MESSAGE CONVERSION Figure 5 illustrates a control system network which employs a variation of die message conversion process described above with reference to Figure 4. Specifically, rather than have a separate intermediary node for converting a message, node 206 itself may be programmed to perform die requisite message conversion. For example, ouφut network connection point 212 may be coupled to an input network connection point of node 206 odier dian input network connection point 214, such as input network connection point 500 associated widi the variable in_l. When a message from ouφut network connection point 212 updates the variable in_l, die application associated widi node 206 may assign die value of in_l to a variable out_l. When die variable out_l is dius updated, a message containing the revised value may be sent through an ouφut network connection point 502 to input network connection point 214. Since input network connection point 500 is not odierwise associated widi any connection, it may be associated with connection "1" widiout conflict Likewise, since ouφut network connection point 502 is not odierwise associated widi any connection, it may be associated with connection "2" widiout any conflict. The connection conflict resolution technique illustrated in Figure 5 overcomes one of die disadvantages of die technique described widi respect to Figure 4. Specifically, no additional nodes are required to resolve connection conflicts. In addition, die process of installing a system may be less complex. However, die technique illustrated in Figure 5 still requires application program intervention to handle connection conflicts. APPLICATION-IMPI-EMENTED ALIAS NETWORK VARIABLES Figure 6 illustrates a control system network which resolves connection conflicts using an alternative technique an those described above. In Figure 6, node 206 includes an input network connection point 600 associated widi a variable in_l. The variable in_l is defined in die application program associated widi node 206 for die sole purpose of resolving connection conflict problems relating to the variable LIGHT. The variable in_l must be defined in the application program as die same type of network variable as variable LIGHT. Rather than couple die input network connection point 214 associated with the variable LIGHT to ouφut network connection point 212, the input network connection point 600 associated with die variable in_l may be coupled to ouφut network connection point 212 over connection "1". When node 206 receives messages over connection "1", the value of in_l is updated. When the application program detects that die value of in_l is updated, die application program copies the value of in_l into die variable LIGHT. Thus, all changes which occur to the variable in_l are applied to the variable LIGHT by die application program. In diis example, the application program is using two network variables in die place of one in order to resolve connection conflict. In die present example, die variable LIGHT is a "primary network variable" and the variable in_l is an "alias network variable" of die variable LIGHT. As widi die techniques mentioned above, this technique has die disadvantage that it requires the application program to resolve the connection conflict This technique also has die disadvantage diat it requires application programmers to anticipate what exact connection conflict problems will occur. That is, the application programmer would have to anticipate tiiat die network variable LIGHT would be involved in a network conflict. To eliminate die need for application programmers to anticipate exact configuration problems, application programmers may define a set of alias network variables, but defer associating die alias network variables widi specific primary network variables until die actual connection conflicts are known. Referring to Figure 7, an application may use multiple network variables. At 700, twenty primary network variables (NV1 to NV20) are defined within an application program. The definition of each network variable specifies die type of die network variable. For die purposes of explanation, it shall be assumed primary network variables NV 1 to NV20 correspond to one of tiiree types, Type 1 , Type 2, and Type 3. When die application is created, the application programmer may not know the specific primary network variables which may be involved in connection conflicts. Therefore, at 702, the application defines some alias network variables of each type. The specific number and types of alias network variables defined in an application will vary from application to application. At 706, ANV1 to ANV5 are defined as Type 1 network variables. At 708, ANV6 to ANVIO are defined as Type 2 network variables. At 709, ANV11 to ANV15 are defined as Type 3 network variables. Initially, die defined alias network variables do not correspond to any particular primary network variables. Once die application is installed in a control system network widi a particular configuration, actual connection conflicts may be detected. In die present example, it will be « »r"^ mat primary network variables NV2 and NV4 are each involved in a connection conflict To resolve die conflict, the application establishes an alias netwoik variabl for each of NV2 and NV4. The alias network variable established for each primary variable must have die same type as die primary variable. Thus, ANV6, which is of Type 2, may be established as the alias for NV2, which is of Type 2. ANV11, which is of Type 3, may be established as die alias of NV4, which is of Type 3. The application may keep track of die alias mappings in an alias-to-primary mapping table 704, in which each entry specifies an alias network variable and one or more primary network variables which correspond to the alias network variable. Alternative mapping structures may be used. For example, each entry of mapping table 704 may alternatively correspond to an alias network variable and contain an index to one primary network variable. With this mapping structure, an alias network variable mat corresponds to more man one primary network variable would require one table entry for each primary network variable to which it corresponds. Once alias-to-primary variable relationships have been established, the application must perform the necessary overhead to ensure that when die value of an alias network variable changes, die value of its associated primary variable is updated, and visa versa. Referring to Figure 8, it illustrates die overhead diat must be performed by die application when die value of a primary network variable is changed. At step 800, the application detects a change in die value of a primary network variable. At step 802, die application determines whether the network variable has an alias network variable. This step may be performed by inspecting alias-to-primary mapping table 704 to determine if an entry corresponds to die primary network variable. If die primary network variable does not have an alias netwoik variable, no fuπher action is required, as shown at step 804. If die primary network variable has an alias network variable, then at step 806 the alias network variable is updated to reflect die new value of die primary network variable. Referring to Figure 9, die application detects a change in the value of an alias network variable at step 900. At step 902, die application determines the identity of die primary network variable which corresponds to die alias network variable. This may be performed by inspecting the enrry corresponding to die alias network variable in alias-to-primary mapping table 704. When the primary network variable corresponding to the alias network variable is determined, die value of the primary network variable is updated to reflect die new value of die alias network variable, at step 904. The use of initially unassigned alias network variables in an application program, as described above, has die advantage mat it eliminates die need for die application programmer to know exact configuration problems beforehand. However, it has die disadvantage that many alias network variables that are declared may never be needed, thus resulting in a waste of resources. Further, this technique has die disadvantage that it still involves die application in network-related problems. Preferably, the specifics of network operation should be transparent to applications. Finally, tiiis technique requires a mechanism for making applications aware of configuration problems. For example, die program which establishes connections to bind network variables (the "binder") may send messages to an application to inform die application of a conflict. The application may men send the binder a message identifying the alias network variable which is to be used to resolve die conflict Alternatively, die alias network variable map may itself be defined as a network variable so that die binder can access die map to establish alias network variables and perform die required overhead. However, if die alias map is a network variable, it is subject to certain constraints that apply to network variables, such as rules relating to die number of elements allowed in an array network variable. These constraints may significantly limit the flexibility of this solution. NETWORK CONNECTION POINT ALIASING Referring to Figure 10, it illustrates a control system network which implements an alternative aliasing technique. According to this technique, node 206 is replaced with a node 1006 which includes an input network connection point 1004 associated widi die input network variable LIGHT. In addition, node 1006 includes a network connection point bank 1002 of non-directional network connection points 1008, 1010 and 1012. Each network connection point in network connection point bank 1002 may be used either as an input network connection point or an ouφut network connection point. When the binder determines that ouφut network connection point 212 cannot be directly connected to the input network connection point 1004 associated widi die variable LIGHT, die binder connects ouφut network connection point 212 with network connection point 1008 in the network connection point bank 1002. Network connection point 1008 is dien be associated with connection "1". Because network connection point 1008 was connected to ouφut network connection point 212 in place of input network connection point 1004, node 1006 treats all messages received on network connection point 1008 as if they had been received on input network connection point 1004. For example, node 1006 updates die value of die variable LIGHT responsive to messages received at network connection point 1008 as well as messages received at input network connection point 1004. Thus, network connection point 1008 acts as an alias of input network connection point 1004. Node 1006 stores an indication of die relationship between network connection point 1008 and input network connection point 1004. Such an indication may be stored, for example, in Table 1100 shown in Figure 11. Each entry of Table 1100 corresponds to a network connection point in network connection point bank 1002. The entry for each network connection point indicates die network connection point for which die network connection point is acting as an alias, die direction of die communication on die network connection point, and a selector. For example, entry 1102 corresponds to network connection point 1008. The first element 1104 in entry 1102 is an index indicating tiiat network connection point 1008 has been established as an alias for input network connection point 1004. The second element 1106 indicates mat network connection point 1008 will be acting as a network connection point This entry may consist of a single bit. The third element 1108 in the entry 1102 is die selector for network connection point 1008, which indicates that network connection point 1008 is associated widi connection "1". When node 1006 receives a message on any network connection point in network connection point bank 1002, node 1006 accesses table 1100 to determine die network connection point associated with die network connection point which received die message. Node 1006 tiien processes die message as " the message had been received on die associated network connection point. While die above example illustrates an alias of an input network connection point, a network connection point in network connection point bank 1002 may also be used as an alias to an ouφut network connection point. Therefore, each time node 1006 sends a message via an ouφut network connection point, node 1006 inspects Table 1100 to determine if any network connection point has been established as an alias to die ouφut network connection point. If a network connection point has been established as an alias to the ouφut network connection point, men a duplicate of the message is sent via the network connection point which is serving as the alias. The information contained within the duplicate message will be the same as die original message, but die header information will reflect attributes associated widi die alias network connection point. For example, the message will be identified by die selector established for the alias network connection point. Typically, a node will inform its associated application about whether a message was successfully communicated. The node may determine that a message was successfully communicated, for example, be receiving an acknowledgment to die message. Using die alias technique described herein, die update of one variable may result in die transmission of more than one message. Under diese circumstances, it is preferred that die node indicate a successful communication when all relevant messages are successfully communicated, and indicate an unsuccessful communication if any one of the relevant messages is not successfully communicated. In some circumstances, in may be desirable for the alias network connection point to automatically inherit all of die properties of die network connection point widi which it is associated. For example, die messages sent via an alias network connection point will have die same priority level as the messages sent via die associated network connection point However, by expanding Table 1100, additional functionality may be gained. Referring to Figure 12, an entry 1200 may include, in addition to die information shown in entry 1102, message type and message priority information. The message type information may indicate whether messages sent from die associated network connection point will be sent to individual nodes or broadcast to multiple nodes. The message priority information may indicate a priority level which determines how messages sent tiirough die network connection point are handled. For example, die message priority information may indicate messages are to have expedited routing or normal routing. Significandy, diis information for an alias network connection point may differ from the same information for a corresponding network connection point. For example, a network connection point Y may be configured to send high priority messages to a device Z. It may also be desirable for die messages to be sent to devices A, B and C. However, it may not be necessary to expedite the delivery of die messages to devices A, B and C. Therefore, a network connection point X may be established as an alias of network connection point Y. A connection separate from die connection between network connection point Y and device Z may be established to connect network connection point X with input on devices A, B and C. The table entry associated widi network connection point X may be set to indicate normal priority. As a result, when a high priority message is sent to device Z though network connection point Y, normal priority messages containing the same information will be sent to devices A, B and C. As mentioned above, a node treats messages received on an alias network connection point as if the message arrived on the network connection point to which die network connection point is an alias. However, when an ouφut network connection point is polled, only diat ouφut generates a message in response to the poll. For example, assume that an alias network connection point X is an alias to a network connection point Y, and diar netwoik connection point Y is associated with ouφut network variable out_I. If alias network connection point X is polled, a message containing the value of out_l is sent via alias network connection point X, but no message is sent via network connection point Y. Similarly, if network connection point Y is polled, a message containing the value of out_l is sent via network connection point Y, but no message is sent via alias network connection point X. This is because only those devices which belong to die connection in which the polling occurred will be expecting a response message. On die other hand, if an application requests that the network be polled to update the value of an input network variable, a polling message is sent via die netwoik connection point associated with the input network variable and via all alias network connection points associated with the network connection point. For example, assume that an alias network connection point X is an alias netwoik connection point to a netwoik connection point Y, and diat network connection point Y is associated widi input network variable in_l. If an application requests diat die network be polled to update die value of in_l, then a polling message is sent via network connection point Y and a second polling message is sent via network connection point X. Referring to Figure 13, it illustrates how network connection point aliasing may be employed to resolve die connection conflict explained above widi reference to Figure 1. A node 1300 is associated widi an application which monitors two switches 1304 and 1306. The setting of switch 1304 is stored in a network variable SWl, and the setting of switch 1306 is stored in a network variable SW2. Node 1300 has a network connection point 1312 associated widi SWl and a network connection point 1314 associated widi SW2. A node 1302 is associated widi an application which controls power to two lights 1308 and 1310. Light 1308 is activated and deactivated responsive to die value of input network variable LGTl. Light 1310 is activated and deactivated responsive to die value of input network variable LGT2. A user desires to control light 1310 with switch 1306, and to control bodi lights 1308 and 1310 with switch 1304. The binder establishes a connection "1 " between ouφut network connection point 1314 and input network connection point 1320. Thus, when switch 1306 is activated and the value of SW2 is updated, die value of SW2 will be sent from ouφut network connection point 1314 to input network connection point 1320 to αpdate the variable LGT2. The binder dien establishes a connection "2" between ouφut network connection point 1312 and input network connection point 1316. Thus, when switch 1304 is activated and the value of SWl is updated, the value of SWl will be sent from omput network connection point 1312 to input network connection point 1316 to update the variable LGT2. Note that the connection between ouφut network connection point 1312 and input network connection point 1316 must have a different name than the connection between ouφut network connection point 1314 and input network connection point 1320. As explained above, ouφut network connection point 1312 cannot simply be connected to input network connection point 1320, since ouφut network connection point 1312 already belongs to connection "2" and input network connection point 1320 already belongs to connection "1". However, a network connection point 1318 on node 1302 may be established as an alias to input network connection point 1320, and a network connection point 1322 may be established as an alias to output network connection point 1312. Network connection point 1322 may then be connected to ouφut network connection point 1312. The binder may then bind network connection point 1318 to network connection point 1322 over a connection "3". When a message is sent via ouφut netwoik connection point 1312 to control light 1308, a similar message will be sent to network connection point 1318 via network connection point 1322. When network connection point 1318 receives the update message, the value of LGT2 will be updated as if the message had arrived through input network connection point 1320. Thus, operation of switch 1304 will update both LGTl and LGT2. Consequendy, die control system will function as desired. Figure 14 illustrates a portion of node memory. This memory organization can be implemented on, for example, node 401. The application memory 1410 represents the block of memory used to store the program, or application, at a node executes. Application memory 1410 includes an application variable table 1411. The application variable table 1411 contains references to die variables that can be communicated to nodes in die network. An application initiates a transmission of variable information by changing information pertaining to a variable in die application variable table 1411. Application variable table 1411 includes a number of entries. Each entry corresponds to a variable. Each entry includes variable information 1412, relevant to a particular variable, and a variable configuration table index 1419. For die purposes of explanation, nodes associated with a single application have been described. However, multiple applications may be associated widi a single node. Under tiiese circumstances, application memory 1410 may include multiple programs and multiple application variable tables. The variable configuration table index 1419 is used to index into die variable configuration table 1420. The variable configuration table is used to hold information about how a variable is to be communicated in die network. The variable configuration table 1420 includes a variable configuration table entry 1422 for each variable in the application variable table 1411. Each variable configuration table entry 1422 includes: selector bits 1423, and information about direction 1424, service 1425, audientication 1426, turnaround 1430 and priority 1432. Each entry also includes an address table index 1428. The selector bits 1423 represent a selector to be used widi a particular variable. As explained above, a selector indicates the connection widi which die variable is associated. The selector bits 1423 are included in die header of a message containing die value of die variable so that nodes which receive die message may determine how to handle die message. The direction 1424 indicates whedier a variable is an input variable or an ouφut variable. The service 1425 indicates the type of service to be used when transmitting a variable. Possible types of service arc: unacknowledged, unacknowledged repeated, an acknowledged. Audientication 1426 indicates whether a message must be authenticated using an audientication process. Turnaround 1430 indicates whedier die destination of messages associated widi a given variable is the same node that sends the messages. Priority 1432 indicates how messages associated with a variable are to be handled. For example, high priority messages may be handled in a manner to ensure expedited delivery. The address table index 1428 is an index for an address table 1434. Each address table entry 1433 includes die network address for a node that a sender node can communicate widi. Each entry of variable configuration table 1420 establishes a correspondence between a primary network variable and a network connection point of die node on which application memory 1410 is provided. As mentioned above, within a node, no two network connection points can transmit messages over the same connection. Similarly, no two network connection points receive messages over the same connection. Therefore, no two entries in variable configuration table 1420 have die same direction and selector bits. Application memory 1410 also includes an alias configuration table 1436. Alias configuration table 1436 is similar to variable configuration table 1420, in that each entry 1438 of alias configuration table includes selector bits 1440, an address table index 1448 and information relating to direction 1442, service 1444, authentication 1446, turnaround 1450, and priority 1452. Each entry of alias configuration table 1436 establishes a correspondence between a network variable and a network connection point Entry 1438 includes a network variable index 1454 diat indicates die application variable widi which entry 1438 corresponds. Typically, an entry in alias configuration table 1436 will correspond to die same variable as an entry in variable configuration table 1420. For example, both entry 1422 and entry 1438 may correspond to a single "Variable X". However, the alias configuration table entry will designate a different selector tiian die variable configuration table entry. The entry 1422 in variable configuration table 1420 contains information about how messages relating to Variable X will be sent over a network connection point, while the entry 1438 in alias configuration table 1436 contains information about how messages relating to Variable X will be sent over a network connection point. Since messages about Variable X are sent over both die network connection point and die network connection point, the network connection point acts as an alias of die network connection point For example, when die application changes die value of Variable X, the variable configuration entry 1422 corresponding to Variable X is determined by inspecting me variable configuration table index 1419 corresponding to Variable X. A message containing die updated value of Variable X is then transmitted via a network connection point responsive to the values contained in variable configuration entry 1422. Alias configuration table 1436 is then searched to determine if any entries correspond to Variable X. When it is determined diat entry 1438 corresponds to Variable X, then a message containing die updated value of Variable X is transmitted via a network connection point responsive to the information contained in alias configuration table entry 1438. The technique of using alias network connection points to resolve connection conflict overcomes many of the disadvantages associated with other connection conflict resolution techniques. For example, applications programmers do not need to anticipate specific conflicts. The connection conflict resolution is relatively transparent to applications. Further, a netwoik connection point may serve as an alias network connection point for a network variable without regard to the type of die network variable. The network connection point aliasing technique described herein also provides advantages during node testing. In prior an systems, an input variable could only be updated based on at most one ouφut variable of any given node. Consequently, the number of updates to an input variable in response to a poll operation was restricted to die number of nodes in die connection. This is because the input variable could be associated with only one connection, and no two ouφut variables in a node could be associated widi die same connection. Aliasing removes this restriction. For example, a node X may have an ouφut variable out_l bound to an input network variable over a connection "1 ", and a second ouφut variable out_2 bound to die same input network variable over a second connection "2". The input variable would be associated widi die first connection through a primary network connection point and to the second connection via an alias network connection point. The node associated widi die input variable may poll both connections "1" and "2". In response to a poll, the node associated widi the input variable would receive two update messages from node X. Thus, the number of update messages is a function of the number of network connection points rather than a function of the number of nodes. This ensures diat a node may be tested in die lab without regard to die connection topology in which the node may ultimately be installed. While specific embodiments of die present invention have been described, various modifications and substitutions will become apparent to one skilled in the an by this disclosure. For example, the information contained in the variable configuration table 1420 and the information contained in die alias configuration table 1436 may be combined in a single table. Such a combined table would specify more man one selector for network variables that are involved in connection conflicts. Consequently, more than one network connection point would be associated with such network variables. Such modifications and substitutions are within die scope of die present invention, and are intended to be covered by the following claims.

Claims: C AMS What is claimed is: 1. A method for resolving connection conflicts in a netwoik, the method comprising the steps of: a) detecting when a first network connection point of a node cannot be added to a second connection because said first network connection point belongs to a first connection, said first network connection point corresponding to a network variable; b) adding a second network connection point of the node to die second connection; c) establishing a correspondence between said second network connection point and said network variable; d) if said network variable is an input network variable, then i) updating said network variable responsive to messages received on said first network connection point, and ϋ) updating said network variable responsive to messages received on said second network connection point; and e) if said network variable is an ouφut network variable, men when said netwoik variable is updated widi a value, i) transmitting die value in a first message identifying said first connection though said first network connection point; and ii) transmitting the value in a second message identifying said second connection dirough said second network connection point. 2. The method of Claim 1 wherein die step of establishing a correspondence between said second network connection point and said network variable includes the steps of: providing an alias configuration table; adding an enrxy to said alias configuration table, said entry corresponding to said second network connection point and containing a selector identifying said second connection, and a network vanable index identifying said netwoik variable. 3. The method of Claim 1 wherein said network variable is defined in an application associated widi said node, wherein the step of establishing a correspondence between said second network connection point and said network variable includes the steps of: defining an alias variable in said application; establishing a correspondence between said alias variable and said network variable; establishing a correspondence between said alias variable and said second netwoik connection point; wherein said step of updating said network variable responsive to messages received on said second network connection point includes updating said alias variable responsive to messages received on said second network connection point includes, and updating said network variable responsive to updating said alias variable; and wherein said step of transmitting me value in a second message identifying said second connection through said second network connection point includes updating die alias variable with die value; and transmitting die value in the second message responsive to updating die alias variable. 4. The method of Claim 3 wherein the step of establishing a correspondence between said alias variable and said network variable includes: defining a netwαrk-variable-to-alias map in said application; and processing said network-variable-to-alias map to cause said network- variable-to-alias map to indicate a correspondence between said network variable and said alias variable. 5. The method of Claim 1 wherein said network variable is an input network variable, the method further including die steps of: when said second network connection point is polled, transmitting a response message dirough said second network connection point but not through said first network connection point; and when said first network connection po t is poUed, transmitting said response message through said first netwoik connection point but not dirough said second network connection poinL 6. An apparatus for communicating information between applications in a network, the apparatus comprising: an input/ouφut coupled to at least one node on the network by a first connection; a network connection point coupled to at least one node on die network by a second connection, wherein the second connection is different from said first connection; memory containing an application which defines a network variable; a first indicator indicating diat die network variable corresponds to die input/ouφut; a second indicator indicating diat die input ouφut corresponds to the first connection; a tiiird indicator indicating that the network variable corresponds to die network connection point; and a fourth indicator indicating diat the netwoik connection point corresponds to die second connection; connection and a second message over said second connection when said network variable is updated if said network variable is an ouφut network variable; and an update mechanism for updating said netwoik variable responsive to messages over said first connection and responsive to messages over said second connection if said network variable is an input netwoik a transmit mechanism for transmitting a first message over said first variable. 7. The apparatus of Claim 6 wherein said memory stores a network variable configuration table and an alias configuration table, wherein said second indicator is stored in an entry in the network variable configuration table, wherein said third indicator and said fourth indicator are stored in an entry in said alias configuration table. 8. The apparatus of Qaim 7 wherein the transmit mechanism transmits die first message responsive to information contained in die entry in die network variable configuration table and transmits the second message responsive to information contained in die entry in the alias configuration table. 9. The apparanis of Qaim 7 wherein die entry in die network variable configuration table specifies a different message priority level than die entry in die alias configuration table. f 10. A method for updating an input network variable associated widi a node based on a first output network variable and a second ouφut network variable, wherein the first ouput network variable and the second ouφut netwoik variable are both associated widi a second node, comprising the steps of: binding die input network variable to the first ouφut network variable over a first connection through a primary network connection point; binding die input netwoik variable to the second ouφut network variable over a second connection dirough an alias network connection point; causing the first node to transmit a polling message over the first connection through the primary network connection point and over die second connection dirough die alias network connection point; causing the second node to generate a first update message containing the value of die first ouφut network variable over the first connection responsive to die polling message on die first connection; and causing die second node to generate a second update message containing the value of the second ouφut network variable over die second connection responsive to d e polling message on die second connection; and updating tite input network variable responsive to the first update message and die second update message.

Inventors: RILEY GLEN M, RILEY, GLEN, M.
Applicants: ECHELON CORP, ECHELON CORPORATION
Application year: 1995
Main classification: H04L12
IPC codes: H04L29