CA1233546A - Remote load control relay processor - Google Patents
Remote load control relay processorInfo
- Publication number
- CA1233546A CA1233546A CA000481849A CA481849A CA1233546A CA 1233546 A CA1233546 A CA 1233546A CA 000481849 A CA000481849 A CA 000481849A CA 481849 A CA481849 A CA 481849A CA 1233546 A CA1233546 A CA 1233546A
- Authority
- CA
- Canada
- Prior art keywords
- relay
- relays
- transceiver
- loads
- power
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired
Links
Landscapes
- Selective Calling Equipment (AREA)
Abstract
REMOTE LOAD CONTROL RELAY PROCESSOR
ABSTRACT OF THE DISCLOSURE
An improved relay actuating processor for a system that remotely control distributed electrical loads.
The relay module is a part of a transceiver decoder that receives commands from a central controller for controlling the state of latching relays for controlling the power circuits of the loads. The improvements include: the use of a progressively variable pulse length relay actuation signal to shorten perceived response time; the provision of automatic power and reset detective and annunciation;
a matrix arrangement for pulsing relays that minimizes the number of relay drivers required for a given number of relays to be controlled; utilizing a power clamp limiting circuit for protecting relay drivers from overcurrent;
automatic verification of a control actuation command from the central controller; the use of an improved watch dog reset including AC coupling; warning (flicker) mode operation which provides a warning that lights in a given area will soon go off; and a multi-mode reset arrangement permitting the automatic testing of relays.
ABSTRACT OF THE DISCLOSURE
An improved relay actuating processor for a system that remotely control distributed electrical loads.
The relay module is a part of a transceiver decoder that receives commands from a central controller for controlling the state of latching relays for controlling the power circuits of the loads. The improvements include: the use of a progressively variable pulse length relay actuation signal to shorten perceived response time; the provision of automatic power and reset detective and annunciation;
a matrix arrangement for pulsing relays that minimizes the number of relay drivers required for a given number of relays to be controlled; utilizing a power clamp limiting circuit for protecting relay drivers from overcurrent;
automatic verification of a control actuation command from the central controller; the use of an improved watch dog reset including AC coupling; warning (flicker) mode operation which provides a warning that lights in a given area will soon go off; and a multi-mode reset arrangement permitting the automatic testing of relays.
Description
~2~335~6 REMOTE LOAD CONTROL RELAY PROCESSOR
BACKGROUND OF THE INVENTION
There has been developed a system for remotely controlling electrical loads distributed over a wide area (such as a large office building or factory) from a microprocessor based central controller. That system is disclosed in U.S. Patent No. 4,367,414, issued January 4, 1983 to Miller et al. In theiMiller '414 system, control instructions are issued by the central controller 50 and - are -transmitted to various transceiver-decoders 56 via a twisted pair cable 58 cons~ituting a bi-directional communications channel. A particular transceiver-decoder that is "addressed" carries out the command by actuating one or more particular relays to make or break an electrical connection as desired. The central controller issues its control instructions in accordance with a predetermined schedule, in response to a measured parameter (such as light level or temperature) or in response to a user switch actuation sensed by a switch processor in the transceiver decoder and transmitted to the central controller over the bi-directional communications link, or in response to a user command telephonically transmitted to the central controller.
Although the aforementioned U.S. Patent 4,367,414 system operates effectively as disclosed, further enhance-ments are now possible. This patent is directed toimprovements in the transceiver-decoder, particularly to a - : : . . -3L~33S~;
BACKGROUND OF THE INVENTION
There has been developed a system for remotely controlling electrical loads distributed over a wide area (such as a large office building or factory) from a microprocessor based central controller. That system is disclosed in U.S. Patent No. 4,367,414, issued January 4, 1983 to Miller et al. In theiMiller '414 system, control instructions are issued by the central controller 50 and - are -transmitted to various transceiver-decoders 56 via a twisted pair cable 58 cons~ituting a bi-directional communications channel. A particular transceiver-decoder that is "addressed" carries out the command by actuating one or more particular relays to make or break an electrical connection as desired. The central controller issues its control instructions in accordance with a predetermined schedule, in response to a measured parameter (such as light level or temperature) or in response to a user switch actuation sensed by a switch processor in the transceiver decoder and transmitted to the central controller over the bi-directional communications link, or in response to a user command telephonically transmitted to the central controller.
Although the aforementioned U.S. Patent 4,367,414 system operates effectively as disclosed, further enhance-ments are now possible. This patent is directed toimprovements in the transceiver-decoder, particularly to a - : : . . -3L~33S~;
- 2 - LD-9147 relay control module for energizing remote con-trol relays.
The enhanced transceiver-decoder is configured in a modular fashion. Separate switch and relay "modules"
are provided to allow a user of the product to configure a remote control panel to meet his specific application needs. This modular construction is field adaptable allowing an electrician who has no electronic expertise to easily install, replace and service the panels. To do this, small modules are developed so that they can be easily handled and configured in the field. Therefore, a reduction in component count over the Miller aforementioned U.S~ Patent 4,367,~14 arrangement is achieved for driving the same amount of remote control relay loads. The response of a transceiver to relay actuation commands from the central controller is improved. The response time is increased to improve human acceptable perception of relay actuation. Furthermore, compensation for parametric shifts in relay characteristics is made to reduce the propensity for perceived failures of the remote control relay. This compensation is made in the actuating signal provided to the relay.
There is also provided improved protection circui-try to insure that faulty relays do not destroy the more expensive electronic modules. Since these remote control relays are actuated by electronic circuitry means, a short in the relay or an external wire can cause excessive current to be delivered causing a self-destruction of the electronic device. A power limiting circuit is needed which reduces this propensity and can annunciate relay faults so they can be traced and quickly replaced. Improved diagnostics is also provided to insure the integrity of the load actuation data base and speed the tracing of system faults.
There is also provided a special warning pulse sequence (flicker or warning mode operation) to warn the remote occupant that lights are about to go off. This will give the occupant time -to call the computer to keep ' ' ` ' .
~L233~
The enhanced transceiver-decoder is configured in a modular fashion. Separate switch and relay "modules"
are provided to allow a user of the product to configure a remote control panel to meet his specific application needs. This modular construction is field adaptable allowing an electrician who has no electronic expertise to easily install, replace and service the panels. To do this, small modules are developed so that they can be easily handled and configured in the field. Therefore, a reduction in component count over the Miller aforementioned U.S~ Patent 4,367,~14 arrangement is achieved for driving the same amount of remote control relay loads. The response of a transceiver to relay actuation commands from the central controller is improved. The response time is increased to improve human acceptable perception of relay actuation. Furthermore, compensation for parametric shifts in relay characteristics is made to reduce the propensity for perceived failures of the remote control relay. This compensation is made in the actuating signal provided to the relay.
There is also provided improved protection circui-try to insure that faulty relays do not destroy the more expensive electronic modules. Since these remote control relays are actuated by electronic circuitry means, a short in the relay or an external wire can cause excessive current to be delivered causing a self-destruction of the electronic device. A power limiting circuit is needed which reduces this propensity and can annunciate relay faults so they can be traced and quickly replaced. Improved diagnostics is also provided to insure the integrity of the load actuation data base and speed the tracing of system faults.
There is also provided a special warning pulse sequence (flicker or warning mode operation) to warn the remote occupant that lights are about to go off. This will give the occupant time -to call the computer to keep ' ' ` ' .
~L233~
- 3 - LD-9147 the lights on.
SUMMARY OF THE INVENTION
This invention relates to improvements in transceiver-decoders 56 shown in FIGURE 1 of Miller aforementioned U.S. Patent 4,367,414. Now, each transceiver-decoder has separate processors for carrying out switch functions (sensing a condition charger or a user initiated contact closure and sending a message to central controller 50 and relay control functions (receiving a command from central controller 50 and controlling in response to that command, one or more relays in the power circuits of electrical loads to be controlled.
The transceivers according to this invention have some physical and functional differences from those of 15 the Miller aforementioned U.S. Patent 4,367,414. The notable physical and functional improvements are listed below:
Power Supply A universal power input circuit is provided for all products rated for an input voltage range of 100VAC
to 347VAC (RMS) at 47 to 100 Hz.
The power dissipation of the transceiver is kept as low as possible to eliminate the need of costly cooling techniques.
Watchdog Reset A watchdog reset circuit is provided to reset the microcomputer chip in the unlikely event noise causes it to adversely execute erroneous instructions and latchings in a closed loop. The watchdog reset electrically resets the computer causing it to execute a power-up sequence described below.
Relay Control Protocol The following is the protocol to be used when energizing an RR7 type latching relay on a given transceiver.
Only one relay is to be enabled at any given time. This will ensure the maintenance of proper design margins on the relay driver electronics.
~L~3~
SUMMARY OF THE INVENTION
This invention relates to improvements in transceiver-decoders 56 shown in FIGURE 1 of Miller aforementioned U.S. Patent 4,367,414. Now, each transceiver-decoder has separate processors for carrying out switch functions (sensing a condition charger or a user initiated contact closure and sending a message to central controller 50 and relay control functions (receiving a command from central controller 50 and controlling in response to that command, one or more relays in the power circuits of electrical loads to be controlled.
The transceivers according to this invention have some physical and functional differences from those of 15 the Miller aforementioned U.S. Patent 4,367,414. The notable physical and functional improvements are listed below:
Power Supply A universal power input circuit is provided for all products rated for an input voltage range of 100VAC
to 347VAC (RMS) at 47 to 100 Hz.
The power dissipation of the transceiver is kept as low as possible to eliminate the need of costly cooling techniques.
Watchdog Reset A watchdog reset circuit is provided to reset the microcomputer chip in the unlikely event noise causes it to adversely execute erroneous instructions and latchings in a closed loop. The watchdog reset electrically resets the computer causing it to execute a power-up sequence described below.
Relay Control Protocol The following is the protocol to be used when energizing an RR7 type latching relay on a given transceiver.
Only one relay is to be enabled at any given time. This will ensure the maintenance of proper design margins on the relay driver electronics.
~L~3~
- 4 - I,D 91~7 The relays are to be individually pulsed with a minimum of 26 VDC for 3 progressive pulsing cycles as follows:
Cycle #1 12 msec's per relay Cycle ~2 24 msec's Cycle #3 48 msecis The progressive control sequence provides the utmost in system throughout while compensating for an inherent failure mode in the relay. Since the nature of the centralized control system is based on specifying the state of all 16 relays of a transceiver, each relay is to be individually cycled in numerical order from number 1 to 16. The first sequencial cycling of these relays is defined as "cycle ~1" with the indicate timing above. That is, relay #1 is pulsed for 12 msec's, then relay #2 to relay #16. Therefore, it will taken less than 200 msec's to pulse all 16 relays of a transceiver in cycle #1. Since all normal relays will respond in less than 8 msec's, the throughput of the system will be maintained compared to the present product response of 200 to 400 msec's to pulse all 16 relays.
After completing cycle #1 of 12 msec's per relay, cycle ~2 of 24 msec's and #3 of 48 msec's are to follow in the same sequence. The auxiliary cycles 2 and 3 are needed to compensate for a shift in the relays operating characteristics. A fault in the relay can be compensated for by increasing the time duration of the energizing pulse to the relays. The auxiliary cycles are an attempt to reduce perceived failures due to relay faults. A relay that fails to operate during cycle #1 may be caught during - the longer auxiliary cycles 2 a and 3. Therefore, it can take approximately 1.4 seconds to fully complete the cycling of all relays in a 16 relay bank of a transceiver.
For a 32 relay (double address) transceiver, the relay processing is to be delivered in a similar fashion as indicated above. However, to ensure a ~'~3~3~
Cycle #1 12 msec's per relay Cycle ~2 24 msec's Cycle #3 48 msecis The progressive control sequence provides the utmost in system throughout while compensating for an inherent failure mode in the relay. Since the nature of the centralized control system is based on specifying the state of all 16 relays of a transceiver, each relay is to be individually cycled in numerical order from number 1 to 16. The first sequencial cycling of these relays is defined as "cycle ~1" with the indicate timing above. That is, relay #1 is pulsed for 12 msec's, then relay #2 to relay #16. Therefore, it will taken less than 200 msec's to pulse all 16 relays of a transceiver in cycle #1. Since all normal relays will respond in less than 8 msec's, the throughput of the system will be maintained compared to the present product response of 200 to 400 msec's to pulse all 16 relays.
After completing cycle #1 of 12 msec's per relay, cycle ~2 of 24 msec's and #3 of 48 msec's are to follow in the same sequence. The auxiliary cycles 2 and 3 are needed to compensate for a shift in the relays operating characteristics. A fault in the relay can be compensated for by increasing the time duration of the energizing pulse to the relays. The auxiliary cycles are an attempt to reduce perceived failures due to relay faults. A relay that fails to operate during cycle #1 may be caught during - the longer auxiliary cycles 2 a and 3. Therefore, it can take approximately 1.4 seconds to fully complete the cycling of all relays in a 16 relay bank of a transceiver.
For a 32 relay (double address) transceiver, the relay processing is to be delivered in a similar fashion as indicated above. However, to ensure a ~'~3~3~
- 5 - LD-9147 reasonable system throughout or response an alternating cycling method can be used depending on which address is received first. The addressed that is received first is the one processed first. Once a cycle for a given bank of 16 relays is started, i.e. cycle #1, 2 or 3, the transceiver must complete the cycle before a decision can be made to start cycling the other band of 16 relays.
If a subse~uent transmission is received for the other bank of relays while the first bank is in a relay processing cycle, the other bank is to immediately start relay processing with cycle ~1 upon the completion of the present cycle of the first bank of relays. Once the other bank of relays finishes its first cycle, the next cycle #2 or #3 is to continue on the first bank of relays. This process of alternating relay banks and incrementing to the next cycle continues until both banks have completed all three relay processing cycles.
When processing individual relay commands it is acceptable to use one pulse of 48 msec's in duration per relay.
Relay'Drivex Circuit Considerati'ons .
The relay drivers are derated over the operating temperature range to ensure that a minimum of 20% design margin is maintained. Furthermore, the relay driver circuits are protected against short circuits in relay wiring with the appropriate current limiting to ensure that safe operating limits are not violated. Appropriate noise filtering and static discharge protection must be included in the design to protect the integrity of the transceiver board. Relays can be remotely mounted up to 500 fees away from the transceiver panel via the standard 20 AWG remote control wire.
The following is a list of particular objectives of the present invention relating to the relay module.
1. To provide a pulsed output matrix process for relay actuation. An 8 x 8 source/sink switching . .
3~
If a subse~uent transmission is received for the other bank of relays while the first bank is in a relay processing cycle, the other bank is to immediately start relay processing with cycle ~1 upon the completion of the present cycle of the first bank of relays. Once the other bank of relays finishes its first cycle, the next cycle #2 or #3 is to continue on the first bank of relays. This process of alternating relay banks and incrementing to the next cycle continues until both banks have completed all three relay processing cycles.
When processing individual relay commands it is acceptable to use one pulse of 48 msec's in duration per relay.
Relay'Drivex Circuit Considerati'ons .
The relay drivers are derated over the operating temperature range to ensure that a minimum of 20% design margin is maintained. Furthermore, the relay driver circuits are protected against short circuits in relay wiring with the appropriate current limiting to ensure that safe operating limits are not violated. Appropriate noise filtering and static discharge protection must be included in the design to protect the integrity of the transceiver board. Relays can be remotely mounted up to 500 fees away from the transceiver panel via the standard 20 AWG remote control wire.
The following is a list of particular objectives of the present invention relating to the relay module.
1. To provide a pulsed output matrix process for relay actuation. An 8 x 8 source/sink switching . .
3~
- 6 - LD-9147 matrix is provided to control up to 32 remote control relays. This allows the energizing of 64 separate soils utilizing just two monolithic integrated circuits. These two circuits con-tain 8 sink drivers for sinking current and 8 source drivers for sourcing current to each of the selected coils.
2. The pulsed output matrix relay control scheme provides the ability to group two wires with a single source/sink combination selecting one out of the 64 relay coils. Therefore, there are 64 combinations of two wires out of 96 wires chosen by this 8 x 8 selection matrix. This reduces device count providing a smaller size highly reliable lower cost product offering while allowing modular construction with fewer interconnecting points~ The ability to select 2 out of 96 points to control 64 relays is novel and distinguishable over the prior art where individual coils were separately energized.
3. Provide a means to actuate relays utilizing a progressive variable pulse length actuation signal.
This progressive variable pulse length signal to actuate momentarily controlled remote con-trol latching relays will provide the utmost in system throughput while compensating for the varying electromechanical characteristics of the relay. The progressive pulse width process impresses a multiplicity of pulses of varying widths to drive a given relay. These pulses compensate for shifts in mechanical characteristics of the relay. The variable length of each pulse cycle, as described below, allows for a fast throughput since all good relays will respond in the first cycle. Those relays that have experienced a parametric shift will be caught in subsequent cycles without penalizing the overall response of the system. Therefore, both short pulses for throughput purposes and long pulses to compensate for shifting relay characteristics are provided to drive the relay to insure the utmost in system throughput and response while reducing the propensity for ' ' ~3~
2. The pulsed output matrix relay control scheme provides the ability to group two wires with a single source/sink combination selecting one out of the 64 relay coils. Therefore, there are 64 combinations of two wires out of 96 wires chosen by this 8 x 8 selection matrix. This reduces device count providing a smaller size highly reliable lower cost product offering while allowing modular construction with fewer interconnecting points~ The ability to select 2 out of 96 points to control 64 relays is novel and distinguishable over the prior art where individual coils were separately energized.
3. Provide a means to actuate relays utilizing a progressive variable pulse length actuation signal.
This progressive variable pulse length signal to actuate momentarily controlled remote con-trol latching relays will provide the utmost in system throughput while compensating for the varying electromechanical characteristics of the relay. The progressive pulse width process impresses a multiplicity of pulses of varying widths to drive a given relay. These pulses compensate for shifts in mechanical characteristics of the relay. The variable length of each pulse cycle, as described below, allows for a fast throughput since all good relays will respond in the first cycle. Those relays that have experienced a parametric shift will be caught in subsequent cycles without penalizing the overall response of the system. Therefore, both short pulses for throughput purposes and long pulses to compensate for shifting relay characteristics are provided to drive the relay to insure the utmost in system throughput and response while reducing the propensity for ' ' ~3~
- 7 - LD-9147 perceived relay failures. In this manner all 16 relays of a transceiver can be energized with 200 msec. In a 32 relay panel all 32 relays can be energized in 400 msec as opposed to 1.6 sec in the prior art.
4. Provide a staggering relay actuation scheme increasing the response of a double address (32 relays) transceiver module. It is possible for a transceiver to be configured as two logical 16 relay addresses. Since the relay module is physically one device bu-t responding to two unique addresses, as described in the prior art, the throughput of the relays waiting to be processed in the second address often is forced to wait for the completion of the processing of the first address. A staggering of the first cycle of relay actuation has been provided to allow a faster throughput of all relays on a given transceiver panel.
5. To provide a relay actuation power drive clamp and current foldback to protect the driver circuits.
The invention provides a power limiting circuit to protect the relay drivers so that they operate within safe operating ranges. This eliminates the need for further heat sinking and provides fault tolerance to handle faults due to installation errors that may result in shor-t circuits on relay driver lines. This short circuit may be caused by installation problems or through faulty controlled devices such as relays. In addition to a power clamp limiting the power delivered to drive the relay a current foldback means is provided to shut off the relay drivers - upon the sensing of an over-current condition. The current foldback technique reduces the need for power dissipating elements and further increases the reliability of the driver electronics. Therefore, once a fault is detected it is immedia-tely removed from the - circuit. An additional overcurrent and undercurrent sensor is provided to allow the detection and annunciation of relay driver line faults caused by faulty relays or .
'~
.
- : ~ - ' ' - .-- : , . ~. :
~;33~
~ 8 - LD-91~7 short circuits. This annunciation is available through -the central controller means to allow easy and quick fault isolation.
6. To provide an automatic feedback and verification of relay actuation. A means has been provided to verify proper relay actuation at the completion of the relay actuation process. This automatic verification is self-initiated by the transceiver and thereby eliminates the need for polling of relay states by the central controller means. This reduces communica-tion traffic on the data link connecting all transceivers back to the central controller. Furthermore, over-current detection and relay fault detection are also automatically provided and annunciated over the data link back to the central controller so that system problems can be easily traced. Fault detection and traceability are greatly enhanced by this automatic annunciation of relay actuation.
7. To provide an automatic power-up and reset detection annunciation. Upon the application of power or ` 20 through an internal or externally generated reset the transceiver module immediately communicates its condition back to the central controller means. This annunciation of power-up reset conditions will allow the central - controller to correct relay states and insure data base agreement and integrity between the central controller and remotely located transceiver panels. The automatic annunciation of system resets can detect remote use or tampering and provide a self-correcting function insuring that relay states are in the pre-programmed condition.
The automatic reset annunciation will further allow the central controller means to detect transceiver malfunctions and annunciate problems. Furthermore, it allows the restoration of the transceiver panels to the proper state.
4. Provide a staggering relay actuation scheme increasing the response of a double address (32 relays) transceiver module. It is possible for a transceiver to be configured as two logical 16 relay addresses. Since the relay module is physically one device bu-t responding to two unique addresses, as described in the prior art, the throughput of the relays waiting to be processed in the second address often is forced to wait for the completion of the processing of the first address. A staggering of the first cycle of relay actuation has been provided to allow a faster throughput of all relays on a given transceiver panel.
5. To provide a relay actuation power drive clamp and current foldback to protect the driver circuits.
The invention provides a power limiting circuit to protect the relay drivers so that they operate within safe operating ranges. This eliminates the need for further heat sinking and provides fault tolerance to handle faults due to installation errors that may result in shor-t circuits on relay driver lines. This short circuit may be caused by installation problems or through faulty controlled devices such as relays. In addition to a power clamp limiting the power delivered to drive the relay a current foldback means is provided to shut off the relay drivers - upon the sensing of an over-current condition. The current foldback technique reduces the need for power dissipating elements and further increases the reliability of the driver electronics. Therefore, once a fault is detected it is immedia-tely removed from the - circuit. An additional overcurrent and undercurrent sensor is provided to allow the detection and annunciation of relay driver line faults caused by faulty relays or .
'~
.
- : ~ - ' ' - .-- : , . ~. :
~;33~
~ 8 - LD-91~7 short circuits. This annunciation is available through -the central controller means to allow easy and quick fault isolation.
6. To provide an automatic feedback and verification of relay actuation. A means has been provided to verify proper relay actuation at the completion of the relay actuation process. This automatic verification is self-initiated by the transceiver and thereby eliminates the need for polling of relay states by the central controller means. This reduces communica-tion traffic on the data link connecting all transceivers back to the central controller. Furthermore, over-current detection and relay fault detection are also automatically provided and annunciated over the data link back to the central controller so that system problems can be easily traced. Fault detection and traceability are greatly enhanced by this automatic annunciation of relay actuation.
7. To provide an automatic power-up and reset detection annunciation. Upon the application of power or ` 20 through an internal or externally generated reset the transceiver module immediately communicates its condition back to the central controller means. This annunciation of power-up reset conditions will allow the central - controller to correct relay states and insure data base agreement and integrity between the central controller and remotely located transceiver panels. The automatic annunciation of system resets can detect remote use or tampering and provide a self-correcting function insuring that relay states are in the pre-programmed condition.
The automatic reset annunciation will further allow the central controller means to detect transceiver malfunctions and annunciate problems. Furthermore, it allows the restoration of the transceiver panels to the proper state.
8. To provide a multi-mode reset for providing power-ON reset, under-voltage detection and clearing, CPU
~L~33~
- g - LD-91~7 watchdog reset and manually initiated rese-t of the transceiver electronics and/or relay states. A manually initiated reset is provided to provide a backup control and a circuit checkout function during installation. The manual reset function has 3 basic modes of operation.
They are: group ON/OFF control, individual circuit control, and automatic cycling of individual circuit controls. The individual circuit control allows the installer to insure the proper circuit connection to the numbered relays con-trolled by the transceiver panel. The group ON/OFFcontrol provides the user with the ability to force the relays into a desired state backing up the central controller means. A watchdog reset is provided to force the computing device into a known state. This watchdog reset circuit is initiated after an absence of the sequential device missing a prede-termined cycle.
Furthermore, an under-voltage detection can also trip this watchdog circuit protecting against erroneous operation during a power brown-out. A reset apparatus is A.C. coupled to detect missing pulses using a hysteresis compensated comparator connected to an oscillator in a wired ORed tied to the under-voltage detection ANDed with the pulse reset input. The A.C.
coupling of this watchdog reset function insures that a malfunction of the sequential Mealy-Moore machine will not defeat the reset function since it is independent of the D.C. steady state of the device. Sequential machines would fail to operate in a proper program se~uence which would cause its input/output pins to remain in a steady state condition. The prolonged continuous output will trigger the reset.
~L~33~
- g - LD-91~7 watchdog reset and manually initiated rese-t of the transceiver electronics and/or relay states. A manually initiated reset is provided to provide a backup control and a circuit checkout function during installation. The manual reset function has 3 basic modes of operation.
They are: group ON/OFF control, individual circuit control, and automatic cycling of individual circuit controls. The individual circuit control allows the installer to insure the proper circuit connection to the numbered relays con-trolled by the transceiver panel. The group ON/OFFcontrol provides the user with the ability to force the relays into a desired state backing up the central controller means. A watchdog reset is provided to force the computing device into a known state. This watchdog reset circuit is initiated after an absence of the sequential device missing a prede-termined cycle.
Furthermore, an under-voltage detection can also trip this watchdog circuit protecting against erroneous operation during a power brown-out. A reset apparatus is A.C. coupled to detect missing pulses using a hysteresis compensated comparator connected to an oscillator in a wired ORed tied to the under-voltage detection ANDed with the pulse reset input. The A.C.
coupling of this watchdog reset function insures that a malfunction of the sequential Mealy-Moore machine will not defeat the reset function since it is independent of the D.C. steady state of the device. Sequential machines would fail to operate in a proper program se~uence which would cause its input/output pins to remain in a steady state condition. The prolonged continuous output will trigger the reset.
9. A method by which sepecified relays would be pulsed off for a short (approx. l sec) period then put back on so as to flick the lights warning the occupant of a light shutoff typically 1 minute later.
These objectives are achieved by providing ~33S~16
These objectives are achieved by providing ~33S~16
- 10 ~ LD-9147 an improved remote load control relay module. The transceiver of the aforementioned Miller U.S. Patent 4,367,414 system is modularized with separate switch, relay and power supply modules. This invention relates to the improvements over the prior art in the relay control module known as a transceiver previously disclosed in the aforementioned Miller U.S. Patent 4,367,414. The invention provides a new method and apparatus to energize remote control relays to increase the system's reliability, lower product cost and increase the overall product's response -to control actuation commands. This relay transceiver is configured so as to plug into a mother board of a transceiver-decoder and is capable of controlling 16 or 32 relays. As in the aforementioned Miller U.S. Patent 4,367,414 system, the transceiver connects to a low voltage twisted pair data communication line which is routed around a facility connecting the remotely located transceivers or load control processors to the central controller means. The transceiver is responsible for forcing in a relay state as commanded by the central control means.
Furthermore, two way communication is provided to insure verification of relay actuation and annunciation of any system faults. In addition to the new relay control pro-cess, improved diagnostics are included to provide easy fault isolation, detection and annunciation.
BRIEF DESCRIPTION OF T~E DRAWINGS
FIGURE 1 is a block diagram of the relay module according to the present invention;
FIGURE 2 is a schematic diagram of a latching relay of the type to be operated by the relay module according to the present invention;
FIGURE 3 (including FIGURES 3a-3c) is a schematic diagram of the relay module with the data line transceiver omitted. A schematic diagram of the data line transceiver portion of the relay module can be 3~
~ L,D-9147 :Eound in the aforementioned Miller U.S. Patent 4,367,414;
FIGURE 4 is a block diagram showing the various functional blocks of the firmware associated with the relay processor (microcomputer) shown in FIGURE l;
FIGURE 5 is a further block diagram illustrating the function of firmware associated with the relay processor (microcomputer) shown in FIGURE l;
FIGURES 6-51 are detailed flow charts illustrating the functions carried out by firmware associated with the relay processor; and APPENDIX 1 is a complete listing of the object code associated with the relay processor which carries the functions illustrated in FIGURES 4-51.
DETAILED DE'SCRIPTION'OF THE PREFERRED EMBODIMENT
.... . _ . . ... .. _ . _ Referring now to FIGURE 1, there is shown a block diagram of the relay module, also known as a "relay output module", according to the present invention.
The central controller (reference numberal 50 shown in FIGURE 1 of the aforementioned Miller U.S.
Patent 4,367,414) communicates with a plurality of transceiver decoders via a bi-directional communication link. In the preferred embodiment, this bi-directional communication link is constituted by a twisted pair 58 (corresponding to twisted pair 58 shown in FIGURE 1 of the aforementioned Miller U.S. Patent 4,367,414). A
relay processor 300, preferably an 8049 microcomputer, receives commands from twisted pair 58 and sends information to the twisted pair via a data line transceiver 400. Data line transceiver 400 was shown in detail in FIGURE 8 of the aforementioned Miller U.S.
Patent 4,367,414 and therefore will not be detailed in schematic form.
Data line transceiver 400 couples relay processor 300 to the common communication link (twisted pair 58) used to transmit serial data to and from the central controller (not shown but corresponding to central ~33~
controller 50 in the aforementloned Miller U.S. Pa-tent 4,367,414). Data line transceiver 400 contains both a receiver and a transmitter to facilitate bi-directional data communication. Both the transmitter and receiver are optically isolated from any ground reference thereby providing a noise immuned balanced driver capable of rejecting common mode disturbances and receiving differential signals. Serial data is transmitted in a similar fashion as described in the aforementioned Miller U.S. Patent 4,367,414 and is received from the aata line over the SID line. Transmitted, output data is impressed onto the data line via the SOD line.
Associated with processor 300 is a watchdog reset circuit 500 including a watchdog timer 500 and associated circuitry. Watchdog reset circuit 500 is - responsible for causing or generating a reset pulse to processor 300 under the following conditions:
A. Power on: when power to the system is first applied.
B. Low Power: when the power to the system falls below a predetermined operating voltage.
C. ~atchdog Time-Out which results when the processor 300 falls to retrlgger the watchdog timer 550 within a predeter-mined time interval. The trigger to the watchdog timer is reset every time processor 300 causes a pulse on the watchdog out line.
This line is AC coupled to the watchdog circuit to insure only transitions cause a reset. By forcing processor 300 to pulse its watchdog output line, it is insured that the system will remain in a determin-istic state. If for any reason processor 300 fails to reset the watchdog -timer - 35 within a predetermined time interval, ~.~3~3$~6 - 13 - I,D-9147 timer 500 will force a reset on the reset line of processor 300 in an attempt to restart it. This will self correct the system to a deterministic state reducing the system's vulnerability to spurious signals.
D. Manual Reset Switch: There is provided a manual reset switch 560 which when activated causes a reset pulse to appear on a reset line 562 and a manual reset line 564. Pro-cessor 300 can execute one of three reset modes or sequences determined by the manual user. A reset pulse is generated periodically until the watchdog reset signal appears acknowledging the proper operation of processor 300. After a reset, processor 300 will enunciate the occurrence on the data line.
A jumper selection matrix 600 is used to select an operating mode of a relay module. This allows a multiplicity of functions to be achieved with essentially one apparatus configuration. By the use of the jumper selection matrix 600, the apparatus can be particularly configured for a special application. The jumpers are:
Wl (not applicable) W2 (not applicable) W3 (not applicable) W4 (communication, new or old format) W5 (not applicable) W6 (16 or 32 relays).
An address input multiplexer 700 provides for the multiplexing of address bits into processor 300.
This allows the multiple use of a common set of input/output lines to processor 300.
Relay source drivers 800 and relay sink drivers 850 together constitute the driver circuitry for operating latching relays ultimately controlling the distributed 33 ~ ~D
~ LD-91~7 electric loads. Drivers 800 and 850 provide a multiplying matrix used to energize 2 out of 96 relay lines from an 8 x 8 driver circuit. This reduces the number of costly interconnections and driver electronics necessary to energize the bank of 32 latching (3 wire) relays. (It is contemplated that the relay driver circuitry will operate latching relays of the type showing schematically in FIGURE 2).
There is provided relay power, driver protect and fault detection circuitry 900. This ~ircuitry regulates the power delivered to the relays. It provides current limiting to protect the relay driver electronics from shorted relays or faults. It also flags processor 300 to alert it to fault conditions on the under and over current lines so that the processor can immedia-tely shut off relay drivers 800 and 850 -to avoid damage and reduce the need for heat sinking of the driver electronics.
Furthermore, processor 300 will enunciate any system fault over the data line.
There is further provided a five volt regulator 950 for supplying power to the logic circuits.
Relay processor 300 functions as a sequential logic machine that is configured by firmware to perform all the control and communication processes discussed above.
Referring now to FIGURE 3 (including FIGURES
3a-3c) there is shown a de-tailed schematic diagram of the relay module shown in block form in FIGURE 1.
Watchdog Circuit 500 Watchdog reset circuit 500 has several functions. The first function is a power-on reset function. The second function is a voltage monitoring function that holds processor 300 in reset whenever its power goes below predetermined limits. The third function is to act as a watchdog for processor 300. In normal operation, processor 300 will send a string of s~;
signals through i-ts Pin 25, the Prog pin, to constantly reset an RC combination. Should the microprocessor get hung up in an endless loop, or get "lost" in its program, the RC combination will time out and provide a series of reset pulses to processor 300, allowing the system to restart without manual intervention by the customer. The watchdog sequence starts with pulses appearing on processor Pin 25. This pin is under software control in the processor. It is directly connected to Pin 9 of U-2 which is an inverter. Inverter U-2 in this case is used as a buff~r drives C-10, a 470 picofarad capacitor which in turn drives the base of Q-10 a 2N2907. When processor 300 signal goes high causing the inverted - bu-ffered signal to go low. The base of Q-10 conducts current pushing a pulse of current into C-7 through the collector of Q-10 and charging C-7. R-15 is the constant determining resistor. The combination of R-15 and C-7 determine how often the pulses must come from the microprocessor to prevent a watchdog reset. In this case, the time constant is 100 milliseconds. R-14 is connected across the base emitter junction of Q-10 and serves to turn off Q-10. CR-2 provides a current path to the current on C-10 when the signal from the buffer inverter is a high lavel going signal. The primary purpose of C-10 is to provide DC isolation of the reset signals from the micro-processor. In this type of coupling it is not the absolute level of the signal from the microprocessor that determines when a watchdog reset occurs, rather it is the period between transitions of the microprocessor signal that determines when a watchdog reset will occur. Assuming a high level voltage on C-7, R-15, this high level voltage appears on the minus input Pin 8 of a comparator U-6.
Since the minus input is at a higher voltage than the positive input, then the output of this comparator will be low. This low level signal is directly connected to the minus input of comparator input Pin 10, another section of U-6, and since in this case the minus input is ~:33~16 less than the positive inpu-t, -the ou-tput of this comparator section on Pin 13 will go into the high impedance state allowing R-13 to pull up the reset line, although delayed by C-18. C-18's prime function is to provide a power-on reset. It will hold the processor invest upon the event of power-on for approximately 500 milliseconds. Should the watchdog pulses cease to occur, Q-10 will stop charging C-7; C-7 will discharge thru R-15 and the voltage on Pin 8 will drop below the voltage on Pin 9 of the comparator, forcing Pin 14 into a high impedance state. R-12 will charge C-6 until the point that the voltage on Pin 10, thus minus input of the comparator, will exceed that of Pin
Furthermore, two way communication is provided to insure verification of relay actuation and annunciation of any system faults. In addition to the new relay control pro-cess, improved diagnostics are included to provide easy fault isolation, detection and annunciation.
BRIEF DESCRIPTION OF T~E DRAWINGS
FIGURE 1 is a block diagram of the relay module according to the present invention;
FIGURE 2 is a schematic diagram of a latching relay of the type to be operated by the relay module according to the present invention;
FIGURE 3 (including FIGURES 3a-3c) is a schematic diagram of the relay module with the data line transceiver omitted. A schematic diagram of the data line transceiver portion of the relay module can be 3~
~ L,D-9147 :Eound in the aforementioned Miller U.S. Patent 4,367,414;
FIGURE 4 is a block diagram showing the various functional blocks of the firmware associated with the relay processor (microcomputer) shown in FIGURE l;
FIGURE 5 is a further block diagram illustrating the function of firmware associated with the relay processor (microcomputer) shown in FIGURE l;
FIGURES 6-51 are detailed flow charts illustrating the functions carried out by firmware associated with the relay processor; and APPENDIX 1 is a complete listing of the object code associated with the relay processor which carries the functions illustrated in FIGURES 4-51.
DETAILED DE'SCRIPTION'OF THE PREFERRED EMBODIMENT
.... . _ . . ... .. _ . _ Referring now to FIGURE 1, there is shown a block diagram of the relay module, also known as a "relay output module", according to the present invention.
The central controller (reference numberal 50 shown in FIGURE 1 of the aforementioned Miller U.S.
Patent 4,367,414) communicates with a plurality of transceiver decoders via a bi-directional communication link. In the preferred embodiment, this bi-directional communication link is constituted by a twisted pair 58 (corresponding to twisted pair 58 shown in FIGURE 1 of the aforementioned Miller U.S. Patent 4,367,414). A
relay processor 300, preferably an 8049 microcomputer, receives commands from twisted pair 58 and sends information to the twisted pair via a data line transceiver 400. Data line transceiver 400 was shown in detail in FIGURE 8 of the aforementioned Miller U.S.
Patent 4,367,414 and therefore will not be detailed in schematic form.
Data line transceiver 400 couples relay processor 300 to the common communication link (twisted pair 58) used to transmit serial data to and from the central controller (not shown but corresponding to central ~33~
controller 50 in the aforementloned Miller U.S. Pa-tent 4,367,414). Data line transceiver 400 contains both a receiver and a transmitter to facilitate bi-directional data communication. Both the transmitter and receiver are optically isolated from any ground reference thereby providing a noise immuned balanced driver capable of rejecting common mode disturbances and receiving differential signals. Serial data is transmitted in a similar fashion as described in the aforementioned Miller U.S. Patent 4,367,414 and is received from the aata line over the SID line. Transmitted, output data is impressed onto the data line via the SOD line.
Associated with processor 300 is a watchdog reset circuit 500 including a watchdog timer 500 and associated circuitry. Watchdog reset circuit 500 is - responsible for causing or generating a reset pulse to processor 300 under the following conditions:
A. Power on: when power to the system is first applied.
B. Low Power: when the power to the system falls below a predetermined operating voltage.
C. ~atchdog Time-Out which results when the processor 300 falls to retrlgger the watchdog timer 550 within a predeter-mined time interval. The trigger to the watchdog timer is reset every time processor 300 causes a pulse on the watchdog out line.
This line is AC coupled to the watchdog circuit to insure only transitions cause a reset. By forcing processor 300 to pulse its watchdog output line, it is insured that the system will remain in a determin-istic state. If for any reason processor 300 fails to reset the watchdog -timer - 35 within a predetermined time interval, ~.~3~3$~6 - 13 - I,D-9147 timer 500 will force a reset on the reset line of processor 300 in an attempt to restart it. This will self correct the system to a deterministic state reducing the system's vulnerability to spurious signals.
D. Manual Reset Switch: There is provided a manual reset switch 560 which when activated causes a reset pulse to appear on a reset line 562 and a manual reset line 564. Pro-cessor 300 can execute one of three reset modes or sequences determined by the manual user. A reset pulse is generated periodically until the watchdog reset signal appears acknowledging the proper operation of processor 300. After a reset, processor 300 will enunciate the occurrence on the data line.
A jumper selection matrix 600 is used to select an operating mode of a relay module. This allows a multiplicity of functions to be achieved with essentially one apparatus configuration. By the use of the jumper selection matrix 600, the apparatus can be particularly configured for a special application. The jumpers are:
Wl (not applicable) W2 (not applicable) W3 (not applicable) W4 (communication, new or old format) W5 (not applicable) W6 (16 or 32 relays).
An address input multiplexer 700 provides for the multiplexing of address bits into processor 300.
This allows the multiple use of a common set of input/output lines to processor 300.
Relay source drivers 800 and relay sink drivers 850 together constitute the driver circuitry for operating latching relays ultimately controlling the distributed 33 ~ ~D
~ LD-91~7 electric loads. Drivers 800 and 850 provide a multiplying matrix used to energize 2 out of 96 relay lines from an 8 x 8 driver circuit. This reduces the number of costly interconnections and driver electronics necessary to energize the bank of 32 latching (3 wire) relays. (It is contemplated that the relay driver circuitry will operate latching relays of the type showing schematically in FIGURE 2).
There is provided relay power, driver protect and fault detection circuitry 900. This ~ircuitry regulates the power delivered to the relays. It provides current limiting to protect the relay driver electronics from shorted relays or faults. It also flags processor 300 to alert it to fault conditions on the under and over current lines so that the processor can immedia-tely shut off relay drivers 800 and 850 -to avoid damage and reduce the need for heat sinking of the driver electronics.
Furthermore, processor 300 will enunciate any system fault over the data line.
There is further provided a five volt regulator 950 for supplying power to the logic circuits.
Relay processor 300 functions as a sequential logic machine that is configured by firmware to perform all the control and communication processes discussed above.
Referring now to FIGURE 3 (including FIGURES
3a-3c) there is shown a de-tailed schematic diagram of the relay module shown in block form in FIGURE 1.
Watchdog Circuit 500 Watchdog reset circuit 500 has several functions. The first function is a power-on reset function. The second function is a voltage monitoring function that holds processor 300 in reset whenever its power goes below predetermined limits. The third function is to act as a watchdog for processor 300. In normal operation, processor 300 will send a string of s~;
signals through i-ts Pin 25, the Prog pin, to constantly reset an RC combination. Should the microprocessor get hung up in an endless loop, or get "lost" in its program, the RC combination will time out and provide a series of reset pulses to processor 300, allowing the system to restart without manual intervention by the customer. The watchdog sequence starts with pulses appearing on processor Pin 25. This pin is under software control in the processor. It is directly connected to Pin 9 of U-2 which is an inverter. Inverter U-2 in this case is used as a buff~r drives C-10, a 470 picofarad capacitor which in turn drives the base of Q-10 a 2N2907. When processor 300 signal goes high causing the inverted - bu-ffered signal to go low. The base of Q-10 conducts current pushing a pulse of current into C-7 through the collector of Q-10 and charging C-7. R-15 is the constant determining resistor. The combination of R-15 and C-7 determine how often the pulses must come from the microprocessor to prevent a watchdog reset. In this case, the time constant is 100 milliseconds. R-14 is connected across the base emitter junction of Q-10 and serves to turn off Q-10. CR-2 provides a current path to the current on C-10 when the signal from the buffer inverter is a high lavel going signal. The primary purpose of C-10 is to provide DC isolation of the reset signals from the micro-processor. In this type of coupling it is not the absolute level of the signal from the microprocessor that determines when a watchdog reset occurs, rather it is the period between transitions of the microprocessor signal that determines when a watchdog reset will occur. Assuming a high level voltage on C-7, R-15, this high level voltage appears on the minus input Pin 8 of a comparator U-6.
Since the minus input is at a higher voltage than the positive input, then the output of this comparator will be low. This low level signal is directly connected to the minus input of comparator input Pin 10, another section of U-6, and since in this case the minus input is ~:33~16 less than the positive inpu-t, -the ou-tput of this comparator section on Pin 13 will go into the high impedance state allowing R-13 to pull up the reset line, although delayed by C-18. C-18's prime function is to provide a power-on reset. It will hold the processor invest upon the event of power-on for approximately 500 milliseconds. Should the watchdog pulses cease to occur, Q-10 will stop charging C-7; C-7 will discharge thru R-15 and the voltage on Pin 8 will drop below the voltage on Pin 9 of the comparator, forcing Pin 14 into a high impedance state. R-12 will charge C-6 until the point that the voltage on Pin 10, thus minus input of the comparator, will exceed that of Pin
11, the positive input of the comparator. The comparator will then clamp low on the output Pin 13 and put the processor into a reset state. It will be held in that reset state until R-12 discharges C-6. This time constant is approximately 20 milliseconds. Thus when the processor fails to give watchdog pulses, the reset line will be given a series of 20 millisecond reset pulses. The rise time on this reset pulse will be determined by R-13 and C-18 and will be very slow as a result. This is of no consequence to the processor which has built in reset hysteresis. R-10 and R-ll provide hysteresis in the comparator circuit for the RC time constant just as R-9 and R-13 provide the hysteresis for the oscillator function.
The savings of two resistors was achieved by using R-7 and R-5 combination as a voltage reference. This provides the voltage reference of approximately 2.5 volts and is used in several instances. The low voltage reset circuit operates using R-20 and CR-4 as a 4.3 volt reference into the comparator U-9. This voltage reference is fed into a minus input Pin 10 and is compared to the 5 volt supply of the processor on Pin 11, the positive input. When the processor supply drops below 4.3 volts, the processor is held in reset through this comparator output Pin 13. In this module a reset can ~L2;~3~
also be manually initiated by pushirlg on the reset but-ton which is coupled through the voltage monitor circuit via C-13. Thus pressing the reset button puts a low level signal on C-13 and pulls Pin 11 the positive input of the compara-tor to a low level, generating a reset pulse to processor300. The processor can distinguish this pulse from a watchdog pulse because this signal is also fed to the positive input Pin 7 of U-6 whose output drives Pin 1 of the processor 300. Processor 300l by monitoring this Pin 1, can tell whether a reset was initiated by the watchdog circuit or by manual intervention. The timing of this reset pulse is not critical and is determined by the C-13, R-21 combination which provides a 1 millisecond pulse to the reset line. Minus input of this reset button comparator is tied to 2-1/2 volt reference previously mentioned. The output of this comparator is called the relay-bar output.
Jumpe'r Se'lec't'~S'e'c't'ion o'f' th'e''Relay Mo'dul'e' 600 -The only jumper allowed to go offboard is the size-select jumper. Since it is going offboard, it must be buffered and is buffered using a comparator Pin 5 positive input on U-6 with a pull-up resistor R-6.
The minus Pin 4 is connected to the 2.5 volt reference.
The Pin 2 the output of this comparator is fed to Pin 24 of processor 300. When no connection is rnade to Pin 5 of the comparator, Pin 2 of the comparator feeds the microprocessor a high level. This indicates a 32 relay - module. When the jumper is installed to ground on Pin 5, Pin 2 also goes low indicating a 16 relay module.
The other jumpers use the internal pullups of processor 300 and are activated by putting jumpers to ground. The first jumper is called the feature jumper. The second jumper W-2 is not used. The third jumper W-3 is the type jumper. The fourth jumper W-4 is the communications mode jumper and the fifth jumper is not applicable to the relay-only module. With the relay-only module all jumpers are omitted. One other connection is made to ~2~3~
this same port is using a dip switch and is address bit 8 of the address select. It feeds Pln 21 of processor 300. C-8 and C-9 are the start-up and harmonic filters for the crystal Y-l.
Address Decode Circuitry 700 The address decoder circuit 700 decodes the address bits one at a time using a 74LS156 as a decode mechanism. The 74LS156 is used in the dual two-line to four-line decoding mode. This is necessary because it shares control lines with the relay sink driver U-7. Pins 3 and 13 are used as the data input while Pin 15, Pin 1, and Pin 2, Pin 14 connected together are used as enable lines. Using these three lines of control enable allows the multiplexing of control information and address information. The combination of Pins 2 and 14 can be viewed as an overall chip enable. It is active low.
Pin 1 can be viewed as the enable pin for the first two-line-to-four-line converter. It is active high and enables the outputs on Pins 7 -through 14. The second two-to-four converter enable pin is Pin 15 and is active low. In order to de~ermine which address lines are set on the dip switch pull Pin 2 and 14 low and then choose one of the two banks of two-to-four converters For example, one might put Pin 1 high enabling the first bank of two-to-four conversion. If then both Pins 2 and 13 werezeroes, that is low levels, then Pin 7 would be activa-ted by a pulled low on the output. If the address line zero dip switch is closed, the output of the LS 156 pulls the input line going to port 1, data bit 4, low. If that address line dip switch is open, the pull-up resistor connected in conjunction with this dip switch pulls the line high and a high-level signal would be read.
If one now wanted to read the next address bit location, one again pulls Pin 2 and 14 low as a chip enable, put Pin 1 high as the first bank oif two-to-four selector - enable while leaving Pin 15 high to disable the second -, 1~3~ 6 - 19 - LD-91~7 bank of two-to-four conversion, set Pin 3 address 1 input low and set Pin 13 a zero input high. This would enable Pin 6 low on the output side which is connected through the address switch selector to port 1, data bit 4, input.
Similarly, the other address lines may be read when using the second two-line to four-line converter. Pin 1 is put in a low state, Pins 2 and 14 are enabled and Pin 15 is put into a low state to enable the second bank, that is, outputs 9 through 12. Pin 1 and 15 could not be tied together and Pins 2 and 14 used as the enable lines because 1 and 15 are tied together, one of the two decoders will always be enabled. When a relay is being pulsed, this output could interfere with proper pulsing of the relays.
Relay Output and Con-tr`ol The data bus port is used to control the source drivers 800 for the relays. The data bus outputs are isolated using CMOS buffers for the purpose of providing adequate drive to the source driver, a Sprague UDN2981A. A high level source current approxi-20 mately 1.35 milliamps is required to drive the 2981.
This high level of source current is not available in TTL
type of buffers. The UDN2981A is rated for maximum output of 500 milliamps, however, it is specified at 350 milliamps. Therefore a selected version of the UDN2981A
is required. It must be specified at 500 milliamps with a known forward drop.
Port 1 is used to drive sink drivers 850.
They are also buffered using CMOS buffers for the same reason as for the source driver case. The sink 30 driver, 9 ULN2813A, is manufactured by Sprague, and is rated for 600 milliamps of current and is specified at 500 milliamps. This is adequate for this application.
To activate a particular relay, first the source driver for the blue wire of the relay is activated, followed by the activation of the proper sink driver (red or black wire~. Diodes are provided on themother board to block current leakage paths.
~335A~6 Driver Protection Circuitry 90 The drivers are protected by a combined current limit circuit and interrupt circuit for processor 300. The purpose is to limit current -to the relay drivers as well as to interrupt -the processor in the event of an overcurrent condition so that the processor will shut off the appropriate drivers. By involving the processor in the loop, two ends are achieved. One is that the processor is made aware that there is a fault condition somewhere in the relay control loop and secondly, by using the processor to turn off the drivers, no heat sink is needed on the pass transistor used in the driver protection circuit. The pro-tection circuit uses a single sense resis-tor but two separate sensing circuits.
15One sensing circuit involving Q-7 and R~l9 is a linear circuit. It takes the voltage generated across R-18 and converts it into a curren-t. This current is transformed into a voltage by R-3. This voltage is fed into two comparator inverting inputs. The overcurrent comparator has its positive reference set at approximately 600 millivolts by the combination of R-30 and CR-l. The second comparator has its voltage reference set a-t - approximately 300 millivolts by the combination of R-33 and R-4 driven by the 600 millivolt vol-tage reference.
This sets an overcurrent indication when the current-clear driver exceeds about 690 milliamps. Conversely, the end of current indicator is triggered whenever the current goes below approximately 340 milliamps. The overcurrent output Pin 1 and U-9 directly drives the interrupt pin of the microprocessor and causes an interrupt of the normal processor routine. The output of the undercurrent indicator Pin 1 of U-9 drives T0 of the microprocessor which is polled in the microprocessor's software. R-l and R-2 serve as pullups for the respective comparators.
Q-8 is the pass transistor for which all 3L~33~
current Eor relay driving must pass. It is normally turned on via R-16. It does not require any other drive because i-t is a PNP transistor. Q-9 acts as a non-linear switch to shunt off base drive in the event of an over-current situation. The threshold for this switchingaction is determined by the combination of CR-8, CR-9, and the base emi-tter drop of Q-9. R-17 serves to limit the base current through Q-9 in the event of a direct short circuit being applied to the collector of Q-8.
When the voltage across R-18 the current sense resistor exceeds approximately 1.8 volts, Q-9 conducts shunting current to the base and turning off Q-8. It was found to be necessary to have this Q-8, Q-9 combination even though the microprocessor responded approximately 12 microseconds to the interrupt. The source drivers and the sink drivers could not withstand the current supplied by the power supply if there is a dead short from source driver to sink driver. This current would be in excess of 1 amp, and it was found that in approximately 4 to 5 microseconds, the drivers went into unrecoverable second breakdown. The Q-8, Q-9 combination circuit then protects the drivers for that time without the necessity of heat sinking Q-8. This circuit is designed as a satura-tion type circuit, that is, normally Q-8 is saturated on and Q-9 is completely cut off. Only in a fault condition does Q-9 switch full conducting switching Q-8 completely off. Of course, in prolonged situations, a balance would be reached with Q-9 and Q-8 both partially conducting and in a high power dissipating mode. However, the microprocessor will have responded to the interrupt caused by the overcurrent condition and turned off the sink and source drivers and Q-8 dissipates very little power.
There is proyided a 5 volt regulator (not shown in FIGURE 3) which consists of a 3 terminal regulator, a 78MO5, and associated decoupling capacitors.
.
~33~
Worse case power dissipation occurs wi-th a 20% error on the high side of the 9 vol-t source. In a worse case current draw of 150 milliamperes is .7 watt. This would mean that without a heat sink this regulator will have a 40C rise in temperature. This is acceptable given that the ambient environment will not exceed 60C and the rated junction operating temperature is 150C. We will safely be at 100C worse case operating temperature.
The following is a descriptive of the software for the 8049 microprocessor for use in the Enhanced Transceiver Decoder. The software listing in object code form is reproduced in full in Appendix No. 1, forming a part of this patent.
-3~
Sof-tware to Hardware Interface Specification The following table provides a function for each PIN of the relay processor:
Pin Function Pin Function 2 XTALl 22 N.C./MODE
N.C. 25 WDSTB
7 GND 27 RONl/G2ADRS
8 N.C. 28 ROFFl/ADRINl 9 N.C. 29 RON2/ADRIN0 N.D. 30 ROFF2/ADRSEN
11 N.C. 31 RON3/ADRINP
The savings of two resistors was achieved by using R-7 and R-5 combination as a voltage reference. This provides the voltage reference of approximately 2.5 volts and is used in several instances. The low voltage reset circuit operates using R-20 and CR-4 as a 4.3 volt reference into the comparator U-9. This voltage reference is fed into a minus input Pin 10 and is compared to the 5 volt supply of the processor on Pin 11, the positive input. When the processor supply drops below 4.3 volts, the processor is held in reset through this comparator output Pin 13. In this module a reset can ~L2;~3~
also be manually initiated by pushirlg on the reset but-ton which is coupled through the voltage monitor circuit via C-13. Thus pressing the reset button puts a low level signal on C-13 and pulls Pin 11 the positive input of the compara-tor to a low level, generating a reset pulse to processor300. The processor can distinguish this pulse from a watchdog pulse because this signal is also fed to the positive input Pin 7 of U-6 whose output drives Pin 1 of the processor 300. Processor 300l by monitoring this Pin 1, can tell whether a reset was initiated by the watchdog circuit or by manual intervention. The timing of this reset pulse is not critical and is determined by the C-13, R-21 combination which provides a 1 millisecond pulse to the reset line. Minus input of this reset button comparator is tied to 2-1/2 volt reference previously mentioned. The output of this comparator is called the relay-bar output.
Jumpe'r Se'lec't'~S'e'c't'ion o'f' th'e''Relay Mo'dul'e' 600 -The only jumper allowed to go offboard is the size-select jumper. Since it is going offboard, it must be buffered and is buffered using a comparator Pin 5 positive input on U-6 with a pull-up resistor R-6.
The minus Pin 4 is connected to the 2.5 volt reference.
The Pin 2 the output of this comparator is fed to Pin 24 of processor 300. When no connection is rnade to Pin 5 of the comparator, Pin 2 of the comparator feeds the microprocessor a high level. This indicates a 32 relay - module. When the jumper is installed to ground on Pin 5, Pin 2 also goes low indicating a 16 relay module.
The other jumpers use the internal pullups of processor 300 and are activated by putting jumpers to ground. The first jumper is called the feature jumper. The second jumper W-2 is not used. The third jumper W-3 is the type jumper. The fourth jumper W-4 is the communications mode jumper and the fifth jumper is not applicable to the relay-only module. With the relay-only module all jumpers are omitted. One other connection is made to ~2~3~
this same port is using a dip switch and is address bit 8 of the address select. It feeds Pln 21 of processor 300. C-8 and C-9 are the start-up and harmonic filters for the crystal Y-l.
Address Decode Circuitry 700 The address decoder circuit 700 decodes the address bits one at a time using a 74LS156 as a decode mechanism. The 74LS156 is used in the dual two-line to four-line decoding mode. This is necessary because it shares control lines with the relay sink driver U-7. Pins 3 and 13 are used as the data input while Pin 15, Pin 1, and Pin 2, Pin 14 connected together are used as enable lines. Using these three lines of control enable allows the multiplexing of control information and address information. The combination of Pins 2 and 14 can be viewed as an overall chip enable. It is active low.
Pin 1 can be viewed as the enable pin for the first two-line-to-four-line converter. It is active high and enables the outputs on Pins 7 -through 14. The second two-to-four converter enable pin is Pin 15 and is active low. In order to de~ermine which address lines are set on the dip switch pull Pin 2 and 14 low and then choose one of the two banks of two-to-four converters For example, one might put Pin 1 high enabling the first bank of two-to-four conversion. If then both Pins 2 and 13 werezeroes, that is low levels, then Pin 7 would be activa-ted by a pulled low on the output. If the address line zero dip switch is closed, the output of the LS 156 pulls the input line going to port 1, data bit 4, low. If that address line dip switch is open, the pull-up resistor connected in conjunction with this dip switch pulls the line high and a high-level signal would be read.
If one now wanted to read the next address bit location, one again pulls Pin 2 and 14 low as a chip enable, put Pin 1 high as the first bank oif two-to-four selector - enable while leaving Pin 15 high to disable the second -, 1~3~ 6 - 19 - LD-91~7 bank of two-to-four conversion, set Pin 3 address 1 input low and set Pin 13 a zero input high. This would enable Pin 6 low on the output side which is connected through the address switch selector to port 1, data bit 4, input.
Similarly, the other address lines may be read when using the second two-line to four-line converter. Pin 1 is put in a low state, Pins 2 and 14 are enabled and Pin 15 is put into a low state to enable the second bank, that is, outputs 9 through 12. Pin 1 and 15 could not be tied together and Pins 2 and 14 used as the enable lines because 1 and 15 are tied together, one of the two decoders will always be enabled. When a relay is being pulsed, this output could interfere with proper pulsing of the relays.
Relay Output and Con-tr`ol The data bus port is used to control the source drivers 800 for the relays. The data bus outputs are isolated using CMOS buffers for the purpose of providing adequate drive to the source driver, a Sprague UDN2981A. A high level source current approxi-20 mately 1.35 milliamps is required to drive the 2981.
This high level of source current is not available in TTL
type of buffers. The UDN2981A is rated for maximum output of 500 milliamps, however, it is specified at 350 milliamps. Therefore a selected version of the UDN2981A
is required. It must be specified at 500 milliamps with a known forward drop.
Port 1 is used to drive sink drivers 850.
They are also buffered using CMOS buffers for the same reason as for the source driver case. The sink 30 driver, 9 ULN2813A, is manufactured by Sprague, and is rated for 600 milliamps of current and is specified at 500 milliamps. This is adequate for this application.
To activate a particular relay, first the source driver for the blue wire of the relay is activated, followed by the activation of the proper sink driver (red or black wire~. Diodes are provided on themother board to block current leakage paths.
~335A~6 Driver Protection Circuitry 90 The drivers are protected by a combined current limit circuit and interrupt circuit for processor 300. The purpose is to limit current -to the relay drivers as well as to interrupt -the processor in the event of an overcurrent condition so that the processor will shut off the appropriate drivers. By involving the processor in the loop, two ends are achieved. One is that the processor is made aware that there is a fault condition somewhere in the relay control loop and secondly, by using the processor to turn off the drivers, no heat sink is needed on the pass transistor used in the driver protection circuit. The pro-tection circuit uses a single sense resis-tor but two separate sensing circuits.
15One sensing circuit involving Q-7 and R~l9 is a linear circuit. It takes the voltage generated across R-18 and converts it into a curren-t. This current is transformed into a voltage by R-3. This voltage is fed into two comparator inverting inputs. The overcurrent comparator has its positive reference set at approximately 600 millivolts by the combination of R-30 and CR-l. The second comparator has its voltage reference set a-t - approximately 300 millivolts by the combination of R-33 and R-4 driven by the 600 millivolt vol-tage reference.
This sets an overcurrent indication when the current-clear driver exceeds about 690 milliamps. Conversely, the end of current indicator is triggered whenever the current goes below approximately 340 milliamps. The overcurrent output Pin 1 and U-9 directly drives the interrupt pin of the microprocessor and causes an interrupt of the normal processor routine. The output of the undercurrent indicator Pin 1 of U-9 drives T0 of the microprocessor which is polled in the microprocessor's software. R-l and R-2 serve as pullups for the respective comparators.
Q-8 is the pass transistor for which all 3L~33~
current Eor relay driving must pass. It is normally turned on via R-16. It does not require any other drive because i-t is a PNP transistor. Q-9 acts as a non-linear switch to shunt off base drive in the event of an over-current situation. The threshold for this switchingaction is determined by the combination of CR-8, CR-9, and the base emi-tter drop of Q-9. R-17 serves to limit the base current through Q-9 in the event of a direct short circuit being applied to the collector of Q-8.
When the voltage across R-18 the current sense resistor exceeds approximately 1.8 volts, Q-9 conducts shunting current to the base and turning off Q-8. It was found to be necessary to have this Q-8, Q-9 combination even though the microprocessor responded approximately 12 microseconds to the interrupt. The source drivers and the sink drivers could not withstand the current supplied by the power supply if there is a dead short from source driver to sink driver. This current would be in excess of 1 amp, and it was found that in approximately 4 to 5 microseconds, the drivers went into unrecoverable second breakdown. The Q-8, Q-9 combination circuit then protects the drivers for that time without the necessity of heat sinking Q-8. This circuit is designed as a satura-tion type circuit, that is, normally Q-8 is saturated on and Q-9 is completely cut off. Only in a fault condition does Q-9 switch full conducting switching Q-8 completely off. Of course, in prolonged situations, a balance would be reached with Q-9 and Q-8 both partially conducting and in a high power dissipating mode. However, the microprocessor will have responded to the interrupt caused by the overcurrent condition and turned off the sink and source drivers and Q-8 dissipates very little power.
There is proyided a 5 volt regulator (not shown in FIGURE 3) which consists of a 3 terminal regulator, a 78MO5, and associated decoupling capacitors.
.
~33~
Worse case power dissipation occurs wi-th a 20% error on the high side of the 9 vol-t source. In a worse case current draw of 150 milliamperes is .7 watt. This would mean that without a heat sink this regulator will have a 40C rise in temperature. This is acceptable given that the ambient environment will not exceed 60C and the rated junction operating temperature is 150C. We will safely be at 100C worse case operating temperature.
The following is a descriptive of the software for the 8049 microprocessor for use in the Enhanced Transceiver Decoder. The software listing in object code form is reproduced in full in Appendix No. 1, forming a part of this patent.
-3~
Sof-tware to Hardware Interface Specification The following table provides a function for each PIN of the relay processor:
Pin Function Pin Function 2 XTALl 22 N.C./MODE
N.C. 25 WDSTB
7 GND 27 RONl/G2ADRS
8 N.C. 28 ROFFl/ADRINl 9 N.C. 29 RON2/ADRIN0 N.D. 30 ROFF2/ADRSEN
11 N.C. 31 RON3/ADRINP
12 ROSRCl 32 ROFF3/GlADRS
13 ROSRC2 33 RON4
14 ROSRC3 34 ROFF4 ROSRC4 35 N.C.
16 RlSRCl 36 N.C.
17 RlSRC2 37 N.C.
18 RlSRC3 38 SOD
19 RlSRC4 39 SID
COMM 0 = NEW 1 = NEW/OLD
SIZE 0 = ONE ADDR 1 = TWO ADDR
-:.
~L~33~
- 2'1 - LD-9147 The following -table is a relay selection matrix:
BANK 0 (LOW ADDR) BANK 1 (HIGH ADDR) RLY ON OFF RLY ~ON OFF
1 ROSRCl RONl ROSRCl ROFFl 1 RlSRCl RONl RlSRCl ROFFl 2 ROSRCl RoN2 ROSRCL ROFF2 2 RlSRCl RON2 RlSRCl ROFF2 3 ROSRCl RON3 ROSRCl ROFF3 3 RlSRCl RON3 RlSRCl RoFF3 4 ROSRCl RON4 ROSRCl ROFF4 4 RlSRCl RON4 RlSRCl RoFF4 5 ROSRC2 RONl ROSRCZ ROFFl 5 RlSRC2 RONl RlSRC2 ROFFl 6 ROSRC2 RON2 ROSRC2 ROFF2 6 RlSRC2 RON2 RlSRC2 RoFF2 7 ROSRC2 RON2 ROSRC2 ROFF3 7 RlSRC2 RON3 RlSRC2 ROFF3 8 ROSRC2 RON4 ROSRC2 ROFF4 8 RlSRC2 RoN4 RlSRC2 ROFF4 9 ROSRC3 RONl ROSRC3 ROFFl 9 RlSRC3 RONl RlSRC3 ROFFl 10 ROSRC3 RON2 ROSRC3 ROFF2 10 RlSRC3 RON2 RlSRC3 ROFF2 11 ROSRC3 RON3 ROSRC3 ROFF3 11 RlSRC3 RON3 RlSRC3 ROFF3
16 RlSRCl 36 N.C.
17 RlSRC2 37 N.C.
18 RlSRC3 38 SOD
19 RlSRC4 39 SID
COMM 0 = NEW 1 = NEW/OLD
SIZE 0 = ONE ADDR 1 = TWO ADDR
-:.
~L~33~
- 2'1 - LD-9147 The following -table is a relay selection matrix:
BANK 0 (LOW ADDR) BANK 1 (HIGH ADDR) RLY ON OFF RLY ~ON OFF
1 ROSRCl RONl ROSRCl ROFFl 1 RlSRCl RONl RlSRCl ROFFl 2 ROSRCl RoN2 ROSRCL ROFF2 2 RlSRCl RON2 RlSRCl ROFF2 3 ROSRCl RON3 ROSRCl ROFF3 3 RlSRCl RON3 RlSRCl RoFF3 4 ROSRCl RON4 ROSRCl ROFF4 4 RlSRCl RON4 RlSRCl RoFF4 5 ROSRC2 RONl ROSRCZ ROFFl 5 RlSRC2 RONl RlSRC2 ROFFl 6 ROSRC2 RON2 ROSRC2 ROFF2 6 RlSRC2 RON2 RlSRC2 RoFF2 7 ROSRC2 RON2 ROSRC2 ROFF3 7 RlSRC2 RON3 RlSRC2 ROFF3 8 ROSRC2 RON4 ROSRC2 ROFF4 8 RlSRC2 RoN4 RlSRC2 ROFF4 9 ROSRC3 RONl ROSRC3 ROFFl 9 RlSRC3 RONl RlSRC3 ROFFl 10 ROSRC3 RON2 ROSRC3 ROFF2 10 RlSRC3 RON2 RlSRC3 ROFF2 11 ROSRC3 RON3 ROSRC3 ROFF3 11 RlSRC3 RON3 RlSRC3 ROFF3
15 12 ROSRC3 RON4 ROSRC3 ROFF4 12 RlSRC3 RoN4 RlSRC3 ROFF4 13 RQSRC4 RONl ROSRC4 ROFFl 13 RlSRC4 RONl RlSRC4 ROFFl 14 ROSRC4 RON2 ROSRC4 ROFF2 14 RlSRC4 RON2 RlSRC4 RoFF2 15 ROSRC4 RoN3 ROSRC4 ROFF3 15 RlSRC4 RoN3 RlSRC4 ROFF3
16 ROSRC4 RoN4 ROSRC4 ROFF4 16 RlSRC4 RCN4 RlSRC4 ROFF4 For example, BANK 1 RLY 13 ON = RlSRC4, RONl BANK 0 RLY 7 OFF = ROSRC2, ROFF3 ~ ' " ' ' - - -~33~i~6 The following -table represents address input multiplexing:
ADRlNP GlADRS G2ADRS ADRINl ADRIN0 ADRSEN
Al 0 1 0 1 0 x x O
x x x x Referring now to FIGURES 4 and 5 there is shown in general block diagram form the functional units carried out by firmware associated with processor 300 shown in FIGURE 1. This firmware is embodied in the object code listing set forth in complete form in Appendix 1. The function shown in FIGURES ~ and 5 are detailed further in FIGURES 6-50.
The relay transceiver is comprised of the previously described hardware apparatus and several soft-ware or firmware procedure and processes described below.
The block diagram of the relay transceiver is depicted in FIGURES ~ and 5 and provides a functional description of each of the software process blocks.
Referring now to FIGUR~ ~, the sequential control unit is formed by the TIMINT (timer interrupt service routine) and the executive (EXEC) routines. The purpose of this section is to provide the timing (6 msec timer) and monitor the status of the various other processes. It is further responsible for the task dispatching to all process functions.
The address input sequence and address and jumper buffer holding registers described in the MODIDN
process provides a means of uniquely identifying a relay . ~
.
33~i~L6 - 26 LD~9147 transceiver, as well as configuring the product via user or manufacturing installed jumpers to suppor-t various select-able Eeatures.
The command decoder operates upon data contained in the memory buffer area consisting of messages received from the data line receiver. The DECODE process checks the validity of the messages (through parity or checksum calculations), the proper address ~ADRCHK process) and the command type. The command decoder will place the proper data into the memory buffer area and status registers of the sequential control unit for subsequent dispatching to the proper task to perform the desired action. The decoding of a valid message results in the incrementing of a good message count register used for internal system diagnostics.
A receiver means (RCVSRV) similar to that described in the aforementioned Miller U.S. Patent 4,367,414 can be utilized in order to convert the incoming serial data stream into a parallel form in the memory buffer area suitable for command decoding.
In addition, a transmitting means (XMTSRV) similar to -tha-t described in the aforementioned Miller U.S. Patent 4,367,414 can be utilized in order to convert parallel data from the memory buffer area to the serial format of the common data line.
FIGURE 5 details the operation of the relay service process. A relay output sequencer (RLYSRV) determines the proper timing intervals for pulses of relay actuation current in conjunction with the TIMINT
timer interrupt service routine. Once the proper relay for service is determined by the output sequencer (and - the SETABX and FNXTRL process~, commands are given to the relay source output buffer and relay sink output buffer (described in the SETSRC and SETSNK process) in order -to actuate the relay multiplexing hardware and 1~:3~L6 - 27 - LD-91~7 install the desired relay state.
An overcurrent protect control function is shown on the diagram and is comprised of the external overcurrent detect and limiting hardware and the OVCINT
overcurrent interrupt service routine which stops the flow of current should an overcurrent condition be detec-ted.
Finally, a relay test sequencer exists which can be invoked by a user in order to assist in proper installation of the product and diagnose faulty wiring or relays. This function is described in the RLYTST
process.
Relay Handler Module (Firmware That-Controls Relay Drive Ci'rcui*s'a'nd Driv'e'r P'rotec't'i'on C'i'rcuit) The relay Handler is a collection of several software procedures whose purpose is install desired ON/OFF states onto mechanically latching relays. A typical relay transceiver is comprised of 16 or 32 mechanically latching relays. Each group of 16 relays has a bank - associated with it resulting in a maximum of 2 banks for ~ 32 relay transceivers. The 2 banks correspond to addresses assigned to each relay transceiver. Therefore, each relay transceiver can respond to up to 2 addresses. The even address is associated with Bank 0 while the odd address is associated with Bank 1. If a transceiver is defined to have a single address for response, that address will be equal to the binary selection applied by the user to the address switch on the transceiver. This address, in the case of a single address TRD, can be either even or odd.
Relay processing occurs in a sequential fashion beginning with the first relay of a bank and continuing in order through the last relay of a bank. Three passes of installation will be made for each bank. These three passes, numbered 1, 2, 3, correspond to progressively increasing current pulse duration applied to the relay coil (pass 1 is a dura-tion of 12 milliseconds; pass 2 ~2335~
- 28 - I,D-9147 is a duration of 24 milliseconds; and pass 3 is a duration of 48 milliseconds).
Since a normally functioning mechanically latching relay will respond to a state change within the shortest - 5 interval of time (pass 1), the throughput is determined by this pass and corresponds to 12 milliseconds per relay.
However, due to possible parametric shifts of relay characteristics, it is possible that some relays might not change their state within the pulse duration of pass 1. Subsequent passes of increasing pulse width are then applied in order to change the state of any relay which may be responding in a more "sluggish" manner.
The 48 millisecond pulse width of pass 3 was determined to be the maximum time required for a change in state to occur in a mechanically latching relay with an abnormal shift in its parameters.
~ n entire bank of relays is serviced within a given pass. At the end of each pass, an attempt is made to install any data for the other bank of relays.
By swapping banks of relays every pass it is possible to maximize the observable throughput for both banks.
This is because a bank of relays does not have to wait for the other bank's three passes of 12, 24 and 48 milli-seconds to complete in order to begin servicing for i-ts initial pass. ~However, it must wait for the current pass to complete.~
In addition to installing desired states onto the up to two banks of mechanically latching relays, the relay handler will perform the required multiplexing for the 64 ON/OFF coils of the relays through its 8 bit output structures and associated relay multiplexing hardware.
In addition, the handler also maintains a register of states for the relays containing the ON/OFF indications, and provides for infinite queuing of commands received over the common data line for altering the states of relays. Either individual relays, multiple relays or entire banks of ', '~
.. ..
- . :
.
~IL;;:33~6 16 relays can be altered. And, finally, the relay handler will recongize both overcurrent and undercurrent detections from the associated relay multiplexing hardeare whih may or may not be indicating an abnormal condition.
Before further analysis of the relay handler can be undertaken, it will be necessary to describe the data structures used in the servicing of relays. These data structures are utilized in such a manner as to allow the pulsing of a single relay coil at a time. The data structures are used in order to remember which relay coil is being pulsed as well as the desired duration of that pulse and information necessary to pulse additional relays - in the future. By coupling this information together with a proper interval timer, it is then possible for the microprocessor to initiate the pulsing of a relay coil and then continue with other non-rela-ted tasks such as communicating over the common data line. After the proper interval of pulsing has transpired, it is then possible to restore the state of the relay handler, by utilizing - 20 the data structures, and continue pulsing further relays.
There is a master status register (known as the Relay Module Status Register) which indicates if relay servicing has been active in the past and if so, which of the two banks were active. In addition to this master status register, there are additional registers which are duplicate for each bank of the transceiver. They are: the relay status register for a bank; the relay holding register for a bank; the relay working register for a bank and the relay states register for a bank.
The relay status register for each bank contains information indicating if that bank was active (in other words, was having relay states installed by the relay handler) as well as an indication if data is awaiting installation in the relay holding buffer. Also contained in the relay status register, for a bank that ~233~
- 30 - LD-91~7 is active, is the number of the relay that was last serviced, a pass number from 1 to 3 (which indicate the duration of the pulses to be applied to relay coils) and, if necessary, a flag indicating that the first relay of a given bank for a particular pass is to be installed without delay (this would indicate a need for immediate servicing of that relay without waiting the customary amount of time between servicing of relays).
Queuing of commands which affect the state of relays is achieved by placing the required data for the relay service into a relay holding regis-ter. This register is broken into two parts. The firs-t part, or mask portion of the holding register, is used to indicate the presence of a desired action for a given relay. A
"1" value in the mask portion of the register indicates a - need to service the relay number corresponding to that position (the first bit, data bit 0, corresponds to relay number l; the last bit, or data bit 15 of the register, corresponds to relay number 16). The second portion of the holding register contains the states desired for particular relays. A value of "1" will indicate a desired ON action, while a value of "0" will indicate a desired OFF action.
The relay working register is similar to the holding register in that it is broken into two parts, a mask and a state portion. However, it contains the actions which are to be installed onto the currently active bank of relays. Since this information is maintained separately from the holding register, it is then possible for an initial set of relay actions to be installed from the working register while future actions are being held in the relay holding register. The current actions on an active bank of relays will proceed to completion before information in the holding buffer will be acted upon.
The final data structure used by the relay handler module is a relay states register for each bank ~l2335i~6 of relays. This 16 bit register will contain a "1"
value in each position corresponding to a relay that is in the ON state and a "0" value in each position corresponding to a relay in the OFF state. Data Bit DB0 through DBl5 correspond to relays numbered 1 through 16.
The primary procedure of the relay handler module is the Relay Service Routine, RLYSRV. The Relay Service Routine is a procedure invoked by the main executive of the relay transceiver. Its purpose is to control the actions of the relay handler, manipulate and malntain the required data structures, and perform relay pulsing as needed. A flow diagram depicting the relay service process is indicated in FIGURES 6, 7 and 8.
Referring to FIGURE 6, on entry to the relay service routine, a test is made to determine if relays were being serviced in the past by checking the relay module status register. If relay processing was indeed ac-tive in the past, then the bank -that was active is restored by the SETABX routine such that the pass number, last relay number and immediate service re~uirement flag reflec-t the last action performed on that bank. If relays had not been sexvicing in the past, then the SETABX routine is invoked in order to process any relay data that may be waiting in the holding buffer for the low bank of relays.
If that process is successful, then flow continues as indica-ted in FIGURE 6. If it is not possible to make the low bank of relays active, a test ls made to determine if the transceiver is a two-Bank (32 relay) transceiver.
If the second bank of relays does not exist, then the process completes and control returns to the executive.
However, if the transceiver does contain two banks of relays, then the SETABX routine is called once more in order to process any relay actions that might be waiting in the holding buffer for the high bank of relays. If no data is awaiting servicing, then the process completes and control returns to the executive. Otherwise, the ~233~i46 pass number, last relay number, and flag indicating a need for immediate service has been established as indicated for the bank of relays that is now active. If immediate service for the bank is required, then the first relay to be serviced within -that bank is established by the FN~TR0 process. If a relay is found, then -the flow continues at connector B of FIGURE 7~ Otherwise, if a relay is not found then the process continues with connector C of FIGURE 8.
If immediate servicing for a bank is not required, then a selection is made of the time interval required before further servicing can occur. This corresponds to an interval of 12 milliseconds for pass 1, 24 milliseconds for pass 2 or 48 milliseconds for pass 3. If the required interval of time indicated by the pass number has not elapsed, then the process completes and control returns to the executive. Otherwise, the flow continues as indicated on FIGURE 7 at connector A.
The flow description of the relay service module continues with FIGURE 7. At connector A the process FNXTRL, or Find the Next Relay, is invoked in order to select the next relay to service. If a relay to service cannot be found, this indicates the end of a pass and the process continues with connector C, FIGURE 8. Otherwise, continuing to connector B, the state for the relay found is assumed to be OFF. The state bit corresponding to the relay number to service in the working buffer is then tested to see if an ON state is desired. If the relay is indeed to be turned ON, then the state to service register is set to ON and flow continues as indicated in FIGURE 7.
Both the source and sink drivers are turned to their OFF or no current condition. The overcurrent detection hardware is disabled and an undercurrent flag is - set in the STATUS register if needed by the procedure RELAY 9. SETSNK is then invoked in order to turn on the : L~33~
sink driver for the relay to service. SETSRC turns on the source driver for -the relay to service and following this test a test of the sta-te to service is performed.
If the relay was set to an ON condition, then a pointer is set to the low portion of the relay states register and a bit is set corresponding to the relay to service in the relay state register by the procedure SETBIT. On the other hand, if the relay was turned off then the low portion of the relay states register is pointed to and a bit is cleared corresponding to the relay to service in the relay state register by the procedure CLRBIT. Flow continues for both states by saving the relay to service as the last relay, dropping any immediate service requirement, and updating the relay status register for the proper bank. The procedure is then complete and control returns to the executive.
The final figure for the relay service module is FIGURE 3 which begins at connector C. This process is entered whenever the end of a pass has been detected.
Both source drivers are turned OFF and the overcurrent detec-tion hardware is disabled. If needed, a flag cor-responding to an undercurrent detection ls set in the STATUS register of the transceiver by the procedure RELAY 9.
The pass number is then incremented (to pass 2 or 3). A
test is then performed to determine if the service for the kank is now complete (on completion of pass 3). If the service has completed, then the status byte for the bank and the status byte for the relay module are cleared to indicate that the bank is no longer active. A test is then performed to see if the transmit buffer is currently in use. If so, then the process continues as indicated by the figure. Otherwise, a desire for deferred transmission is indicated and the relay state register is moved to the proper transmit buffer along with a flag indicating a transmission oE relay states. The process then continues as indicated in -the figure.
~33~
34 - LD 91~7 If the tes-t for completion of relays service determines that there are more passes to be performed on the bank, then the flag indicating a need for immediate service is set, the new pass number is saved, and the last relay number is set to 0 in the proper relay bank status register. A test is then made to determine if the transceiver contains two banks of relaysO If not, then the process completes. Otherwise, the opposite bank is requested and the procedure SETABX is invoked in order to attempt to make the opposi-te bank active for the next relay service. The procedure RLYSRV is then complete and control returns to the executive.
The routine, SETABXr or Set Active Bank X, is invoked by the relay service module, in order to activate a bank of relays for servicing. SETABX performs this task by restoring the required information for relay servicing and performing a transfer o~` relay data from the relay holding register to the relay working register, if required.
Referring to FIGURE 9, the flow description of the process SETABX, the status register for the desired bank is fetched. A test is then made to determine if that bank of relays was active for relay servicing in the past.
If so, then the last relay serviced, the pass number and the flat indicating an immediate service request is restored and flow continues as indicated. Otherwise, a further test is performed to determine if there is relay data waiting servicing in the relay holding register. If not, it is indicated that the bank cannot be made active and the process ends.
If there is data waiting servicing in the relay holding register, then the sta-tus register for the bank is updated to show an active indication and the flag indicating holding data available is cleared. Next the immediate service request flag is set, the pass number is initialized to pass 1 and the relay number is set to 0.
The holding buffer is then copied to the working buffer ~;~33S'~6 - 35 - LD-91~7 and an indication is given that the bank of relays is now ac-tive for servicing in the relay module status register (RLMODS). This completes the description of the SETABX
routine.
The routine FNXTRL, or find the Next Relay, is responsible for scanning the mask portion of the working register in order to detect relay positions that have been indicated for servicing. A flow chart for this routine is indicated in FIGURE 10.
The FNXTRL routine begins by checking the last relay serviced to see if it was relay 15. If so, then there are no more relays to be serviced and a flag is set to indicate that no relay is found. The process then aborts. If the last relay serviced was not number 15, then the mask portion of the working register is isolated corresponding to any relay position greater than the current relay. A test is then performed to determine if any relays remain to be serviced in -the bank. If not, an indication is made that no relay can be found and the routine exits. Otherwise, a 1 value is added to the relay register and the portion of the working register mask corresponding to the relay number in the relay register is isolated. A test is then performed to determine if there is a relay action present in that position. If so, then a flag is set to indicate that the relay number in the relay register has been found and the process exits successfully. If no relay action was present then the loop of adding 1 to the relay register and isolating the bit position corresponding to the number in the relay register and the test for relay action present in that position continues until such time that a relay is found to be active in that position.
As was described above in the RLYSRV module, whenever the initial service for a bank is made, a special procedure entitled FNXTR0 is called in order to find the first relay to service for a given bank.
~2~3~i~6 - 3~ - LD-9147 Referring again to FIGURE 10 for the FNXTR0 label; the relay register is set to relay number 0. Then the mask position of the working register corresponding -to relay number 0 is isolated and a test is performed to determine if there is relay action present in that position. If not, the flow continues as indicated on -the diagram~
If so, then an indication is made that the relay number in the relay register has been found and the procedure exits. This completes the description for the FNXTRL
routine.
The procedure RELAY9 is called by the relay service module in order to complete the servicing of a relay for a previous relay service. As indicated in FIGURE 11, the overcurrent detection hardware is disabled and a test is performed to determine if an undercurrent condition occurred while servicing the relay. If it did, then a bit is set in the STATUS register of the transceiver corresponding to an undercurrent detec-tion. Otherwise, both the sink and source driver are turned off as indicated completing the process.
SETSNK, or the Set Sink Driver routine described in FIGURE 2, is responsible for enabling the sink driver hardware for a relay service. As indicated, it will get a byte to output to the sink driver hardware ~5 (obtained form a lookup table) corresponding to the relay to service taking into account the ON/OFF indication.
The byte is then output to the sink driver and the process completes.
The SETSRC, or Set Source Driver routine described in FIGURE 13 operates in a similar fashion for setting the source driver to the desired condition. The byte to output to the source driver (obtained from a lookup table) corresponding to the relay to service and the bank indication is output to the source driver.
Following this, the overcurrent detection hardware is :
~233~
enabled completing the process.
The SETBIT and CLRBIT routines are two utilities responsible for setting a desired bit within a register or clearing a desired bit as needed. A Elow description for the SETBIT routine is given in FIGURE 14. A mask with a single 1 value in the position corresponding to the posi-tion to set is retrieved from a table. The desired bit is then set in the register by Oring the above value with the desired register. The new value is then saved as the updated register contents, completing the process which then exits to the calling routine.
FIGURE 15 depicts the flow for the Clear Bit routine. A mask with a single 1 value in the position corresponding to the position to clear is obtained from a table. Thi~ mask is next converted such that there is a single 0 value in the position to be cleared. The desired bit is then cleared by ANDing the above value with the desired register. This new value is then saved as the updated register, completing the process.
FIGURE 16 describes the overcurrent interrupt service routine which is entered whenever the external hardware detects an overcurrent condition while servicing relays. As depicted in the figure, the source driver is turned OFF following by the sink driver resulting in 0 current flow through the relay coil. A bit is then set within -the STATUS register corresponding to an over-current detection. The overcurrent detection hardware is then disabled to avoid further detection of the same overcurrent condition. The process then completes and control returns to the procedure in progress before the overcurrent detection interrupt occurred.
This completes the description of the Relay Handler Module. In summary, the Relay Handler provides a means of installing desired states onto mechanically latching relays; a means of performing the required multiplexing for actuation of the external hardware; a .
.
335i~6 - 38 - LD-91~7 means oE identifying and controlling two separate banks of relays; a means of staggered service of banks in order to maximize throughput; a means of maintaining a register of relay states; a means for infinitely ~ueuing commands for altering the relay states; a means for performing actions on individual, multiple or entire banks of relays;
a means of recognizing and indicating a detection of an undercurrent indication while servicing a relay; and finally, a means of recognizing and indicating the detection of an overcurrent condition and also disabling the relay multiplexing hardware in order to protect it from damage due to the overcurrent condition.
Momentary Pulsed Output for Mechanically Latching Rel~ays In order to provide a group of pulsed output devices from a normally mechanically latching relay transceiver, modifications to the previously described relay handler module were required. The object is to synthesize a pulsed output from a mechanically latching relay. In the normal relay service, each relay will receive three pulses of current in order to cause a state change to occur. These three pulses are of varying lengths in order to accommodate shifting relay parameters, as previously described. In order to implement the pulsed output TRD, it was decided that the first two passes would proceed as normal allowing standard relay installation to occur with 12 and 24 millisecond pulses.
However, for pass three, an additional procedure is invoked in order to force all of the relays OFF. This is done because a pulsed output is a momo-stable device (the device is normally in the OFF condition and will be pulsed to the ON condition briefly followed by a return to the OFF condition).
Referring back to FIGURE 7, there are locations indicated on the diagram for insertion of two procedures in order to implement the pulsed output TRD.
~.Z3;~
- 39 - LD-91~7 Referring now to FIGURE 17, there is a description of INS #l. The desired relay state is saved in a temporary regis-ter. Next, the desired relay state is set equal to the OFF condition. A test is then performed to determine iE the pass number for relay installation is equal to 3 (the final pass of ~8 milli-second duration). If not, -then the relay state desired is restored from the temporary register to its original OFF or ON value and the code continues at the point where the first insertion was made. On the other hand, if the pass was equal to 3, then the desired relay state is left in the forced OFF condition and the process continues a-t the point where the routine was inserted in the relay service module. The effect of this process is to allow normal OFF/ON state changes to occur on passes l and 2 while forcing an OFF state change to occur on the final pass (3).
The second insertion (INS #2) required to imple-ment the pulsed output is described in FIGURE 18. The desired relay state is restored from the temporary register to its original OFF or ON condition completing the inserted process. The program continues with the code remaining at the end of the second insertion. The original relay state is restored in the second insertion in order to insure that the relay state reyisters will have the proper OFF or ON indications built into them.
Had this not been performed, the relay states would indicate the monostable condition for the pulsed output (OFF). It was desired to allow the relay table to indicate reception and processing of a relay pulse command and not to indicate the actual ON/OFF state of the relays (which for the pulsed output would normally be the OFF condition).
By providing an alternate method, as described in the -two insertions, for installing relay states it is possible to provide a means of simulating a monostable output device with a bistable output device, i.e., a ~33~
mechanically latching relay. This modiEication allows the actua-tion of contactor type load devices which would normally require a pulsed actuated start or stop signal.
~arning Mode (Flicker) for Imminent Load Level Changes There is a need to provide a warning for imminent load changes. In a typical installation, for example, a small office with no windows and only a door, might contain only one lighting circuit. This circuit can have two possible conditions - either ON or OFF.
In a typical scheduled control application the lights or some other load for that office might be turned immediately to the OFF state resulting in a potential safety hazard for the occupant of that closed office space. A
traditional means for solving this problem would be to provide two or more lighting circuits enabling them to be controlled independently in such a means as to warn the occupant of an upcoming change in the load condition.
However, this method has a drawback in that it requires additional expense for extra controls and wiring.
This section describes a means of using a single point control circuit (typically lighting) in order to warn an occupant of an upcoming change in load condition. The warning indication consists of five steps. First, all desired loads are turned OFF. Next, a delay of 1-1/2 seconds follows. Third, all desired loads are turned back ON. Following this, a 30 second delay is entered. Finally, in the fifth step, all desired loads are turned back OFF. The OFF - Delay 1-1/2 Seconds - ON cycle serves to flick the lights and issues a warning to the occupant. The 30 second delay allows time for the occupant to override a pending load change.
Finally, the command to turn the loads OFF insures that unoccupied offices will have their lights turned off as desired.
In order to provide the warning function it 9L~33~
~ LD-9147 was necessary to modify three previously described routines. To begin with, due to the long time delays involved, an additional timer similar -to the first timer described, was created with 16 bit resolution for 6 milli-second timer interrupts in order to timeout the 1.5 and30 second time delay.
FIGURE l9 describes the modification to the relay service routine (of FIGURE 6) in order to provide warning mode. All that was necessary was the addition of an additional test, so indicated on the diagram, to determine if the relay service module was servicing a warning mode in the past. If not, then the flow continues as indicated on the diagram. Otherwise, the procedure continues with WARNS, the Warning Service Routine.
FIGURE 20 describes the modifications required for the SETAB~ routine (of FIGURE 9). To begin with, if the bank was previously active then an additional flag indicating either relay servicing or warning servicing must be established, as indicated on the diagram. In addition, if the bank was not active and relay data was not available in the holding register, then a test is made to determine if there is warning data waiting in the holding register. If not, then service is not active.
Otherwise, as indicated on -the diagram, the status register for the desired bank is set to indicate active warning service. The warning buffer holding flag is then cleared, pass 9 is set and the immediate first service flag is reset to 0. Next the warning holding buffer is copied to the mask portion of the working buffer and finally an active warning service is indicated for the proper bank in the relay module status.
FIGURE 21 describes the WARNS or Warning Service procedure. On entry to this process SETABX is invoked in order to active the desired bank for warning indication. A test is then performed to determine which ~L~33~
pass number is currently in process. Control branches to Con~ectors 0 or 1 of FIGURE 2~ or 2, 3 or 4 of FIGURE 23, as indicated.
Pass 0 is described on FIGURE 22 at Connector 0.
The purpose of this pass is to setup the relay holding buffer with the final relay states to be installed at the end of the warning. In addition, other operations necessary to perform the warning process are carried out.
On entry to Pass 0 a pointer is es-tablished to the mask por-tion of the proper relay holding buffer and additionallyto the current relay states buffer. Following this, all positions of the mask portion of the relay holding buffer are set to l's. Next, a pointer is established to the state portion of the relay holding buffer and proper bank warning holding buffer. The state portion of the relay holding buffer is then set equal to the original relay state word ANDed with the inverse of the warning buffer. Finally, a warning service is indicated, the immediate first service bit is set, and the pass counter is set to Pass 1.
The purpose of Pass 1 is to turn all desired relays OFF using 48 milliseconds width pulses, as indicated in FIGURE 22 connector 1. The immediate first service flag is checked. If it is not set, then a test is performed to determine if 48 milliseconds has passed since the last warning service. If not, then the process exists, as - indicated. Otherwise, the process con-tinues as it would in the case where the immediate first service bit had been set to a 1. The desired relay to install is found from the mask portion of the working buffer (by invoking FNXTRL) and is then turned OFF. Following this, the relay number is incremented and a test is performed to see if there are more relays to do. If there are, then the process exits, as indicated, otherwise the 16 bit - 35 timer is cleared and the pass counter is set to Pass ~, completing the actions required for Pass 1.
~33~
FIGURE 23 describes the actions required for Pass 2. The 16 bit timer is tested to determine if 1-1/2 seconds have transpired. If not, then the process comple-tes. Otherwise, the pass indicator is se-t to 3 and the routine exists.
Pass 3 is a dual of Pass 1. It is identical with -the exception that relays are turned ON and that on completion of Pass 3 the pass indicator is set to number 4.
Connector 3 describes the process for Pass 3.
The final actions required for warning indications are described at Connector 4 of FIGURE 23. As indicated in the diagram, a test is performed to determine if 30 seconds have transpired since the relays were turned to the ON state by Pass 3. If not, then the process exits.
Otherwise, all indications of active servicing and warning are removed from the bank status. Following this, the process SETABX is invoked in order to make the final relay state determined during Pass 0 active for normal relay servicing. This completes the warning service which then exits so as to allow the installation of the final relay state as a normal relay service.
This completes the description of the warning service process which allows: a means for warning a human occupant of an upcoming change in load status using a single point of control; a means for providing a 30 second delay interval for the occupant to countermand an upcoming change in load status; a means for reducing the data communication traffic requirements for indicating a warning action.
Decoder Handler The purpose of the decoder handler is to monitor the receiver buffer and determine when a valid message has been received for decoding. When it is determined that a message is awaiting decoding~ the message is verified for correctness of format, proper address and the proper check or parity word at the end - . :
~:3~6 of the message. Once the validity of the message has been determined, -the decoder will recognize various commands for the device in question. The desired actions are then performed which might include the manipulation of internal data buffers and possible transmission of messages to the controlling device via the common data line.
The Decoder Handler includes three main routines: the DECODE routine, responsible for decoding the flag portion of the messages as well as performing other supervisory tasks; the Address Check routine, ADRCHK, responsible for verifying the proper address and checksum or parity word; and the Transmission routine, SENDIT, which is responsible of the transmission of data requiring immediate or interactive transmission.
The Decode, DECODE, routine is invoked by the executive and is described in FIGURE 24 for the relay transceiver. Beginning with the entry point, a test is made of the RVSTAT register to determine if the RCVFLG
is set indicating the presence of a message in the receiver buffer. If not, then control continues to Connector B
or DECODE2 which is an abort from the Decode utility that will clear the RCVFLG bank indicators and new/old mode bits from RVSTAT and then return to the executive. If it is determined that there is a message to be decoded in the Receiver Buffer, then the utility ADRCHK is invoked in order to check the address and parity or checksum word of the message and build the flag, FD0 and DFl storage register as required. At Connector A, DECODE0, a test is performed on the RVSTAT register to determine if there is a message wai-ting decoding for either bank 0 or bank 1.
If not, then the routine aborts through Connector B.
Otherwise, the proper bank, either 0 or 1, is indicated (by setting or resetting the flag F0). A test is then made to determine if the message is in a new format.
If so, the control continues at Connector D of FIGURE 26.
Otherwise, a test is made to determine if the COMM jumper 1~:33~
- 45 - LD-91~7 has been se-t indicating new format messages only. If so, then the u-tility aborts through Connector B. Other-wise, the decoding of the two possible old mode flags continues as indicated. If the flag is equal to lCH
(Mode 0) then a command to set an entire bank of relays has been received and control continues at Connector E
of FIGURE 27. Otherwise, a test is performed to determine if the flag received was equal to 8CH (Mode 4). If not, then the DECODE aborts through Connector B. Otherwise, further processing of the mode 4 command is required and the procedure continues with Connector C of FIGURE 25.
The DECODE routine continues on FIGURE 25 at Connector C. The receiver buffer pointer is incremented to point the data field DF0 for decoding of the Mode 4 or auxiliary flag commands. A test is then made to determine if the auxiliary flag is equal to FOH. If so, then an individual relay OFF command is being issued and control continues with Connector G of FIGURE 28.
Otherwise, a test is made to determine if the auxiliary flag is equal to a value of ElH in which case an individual relay ON command is being specified and control continues at Connector H of FIGURE 28. If not, then a further test is performed for an auxiliary flag value equal to B4H or 69H. If no auxiliary flag decodes, then the routine aborts as indicated by passing control to Connector B of FIGURE 24. Auxiliary flags B4h and 69H
correspond to a relay state request. A desire to transmit two bytes of data is indicated along with a collision line free and the flag is set to A8H (an old mode flag).
Continuing, a test is then performed to determine if an overcurrent condition has been detected and so indicated in the TRD STATUS register. If so, then the flag is corrected to a value of 60H indicating an overcurrent detection in the new format for transmission. Otherwise, the proper bank of relay states is pointed to and the process continues at Connector L on FIGURE 30.
~335~6 FIGURE 26 describes the decoding used for new type commands. Beginning with Connector D, the received flag is shifted two positions to the right in order to skip over the FAFB bits. A tes-t is then performed to determine if the adjusted flag is equal to a value of 0. If so, then a reset command has been issued and the procedure continues with the reset algorithm. Otherwise, a test is made to determine if the flag is equal to 1 indicating a desire -to read data with an immediate or interactive transmission (continuing at Connector N of FIGURE 31).
If the flag is equal to a value of 2, then a command requiring data to be read and retransmitted in a deferred method is indicated and control continues at Connector 0 of FIGURE 31. For a flag value equal to 3, the process continues at Connector E of FIGURE 27 indicating a command to set an entire bank of 16 relay states. A
final test is performed for the new type commands for a flag value equal to 4 indicating a desire to set an individual relay state. The relay and desired state are fetched from DF0 and control continues at Connector K of FIGURE 28, as indicated. If it is not possible to decode a new type flag, then the procedure aborts at Connector B.
The SET16R or routine to set an entire bank of relays is described in FIGURE 27. As indicated, the STATUS register of the TRD is cleared and pointers are set to the holding buffer and relay module status register for the proper bank of relays. Next, the mask portion of the holding buffer is set to a value of FFFFH indicating desired actions on all 16 relays. The relay holding buffer active flag is then set in the relay module status and da-ta field 0 and 1 are copied into the state portion of the holding buffer. The procedure continues at Connector F which is the CLRBNK or Clear Bank process.
The good message counter is incremented to indicate the decoding of a proper command and the bank indicator corresponds to the command just decoded is cleared in ~33~6 - ~7 - LD-91~7 RVSTAT. Control then con-tinues at Connector A of FIGURE 24 in orcler to process any information for the other bank.
The individual relay OFF command is described in FIGURE 28 at Connector G. The relay number to be altered is fetched from DFl and control continues at Connector I.
Connector H describes the individual relay ON function.
The relay number to be altered is fetched from DFl and bit DB7 is set to indicate an ON action. Control continues at Connector I where the relay number to be altered is decremented by 1 to result in a range of 0 to 15 (consistent with the new mode of individual relay control). Continuing with Connector K, the relay number to be serviced is saved and control continues to the individual relay set command SETlND. A pointer is established for both the holding buffer and relay module status for the indicated bank. A test is then made to determine if the holding buffer is currently active. If so, then control continues at Connector J of FIGURE 29. If the holding buffer was not active, then the holding buffer active bit is set within the relay module status and the mask portion of the holding buffer is cleared to eliminate any previous actions and control continues at Connector J.
At Connector J (FIGURE 29), the individual relay set command continues by setting a bit in the mask portion of the holding buffer corresponding to the relay number to service. A test is then performed of bit DB7 of the relay to service to determine the ON/OFF indication.
- If the action is to be OFF, then the CLRBIT routine is invoked in order to clear a bit in the state portion of the holding buffer corresponding to the relay number to service, at which point control continues at Connector F
of FIGURE 27. On the other hand, if an ON action was desired, then the SETBIT routine is invoked in order to set a bit in the state portion of the holding buffer corresponding to the relay number to service. The process continues at Connector F.
~L~33~
The read status in new format command is described in FIGURE 30 at Connector Q. The TEMP0 register is set equal to the A8JUMP value containing address bit A8 and the jumper definition for the TRD. TEMPl is set equal to the STATUS register of the TRD. The flag register is then set to a value of 18H and a pointer to TEMP0 is established. Continuing at Connector L, an indication is made that two bytes of data are to be transmitted and the process continues at Connector M.
Connector R describes the read threshold in new format process. The IBGTHR register is pointed to and the flag is set equal to a value of 20H. Continuing through Connector U, four bytes of data are indicated to be sent. At Connector M, the previously determined line free requirement and the number of bytes to send are merged together. The process continues with an SENDIT
rou-tine described in FIGURE 33.
Connector N of FIGURE 31 is entered whenever there is an immediate or interactive request for data.
A collision line free requirement is indicated and control continues at Connec-tor P. Connector O is entered whenever there is a deferred request for data and a deferred line free requirement is indicated when control continuing at Connector P.
Connector P describes the decoding performed on the auxiliary flags for the read data request. Data Field DF0 is pointed to and a test is made of the auxiliary flag in that position to determine if it is equal to 0. If so, then a request for system status is indica-ted and control continues at Connector Q of FIGURE 30. If the auxiliary flag is equal to 1, then receiver thresholds are being requested and control continues at Connector R
of FIGURE 30. An auxiliary flag value of 2 indicates a desire to return the data line counters (good or bad message counts~ and control continues at Connector T of FIGURE 32. An auxiliary flag value of 3 indicates a ~L2~3~
request for ROM code version handled at Connec-tor V of FIGURE 32. Finally, an auxiliary flag equal to 4 indicates a desire -to return relay states. The Elat is set equal to a value of 2CH and control continues at Connector S
of FIGURE 25. If no auxiliary Elag can be decoded, then the decode routine aborts to Connector B of FIGURE 24.
FIGURE 32, Connector T describes the process for returning the data line counters. The GODMSG
register is pointed to and the flag is set to a value of 25H with control continuing at Connector U of FIGURE 30.
The return ROM code version request is handled at Connector V. A pointer to TEMP0 is established and TEMP0 is then set equal to the ROM code version number.
One byte of data to be sent is indicated, and the flag is set to a value of 28H. Control continues at Connector M
of FIGURE 30.
The SENDIT routine is described in FIGURE 33.
It is responsible for placing data required for transmission into the output buffers and then determining if immediate transmission requirements are needed. If 5ENDIT performs the actual transmission of a message in an interactive data transmission, then it will test the line free requirements in order to clear out previously established receiver thresholds if the line goes free upon successful transmission of the data.
SENDIT places the data being pointed to into the proper output buffer using the flag, line free request, and number of bytes to send by invoking the BLDTBF routine. A test is then performed in order to determine if a deferred line free requirement is needed.
If so, then the process CLRBNK is invoked, which is described in FIGURE 27 Connector F. Otherwise, if an immediate transmission is required, then a test is performed in order to determine if both banks are being requested. If so, then the immediate transmission of the 33~;~6 - 50 - LD-~147 flrst bank is postponed and -the process continues with the CLRBNK routine. If only one bank of information is to be transmitted, then the line low timeout is set equal to the maximum interblock gap time and the line high timer is set to the minimum. The BITINP routine is then invoked in order to wait for the final IBG of the interactive trans-mission message to complete; at which point the transmit process is invoked in order to transmit out the required data.
If at any time during the transmission a collision is detected, then the process will continue as indicated on the diagram. Otherwise~ a delay will be invoked in order to allow the line to go from its low impedance state (from the final IBG) to the high impedance state (50 microseconds). The line high timeout is then set equal to the line free threshold value and the process BITIN4 is invoked in order to determine if the line is active.
If the line does not go active, then RVSTAT is cleared indicating a line free condition and the process continues as indicated. If the line did go active then the controlling device has reestablished control of the data line. Therefore, the receiver thresholds are not to be cleared. The good message counter is incremented and the process continues at the DECODE2, FIGURE 24 Connector B.
The address check routine ADRCHK is described in FIGURE 34. It is responsible for verifying that a message in the receiver buffer is, in fact, addressed to the proper transceiver decoder. In addition, it will verify the correctness of the message by performing a nibble parity check or checksum verification of the message. If both the address and check portions of the message are correct, then three registers will be set to the proper values for the flag, data field 0, and data field 1.
The description of ADRCHK begins with FIGURE 34.
The proper receiver buffer is pointed to for the desired ~3~6 bank along ~ith the A8JUMP register. The head of the buffer is fetched in order to get the flag. A test is then performed to determine if this is a possible new mode message by examining the FA bit (or bit DBl) of the flag to see if it is set. If so, then con-trol continues at Connector G of FIGURE 36. Otherwise, address bit A8 of the transceiver decoder is compared with that received.
If there is not an A8 match, then continuing with Connector A, the RCVFLG bank and mode indication are cleared from RVSTAT and the address check routine returns. Otherwise, if there is an address A8 match, -then a further test is performed to determine if it is a two address TRD. If so, then control continues at Connector E of FIGURE 35.
If the transceiver decoder is a single address device, then the address field is pointed to and compared with the TRD ADRLOW register by the ADRCHD procedure. If there is not a low address match, then the process aborts through Connector A. Otherwise, continuing through Connector B, an old mode bank 0 message is indicated. At Connector C, the parity word in the receiver buffer is pointed to and saved for later comparison. Next a nibble parity check is performed by the PARITY routine and a test is performed to determine if the received and calculated parity agree. If not, then ADRCHD aborts and clears the receiver flag RCVFLG at Connector A. Otherwise, the process continues at Connector D of FIGURE 35.
Continuing with the description of the ADRCHK
process at Connector D of FIGURE 35, the valid flag from the receiver buffer is saved and data field 0 in the buffer is pointed to along with FD0 storage by the ADRCHC procedure.
At Connector F, the copy routine is invoked in order to copy the received data (0, 1 or 2 bytes) from the receiver buffer to the DF0 and DFl storage registers as required.
The desired mode bits and bank bits are then set within RVSTAT by dispatching through the RVSORL routineO
Connector E is entered whenever an old mode ~2~3~
two address TRD is to be verified. The process ADRCHD
is invoked in order to point to -the address field in the buffer and compare this with the TRD ADRLOW. Data bit DB0 of the result is then masked out. (This least significant bit determines the bank that the message was intended for in a two address TRD. DB0 equals to 0 corresponds to bank 0 and DB0 equals to 1 corresponds to bank 1.) If there is no address match, then the process aborts at Connector A of FIGURE 34. Otherwise, the old mode type message for bank 1 is indicated. A test is then performed to determine if the message in fact was to bank 1 by testing at DB0 of the received address field.
If it was to bank 1, then the process continues at Connector C of FIGURE 34. Otherwise, the process continues at Connector B of FIGURE 34.
Connector G of FIGURE 36 is entered whenever there is a possible new mode message. A test is performed on Bit FB (DB0 of the flag word) to determine if it is a 1. If so, then the new mode addressing is not being used and the process aborts via Connector A of FIGURE 34. Othersie, a test is performed of the universal address bit U within the high address word. If U is equal to 1, then the process continues at Connector I of FIGURE 38.
Otherwise, universal addressing is not being used. The high address word is fetched from the buffer and it is compared with address bi-t A8 of the TRD. If there is not a match, then the process aborts at Connector A. Other-wise, the low address field is pointed to in the buffer and compared to the ADRLOW storage register by the rou-tine ADRCHD. A test is then performed to determine if the transceiver is a single address type. If so, then a test is made to determine if the low address received and that contained in the ADRLOW register compare. If not, the process aborts at Connector A. Otherwise, it continues as indicated on the diagram. If the device was a two address TRD, then Bit DB0 of the result of the comparison of ADRLOW and received low address field is masked off.
If the remaining address bits do not compare then the process aborts at Connector A. Otherwise, a new mode message for bank 1 is indicated and a test is performed on address bit A0 to see if it is set to 0 indicating a bank 0 message. If so, then the indication is changed to a new mode bank 0 message. Otherwise, it is left as a new mode bank 1 message and control continues at Connector H of FIGURE 37.
Continuing with the description of the new mode address checking at Connector H of FIGURE 37, the head of the receiver buffer is pointed to. Following this, the number of bytes received is calculated by taking the l's complement of the sum of the down-counting byte counter register plus the l's complement of 7. The number of data fields received is calculated by subtracting 4 from the total number of bytes received. Next the checksum register is initialized to a value of 80H. A type from the receiver buffer is then summed into the checksum register and the pointer to the receiver buffer is incremented to the next byte. The number of bytes received is decremented and a -test is made to determine if there are any additional bytes to sum into the checksum.
If so, then the process of summing the bytes incrementing the pointer, and decrementing the byte count continues until all bytes have been summed into the checksum.
When all bytes have been checked, then a test is made to determine if the final checksum value is equal to 0.
If not, then the process aborts at Connector A of FIGURE 34. Otherwise, the head of the buffer is saved as a valid flag, the low address field is pointed to and data field storage register is pointed to by the process ADRCHC. Data field 0 is then pointed to in the receiver - buffer by incrementing the buffer pointer and control continues at Connector F of FIGURE 35.
Whenever it is determined that universal - - :
, .
~3;~5~
-- 5'1 - LD--9147 addressing is being used within a new mode, Connector I
of FIGURE 3~ is entered. A test is performed in order to determine if all bits other than the U (or DB7) bit of the high address field is equal to 0. If so, then a Family universal address is being used and control continues at Connector K of FIGURE 39. Otherwise, a -test is made of the high address field to determine if all of the bits are equal to 1. If not, and an improper address has been received then the routine aborts at Connector A of FIGURE 34. Otherwise, the low address field is pointed to and a further test is performed to insure that it also is equal to all l's. If not, the process aborts. Other-wise, it continues at Connector J. A new mode transmission for bank 0 is indicated and a test is performed to determine if -the device is a single address TRD. If so, then control continues at Connector H of FIGURE 37. Otherwise, the indicator is updated to reflect a new mode transmission for both banks 0 and 1. (A universally addressed message transmi-tted to a two bank TRD will result in actions being performed on bo~h banks of that transceiver decoder.) FIGURE 39 describes the testing involved for a Family type universal address. At Connector K, the low address field is pointed to and a test is made of that field to determine if it is equal to 0. If so, then a Family address for a relay transceiver has been issued and control continues at Connector J of FIGURE 38.
Otherwise, the address check utility aborts at Connector A of FIGURE 34.
FIGURE 40 describes the two subroutines required by the ADRCHK process. ADRCHC points to the head of the receiver buffer, gets the received flag word, masks out the two least significant bits FAFB and saves the result as the flag. Next, DF0 storage register is pointed to.
Finally a value of 2 is added to the receiver buffer pointer such that it will point to data field 0 is an old type message or the low address field if it is a new type -~2~ 6 - 55 - LD-91~7 message. This comple-tes -the subroutine which then returns. ADRCHD is used to order the point to the ADRLOW storage register of the transceiver decoder, point to the low address field by incrementing the receiver buffer pointer and to compare the low address in the buffer with the ADRLOW storage register. This completes the routine which then returns to the invoking procedure.
This completes the description of the Decoder Handler Module which provides a means of verifying the address of a message received; a means of distinguishing between one of two banks for a message received; a means of recognizing two formats of messages (old and new); a means of aborting the decode of a message if an invalud format is used; a means of decoding multiple flag words; a means of selecting which group of flags are to be decoded based on the presence or absence of a manufacturing installed jumper; a means of eliminating the response to old format commands by evaluating the presence or absence of a COMM jumper which can be Manufacturing installed;
a means of allowing multiple number of data bytes to be input from the common data line; a means for decoding auxiliary flag commands for various types of devices which may or may not be jumper selectable; a means for indicating immediate or deferred response to requests for data transmission; a means of passing control of the data line from one device to the transceiver decoder in an immediate mode of transmission; a means of determining if the controlling device desires to regain control of the data line upon completion of an immediate transmission of data from the transceiver decoder; a means of deferring an immediate request for data if that request is to both banks simultaneously (as would be the case if a universal address command was used); a means for performing a modified checksum against the received message with an initial value of 8OH in order to avoid the proper decoding - of a message with all 0 or all 1 values; a means of ~33S~
performing a nibble parity check as required for the old format messages; a means for providing the proper setup of the following buffers: the relay buffer for either I6 or individual relay commands, and the switchleg mask buffer;
a means of reading the following TRD data registers: the relay state register, the transceiver status, .he receiver threshold register, the data line counter register, and the ROM code version; a means of counting the number of properly decoded messages by incrementing a good message counter; a means of automatically clearing the status register of the transceiver decoder upon reception of a command to reestablish the relay data; a means of allowing individual relay control; and a means of generating a special flag on the request for relay states or automatic transmission of relay states to indicate the detection of an overcurrent condition on the relay transceiver decoder.
This information can be used by a controlling device to annunciate a failure or take corrective action.
Power-Up Ex'ecutive a'nd'Misc'e'l'laneous Mod'ules Processor 300, on Powerup or user initiated reset, begins to execute its internal ROM memory code beginning with Address 0 (which corresponds to the PWRUP
routine). The powerup routine is responsible for proper initialization of the microprocessor and associated external hardware and for placing a powerup/reset message into the transmitter output buffer for subsequent transmission over the common data line. FIGURE 41 describes the powerup routine, PWRUP, for the relay transceiver.
The external overcurrent detection hardware is disabled by disabling the ex-ternal interrupt. Next the internal timer (which is set for six millisecond timer interrupt intervals) is disabled. The stack is then reset and the proper bank of working registers is selected.
Continuing with the description, the watchdog protection circuit hardware is recharged to avoid a protective reset of the microprocessor by issuing 50 pulses to the recharge 3~
line. At this point the RESET routine is invoked in order to initialize the I/O and internal registers of the micro-processor ~including the proper memory registers) and identify the transceiver decoder module type. Next, powerup/reset indication is set into the status register of the TRD. A test is then made to determine if the origin of the reset was manual or not. If a manual reset (button actuated by operator) was detected then a relay test function is required and the process RLYTST is invoked (FIGURE 48). Otherwise, the microprocessor enters a delay period of 25 seconds in order to allow the system to stabilize and to give the proper interval of time for the relay test functions. At the end of the 25 second delay 7 the relay test sta-tus is cleared and the relay drivers are turned to their OFF or no current condition. The register TEMP0 is set equal to the A8JUMP register; register TEMP1 is set equal to STATUS;
the flag reqister is set equal to 18H; a pointer is established to the TEMP0 register; a high priority message with two data bytes and collision line free requirement is indicated and ~inally the powerup reset message is placed into the output buffer for transmission by the previously described BLDTBF routine. This completes the powerup procedure which then continues by entering the executive.
The reset procedure, RESET, is described in FIGURE 42 for the relay TRD. It is responsible for initializing the I/O and all memory required by the micro-processor device. It will identify the module, indicate a line free error in order to require receiver resynchroniza-tion and start the appropriate timers. Beginning with the entry to RESET both the sink and source drivers are turned to their OFF or no current condition. A pointer is then established to the first byte in the microprocessor RAM
above the relay states. All RAM and registers above the relay states but below the TESTST register are cleared to a 0 value. ADRLOW and A8JUMP along with the flag ' ~ - . ' , ' ~ ' ' . .
~233S~LG
indica~ing single or dual address TRD's is established by the procedure MODIDN. Following this, the TRD STATUS
register is cleared and RVSTAT is set equal to a line free error in order to require receiver resynchronization on a maximum line free interval before subsequent reception of any additional data over the common data line. RESET
completes by restarting the 6 millisecond elapsed timer by invoking the procedure CLRST0; which, upon completion, returns to the invoking procedure. It should be noted that the RESET procedure does not alter the state of either the relay states register of the TESTST register.
The executive is the main working procedure of the transceiver decoder. It is entered upon completion of the powerup procedure. Once the executive has been invoked, the only exit from the endless loop of the executive is via a reset (which would occur on power up/watchdog or operator initiated manual button reset).
However, it is possible for the activity controlled by the executive to be suspended for a brief interval of time in order to service either the internal timer interrupt or an external interrupt indicating an over-current detection for the relay transceiver. It should be noted that the internal timer is set for a 6 milli-second interval and is always active.
FIGURE 43 describes the EXEC executive routine used by the relay transceiver. The stack is reset and the working set of registers selected. Following this, the watchdog timer is recharged by issuing 10 strobes to the appropriate hardware. At this point, a receiver service is performed in order to input any possible data from the data line by invoking the previously described RCVSRV
routine (in the aforementioned Miller U.S. Patent 4,367,414).
On completion of this task, the DECODE process is invoked in order to decode any received data and to perform the desired actions. Following the decode of data a trans-mitter service is performed in order to output any 335~6 possible da-ta to the data line by calling the routine ~MTSRV (described in the aforementioned Miller U.S.
Patent 4,367,~14). Next a relay service is invoked in order to update any desired relays by the RLYSRV
subroutine. Finally, the module is reidentified in order to keep the transceiver address and jumper registers set to the most current position (it is possible to change the jumper or address configuration at any time). On completion of the MODIDN process, the executive continues to recharge the watchdog timer and invoke the 5 main sub-rou-tines until such time that the microprocessor is reset due to a powerup, watchdog or operator initiated button reset.
FIGURE 44 describes the module identification routine used by the relay TRD. Since each -transceiver decoder has a user selectable address to which it will respond as well as user and manufacturing installed jumpers which configure the method in which the transceiver decoder operates, the module identification routine is necessary in order to input the desired address and jumper configurations for subsequent later action and processing by the TRD.
On entry to the MODIDN procedure, a test is performed to determine if either relays are being serviced or if the data line is active. If so, then the MODIDM process aborts as indicated. (It would not be desirable to reidentify the module due to the lengthy process involved - if the data line was active. Also, due to the multiplexed time sharing nature of the address input and relay driver hardware,to attempt to identify the module while servicing relays would result in improper action on the relays themselves.) If, on the other hand, no current data line or relay activity was indicated, then the source and sink drivers would then be turned to their OFF or no current condition. The jumper hardward would be enabled for input and the A8JUMP register would be set to the value obtained by inputting the jumper configuration. The jumper input :123~
hardware is then disabled in order to reduce power consump-tion and a flag is set indicating a one or two address TRD based on the configuration of the size jumper. A temporary register is then established and cleared and an indication is made to input 8 bits of address data. Beginning with the loop on FIGURE 44, the temporary register is rotated one bit position to the left in order to position its contents for the next address bit to be input. Following this, an input word is fetched from a table of values described in the address input multiplexing table based on the current bit number.
The address multiplexer hardware is then enabled and a single bit of address data is input. This address bit is isolated and "ORed" with other bits in the temporary register. The updated temporary is then saved and a test is performed to determine if all bits have been input.
This procedure of rotating the temporary, selecting an output word to enable the proper address multiplexer, inputting the bit and merging it with a temporary continues until such time that all bits have been input. Once all address bits are in, a test is made to determine if the device is a single address TRD. If not, then ibt DB0 of the temporary is cleared. ~A two address device will respond to two addresses. The even address, i.d., when DB0 equals 0 corresponds to Bank 0; the odd address when DBl equals 1 corresponds to Bank 1.) On the other hand, if the device was a single address TRD, then DB0 would not be altered and the resulting address could be either even or odd. ADRLOW is then set equal to the 8 least significant address bits contained in the temporary and then the address multiplex hardware is turned off.
This completes the module identification process which then returns to the invoking utility.
As mentioned above, the transceiver decoder has a continuously running internal 6 millisecond timer which is used to sequence desired actions. The timer is ~L~3;3~
- 61 - LD-91g7 an internal programmable device which generates a -timer interrupt whenever a programmed register has been incremented to a 0 value. This timer runs continuously and is disabled only when being serviced or updated.
FIGURE 45 describes the timer interrupt service routine TIMINT. The purpose of this routine is to - service a timer interrupt which occurs every 6 milli-seconds and to increment by 1 an elapsed timer counter.
On detection of a timer in-terrupt, the timer is stopped and the timer registers are selected (this is Register Set 1 of processor 300). The current accumulator value is saved in order to free the accumulator for other usages and the 6 millisecond timer value is fetched. Following this, the timer is initialized for the next 6 millisecond interrupt and the accumulator is restored to its value on entry to the TIMINT procedure. The elapsed timer counter is then incremented by 1 and the internal hardware timer flag is cleared in case it remains set. Upon exit from the timer interrupt service procedure, the previously active working register bank is restored (this is the standard register bank or register bank 0 of processor 300).
The elapsed timer is continuously updated by the 6 millisecond timer interrupts. One or more additional timers can be driven off this elapsed time counter in such a way that they may be main-tained current by summing in the elapsed time counts. This is the responsibility of the TIMSRV procedure described in FIGURE 46. On entry to the TIMSRV process the timer interrupt is disabled and the bank of timer registers are selected. Timer 0 is then set equal to the initial value of timer 0 plus the elapsed timer counter. The elapsed timer counter is then cleared and a test is made of the internal hardware timer flag to determine if it was set. If so, an immediate branch is taken to the TIMINT procedure (the internal - 35 timer flag would be set if a timer interrupt occurred coincidentally with the entry to the TIMSRV process).
:~ , ~l2~S~L6 If the timer interrupt flag was not set, then the working register bank would be restored and the procedure would complete and return to the invoking process. It should be noted that the TIMSRV process is asynchronous of the timer interrupts and could be entered at any time. A maximum delay of up to 256 of the 6 millisecond timer counts could expire beEore losing accuracy in the timer 0 counter.
A process exists, described in FIGURE 47, called CLRST0 for initializing and starting the timer 0 counter.
The timer bank of registers is selected and the counts needed for the 6 millisecond interrupt duration are initialized. Following this, the timer is started by calling the TIMINT process. Next, the elapsed timer and timer 0 are both cleared and set equal to 0. Finally, the timer interrupt is enabled and on exit from the routine the working bank of registers is restored.
As described above, as part of the powerup procedure of the relay transceiver, a -test is performed to determine if the reset initiating -the powerup was manually invoked via an operator depressed but-ton. If that was the case, then a procedure called RLYTST (FIGURE
8) is invoked in order to test the mechanically latching relays associated with the TRD. The relay test procedure allows for three modes of testing relays. Due to the single button (i.e., the reset bu-tton) used for initiating the relay test functions, a somewhat involved sequence of - actions must take place in order to change from one mode to another. The three modes of relay testing are as follows: A11 ON/A11 OFF, individual relay test and automatic relay test. In the first case, an assumption is made that the transceiver decoder was las-t reset at some interval in the past greater than 25 seconds. If the operator depresses the reset button and then releases it (for approximately one second) one of two actions will take place. If any relay on the transceiver decoder is in an OFF position, then all relays on the transceiver 12~3~6 - 63 - LD 91~7 decoder will be turned ON. On the other hand, if all relays on the transceiver were already OFF, then depressing the reset button momen-tarily would cause all relays to turn to the ON condition. It is possible to alternate between -two possible sta-tes by allowing at least 25 seconds to transpire between actuations of -the reset button.
This mode of testing might also be utilized by a building operator in order to turn all loads ON or OFF as desired in the emergency condition tha-t might result -from a failure of a controlling device.
The second mode of relay test is known as the individual relay test. This function is actuated by multiple depressions of the reset button by the operator.
An assumption is again made that the transceiver decoder was last reset in an intervalof time no less than 25 seconds. The first depression of the reset button will cause all relays to turn ON or OFF as described above.
However, any subsequent actuations of -the reset button by -the operator that occur less than 25 seconds apart will cause entry to the individual relay tes-t. In this mode, a single relay will be turned ON and all other relays OFF. Every subsequent action of the reset button will cause -the next relay to go ON and all others to go OFF. This action will continue from relay #1 to #16, in order, for each of the two possible banks of relays.
(If the device is a two bank TRD, then relays 1 to 16 of the low address bank will cycle first followed by relays 1 to 16 of the high address bank.) The individual relay actuations will continue un-til such time that the operator allows the transceiver decoder to remain idle for a period of time greater than 25 seconds. (No reset button actuations.) It should be noted that this mode of testing would be useful during the installation of a transceiver decoder for tes-ting individual circuit - 35 actuations.
The final test mode is the automatic -test 33~ 9 mode. Once again it is assumed that the transceiver decoder has been inactive Eor a period of at least 25 seconds. To enter the automatic test cycle, the operator must depress and hold the reset button for a period in excess of 10 seconds. On the initial "make"
actuation of the reset switch the TRD will turn all relays ON or OFF (depending on their current state) as described for the first test mode. At the end of the 10 second period, the relays will begin to cycle automatically, in order, from relay l to 16 of the first bank followed by relays 1 to 16 of the second bank, if present. The button need not be held beyond the point that this automatic cycling begins. However, to continue for another pass of the automatic cycle, it would be necessary to again depress and hold the reset button before the last relay is cycled.
If this is the case then another pass will take place up to a maximum of three passes. At that point, the machine will exit the relay test procedure and begin normal activities. (This is done in order to avoid a failure mechanism in which the reset button would remain in its closed condition, potentially locking out the transceiver decoder :Erom programmable commands.) The automatic test cycle was intended for use by the Manufacturing facility in order to test the completed assembly of the transceiver decoder.
It should be noted that on completion of any of the three relay test modes the transceiver decoder will transmit a Powerup status message indicating to a controlling device that the transceiver was reset and that the reset occurred due to a manual operator initiated button actuation. Because of this, a controlling device would then be able to reestablish the proper relay patterns for the transceiver decoder that were in effect before the device was manipulated by the operator.
FIGURE 48 describes the firs~ portion of the RLYTST routine which begins by setting the TRD STATUS
.~ :
, ~L~33~
register to show a reset and manual but-ton entry. A
test is then performed to determine if -the register TESTST (the s-tatus register for the relay test module) is not equal to 0. If this condition is met, then the process continues at Connector B of FIGURE ~9. On the other hand, if TESTST was equal to 0, then a test is made of the relay states register to determine if it is not equal to 0. If the relay test register is not equal to 0, then a test is made to determine if all relays are ON. If not, khen the process continues as indicated on the diagram. If not, then the process continues as indicated on the diagram. Otherwise, a desire to turn all relays OFF is indicated and the process continues as indicated on the diagram. On the other hand, if the relay states register W2S equal to 0 (indicating that all relays were currently OFF) then it is desirable to turn all relays ON and that is so indicated. Following this, the procedure INSTA0 is invoked in order to install the desired delay state. A test is then performed to determine if the reset button is still being held by the operator. If not, then the process continues at Connector E of FIGURE 49.
Otherwise, if the button is still held, then the 10 second delay is entered. It should be noted that there are -two possible ways to exit this 10 second delay. One would be by completing the 10 second delay which would imply that the reset button was still being held. The other would be if the reset button was released and depressed again.
This would cause new entry through the beginning of the RLYTST routine until such time -that the button is detected to be no longer depressed. (The inherent delay required to install 16 to 32 relays yields enough time for the operator to depress and release the button in order for it to be detected on the next pass through the RLYTST
procedure. It is for this reason that it is essential that the operator depress and release the button during the first or second test mode before the last relay is updated.
.;
, ' `
' ~L~3~6 This corresponds to approximately a one second button depression. If this is not the case, then at the conclusion of the 10 second delay, the tes-t will assume to be in automatic, all relays will turn OFF and the process will abort.) At the end of the 10 second delay, an automa-tic test is indicated for relay 0 pass 0.
following this, at Connector A, all relays are turned OFF by the INSTA0 process. The relay number is then set equal to 0 and a test is made to determine if the last pass is complete. If so, the process continues at Connector C. Otherwise, a further test is performed to determine if the button is still depressed. I-f not, then the process continues at Connector C. Otherwise, it continues at Connector B of FIGURE 49.
The relay test module continues at Connector B of FIGURE 49 where a desired to turn OFF all relays except the relay number to be turned ON
is indicated and then installed by the INSTAL process.
Following this, a test is made to determine if the first bank of 16 relays has completed processing. If not, then a further test is performed to determine if the last bank of 16 relays has completed processing. If so, then the process continues at Connector D. If neither the first bank nor the last bank of 16 relays has completed processing then the procedure continues as indicated on the diagram. However, if the first bank of 16 relays had completed processing then a test is performed to determine if the device was a single address TRD. If so, a branch is taken to Connector D. Otherwise, the relay number is incremented and a test is made to determine if the individual test mode flag is ON. If not, then the - process continues the loop of automatically cycling all relays until the end of either the first or second bank is detected. On the other hand, if an individual test mode was selected, then the process aborts through Connector C which returns. At Connector D, which is entered at the end of a pass of 16 or 32 relays, depending 3.~
- 67 - Ln 91~7 on the TRD size, a test is made of the individual relay test flag. If it is set, then the individual relay test flag is set and the relay number is set equal to 0, completing the process. On the other hand, if the individual relay -test flay was not set, -~hen the device must have been automatically cycling and the pass count is incremented with the process continuing at Connector A
of FIGURE 48.
FIGURE 50 describes the procedure invoked in order to install the desired relay states. At entry to INSTA0, the routine will insure that all relays are turned OFF. At entry to INSTAL, all relays with the exception of one relay to be turned ON are turned OFF.
A pointer is established to bank 0 working buffers and status registers for the relay service module. The SETUP routine is invoked in order to set up the working and status buffers as required by relay service. A
check is then made to determine if the device is a single address TRD. If not, the same two steps of pointing to the working buffers and status registers for bank 1 and setting up the buffers by invoking the Setup procedure for bank 1 are repeated. Otherwise, in continuing with the process, a test is made to determine if there is any relay to turn ON. If so, then a bit corresponding to the relay number to turn ON is set in the desired s-tate portion of the relay working buffer. Otherwise, a watchdog strobe is performed followed by the installation of the desired relay states by the RLYSRV process. Next a test is made to determine if the end of the relay service has been reached. If not, the pulsing of the watchdog strobe and invocation of the RLYSRV module continues until such time that the relay service has reached its conclusion.
At this time, the relay module status registers are cleared and the installation procedure returns to the invoking process.
Finally, FIGURE 51 describes the Setup procedure ~L2~35~G
- 6~ - LD 9147 used to initialize the working register and relay module status register to their proper values -Eor relay installation.
The mask portion of the relay buffer is set to an all 1 value indica-ting a service requirement for all relays. The state portion of the working buffer is then cleared -to 0 indicating an all OFF condition. Next an active relay service is indicated in the relay module status along with pass equals to 2 and relay number equals to 0. (It was decided to use the shorter interval of time for processing of relay cycles in order to shorten the length of time needed to make an entire pass while automatically cycling the relays.) This completes the Setup routine which then returns.
This completes the description of the Powerup, executive, reset and other miscellaneous modules. The Powerup rou-tine provides for the following: a means of generating a Powerup/Status message for subsequent transmission to a monitoring or controlling device; a means of invoking a reset procedure to initialize I/O
devices and internal registers; a means of initiating the watchdog reset hardware; a means of initializing the machine to a known internal state, a means of indicating a manually initiated reset action; and a means of invoking a relay test procedure.
The executive provides for: a means of periodically strobing a watchdog timer in order to indicate normal operation; a means of resetting the stack and working register bank in order to counteract any possible incorrect action due to spurious signals - which may have altered the machine state; and a means of providing the functionality of the transceiver decoder by executing an executive loop of the desired functions forever.
The reset process provides for: a means of initializing I/O to a known condition; a means for initializing all desired memory registers to 0, a means of allowing the relay state register to retain its .
:3Læ~3~
current value in the case of a relay TRD; a means of causing the receiver to resynchronize on a maximum line free timeout; a means of clearing the good and bad message counters to 0 values; a means of starting and clearing the proper timer counters; and a means of halting any current actions that might be pending in the transceiver decoder (such as relay processing in progress or messages awaiting decoding in the receiver buffer).
The timer routines provide for: a means of establishing a periodic 6 millisecond interval timer;
a means for counting the timer interrupts and retaining a sum of the number of times the interrupt has occurred in an 8 bit elapsed timer counter; a means of providing one or more counters to which the elapsed time counter is added in order to provide for long intervals to be -times; a means of clearing to 0 and restarting one or more timer counters; and a means of deferring until a convenient time the servicing of the elapsed time counter.
The module identifier provides for: a means of inputting a set of 8 user or manufacturing installed jumpers to dynamically or statically configure the transceiver decoder; a means of operating a multiplexer circuit in order to allow the inputting of 8 user selectable address lines; a means of identifying via a flag a one or two address transceiver decoder; a means of disabling the jumper input hardware in order to reduce power consumption; a means of multiplexing the address input circuit with the relay driver circuitry; a means of detecting and avoiding a conflict with the operation of the address multiplexer circuit and other external hardware; and a means of allowing the address inputs or mode selector jumpers to be dynamically varied by the user and detected and acted upon the transceiver decoder.
Finally, the relay test module provides for:
a means of turning all relays ON or all relays OFF; a means of individually turning one relay ON while all 354~
- 70 - L~ 91~7 others are turned OFFi and a means for automatically cycling each relay ON then OFF.
While the invention has been described in connection with what is presently considered to be -the most practical and preferred embodiments, it is to be understood that the invention is not to be limited to the disclosed embodiments but on the contrary, is intended to cover various modifications and equivalent arrangements includes within the spirit and scope of the appended claims which scope is -to be accorded the broadest interpretatiGn so as to encompass all such modifications and equivalent structures.
ADRlNP GlADRS G2ADRS ADRINl ADRIN0 ADRSEN
Al 0 1 0 1 0 x x O
x x x x Referring now to FIGURES 4 and 5 there is shown in general block diagram form the functional units carried out by firmware associated with processor 300 shown in FIGURE 1. This firmware is embodied in the object code listing set forth in complete form in Appendix 1. The function shown in FIGURES ~ and 5 are detailed further in FIGURES 6-50.
The relay transceiver is comprised of the previously described hardware apparatus and several soft-ware or firmware procedure and processes described below.
The block diagram of the relay transceiver is depicted in FIGURES ~ and 5 and provides a functional description of each of the software process blocks.
Referring now to FIGUR~ ~, the sequential control unit is formed by the TIMINT (timer interrupt service routine) and the executive (EXEC) routines. The purpose of this section is to provide the timing (6 msec timer) and monitor the status of the various other processes. It is further responsible for the task dispatching to all process functions.
The address input sequence and address and jumper buffer holding registers described in the MODIDN
process provides a means of uniquely identifying a relay . ~
.
33~i~L6 - 26 LD~9147 transceiver, as well as configuring the product via user or manufacturing installed jumpers to suppor-t various select-able Eeatures.
The command decoder operates upon data contained in the memory buffer area consisting of messages received from the data line receiver. The DECODE process checks the validity of the messages (through parity or checksum calculations), the proper address ~ADRCHK process) and the command type. The command decoder will place the proper data into the memory buffer area and status registers of the sequential control unit for subsequent dispatching to the proper task to perform the desired action. The decoding of a valid message results in the incrementing of a good message count register used for internal system diagnostics.
A receiver means (RCVSRV) similar to that described in the aforementioned Miller U.S. Patent 4,367,414 can be utilized in order to convert the incoming serial data stream into a parallel form in the memory buffer area suitable for command decoding.
In addition, a transmitting means (XMTSRV) similar to -tha-t described in the aforementioned Miller U.S. Patent 4,367,414 can be utilized in order to convert parallel data from the memory buffer area to the serial format of the common data line.
FIGURE 5 details the operation of the relay service process. A relay output sequencer (RLYSRV) determines the proper timing intervals for pulses of relay actuation current in conjunction with the TIMINT
timer interrupt service routine. Once the proper relay for service is determined by the output sequencer (and - the SETABX and FNXTRL process~, commands are given to the relay source output buffer and relay sink output buffer (described in the SETSRC and SETSNK process) in order -to actuate the relay multiplexing hardware and 1~:3~L6 - 27 - LD-91~7 install the desired relay state.
An overcurrent protect control function is shown on the diagram and is comprised of the external overcurrent detect and limiting hardware and the OVCINT
overcurrent interrupt service routine which stops the flow of current should an overcurrent condition be detec-ted.
Finally, a relay test sequencer exists which can be invoked by a user in order to assist in proper installation of the product and diagnose faulty wiring or relays. This function is described in the RLYTST
process.
Relay Handler Module (Firmware That-Controls Relay Drive Ci'rcui*s'a'nd Driv'e'r P'rotec't'i'on C'i'rcuit) The relay Handler is a collection of several software procedures whose purpose is install desired ON/OFF states onto mechanically latching relays. A typical relay transceiver is comprised of 16 or 32 mechanically latching relays. Each group of 16 relays has a bank - associated with it resulting in a maximum of 2 banks for ~ 32 relay transceivers. The 2 banks correspond to addresses assigned to each relay transceiver. Therefore, each relay transceiver can respond to up to 2 addresses. The even address is associated with Bank 0 while the odd address is associated with Bank 1. If a transceiver is defined to have a single address for response, that address will be equal to the binary selection applied by the user to the address switch on the transceiver. This address, in the case of a single address TRD, can be either even or odd.
Relay processing occurs in a sequential fashion beginning with the first relay of a bank and continuing in order through the last relay of a bank. Three passes of installation will be made for each bank. These three passes, numbered 1, 2, 3, correspond to progressively increasing current pulse duration applied to the relay coil (pass 1 is a dura-tion of 12 milliseconds; pass 2 ~2335~
- 28 - I,D-9147 is a duration of 24 milliseconds; and pass 3 is a duration of 48 milliseconds).
Since a normally functioning mechanically latching relay will respond to a state change within the shortest - 5 interval of time (pass 1), the throughput is determined by this pass and corresponds to 12 milliseconds per relay.
However, due to possible parametric shifts of relay characteristics, it is possible that some relays might not change their state within the pulse duration of pass 1. Subsequent passes of increasing pulse width are then applied in order to change the state of any relay which may be responding in a more "sluggish" manner.
The 48 millisecond pulse width of pass 3 was determined to be the maximum time required for a change in state to occur in a mechanically latching relay with an abnormal shift in its parameters.
~ n entire bank of relays is serviced within a given pass. At the end of each pass, an attempt is made to install any data for the other bank of relays.
By swapping banks of relays every pass it is possible to maximize the observable throughput for both banks.
This is because a bank of relays does not have to wait for the other bank's three passes of 12, 24 and 48 milli-seconds to complete in order to begin servicing for i-ts initial pass. ~However, it must wait for the current pass to complete.~
In addition to installing desired states onto the up to two banks of mechanically latching relays, the relay handler will perform the required multiplexing for the 64 ON/OFF coils of the relays through its 8 bit output structures and associated relay multiplexing hardware.
In addition, the handler also maintains a register of states for the relays containing the ON/OFF indications, and provides for infinite queuing of commands received over the common data line for altering the states of relays. Either individual relays, multiple relays or entire banks of ', '~
.. ..
- . :
.
~IL;;:33~6 16 relays can be altered. And, finally, the relay handler will recongize both overcurrent and undercurrent detections from the associated relay multiplexing hardeare whih may or may not be indicating an abnormal condition.
Before further analysis of the relay handler can be undertaken, it will be necessary to describe the data structures used in the servicing of relays. These data structures are utilized in such a manner as to allow the pulsing of a single relay coil at a time. The data structures are used in order to remember which relay coil is being pulsed as well as the desired duration of that pulse and information necessary to pulse additional relays - in the future. By coupling this information together with a proper interval timer, it is then possible for the microprocessor to initiate the pulsing of a relay coil and then continue with other non-rela-ted tasks such as communicating over the common data line. After the proper interval of pulsing has transpired, it is then possible to restore the state of the relay handler, by utilizing - 20 the data structures, and continue pulsing further relays.
There is a master status register (known as the Relay Module Status Register) which indicates if relay servicing has been active in the past and if so, which of the two banks were active. In addition to this master status register, there are additional registers which are duplicate for each bank of the transceiver. They are: the relay status register for a bank; the relay holding register for a bank; the relay working register for a bank and the relay states register for a bank.
The relay status register for each bank contains information indicating if that bank was active (in other words, was having relay states installed by the relay handler) as well as an indication if data is awaiting installation in the relay holding buffer. Also contained in the relay status register, for a bank that ~233~
- 30 - LD-91~7 is active, is the number of the relay that was last serviced, a pass number from 1 to 3 (which indicate the duration of the pulses to be applied to relay coils) and, if necessary, a flag indicating that the first relay of a given bank for a particular pass is to be installed without delay (this would indicate a need for immediate servicing of that relay without waiting the customary amount of time between servicing of relays).
Queuing of commands which affect the state of relays is achieved by placing the required data for the relay service into a relay holding regis-ter. This register is broken into two parts. The firs-t part, or mask portion of the holding register, is used to indicate the presence of a desired action for a given relay. A
"1" value in the mask portion of the register indicates a - need to service the relay number corresponding to that position (the first bit, data bit 0, corresponds to relay number l; the last bit, or data bit 15 of the register, corresponds to relay number 16). The second portion of the holding register contains the states desired for particular relays. A value of "1" will indicate a desired ON action, while a value of "0" will indicate a desired OFF action.
The relay working register is similar to the holding register in that it is broken into two parts, a mask and a state portion. However, it contains the actions which are to be installed onto the currently active bank of relays. Since this information is maintained separately from the holding register, it is then possible for an initial set of relay actions to be installed from the working register while future actions are being held in the relay holding register. The current actions on an active bank of relays will proceed to completion before information in the holding buffer will be acted upon.
The final data structure used by the relay handler module is a relay states register for each bank ~l2335i~6 of relays. This 16 bit register will contain a "1"
value in each position corresponding to a relay that is in the ON state and a "0" value in each position corresponding to a relay in the OFF state. Data Bit DB0 through DBl5 correspond to relays numbered 1 through 16.
The primary procedure of the relay handler module is the Relay Service Routine, RLYSRV. The Relay Service Routine is a procedure invoked by the main executive of the relay transceiver. Its purpose is to control the actions of the relay handler, manipulate and malntain the required data structures, and perform relay pulsing as needed. A flow diagram depicting the relay service process is indicated in FIGURES 6, 7 and 8.
Referring to FIGURE 6, on entry to the relay service routine, a test is made to determine if relays were being serviced in the past by checking the relay module status register. If relay processing was indeed ac-tive in the past, then the bank -that was active is restored by the SETABX routine such that the pass number, last relay number and immediate service re~uirement flag reflec-t the last action performed on that bank. If relays had not been sexvicing in the past, then the SETABX routine is invoked in order to process any relay data that may be waiting in the holding buffer for the low bank of relays.
If that process is successful, then flow continues as indica-ted in FIGURE 6. If it is not possible to make the low bank of relays active, a test ls made to determine if the transceiver is a two-Bank (32 relay) transceiver.
If the second bank of relays does not exist, then the process completes and control returns to the executive.
However, if the transceiver does contain two banks of relays, then the SETABX routine is called once more in order to process any relay actions that might be waiting in the holding buffer for the high bank of relays. If no data is awaiting servicing, then the process completes and control returns to the executive. Otherwise, the ~233~i46 pass number, last relay number, and flag indicating a need for immediate service has been established as indicated for the bank of relays that is now active. If immediate service for the bank is required, then the first relay to be serviced within -that bank is established by the FN~TR0 process. If a relay is found, then -the flow continues at connector B of FIGURE 7~ Otherwise, if a relay is not found then the process continues with connector C of FIGURE 8.
If immediate servicing for a bank is not required, then a selection is made of the time interval required before further servicing can occur. This corresponds to an interval of 12 milliseconds for pass 1, 24 milliseconds for pass 2 or 48 milliseconds for pass 3. If the required interval of time indicated by the pass number has not elapsed, then the process completes and control returns to the executive. Otherwise, the flow continues as indicated on FIGURE 7 at connector A.
The flow description of the relay service module continues with FIGURE 7. At connector A the process FNXTRL, or Find the Next Relay, is invoked in order to select the next relay to service. If a relay to service cannot be found, this indicates the end of a pass and the process continues with connector C, FIGURE 8. Otherwise, continuing to connector B, the state for the relay found is assumed to be OFF. The state bit corresponding to the relay number to service in the working buffer is then tested to see if an ON state is desired. If the relay is indeed to be turned ON, then the state to service register is set to ON and flow continues as indicated in FIGURE 7.
Both the source and sink drivers are turned to their OFF or no current condition. The overcurrent detection hardware is disabled and an undercurrent flag is - set in the STATUS register if needed by the procedure RELAY 9. SETSNK is then invoked in order to turn on the : L~33~
sink driver for the relay to service. SETSRC turns on the source driver for -the relay to service and following this test a test of the sta-te to service is performed.
If the relay was set to an ON condition, then a pointer is set to the low portion of the relay states register and a bit is set corresponding to the relay to service in the relay state register by the procedure SETBIT. On the other hand, if the relay was turned off then the low portion of the relay states register is pointed to and a bit is cleared corresponding to the relay to service in the relay state register by the procedure CLRBIT. Flow continues for both states by saving the relay to service as the last relay, dropping any immediate service requirement, and updating the relay status register for the proper bank. The procedure is then complete and control returns to the executive.
The final figure for the relay service module is FIGURE 3 which begins at connector C. This process is entered whenever the end of a pass has been detected.
Both source drivers are turned OFF and the overcurrent detec-tion hardware is disabled. If needed, a flag cor-responding to an undercurrent detection ls set in the STATUS register of the transceiver by the procedure RELAY 9.
The pass number is then incremented (to pass 2 or 3). A
test is then performed to determine if the service for the kank is now complete (on completion of pass 3). If the service has completed, then the status byte for the bank and the status byte for the relay module are cleared to indicate that the bank is no longer active. A test is then performed to see if the transmit buffer is currently in use. If so, then the process continues as indicated by the figure. Otherwise, a desire for deferred transmission is indicated and the relay state register is moved to the proper transmit buffer along with a flag indicating a transmission oE relay states. The process then continues as indicated in -the figure.
~33~
34 - LD 91~7 If the tes-t for completion of relays service determines that there are more passes to be performed on the bank, then the flag indicating a need for immediate service is set, the new pass number is saved, and the last relay number is set to 0 in the proper relay bank status register. A test is then made to determine if the transceiver contains two banks of relaysO If not, then the process completes. Otherwise, the opposite bank is requested and the procedure SETABX is invoked in order to attempt to make the opposi-te bank active for the next relay service. The procedure RLYSRV is then complete and control returns to the executive.
The routine, SETABXr or Set Active Bank X, is invoked by the relay service module, in order to activate a bank of relays for servicing. SETABX performs this task by restoring the required information for relay servicing and performing a transfer o~` relay data from the relay holding register to the relay working register, if required.
Referring to FIGURE 9, the flow description of the process SETABX, the status register for the desired bank is fetched. A test is then made to determine if that bank of relays was active for relay servicing in the past.
If so, then the last relay serviced, the pass number and the flat indicating an immediate service request is restored and flow continues as indicated. Otherwise, a further test is performed to determine if there is relay data waiting servicing in the relay holding register. If not, it is indicated that the bank cannot be made active and the process ends.
If there is data waiting servicing in the relay holding register, then the sta-tus register for the bank is updated to show an active indication and the flag indicating holding data available is cleared. Next the immediate service request flag is set, the pass number is initialized to pass 1 and the relay number is set to 0.
The holding buffer is then copied to the working buffer ~;~33S'~6 - 35 - LD-91~7 and an indication is given that the bank of relays is now ac-tive for servicing in the relay module status register (RLMODS). This completes the description of the SETABX
routine.
The routine FNXTRL, or find the Next Relay, is responsible for scanning the mask portion of the working register in order to detect relay positions that have been indicated for servicing. A flow chart for this routine is indicated in FIGURE 10.
The FNXTRL routine begins by checking the last relay serviced to see if it was relay 15. If so, then there are no more relays to be serviced and a flag is set to indicate that no relay is found. The process then aborts. If the last relay serviced was not number 15, then the mask portion of the working register is isolated corresponding to any relay position greater than the current relay. A test is then performed to determine if any relays remain to be serviced in -the bank. If not, an indication is made that no relay can be found and the routine exits. Otherwise, a 1 value is added to the relay register and the portion of the working register mask corresponding to the relay number in the relay register is isolated. A test is then performed to determine if there is a relay action present in that position. If so, then a flag is set to indicate that the relay number in the relay register has been found and the process exits successfully. If no relay action was present then the loop of adding 1 to the relay register and isolating the bit position corresponding to the number in the relay register and the test for relay action present in that position continues until such time that a relay is found to be active in that position.
As was described above in the RLYSRV module, whenever the initial service for a bank is made, a special procedure entitled FNXTR0 is called in order to find the first relay to service for a given bank.
~2~3~i~6 - 3~ - LD-9147 Referring again to FIGURE 10 for the FNXTR0 label; the relay register is set to relay number 0. Then the mask position of the working register corresponding -to relay number 0 is isolated and a test is performed to determine if there is relay action present in that position. If not, the flow continues as indicated on -the diagram~
If so, then an indication is made that the relay number in the relay register has been found and the procedure exits. This completes the description for the FNXTRL
routine.
The procedure RELAY9 is called by the relay service module in order to complete the servicing of a relay for a previous relay service. As indicated in FIGURE 11, the overcurrent detection hardware is disabled and a test is performed to determine if an undercurrent condition occurred while servicing the relay. If it did, then a bit is set in the STATUS register of the transceiver corresponding to an undercurrent detec-tion. Otherwise, both the sink and source driver are turned off as indicated completing the process.
SETSNK, or the Set Sink Driver routine described in FIGURE 2, is responsible for enabling the sink driver hardware for a relay service. As indicated, it will get a byte to output to the sink driver hardware ~5 (obtained form a lookup table) corresponding to the relay to service taking into account the ON/OFF indication.
The byte is then output to the sink driver and the process completes.
The SETSRC, or Set Source Driver routine described in FIGURE 13 operates in a similar fashion for setting the source driver to the desired condition. The byte to output to the source driver (obtained from a lookup table) corresponding to the relay to service and the bank indication is output to the source driver.
Following this, the overcurrent detection hardware is :
~233~
enabled completing the process.
The SETBIT and CLRBIT routines are two utilities responsible for setting a desired bit within a register or clearing a desired bit as needed. A Elow description for the SETBIT routine is given in FIGURE 14. A mask with a single 1 value in the position corresponding to the posi-tion to set is retrieved from a table. The desired bit is then set in the register by Oring the above value with the desired register. The new value is then saved as the updated register contents, completing the process which then exits to the calling routine.
FIGURE 15 depicts the flow for the Clear Bit routine. A mask with a single 1 value in the position corresponding to the position to clear is obtained from a table. Thi~ mask is next converted such that there is a single 0 value in the position to be cleared. The desired bit is then cleared by ANDing the above value with the desired register. This new value is then saved as the updated register, completing the process.
FIGURE 16 describes the overcurrent interrupt service routine which is entered whenever the external hardware detects an overcurrent condition while servicing relays. As depicted in the figure, the source driver is turned OFF following by the sink driver resulting in 0 current flow through the relay coil. A bit is then set within -the STATUS register corresponding to an over-current detection. The overcurrent detection hardware is then disabled to avoid further detection of the same overcurrent condition. The process then completes and control returns to the procedure in progress before the overcurrent detection interrupt occurred.
This completes the description of the Relay Handler Module. In summary, the Relay Handler provides a means of installing desired states onto mechanically latching relays; a means of performing the required multiplexing for actuation of the external hardware; a .
.
335i~6 - 38 - LD-91~7 means oE identifying and controlling two separate banks of relays; a means of staggered service of banks in order to maximize throughput; a means of maintaining a register of relay states; a means for infinitely ~ueuing commands for altering the relay states; a means for performing actions on individual, multiple or entire banks of relays;
a means of recognizing and indicating a detection of an undercurrent indication while servicing a relay; and finally, a means of recognizing and indicating the detection of an overcurrent condition and also disabling the relay multiplexing hardware in order to protect it from damage due to the overcurrent condition.
Momentary Pulsed Output for Mechanically Latching Rel~ays In order to provide a group of pulsed output devices from a normally mechanically latching relay transceiver, modifications to the previously described relay handler module were required. The object is to synthesize a pulsed output from a mechanically latching relay. In the normal relay service, each relay will receive three pulses of current in order to cause a state change to occur. These three pulses are of varying lengths in order to accommodate shifting relay parameters, as previously described. In order to implement the pulsed output TRD, it was decided that the first two passes would proceed as normal allowing standard relay installation to occur with 12 and 24 millisecond pulses.
However, for pass three, an additional procedure is invoked in order to force all of the relays OFF. This is done because a pulsed output is a momo-stable device (the device is normally in the OFF condition and will be pulsed to the ON condition briefly followed by a return to the OFF condition).
Referring back to FIGURE 7, there are locations indicated on the diagram for insertion of two procedures in order to implement the pulsed output TRD.
~.Z3;~
- 39 - LD-91~7 Referring now to FIGURE 17, there is a description of INS #l. The desired relay state is saved in a temporary regis-ter. Next, the desired relay state is set equal to the OFF condition. A test is then performed to determine iE the pass number for relay installation is equal to 3 (the final pass of ~8 milli-second duration). If not, -then the relay state desired is restored from the temporary register to its original OFF or ON value and the code continues at the point where the first insertion was made. On the other hand, if the pass was equal to 3, then the desired relay state is left in the forced OFF condition and the process continues a-t the point where the routine was inserted in the relay service module. The effect of this process is to allow normal OFF/ON state changes to occur on passes l and 2 while forcing an OFF state change to occur on the final pass (3).
The second insertion (INS #2) required to imple-ment the pulsed output is described in FIGURE 18. The desired relay state is restored from the temporary register to its original OFF or ON condition completing the inserted process. The program continues with the code remaining at the end of the second insertion. The original relay state is restored in the second insertion in order to insure that the relay state reyisters will have the proper OFF or ON indications built into them.
Had this not been performed, the relay states would indicate the monostable condition for the pulsed output (OFF). It was desired to allow the relay table to indicate reception and processing of a relay pulse command and not to indicate the actual ON/OFF state of the relays (which for the pulsed output would normally be the OFF condition).
By providing an alternate method, as described in the -two insertions, for installing relay states it is possible to provide a means of simulating a monostable output device with a bistable output device, i.e., a ~33~
mechanically latching relay. This modiEication allows the actua-tion of contactor type load devices which would normally require a pulsed actuated start or stop signal.
~arning Mode (Flicker) for Imminent Load Level Changes There is a need to provide a warning for imminent load changes. In a typical installation, for example, a small office with no windows and only a door, might contain only one lighting circuit. This circuit can have two possible conditions - either ON or OFF.
In a typical scheduled control application the lights or some other load for that office might be turned immediately to the OFF state resulting in a potential safety hazard for the occupant of that closed office space. A
traditional means for solving this problem would be to provide two or more lighting circuits enabling them to be controlled independently in such a means as to warn the occupant of an upcoming change in the load condition.
However, this method has a drawback in that it requires additional expense for extra controls and wiring.
This section describes a means of using a single point control circuit (typically lighting) in order to warn an occupant of an upcoming change in load condition. The warning indication consists of five steps. First, all desired loads are turned OFF. Next, a delay of 1-1/2 seconds follows. Third, all desired loads are turned back ON. Following this, a 30 second delay is entered. Finally, in the fifth step, all desired loads are turned back OFF. The OFF - Delay 1-1/2 Seconds - ON cycle serves to flick the lights and issues a warning to the occupant. The 30 second delay allows time for the occupant to override a pending load change.
Finally, the command to turn the loads OFF insures that unoccupied offices will have their lights turned off as desired.
In order to provide the warning function it 9L~33~
~ LD-9147 was necessary to modify three previously described routines. To begin with, due to the long time delays involved, an additional timer similar -to the first timer described, was created with 16 bit resolution for 6 milli-second timer interrupts in order to timeout the 1.5 and30 second time delay.
FIGURE l9 describes the modification to the relay service routine (of FIGURE 6) in order to provide warning mode. All that was necessary was the addition of an additional test, so indicated on the diagram, to determine if the relay service module was servicing a warning mode in the past. If not, then the flow continues as indicated on the diagram. Otherwise, the procedure continues with WARNS, the Warning Service Routine.
FIGURE 20 describes the modifications required for the SETAB~ routine (of FIGURE 9). To begin with, if the bank was previously active then an additional flag indicating either relay servicing or warning servicing must be established, as indicated on the diagram. In addition, if the bank was not active and relay data was not available in the holding register, then a test is made to determine if there is warning data waiting in the holding register. If not, then service is not active.
Otherwise, as indicated on -the diagram, the status register for the desired bank is set to indicate active warning service. The warning buffer holding flag is then cleared, pass 9 is set and the immediate first service flag is reset to 0. Next the warning holding buffer is copied to the mask portion of the working buffer and finally an active warning service is indicated for the proper bank in the relay module status.
FIGURE 21 describes the WARNS or Warning Service procedure. On entry to this process SETABX is invoked in order to active the desired bank for warning indication. A test is then performed to determine which ~L~33~
pass number is currently in process. Control branches to Con~ectors 0 or 1 of FIGURE 2~ or 2, 3 or 4 of FIGURE 23, as indicated.
Pass 0 is described on FIGURE 22 at Connector 0.
The purpose of this pass is to setup the relay holding buffer with the final relay states to be installed at the end of the warning. In addition, other operations necessary to perform the warning process are carried out.
On entry to Pass 0 a pointer is es-tablished to the mask por-tion of the proper relay holding buffer and additionallyto the current relay states buffer. Following this, all positions of the mask portion of the relay holding buffer are set to l's. Next, a pointer is established to the state portion of the relay holding buffer and proper bank warning holding buffer. The state portion of the relay holding buffer is then set equal to the original relay state word ANDed with the inverse of the warning buffer. Finally, a warning service is indicated, the immediate first service bit is set, and the pass counter is set to Pass 1.
The purpose of Pass 1 is to turn all desired relays OFF using 48 milliseconds width pulses, as indicated in FIGURE 22 connector 1. The immediate first service flag is checked. If it is not set, then a test is performed to determine if 48 milliseconds has passed since the last warning service. If not, then the process exists, as - indicated. Otherwise, the process con-tinues as it would in the case where the immediate first service bit had been set to a 1. The desired relay to install is found from the mask portion of the working buffer (by invoking FNXTRL) and is then turned OFF. Following this, the relay number is incremented and a test is performed to see if there are more relays to do. If there are, then the process exits, as indicated, otherwise the 16 bit - 35 timer is cleared and the pass counter is set to Pass ~, completing the actions required for Pass 1.
~33~
FIGURE 23 describes the actions required for Pass 2. The 16 bit timer is tested to determine if 1-1/2 seconds have transpired. If not, then the process comple-tes. Otherwise, the pass indicator is se-t to 3 and the routine exists.
Pass 3 is a dual of Pass 1. It is identical with -the exception that relays are turned ON and that on completion of Pass 3 the pass indicator is set to number 4.
Connector 3 describes the process for Pass 3.
The final actions required for warning indications are described at Connector 4 of FIGURE 23. As indicated in the diagram, a test is performed to determine if 30 seconds have transpired since the relays were turned to the ON state by Pass 3. If not, then the process exits.
Otherwise, all indications of active servicing and warning are removed from the bank status. Following this, the process SETABX is invoked in order to make the final relay state determined during Pass 0 active for normal relay servicing. This completes the warning service which then exits so as to allow the installation of the final relay state as a normal relay service.
This completes the description of the warning service process which allows: a means for warning a human occupant of an upcoming change in load status using a single point of control; a means for providing a 30 second delay interval for the occupant to countermand an upcoming change in load status; a means for reducing the data communication traffic requirements for indicating a warning action.
Decoder Handler The purpose of the decoder handler is to monitor the receiver buffer and determine when a valid message has been received for decoding. When it is determined that a message is awaiting decoding~ the message is verified for correctness of format, proper address and the proper check or parity word at the end - . :
~:3~6 of the message. Once the validity of the message has been determined, -the decoder will recognize various commands for the device in question. The desired actions are then performed which might include the manipulation of internal data buffers and possible transmission of messages to the controlling device via the common data line.
The Decoder Handler includes three main routines: the DECODE routine, responsible for decoding the flag portion of the messages as well as performing other supervisory tasks; the Address Check routine, ADRCHK, responsible for verifying the proper address and checksum or parity word; and the Transmission routine, SENDIT, which is responsible of the transmission of data requiring immediate or interactive transmission.
The Decode, DECODE, routine is invoked by the executive and is described in FIGURE 24 for the relay transceiver. Beginning with the entry point, a test is made of the RVSTAT register to determine if the RCVFLG
is set indicating the presence of a message in the receiver buffer. If not, then control continues to Connector B
or DECODE2 which is an abort from the Decode utility that will clear the RCVFLG bank indicators and new/old mode bits from RVSTAT and then return to the executive. If it is determined that there is a message to be decoded in the Receiver Buffer, then the utility ADRCHK is invoked in order to check the address and parity or checksum word of the message and build the flag, FD0 and DFl storage register as required. At Connector A, DECODE0, a test is performed on the RVSTAT register to determine if there is a message wai-ting decoding for either bank 0 or bank 1.
If not, then the routine aborts through Connector B.
Otherwise, the proper bank, either 0 or 1, is indicated (by setting or resetting the flag F0). A test is then made to determine if the message is in a new format.
If so, the control continues at Connector D of FIGURE 26.
Otherwise, a test is made to determine if the COMM jumper 1~:33~
- 45 - LD-91~7 has been se-t indicating new format messages only. If so, then the u-tility aborts through Connector B. Other-wise, the decoding of the two possible old mode flags continues as indicated. If the flag is equal to lCH
(Mode 0) then a command to set an entire bank of relays has been received and control continues at Connector E
of FIGURE 27. Otherwise, a test is performed to determine if the flag received was equal to 8CH (Mode 4). If not, then the DECODE aborts through Connector B. Otherwise, further processing of the mode 4 command is required and the procedure continues with Connector C of FIGURE 25.
The DECODE routine continues on FIGURE 25 at Connector C. The receiver buffer pointer is incremented to point the data field DF0 for decoding of the Mode 4 or auxiliary flag commands. A test is then made to determine if the auxiliary flag is equal to FOH. If so, then an individual relay OFF command is being issued and control continues with Connector G of FIGURE 28.
Otherwise, a test is made to determine if the auxiliary flag is equal to a value of ElH in which case an individual relay ON command is being specified and control continues at Connector H of FIGURE 28. If not, then a further test is performed for an auxiliary flag value equal to B4H or 69H. If no auxiliary flag decodes, then the routine aborts as indicated by passing control to Connector B of FIGURE 24. Auxiliary flags B4h and 69H
correspond to a relay state request. A desire to transmit two bytes of data is indicated along with a collision line free and the flag is set to A8H (an old mode flag).
Continuing, a test is then performed to determine if an overcurrent condition has been detected and so indicated in the TRD STATUS register. If so, then the flag is corrected to a value of 60H indicating an overcurrent detection in the new format for transmission. Otherwise, the proper bank of relay states is pointed to and the process continues at Connector L on FIGURE 30.
~335~6 FIGURE 26 describes the decoding used for new type commands. Beginning with Connector D, the received flag is shifted two positions to the right in order to skip over the FAFB bits. A tes-t is then performed to determine if the adjusted flag is equal to a value of 0. If so, then a reset command has been issued and the procedure continues with the reset algorithm. Otherwise, a test is made to determine if the flag is equal to 1 indicating a desire -to read data with an immediate or interactive transmission (continuing at Connector N of FIGURE 31).
If the flag is equal to a value of 2, then a command requiring data to be read and retransmitted in a deferred method is indicated and control continues at Connector 0 of FIGURE 31. For a flag value equal to 3, the process continues at Connector E of FIGURE 27 indicating a command to set an entire bank of 16 relay states. A
final test is performed for the new type commands for a flag value equal to 4 indicating a desire to set an individual relay state. The relay and desired state are fetched from DF0 and control continues at Connector K of FIGURE 28, as indicated. If it is not possible to decode a new type flag, then the procedure aborts at Connector B.
The SET16R or routine to set an entire bank of relays is described in FIGURE 27. As indicated, the STATUS register of the TRD is cleared and pointers are set to the holding buffer and relay module status register for the proper bank of relays. Next, the mask portion of the holding buffer is set to a value of FFFFH indicating desired actions on all 16 relays. The relay holding buffer active flag is then set in the relay module status and da-ta field 0 and 1 are copied into the state portion of the holding buffer. The procedure continues at Connector F which is the CLRBNK or Clear Bank process.
The good message counter is incremented to indicate the decoding of a proper command and the bank indicator corresponds to the command just decoded is cleared in ~33~6 - ~7 - LD-91~7 RVSTAT. Control then con-tinues at Connector A of FIGURE 24 in orcler to process any information for the other bank.
The individual relay OFF command is described in FIGURE 28 at Connector G. The relay number to be altered is fetched from DFl and control continues at Connector I.
Connector H describes the individual relay ON function.
The relay number to be altered is fetched from DFl and bit DB7 is set to indicate an ON action. Control continues at Connector I where the relay number to be altered is decremented by 1 to result in a range of 0 to 15 (consistent with the new mode of individual relay control). Continuing with Connector K, the relay number to be serviced is saved and control continues to the individual relay set command SETlND. A pointer is established for both the holding buffer and relay module status for the indicated bank. A test is then made to determine if the holding buffer is currently active. If so, then control continues at Connector J of FIGURE 29. If the holding buffer was not active, then the holding buffer active bit is set within the relay module status and the mask portion of the holding buffer is cleared to eliminate any previous actions and control continues at Connector J.
At Connector J (FIGURE 29), the individual relay set command continues by setting a bit in the mask portion of the holding buffer corresponding to the relay number to service. A test is then performed of bit DB7 of the relay to service to determine the ON/OFF indication.
- If the action is to be OFF, then the CLRBIT routine is invoked in order to clear a bit in the state portion of the holding buffer corresponding to the relay number to service, at which point control continues at Connector F
of FIGURE 27. On the other hand, if an ON action was desired, then the SETBIT routine is invoked in order to set a bit in the state portion of the holding buffer corresponding to the relay number to service. The process continues at Connector F.
~L~33~
The read status in new format command is described in FIGURE 30 at Connector Q. The TEMP0 register is set equal to the A8JUMP value containing address bit A8 and the jumper definition for the TRD. TEMPl is set equal to the STATUS register of the TRD. The flag register is then set to a value of 18H and a pointer to TEMP0 is established. Continuing at Connector L, an indication is made that two bytes of data are to be transmitted and the process continues at Connector M.
Connector R describes the read threshold in new format process. The IBGTHR register is pointed to and the flag is set equal to a value of 20H. Continuing through Connector U, four bytes of data are indicated to be sent. At Connector M, the previously determined line free requirement and the number of bytes to send are merged together. The process continues with an SENDIT
rou-tine described in FIGURE 33.
Connector N of FIGURE 31 is entered whenever there is an immediate or interactive request for data.
A collision line free requirement is indicated and control continues at Connec-tor P. Connector O is entered whenever there is a deferred request for data and a deferred line free requirement is indicated when control continuing at Connector P.
Connector P describes the decoding performed on the auxiliary flags for the read data request. Data Field DF0 is pointed to and a test is made of the auxiliary flag in that position to determine if it is equal to 0. If so, then a request for system status is indica-ted and control continues at Connector Q of FIGURE 30. If the auxiliary flag is equal to 1, then receiver thresholds are being requested and control continues at Connector R
of FIGURE 30. An auxiliary flag value of 2 indicates a desire to return the data line counters (good or bad message counts~ and control continues at Connector T of FIGURE 32. An auxiliary flag value of 3 indicates a ~L2~3~
request for ROM code version handled at Connec-tor V of FIGURE 32. Finally, an auxiliary flag equal to 4 indicates a desire -to return relay states. The Elat is set equal to a value of 2CH and control continues at Connector S
of FIGURE 25. If no auxiliary Elag can be decoded, then the decode routine aborts to Connector B of FIGURE 24.
FIGURE 32, Connector T describes the process for returning the data line counters. The GODMSG
register is pointed to and the flag is set to a value of 25H with control continuing at Connector U of FIGURE 30.
The return ROM code version request is handled at Connector V. A pointer to TEMP0 is established and TEMP0 is then set equal to the ROM code version number.
One byte of data to be sent is indicated, and the flag is set to a value of 28H. Control continues at Connector M
of FIGURE 30.
The SENDIT routine is described in FIGURE 33.
It is responsible for placing data required for transmission into the output buffers and then determining if immediate transmission requirements are needed. If 5ENDIT performs the actual transmission of a message in an interactive data transmission, then it will test the line free requirements in order to clear out previously established receiver thresholds if the line goes free upon successful transmission of the data.
SENDIT places the data being pointed to into the proper output buffer using the flag, line free request, and number of bytes to send by invoking the BLDTBF routine. A test is then performed in order to determine if a deferred line free requirement is needed.
If so, then the process CLRBNK is invoked, which is described in FIGURE 27 Connector F. Otherwise, if an immediate transmission is required, then a test is performed in order to determine if both banks are being requested. If so, then the immediate transmission of the 33~;~6 - 50 - LD-~147 flrst bank is postponed and -the process continues with the CLRBNK routine. If only one bank of information is to be transmitted, then the line low timeout is set equal to the maximum interblock gap time and the line high timer is set to the minimum. The BITINP routine is then invoked in order to wait for the final IBG of the interactive trans-mission message to complete; at which point the transmit process is invoked in order to transmit out the required data.
If at any time during the transmission a collision is detected, then the process will continue as indicated on the diagram. Otherwise~ a delay will be invoked in order to allow the line to go from its low impedance state (from the final IBG) to the high impedance state (50 microseconds). The line high timeout is then set equal to the line free threshold value and the process BITIN4 is invoked in order to determine if the line is active.
If the line does not go active, then RVSTAT is cleared indicating a line free condition and the process continues as indicated. If the line did go active then the controlling device has reestablished control of the data line. Therefore, the receiver thresholds are not to be cleared. The good message counter is incremented and the process continues at the DECODE2, FIGURE 24 Connector B.
The address check routine ADRCHK is described in FIGURE 34. It is responsible for verifying that a message in the receiver buffer is, in fact, addressed to the proper transceiver decoder. In addition, it will verify the correctness of the message by performing a nibble parity check or checksum verification of the message. If both the address and check portions of the message are correct, then three registers will be set to the proper values for the flag, data field 0, and data field 1.
The description of ADRCHK begins with FIGURE 34.
The proper receiver buffer is pointed to for the desired ~3~6 bank along ~ith the A8JUMP register. The head of the buffer is fetched in order to get the flag. A test is then performed to determine if this is a possible new mode message by examining the FA bit (or bit DBl) of the flag to see if it is set. If so, then con-trol continues at Connector G of FIGURE 36. Otherwise, address bit A8 of the transceiver decoder is compared with that received.
If there is not an A8 match, then continuing with Connector A, the RCVFLG bank and mode indication are cleared from RVSTAT and the address check routine returns. Otherwise, if there is an address A8 match, -then a further test is performed to determine if it is a two address TRD. If so, then control continues at Connector E of FIGURE 35.
If the transceiver decoder is a single address device, then the address field is pointed to and compared with the TRD ADRLOW register by the ADRCHD procedure. If there is not a low address match, then the process aborts through Connector A. Otherwise, continuing through Connector B, an old mode bank 0 message is indicated. At Connector C, the parity word in the receiver buffer is pointed to and saved for later comparison. Next a nibble parity check is performed by the PARITY routine and a test is performed to determine if the received and calculated parity agree. If not, then ADRCHD aborts and clears the receiver flag RCVFLG at Connector A. Otherwise, the process continues at Connector D of FIGURE 35.
Continuing with the description of the ADRCHK
process at Connector D of FIGURE 35, the valid flag from the receiver buffer is saved and data field 0 in the buffer is pointed to along with FD0 storage by the ADRCHC procedure.
At Connector F, the copy routine is invoked in order to copy the received data (0, 1 or 2 bytes) from the receiver buffer to the DF0 and DFl storage registers as required.
The desired mode bits and bank bits are then set within RVSTAT by dispatching through the RVSORL routineO
Connector E is entered whenever an old mode ~2~3~
two address TRD is to be verified. The process ADRCHD
is invoked in order to point to -the address field in the buffer and compare this with the TRD ADRLOW. Data bit DB0 of the result is then masked out. (This least significant bit determines the bank that the message was intended for in a two address TRD. DB0 equals to 0 corresponds to bank 0 and DB0 equals to 1 corresponds to bank 1.) If there is no address match, then the process aborts at Connector A of FIGURE 34. Otherwise, the old mode type message for bank 1 is indicated. A test is then performed to determine if the message in fact was to bank 1 by testing at DB0 of the received address field.
If it was to bank 1, then the process continues at Connector C of FIGURE 34. Otherwise, the process continues at Connector B of FIGURE 34.
Connector G of FIGURE 36 is entered whenever there is a possible new mode message. A test is performed on Bit FB (DB0 of the flag word) to determine if it is a 1. If so, then the new mode addressing is not being used and the process aborts via Connector A of FIGURE 34. Othersie, a test is performed of the universal address bit U within the high address word. If U is equal to 1, then the process continues at Connector I of FIGURE 38.
Otherwise, universal addressing is not being used. The high address word is fetched from the buffer and it is compared with address bi-t A8 of the TRD. If there is not a match, then the process aborts at Connector A. Other-wise, the low address field is pointed to in the buffer and compared to the ADRLOW storage register by the rou-tine ADRCHD. A test is then performed to determine if the transceiver is a single address type. If so, then a test is made to determine if the low address received and that contained in the ADRLOW register compare. If not, the process aborts at Connector A. Otherwise, it continues as indicated on the diagram. If the device was a two address TRD, then Bit DB0 of the result of the comparison of ADRLOW and received low address field is masked off.
If the remaining address bits do not compare then the process aborts at Connector A. Otherwise, a new mode message for bank 1 is indicated and a test is performed on address bit A0 to see if it is set to 0 indicating a bank 0 message. If so, then the indication is changed to a new mode bank 0 message. Otherwise, it is left as a new mode bank 1 message and control continues at Connector H of FIGURE 37.
Continuing with the description of the new mode address checking at Connector H of FIGURE 37, the head of the receiver buffer is pointed to. Following this, the number of bytes received is calculated by taking the l's complement of the sum of the down-counting byte counter register plus the l's complement of 7. The number of data fields received is calculated by subtracting 4 from the total number of bytes received. Next the checksum register is initialized to a value of 80H. A type from the receiver buffer is then summed into the checksum register and the pointer to the receiver buffer is incremented to the next byte. The number of bytes received is decremented and a -test is made to determine if there are any additional bytes to sum into the checksum.
If so, then the process of summing the bytes incrementing the pointer, and decrementing the byte count continues until all bytes have been summed into the checksum.
When all bytes have been checked, then a test is made to determine if the final checksum value is equal to 0.
If not, then the process aborts at Connector A of FIGURE 34. Otherwise, the head of the buffer is saved as a valid flag, the low address field is pointed to and data field storage register is pointed to by the process ADRCHC. Data field 0 is then pointed to in the receiver - buffer by incrementing the buffer pointer and control continues at Connector F of FIGURE 35.
Whenever it is determined that universal - - :
, .
~3;~5~
-- 5'1 - LD--9147 addressing is being used within a new mode, Connector I
of FIGURE 3~ is entered. A test is performed in order to determine if all bits other than the U (or DB7) bit of the high address field is equal to 0. If so, then a Family universal address is being used and control continues at Connector K of FIGURE 39. Otherwise, a -test is made of the high address field to determine if all of the bits are equal to 1. If not, and an improper address has been received then the routine aborts at Connector A of FIGURE 34. Otherwise, the low address field is pointed to and a further test is performed to insure that it also is equal to all l's. If not, the process aborts. Other-wise, it continues at Connector J. A new mode transmission for bank 0 is indicated and a test is performed to determine if -the device is a single address TRD. If so, then control continues at Connector H of FIGURE 37. Otherwise, the indicator is updated to reflect a new mode transmission for both banks 0 and 1. (A universally addressed message transmi-tted to a two bank TRD will result in actions being performed on bo~h banks of that transceiver decoder.) FIGURE 39 describes the testing involved for a Family type universal address. At Connector K, the low address field is pointed to and a test is made of that field to determine if it is equal to 0. If so, then a Family address for a relay transceiver has been issued and control continues at Connector J of FIGURE 38.
Otherwise, the address check utility aborts at Connector A of FIGURE 34.
FIGURE 40 describes the two subroutines required by the ADRCHK process. ADRCHC points to the head of the receiver buffer, gets the received flag word, masks out the two least significant bits FAFB and saves the result as the flag. Next, DF0 storage register is pointed to.
Finally a value of 2 is added to the receiver buffer pointer such that it will point to data field 0 is an old type message or the low address field if it is a new type -~2~ 6 - 55 - LD-91~7 message. This comple-tes -the subroutine which then returns. ADRCHD is used to order the point to the ADRLOW storage register of the transceiver decoder, point to the low address field by incrementing the receiver buffer pointer and to compare the low address in the buffer with the ADRLOW storage register. This completes the routine which then returns to the invoking procedure.
This completes the description of the Decoder Handler Module which provides a means of verifying the address of a message received; a means of distinguishing between one of two banks for a message received; a means of recognizing two formats of messages (old and new); a means of aborting the decode of a message if an invalud format is used; a means of decoding multiple flag words; a means of selecting which group of flags are to be decoded based on the presence or absence of a manufacturing installed jumper; a means of eliminating the response to old format commands by evaluating the presence or absence of a COMM jumper which can be Manufacturing installed;
a means of allowing multiple number of data bytes to be input from the common data line; a means for decoding auxiliary flag commands for various types of devices which may or may not be jumper selectable; a means for indicating immediate or deferred response to requests for data transmission; a means of passing control of the data line from one device to the transceiver decoder in an immediate mode of transmission; a means of determining if the controlling device desires to regain control of the data line upon completion of an immediate transmission of data from the transceiver decoder; a means of deferring an immediate request for data if that request is to both banks simultaneously (as would be the case if a universal address command was used); a means for performing a modified checksum against the received message with an initial value of 8OH in order to avoid the proper decoding - of a message with all 0 or all 1 values; a means of ~33S~
performing a nibble parity check as required for the old format messages; a means for providing the proper setup of the following buffers: the relay buffer for either I6 or individual relay commands, and the switchleg mask buffer;
a means of reading the following TRD data registers: the relay state register, the transceiver status, .he receiver threshold register, the data line counter register, and the ROM code version; a means of counting the number of properly decoded messages by incrementing a good message counter; a means of automatically clearing the status register of the transceiver decoder upon reception of a command to reestablish the relay data; a means of allowing individual relay control; and a means of generating a special flag on the request for relay states or automatic transmission of relay states to indicate the detection of an overcurrent condition on the relay transceiver decoder.
This information can be used by a controlling device to annunciate a failure or take corrective action.
Power-Up Ex'ecutive a'nd'Misc'e'l'laneous Mod'ules Processor 300, on Powerup or user initiated reset, begins to execute its internal ROM memory code beginning with Address 0 (which corresponds to the PWRUP
routine). The powerup routine is responsible for proper initialization of the microprocessor and associated external hardware and for placing a powerup/reset message into the transmitter output buffer for subsequent transmission over the common data line. FIGURE 41 describes the powerup routine, PWRUP, for the relay transceiver.
The external overcurrent detection hardware is disabled by disabling the ex-ternal interrupt. Next the internal timer (which is set for six millisecond timer interrupt intervals) is disabled. The stack is then reset and the proper bank of working registers is selected.
Continuing with the description, the watchdog protection circuit hardware is recharged to avoid a protective reset of the microprocessor by issuing 50 pulses to the recharge 3~
line. At this point the RESET routine is invoked in order to initialize the I/O and internal registers of the micro-processor ~including the proper memory registers) and identify the transceiver decoder module type. Next, powerup/reset indication is set into the status register of the TRD. A test is then made to determine if the origin of the reset was manual or not. If a manual reset (button actuated by operator) was detected then a relay test function is required and the process RLYTST is invoked (FIGURE 48). Otherwise, the microprocessor enters a delay period of 25 seconds in order to allow the system to stabilize and to give the proper interval of time for the relay test functions. At the end of the 25 second delay 7 the relay test sta-tus is cleared and the relay drivers are turned to their OFF or no current condition. The register TEMP0 is set equal to the A8JUMP register; register TEMP1 is set equal to STATUS;
the flag reqister is set equal to 18H; a pointer is established to the TEMP0 register; a high priority message with two data bytes and collision line free requirement is indicated and ~inally the powerup reset message is placed into the output buffer for transmission by the previously described BLDTBF routine. This completes the powerup procedure which then continues by entering the executive.
The reset procedure, RESET, is described in FIGURE 42 for the relay TRD. It is responsible for initializing the I/O and all memory required by the micro-processor device. It will identify the module, indicate a line free error in order to require receiver resynchroniza-tion and start the appropriate timers. Beginning with the entry to RESET both the sink and source drivers are turned to their OFF or no current condition. A pointer is then established to the first byte in the microprocessor RAM
above the relay states. All RAM and registers above the relay states but below the TESTST register are cleared to a 0 value. ADRLOW and A8JUMP along with the flag ' ~ - . ' , ' ~ ' ' . .
~233S~LG
indica~ing single or dual address TRD's is established by the procedure MODIDN. Following this, the TRD STATUS
register is cleared and RVSTAT is set equal to a line free error in order to require receiver resynchronization on a maximum line free interval before subsequent reception of any additional data over the common data line. RESET
completes by restarting the 6 millisecond elapsed timer by invoking the procedure CLRST0; which, upon completion, returns to the invoking procedure. It should be noted that the RESET procedure does not alter the state of either the relay states register of the TESTST register.
The executive is the main working procedure of the transceiver decoder. It is entered upon completion of the powerup procedure. Once the executive has been invoked, the only exit from the endless loop of the executive is via a reset (which would occur on power up/watchdog or operator initiated manual button reset).
However, it is possible for the activity controlled by the executive to be suspended for a brief interval of time in order to service either the internal timer interrupt or an external interrupt indicating an over-current detection for the relay transceiver. It should be noted that the internal timer is set for a 6 milli-second interval and is always active.
FIGURE 43 describes the EXEC executive routine used by the relay transceiver. The stack is reset and the working set of registers selected. Following this, the watchdog timer is recharged by issuing 10 strobes to the appropriate hardware. At this point, a receiver service is performed in order to input any possible data from the data line by invoking the previously described RCVSRV
routine (in the aforementioned Miller U.S. Patent 4,367,414).
On completion of this task, the DECODE process is invoked in order to decode any received data and to perform the desired actions. Following the decode of data a trans-mitter service is performed in order to output any 335~6 possible da-ta to the data line by calling the routine ~MTSRV (described in the aforementioned Miller U.S.
Patent 4,367,~14). Next a relay service is invoked in order to update any desired relays by the RLYSRV
subroutine. Finally, the module is reidentified in order to keep the transceiver address and jumper registers set to the most current position (it is possible to change the jumper or address configuration at any time). On completion of the MODIDN process, the executive continues to recharge the watchdog timer and invoke the 5 main sub-rou-tines until such time that the microprocessor is reset due to a powerup, watchdog or operator initiated button reset.
FIGURE 44 describes the module identification routine used by the relay TRD. Since each -transceiver decoder has a user selectable address to which it will respond as well as user and manufacturing installed jumpers which configure the method in which the transceiver decoder operates, the module identification routine is necessary in order to input the desired address and jumper configurations for subsequent later action and processing by the TRD.
On entry to the MODIDN procedure, a test is performed to determine if either relays are being serviced or if the data line is active. If so, then the MODIDM process aborts as indicated. (It would not be desirable to reidentify the module due to the lengthy process involved - if the data line was active. Also, due to the multiplexed time sharing nature of the address input and relay driver hardware,to attempt to identify the module while servicing relays would result in improper action on the relays themselves.) If, on the other hand, no current data line or relay activity was indicated, then the source and sink drivers would then be turned to their OFF or no current condition. The jumper hardward would be enabled for input and the A8JUMP register would be set to the value obtained by inputting the jumper configuration. The jumper input :123~
hardware is then disabled in order to reduce power consump-tion and a flag is set indicating a one or two address TRD based on the configuration of the size jumper. A temporary register is then established and cleared and an indication is made to input 8 bits of address data. Beginning with the loop on FIGURE 44, the temporary register is rotated one bit position to the left in order to position its contents for the next address bit to be input. Following this, an input word is fetched from a table of values described in the address input multiplexing table based on the current bit number.
The address multiplexer hardware is then enabled and a single bit of address data is input. This address bit is isolated and "ORed" with other bits in the temporary register. The updated temporary is then saved and a test is performed to determine if all bits have been input.
This procedure of rotating the temporary, selecting an output word to enable the proper address multiplexer, inputting the bit and merging it with a temporary continues until such time that all bits have been input. Once all address bits are in, a test is made to determine if the device is a single address TRD. If not, then ibt DB0 of the temporary is cleared. ~A two address device will respond to two addresses. The even address, i.d., when DB0 equals 0 corresponds to Bank 0; the odd address when DBl equals 1 corresponds to Bank 1.) On the other hand, if the device was a single address TRD, then DB0 would not be altered and the resulting address could be either even or odd. ADRLOW is then set equal to the 8 least significant address bits contained in the temporary and then the address multiplex hardware is turned off.
This completes the module identification process which then returns to the invoking utility.
As mentioned above, the transceiver decoder has a continuously running internal 6 millisecond timer which is used to sequence desired actions. The timer is ~L~3;3~
- 61 - LD-91g7 an internal programmable device which generates a -timer interrupt whenever a programmed register has been incremented to a 0 value. This timer runs continuously and is disabled only when being serviced or updated.
FIGURE 45 describes the timer interrupt service routine TIMINT. The purpose of this routine is to - service a timer interrupt which occurs every 6 milli-seconds and to increment by 1 an elapsed timer counter.
On detection of a timer in-terrupt, the timer is stopped and the timer registers are selected (this is Register Set 1 of processor 300). The current accumulator value is saved in order to free the accumulator for other usages and the 6 millisecond timer value is fetched. Following this, the timer is initialized for the next 6 millisecond interrupt and the accumulator is restored to its value on entry to the TIMINT procedure. The elapsed timer counter is then incremented by 1 and the internal hardware timer flag is cleared in case it remains set. Upon exit from the timer interrupt service procedure, the previously active working register bank is restored (this is the standard register bank or register bank 0 of processor 300).
The elapsed timer is continuously updated by the 6 millisecond timer interrupts. One or more additional timers can be driven off this elapsed time counter in such a way that they may be main-tained current by summing in the elapsed time counts. This is the responsibility of the TIMSRV procedure described in FIGURE 46. On entry to the TIMSRV process the timer interrupt is disabled and the bank of timer registers are selected. Timer 0 is then set equal to the initial value of timer 0 plus the elapsed timer counter. The elapsed timer counter is then cleared and a test is made of the internal hardware timer flag to determine if it was set. If so, an immediate branch is taken to the TIMINT procedure (the internal - 35 timer flag would be set if a timer interrupt occurred coincidentally with the entry to the TIMSRV process).
:~ , ~l2~S~L6 If the timer interrupt flag was not set, then the working register bank would be restored and the procedure would complete and return to the invoking process. It should be noted that the TIMSRV process is asynchronous of the timer interrupts and could be entered at any time. A maximum delay of up to 256 of the 6 millisecond timer counts could expire beEore losing accuracy in the timer 0 counter.
A process exists, described in FIGURE 47, called CLRST0 for initializing and starting the timer 0 counter.
The timer bank of registers is selected and the counts needed for the 6 millisecond interrupt duration are initialized. Following this, the timer is started by calling the TIMINT process. Next, the elapsed timer and timer 0 are both cleared and set equal to 0. Finally, the timer interrupt is enabled and on exit from the routine the working bank of registers is restored.
As described above, as part of the powerup procedure of the relay transceiver, a -test is performed to determine if the reset initiating -the powerup was manually invoked via an operator depressed but-ton. If that was the case, then a procedure called RLYTST (FIGURE
8) is invoked in order to test the mechanically latching relays associated with the TRD. The relay test procedure allows for three modes of testing relays. Due to the single button (i.e., the reset bu-tton) used for initiating the relay test functions, a somewhat involved sequence of - actions must take place in order to change from one mode to another. The three modes of relay testing are as follows: A11 ON/A11 OFF, individual relay test and automatic relay test. In the first case, an assumption is made that the transceiver decoder was las-t reset at some interval in the past greater than 25 seconds. If the operator depresses the reset button and then releases it (for approximately one second) one of two actions will take place. If any relay on the transceiver decoder is in an OFF position, then all relays on the transceiver 12~3~6 - 63 - LD 91~7 decoder will be turned ON. On the other hand, if all relays on the transceiver were already OFF, then depressing the reset button momen-tarily would cause all relays to turn to the ON condition. It is possible to alternate between -two possible sta-tes by allowing at least 25 seconds to transpire between actuations of -the reset button.
This mode of testing might also be utilized by a building operator in order to turn all loads ON or OFF as desired in the emergency condition tha-t might result -from a failure of a controlling device.
The second mode of relay test is known as the individual relay test. This function is actuated by multiple depressions of the reset button by the operator.
An assumption is again made that the transceiver decoder was last reset in an intervalof time no less than 25 seconds. The first depression of the reset button will cause all relays to turn ON or OFF as described above.
However, any subsequent actuations of -the reset button by -the operator that occur less than 25 seconds apart will cause entry to the individual relay tes-t. In this mode, a single relay will be turned ON and all other relays OFF. Every subsequent action of the reset button will cause -the next relay to go ON and all others to go OFF. This action will continue from relay #1 to #16, in order, for each of the two possible banks of relays.
(If the device is a two bank TRD, then relays 1 to 16 of the low address bank will cycle first followed by relays 1 to 16 of the high address bank.) The individual relay actuations will continue un-til such time that the operator allows the transceiver decoder to remain idle for a period of time greater than 25 seconds. (No reset button actuations.) It should be noted that this mode of testing would be useful during the installation of a transceiver decoder for tes-ting individual circuit - 35 actuations.
The final test mode is the automatic -test 33~ 9 mode. Once again it is assumed that the transceiver decoder has been inactive Eor a period of at least 25 seconds. To enter the automatic test cycle, the operator must depress and hold the reset button for a period in excess of 10 seconds. On the initial "make"
actuation of the reset switch the TRD will turn all relays ON or OFF (depending on their current state) as described for the first test mode. At the end of the 10 second period, the relays will begin to cycle automatically, in order, from relay l to 16 of the first bank followed by relays 1 to 16 of the second bank, if present. The button need not be held beyond the point that this automatic cycling begins. However, to continue for another pass of the automatic cycle, it would be necessary to again depress and hold the reset button before the last relay is cycled.
If this is the case then another pass will take place up to a maximum of three passes. At that point, the machine will exit the relay test procedure and begin normal activities. (This is done in order to avoid a failure mechanism in which the reset button would remain in its closed condition, potentially locking out the transceiver decoder :Erom programmable commands.) The automatic test cycle was intended for use by the Manufacturing facility in order to test the completed assembly of the transceiver decoder.
It should be noted that on completion of any of the three relay test modes the transceiver decoder will transmit a Powerup status message indicating to a controlling device that the transceiver was reset and that the reset occurred due to a manual operator initiated button actuation. Because of this, a controlling device would then be able to reestablish the proper relay patterns for the transceiver decoder that were in effect before the device was manipulated by the operator.
FIGURE 48 describes the firs~ portion of the RLYTST routine which begins by setting the TRD STATUS
.~ :
, ~L~33~
register to show a reset and manual but-ton entry. A
test is then performed to determine if -the register TESTST (the s-tatus register for the relay test module) is not equal to 0. If this condition is met, then the process continues at Connector B of FIGURE ~9. On the other hand, if TESTST was equal to 0, then a test is made of the relay states register to determine if it is not equal to 0. If the relay test register is not equal to 0, then a test is made to determine if all relays are ON. If not, khen the process continues as indicated on the diagram. If not, then the process continues as indicated on the diagram. Otherwise, a desire to turn all relays OFF is indicated and the process continues as indicated on the diagram. On the other hand, if the relay states register W2S equal to 0 (indicating that all relays were currently OFF) then it is desirable to turn all relays ON and that is so indicated. Following this, the procedure INSTA0 is invoked in order to install the desired delay state. A test is then performed to determine if the reset button is still being held by the operator. If not, then the process continues at Connector E of FIGURE 49.
Otherwise, if the button is still held, then the 10 second delay is entered. It should be noted that there are -two possible ways to exit this 10 second delay. One would be by completing the 10 second delay which would imply that the reset button was still being held. The other would be if the reset button was released and depressed again.
This would cause new entry through the beginning of the RLYTST routine until such time -that the button is detected to be no longer depressed. (The inherent delay required to install 16 to 32 relays yields enough time for the operator to depress and release the button in order for it to be detected on the next pass through the RLYTST
procedure. It is for this reason that it is essential that the operator depress and release the button during the first or second test mode before the last relay is updated.
.;
, ' `
' ~L~3~6 This corresponds to approximately a one second button depression. If this is not the case, then at the conclusion of the 10 second delay, the tes-t will assume to be in automatic, all relays will turn OFF and the process will abort.) At the end of the 10 second delay, an automa-tic test is indicated for relay 0 pass 0.
following this, at Connector A, all relays are turned OFF by the INSTA0 process. The relay number is then set equal to 0 and a test is made to determine if the last pass is complete. If so, the process continues at Connector C. Otherwise, a further test is performed to determine if the button is still depressed. I-f not, then the process continues at Connector C. Otherwise, it continues at Connector B of FIGURE 49.
The relay test module continues at Connector B of FIGURE 49 where a desired to turn OFF all relays except the relay number to be turned ON
is indicated and then installed by the INSTAL process.
Following this, a test is made to determine if the first bank of 16 relays has completed processing. If not, then a further test is performed to determine if the last bank of 16 relays has completed processing. If so, then the process continues at Connector D. If neither the first bank nor the last bank of 16 relays has completed processing then the procedure continues as indicated on the diagram. However, if the first bank of 16 relays had completed processing then a test is performed to determine if the device was a single address TRD. If so, a branch is taken to Connector D. Otherwise, the relay number is incremented and a test is made to determine if the individual test mode flag is ON. If not, then the - process continues the loop of automatically cycling all relays until the end of either the first or second bank is detected. On the other hand, if an individual test mode was selected, then the process aborts through Connector C which returns. At Connector D, which is entered at the end of a pass of 16 or 32 relays, depending 3.~
- 67 - Ln 91~7 on the TRD size, a test is made of the individual relay test flag. If it is set, then the individual relay test flag is set and the relay number is set equal to 0, completing the process. On the other hand, if the individual relay -test flay was not set, -~hen the device must have been automatically cycling and the pass count is incremented with the process continuing at Connector A
of FIGURE 48.
FIGURE 50 describes the procedure invoked in order to install the desired relay states. At entry to INSTA0, the routine will insure that all relays are turned OFF. At entry to INSTAL, all relays with the exception of one relay to be turned ON are turned OFF.
A pointer is established to bank 0 working buffers and status registers for the relay service module. The SETUP routine is invoked in order to set up the working and status buffers as required by relay service. A
check is then made to determine if the device is a single address TRD. If not, the same two steps of pointing to the working buffers and status registers for bank 1 and setting up the buffers by invoking the Setup procedure for bank 1 are repeated. Otherwise, in continuing with the process, a test is made to determine if there is any relay to turn ON. If so, then a bit corresponding to the relay number to turn ON is set in the desired s-tate portion of the relay working buffer. Otherwise, a watchdog strobe is performed followed by the installation of the desired relay states by the RLYSRV process. Next a test is made to determine if the end of the relay service has been reached. If not, the pulsing of the watchdog strobe and invocation of the RLYSRV module continues until such time that the relay service has reached its conclusion.
At this time, the relay module status registers are cleared and the installation procedure returns to the invoking process.
Finally, FIGURE 51 describes the Setup procedure ~L2~35~G
- 6~ - LD 9147 used to initialize the working register and relay module status register to their proper values -Eor relay installation.
The mask portion of the relay buffer is set to an all 1 value indica-ting a service requirement for all relays. The state portion of the working buffer is then cleared -to 0 indicating an all OFF condition. Next an active relay service is indicated in the relay module status along with pass equals to 2 and relay number equals to 0. (It was decided to use the shorter interval of time for processing of relay cycles in order to shorten the length of time needed to make an entire pass while automatically cycling the relays.) This completes the Setup routine which then returns.
This completes the description of the Powerup, executive, reset and other miscellaneous modules. The Powerup rou-tine provides for the following: a means of generating a Powerup/Status message for subsequent transmission to a monitoring or controlling device; a means of invoking a reset procedure to initialize I/O
devices and internal registers; a means of initiating the watchdog reset hardware; a means of initializing the machine to a known internal state, a means of indicating a manually initiated reset action; and a means of invoking a relay test procedure.
The executive provides for: a means of periodically strobing a watchdog timer in order to indicate normal operation; a means of resetting the stack and working register bank in order to counteract any possible incorrect action due to spurious signals - which may have altered the machine state; and a means of providing the functionality of the transceiver decoder by executing an executive loop of the desired functions forever.
The reset process provides for: a means of initializing I/O to a known condition; a means for initializing all desired memory registers to 0, a means of allowing the relay state register to retain its .
:3Læ~3~
current value in the case of a relay TRD; a means of causing the receiver to resynchronize on a maximum line free timeout; a means of clearing the good and bad message counters to 0 values; a means of starting and clearing the proper timer counters; and a means of halting any current actions that might be pending in the transceiver decoder (such as relay processing in progress or messages awaiting decoding in the receiver buffer).
The timer routines provide for: a means of establishing a periodic 6 millisecond interval timer;
a means for counting the timer interrupts and retaining a sum of the number of times the interrupt has occurred in an 8 bit elapsed timer counter; a means of providing one or more counters to which the elapsed time counter is added in order to provide for long intervals to be -times; a means of clearing to 0 and restarting one or more timer counters; and a means of deferring until a convenient time the servicing of the elapsed time counter.
The module identifier provides for: a means of inputting a set of 8 user or manufacturing installed jumpers to dynamically or statically configure the transceiver decoder; a means of operating a multiplexer circuit in order to allow the inputting of 8 user selectable address lines; a means of identifying via a flag a one or two address transceiver decoder; a means of disabling the jumper input hardware in order to reduce power consumption; a means of multiplexing the address input circuit with the relay driver circuitry; a means of detecting and avoiding a conflict with the operation of the address multiplexer circuit and other external hardware; and a means of allowing the address inputs or mode selector jumpers to be dynamically varied by the user and detected and acted upon the transceiver decoder.
Finally, the relay test module provides for:
a means of turning all relays ON or all relays OFF; a means of individually turning one relay ON while all 354~
- 70 - L~ 91~7 others are turned OFFi and a means for automatically cycling each relay ON then OFF.
While the invention has been described in connection with what is presently considered to be -the most practical and preferred embodiments, it is to be understood that the invention is not to be limited to the disclosed embodiments but on the contrary, is intended to cover various modifications and equivalent arrangements includes within the spirit and scope of the appended claims which scope is -to be accorded the broadest interpretatiGn so as to encompass all such modifications and equivalent structures.
Claims (13)
1. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to being about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed, with power being applied to each relay in sequence for a first duration of time, and after power has been applied once to each of said relays to be state changed, then again applying power in sequence to each of said relays to be state changed, each application of power being for a second duration of time greater than said first duration of time, said first duration of time being selected such that a substantial number of said relays to be state changed will respond to the initial application of power, allowing a user to perceive a substantially immediate response of the system to said data signal, the further application of power being for state changing relays not state changed by the first application of power thereto.
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to being about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed, with power being applied to each relay in sequence for a first duration of time, and after power has been applied once to each of said relays to be state changed, then again applying power in sequence to each of said relays to be state changed, each application of power being for a second duration of time greater than said first duration of time, said first duration of time being selected such that a substantial number of said relays to be state changed will respond to the initial application of power, allowing a user to perceive a substantially immediate response of the system to said data signal, the further application of power being for state changing relays not state changed by the first application of power thereto.
2. An improved transceiver device according to claim 1, wherein said power applying means comprises means for sequentially applying power to said relays to be state changed more than two complete cycles of a sequence, each cycle having a longer duration of time of applying power to each relay than the previous cycle.
3. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for actuating relays to achieved the load control state defined by said data signal;
means for resetting a transceiver device upon the occurrence of a particular condition, the relays under the control of a reset transceiver not necessarily being in a desired state as defined by a previous data signal to said reset transceiver; and means responsive to the occurrence of a reset, for annunciating to said central controller that a reset has taken place, so that the central controller can check the status of relays controlled by the reset transceiver and take corrective action if necessary.
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for actuating relays to achieved the load control state defined by said data signal;
means for resetting a transceiver device upon the occurrence of a particular condition, the relays under the control of a reset transceiver not necessarily being in a desired state as defined by a previous data signal to said reset transceiver; and means responsive to the occurrence of a reset, for annunciating to said central controller that a reset has taken place, so that the central controller can check the status of relays controlled by the reset transceiver and take corrective action if necessary.
4. An improved transceiver according to claim 3 wherein said particular condition is a power-up of said-transceiver.
5. An improved transceiver according to claim 3 wherein said particular condition is a power loss to said transceiver.
6. An improved transceiver according to claim 5 wherein said power loss is a partial power loss.
7. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for identifying a particular three terminal, two coil relay to be state changed in order to bring about the requested load control state; and means, responsive to said determining means, for driving said identifying relay including means for sourcing current to a common terminal of said two coils and sinking current from one of said two coils, said driving means being organized in matrix form to selectively energize two of the three terminals of any relay controlled by said transceiver device.
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for identifying a particular three terminal, two coil relay to be state changed in order to bring about the requested load control state; and means, responsive to said determining means, for driving said identifying relay including means for sourcing current to a common terminal of said two coils and sinking current from one of said two coils, said driving means being organized in matrix form to selectively energize two of the three terminals of any relay controlled by said transceiver device.
8. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determing which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and power clamp limiting circuit means for monitoring power to said power applying means and limiting power thereto when the monitored power exceeds a predetermined level.
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determing which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and power clamp limiting circuit means for monitoring power to said power applying means and limiting power thereto when the monitored power exceeds a predetermined level.
9. An improved transceiver device according to claim 8 further including means, responsive to a current limiting, for annunciating to the central controller via the data line that a current limiting function has been carried out.
10. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and power detecting circuit means for monitoring power to said power applying means and indicating when power is below a predetermined level thereby detecting a missing relay.
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and power detecting circuit means for monitoring power to said power applying means and indicating when power is below a predetermined level thereby detecting a missing relay.
11. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and a watchdog reset circuit coupled to said micro-processor for monitoring the operation thereof, and providing a reset signal thereto in the event of a failure of proper operation thereof, said watchdog reset circuit being AC coupled to said microprocessor so that its operation is not defeated by a malfunction that would cause a DC condition in a signal resetting a watchdog timer of the watchdog reset circuit.
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and a watchdog reset circuit coupled to said micro-processor for monitoring the operation thereof, and providing a reset signal thereto in the event of a failure of proper operation thereof, said watchdog reset circuit being AC coupled to said microprocessor so that its operation is not defeated by a malfunction that would cause a DC condition in a signal resetting a watchdog timer of the watchdog reset circuit.
12. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and means for causing a brief period of intermittent operation of said relays to be state changed before they are permanently state changed to warn a user of an impending state change.
13. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and means for resetting said transceiver device to a state of predetermined conditions of relays associated therewith, said resetting means being operable in any one of the following three models;
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and means for causing a brief period of intermittent operation of said relays to be state changed before they are permanently state changed to warn a user of an impending state change.
13. In a system for controlling distributed electrical loads including a central controller for providing a data signal defining the manner in which said loads are to be controlled; plural transceiver devices, each device being connected to control a subset of said loads by controlling relays in respective power circuits of said loads; and a single data line connecting said central controller with each transceiver device, and improved transceiver device, comprising:
means for receiving, from said data line, said data signal requesting that the transceiver device cause a particular load control state to exist;
means, responsive to said receiving means, for determining which relays are required to be state changed in order to bring about the requested load control state;
means, responsive to said determining means, for applying power in sequence to said relays to be state changed; and means for resetting said transceiver device to a state of predetermined conditions of relays associated therewith, said resetting means being operable in any one of the following three models;
Claim 13 continued:
all on or all off relays;
individual relay test wherein particular relay can be manually state controlled; and automatically cycling wherein the relays are reset in a predetermined sequence, one after another.
all on or all off relays;
individual relay test wherein particular relay can be manually state controlled; and automatically cycling wherein the relays are reset in a predetermined sequence, one after another.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA000481849A CA1233546A (en) | 1985-05-17 | 1985-05-17 | Remote load control relay processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA000481849A CA1233546A (en) | 1985-05-17 | 1985-05-17 | Remote load control relay processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CA1233546A true CA1233546A (en) | 1988-03-01 |
Family
ID=4130513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA000481849A Expired CA1233546A (en) | 1985-05-17 | 1985-05-17 | Remote load control relay processor |
Country Status (1)
Country | Link |
---|---|
CA (1) | CA1233546A (en) |
-
1985
- 1985-05-17 CA CA000481849A patent/CA1233546A/en not_active Expired
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6853292B1 (en) | Security control system, method for the operation thereof | |
US5444642A (en) | Computer system for monitoring events and which is capable of automatically configuring itself responsive to changes in system hardware | |
US4562550A (en) | Remote load control relay processor | |
US4729124A (en) | Diagnostic system | |
JPS6337023B2 (en) | ||
EP0113478B1 (en) | Fail safe system for information transmission systems | |
US4290136A (en) | Circuit arrangement for monitoring the state of signal systems, particularly traffic light signal systems | |
CA1233546A (en) | Remote load control relay processor | |
CN100539716C (en) | The method that a kind of main and standby boards is monitored and switched automatically | |
JPH06162390A (en) | Signal lamp control system | |
JPH02217099A (en) | Load controller | |
JP2666993B2 (en) | Inspection method for serial line of air conditioner | |
JPH0282345A (en) | Runaway stop method for multiprocessor system and device using the method | |
JPH07281705A (en) | Monitor controller | |
KR0143180B1 (en) | A defect retector of an electronic equipment | |
JP2907075B2 (en) | Cable wiring connection monitoring method | |
JP2519800B2 (en) | Abnormality notification device for transmission system | |
JPH0733079Y2 (en) | Air conditioner control device | |
JPH0915110A (en) | Fault monitoring system | |
JPH0240591B2 (en) | EREBEETANOSHIKENUNTENSOCHI | |
JPH04207652A (en) | On-vehicle multiplex transmission system | |
CA1233545A (en) | Arrangement for sensing remote binary inputs | |
JP2749994B2 (en) | Numerical control unit | |
JPH0454747A (en) | Data transfer system | |
KR19990056663A (en) | Computer failure monitor and failure monitoring method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MKEX | Expiry |