Abstract:
A method and apparatus for operating and actuating remote devices using a single pair of wires together with communication and networking protocols necessary for operational control of the remote devices and data gathering activities from the remote devices. The invention leverages the use of existing wiring and is particularly useful in heating and air conditioning systems, sprinkler control systems, security systems, lighting control systems, industrial automation control systems and similar environments.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    This invention comprises communication and power distribution design wherein both the power for operation of remote sensing elements and remotely actuated elements can be transmitted down a single pair of wires together with the communication or networking protocols necessary for operational control of and data gathering from the remote devices. While the techniques discussed are applicable to many control and data gathering activities, this invention targets control of heating and air conditioning systems, sprinkler control systems, security and lighting controls and industrial automation controls.  
           [0002]    Numerous systems exist where a signal of some type is super imposed on a power signal. In these systems, the communication information is separated from the power signal in the frequency spectrum such that through proper frequency separation techniques and with proper encoding and decoding techniques the information can be extracted from the power signal. These systems can perform very well and meet many design needs. Systems comprising a high frequency carrier, upon which is impressed the encoded information, requires a tightly specified and controlled transmission medium such that the high frequency carrier is not lost and signal integrity is maintained. These systems generally tend to require more complex encoding and decoding hardware. If the proper techniques are not used, transmission distances and data transmission integrity can be limited. If good techniques are used, very high data rates can be achieved.  
           [0003]    In the design center, there are often requirements to use existing wiring such as in sprinkler systems where it is both cost effective and much less disruptive to the environment to use existing wiring. A typical system may have an individual wire to each valve and a common ground. This type of lay out is not well suited to high frequency encoding systems where transmission line characteristics are important. With conventional systems, adding additional valves means installing a new wire for each new valve.  
           [0004]    This two-wire system facilitates expansion by extending the existing wiring with additional two-wire lengths to reach the new locations. The two-wire system can be connected in a loop configuration that provides a redundancy level not available in other topologies. A loop provides the ability to continue to operate with a single break in the two-wire loop. In the heating and air conditioning environment, it is often difficult to add wire, and being able to use existing thermostat wiring can be an installation and cost advantage. The same holds for lighting and security control.  
         DESCRIPTION OF PRIOR ART  
         [0005]    Fowler (U.S. Pat. No. 4,093,946) in 1976 teaches the fundamentals of communication over a two wire system and method for interrogating a plurality of data gathering devices for actuation of selected ones from which data is received. Transducers, as taught by Fowler, are typically remotely located from the interrogating and receiving apparatus and are connected via a single two-conductor path over which power is conveyed to the transducers and data signals conveyed between the transducers and the receiving apparatus. Fowler teaches that turning on current source and causing a constant current to be propagated down cable can produce a binary signal. He continues that voltage modulation can be can be induced by alternately placing a high impedance and a short circuit across the conductors of the cable, while the current source is continuously enabled. The voltage on the cable can be caused to alternate between two binary states.” 
           [0006]    Shimada (U.S. Pat. No. 4,139,737) in 1979 applies the two wire communication concept through the addition of a time division multiplex transmission system in which electrical power is transmitted to remote terminals from a central unit simultaneously with address and control signals.  
           [0007]    He also references that adding modulators and demodulators to power lines was well known in 1979. “Alternatively a pair of transmission lines have been arranged between the central unit and the respective terminal units and, further, modulators and demodulators have been inserted between the central unit and the said transmission lines and between the respective terminal units and the transmission lines so that the address, control, response and the like signals have been superposed on electric power waves to be transmitted between the central unit and the respective terminal units. However, with this arrangement, the modulators and demodulators have been required, the system formation has been complicated and the cost reduction has not been able to be attained.” This technique is widely used in both AC and DC two wire systems. Systems with high frequency carriers require special care in impedance matching and layout and are limited in distance. They also require a certain level of cost and complexity.  
           [0008]    Horn (U.S. Pat. No. 4,208,650) in 1980 teaches the concept of using a basic message protocol where “The transmitter is connected to a data containing unit and operates through a data cycle which addresses the data unit to provide a plurality of serially arranged message frames during each data cycle. Each message frame includes a marker bit, a sync word, data words having either digital or analog information, address and error words, a checkword, and various parity and start bits. The receiver, which is connected to another data unit, is adapted to recognize each message frame by means of the marker bit and the sync word, and evaluate the message validity by means of the parity and start bits, and the checkword.” 
           [0009]    These four patents clearly teach the following principles and are now in the public domain:  
           [0010]    1. Communicating and supplying power over a two-wire system,  
           [0011]    2. Impressing a current source on a line and causing modulation on the line by sinking that current such that the voltage will fall to a low level where alternating changes between the high and low levels is detected and decoded by the intended receiver,  
           [0012]    3. Each message frame includes a marker bit, a sync word, data words having either digital or analog information, address and error words, a checkword, and various parity and start bits.  
           [0013]    There have been significant refinements and variations over the years including the following. Each variation developed to meet specific requirements demanded by the projected usage.  
           [0014]    Demeyer, et al. (U.S. Pat. No. 5,089,974) in 1992 teaches art that is perhaps most similar to ours. Their abstract follows:  
           [0015]    A building power management controller comprises a plurality of modules connected by a two-wire network. Each module comprises a data transceiver device, controlled by a microprocessor, to both transmit data to the other modules and to a central unit via the two-wire network, and to receive information via this two-wire network. The modules are supplied with power by the two-wire network. When two modules transmit simultaneously, one takes priority so as not to disturb the messages transmitted.  
           [0016]    Demeyer utilizes the concept taught by Fowler above, where a current source is applied and an alternate sink and high impedance load is used to generate the timing for the coding scheme. Demeyer also teaches that super imposed communication signals can be handled by sensing an out of phase bit through a comparator means where a difference in state between the output of the transmit bit and the input from the two-wire level sense comparator is sensed. The comparator is will indicate by an output level if there is a difference between the lines while the module is in the low state. The microcontroller in the module can sense this level and withdraw from the communication cycle letting the other device continue.  
           [0017]    Demeyer does not teach the ability to use this capability to automatically configure the system.  
           [0018]    Our invention varies substantially by teaching the follow:  
           [0019]    1. Independent physical modules capable of being assigned a plurality of addresses with each address independently associate to an independent prescribed function, such that all functions are addressed directly. Thus new modules with combinations of functions can be introduced without causing changes to the controlling application and user interface.  
           [0020]    2. Each function will perform or report the prescribed function independent of the other functions in the physical module.  
           [0021]    3. Each function will share the interface means for the physical module as well as the microcontroller means.  
           [0022]    4. Collision detection means for detecting multiple responses on the two-wire buss with each function backing off tee function&#39;s communication attempt until only one function continues to communicate, thus guaranteeing a response. This capability is uniquely used to automatically determine the components and functions currently connected to the network. The network can be given a global command to all functions to report all serial numbers. Each attached remote device will attempt to answer. As each device answers, the remote checks for a response from other device on the two-wire interface. If it detects a response from another device, it will not respond or break off response to the command. All devices but the fastest will eventually detect that another device is active and will cease responding. As explained later, this process is accomplished is such a way that no data corruption is possible. The single device that detects no collision will have reported it serial number at the end of the communication cycle. The found device is then given a command such that it will not respond to the global report serial number command. The global command is reissued and because the first devices will no longer respond, another device will win and report a valid serial number. This process continues until all devices have been found. Each device can not be uniquely addressed and will function independently.  
           [0023]    5. Self-clocking encoding method providing a excellent noise immunity in poorly connected, high noise environments.  
           [0024]    6. A command and response base protocol defining the power and communication phases such that the communication circuits need only to source or sink a limited amount of current and thus the size of the devices and the power dissipated can be reduced.  
           [0025]    7. A four state system that provides full power during states where work is being done and lesser power matched to the communications needs of the system during the communication phases. Demeyer teaches that a two to one range between the communication current sourced and the load current is recommended. By providing high power and communication modes, the supplied power between the communication state and the power stated can easily be separated by a factor of ten. The voltage and current can be uniquely defined and optimized to match the intended use.  
           [0026]    8. A collisions detection method that can detect collisions by looking at the state of the line prior to imposing a low state. If the line is already in a low state, another function is communicating. This process provides a more robust method with fewer parts at a lower cost than the currently taught methods.  
         SUMMARY OF THE INVENTION  
         [0027]    A apparatus and methods comprising a computer or processor based control system, one or more base units, a number of remote sensing and or remote control elements, capable of controlling and monitoring complex systems over large distances in an electrically noisy environment. The processor base control system, if included, may or may not be part of the base unit or may be a any other separate computational apparatus such as a personal computer or programmable controller mounted at a remote location.  
           [0028]    A method of communicating control and data information together with power supply voltage down a common pair of conductors where the physical routing of the individual conductors is not critical. The method is also capable of communicating for distances of many thousand feet. The invention comprises a method where a power source is located at a base unit and encoders and decoders are located both at the base unit and at each remote sensing and/or control site for two-way communication.  
           [0029]    This method separates operation into two time phases, one phase being a power delivery phase and the other phase is a communication phase. During the power delivery phase, the power supply voltage is supplied down the pair of conductors to all of the remote sensors and control circuits. In the communication phase, power delivery is reduced and the remote sensors and control circuits operate on energy stored in their respective capacitive storage element. Communication between the various units is achieved during this phase.  
           [0030]    A method whereby a working communication protocol is achieved by alternately energizing and de-energizing a pair of conductors. The encoding protocol is based on the amount of time between transitions to determine if the bit is a one or zero. This encoding protocol is a self-clocking code where all bit boundaries are marked by a transition from high to low or low to high on the pair of conductors. The self clocking capability of the code is important because timing errors in coding are not additive over multiple bits, but are constrained to only the current bit time. Clocking can now be implemented effectively with a microprocessor without crystal control. The preamble and post-amble is also self-clocking. In the first implementation, the time between transitions of a one bit is three times the length of a zero bit. Eight transitions or bits are grouped into bytes and a number of bytes are grouped into a data field. A message is composed of a preamble, a data field, and a post-amble. Normal communication is based on a command message, a processing phase or time, and a response message. Remote units are able to detect that a communication process is starting by monitoring the conductor pair for a preamble. The command message provides a command and associated data to the remote unit. The remote unit processes the command and data (the processing phase), and then returns the resultant data to the base unit during the response phase. All communication messages contain checksum bytes ensuring that the data and command sent and received have not been corrupted.  
           [0031]    A method whereby if multiple devices attempt to respond to a single command message, they each detect possible message collisions and will stop their communication message in order to avoid the corruption of another units response message. The method is such that a single response message is guaranteed to arrive at the base unit without corruption. This method is very important because it allows for an automatic discovery and configuration of the system without the need for complex retry and recovery algorithms as in many computer networks. See the earlier description.  
           [0032]    An apparatus for sourcing power at controlled levels such that during the power-sourcing phase, substantial power is supplied to the remote devices and such that during the communication phase the power system supplies a fractional portion of normal power while the communication apparatus, including the encoder and decoder, function. The apparatus is also able to detect both open and shorted circuits and react appropriately such that the system is controlled in a way as to prevent system damage during these situations. The apparatus is able to supply power only when the system is actively functioning and disable the supply of power to the remote units when the system is idle to conserve power consumption and reduce degradation of the conductor pair through unnecessary electrolysis of damaged wire.  
           [0033]    An apparatus for alternately raising and lowering the voltage on the lines such as to achieve the encoding method described above. The apparatus will be capable of decoding the time and voltage levels to extract the encoded information.  
           [0034]    An apparatus for generating a wave form from a 24 volt DC supply in a way that it can properly operate an industry standard 24 Volt AC sprinkler valve. The coil inductance is used as an energy storage device. The apparatus utilized techniques similar to those used in switching power supplies to raise efficiency. Increased efficiency conserves energy, and increases system reliability.  
           [0035]    An apparatus for interfacing various sensors, including moisture, temperature, pressure, flow, voltage, current, and relay closure, such that these sensors can receive commands, perform measurements and report results.  
           [0036]    A method whereby commands and data are encoded into a Command-Response Protocol that uniquely defines each command with the expected action and response. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0037]    [0037]FIG. 1 is a system block diagram of a computer, a base unit with a two-wire power sourcing system, and a number of remote units in accordance with the invention.  
         [0038]    [0038]FIG. 1B is a system block diagram of an Irrigation System with a computer, a number of base units showing both wire and wireless communications at several stages in the system topology. A variety of remote units is shown as representative of those needed in a system.  
         [0039]    [0039]FIG. 1C is a system block diagram of a HVAC System with computer, a number base units with a two-wire power sourcing system, and a number of remote units in accordance with the invention.  
         [0040]    [0040]FIG. 1D is a system block diagram of a Data Collection System, with a computer, a set of base units with a number of remote units in accordance with the invention.  
         [0041]    [0041]FIG. 2 is a block diagram of a base unit including the power sourcing system and computer interface in accordance with the invention.  
         [0042]    [0042]FIG. 3 is a block diagram of a remote unit in accordance with the invention.  
         [0043]    [0043]FIG. 4 is a detailed schematic diagram of power sourcing system that forms a part of the apparatus in accordance with a preferred embodiment of the invention.  
         [0044]    [0044]FIG. 5 is a detailed schematic diagram of an encoder and decoder circuit that forms a part of the apparatus in accordance with a preferred embodiment of the invention.  
         [0045]    [0045]FIG. 6 is a detailed diagram of a two-wire communication packet showing the various phases that forms a part of the encoding and decoding method in accordance with the preferred embodiment of the invention.  
         [0046]    [0046]FIG. 7 is a detailed diagram of a two-wire communication packet showings the collision prediction and avoidance method that forms a part of the encoding and decoding method in accordance with the preferred embodiment of the invention  
         [0047]    [0047]FIG. 8 is a message definition diagram for the communication packets between the computer and the base unit. There are two types of packets, control and pass-through.  
         [0048]    [0048]FIG. 9 is a message definition for the communication packets between the base unit and remote units.  
         [0049]    [0049]FIG. 10 is a block diagram showing the basic method for driving the irrigation valves. Irrigation valves are a 24 VAC device and the system uses a 24 VDC modulation method to achieve an equivalent operation in a more efficient manner.  
         [0050]    [0050]FIG. 11 is a detailed schematic diagram for an irrigation valve controller.  
         [0051]    [0051]FIG. 12 is a diagram of the system protocol architecture and the definition of each of the protocol layers used in the system. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0052]    System Operation  
         [0053]    [0053]FIG. 1 is a system block diagram showing the invented apparatus in conjunction with a computer  1 , a Processor Based Control System, a Base Unit including the Power Source, Encoder and Decoder  2 , and an interface cable  14  connected there between. The invented apparatus includes a Computer  1  and the interface cable  14  will be understood to be conventional and, importantly, invented apparatus requires no modifications thereto. Interface cable  11  is in general accord with the referenced Universal Serial Bus (USB) Specification, Revision 1.0 or 2.0 or standard RS232 Serial Cable. Remote Devices  3 - 11  are connected by general-purpose wire of sufficient gage to conduct the required amperage for the specified distance. One wire  12  is at system ground potential and the second wire  13  is energized to supply power and carries the encoded data transmissions. The diagram indicates both daisy chain and star configurations for conductors  12  and  13  to indicate the flexibility of the system. The diagram further shows a loop connection of the wire to show a wire redundancy configuration of the system. Existing wiring, for example the buried wire of a sprinkler control system, can be utilized for conductors  12  and  13 . Remote devices  3 - 10  contain encoding and decoding circuitry and have the ability perform a remote function under the control of the computer  1  through the power source  2 . The remote devices can be designed to perform many varied functions from control of electromechanical devices to sensing of temperature, pressure, moisture, flow and many other functions.  
         [0054]    [0054]FIG. 1B demonstrates a sprinkler irrigation system containing remote valve actuators to enable the system valves, moisture sensors to determine the moisture content of the soil, water pressure and flow meters, and rain and air temperature sensors to monitor the sprinkler system performance.  
         [0055]    [0055]FIG. 1C demonstrates a heating, ventilation and air conditioning monitor or controller showing temperature sensors for intake and outlet air, boiler temperature, room temperature, airflow, actuator control, and relay activation circuits to enable control of a site containing a number of heating and cooling systems.  
         [0056]    [0056]FIG. 1D demonstrates this technology applied to data collection application where a number of remote moisture sensors are used to monitor the level of ground water in a number of locations, and other environmental sensors to collect other data.  
         [0057]    These three specific application demonstrations are given to show the technology in a number of basic types of applications where sensing, control or sensing and control are important. The first applications for this technology are in the areas of irrigation sprinkler control and HVAC control: however, it is obvious that the technology is applicable to many control and sensing applications.  
         [0058]    Base Unit  
         [0059]    [0059]FIG. 2 shows a block diagram of the base unit. The base unit receives data from and transmits data to the computer over an industry standard computer interface port such as the Universal Serial Bus (USB) or RS 232, or it receives data from and transmits data to the Processor Based Control System over a proprietary bus. The remote unit commands are encoded on the two-wire bus to be sent to a remote device for action. Responses are received from the remote devices over the two-wire bus. The base unit also manages the basic two-wire bus by detecting shorts and opens in the bus. The base unit also has the ability to detect the basic quality of the transmission received and monitor degradation of the two-wire bus by accurately measuring the time between each transition and computing a quality factor based on the variation of the transition timing with the expected timing. The base unit is composed of a micro controller that provides the computational processes necessary. The power source provides power at two levels. The high power level, activated by raising the high power line to a logical one, provides operational power for the devices. The devices is current limited such that a shorted wire will not harm the system. The micro controller monitors the power provided to the two-wire bus such that if it exceed a preset level for a fixed length of time, the micro controller will shut down the power to the two-wire system and report to the computer or control system that an over current situation has occurred. The micro controller, using the current sense and voltage sense lines provided, monitors system power usage and is able to measure the voltage drop on the two-wire connection during communication with a remote unit. This voltage drop is transformed into a resistance measurement of the wired connection, which provides an objective measurement of the quality of the two-wire bus, and can indicate degradation over time. The limited power level activated by lowering the high power line and by raising the low power line provides sufficient power for the communication process. The functions of the Processor Based Control System may be included in the base unit if a user interface apparatus, real time clock and additional RAM are added.  
         [0060]    [0060]FIG. 4 shows the power sourcing circuitry. Power is applied to the circuit through jack J 1 . Diode D 1  and Fuse F 1  protect the circuitry from damage if a power supply with the incorrect polarity is connected. The transorb protects the circuitry from voltage spikes. When System Drive Low is raised, current flows through Q 8  and is proportional to the voltage across R 26 . Current flows through the base of Q 3  that then provides base current to both Q 2  and Q 1 . The voltage across Q 1  is =(V SystemDriveLow −0.6V)R 7 /R 26 . The current through Q 1  increases until the voltage across the parallel combination of R 1 , R 2 , R 6 , R 10  and R 11  equal the voltage across R 7 . By the correct choice of resistors, the low drive current for the system is established. When System Drive High is raised, additional current is sourced to the base of Q 3 . As the current increases to the two-wire system, the voltage across parallel combination of R 1 , R 2 , R 6 , R 10  and R 11  raises until it reaches approximately 0.6 volts and Q 14  turns on sourcing some of the drive current and thus performing a current limiting function and determining the short circuit current supplied to the two-wire system. Q 4 , Q 5  and Q 6  in combination with R 12 , R 13 , R 22 , and R 23  form a current sense circuit presenting the micro controller with a voltage that is representative of the instantaneous current supplied to the two-wire system. Resistors R 24  and R 27  present the processor with the instantaneous voltage on the two-wire bus. The micro controller monitors the two-wire voltage and current through these two lines. It the current is excessive, the micro controller shuts down the two-wire system by lowering System Drive High and System Drive Low.  
         [0061]    [0061]FIG. 5 is a schematic diagram of the Encoder and Decoder circuitry. U 2  is a voltage comparator that is biased by R 29 , R 30  and R 31  such that the output is pulled to Vcc when the two-wire bus is high and drops to a logical zero when the two-wire voltage is low. Raising the gate, Pin  1 , to five volts, activates Q 9  allowing Q 9  to sink the current provided by the bower sourcing circuitry and producing a low voltage level on the two-wire bus.  
         [0062]    Remote Unit  
         [0063]    [0063]FIG. 3 is a block diagram of the basic remote device. Communication is achieved by an encoder, either the base unit or one of the remote encoders sinking the current sourced by the power source such that the voltage on the two-wire bus drops to a logical zero. When the encoder no longer sinks the supplied current, the voltage rises and a logical one is impressed on the two-wire bus. The encoder is a low impedance semiconductor such as an N-channel FET or NPN transistor that when energized by the micro controller, sinks the current sourced by the power source. The decoder is a comparator that translates the high voltage on the two-wire bus to the voltage required by the micro controller. When the voltage is above a set threshold, a logical one is presented to the microprocessor. If it is below that threshold, a logical zero is presented. The decoder has sufficient positive feedback on the comparator to prevent noise in the system from presenting false transitions to the micro controller. The system is designed to take full advantage of the excellent computational capabilities of current, micro controllers. This invention is targeted at cost sensitive applications and therefore, for minimal costs, all complex timing functions and computational functions are preformed by the micro controller. The remote unit also has the ability to detect the basic quality of the transmission received and monitor degradation of the two-wire bus by accurately measuring the time between each transition and computing a quality factor based on the variation of the transition timing with the expected timing.  
         [0064]    Valve Actuator and Control Apparatus  
         [0065]    [0065]FIG. 10 demonstrates a valve power control apparatus that allows industry standard 24 volt AC. irrigation valves to be used on this 24 volt DC system. This block comprises the Remote Sense or Control Circuitry shown in FIG. 3. The valve power control apparatus will contain all blocks show in FIG. 3 in addition to those shown in FIG. 10. The micro controller show in FIG. 3 is repeated in FIG. 10 in order to increase clarity. The line Power On/Off is raised enabling the voltage switch to gate the voltage across the 24VAC Valve. The valve is a solenoid, which electrically is an inductor with a movable core. Therefore, when voltage is applied to the winding of the solenoid, the current increases in the winding. The rate of increase is proportional to the applied voltage and the time constant of L/R. where L is the inductance of the solenoid and R is the resistance of the solenoid. When the Power On/Off line is lowered, current is no longer supplied by the 24VDC line, but is drawn through diode D 1 . The current in the inductor degrades with the time constant of L/R where again L is the inductance of the solenoid and R is the resistance of the solenoid. The current will continue to degrade until it reaches zero amps or another pulse is applied to the coil. 24 VDC Current  2  is the current drawn from the 24 VDC source. The average of Valve Current  1  therefore is significantly greater that the current drawn from the 24 VDC supply. Current in the solenoid is multiplied in much the same way as a switching power supply uses an inductor and switching transistor and diode to multiply current and reach very high efficiency. The current design is constructed to produce a current multiplier of three, or one third of the current comes from the 24 VDC supply and two thirds comes through the diode. The higher efficiency allows us to support more valves on the same wire gage when compared to traditional AC systems. The gain in efficiency also allows us to be generally more energy efficient.  
         [0066]    [0066]FIG. 12 shows detailed schematics of the Valve Actuator and Control Apparatus. The PIC12C673 and the reset circuit composed of comparator U 2 B, R 19 , R 15 , R 17 , C 3 , R 1  make up the micro controller block. R 11 , R 12 , R 23 , R 10 , R 9 , D 4  and U 2 A make up the decoder block. R 3  and Q 1  make up the encoder block. Energy stored on C 1  power the circuitry during the communication phases. U 1  is a five-volt regulator providing power to the micro controller. The voltage on the raw supply V — 24 is divided down by the resistive divider comprised of R 21  and R 22 . The output is supplied to an analog to digital converter input on the micro controller. This is used by the system to monitor the system performance. The system is able to determine if there is excessive resistance in the two-wire system, whether the system has poor connections or if it is overloaded by monitoring the voltage at this point. The current sense circuitry monitors the flow of current through the load. The current sense circuitry is composed of Q 4 , Q 5 , Q 8 , R 4 , R 12 , R 16  and R 18 . The voltage drop across R 6 , R 7  and R 8  is measured and the current through R 16  is set based on that voltage drop. The micro controller reads this voltage and is able to monitor the current through the load. The system uses reading to detect a short circuit or other overloaded conditions. Most valve failures caused by open circuits or short circuits are preceded by changes in the coil resistance. When these changes are sensed, a warning can be given that failure is emanate. The valve is actuated by raising the base of Q 8  to 5 volts causing current to flow through the collector of Q 8 . a portion of this current then flows through the base Q 6  and the base of Q 3  turning on Q 3  and applying voltage to the output. If the voltage across R 6 , R 7 , and R 8  exceeds 0.6 volts, Q 2  begins to conduct limiting the current through Q 3 . D 6  provides the conduction path for the solenoid when the base of Q 8  is lowered turning off Q 3 . R 14  and D 5  provide a visible indication that the output is powered.  
         [0067]    Communications  
         [0068]    [0068]FIG. 6A is a diagram showing a full communication cycle. All communication sequences begin with the computer or control unit sending a command to a base unit over a standard connection. The command with either be executed by the base unit and a response returned to the computer, or it will be forwarded on to the two-wire bus to a target remote device. In the latter case, the response message from the remote unit will be received by the base unit and then returned to the computer. If the remote unit does not respond within a specified time, an error response will be sent to the computer indicating the error condition.  
         [0069]    Two-Wire Communication Phases  
         [0070]    [0070]FIG. 6B is a diagram showing a detailed two-wire communication cycle. In the High Power Phase, the system is delivering full power to the remote devices and the remote devices are performing their individual functions. When the computer sends a command to the base unit that is to be forwarded on to a remote device, the base unit reduces the current available to power the two-wire system. The base, unit encoder then activates, pulling the voltage to ground, by sinking the sourced current to bring the two-wire voltage to a logical zero volt level. The low level indicates to all remote units that a message-preamble has begun, and that a communication will follow. After a prescribed time, the encoder then allows the voltage to rise to a logical high level for a determined amount of time to complete the preamble of the message. The communication cycle continues as the base unit encodes the message received from the computer by serially placing each bit on the two-wire system. The first bit is pulled low by the encoder sinking current to bring the voltage on the two-wire system to a logical zero. If the communicated bit is a “one” then the bit is held low for three units of time. If the communicated bit is a “zero” the bit is held low for only one unit of time. At the conclusion of the required time specified by the bit being a “one” or a “zero” the encoder releases the line and the current source in the power source drives the two-wire potential to full voltage. The voltage remains at the high level for one unit of time if the next bit is a “zero” bit or three units of time if the bit is a “one” bit. This process continues until each bit of the data field, in the communication cycle, has been impressed on the two-wire bus. A final “low” on the two-wire for a set amount of time signifies the post-amble or end of message. In FIG. 6, the One Byte Transfer Detail shows a sequence of eight bits.  
         [0071]    Note that the “zero” bits are one unit of time long, and the “one” bits are three units of time long. The basic concept of utilizing one time for a logical one and another for a logical zero was first used between 1970 and 1980 to encode computer data on computer magnetic tapes. This code was not very efficient because it contains at lease one transition per bit and contains a DC component that is difficult to decode accurately in a magnetic read channel. While the basic concept of using long and short bit times to encode data exists as prior art, we feel that we have made significant contributions in adapting this code to run in a cost sensitive but electrically hostile environment. We have modified and extended the code to use in this application and have added the necessary definition, pre and post ambles necessary to form a unique and cost effective solution for this environment. The two-wire signal moves between zero volts and the power supplies voltage and therefore is well adapted to code containing a DC component. The entire message is composed of a number of bytes. Each byte is composed of eight bits. The first byte of the message is the address of the remote to which the command is addressed. The next six bytes composed the body of the message. The last two bytes are checksum composed of the sum of the previous seven bytes. The remote device computes the checksum on the first seven bytes and compares it to the received check sum. If they are identical, the message is valid. If they are not, the message has been corrupted during transmission and is discarded.  
         [0072]    At the conclusion of the message, the remote units can use this time to perform any commands sent during the command sequence. At the end of the minimum specified processing time, the remote unit addressed by the command message would activate and send a preamble. The local encoder sinks the current supplied by the base unit power source bringing the voltage on the two-wire bus to a logical zero. The low level indicates that a communication from the remote will follow. After a prescribed period, the encoder then allows the voltage to rise to a logical high level allowing the base unit to prepare the communication cycle to follow. The remote devices use the same protocol for communication and hold the bus low for one unit of time if the bit is a “zero” and three units of time if the bit is a logical “one”. The entire message is composed of nine bytes. Each byte is composed of eight bits. The first seven bytes composed the body of the response message. The last two bytes are a checksum composed of the sum of the previous six bytes. The base unit computes the checksum on the first seven bytes and compares it to the received checksum. If they are identical, the message is valid. If they are not, the message has been corrupted during transmission and is discarded.  
         [0073]    Configuration and Collision Avoidance  
         [0074]    Every remote unit has a unique serial number. When the system is configured, each remote unit is assigned a unique address on the two-wire system such that it can be addressed easily and independently. During the configuration process, it is advantageous for the system to be able to perform an auto discovery function and detect all remote units connected to the two-wire system. The invented method of detecting potential collision and avoiding data corruption enables this auto detection and identification function. The two-wire power is supplied through a current source that pulls the two-wire voltage to the required voltage level. An encoder on the base unit or one of the remotes sinking the current and pulling the two-wire voltage low produces a logical two-wire low level. The encoders are open collector or open drain devices and as such can be activated concurrently without damaging the device. However, if two devices both answer and attempt to send a full response, the response from both devices would mix and produce a corrupted return. The method of collision avoidance requires that prior to each transition from a high two-wire voltage to a low two-wire voltage, the sending unit checks the level of the two-wire voltage before activating its encoder. If the voltage is low already, the remote does not enable the encoder and terminates sending the response message. This allows the competing response messages to be sent without corruption. The system discovers the remote units on the system by transmitting a return serial number command to all remote units. Each remote unit will attempt to transmit its serial number. Each remote unit will wait a pseudo-random delay before attempting to send a response. As each remote unit begins to send a preamble, it checks to see if the line is already low. If the two-wire is already low, the remote unit discontinues its response and will wait for the next command from the base unit. Because the remote units start their response messages with some time variance, most of the remote units will drop off during the generation of the preamble as is shown in FIG. 7. If by chance multiple remote units happen to send a synchronized preamble, remote units will dropout as they detect potential collisions with their data stream. The Data Phase of FIG. 7 shows additional points of possible collision that are detected. As a remote unit detects a potential collision, it will back off and wait for the next command, allowing the other remote unit to complete without error. Because each remote unit has a unique serial number, each remote unit will be responding with a different data stream, which will guarantee that only a single remote unit will complete successfully. The remote unit that communicates its serial number successfully is then given a command to “sleep” and the process is repeated until all remote units are found and put into a sleep state. Remote units no longer respond when in the sleep state. All remote units will have been found when there is no response to the return serial number command.  
         [0075]    Command-Response Protocol  
         [0076]    [0076]FIG. 8 is a representation of the command/response level protocols that are used to communicate between the controlling computer and the base unit. The byte definitions for the two types of packets are specified. The system operates on a command and response operation model. The computer sends a command to a base unit (the system provides an addressing method for communicating with multiple base units). This command is either processed by the base unit or the encapsulated message is forwarded to the addressed remote unit over the two-wire system. When the addressed base unit has processed the command, it composes a response message and sends it back to the computer (there. are commands that do not send a response). If the command is a pass-through, the encapsulated message is sent over the two-wire network to the addressed remote unit. The base unit will then wait for a response from the remote unit. This response will be encapsulated and then sent forward to the computer. If there is no response from a remote unit within the allowable time, then an error message is sent to the computer indicating that no message was received. All messages are protected by checksum codes to verify message integrity. The base unit does not interpret messages that are passed-through to remote units. FIG. 9 shows the byte definitions for a remote unit message.  
         [0077]    Communication Protocol Layers  
         [0078]    [0078]FIG. 11 describes the communication protocol architecture. The specified layered protocol is a simplification of the seven layers defined Open System Interconnection (OSI) Network Protocol Layers standard. This system is based on a layered architecture and provides significant benefits over a non-layered approach. Within the architecture, new layers can be employed in the future with a minimum of effort and without modification to the other layers in the system. This means that changing the interface bus between the computer and the base-unit(s) from RS-232 to USB or to a 10-100 Mbit LAN will not require a change in the messages used for system operation.  
         [0079]    Layer  4  messages define the operation of the system in a specific set of functions that the Base Units and the Remote Units can execute. Then the computer needs to communicate with a base unit or a remote unit, it only needs to send the corresponding message to the target unit and wait for a response. The details of the other layers of the architecture are hidden from this message layer. Layer  3  provides addressing, handles timeouts, checksum calculations and verifies data integrity. It does not know what kind of message is being sent (a layer  4  issue), nor does it understand the nature of the layer  1  and  2  implementations. Layers  1  and  2  implement bit encoding, bit timing, and the electrical characteristics of the connection. Keeping this isolated from the other layers allows new connection technologies to be inserted into the implementation without needing to change the other layers of the system.  
         [0080]    Device Addressing  
         [0081]    The system provides a method to use three classes of addresses. There is a global address method for all base units and remote units. All units will execute the requested command sent to the global address. Direct addresses target only the device with the corresponding address. Commands or requests with an illegal address are always discarded. The following table summarizes the address assignments:  
                                           Address                   Type   Base Units   Remote Unit   Comment                   Global   0x00   0x00   All devices execute these                   commands       Direct   0x01 to 0x07   0x01 to 0xFE   Only addressed devices                   executes command       Illegal   0xFF   0xFF   No device responds to this                   address. It is used as a                   temporary address for remotes.                  
 
         [0082]    Base Unit Command-Response Protocol  
         [0083]    Status Codes—Base Units  
         [0084]    Most base unit commands have a response comprised of data and a status code. The following table summarizes the status codes that are used on response packets:  
                                           HEX   DEC   Code   Description                   0x01   001   Success/OK   Success       0x02   002   Over Current   Two-wire current limit exceeded: less than                   ‘50 ’ count for ˜1.5 s.       0x03   003   No Response   No response from remote unit within 24 ms.       0x04   004   I2C Error   Communication error with I2C device                   (Clock, EEPROM, Temperature, other. . .)       0x05   005   Illegal   Unknown command.               Command       0x06   006   Command   Unable to do command (2-wire ID w/power               Rejected   down)       0x07   007   Checksum   Returned packed on a 2-wire command had a               Error   checksum error (partial data is returned)                  
 
         [0085]    Commands—Base Units  
         [0086]    The following set of tables provides a definition of the first set of base unit commands.  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ResetBaseUnit   This command will reset the Base unit to a power up state. This           is done through the watchdog timer. The 2-wire is shut down.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address or Global   No reply       1   Base Command   0xC1 (193)       2   Data0   X       3   Data1   X       4   Data2   X       5   Data3   X       6   Data4   X       7   Data5   X       8   Data6   X       9   Data7   X       10   Data8   X       11   PC Status   X       12   PC Checksum1   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi            EnableUnit   Enables Base Unit to accept commands on serial port. Base Unit           powers up disabled.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xC2 (194)   0xC2 (194)       2   Data0   X   0       3   Data1   X   0       4   Data2   X   Type Minor       5   Data3   X   Type Major       6   Data4   X   Version Minor       7   Data5   X   Version Major       8   Data6   X   0       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            TestBaseChannel   Returns the bit lengths (counts) for Bits 0-5 of byte Data4           after it is received from the target remote unit.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xC3 (195)   0xC3 (195)       2   Data0   Remote Addr   Remote Addr       3   Data1   X (uses EchoPacker)   Bit0 Count       4   Data2   X   Bit1 Count       5   Data3   Bit Pattern   Bit2 Count       6   Data4   X   Bit3 Count       7   Data5   X   Bit4 Count       8   Data6   X   Bit5 Count       9   Data7   X   2-Wire ChkSumLo       10   Data8   X   2-Wire ChkSumHi       11   PC Status   X   PC Status = 1 | 2 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            SetBaseChannelParams   Sets the channel parameters . . . pre-compensation. NOT saved           in EEPROM.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xC4 (196)   0xC4 (196)       2   Data0   X   0       3   Data1   X   0       4   Data2   Precomp Count (# of 1.6 us)   Precomp Count (# of 1.6 us)       5   Data3   X   0       6   Data4   X   0       7   Data5   X   0       8   Data6   X   0       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2 | 4 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            BaseUnitStatus   The will return the current base unit status and error counts.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xC5 (197)   0xC5 (197)       2   Data0   X   0       3   Data1   X   2-Wire Powered Up       4   Data2   X   2-Wire Checksum Error Count       5   Data3   X   2-Wire Frame Error Count       6   Data4   X   2-Wire Collisions Count       7   Data5   X   Serial IO Checksum Error Count       8   Data6   X   Serial IO Frame Error Count       9   Data7   X   Serial Illegal Command Count       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            BaseUnitStatusClear   The will return the current base unit status, error counts, and           then clears counts and possible over current condition.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xC6 (198)   0xC6 (198)       2   Data0   X   0       3   Data1   X   2-Wire Powered Up       4   Data2   X   2-Wire Checksum Error Count       5   Data3   X   2-Wire Frame Error Count       6   Data4   X   2-Wire Collisions Count       7   Data5   X   Serial IO Checksum Error Count       8   Data6   X   Serial IO Frame Error Count       9   Data7   X   Serial Illegal Command Count       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            ReadBaseUnitPower   This will return power consumption readings for base unit.           Takes readings over 50 ms, returns highest current, and           corresponding voltage.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xC7 (199)   0xC7 (199)       2   Data0   X   0       3   Data1   X   0       4   Data2   X   Current Lo [max between                   commands]       5   Data3   X   Current Hi [max between                   commands]       6   Data4   X   Volts Lo [max between commands]       7   Data5   X   Volts Hi [max between commands]       8   Data6   X   0       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            PowerUp2Wire   This command will power up the two-wire system. The Base unit           powers up with the two-wire system powered down.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address or Global   Base Unit Address       1   Base Command   0xC8 (200)   0xC8 (200)       2   Data0   X   0       3   Data1   X   0       4   Data2   X   Current Lo [2 ms reading]       5   Data3   X   Current Hi [2 ms reading]       6   Data4   X   Volts Lo [2 ms reading]       7   Data5   X   Volts Hi [2 ms reading]       8   Data6   X   0       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            PowerDown2Wire   This command will power down the two-wire system            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address or Global   Base Unit Address       1   Base Command   0xC9 (201)   0xC9 (201)       2   Data0   X   0       3   Data1   X   0       4   Data2   X   Current Lo [2 ms reading]       5   Data3   X   Current Hi [2 ms reading]       6   Data4   X   Volts Lo [2 ms reading]       7   Data5   X   Volts Hi [2 ms reading]       8   Data6   X   0       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            ReadClock   This reads the date/time from the real-time clock. Only the           Button box has a clock chip.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xCA (202)   0xCA (202)       2   Data0   X   Seconds (0-59)       3   Data1   X   Minutes (0-59)       4   Data2   X   Hours (0-23)       5   Data3   X   Day of Week (1-7)       6   Data4   X   Day (1-31)       7   Data5   X   Month (1-12)       8   Data6   X   Year (0-99)       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status 1 | 2 | 4 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            SetClock   This sets the date/time from the real-time clock. Only the           Button box has a clock chip.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xCB (203)   0xCB (204)       2   Data0   Seconds (0-59)   Seconds (0-59)       3   Data1   Minutes (0-59)   Minutes (0-59)       4   Data2   Hours (0-23)   Hours (0-23)       5   Data3   X   Day of Week (1-7)       6   Data4   Day (1-31)   Day (1-31)       7   Data5   Month (1-12)   Month (1-12)       8   Data6   Year (0-99)   Year (0-99)       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status 1 | 2 | 4 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            ReadBaseVersion   This returns the base unit type and version information. All           initial units hard coded to 00B0001.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xCC (204)   0xCC (204)       2   Data0   X   0       3   Data1   X   0       4   Data2   X   Minor Version       5   Data3   X   Major Version       6   Data4   X   Minor Type       7   Data5   X   Major Type       8   Data6   X   0       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status = 1 ≡1 2       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            ReadBaseSerialNum   This returns the base unit serial number.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xCD (205)   0xCD (205)       2   Data0   X   0       3   Data1   X   0       4   Data2   X   Serial Number 0       5   Data3   X   Serial Number 1       6   Data4   X   Serial Number 2       7   Data5   X   Serial Number 3       8   Data6   X   0       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2 | 4 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            TestTwoWireDrop   This returns the 2-wire voltage measured 1 ms into the 2 ms “low”           preamble being driven by a remote device.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xCE (206)   0xCE (206)       2   Data0   Remote Addr   0       3   Data1   X (uses Echo command)   0       4   Data2   X   Current Lo       5   Data3   X   Current Hi       6   Data4   X   Volts Lo       7   Data5   X   Volts Hi       8   Data6   X   0       9   Data7   X   0       10   Data8   X   0       11   PC Status   X   PC Status = 1 | 2 | 3 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi            ForwardCommand   The command will forward the Data0 to Data8 encapsulated packet           onto the 2-wire network. The response message will be returned           to the PC w/o examination.            #   Definition   Sent to Base Unit   Returned to PC               0   Base Addr   Base Unit Address   Base Unit Address       1   Base Command   0xCF (207)   0xCF (207)       2   Data0   Remote Addr   Remote Response Data0       3   Data1   Remote Command   Remote Response Data1       4   Data2   Remote Arg0   Remote Response Data2       5   Data3   Remote Arg1   Remote Response Data3       6   Data4   Remote Arg2   Remote Response Data4       7   Data5   Remote Arg3   Remote Response Data5       8   Data6   Remote Status   Remote Response Data6       9   Data7   Remote Checksum1   Remote Checksum1       10   Data8   Remote Checksum2   Remote Checksum2       11   PC Status   Not used   PC Status = 1 | 2 | 3 | 5       12   PC Checksum1   PC Checksum Lo   PC Checksum Lo       13   PC Checksum2   PC Checksum Hi   PC Checksum Hi                  
 
         [0087]    Remote Unit Command-Response Protocol  
         [0088]    Status Codes—Remote Units  
         [0089]    Most remote unit commands have a response comprised of data and a status code. The following table summarizes the status codes that are used on response packets:  
                                           HEX   DEC   Code   Description                   0x01   001   Success/OK   Success       0x40   064   Over Current   Valve current limit exceeded: less than ‘50’                   count for ˜100 ms.       0x41   065   Short Circuit   Valve current limit exceeded: less than ‘50’                   count in 2 ms.       0x42   066   Open circuit   No measurable valve current: greater than                   ‘220’ in 2 ms.       0x43   067   I2C Error   Communication error with I2C device                   (EEPROM, .)       0x44   068   Illegal   Unknown command.               Command       0x45   069   Command   Unable to do command (attempted to write               Rejected   to EEPROM without an unlock first).                  
 
         [0090]    Commands—Remote Units  
         [0091]    The following tables define the first set of commands that are used with several of the remote units that implement the irrigation control system.  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ResetRemoteDevice   Returns the remote device to a power up state. Only EEPROM           information is preserved. Implemented with watchdog timer.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Global or Remote Address   No reply       1   Command   0x01       2   Arg0   X       3   Arg1   X       4   Arg2   X       5   Arg3   X       6   Status   X       7   Checksum1   Checksum Lo       8   Checksum2   Checksum Hi            TestRemoteChannel   Will return the times (counts) for bits 0-5 of byte3 that is           received by the remote unit.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0xFF       1   Command   0x02   Bit0 count       2   Arg0   X   Bit1 count       3   Arg1   Test Code   Bit2 count       4   Arg2   X   Bit3 count       5   Arg3   X   Bit4 count       6   Status   X   Bit5 count       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            ReadRemoteVersion   This returns the version and type information for the remote           device.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0xFF       1   Command   0x03   0x03       2   Arg0   X   Minor Version       3   Arg1   X   Major Version       4   Arg2   X   Minor Type       5   Arg3   X   Major Type       6   Status   X   Status = 1 | 64       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            ReadSerialNumber   Reads the serial number from the remote device. If global,           devices back off when they detect a possible collision, allowing           a single unit to complete successfully.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address or Global   0xFF       1   Command   0x04   0x04       2   Arg0   X   Serial Number 0       3   Arg1   X   Serial Number 1       4   Arg2   X   Serial Number 2       5   Arg3   X   Serial Number 3       6   Status   X   Status = 1 | 64 | 67       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            GetRemoteStatus   Returns status and error counts from remote device.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0XFF       1   Command   0x05   0x05       2   Arg0   X   2-Wire Checksum Error Count       3   Arg1   X   2-Wire Frame Error Count       4   Arg2   X   2-Wire Illegal Command Count       5   Arg3   X   2-Wire Collision Count       6   Status   X   Status = 1 | 64       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            GetStatusAndClear   Returns status and error counts from remote device, and then           clears them.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0xFF       1   Command   0x06   0x06       2   Arg0   X   2-Wire Checksum Error Count       3   Arg1   X   2-Wire Frame Error Count       4   Arg2   X   2-Wire Illegal Command Count       5   Arg3   X   2-Wire Collision Count       6   Status   X   Status = 1 | 64       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            ReadRemotePower   Reads the current and voltage information from the unit.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0xFF       1   Command   0x07   0x07       2   Arg0   X   Current Lo       3   Arg1   X   Current Hi       4   Arg2   X   Volts Lo       5   Arg3   X   Volts Hi       6   Status   X   Status = 1 | 64       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            TurnValveOn   Turns on a valve at the addressed remote unit.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0XFF       1   Command   0x08   0x08       2   Arg0   X   Current Lo (2 ms wait)       3   Arg1   X   Current Hi (2 ms wait)       4   Arg2   X   Volts Lo (2 ms wait)       5   Arg3   X   Volts Hi (2 ms wait)       6   Status   X   Status = 1 | 64 | 65 | 66       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            TurnValveListOn   Turns on a valve at the addressed remote units.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Global Address (0x00)   No Reply       1   Command   0x09       2   Arg0   Remote Addr1       3   Arg1   Remote Addr2       4   Arg2   Remote Addr3       5   Arg3   Remote Addr4       6   Status   Remote Addr5       7   Checksum1   Checksum Lo       8   Checksum2   Checksum Hi            TurnValveOff   Turns off a valve at the addressed remote unit.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0xFF       1   Command   0x0A (10)   0x0A       2   Arg0   X   X       3   Arg1   X   X       4   Arg2   X   X       5   Arg3   X   X       6   Status   X   Status = 1 | 64       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            TurnAllValvesOff   Turns off a valve at the addressed remote unit.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Global Address (0x00)   No Reply       1   Command   0x0B (11)       2   Arg0   X       3   Arg1   X       4   Arg2   X       5   Arg3   X       6   Status   X       7   Checksum1   Checksum Lo       8   Checksum2   Checksum Hi            ReadSensorSet1   Reads the first set of Sensor values from the unit.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0xFF       1   Command   0x0C (12)   0x0C       2   Arg0   X   Temperature Lo  Pressure Lo       3   Arg1   X   Temperature Hi  Pressure Hi       4   Arg2   X   Moisture Lo  Flow Lo       5   Arg3   X   Moisture Hi  Flow Hi       6   Status   X   Status = 1 | 64 | 67       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            EchoPacket   This just returns the identical packet.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0xFF       1   Command   0x0D (13)   0x0D (13)       2   Arg0   X   X       3   Arg1   X   X       4   Arg2   X   X       5   Arg3   X   X       6   Status   X   X       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            UnlockRemote   Unlocks the remote unit for programming address or serial number.           The Remote addressed device will be activated. There is a 2           second timeout on this unlock. Response to base unit only on           global address (factory).            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Addr or Global [port 1]   0xFF       1   Command   0x11 (17)   0x11 (17)       2   Arg0   X   Version Minor       3   Arg1   X   Version major       4   Arg2   X   Type Minor       5   Arg3   X   Type Major       6   Status   X   Status = 1 | 64 | 68       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            UnlockSerialNumber   Unlocks the remote unit for programming address or serial number.           The Remote address is “Global” and the unit matching the Serial           number is activated. There is a 2 second timeout on this unlock.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Global (0x00)   0xFF       1   Command   0x12 (18)   0x12 (18)       2   Arg0   Serial 0 (global = valve port)   Version Minor       3   Arg1   Serial 1 (global = valve port)   Version major       4   Arg2   Serial 2 (global = valve port)   Type Minor       5   Arg3   Serial 3 (global = valve port)   Type Major       6   Status   X   Status = 1 | 64 | 68       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            WriteAddress   Writes the address to the remote unit that is unlocked by the           UnlockRemote command. The unit then returns to a locked state.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Global (0x00)   0xFF       1   Command   0x13 (19)   0x13 (19)       2   Arg0   Remote Address   Version Minor       3   Arg1   X   Version major       4   Arg2   X   Type Minor       5   Arg3   X   Type Major       6   Status   X   Status = 1 | 64 | 67 | 68       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            WriteTempAddress   Writes the address to the remote unit that is unlocked by the           UnlockRemote command. The unit then returns to a locked state.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Global (0x00)   No Response       1   Command   0x14 (20)       2   Arg0   X       3   Arg1   X       4   Arg2   X       5   Arg3   X       6   Status   X       7   Checksum1   Checksum Lo       8   Checksum2   Checksum Hi            SetChannelParams   Sets 2-wire channel communication parameters for the remote unit.           Values are kept in the EEPROM.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0XFF       1   Command   0x15 (21)   0x15 (21)       2   Arg0   Precomp Count (# of 1.6 us)   Precomp Count (# of 1.6 us)       3   Arg1   Valve On Count   Valve On Count       4   Arg2   Valve Off Count   Valve Off Count       5   Arg3   Valve Startup Count   Valve Startup Count       6   Status   X   Status = 1 | 64 | 67 | 68       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            SleepSerialNumber   This puts the remote device into sleep mode. The remote device           can only wake up with a Reset or by power cycling the 2-wire net.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Global (0x00)   0XFF       1   Command   0x16 (22)   0x16 (22)       2   Arg0   Serial Number 0   Minor Version       2   Arg1   Serial Number 1   Major Version       4   Arg2   Serial Mumber 2   Minor Type       5   Arg3   Serial Number 3   Major Type       6   Status   X   Status = 1 | 64       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi            ReadChannelParams   This reads the channel parameters from the EEPROM and returns           them.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Remote Address   0xFF       1   Command   0x17 (23)   0x17 (23)       2   Arg0   X   Precomp Count (# of 1.6 us)       3   Arg1   X   Valve On Count       4   Arg2   X   Valve Off Count       5   Arg3   X   Valve Startup Count       6   Status   X   Status = 1 | 64 | 67 | 68       7   Checksum1   X   Checksum Lo       8   Checksum2   X   Checksum Hi            WriteSerialNumber   Factory Only. Writes the serial number to the remote unit that           is unlocked by the UnlockRemote command. The unit then returns           to a locked state.            #   Definition   Sent to Remote Unit   Returned to Base Unit               0   RemoteAddr   Global (0x00)   0xFF       1   Command   0x7F (127)   0x7F (127)       2   Arg0   Serial Number 0   Serial Number 0       3   Arg1   Serial Number 1   Serial Number 1       4   Arg2   Serial Number 2   Serial Number 2       5   Arg3   Serial Number 3   Serial Number 3       6   Status   X   Status = 1 | 64 | 67 | 68       7   Checksum1   Checksum Lo   Checksum Lo       8   Checksum2   Checksum Hi   Checksum Hi                  
 
         [0092]    Wide-Area Messaging System  
         [0093]    [0093]FIG. 13 shows a block diagram of the wide-area messaging system. There are many monitoring and control systems that do an adequate job in an isolated and stand-alone environment. There are many people who need to manage multiple systems at several different locations. This invention allows a person to receive regular communications about the status of irrigation and HVAC systems at multiple locations without having to visit each location to verify the systems status. At a single location, a single computer (or multiple computers or controllers) will manage the control and monitoring of a supported function like irrigation or HVAC. These computers will report into a central computer on a regular basis with status, alerts, operational data, configuration data, and to check for modifications to configurations or updates to software. These communications will use the Internet, and will use standard protocols with an option for encryption if the user has a security need. The central computer will consolidate the information and will generate reports as configured by the user, and will distribute these reports on a regular schedule. Alerts and site errors that require immediate attention will generate an immediate communication. A method of designating distribution lists for different classes of communication will allow messages to be directed to specific individuals or groups of individuals that have a business need for the report or communication. If a computer or controller fails to report as scheduled, the regular operation report will have that indicated or optionally a specific message can be generated and sent to the maintenance person. The central computer will also provide a HTTP connection that will allow each authorized person to view the consolidated data and operation reports for his sites and services. Through the HTTP connection and with a standard browser, changes to the operational properties for sites can be made and then downloaded to the corresponding computers or controllers as they check in on their scheduled basis.  
         [0094]    Remote Control  
         [0095]    [0095]FIG. 14 shows a diagram of how a user can interact with an irrigation control computer using a standard cell phone, or other phone. The user can dial up the computer over a phone line, the computer answers using a voice modem. The computer then instructs the user to enter a security code. Once the security code is correct, the user can execute application specific commands using the keypad, while receiving prompts and information back in normal voice instructions. In an irrigation application, this allows a maintenance person to test zones and other basic operations while away from the controlling computer. Several systems provide this function through keypads on specialized radios, but with the ubiquitous nature of cell phones, these provide a much more useable and available vehicle for remote control of these types of systems.