Abstract:
A network synchronization method designed to provide synchronization of multiple networks and devices. This invention provides a specific method for determining which nodes are responsible for network synchronization as nodes fail or cannot see each other due to conditions on the network. This allows for fault tolerance in a network in which conditions change dynamically. In addition, this invention uses synchronization codes and network numbers to isolate separate networks using the same physical medium, thus allowing sharing of network resources.

Description:
BACKGROUND OF INVENTION  
       [0001]     1. Field of the Invention  
         [0002]     This invention relates to electronic communication systems. More specifically, this invention relates to synchronizing and isolating networks within an electronic communications system.  
         [0003]     2. Description of Related Art  
         [0004]     A variety of schemes have been used in communication systems to synchronize devices on a network. Typically, such methods are used to provide synchronization and redundancy if a node providing synchronization fails. These systems typically are used on a single conditioned network and are not designed to meet the requirements of power line or wireless communication networks. Although these references may not constitute prior art, for a general background material, the reader is directed to the following United States Patents, each of which is hereby incorporated by reference in its entirety for the material contained therein: U.S. Pat. Nos.: 6,473, 797, 6,128,318, 6,442,145, 6,373,899, 5,068,877, 6,477,568, 6,034,963.  
       SUMMARY OF INVENTION  
       [0005]     It is desirable to provide a method that synchronizes and determines which node or nodes are responsible for network synchronization that is adapted to the needs of a communication network.  
         [0006]     Therefore it is a general object of an embodiment of this invention to provide a method for synchronizing one or more networks.  
         [0007]     It is a further object of an embodiment of this invention to provide a method for synchronizing multiple networks using different synchronization codes.  
         [0008]     It is a further object of an embodiment of this invention to provide a method for creating networks within networks using synchronization codes and network numbers.  
         [0009]     It is a further object of an embodiment of this invention to provide a method for synchronizing multiple networks on a power line network, a wireless network, a light frequency network and/or a wired network.  
         [0010]     It is a further object of an embodiment of this invention to provide a method for determining which node provides synchronization on a network.  
         [0011]     It is a further object of an embodiment of this invention to provide a method for determining if another node is providing the same synchronization code for the network by looking at non-synchronization time slots for the synchronization codes so an arbitration process can begin so only one node provides synchronization.  
         [0012]     It is a further object of an embodiment of this invention to provide a method for determining which node or nodes provides synchronization for multiple networks.  
         [0013]     It is a further object of an embodiment of this invention to provide a method for determining which node or nodes provide synchronization when two or nodes providing synchronization can communicate with one another.  
         [0014]     It is a further object of an embodiment of this invention to provide a method for determining which node or nodes provide synchronization on a power line network.  
         [0015]     It is a further object of an embodiment of this invention to provide a method for determining which node or nodes provide synchronization on a wireless network.  
         [0016]     It is a further object of an embodiment of this invention to provide a method for determining which node or nodes provide synchronization based on an external source such as a user or application.  
         [0017]     These and other objects of this invention will be readily apparent to those of ordinary skill in the art upon review of the following drawings, detailed description, and claims. In the present preferred embodiment of this invention, the network synchronization method makes use of a novel synchronization scheme which allows multiple networks on the same physical medium. In addition there is a novel process for determining which nodes are responsible for providing synchronization on the network. 
     
    
     BRIEF DESCRIPTION OF DRAWINGS  
       [0018]     In order to show the manner that the above recited and other advantages and objects of the invention are obtained, a more particular description of the present preferred embodiments of this invention, which are illustrated in the appended drawings, is described as follows. The reader should understand that the drawings depict only present preferred and best mode embodiments of the invention, and are not to be considered as limiting in scope. A brief description of the drawings is as follows:  
         [0019]      FIG. 1   a  is a diagram of the present preferred sync network.  
         [0020]      FIG. 1   b  is a diagram of the time division multiplexed data transfer mechanism of the present preferred embodiment of this invention used to transfer data on a sync network.  
         [0021]      FIG. 1   c  is a flow diagram of the preferred process to determine which Sync Master Control Node to synchronize to.  
         [0022]      FIG. 2  is a flow diagram of the preferred process a node that goes through to determine if it is the Sync Master Control Node.  
         [0023]      FIG. 3  is a flow diagram of the preferred process for changing the synchronization code used to isolate networks.  
         [0024]      FIG. 4  is a flow diagram of the preferred process for determining which node is the Sync Master Control Node when there are two nodes providing synchronization. 
     
    
       [0025]     Reference will now be made in detail to the present preferred embodiment of the invention, examples of which are illustrated in the accompanying drawings.  
       DETAILED DESCRIPTION  
       [0026]      FIG. 1   a  is a diagram of the present preferred sync network. In this document when referring to a network node in the singular, while referencing the single node with multiple nodes indicates that all referenced nodes can perform the same function as the single network node. A physical network  142  comprises a plurality of nodes  140 ,  141 ,  143 ,  144 . Sync networks  145  and  146  are created when a sync master control node  140 ,  143  sends a synchronization code in a time slot  120 - 136  which is detected by a network node  140 ,  141 ,  143 ,  144  which synchronizes to the sync master control node  140 ,  143  forming a sync network  145 ,  146 .  
         [0027]      FIG. 1   b  is a diagram of the time division multiplexed data transfer mechanism of the present preferred embodiment of this invention used to transfer data on a sync network  145 ,  146 . Transfer of data across a physical network  142  occurs in two forms: packets which are broken up into segments and non-packet. Examples of data include but are not limited to voice, audio, control, video, and computer information and the like. A frame represents the bandwidth of the sync network  145 ,  146  over time and consists of a plurality of time slots  120 - 136 . Time slots  120 - 136  in the present preferred embodiment are equal size pieces of Time Division Multiplexed (TDM) bandwidth which is used to transfer data over the AC power line. Each time slot is presently 10 bits wide. The actual data sent is presently 32 bits with 22 bits used for forward error correction which results in 10 bits for each time slot. This is a 5/16 rate code. In the present preferred embodiment, time slot  136  is used for frame synchronization across a sync network  145 ,  146  by sending synchronization codes in time slot  136 . Alternatively, any time slot or group of time slots can be used to send synchronization codes. Time slots  120 - 135  are used for data transfer. Data is sent using active channels, which are pieces of bandwidth. An active channel is a variable or fixed size pipe made up of a single time slot or a plurality of time slots used to form a packet or non-packet pipe. For example, an active channel  137  can include, but is not limited to, a group of contiguous slots  120 - 124 . On the other hand, an active channel  138  can consist of noncontiguous slots  126 ,  128 ,  133 . In addition, an active channel can comprise a single time slot  139  or any number of time slots up to the maximum number of time slots in the frame. An active channel is created by a bandwidth master control node which is a network node responsible for creating active channels  137 ,  138 , and  139  on a network  142 . Any network node can assume the role of bandwidth master control node.  
         [0028]     When a network is first created, there may be multiple network nodes  140 ,  143  on the physical network  142  that can provide synchronization for the sync network  145 ,  146 . When a network node  140 ,  141 ,  143 ,  144  powers up for the first time, the network node  140 ,  141 ,  143 ,  144  must find the sync master control node  140 ,  143 . The network node  140 ,  141 ,  143 ,  144  is added to a sync network  145 ,  146  and gets a network number or identifier which identifies a logical network within the sync network  145 ,  146 . In addition, there is a bandwidth master control node responsible for bandwidth allocation on the sync network  145 ,  146 . The sync master control node and the bandwidth master control node may be the same node or can be different nodes on the sync network  145 ,  146 . Once the sync network  145 ,  146  is isolated using the synchronization code, the bandwidth master control node allocates bandwidth for use in the sync network  145 ,  146  by allocating channels  137 - 139 .  FIG. 1   c  is a flow diagram of the preferred process to determine which sync master control node  140 ,  143  to synchronize to. The process begins  100 . The network node  140 ,  141 ,  143 ,  144  that is coming up looks for a synchronization code. A synchronization code is a periodic bit pattern that the network node  140 ,  141 ,  143 ,  144  locks onto which uses one or more time slots  120 - 136 . In the present preferred embodiment, the synchronization code is a unique pattern that is ten bits long and is sent in a single time slot  136 . Additionally, two time slots  120 ,  136  can use two sync codes to synchronize different sync networks  145 ,  146 . This can be done by one sync master control node  140  synchronizing to a second sync master control node  143  in one time slot  136  and providing synchronization in another time slot  120 . The different synchronization codes allow sync networks  145 ,  146  to be isolated on the same physical network  142  by tracking different synchronization codes. Time slots  120 - 135  are not used for synchronization and are typically used to transfer data. Time slots  120 - 135  are referred to as non-synchronization time slots or data time slots. The network node  140 ,  141 ,  143 ,  144  scans  101  in time to determine where the synchronization code is. There are one or more synchronization codes that the network node  140 ,  141 ,  143 ,  144  looks for. If at test  102  the network node  140 ,  141 ,  143 ,  144  finds one of these synchronization codes, the network node  140 ,  141 ,  143 ,  144  saves  103  the synchronization code for use later in a table. The network node  140 ,  141 ,  143 ,  144  tries to communicate  104  with a sync master control node providing synchronization  140 ,  143 . If the network node  140 ,  141 ,  143 ,  144  can send and receive one or more packets  104  from the sync master control node  140 ,  143 , the network node  140 ,  141 ,  143 ,  144  saves  105  the node address of the sync master control node  140 ,  143  that the network node  140 ,  141 ,  143 ,  144  communicated with. The reason it is preferred that the network node  140 ,  141 ,  143 ,  144  talk to the syncing sync master control node is: if the communication between the network nodes  140 ,  141 ,  143 ,  144  and the sync master control node  140 ,  143  is marginal, the network node  140 ,  141 ,  143 ,  144  may only be able to see the synchronization code and may be unable to send and receive valid packets. A test  106  is made to determine if there are more sync codes to check. The network node  140 ,  141 ,  143 ,  144  gets a new synchronization code to look for  101  if all the synchronization codes have not been checked  106 . After each synchronization code has been checked, a test is made  107  to determine if the network node  140 ,  141 ,  143 ,  144  can talk to any sync master control node  140 ,  143 . If not, the process goes to the sync master arbitration algorithm  108 . Step  108  is the start of  FIG. 2  or step  200 . If at test  107 , it was determined that the network node  140 ,  141 ,  143 ,  144  can talk to and track a sync master control node  140 ,  143 , test  110  is checked to see if the network node  140 ,  141 ,  143 ,  144  has been assigned a logical network number. The logical network number is used to determine which network nodes  140 ,  141 ,  143 ,  144  are on a specific logical network. The same network node  140 ,  141 ,  143 ,  144  can be on different logical networks. If the network node  140 ,  141 ,  143 ,  144  has been assigned a logical network number, the network node  140 ,  141 ,  143 ,  144  sends  111  out a packet to see if any other devices from the networks node&#39;s  140 ,  141 ,  143 ,  144  logical network are active. If the network node  140 ,  141 ,  143 ,  144  finds any other network nodes  140 ,  141 ,  143 ,  144  on the same logical network in test  112 , the network node  140 ,  141 ,  143 ,  144  tracks the sync master control node  140 ,  141  providing synchronization and stores  113  off the synchronization code and logical network number. Otherwise, the process goes to test  117 . If in test  110 , the network node  140 ,  141 ,  143 ,  144  has not been assigned a logical network address, the network node  140 ,  141 ,  143 ,  144  sends out a request  114  to be added to the logical network. If the response is acknowledged in test  115 , the network node  140 ,  141 ,  143 ,  144  tracks the sync master control node  140   143  and saves  116  the synchronization code and logical network number. If the request to be added to a logical network in test  115  is not acknowledged or negatively acknowledged, the process goes to test  117 . Test  117  checks to see if there are any more synchronization codes to check for. If there are more synchronization codes to check, the process starts over in step  109  by getting the next synchronization code. If there are no more synchronization codes to check for in test  117 , the process goes to test  118 . Test  118  checks to see how many times the process has gone through the synchronization process. If the process has been executed to many times, the whole process is started over by searching  101  for a synchronization code. This way the network node  140 ,  141 ,  143 ,  144  keeps searching for a logical network and a sync master control node  140 ,  143 . Otherwise, if test  118  is yes, the process gets  109  the next synchronization code.  
         [0029]      FIG. 2  is a flow diagram of the present preferred process that a network node  140 ,  141 ,  143 ,  144  goes through to determine if the network node  140 ,  141 ,  143 ,  144  is a sync master control node  140 ,  143  which provides synchronization on a sync network  145 ,  146 . The process starts  200 . The network node  140 ,  141 ,  143 ,  144  checks  201  to see if the network node  140 ,  141 ,  143 ,  144  can provide network synchronization (be a sync master control node) in test  201 . If not, the process goes start of the master node arbitration algorithm (step  100  in  FIG. 1   c ). Otherwise, the network node  140 ,  143  which can be a sync master control node  140 ,  143  checks  202  to see if the network node  140 ,  143  has tracked a sync master control node  140 ,  143  previously by checking to see if the network node  140 ,  143  saved a synchronization code. If not, the network node  140 ,  143 , picks  203  a synchronization code not in use. Otherwise, the network node  140 ,  143 , uses  204  the saved synchronization code. At step  205 , the network node  140 ,  143 , generates the synchronization code for a random period of time. This time is greater than the time the network node  140 ,  143  looks for a synchronization code, which allows other network nodes  140 ,  141 ,  143 ,  144  to see the network node&#39;s  140 ,  143  synchronization code. The network node  140 ,  143  listens  206  long enough to detect all four sync codes. If at test  207  a synchronization code was found, the network node  140 ,  143  tries to talk to the sync master control node  140 ,  143  which is providing the synchronization code in test  208 . If the network node  140 ,  143  can talk, the master node arbitration algorithm process is started (step  100  in  FIG. 1 ). Otherwise, test  208  goes to step  209 . If test  207  fails and there was no synchronization code found, the process goes to step  209  was well. In step  209  the look count value is increased. The look count is a value used to determine how many times the network node has looked for a sync master control node. If the count is not greater than a predetermined value, that the process for looking for, the network node  140 ,  143  generates  205  a synchronization code on a time slot  136  for a random period of time. In the present preferred embodiment the look count is three, but this is not a requirement. If the look count in test  210  has been reached the network node  140 ,  143  gets the synchronization code from either step  204  or  203  and saves  211  the synchronization code. The network node  140 ,  143  becomes a sync master control node  140 ,  143  and starts providing synchronization  212  for the sync network  145  or  146  using the synchronization code stored in step  211 .  
         [0030]      FIG. 3  is a flow diagram of the present preferred process for changing the synchronization code used to isolate networks. This may be necessary where there are two sync master control nodes  140 ,  143  providing synchronization using the same synchronization code. Each sync master control node  140 ,  143  may not be able to see or talk to one another, but a network node  141 ,  144  in between them may be able to detect both of the synchronization codes generated by each sync master control node  140 ,  143  and not know which synchronization code to track. By changing the synchronization code sent from one of the sync master control nodes  140 ,  143 , the network node  141 ,  144  can track the correct sync master control node  140 ,  143 . The process begins  300 . A message is sent to the sync master control node  140 ,  143  requesting  301  the sync master control node&#39;s  140 ,  143  to change the sync master control node&#39;s  140 ,  143  synchronization code. If at test  302 , the requesting network node  140 ,  141 ,  143 ,  144  is not a part of the sync master control node&#39;s  140 ,  143  logical network the sync master control node  140 ,  143  rejects  303  the request and the process ends  315 . If at test  302 , the network node  140 ,  141 ,  143 ,  144  was from the same logical network, the sync master control node  140 ,  143  informs  304  each network node  140 ,  141  or  143 ,  144  on the sync network  145  or  146  that synchronization will be lost. The sync master control node  140 ,  143  stops  305  providing synchronization. The sync master control node  140 ,  143  builds  306  a table of all the network nodes  140 ,  141 , or  143 ,  144  that the sync master control node  140 ,  143  can talk to before the sync master control node  140 ,  143  stopped providing synchronization. In test  307  the sync master control node  140 ,  143  checks to see if there is second sync master control node  140 ,  143  providing synchronization. If so, the sync master control node  140 ,  143  locks onto the synchronization code and searches  308  for the sync master control node&#39;s  140 ,  143  logical network and goes to step  314 . If test  307  is no, the sync master control node  140 ,  143  checks  309  to see if any of the other synchronization codes are not in use on the sync network  145 ,  146 . The preferred embodiment uses four synchronization codes, but this is not a requirement. If one of the other synchronization codes is not in use, the sync master control node  140 ,  143  switches  310  to the first unused synchronization code and goes to step  314 . Otherwise, the process continues to test  311  to see if all four synchronization codes are being used on the physical network  142 . If all four synchronization codes are being used, one of the other synchronization codes is used  312 . If not, the sync master control node  140 ,  143  uses  313  the previous synchronization code. The sync master control node  140 ,  143  starts providing synchronization  314  using the selected synchronization code and is complete  315 .  
         [0031]      FIG. 4  is a flow diagram of the present preferred process for determining which network node  140 ,  143  is the sync master control node  140 ,  143  when there are two sync master control nodes  140 ,  143  providing synchronization. In a power line network, network conditions change as lights are turned on and off; motors are turned on and off, or the like. This can cause conditions where there may be two sync master control nodes  140 ,  143  providing synchronization in close proximity. This can cause errors on the sync network  145 ,  146  because the synchronization codes are not synchronized to each other. Data can become corrupt in non-synchronization time slots as the synchronization codes and data overlap. The process starts  400 . A sync master control node  140 ,  143  checks  401  one or more time slots  120 - 136  for a threshold of errors over time or some other error threshold or combination of errors. The present preferred embodiment uses CRC errors for the threshold, but other error thresholds such as forward error correction errors and the like can be used as well. If the threshold has not been met  401 , the sync master control node  140 ,  143  checks to see if the synchronization period checking is enabled in test  402 . Synchronization period checking is the process that a sync master control node  140 ,  143  uses to look for synchronization codes in time slots  120 - 136 . If the sync master control node  140 ,  143  sees a synchronization code in a time slot  120 - 136 , there may be another sync master control nodes  140 ,  143  providing synchronization in close proximity. If not enabled, in step  402 , the process checks  401  for too many CRC errors. Otherwise, the process disables  403  the checking and tests  401  for too many receive errors. This is to allow for when a large number of errors occur due to noise or some other reason and not another sync master control node  140 ,  143  providing synchronization. If at test  401 , the threshold has been met, the synchronization period checking begins  404 . The process gets  405  the next synchronization code and checks  406  for the synchronization code over a period of time. The sync master control node  140 ,  143  checks  407  for sync code energy within a time slot  120 - 136 . Hardware detection circuitry is used for detection of synchronization codes. This information is read via registers in the hardware. All the synchronization codes are checked in test  408 . If all the codes have not been checked the process gets  405  the next synchronization code. Otherwise, the sync master control node  140 ,  143  completes a running average test of the Automatic Gain Control (AGC) to determine if a synchronization code was seen  409 . If a second synchronization code was not seen at test  410 , the process checks  401  to see if there are too many CRC errors. Otherwise, the sync master control node arbitration algorithm begins  411  (step  100  in  FIG. 1   c ).  
         [0032]     These data synchronization methods and systems are designed so these data synchronization methods and systems will run over a variety of networks, but are not limited to such types of networks as AC power line, DC power line, light frequency (fiber, infrared, light, and the like), Radio Frequency (RF) networks (wireless such as 802.11b, and the like), acoustic networks and wired networks (coax, twisted pair, and the like).  
         [0033]     In addition, these data transportation methods and systems can be implemented using a variety of processes, but are not limited to computer hardware, microcode, firmware, software, and the like.  
         [0034]     The described embodiments of this invention are to be considered in all respects only as illustrative and not as restrictive. Although specific flow diagrams are provided, the invention is not limited thereto. The scope of this invention is, therefore, indicated by the claims rather than the foregoing description. All changes, which come within the meaning and range of equivalency of the claims, are to be embraced within their scope.