CA1129048A - Programmable electronic real-time load controller - Google Patents

Programmable electronic real-time load controller

Info

Publication number
CA1129048A
CA1129048A CA341,580A CA341580A CA1129048A CA 1129048 A CA1129048 A CA 1129048A CA 341580 A CA341580 A CA 341580A CA 1129048 A CA1129048 A CA 1129048A
Authority
CA
Canada
Prior art keywords
load
day
event
time
control
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
Application number
CA341,580A
Other languages
French (fr)
Inventor
Orlien N. Becker
William W. Korff
Edward J. Carpenter
Alan E. Zoerb, (Deceased)
Lawrence J. Barello
Donald R. Hall
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Butler Manufacturing Co
Original Assignee
Butler Manufacturing Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Butler Manufacturing Co filed Critical Butler Manufacturing Co
Application granted granted Critical
Publication of CA1129048A publication Critical patent/CA1129048A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G04HOROLOGY
    • G04GELECTRONIC TIME-PIECES
    • G04G15/00Time-pieces comprising means to be operated at preselected times or after preselected time intervals
    • G04G15/006Time-pieces comprising means to be operated at preselected times or after preselected time intervals for operating at a number of different times
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J3/00Circuit arrangements for ac mains or ac distribution networks
    • H02J3/12Circuit arrangements for ac mains or ac distribution networks for adjusting voltage in ac networks by changing a characteristic of the network load
    • H02J3/14Circuit arrangements for ac mains or ac distribution networks for adjusting voltage in ac networks by changing a characteristic of the network load by switching loads on to, or off from, network, e.g. progressively balanced loading
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25403Compare real clock time with programmed time, if equal execute next command
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J2310/00The network for supplying or distributing electric power characterised by its spatial reach or by the load
    • H02J2310/10The network having a local or delimited stationary reach
    • H02J2310/12The local stationary network supplying a household or a building
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/30Systems integrating technologies related to power network operation and communication or information technologies for improving the carbon footprint of the management of residential or tertiary loads, i.e. smart grids as climate change mitigation technology in the buildings sector, including also the last stages of power distribution and the control, monitoring or operating management systems at local level
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/30Systems integrating technologies related to power network operation and communication or information technologies for improving the carbon footprint of the management of residential or tertiary loads, i.e. smart grids as climate change mitigation technology in the buildings sector, including also the last stages of power distribution and the control, monitoring or operating management systems at local level
    • Y02B70/3225Demand response systems, e.g. load shedding, peak shaving
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B90/00Enabling technologies or technologies with a potential or indirect contribution to GHG emissions mitigation
    • Y02B90/20Smart grids as enabling technology in buildings sector
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S20/00Management or operation of end-user stationary applications or the last stages of power distribution; Controlling, monitoring or operating thereof
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S20/00Management or operation of end-user stationary applications or the last stages of power distribution; Controlling, monitoring or operating thereof
    • Y04S20/20End-user application control systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S20/00Management or operation of end-user stationary applications or the last stages of power distribution; Controlling, monitoring or operating thereof
    • Y04S20/20End-user application control systems
    • Y04S20/222Demand response systems, e.g. load shedding, peak shaving

Abstract

PROGRAMMABLE ELECTRONIC REAL-TIME LOAD CONTROLLER
Abstract of the Disclosure A programmable electronic real-time load controller includes: a plurality of load control circuits, each being adapted to be interconnected with a load; a hardware clock; and, a programmed data processor for responding to real-time information from the hardware clock to effect control of the status of eachload control circuit in accordance with a predetermined time schedule that has been entered into the data processor. The data processor includes: a CPU; a program memory; an event memory; and a plurality of ports which permit a plurality of devices, including a keyboard, a plurality of displays, and the hardware clock, to interchange information with the data processor. The event memory includes a plurality of event memory locations for storing one or more control events and corresponding event times for each load. The CPU is operative: to enter control events and corresponding event times, upon actuationof the keyboard, into the event memory; to obtain real-time information from the hardware clock; to address and search the event memory locations to effect comparison, for each load, of the event times therein with the real-time information; and, to control the status of each load control circuit in accordance with that one of the control events whose corresponding event time occurs at or immediately preceding the time represented by the real-time information.

Description

2~48 PRO~RAMMABLE EL~CTRONIC ~l~AI~T~E LOAD CON~OLLER
Field of the ~vention This invention generally relates to apparatus for controlling the energization states of a plurality of electrical load circuits, and, more 5 particularly, to such an apparatus in which' such energization states are controlled inl`~cd~e~n accordance with a predetermined time schedule.
Background of the Invention There has long been a need, particularly in industrial and commercial facilities, for a device which functions to turn on and off one or 10 more electric~l load circuits at the facility at preselected times so as to conform the "on time" of the load circuit with the periods during which energization of the loads associated therewith is required. For example, it may be desired to turn on the air conditioning equipment at the facility about an hour before the beginning of the normal working day, and to turn off the air conditioning 15 equipment about an hour after the end of the normal working day. As another example, it may be desired to limit energy consumption at the facility by turning off certain load circuits during times that energization of the loads associatedtherewith is not essential.
In the prior art, this need has been met for the most part by ao electro-mechanical timers which include an electrical clock, typically powered from a source of alternating current voltage, and a plurality of manually positionable switches which are assembled so as to be actuated by a cam, rotatedby the clock, whQse position represents real-time. Such timers usually are , adapted only for the control of a single load circuit, and are capable of providing 25 only a limited number of changes in the energization states of the load circuit during a single 24-hour period. The switches are difficult to position, and their physical construction does not permit a precise selection of on-off times.
Further, the control function afforded by such timers is simply to turn the loadcircuit on or off, and more sophisticated control functions, such as dut~cle 30 control of the load circuit, are not available. Finally, a power outage which ! ~,- ^ ~
, . , . . ` . , ..... ... ... ~ .... . . .
... ... . ... . ~ -. . . . .. ;, ..

.. . ~ . ... .. . . . .. . . .. ..
. . ~. ...... ~ . ... ... .
.. . . ... . . ... . .. .
. . - j . . ; ~ .
.. ... ~ .
` :. , i, `~
. . . . . .
......

causes a disruption in the source of alternating current voltage causes the timer to lose synchronism with real time, so that the position of the cam therein mustbe manually readjusted after restoration of power.
Another type of device typically used in the prior art is that known 5 as the repetitive cycle controller, which functions to provide control of the energization states of one or more load circuits in accordance with a predetermined duty cycle, that is, each load circuit is repetitively turned on and off for predetermined periods of time. Such repetitive cycle controllers, however, are difficult to use to effect control of the energization states of a 10 load circuit in accordance with a predetermined time schedule.
It is therefore an object of this invention to provide an improved apparatus for controlling the energization states of a plurality of electrical load circuits in accordance with a predetermined time schedule.
It is a further object of this invention to provide such an apparatus 15 which takes the form of a programmable electronic real-time load controller which is operable to control the energization states of the load circuits in real time and in accordance with a predetermined time schedule that has been programmed into the eontroller by a user.
It is another object of this invention to provide such an apparatus 20 which allows a user to flexibly program the predetermined time schedule by selecting, in advance, a number of control events and corresponding event times for each of a plurality of load circuits and for each of a plurality of days in a week.
It is yet another object of this invention to provide such an 25 apparatus which allows the user to select a control event which causes a particular load circuit to be turned on, to be turned off, or to be controlled in accordance with a predetermined duty-cycle control function.
It is still another object of this invention to provide such an apparatus which allows the user to select, in advance, a holiday schedule for each 30 load circuit, and to designate in advance a particular day of a week as a holiday, whereupon the apparatus functions to control the energization states of the loadcircuits during the designated day in real-time in accordance with the holiday schedule.
It is an object of this invention to provide such an apparatus which 35 permits the predetermined time schedule to be overridden by an external device, or, by the user.
It is an object of this invention to provide such an apparatus in which the operation of the apparatus is maintained in synchronism with real-, .

, ,, ., ~ . .
:
- .. : - ~. ..

' ., .. , ~

~ 29~4~3 time, despite the loss of ac power to the apparatus.
It is an object of this invention to provide such an apparatus which can be implemented in an easy and inexpensive manner by the use of readily available, integrated circuit, microprocessor components.
Summary of the Invention Briefly, these objects and others that will be appa-rent to those of ordinary skill in the art are achieved in an electronic controller for controlling the energization states of each of a plurality of electrical loads in real time. The controller comprises: a plurality of load control circuits, each load control circuit being adapted to be interconnected with a load, and having a load-on state when its load is to be on, and a load-off state when its load is to be off; clock means for accumulating real-time information; and, a data processor, operating under control of a program, for responding to real-time information obtained from the clock means to effect con-trol of the load-on and the load-off states of each of the plurality of load control circuits in accordance with a pre-determined time schedule.
In accordance with the present invention there isproYided an electronic controller for controlling the energi-zation states of each of a plurality of electrical loads in real-time, said controller comprising a plurality of load con-trol circuits~, each sa~d load control circuit being adapted to be interconnected with a load, and having a load-on state when its load is to be on, and a load-off state when its load is to
- 3 -.
.. :
: . :

C~ o~-5~
be off; clock means for~accumulatin real-time information;
~ ";~
and, a data processor, including: an event memory~r-sto~I~g Jn a plurality of load groups ~ in~rmation, each said load group being uniquely associated ,with one of the plurality of electri-,ha~/if~ d t~re~n cal loads and aompr~ one or more control events and anevent time corresponding to each said control event, said con-trol events in each said load group representing: an on con-trol function in which the associated load is to be on for the entirety of each predetermined control interval successive to the corresponding event time; an off control function in which the associated load is to be off for the entirety of each pre-determined control interval successive to the corresponding event time; and a duty-cycle control function in which the associated load is to be on for a predetermined portion o~
each predetermined control interval successive to the corres-ponding event time; a proyram memory storing a set of program instructions; and, a processing means operative in response to said set of program instructions stored in said program memory, said processing means being operative: to enter said control events and corresponding event times for each load into the associated load group in said event memory; to obtain said real-time information from said clock means; to address and search the associated load group for each load in said event memory to effect comparison of said event times therein with said real-time information obtained from said clock means;
and, to place s-aid load control circuit for each load in said load-on state or said load-off state in accordance with that ~' .
- 3a -. ~

one of said control events in said associated load group whose corresponding event time is at or immediately precedes the time represented by said real-time information obtained from said clock means.
The data processor includes: an event memory for storing a plurality of load groups of information, each load group being uniquely associated with one of the plurality of -electrical loads and comprising one or more control events and an event time corresponding to each control event, with each control event in a load group representing a period of time during each predetermined control interval subsequent to its corresponding event time that its associated load is to be on; a program memory-storing a set of program instruc-tions; and, a processing means responsive to the set of pro-gram instructions stored in the program memory for: entering the control events and corres.ponding event times for each. load into the associated load group in the event memory; obtaining real-time information from the clock means; for each load, . .
addressing and searching the as-sociated load group in the event memory to effect comparison of the event times therein with the real-time information obtained from the clock means;
and, placing the load control circuit for each load in its load-on state or its load-off state in accordance with that one of the control events in the associated load group whose corresponding event time is at or immediately precedes the time represented by~the real-t;~me information obtained from the clock means.
- 3b -~i~

.. : ~ - .. ,. . ~ ,- . .. : .:
,. : , ~ .: :, , .: .

~: . . . . :. . , . . . ,. : : ~ : ..
I' . . ''': ' , . ' . ' ' ' , ' ' : : .:, ~ . ,, ,, , , ~ - .: : .

:

Brief Description of the Drawings The invention can best be understood by reference to the following portion of the specification, taken in conjunction with the accompanying drawings, in which:
FIGURE 1 is a pictorial view of a front panel of a preferred embodiment of the apparatus;
FIGURE 2 is an electrical block diagram of the preferred 3c -.

,: . . .. : . , , .

.:- - .

.

embodiment, including a microprocessor;
FIGURE 3 is an electrical schematic diagram of a load relay circuit illustrated more generally in FIGURE 2;
FIGURE 4 is an electrical schematic diagram of a power supply and 5 low voltage detection circuit usable with the apparatus of FIGURE 2;
FIGURE 5 is a schematic representation of various operation flags, timers, data bytes and registers contained within a scratch-pad memory within the microprocessor;
FIGURE 6 is a schematic representation of the organization of an 10 event memory within the microprocessor;
FIGURES 7(a) and 7(b) are a flow chart illustrating the program steps undertaken by the microprocessor in a main program loop;
FIGURE 8 is a flow chart of a program step undertaken by the microprocessor in a REAL-TIME CLOCK routine;
FIGURE 9 is a flow chart of the program steps undertaken by the microprocessor in a LOAD UPDATE routine;
FIGURE 10 is a flow chart of the program steps undertaken by the rnicroprocessor in a REAL-TIME SET routine;
FIGURE 11 is a flow chart of the program steps undertaken by the microprocessor in a XFER routine;
FIGURE 12 is a flow chart of the program steps undertaken by the microprocessor in a KEYBOARD routine;
FIGURE 13 is a flow chart of the program steps undertaken by the microprocessor in an INSERT EVENT subroutine;
FIGURE 14 is a flow chart of the program steps undertaken by the microprocessor in a SLEW subroutine;
FIGURE 15 is a flow chart of the program steps undertaken by the microprocessor in a SCAN subroutine;
FIGURE 16 is a flow chart of the program steps undertaken by the microprocessor in a REPEAT subroutine;
FIGURE 17 is a flow chart of the program steps undertaken by the microprocessor in a CLEAR subroutine;
FIGURE 18 is a flow chart of the program steps undertaken by the microprocessor in a HOLIDAY subroutine;
FIGURE 19 is a flow chart of the program steps undertaken by the microprocessor in a TIME subroutine;
FIGURE 20 is a flow chart of the program steps undertaken by the microprocessor in an OUTPUT & STAGE subroutine; and ' . ~ `, '' ~ '~ ' : ` , ' ' ' FIGURE 21 is a flow chart of the program steps undertaken by the microprocessor in an INTERRUPT subroutine.
Description of a Preferred Embodiment With reference to FIGURE 1, a preferred embodiment of the 5 programmable electronic real-time load controller includes a housing 20 on whose top panel are located a plurality of controls and displays that permit a user to transmit information to and receive information from a data processor, preferably a microprocessor and related components, located within the housing 20, and that also permit the user to override the control actions being undertaken 10 by the controller if desired.
A plurality of load control switches 22 (one for each load circuit to be controlled, e.g. eight) are provided, with each load eontrol switch 22 havingthree positions respectively labelled ON, AUTO and OFF. As described hereinafter with reference to FIGURES 2 and 3, each load control switch 22 15 forms part of a load control circuit which includes a load relay having normally-open, SPST contacts adapted for series interconnection with a load circuit (hereinafter referred to for convenience as a '~oad'~). When each load control switch 22 is in its ON or its OFF position, its associated load is respectively turned on or turned off, irrespective of the operation of the microprocessor 20 within the controller. When each load control switch 22 is in its AUTO position, the energization state of its associated load is controlled by the microprocessor through control of the energization state of the corresponding load relay.
A plurality of LEDs 24 labelled LOAD STATUS are provided, one for each load, with each LED 24 being lit when its associated load is turned on, i~
25 and being extinguished when its associated load is turned off.
The microprocessor has three modes of operation, denominated "program," "run/verify," and "run" which can be selected by the user through thepositioning of a mode switch 26 to respective PROGRAM, RUN/VERIFY or RUN
positions. When the microprocessor is in the program mode of operation, the 30 load relays are maintained in the energization states established prior to the time that the microprocessor entered the program mode of operation, and the user is permitted to enter a predetermined time schedule into the microprocessorfor load control, or to alter any schedule that has been previously entered. When the microprocessor is in either the runtverify or the run modes of operation, the 35 energization states of the load relays are controlled by the microprocessor in accordance with the predetermined time schedule, but the user is not permitted to alter the predetermined time schedule. To prevent inadvertent changes to the schedule, the microprocessor will enter the program mode of operation only if '. . ~'~' '' ' .
.
:. . , ' . :
`, .. . . ~

the user places the mode switch 26 to its PROGRAM position within a predetermined period of time, e.g., ~seconds, after the user has actuated a "hidden" program enable switch 48 (FIGURE 2). When the microprocessvr is in the program mode of operation, an LED 27 is lit.
In order to provide certain information to the user regarding the operation of the controller, there is provided a display 28, an LED 30 labelled AM, an LED 32 labelled PM, and a plurality of LEDs 40 respectively labelled SUN, MON, TUE, WED, THU, FRI, SAT and HOL. The display 28 has a plurality of seven-segment, alpha-numeric character displays including a LOAD character display (which displays a number identifying a load, e.g., "1" to "8"), two HR
character displays (tens and units), and two MIN character displays (tens and units). As described hereinafter, the controller includes a hardware clock whichprovides real-time information to the microprocessor. In the run mode, the microprocessor normally causes the LOAD character display to be blanked, and the remaining character displays and LEDs 30, 32 and 40 to display real time. Inthe program mode of operation, the time within the hardware clock may be adjusted upon actuation of a switch 34 labelled SET TIME. In all three modes of operation, the real-time information used by the microprocessor for load controlmay be advanced by one hour from the time in the hardware clock in accordance with the setting of a switch 36 labelled STANDARD/DAYLIGHT.
A keyboard 38, which is enabled only when the microprocessor is in either the run/verify or the program mode, permits the user to enter a schedule for load control into the microprocessor, or to alter any previously-entered schedule, and also permits the user to obtain a display of the schedule and of real time. Included in the keyboard 38 are a plurality of keys labelled LOAD, DAY, HOUR, MINUTE, SCAN, TIME, HOLIDAY, CLEAR, 30(0N), 25, 20, 15, 10, 5, O(OFF) and REPEAT.
At this point, it should be noted that the controller permits the scheduling of a plurality of control events, or, changes in the load control function being effected by the controller, for each load for each day of a week,plus a holiday schedule for each load. Each control event l~a~s~ ociated therewith a unique event time. A control interval, e.g., ~ m~utes, is established, and each control event is defined as the number of minutes during each successive control interval subsequent to the event time that a load will be turned on.
In the preferred embodiment, three load control functions are provided, these being "on," "off" and "duty-cycle." To schedule a control event representing either the "on" or "off" control functions, the user selects the .

. . - , , ......................... .

' ' ' i ' ,~ '`` '~ ' "' , ~

_7_ ~ C~

desired load and event time by actuation of the appropriate keys in keyboard 38,and actuates either the 30tON) or 0(0FF) keys. To schedule a control event having a duty-cycle control function, the user selects the desired load and event tirne by actuation of the appropriate keys in keyboard 38, and actuates one of the 25, 20,15, 10, or 5 keys.
When either the "on" or "off" control functions have been so scheduled, the microprocessor, when placed in the run or run/verify modes, will maintain the selected load either on or off, from a time in real time corresponding to the event time of the control event to a time in real time corresponding to a subsequent event time of another control event. When a "duty-cycle" control function has been scheduled, the microprocessor will maintain the selected load on for a selected portion of each subsequent control interval in real time from the event time of the control event to a subsequent event time of another control event. For example, if the 25 key has been actuated, the microprocessor will maintain the selected load on for the first twenty-five minutes of each successive thirty minute interval in real time subsequent to the event time.
While the microprocessor is in the program or run/verify modes, display of a selected load, day, and event time is made by the display 28 and LEDs 30, 32, and 40, and display of a selected event is made by a plurality of LEDs 42 whose labels correspond to those of the event keys (e.g., 30(0N), 25, 20, 15, 10, S, 0(0FF)) in keyboard 38.
In order to schedule control events, the user first places the micro-processor into the program mode as previously described. The user then actuates: the LOAD key until the desired load number appears in display 28; the DAY key until the LED 40 corresponding to the desired day is lit; and, the HOUR
and MINUTE keys until the desired event time is displayed by display 28 and LEDs 30, 32. The desired control event is then entered into an event memory within the microprocessor by actuation of the corresponding event key, and is acknowledged by the microprocessor by the lighting of the corresponding LED ~2.
After entry of all the desired control events for a given day and for a given load, scheduling of control events may be effected for another day after actuation of the DAY key until the LED 40 corresponding to the desired day is lit.
Alternatively, the schedule of control events for a given load and for a given day may be repeated for subsequent days, one at a time, by actuation of the REPEAT
key in keyboard 38. After all control events have been scheduled for a given load and for an entire week, the scheduling process is repeated for the remaining loads in a manner identical to that previously described.

.

-., ~

-8- :~2~4~3 The microprocessor also permits a separate holiday schedule to be established for each load, with the holiday schedule having any sequence of control events that may be desirable. To enter the holiday schedule, the DAY
key is actuated while the microprocessor is in the program mode until the LED
5 40 labelled HOL is lit. The holiday schedule for each load is then entered in a manner identical to that previously described.
Any previously-entered schedule can be altered by rescheduling control events and event times when the microprocessor is in the program mode.
Also, the schedule for a given load and for a given day (including a holiday) may 10 be deleted by actuation of the LOAD and DAY keys until the desired load number and day (including holiday) are displayed, and by subsequent actuation of the CLEAR key.
In order to obtain display of real-time information when the micro-processor is in either the run/verify or the program modes, the TIME switch may 15 be actuated.
As previously described, the time within the hardware clock may also be changed through actuation of the SET TIME switch 34. Specifically, the DAY, HOUR and MINUTE keys are actuated until a desired time is displayed.
Subsequent actuation of the SET TIME switch 34 will cause the microprocessor to 20 change the time within the hflrdware clock to the time as displayed.
While the microprocessor is in either the run/verify or the program modes, the user may obtain a display of the schedule for each load and for each day (including a holiday). To obtain such a display, the user actuates the LOAD
and DAY keys until the desired load number and day are displayed. Actuation of 25 the SCAN key then causes the microprocessor to display the scheduled event times and control events, in a sequence of successive event times, through display 28, LEDs 30 and 32, and LEDs 42.
Let it be assumed that a schedule for load control has been entered (or altered), and that the microprocessor is now placed in its run/verify mode lby 30 appropriate positioning of the mode switch 26). Thereupon, the LOAD characterdisplay in display 28 is blanked, and the remaining character displays in display 28, and LEDs 30, 32, and 40, display real-time information obtained from the hardware clock. In effecting load control, the microprocessor continuously compares real-time information obtained from the hardware clock with the 35 schedule, and effects the control functions represented by the control events in the schedule at the times in real time corresponding to the event times in the schedule. If no control events have been scheduled for a given load for the day in real-time, the microprocessor automatically scans back through the previous six days in the schedule and controls the load in accordance with the control function represented by the last-entered control event. If no control events have been entered in the schedule for the load, the load is maintained off.
To avoid a large inrush of power in the case where the schedule 5 calls for more than one load to be turned on at the time that the microprocessor is placed in either the run or run/verify modes, the microprocessor turns on theloads in a predetermined sequence and at predetermined intervals.
As previously described, the schedule cannot be entered or altered when the microprocessor is in the run or run/verify modes. However, when the 10 microprocessor is in the run/verify mode, one or more of the days in any given week in real~time can be selected as a holiday, whereupon the microprocessor follows the holiday schedule for all loads upon occurrence of that day or days in real-time. To accomplish this selection, the DAY key is actuated until LED 40 corresponding to the desired day is lit, and the HOLIDAY key is actuated. When 15 the thusffelected day occurs in real time, the LED 40 corresponding to the thus-selected day and the LED 40 labelled HOL will be lit, and the microprocessor will control all loads in accordance with the holiday schedule. After occurrence of the thus-selected day in real-time, the microprocessor will adhere to the regular schedule upon the next occurrence of that day in real-time, unless the day is 20 again selected as a holiday.
An LED 44 labelled FAULT and an audible alarm 54 (FIGURE 2) are also provided. When a proper keyboard entry is made by the user, the audible alarm 54 is actuated for a short period of time. When an improper keyboard entry is attempted, however, the FAULT LED is lit for a short period of time and25 the entry is not accepted by the microprocessor. An internal check is also made by the microprocessor of its event memory. If an event memory malfunction is detected, the mieroprocessor causes the FAULT LED 44 and the audible alarm 54 to be energized, whereupon the user must return the microprocessor to its program mode of operation and reschedule all control events before the micro-30 processor can be returned to its run or run/verify modes of operation.
Provision is also made for allowing an external device to overridethe operation of the microprocessor in certain circumstances. Specifically, a set of terminals is provided to which may be connected a set of external contacts 50tFIGURE 2). The contacts 50, referred to hereinafter as the load 1 enable switch35 50, must be closed in order for the microprocessor to control load number 1 in accordance with the schedule entered therein. For example, switch 50 may comprise the contacts of a photocell, which open during daylight, and load num~er 1 may comprise a lighting load. In such a case, the microprocessor will " ,:

.
~ - -;~ ~
~"', -' ~

-lo- ~2~4~

be enabled to turn on or turn off load number 1 only during non-daylight hours, and load number 1 will otherwise be maintained off.
There is also provided a set of terminals adapted to be connected to a set of contacts 52 (FIGURE 2) which are hereinafter referred to as the duty-5 cycle override switch 52. Whenever switch 52 is closed, all loads whose currentcontrol events represent a "duty-cycle" control function are maintained on, and a LED 46 labelled DUTY-CYCLE OVERRIDE is lit. For example, switch 52 may comprise the contacts of a thermostat which close when a set temperature is reached. The microprocessor may accordingly function to provide duty-cycle 10 control functions for loads such as cooling equipment only until the cooling equipment has brought the facility's temperature to that set in the thermostat, thereby allowing more efficient cooling.
With reference now to FI~URE 2, the microprocessor in the preferred embodiment of the controller has a plurality of components including a15 CPU (Central Processing Unit) 100, a PROM (Programmable Read Only Memory) 102, a RAM (Random Access Memory) 104, a first port 106, a second port 108, and a third port divided into ports llOA, 110B. The foregoing components may comprise one or more~ commercially-available integrated circuit chips, of which the following are representative:
TABLE I
Component Designation CPU 100 Intel 8085 Microprocessor PROM 102 Two Intel 271616K (2KX8) UV Erasable RAM 104 Ten Intel M5101L-4 256x4-bit Static CMOS RAMs Ports 106,108 Intel 8255 Programmable Peripheral Interface Port 110A 74LS374 8-bit Latch (available from a number of manufacturers) Port 110B Three 74LS374 A low address/data bus, comprising leads AD0-AD7, interconnects corresponding terminals of CPU 100, PROM 102, RAM 104, ports 106, 108, 110A, llOB, and a latch 112. A lead ALE interconnects corresponding terminals of CPU
100 and latch 112. A plurality of leads A0-A7 interconnect corresponding output terminals of latch 112 with corresponding terminals of PROM 102 and RAM 104.

. ..... : " ~
,; 1.' - . ~

. ., - . : : , . . , ;, ~ : :: : ..... .. , :.. ~:
4~

In addition, leads A0-Al interconnect latch 112 with ports 106, 108 and with a decoder 114.
A first group of high address terminals of CPU 100 are interconnec-ted with PROM 102 and with a decoder 116 by leads A8-A10. A second group of high address terminals of CPU 100 are interconnected with a decoder 118 by leadsA11-A15.
Decoder 118 has a plurality of output terminals which are interconnected with port 106, port 108, decoder 114, and decoder 116 by respective leads PTl, PT2, PT3 and RAMC. Decoder 118 also has a plurality of output terminals which are interconnected with the integrated circuit chips within PROM 102 by corresponding leads PROMCS. Likewise, decoder 116 has a plurality of output terminals which are interconnected with the integrated circuit chips within RAM 104 by corresponding leads RAMCS. Decoder 114 has a plurality of output terminals which are interconnected with port 110A and port 110B by respective leads PCSl and PCS2.
Terminals IO/M and ~ of CPU 100 are connected to corresponding inputs of an OR gate 120, and terminals IO/M and WR of CPU 100 are connected to corresponding inputs of an OR gate 122. The output of OR gate 120 is con-nected by a lead ~ to PROM 102, RAM 104, port 106 and port 108, and the output of OR gate 122 is connected by a lead ~ to RAM 104, port 106, port 108 and decoder 114. Finally, a RES terminal of CPU 100 is interconnected with corresponding terminals of ports 106,108.
The foregoing com ponents, and their interconnections, form a largely conventional microprocessor, in which PROM 102 contains a program memory comprising a set of program instructions for various routines and subroutines which are described hereinafter with reference to FIGURES 7-21, and in which RAM 104 contains a scratch pad memory which is organized as described hereinafter with reference to FIGURE 5, and an event memory which is organized as described hereinafter with reference to FIGURE 6. Ports 106 and 108 function as input/output ports, whereas ports 110A, 110B function as output ports.
Within each routine or subroutine, the set of program instructions in PROM 102 are addressed and executed by CPU 100 in a predetermined sequence, established by a program counter within CPU 100. For each program instruction so addressed, CPU 100 undertakes an instruction cycle, with each instruction cycle including a plurality of machine cycles. The machine cycles permit CPU 100 to retrieve an instruction from PROM 102 and to execute the instruction by the addressing and transmission of data to and from CPU 100, RAM

. . , ~
, ;
' ' ,' ` :' :
.

,:

104 and ports 106,108 and llOA, 110B. Within each instruction cycle, addresses or data are transmitted on leads AD0-AD7. When an address is being transmitted by CPU 100 on leads AD0-AD7, a signal is provided on lead ALE therefrom which causes latch 112 to store therein the address, and to present the address thus
5 stored on leads A0-A7. At all other times, leads AD0-AD7 are used for the transmission of data. The address on leads A0-A7, together with further address information on leads A8-A10, is used to signify a memory location within the chips in PROM 102. Likewise, the address on leads A0-A7 is used to signify a memory location within the chips in RAM 104. The address on leads A0-Al, plus 10 address information on leads AD0-AD7 is used to signify that ports 106 and 108 should connect one of their input or output terminals, to be described hereinafter, with leads AD0-AD7 for the transmission or reception of data.
Likewise, address information on leads AD0-AD7 is used to signify that ports 110A, 110B should connect one or more of their output terminals, to be described15 hereinafter, to leads AD0-AD7 for the reception of data.
In order to signify which of the thus-addressed components of the microprocessor is to be interconnected with the leads AD0-AD7 for the transmission or reception of data, CPU 100 provides signals on leads A11-A15 to - decoder 118, which responsively provides select signals on leads PTl, PT2, PT3, or ao PROMCS to respectively enable port 106, port 108, ports llOA and llOB, or one of the chips within PROM 102. Decoder 118 is also responsive to the signals on leads All-A15 from CPU 100, together with the signals on leads A8-A10 therefrom, to provide chip select signals on leads RAMCS to respectively enable one of the chips within RAM 104. Likewise, decoder 114 is responsive to signals on leads A0-Al, and to the chip select signal on lead PT3, to provide chip select signals onleads PCSl or PCS2 to respectively enable either port 110A or port IIOB.
Actual data transmission on leads AD0-AD7, however, is not permitted until times during each instruction cycle as determined by CPU 100 and as signified by signals on terminals IO/M, RD and WR. By combining of these signals in OR gates la0, laa, the signals on leads RDI and WRl permits all ports to be treated as if they were memory locations (memory-mapped I/O). Vpon provision of a signal on lead RDI, the data in an addressed memory location in an enabled chip within PROM 102 or RAM 104 is placed on the leads AD0~AD7.
Likewise, the data represented by signals on any addressed input terminal in ports 106,108, when enabled, is placed on leads AD0-AD7. Upon the provision of a signal on lead WRl, any data on leads AD0-AD7 is written into an addressed memory location in an enabled chip within RAM 104, or, supplied to any addressed and enabled output terminal in ports 106,108,110A, 110B.

..

. . ~ ~, ,. : ,: .
. ~ :. ; . :. - :
~r , . : ', . ,;; :.' , .. ::

,: . : '~ " ' ~' ,- ' . : : ' ' '-Finally, various buffers with ports 106, 108, 110A, 110B, that are used for temporary storage of data being received from or transmitted to one of the input or output terminals thereof, are reset or cleared upon the provision of a signal on lead RES from CPU 100 to ports 106, 108, and by the provision of suitable data on leads AD0-AD7 to ports 110A, 110B.
Further details regarding the structure and operation of the microprocessor may be found in the "Intel Component Data Catalog 1978" and in the "MCS-85 User's Manual", copyright 1977, Intel Corporation.
A first group of input terminals of port 106 is respectively connected to SET TIME switch 34 and to respective terminals of the mode switch 26, in order to determine the actuation of SET TIME switch 34 and the positioning of mode switch 26 to either RUN, RUN/VERIPY, or PROGRAM
positions. A first output terminal of port 106 is connected to the reset (R) input of a counter 124, and a second output terminal of port 106 is connected to a first input of an OR gate 126 whose other input is connected to the output of counter 124. The output of OR gate 126 is connected to the signal input of a counter 128which has a plurality of output terminals that are interconnected with a second group of input terminals of port 106 and with corresponding inputs of an AND
gate 130. The output of AND gate 130 is connected to the reset (R) input of input counter 128. Another input terminal of port 106 is interconnected with STANDARD/DAYLIGHT switch 36 in order to determine the positioning thereof to either the STANDARD or DAYLIGHT positions.
A clock 132 provides a plurality of clock signals comprising: a first clock signal (e.g., at a freguency of lkHz) which is connected by an appropriatelead to a first input of an AND gate 133 to be described hereinafter; a second clock signal (e.g., at a frequency of 2 Hz) which is applied to the signal inputs of counter 124 and a counter 134; and, a third clock signal (e.g., at a frequency of 256 Hz) which is connected by an appropriate lead to an RST 7.5 (interrupt) input of CPU 100. A third output terminal of port 106 is connected by a lead 107 to a reset (R) input of counter 134, and the output of counter 134 is connected to a TRAP input of CPU 100.
Clock 132, counter 124, gate 126, counter 128, and gate 130 comprise the hardware clock which accumulates real-time information used by the microprocessor. Clock 132 preferably comprises a crystal-stabilized oscill&tor and a counter which divides a signal from the oscillator to provide the aforementioned clock signals. Counter 124 preferably comprises a counter which functions to divide the freguency of the second clock signal from clock 132 to provide an 1~

~:
. . .
.
.
.
..

'.- ~

output signal (e.g., at a frequency of .033 Hz) to gate 126. Normally, gate 126 f~mctions to pass the output signal from counter 124 to the signal input of counter 128 which is responsive to the output signal from counter 124 so as to accumulate a count representing the number of minutes that have transpired, in real-time, during a week. The count within counter 128 is coupled to the microprocessor through the output terminals of counter 128 and the second group of input terminals of port 106.
When counter 128 has accumulated a count representing the total number of minutes in a week, gflte 130 provides an output signal to reset counter 128, whereupon counter 128 agains begins to accum~date a count representative of the number of minutes, in real-time, during a subsequent week.
As previously noted, the microprocessor is capable of setting the time (or count) within the hardware clock to a desired time (or count) upon actuationof the SET TIME switch 34. To accomplish this function, the microprocessor provides a signal on the first output terminal of port 106 to reset counter 124,and provides a high frequency signal on the second output terminal of port 106 which is gated through gate 126 to advance the count within counter 128 until that count is at the desired time.
Provision is also made for monitoring the timing of the execution of program instructions by CPU 100. To accomplish this function, the counter 134 is set to over~low, and to accordingly provide an output signal, after an interval determined by a predetermined number of pulses in the second output signal from clock 132. When counter 134 overflows, the output signal therefrom at the TRAP input of CPU 100 causes CPU 100 to reset its program counter and to reinitialize its operations. However, if CPU 100 is executing program instructions in a timely manner, a signal is provided on the third output terminal of port 106 at periodic intervals, each of which is less than the overflow interval of counter 134, which causes counter 134 to be reset without overflowing.
The third clock signal from clock 132 causes CPU 100 to undertake an INTERRUPT subroutine, to be described hereinafter, in which the displays of the microprocessor are refreshed and in which certain internal timers in RAM
104 are decremented.
A first group of input and output terminals of port 108 is interconnected with keyboard 38 and is used to scan and detect key actuations therein in a conventional manner. Second and third groups of output terminals ofport 108 are interconnected by decoders 136, 138 with scan and display inputs ofthe character displays within display 28, with decoders 136 and 138 functioning in a conventional m~nner to provide demultiplexing and subsequent display of data obtained from port 108. The remaining input terminals of port 108 are - i :

- ~ - . :.
.: . . ..

, interconnected, respectively, with the program enable switch 48, with the load 1enable switch 50, and with the duty-cycle override switch 52, in order to detectactuation of those switches.
Port 110B has a first output terminal which is connected to a second 5 input of gate 133. The presence of a s~nal on the first output terminal of port 110B causes the first clock signal (at~from clock 132 to be gated through an amplifier 140 to cause actuation of the audible alarm 54. Port 110B also has a group of output terminals which are interconnected with a conventional LED
display 142 including the "PROGRAM" LED 27, the AM LED 30, the PM LED 32, 10 the LEDs 40, the LEDs 42, the FAULT LED 44, and the DUTY-CYCLE
OVERRIDE LED 46, whereupon a signal on any one of the output terminals of port 110B causes the corresponding LED to be lit.
Port llOA has a plurality of output terminals which are interconnec-ted by means of a driver circuit 144 with a plurality of load control circuits 145, 15 each of which includes one of the load control switches 22 and which is described in more detail hereinafter with reference to FIGURE 3. Each of the load relays within the plurality of load control circuits 145 is adapted to be interconnected with an electrical load circuit, and each load control circuit 145 is interconnected with a corresponding one of the LEDs 24 forming part of a conventional LED
20 display 146.
With reference now to FIGURE 3, each load control circuit 145 includes the load control switch 22 which is divided into first and second, ganged sections 22A, 22B. Each switch section 22A, 22B includes a plurality of stationary contacts, of which the left hand contact is labelled ON, the middle 25 two contacts are labelled AUTO, and the right hand contact is labelled OFF
(corresponding to the labelled positions illustrated in FIGURE 1). Switch section 22A is provided with a movable contact member 22A', and switch section 22B is provided with a movable contact member 22B', each of which is adapted to bridge two of the stationary contacts thereof. The ON stationary contact of 30 switch section 22A is connected to ground, and the right-hand AUTO stationarycontact thereof is connected to a corresponding output terminal of the driver circuit 144. The left-hand AUTO stationary contact of switch section 22A is connected to a corresponding LED 24 in LED display 146, and to one side of the coil of a load relay 148 whose other side is connected to a source of supply 35 voltage by lead 24V. A diode Dl connected in shunt with the coil of load relay 148 provides reverse-voltage protection for the output transistor in the corresponding driver circuit 144. A movable contact arm 148A of load relay 148 is connected toa first lead going to the associated load circuit, and to the ON stationary contact ~ .~

. ~ .

- ~ , -of switch section 22B. Upon de-energization of the load relay 148, movable contact arm 148A engages stationary contact 148B thereof, which is unconneeted.
Upon energization of load relay 148, movable contact arm 148A is in engagement with stationary contact 148C thereof, which is connected to the right-hand AUTO
stationary contact in switch section 22B. The left-hand AUTO stationary contact in switch section 22B is connected to a second lead going to the load circuit.
With the movable contact members 22A', 22B' in the position illustrated in FIGURE 3, the energization s~ate of the load relay 148 is under 10 control of the microprocessor. When the microprocessor is maintaining the load off, driver circuit 144 provides a high impedance level on its output which, when coupled through switeh section 22A, causes load relay lÇ8 to be de-energized. Asa result, the leads going to the load circuit are disconnected from each other, inasmuch as movable contact arm 148 is in engagement with stationary contact 15 148B thereof. When the microprocessor is maintaining the load on, driver circuit 144 provides a low level signal which, when coupled through switch section 22A, permits load rel~y 148 to be energized from the supply voltage appearing on lead24V. The low level signal from driver circuit 144 is also coupled through switchsection 22A to the corresponding LED 24 in LED display 146 to provide a current 20 path thereto. When load relay 148 is energized, a connection is made between the leads going to the load circuit, through switch section 22B and contacts 148C, 148A.
As can be noted, no connection is made to the OFF stationary contacts of switch sections 22A, 22B. Accordingly, when the movable contact 25 members 22A', 22B' are moved to bridge the OFF and right-hand AUTO
stationary contacts of switch sections 22A, 22B, the connections between the leads going to the load circuit and between the driver circuit 144 and the LED
display 146 are broken. Accordingly, the associated load circuit is maintained off, and the associated LED 24 is extinguished, notwithstanding the nature of the 30 signal from driver circuit 144. Likewise, if the movable contact members 22A', 22B' are moved so as to bridge the ON and left-hand AUTO stationary contacts of switch sections 22A, 22B, a connection is made between the leads going to theload circuit, and between the associated LED 24 in LED display 146 and a low level signal (e.g., ground), whereby the associated load circuit is maintained on 35 and the associàted LED 24 is lit, notwithstanding the nature of the signal from driver circuit 144.
With reference now to FIGURE 4, a power supply capable of providing appropriate dc supply voltages for the components of the controller ' ' ' ~ : ,,.` ' ', ,. ~ . . ' ' ' '~ ' ' ' ' .

from a source of alternating current, and also capable of detecting a low voltage condition in the source of alternatin~ current, is illustrated. The source of alternating current (nominally at ~is connected across the primary winding of a transformer Tl. The resultant ac voltage appearing across a center-tapped 5 secondary winding of transformer Tl is applied across a grounded full wave bridge rectifier FWB to whose output is connected the lead 24V (whose dc voltage is nominally 24 volts), with a voltage transient protection diode D2 being connected across bridge FWB to prevent noise transients from appearing on lead 24V. The ac voltage on the center tap of the secondary winding of transformer Tl (e.g., 10 ~aeC~ is connected by a resistor Rl, a diode D3, and a resistor R2 to the positive terminal of a battery Bl, whose negative terminal is connected to ground. The common junction of diode D3 and resistor R2 is coupled through a filter circuit 150 to a lead 5VB, upon which appears a dc supply voltage (nominally at 5 volts)for the components of the hardware clock (clock 132, counters 124,128 and 134, 15 and gates 126,130) and for RAM 104. A diode D4 is connected from the common junction of resistor Rl and diode D3 to a lead 5V, upon which appears a dc supply voltage (nominally at 5 volts) for the remaining components of the controller illustrated in FMURE 2. The dc supply voltage on lead 5V is regulated by a grounded voltage regulator 152 connected in shunt with resistor Rl and diode D4.20 Resistors Rl and R2 and diode D3 also function as a trickle charger for the battery Bl, so that battery Bl is maintained in a state of full charge during the times that power is being supplied from the source of alternating current.
If a power outage should be experienced, it is desirable to terminate the operation of the microprocessor in effecting load control, but to 25 maintain the hardware clock in an operating condition and to maintain the contents of the scratch pad memory and event memory within RAM 104 so that the microprocessor may resume load control upon power restoration.
Accordingly, capacitor Cl is connected from lead 24V to ground, and series-connected resistor R3 and zener diode ZDl are connected from lead 24V to 30 ground. The common junction of resistor R3 and zener diode ZDl is connected to the negative input of a fast acting comparator 154 whose output is connected by a lead LV to a RES IN terminal of CPU 100 (FIGURE 2). Resistors R4 and R5 are connected from the center tap of the secondary winding of transformer Tl to ground, and the common junction of resistors R4 and R5 is connected to the 35 positive input of comparator 154. The values of resistors R3, R4 and R5, and the reference voltage of zener diode ZDl, are chosen so that the signal applied to the positive input of comparator 154 is greater than the signal applied to the negative input of comparator 154 when the ac voltage from the source of alternating .
, . .
: . . .
, ~
:

~' .

current is at its nominal value thereof (110 vac). If the ac voltage from the source of alternating current should suddenly drop, as in the case of a power outage, the signal at the negative input of comparator 154 will decrease at a slower rate (due to the action of capacitor Cl) than the signal at the positive input thereof. As the ac 5 voltage from the source of alternating current continues to drop, a point will be reached, e.g., at 95 vac, at which the signal at the negative input of comparator 154 becomes greater than the signal at the positive input thereof. As a result, comparator 154 provides a low logic level signal on line LV which places CPU 100 in a reset condition, whereby ports 106, 108, llOA, llOB are reset to thereby effect 10 blanking of all displays and de-energization of the load relays 148 within load control circuits 145. As the ac voltage from the source of alternating current continues to drop, the supply voltages present on leads 5V, 24V will not be sufficient to maintain the components connected thereto in operation, and the microprocessor will cease to function. However, the supply voltage on lead 5VB will now be supplied 15 from the battery B1, and will continue to maintain the hardware clock in operation and to maintain the contents of the scratch pad memory and the event memory within RAM 104. By appropriate choice of the battery B1, the hardware clock may be maintained in operation and the contents of the scratch pad memory and event memory in RAM 104 may be maintained for a considerable period of time in the case 20 of power outage, e.g., fourteen days.
With reference now to FIGURE 5, the scratch pad memory within RAM 104 is organized into a plurality of operation flags, a plurality of timers, a plurality of data bytes, an SDC (seven-day clock) register and a DPLR (display) register, with each operation flag, timer, data byte and each field within the 25 SDC and DPLR registers having a unique memory location within RAM 104.
Each of the operation flags comprises a single data bit which is set or cleared by CPU 100 upon execution of certain program instructions in the routines and subroutines to be described hereinafter. Each of the timers comprises a data byte which is set to a predetermined count, and decremented in response to 30 signals from the hardware clock during an INTERRUPT subroutine described hereinafter, in order to provide timing for various operations utilized in the routines and subroutines. The data bytes and data words comprise 8-bit data bytes and 16-bit data words (excepting the LDIEN byte) whose format and use will be described hereinafter. The SDC register includes a plurality of fields, 35 collectively referred to as RT, and a DAY field which contain the real-time within any week corresponding to real-time information obtained from the hardware clock. Specifically, the RT fields within the SDC register consist of: M 1 and M 10 fields, representing real-time minutes in units and tens; H 1 and H 10 ,. ~ .., .
...

.

, ~

fields, representing real-time hours in units and tens; and, an AM/PM field, representing whether real-time minutes and real-time hours are am or pm. The SDC register also has a LOAD field which always contains invalid data, and a single-bit HOLA field~ which is set when the real-time day is a holiday.
The DPLR register has a plurality of fields, including TIME and DAY fields whose organization corresponds to the RT and DAY fields within the SDC register. The DPLR register also has a LOAD field whose contents represent a load number, and a single-bit HOLI field which is set in certain circumstances to correspond to the HOLA field in the SDC register. Program instructions (not illustrated) are provided which cause CPU 100 to transfer the contents of the DPLR register to the display 28, to LEDs 30, 32 and to LEDs 40 (FIGURES 1 and 2) with such transfer occurring during the INTERRUPT
subroutine described hereinafter.
The event memory within RAM 104 is organized as illustrated in FIGURE 6. Specifically, information relating to the schedule utilized by the microprocessor is stored in the form of ET/EV data words, with each such ET/EV
data word including three bits representing a predetermined code for a control event (EV), and twelve bits representing the event time (ET) of that control event. The event memory locations for the ET/EV words are grouped first by loads (e.g., LOAD 1, LOAD 2, etc.). Within each such load grouping, the ETtEV
words are grouped by days within a week (e.g., SUN, MON, etc.). In addition, event memory locations are provided within each load grouping for the ET/EV
data words relating to a holiday schedule (e.g., HOL). Within each day grouping,and within the holiday grouping, event memory locations are provided for eight ET/EV data words (e.g., El, E2, etc.). As illustrated, the event memory therefore provides storage for eight control events for each day of the week, plus a holiday, for each one of eight loads, for a total of 512 control events.
FIGURES 7(a) and 7(b) illustrate the main program loop of program instructions stored within PROM 102.
Upon application of power to the microprocessor, a POWER UP
condition is detected by CPU 100 which enables CPU 100 to enter step 200, in which a stack pointer in RAM ln4 is initiali~ed. RAM 104, in addition to the scratch pad memory previously described, includes a stack, or holding, register which is used by CPU 100 to temporarily store certain information relating to the program step being executed by CPU 100 ~h~n~ control signal from the hardware clock (e.g., the third clock signal at~) appears on input terminal RST 7.5 thereof. Upon the production of each such control signal, CPU 100 is programmed to immediately enter into the INTERRUPT subroutine.

i, .. . .......... . .

,:, ' ' Accordingly, the stack register is provided to provide temporary storage of program information so that CPU 100 can return to a specific program step after completion of the INTERRUPT subroutine. The stack register is configured as a circulating register, with the address of the first byte in the program step then 5 being executed being located in the stack pointer. Also in step 2û0, all output terminals in ports 106, 108 and 110A, 110B are cleared, and all contents of the scratch pad memory (FIGURE 5), excepting the MEMWD and HOLY data bytes, are cleared.
CPU 100 then proceeds, in step 202, to set the PRFLG and PWFLG
10 operation flags (FIGURE 5) and to load all the fields in the DPLR register with blank data, whereupon the display 28 is blanked and the LEDs 30, 32 and all LEDs40 are extinguished. In step 203, CPU 100 enters its main program loop and clears (i.e., resets) counter 134. NormsUy, CPU 100 will pass through the main program loop and return to step 203 in less time than is required for counter 134 15 to overflow. However, if CPU 100 should in some manner be inhibited from timely completing a pass through the main program loop, counter 134 will overflow as previously described, whereby CPU 100 is programmed (not illustrated) to return to step 200 and to reinitialize its operations. CPU 100 then proceeds, in step 204, to calculate and store the CHECKSUM data word, with 20 CHECKSUM comprising the numerical sum of all data bits within the event memory (FIGURE 6). CPU 100 then makes a test, in step 206, to determine if the CHECKSUM dsta word equals the MEMWD data word. As described hereinafter, MEMWD is cslculated when the microprocessor is in the program mode and also equals the numerical sum of all data bits wthin the event memory.
25 If power has been applied to the microprocessr for the first time, MEMWD willhave not been previously calculated and accordingly the determination in step 206 will be negative. If power has been restored to the microprocessor after a power outage, MEMWD should equsl CHECKSUM, provided that power has been restored within the hold-up period established by battery B1 (e.g., fourteen days), 30 and the determination in step 206 will be affirmative. In any case, if the event memory malfunctions, the determination in step 206 will be negative. If the determination in step 206 is negative, CPU 100 proceeds, in step 208, to set theMEMPLG operation flag. If the determination in step 206 is affirmative, CPU
100 proceeds, in step 210, to clear MEMFLG. When MEMFLG is set, the 35 microprocessor forces the user to select the program mode, as described hereinafter.
From either step 208 or step 210, CPU 100 proceeds, in step 2t2, to determine if the progrsm enable switch 48 is being actuated. Let it be assumed , ,. . . .., - .. ::

, :. ~ .- . : : :

.
.

~L~ 2~

that the user has not so actuated the program enable switch 48, whereupon the determination in step 212 is negative. As a result, CPU 100 proceeds, in step 218, to determine if the TPROGRAM timer is at zero. Since TPROGRAM has been cleared in step 200, the determination in step 218 is affirmative, whereupon CPU 100, in step 220, determines if the PROFL operation flag hRs been set. SincePROFL has been cleared in step 200, the determination in step 220 is negati re, whereupon CPU 100, in step 224, clears PROFL and the PROGRAM LED 27.
Thereafter, in step 228, CPU 100 determines if MEMFLG has been set. Let it be assumed that power has been initially applied to the microprocessor, or that an event memory malfunction has occurred, and that MEMFLG has been set in step 208. The determination in step 228 is therefore affirmative, whereupon CPU 100, in step 230, clears the output terminals in ports 106, 108 and 110A,110B, and clears all memory locations within the event memory. CPU 100 also sets (i.e,lights) the FAULT LED 44, and causes the production of a tone by audible alarm 54, to accordingly signify to the user that the microprocessor must be placed in its program mode. CPU 100 then returns to step 202, and continues to circulate in the loop described until the user has actuated the program enable switch 48.
Upon actuation of the program enable switch 48, the determination in step 212 is affirmative, whereupon CPV 100, in step 214, determines if the mode switch 26 has been set to its PROGRAM position. If the user has set the mode switch 26 to its PROGRAM position before actuating the program enable switch 48, the determination in step 214 is affirmative, whereby CPU 100 proceeds through steps 218 et seq. as previously described, whereupon the FAULT LED 44 and the tone from audible alarm 54 are maintained on to signify to the user that the program mode must be entered in a proper manner.
If the user has not set the mode switch 26 to its PROGRAM
position before actuating the program enable switch 48, however, the determina-tion in step 214 is negative, whereupon CPU 100, in step 216, sets the TPROGRAM timer to a count representing five seconds.
Upon setting of TPROGRAM, the determination in step 218 is negative, whereupon CPU 1009 in step 222, again determines if the mode switch 26 has been set to the PROGRAM position. If the determination in step 222 is negative, CPU 100 continues to loop through steps 224, 228, 230, 202, 203, 204, 206, 208, 212, 218, 220 and 222 for a period of five seconds (i.e., until TPROGRAM has decremented to zero), accordingly giving the user that period of time in which to set the mode switch 26 to the PROGRAM position.
Assuming that the user has set the mode switch 26 to the " ~ .

PROGRAM position within the five-second period, the determination in step 222 is sffirmative, whereupon CPU 100, in step 226, sets the PROFL operation flag, sets the PROGRAM LED 27, and sets the PRFLG operation flag CPU 100 then proceeds, in step 232, to determine if MEMFLG has been set. If the determination in step 232 is affirmative, CPU 100, in step 234, proceeds to clear the output terminals in ports 106, 108 and 110A and 110B, to clear the event memory locations in the event memory, to load the fields within the DPLR register which ars coupled to the display 28 with zeros (excepting the LOAD field in the DPLR register which is loaded with blank data~, whereupon the LOAD character display in display 28 is blanked and the remaining character displays in display 28 each display "0," and to set the PRFLG and PWFLG operation flags. CPU 100 also sets TFAULT to one second, and sets the FAULT LED 44 and the tone from audible alarm 54 until the count within TFAULT is decremented to zero. The indication provided by the momentary lighting of the FAULT LED 44, and the concurrent production of a tone from audible alarm 54, signifies to the user that the eventmemory has been cleared and that a new schedule ~nust be entered therein.
From step 234, CPU 100 proceeds to its PROGRAM mode 242.
If the determination in step 232 is negative (e.g., there is no event memory malfunction and the user wishes to alter a previously-entered schedule), CPU 100 does not lmdertake the actions in step 234, but rather proceeds directlyto its PROGRAM mode 242.
Within step 244 in the PROGRAM 242, the HOLI field in the DPLR
register is cleared. As explained hereinafter, the HOLI field is set when the day in real-time corresponds to a day selected as a holiday~ Also, the HOLY data byte in the scratch pad memory (FIGURE 5) within RAM 104 includes seven HO~YB bits, one for each day of the week, with each HOLYB bit being set, during the time that the microprocessor is in its run/verify mode of operation, when the user selects the corresponding day as a holiday upon actuation of the HOLIDAY key in keyboard 38.
After clearing HOLI, CPU 100 calls a REAL-TIME CLOCX routine, a REAL-TIME SET routine, and a KEYBOARD routine in sequence, along with their associated routines and subroutines, as described in detail hereinafter. In summary, the actions undertaken by CPU 100 in step 244 allow: for the updating of the fields within the SDC register in accordance with real-time information obtained from the hardware clock; for setting of the time within the hardware clock to any desired time; and, for the servicing of a keyboard entry by the user through use of the keyboard 38. From step 244, CPU 100 proceeds, in step 246, to calculate and store MEMWD. From step 246, CPU 100 then exits from the .~; .. .

.
.. . .. . . .
,.

, - ., . :
i~ : ~ ,.
:
.
- ~-.
.

.
. .
.

g~4~

PROGRAM mode 242 and returns to step 203. The determination in step 206 is now affirmative, as a result of which CPU 100 proceeds in step 210, to clear MEMFLG.Assuming that the mode switch 26 remains at the PROGRAM position, CPU 100 will again return to its PROGRAM mode 242. As an example, let it be assumed that 5 TPROGRAM has decremented to zero. Accordingly, the determination in step 218 is affirmative. However, since PROFL has been set, the determination in step 220is affirmative, whereupon CPU 100 proceeds through steps 222 and 226 to step 232.
Since MEMFLG has been cleared, the determination in step 232 is negative, whereupon CPU 100 returns to the PROGRAM mode 242.
As can be appreciated, CPU 100 will continue to pass through the portion of the main program loop including the PP~OGRAM mode 242 for as long as the mode switch 26 is set to the PROGRAM position. Therefore, the user is permitted whatever time is required to enter a schedule into the microprocessor. Let it be assumed that CPU 100 has processed the REAL-TIME
15 CLCCK and REAL-TIME SET routines within step 244 in the PROGRAM mode 242, and has proceeded to the KEYBOARD routine illustrated in FIGURE 12.
Initially, CPU 100, in step 360, debounces and reads the keyboard 38, and effects transfer of data from the input terminals of port 108 to internal registers within CPU 100. In step 362, CPU 100 then determines if one, and only one, key has 20 been actuated. If the determination in step 362 is negative, i.e., the user has made an error in data entry by actuating more than one key, CPU 100 returns to the mode routine currently being processed (in the case being discussed, the PROGRAM mode 242). Whenever CPU 100 is stated, in the ensuing discussion, as "returning to the mode routine," it should be understood that CPU 100 jumps to 25 the next routine, or branch routine, in the step then being executed, or to the next step in the mode routine then being executed. For example, if CPU 100 is in the PROGRAM mode 242, and if the determination in step 362 is negative, CPU 100 jumps to step 246.
If the determination in step 362 is affirmative, however, CPU 100 30 proceeds, in step 364, to determine if the key that has been actuated is an "active" key. In this regard, only certain of the keys in the keyboard 38 are active when the microprocessor is in its program mode of operation, and only certain of the keys in keyboard 38 are active when the microprocessor is in its run/verify mode of operation. CPU 100 makes the determination in step 364 by 35 referring to a look-up table in PROM 102 which contains a listing of pertinent information relating to the keys in keyboard 38. Table II sets forth an example of such a listing.

:~a I

' ~ ' : , ' .
; .
''; . - ~ :

, - : :-~--Mode , Key Function Key #Key LabelRun/Verify Pro~ramSubroutine 2 (OFF) E AINSERT EVENT
O

E AINSERT EVENT
6 20 E AINSERT EVENT
7 25 E AINSERT EVENT
8 (ON) E AINSERT EVENT
9 CLEAR E A CLEAR
10 HOLIDAY A E HOLIDAY -~
11 TIME A A TIME
12 SCAN A A SCAN
13 MINUTE A A SLEW
14 HOUR A A SLEW
DAY A A SLEW

;

E - ERROR A - ACTIVE

`9 ~''~ If the determination in step 364~t,~U 100, in step 366, -sets the audiMe alarm 54 for a period of 0.1 seconds, whereupon a momentary tone is sounded thereby to signify to the us~sr that a proper data entry has been - made, and then jumps to a key function subroutine for the particular key that has 3û been pressed. Table II also contains a listing of the key function subroutines for each of the keys within keyboard 38.
If the determination in step 364 is negative, i.e., the actuated key is not active (reference again Table II), CPU 100 proceeds, in step 370, to set the TKEY timer to a count representing one second, and sets the FAULT LED 44 35 until the count within TKEY equals zero, thereby signifying to the user that an improper data entry has been attempted. From step 370, CPU 100 returns to the mode routine then being executed.
The user will have been instructed to enter the schedule for load control into the microprocessor by selecting each load and each day and by .., :, i .
-4~3 selecting each event time and corresponding control event for the thus-selected load and day. In order to select a load, the user actuates the LOAD key in keyboard 38, and in order to select the event time and day, the user actuates the MlNUTE, HOUR and DAY keys in keyboard 38. The actuation of any of these 5 keys causes CPU 100 to jump to the SLEW key function subroutine illustrated inFIGURE 14. Initially, CPU 100, in step 400, determines if the key actuation is the first such actuation for the key in the processing of the mode routine then being executed. If the determination in step 400 is affirmative, CPU 100, in step 402, sets the TSLEW timer to a count representing one second, and then proceeds, in 10 step 404, to add a decimal "1" to the pertinent field in the DPLR register. Let it be assumed that the LOAD key has been actuated and that the LOAD field in the DPLR
register contains blank data (e.g., step 234, FIGURE 7(b)). The LOAD field in the DPLR register wiU contain data, after step 404, representing "1" which will res~t in the numeral "1" being displayed by the LOAD character display in display 28. From step 404, CPU 100 returns to the mode routine.
If the key remains actuated, CPU 100 returns to the SLFW key function subroutine upon its next pass through the main program loop. At this time, the determination in step 400 is negative, whereupon CPU 100 proceeds, in step 406, to determine if the count in TSLEW is equal to zero. The initial 20 determination in step 406 will be negative (since TSLEW has been set to a count representing one second), whereupon CPU 100 returns to the mode routine. CPU
100 continues to pass through the main program loop in this manner until TSLEW
has been decremented to zero, whereupon the determination in step 406 is affirmative. Thereafter, CPU 100, in step 408, sets TSLEW to a count 25 representing .x second (with x being dependent on the key that has been actuated), and then returns to step 404, wherein the pertinent field in the DPLRregister is incremented so that the display afforded by the corresponding character display in display 28 is incremented by decimal "1." Accordingly, the user may select a desired load by actuating and holding the LOAD key until the 30 desired load number appears in the display 28. Likewise, the user may select a desired event time and day by actuating and holding the MINUTE, HOUR, and DAY keys until the desired event time is displayed by display 28, LEDs 30, 32 and LEDs 40. Since it is desired to increment the display of minutes at a faster rate than the load number, hour and day displays, the factor x utilized in step 408 for 35 the MINUTE key is preferably much less than that utilized for the LOAD, HOUR
and DAY key. At this point, it should be noted that when the DAY field in the DPLR register has been incremented to its full count (i.e., seven days), continued actuation of the DAY key will cause the DAY field to over~low and the HOLI
. ~

' ' : :

, ' :
, .

~%~4~

field to be set. Upon overflow of any field in the DPLR register, that field will be cleared so that the corresponding display can be continuously advanced for aslong as the corresponding key is actuated.
With the load, day, and event time thus selected, the operator will 5 have been instructed to select a control event by actuation of one of the event keys in the keyboard 38. Upon actuation of an event key, CPU 100 jumps to the INSERT EVENT key function subroutine illustrated in FIGURE 13. Initially, CPU
lOû, in step 372, generates an EV number, representing the desired control function, as equal to the key number (reference TaMe II) minus 2. For 10 convenience, the EV numbers are listed in Table III.

TABLE III
EV KEY
6 30~0N)
15 5 25 3 1~ ~ DUTY-CYCLE

20 0 0(0FF) :
In step 374, CPU 100 lights the corresponding LED 42. In step 376, CPU 100 generates an event time ET from the TIME fields within the DPLR
register (which represent the selected event time). In step 378, CPU 100 then 25 generates a new ET/EV data word from the EV number and event time ET
generated in steps 372 and 376, with the format of the ET/EV data word corresponding to that illustrated in FIGURE 6.
CPU 100 then proceeds, in step 380, to address the event memory locations corresponding to the LOAD field and to the DAY or HOLI fields in the 30 DPLR register. In step 382, CPU 100 searches the addressed event memory locations. CPU l00 then determines, in step 384, if the ET in the new ET/EV
data word corresponds to an ET in the addressed event memory locations, i.e., the selected event time corresponds to an event time of a previously entered control event. If the determination in step 384 is negative (e.g" the event 35 memory has been cleared), CPU 100, in step 386, determines if the addressed event memory locations are full. If the determination in step 386 is negative, CPU 100 proceeds~ in step 388, to insert or store the new ET/EV data word into an appropriate location in the event memory. CPU 100 then proceeds, in step .
:: -~',; ' , . . ' - , ` ' ' : : :
; .

: ,. . .

11~9~

394, to clear the LED 42 which was lit in step 374, and thereafter returns to the mode routine.
Let it be assumed that the event memory already contains one or more ET/EV data words in the event memory locations addressed in step 382. If S the ET in the new ET/EV data word corresponds to any E~ in tl~ç,addressed event memory locations, the determination in step 384 isC~e so that CPU 100 proceeds, in step 390, to write the new ET/EV data word over the old ET/EV data word having the same ET, and then returns to step 394. Likewise, if the addressed event memory locations are ful~e.g;~they contain eight ET/EV data words, the determin&tion in step 38~ is ~Pt~r`vc, wXereupon CPU 100, in step 392, sets TFAULT to a count representing one second, and sets the FAULT LED 44 until the count within TFAULT goes to zero, to thereby signify to the user that an improper data entry has been attempted. From step 392, CPU 100 proceeds to step 394.
In this manner, the schedule for load control for an entire week can be entered into the event memory. If the user wishes to cow the schedule for a selected load and for a selected day into the event memory locations for that load and for one or more, succeeding days, the user will actuate the REPEAT key in keyboard 38. Actuation of the REPEAT key causes CPU 100 to jump to the REPEAT key function subroutine illustrated in FIGURE 16. Initially, CPU 100, in step 440, copies the ET/EV data words in the event memory locations corresponding to the selected day and load (represented by the DAY and LOAD
fields in the DPLR register) into the event memory locations corresponding to the succeeding day and to the selected load. In step 442, CPU 100 then proceeds to increment the DAY field in the DPLR register by one, whereupon the LED 40 for the succeeding day is lit to accordingly signify to the user that the schedule has been copied, and then returns to the mode routine. If desired, the user may COw the schedule for additional succeeding days by subsequent actuations of the REPEAT key.
Likewise, the user may wish to erase the schedule for a selected day and load. Accordingly, the user, after selecting the day and load by actuation of the DAY and LOAD keys in the manner previously described, actuates the CLEAR key in keyboard 38, whereupon CPU 100 jumps to the CLEAR subroutine illustrated in FIGURE 17. In step 450, the event memory locations corresponding to the thus-selected day and load (represented by the DAY and LOAD fields in the DPLR register) are filled with invalid data words, e.g., zeros. Thereafter, CPU 100 returns to the mode routine.
During each pass through step 244 in the PROGRAM mode 242, the ... . .
. .
: :
: - .: .
;, ~ . , ,:

. . . - .
. ~ . .

~12~4~

CPU 100 calls the REAL-TIME CLOCK routine (FIGURE 8) and the REAL-TIME
SET routine (FIGURE 10).
With reference now to FIGURE 8, the REAL-TIME CLOCK routine permits the contents of the SDC register to be updated to correspond to the re~l-time information within the hardware clock. Also, the HOLA field within the SDC register is set, or cleared, depending upon whether the real-time day has been selected as a holiday. Further, by jumping to a LOAD UPDATE branch routine il~ustrated in FIGURE 9, the desired status of each load is updated through comparison of the contents of the SDC register with the schedule contained in the event memory.
In the REAL-TIME CLOCK routine, CPU 100 proceeds to update the contents of the SDC register, but only upon the occurrence of any one of three conditions: a POWER UP condition or an event memory malfunction has occurred, e.g., PWFLG is set in step 202, see FIGURE 7(a); the HOLIDAY key in keyboard 38 has been actuated when the microprocessor is in its run/verify mode of operation, e.g., the HOFLG operation flag has been set, as described hereinafter; or, the tin-e within the hardware clock has changed since the previous pass of CPU 100 through the REAL-TIME CLOCK routine. CPU 100 accordingly deterrnines if any of these conditions have been met in steps 260, 262 and 264. If none of the conditions have been met, CPU 100 returns to the mode routine. If any of the conditions have been met, CPU 100 proceeds, in step 266, to clear PWFLG and HOFLG. Thereafter, CPU 100, in step 268, stores the time within the hardware clock (which is a binary representation of the minutes that have transpired since the beginning of the week, as previously described) as theHDWETIME data byte in RAM 104. In step 270, CPU 100 determines if the STANDARD/DAYLIGHT switch 36 has been set to the DAYLIGHT position. If the determination in step 270 is affirmative, CPU 100 proceeds, in step 272, to add the binary representation of sixty minutes to HDWETIME, and then proceeds to step 274. If the determination in step 270 is negative, CPU 100 proceeds directly to step 274. At this point, it should be noted that the time within thehardware clock is always in standard time, and that the corresponding real-time information in the SDC register is advanced by sixty minutes from the time in the hardware clock only upon setting of the STANDARD/DAYLIGHT switch 36 to the DAYLIGHT position.
In step 274, HDWETIME (in binary minutes) is converted to corresponding day, am/pm, hour and minute information (in BCD form) and stored in the appropriate RT and DAY fields within the SDC register (FIGURE 5).
In step 276, CPU 100 determines if the real-time information within , .:
~ - ~ : , ! .. ..

-` . ` ' ` ' ` `. ~ ~' `' '' '`' - ..

.

the RT fields in the SDC register represents 12:00 am, i.e., a new day has begun.
If the determination in step 276 is positive, CPU 100 proceeds, in step 278, to clear the HOLYB bit (in HOLY) for the day immediately previous to the day represented by the DAY field in the SDC register. HOLY includes a HOLYB bit 5 for each day of the week, with the HOLY13 bit being set as described hereinafter upon actuation of the HOLIDAY key in keyboard 38. By undertaking the actions in step 278, CPU 100 insures that the holiday schedule in the event memory will be followed only upon the first occurrence of the day selected as a holiday following actuation of the HOLIDAY key. From step 278, CPU 100 proceeds to 10 step 280. ~ikewise, if the determination in step 276 is negative, CPU 100 proceeds directly to step 280.
In step 280, CPU 100 determines if the HOLYB bit (in HOLY) has been set for the day represented by the DAY field in the SDC register. If the determination in step 280 is affirmative, the HOLA field in the SDC register is 15 set in step 284. If the determination in step 280 is negative, the HOLA field in the SDC register is cleared in step 282. From either step 282 or step 284, CPU
100 jumps to the LOAD UPDATE routine illustrated in FIGURE 9.
Within the LOAD UPDATE routine, the status of each load is updated through a comparison of the real-time information within the SDC register with the 20 schedule for that load contained in the event memory. Initially, CPU 100, in step 290, is conditioned or set-up for load 1, i.e., is enabled to address those event memory locations corresponding to load 1 (FIGURE 6). In step 292, CPU 100 determines if the HOLA field within the SDC register has been set (reference steps 282, 284 in the REAL-TIME CLOCK routine in FIGURE 8). If the determination in 25 step 292 is affirmative, i.e., the real-time day has been selected as a holiday, CPU
100 proceeds, in step 294, to address the event memory locations corresponding to the set-up load and to the holiday schedule therefor. If the determination in step 292 is negative, i.e., the real-time day is not a holiday, CPU 100 proceeds, in step 296, to address the memory locations corresponding to the set-up load and to the30 day represented by the DAY field in the SDC register.
From either step 294 or step 296, CPU 100 proceeds, in step 298, to search the addressed event memory locations of the last valid ET/EV data word whose event time (ET) occurs before or at the real-time information in the RT fields within the SDC register. In step 35 300, CPU 100 determines if the search has been successf~. If the determination in step 300 is affirmative, CPU 100, in step 302, proceeds to determine if a change in status of the set-up load is required. Specifically, CPU
100 applies the mathematical relationship:
.~

- : ~- ~ ' :, -. .
.:

1 1 2~34~3 ¦ ET-RT I MOD(EVmaX * NUM) > (EV * NUM) where ¦ET-RT I = the absolute difference, in minutes, between the event time and real-time;
NUM = the smallest number of minutes in any control interval for which a change in load status will be effected (in the embodiment being discussed, NUM = 5);
IET-RT ¦ MOD(EVmax * NUM) = the remainder after dividing ¦ ET-RT ¦ bY (EVmaX * NUM);
EV is an integer representing the control event (see (Table III), ranging from EVmin = 0 for an off control function to EVmaX for an on control function; and, (EVmaX * NUM) is the number of minutes in a control interval.

If the determination in step 302 is affirmative, the set-up load is to be off. If the determination in step 302 is negative, the set-up load is to be on.
To give an example, let it be assumed that real-time is 1 35 pm, the last event time was 8:40 am, and EV = 3 (a duty-cycle control function).
Therefore:
I ET-RT I = 295 (EVmaX * NUM) = (6 ~ 5) = 30 (EV * NUM) = (3 * 5) = 15 I ET-RT¦ MOD(EVmaX * NUM ) = remainder after 295/30 = 25 Since 25 is greater than [(EV * NUM) = 15], the determination in step 302 is affirmative.
Intuitively, it can be seen that the current control interval will have commenced at 1:10 pm. At 1 35 pm, twenty-five minutes have elapsed since the beginnning of the control interval. Since the set-up load is being controlled in accordance with duty-cycle control function in which the load is on only for the first fifteen minutes of each control interval, the load is to be off.
As another example, let it be assumed that EV = 6, with the same real-time and event time as in the previous example.
Therefore:
¦ ET-RT¦ = 295 (EVmax * NUM) = 30 (EV * NUM) = (6 * 5) = 30 I ET-RT ¦ MOD(EVmaX * NUM) = remainder after a95/30 = 25 ~ , , , : ~ . ;
.-4~3 Since 25 is less than [(EV * NUM) = 30], the determination in step302 is negative. In fact, when EV = 6, the remAinder can never be greater than or equal to (EV * NUM), so that the set-up load is always on.
Likewise, when EV = 0, the remainder is always greater than or 5 equal to (EV * NUM), so that the set-up load is always off.
If the determination in step 302 is affirmative, CPU 100 proceeds, in step 304, to clear the LDSTATUS bit for the set-up load. If the determinationin step 302 is negative, CPU 100 proceeds, in step 306, to set the LDSTATUS bit for the set-up load. One such LDSTATUS bit is provided for each load, and is set10 when the associated load is to be on and is cleared when the associated load is to be off.
From either step 304 or step 306, CPU 100 proceeds, in step 308, to determine if the control event that has been addressed represents either an on or an off control function, i.e., does EV equal 6 or 0 (reference TABLE III). If the 15 determination in step 308 is negative, e.g., the addressed event represents aduty-cycle control function, CPU 100 proceeds, in step 310, to set a DCSTATUS
bit for the set-up load. If the determination in step 308 is affirmative, CPU 100 proceeds, in step 312, to clear the DCSTATUS bit for the set-up load. One such DCSTATUS bit is provided for each load, and is set when the control event 20 represents a duty-cycle control function, and is cleared when the control event represents either an on or an off control function.
If the determination in step 300 is negative, i.e., there are no valid ET/EV data words for the set-up load for the selected day or holiday, CPU 100 proceeds, in step 312, to address and search all event memory locations 25 corresponding to the set-up load for the last valid ET/EV data word whose event time ET occurs before the real-time represented by the RT field within th SDC
register. In step 314, CPU 100 determines if the search in step 312 has been successful. If the determination in step 314 is affirmative, CPU 100 proceeds todetermine the status of each load by proceeding through step 302 and the 30 subsequent steps previously described.
Accordingly, if there are no control events in the event memory whose event times occur before or at real-time in any real-time day, the microprocessor will control the status of the set-up load in accordance with the last control event whose event time occurs in one of the days preceding the real-time35 day. If the determination in step 314 is negative, i.e., there are no control events entered in the event memory for the set-up load, CPU 100 proceeds, in step 316, to clear the LDSTATUS bit and the DCSTATUS bit for the set-up load.

~ 2~

From either step 31Q, 312 or 316, CPU 100 proceeds, in step 318 to determine if all loads have been updated. If the determination in step 318 is negative, CPU 100 proceeds, in step 320, to set-up for the next load, e.g., the next load number, and then returns to step 292 to repeat the load status updating 5 as previously described. After all loads have been updated, the determination in step 318 is positive, whereupon CPU 100 proceeds, in step 322, to assemble and store the LBYTE data byte from the LDSTATUS bits determined during the pass through the LOAD UPDATE routine, and to assemble and store the STBT data byte from the DCSTATUS bits determined during the pass through the LOAD
10 UPDATE routine.
As an example, let it be assumed that loads 1, 3, 4, 7 are to be on, and that loads 2, 4, 7 and 8 are being controlled with a duty-cycle control function.
Therefore:
. load number - ~

LBYTE = 1 0 1 1 0 0 1 0 STBT = 0 1 0 1 0 0 1 1 At this point, it should be noted that the actual energization states 20 of the load relays are not changed until the microprocessor enters either itsrun/verify mode or its run mode, as hereinafter described. When CPU 100 enters the PROGRAM mode 242 upon the occurrence of an event memory malfunction (i.e., MEMELG is set), all loads are turned off (reference the clearing of the output terminals in port 110A in steps 230 or 234, FIGURE 7(b)). In all other 25 cases where CPU 100 enters the PROGRAM mode 242, the loads are maintained on or off in accordance with the then-existing energization states of the load relays. Change of the energization states of the load relays can be effected only in the OUTPUT ~ STAG13 routine (FIGURE 20) which is described hereinafter.
From step 322, CPU 100 returns to the mode routine.
While still in step 244 in the PROGRAM mode 242, CPU 100 will call the REAL-TIME SET routine illustrated in FIGURE 10. The user will have been instructed to select a desired time by advancing the time displQyed in display 28, LEDs 30, 32 and LEDs 40 through actuation of the DAY, HOUR, and MINtJTE keys in the keyboard 38, and then to actuate the SET TIME switch 34.
35 Initially, a determination is made, in step 330, as to whether the SET TIME
switch 34 has been actuated. If the determination in step 330 is negative, CPU
100 returns to the mode routine. If the determination in step 330 is affirmative, e.g., the user wishes to change the time within the hardware clock, CPU 100 ~' ~ . ,. ~, ,.

; . .

,,, ", : ..
, -_33_ proceeds to effect such an adjustment only if CPU 100 is in the PROGRAM mode 242 and if the user has not caused the ~OL LED 40 to be lit. Accordingly, a determination is made in step 332 as to whether PROFI, has been set and a determination is made in step 334 as to whether the HOLI field in the DPLR
register has been set. If the determination in step 332 is negative or if the determination in step 334 is affirmative, CPU 100 proceeds, in step 336, to set TFAULT to a count representing 0.1 seconds, and sets the FAULT LED 44 until the count in TFAULT is decremented to zero, thereby signifying to the user that the desired time adjustment cannot be made. From step 336, CPU 100 returns to 10 the mode routine.
If the determination in step 332 is positive and the determination in step 334 is negative, however, CPU 100 proceeds, in step 338, to convert the information in the TIME and DAY fields in the DPLR register to binary minutes, and to store the same in an internal register within CPU 100. From step 338, 15 CPU 100 proceeds, in step 340, to determine if the STANDARD/DAYLIGHT
switch 38 has been set to the DAYLIGHT position. If the determination in step 340 is positive, CPU 100 proceeds, in step 342, to subtract the binary representation of sixty minutes from the time stored in its internal register (since the time in the hardware clock is always in standard time). Prom step 342, 20 or, if the determination in step 340 is negative, CPU 100 proceeds, in step 344, to incremènt the time information within the hardware clock (by resetting counter 124 and by supplying a high frequency signal to counter 128 through gatela6, as previously described with reference to FIGURE 2). Thereafter, CPU 100, in step 346 compares the time information within the hardware clock (which is in25 binary minutes) with the time in its internal register, and continues loopingthrough step 344 and step 346 until the determination in step 346 is affirmative.
Since the time information in the hardware clock has been changed, CPU 100 jumps to the REAL-TIME CLOCK routine from step 346, whereupon the contents of the SDC register are updated, and then proceeds through the LOAD
30 UPDATE routine, whereupon the status of the loads is updated, as previously described. From the LOAD UPDATE routine, CPU 100, returns to the mode routine (e.g., calls the KEYBOARD routine in step 244.) Let it be assumed that the user has completed entry of the predetermined schedule into the microprocessor, and desires the microprocessor 35 to assume control of the loads in accordance with the thus-entered schedule.
Accordingly, the user will place the mode switch 26 to either its RUN or its RUN/VERIFY positions. Let it also be assumed that no event memory malfunction or program timing error has transpired.

' ~ ! .

''~'`~ '.

As a result, CPU 100, upon exiting from the PROGRAM mode 242, PIGURE 7(b), passes through steps 203, 204, 206, 210, 212 and 21~ to step 220, FIGVRE 7(a). Since PROFL was set when the microprocessor entered its program mode, the determination in step 220 is affirmative, whereupon CPU 100 proceeds to step 222. Since the mode switch 26 has been moved from its PROGRAM position, the determination in step 222 is negative, whereupon CPU
100, in step 224, clears PROF1 and extinguishes the PROGRAM LED 27. From step 224, CPU 100 proceeds, through step 228, to step 236, in which a determination is made as to whether the mode switch 26 has been set to the RUN
position. Let it be assumed that the user has selected the RUN/VERIFY position of mode switch 26, in which case the determination in step 236 is negative, so that CPU 100 proceeds to the RUN/VERIFY mode 240.
~t this point, it should be noted that the microprocessor will also enter its run or run/verify modes of operation upon the determination of a POWER UP condition, provided that no event memory malfunction has occurred.
For example, CPU 100 will proceed through steps 200, 202, 203, 204, 206, 210, 212, 218, 220, 224, and 228 to step 236. In this case, it should be remembered that PRFLG was set in step 202 and has not yet been cleared. Likewise, if the microprocessor proceeds to either the run or run/verify modes from the program mode, it should be remembered that PRFLG was set in steps 202, 226 or 234 and has not yet been cleared.
While in the RUN/VERIFY mode 240, CPU 100 clears the LEDs 42 and successively calls: the REAL-TIME CLOCK routine (and the LOAD VPDATE
routine) to permit updating of the contents of the SDC register and to permit updating of load status, as previously described; an XFER routine; the KEYBOARD routine (and its associated subroutines); and, the OUTPUT ~c STAGE
routine.
Referring now to the XFER routine illustrated in FIGURE 11, CPU
100 initially determines, in step 350, if the mode switch 26 has been set to itsPROGRAM position. If the determination in step 350 i8 affirmative, CPU 100 returns to the mode routine. If the determination in step 350 is negative, CPU
100 proceeds, in step 352, to determine if the mode switch 26 has been set to its RUN/VERIFY position. In the circumstance being discussed, the determination in step 352 is affirmative, whereupon CPU 100 proceeds, in step 354, to determine if PRFLG has been set. If the determination in step 354 is negative, CPU 100 returns to the mode routine. However, if the determination in step 352 is negati~e, or if the determination in step 354 is affirmative, CPU 100 proceeds, in step 356, to transfer the contents of the RT, LOAD, and DAY fields within the .~ . .
... . :

': ', ' , ' ~ : ' ,,: :

, SDC register to the LOAD, TIME and DAY fields in the DPLR register, and to set the HOLI field in the DPLR register equal to the HOLA field in the SDC
register. Since the LOAD field in the SDC register contains invalid data, the LOAD character display in displfly 28 will be blanked. However, the remaining character displays in display 28, LEDs 30, 32 and LEDs 40 will display real-timeinformation.
Now, PRFLG is cleared during the subsequent OUTPUT ~c STAGE
routine. Therefore, CPU 100 proceeds to step 356, wherein real-time information is displayed to the user, only if the mode switch is in its RUN position, or upon the first pass of CPU 100 through the RUN/VERIFY mode 240 following a POWE~ UP condition or following the placing of the mode switch 26 from its PROGRAM position to its RUN/VERIFY position. From step 356, CPU 100 returns to the mode routine.
While in the RUN/VERIFY mode 240, CPU 100 next calls the KEYBOARD routine. By reference to Table II, only the HOLIDAY, TIME, SCAN, MINUTE, HOUR, DAY, and LOAD keys in keyboard 38 are active during the RUN/VERIFY mode 240.
Upon actuation of either the MINUTE, HOUR, DAY or LOAD keys, the user may cause any desired time, day or load to be displayed as previously described.
Upon actuation of the HOLIDAY key, CPU 100 proceeds to the HOLIDAY key function subroutine illustrated in FIGURE 18. The user will have been instructed to actuate the HOLIDAY key after advancing the day that is being displayed to the day selected as a holiday (through actuation of the DAY
key). In step 460, CPU 100 sets the HOFLG operation flag, and sets the HOLYB
bit (in HOLY) corresponding to the day represented by the DAY field in the DPLR register, and then returns to the mode routine.
When HOFLG has been set, CPU 100, upon its next pass through the REA~TIME CLOCK routine (FIGURE 8), updates the contents of the SDC
register, irrespective of whether PWFLG has been set or whether there has been a change in the time within the hardware clock. As CPU 100 proceeds through the REAL-TIME CLOCK routine, it will be noted that the HOLYB bit for the day previous to that represented by the DAY field in the SDC register will be cleared to accordingly deflflg that day as a holiday, and that the HOLA field in the SDCregister will either be set or cleared, depending upon whether the HOLYB bit hasbeen set for the day represented by the DAY field in the SDC register (referencesteps 278, 280, 282 and 284). Accordingly, by causing CPU 100 to pass through the entire REAL-TIME CLOCK routine after the HOLIDAY key has been : ~, '~
.: `

, .: , ~ ' . , . : , . ' ' . `:

-36- ~'1.2~4~

actuated, i.e., HOFLG has been set, load control may be immediately shifted to aholiday schedule (in the subsequent LOAD UPDATE routine) if the day in real time has been selected as a holiday.
The user may wish to obtain a readout of the schedule for a given 5 load and for any day of the week or for the holiday. Accordingly, when CPU 100 is in the PROGRAM mode 242 or the RUN/VERIFY mode 240, actuation of the SCAN key causes CPU 100 to enter into the SCAN key function subroutine illustrated in FIGURE 15. Initially, CPU 100, in step 410, determines if PROFL
is set, i.e., if the microprocessor is in its program mode of operation. If the 10 determination in step 410 is affirmative, CPU 100 proceeds, in step 412, to address and search the event memory locations corresponding to the day and load represented by the LOAD and DAY or HOLI field in the DPLR register. When the microprocessor is in its run/verify mode of operation, the determination in step 410 will be negative, so that CPU 100 proceeds, in step 414, to determine if 15 the HOLYB bit has been set for the day represented by the DAY field in the DPLR register. At this point, it should be noted that when the microprocessor isin its run/verify mode of operation, the HOLI field will not be set if the day in real-time is not a holiday. Accordingly, if the determination in step 414 is affirmative, CPU 100, in step 416, addresses and searches the holiday event 20 memory locations corresponding to the load represented by the LOAD field in the DPLR register. Ii the determination in step 414 is negative, CPU 100 proceeds in step 412 to address and search the event memory locations corresponding to the load and day represented by the LOAD and DAY fields in the DPLR register.
After addressing and searching of the desired event memory 25 locations in steps 412 or 416, CPU 100 proceeds, in step 418, to determine if the addressed event memory locations contain any valid ET/EV data words. If the determination in step 418 is negative, CPU 100 returns to the mode routine. If the determination in step 418 is affirmative, CPU 100 proceeds, in step 420, to find the first valid ET/EV data word in the addressed event memory locations 30 whose event time ET occurs after the time represented by the TIME fields in the DPLR register. Accordingly, the user may instruct the microprocessor to display information relating to the first valid control event that occurs after any desired time.
From step 420, CPU 100 proceeds, in step 422, to convert the event 35 time ET to BCD form, and to store the thus-converted event time in the TIME
fields in the DPLR register, whereupon the event time is displayed to the user.
Thereafter, in step 424, CPU 100 lights the LED 42 corresponding to the control event (EV) of the selected ET/EV data word.

:

.
' ' _37~

CPU 100 then proceeds, in step 426, to determine if the SCAN key is still being actuated. For example, the user may wish to obtain a display of more than one control event during the selected day. If the determination in step 426 is negative, i.e., the user has released the SCAN Icey, CPU 100 returns5 to the mode routine. If the determination in step 426 is affirmative, however,CPU 100 proceeds, in step 428, to set the TSCAN timer to a count representing two seconds, and waits until the count within TSCAN has decremented to zero.
Thereafter, in step 430, CPU 100 proceeds to find and display the next control event (by undertaking steps similar to steps 420, 422 and 424). In step 432, CPU100 determines if the control event displayed in step 430 is the last event of the day represented by the DAY field in the DPLR register, i.e., the control event having the last event time. If the determination in step 432 is negative, CPU 100 returns to step 426. If the determination in step 432 is affirmative, CPU 100, in step 434, sets TSCAN to two seconds and waits until TSCAN equals zero. CPU
100 then proceeds, in step 436, to find and display the first event of the day represented by the DAY field in the DPLR register, e.g., the control event having the earliest event time. From step 436, CPU 100 returns to step 426. As can be appreciated, CPU 100 will continue to progress through the loops defined by steps 426-0s36 until the user releases the SCAN key, at which time CPU 100 20 returns to the mode routine. To obtain a readout of the schedule for yet another load, the user will select the desired load and day, by actuation of the LOAD and DAY keys, and thereafter actuate the SCAN key.
While CPU 100 is in either the PROGRAM mode 242 or the RUN/VERIFY mode 240, the user may wish to obtain a display of real-time 25 information. Accordingly, actuation of the TIME key causes CPU 100 to enter into the TIME key function subroutine illustrated in PIGURE 19. Specifically, CPU 100, in step 470, transfers the contents of the RT and DAY fields within theSDC register to the TIME and DAY fields in the DPLR register, whereupon real-time information is displayed to the user. From step 470, CPU 100 returns to the30 mode routine.
While still in step 252 within the RUN/VERIFY mode 240, CPU 100 next calls the O~TPUT ~ STAGE routine illustrated in FIGURE 20. Initially, CPU 100, in step 500, determines if PRFLG has been set, i.e., a POWER UP
condition has occurred, or an event memory malfunction has occurred, or the 35 microprocessor has just exited from its program mode of operation. If the determination in step 500 is affirmative, CPU 100, in step 502, clears PRFLG
and calls the LOAI~ UPDATE routine (FIGURE 9) to accordingly update the status of all loads. From either step 500 or step 502, CPU 100 proceeds, in step 504, to . -. : - ' ,, 'i' . " .:

`

determine if the duty-cycle override switch 50 has been set, i.e., the set of external contacts represented by the duty-cycle override switch 50 have been closed to accordingly signify to the microprocessor that all loads which are currently being controlled with a duty-cycle control function are to be turned on.
If the determination in step 504 is affirmative, CPU 100 proceeds, in step 506, to set OBYTE = LBYTE OR STBT, and, sets the DUTY-CYCLE OVERRIDE LED 46.
If the determination in step 504 is negative, CPU 100 proceeds, in step 508, to set OBYTE = LBYTE, and to clear the DUTY-CYCLE O~ERRIDE LED 46.
From either step 506 or 508, CPU 100, in step 510, sets LDlEN to correspond to the position of the load 1 enable switch 52. Specifically, LDlEN = 1 when the load 1 enable switch 52 is closed (e.g., the control of load 1 by the microprocessor is to be enabled), and LDlEN = 0 when the load 1 enable switch 52 is opened.
In step 512, CPU 100 sets OBYTE = OBYTE AND LDlEN. From step 512, CPU 100 proceeds, in step 514, to set LDENA = IMAGE OR OBYTE, i`
where the successive data bits of IMAGE represent the existing energization states of the load relays. CPU 100 then proceeds, in step 516, to determine if the successive data bits of LDENA are all ones, i.e., set. As will be apparent from the ensuing discussion, the determination in step 516 is negative if any load which has been previously off is to be turned on. If the determination in step 516 is negative, CPU 100 proceeds to stage or sequence the turning on of one or more loads previously off by proceeding, in step 518, to determine if the TSTAGE timer contains a count of zero. Upon the first pass through the OUTPUT ~ STAGE
routine, the determination in step 518 will be affirmative, so that CPU 100 proceeds, in step 520, to set TSTAGE to a count representing three seconds. Fromstep 520, CPU 100 proceeds, in step 522, to set the left hand "0" bit in LDENA to "1".
As will be apparent from the ensuing discussion, the action undertaken in step 522 allows a single load that has been previously off to be turned on.
If the determination in step 516 is affirmative, or if the determin~tion in step 518 is negative, or from step 522, CPV 100 proceeds, in step 524, to set the OUTPUT = OBYTE AND LDENA, to set IMAGE = OUTPUT
and to control the energization states of the load control circuits 145 in accordance with Ol~TPUT. From step 524, CPU 100 returns to the mode routine.
The operation of the OUTPUT ~ STAGE routine can best be understood by considering the logical operations that take place when (a) a plurality of loads are turned on after all loads have been previously turned off;
(b) the duty-cycle override switch 50 is closed during the time that some of theloads are currently being controlled in aecordance with a duty-cycle control 1~

: .

.
.

function; and (c) the load 1 enable switch 52 is opened during the time that load 1 is turned on, as set forth hereinafter in TaMes IV, V and VI, respectively.

5 E~ample (a):
(1) all loads previously turned off (2) loads 1, 3, 4, 7 to be turned on (3) duty-cycle override switch 50 opened (4) load 1 enable switch 52 closed IMAGE = 00000000 LBYTE = 10110010 OBYTE = LBYTE

LDIEN
OBYTE = OBYTE AND LDlEN

OBYTE = 01001101 LDENA = IMAGE OR OBYTE

20 Since LDENA not all l's, set TSTAGE = 3 seconds set LDENA = 11001101 OUTPUT = OBYTE AND LDENA

25 Since LDENA not all l's, and when TSTAGE = 0, set TSTAGE = 3 seconds, set LDENA = 11101101 OUTPUT = OBYTE AND LDENA
10100000 0 Since LDENA not all 1~9~ and when TSTAGE = 0, set TSTAGE = 3 seconds, set LDENA = 11111101 OUTPUT = OBYTE AND LDENA
10110000 5 Since LDENA not all lts, and when TSTAGE = 0, set TSTAGE = 3 secondfi, set LDENA = 11111111 OUTPUT = OBYTE AND LDENA

' . ~:, ~ - ., : . .. ,:
- " ,, ~ . : ' :: . . . : ' ~: :
.. ':~, .. `: '.

TABLE V
Example (b):
(1) loads 1, 3, 4, 7 previously turned on (2) no change in load status (3) loads 2, 4, 7, 8 are being controlled with a duty-cycle control function (4) duty-cycle override switch 50 closed (5) load 1 enable switch 52 closed IMAGE = 10110010 LBYTE = 10110010 STBT = 01010011 OBYTE = LBYTE OR STBT

LDlEN
OBYTE = OBYTE AND LDlEN

OBYTE = 00001100 LDENA = IMAGE OR OBYTE

20 Since LDENA not all l's, set TSTAGE = 3 seconds, set LDENA = 11111110 OUTPUT = OBYTE AND LDENA

25 Since LDENA not all l's, and when TSTAGE = 0, set TSTAGE = 3 seconds, set LDENA = 11111111 OUTPUT = OBYTE AND LDENA

,............ . . : : ~ - . ~ ~ . :
: , , . ; .

, . ; --41- ~2~4~3 TABLE VI
Example (c):
(1) loads 1, 3, 4 7 previously turned on (2) no change in load status (3) duty-cycle override switch 50 opened (4) load 1 enable switch 52 opened LBYTE = 10110010 OBYTE = 10110010 LDlEN = 0 OBYTE = OBYTE AND LDlEN

OBYTE = 11001101 LDENA = IMAGE OR OBYTE
= 11111111 Since LDENA all 1's, OUTPUT = OBYTE AND LDENA

Therefore, when aU loads have previously been turned off, as in Example (a), the OUTPUT ~ STAGE routine energizes the load control circuits 145 for loads 1, 3, 4 and 7 at three-second intervals, to prevent a potential large inrush of power at the facility that would occur if all loads were to be turned on at the same time. When the duty-cycle override switch 50 is closed, all loads 25 that are currently being controlled with a duty-cycle control function and that are currently off, e.g., loads 2 and 8 in Example (b), are turned on at three-second intervals. As illustrated in Example (c), opening of the load 1 enable switch 52 results in de-energization of the load control circuit 145 for load 1,irrespective of the desired status for load 1 determined in accordance with the 30 schedule for load control.
From step 524, CPU 100 returns to the mode routine. From the RUN/VERIFY mode 240, CPU 100, returns to step 203. For as long as the mode switch 26 is set to the RUN/VERIFY position CPU 100 will continue to loop back to and through the RUN/VERIFY mode 240. If the user should place the mode 35 switch 26 to its RUN position, the determination in step 236 will be affirmative, so that CPU 100 proceeds to the RUN mode 238, wherein the LEDs 42 are cleared. Thereafter, CPU 100 calls the REAL-TIME CLOCK, XFER and OUTPUT ~ STAGE routines, and proceeds through those routines identically as ~,r f' .~

, , ":` `'.`` `' :: :
, :" ' ` ., . .; ', ' , ' i ':

. . ` ., .'` : ' .'''` . . ~ ' ;' :
, . ' ~ .: ` :.:. , , : ::::`:,: ` ` .
: i , .i,`

-42~ 2g~4~

previously described. No provision is made, however, in the RUN mode 238 for CPU 100 to call the KEYBOARD routine, so that the keyboard 38 is disabled.
With reference now to FIGURE 21, the third clock signal from the hardware clock, appearing on the RST 7.5 input of CPU 100, causes CPU 100 to enter the INTERRUPT routine once every cycle of the third clock signal (e.g., ata rate of 256 Hz). In step 550, the contents of various internal registers within CPU 100 are maintained, by transferring the contents thereof to the stack register previously described. Thereafter~ CPU 100, in step 552, refreshes the displays 28 and 142 by transferring the contents of the TIME, l)AY and HOLI
fields in the DPLR register to ports 108 and 110~. In step 554, CPU 100 determines if any of the timers in RAM 104 contain a count of zero. If the determination in step 554 is negative for any timer, CPU 100 proceeds, in step 556, to decrement that timer by an amount related to the period of the signal from the hardware clock, and then proceeds to step 558. If the determination in step 554 is affirmative for any of the timers within RAM 104, i.e., the timer has a count of zero, CPU 100 proceeds directly to step 558. In step 558, CPU 100 restores its internal registers (by transferring the contents of the staclc register thereto) and then returns to the main program loop to continue processing therein.
While the invention has been described with reference to a preferred embodiment thereof, it should be understood that the invention is not limited thereto, but is to be interpreted only in conjunction with the appended claims.

. , .

: ~ , , , - - ,;

,, ~, :, ,- ~.
. . .
~, :

Claims (25)

The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
1. An electronic controller for controlling the energization states of each of a plurality of electrical loads in real-time, said controller comprising:
a plurality of load control circuits, each said load control circuit being adapted to be interconnected with a load, and having a load-on state when its load is to be on, and a load-off state when its load is to be off;
clock means for continuously accumulating real-time information; and, a data processor, including:
an event memory that is organized into a plurality of load groups, each said load group being uniquely associated with one of the plurality of electrical loads and having stored therein one or more control events and an event time corresponding to each said control event, said control events in each said load group representing: an on control function in which the associated load is to be on for the entirety of each predetermined control interval successive to the corresponding event time; an off control function in which the associated load is to be off for the entirety of each predetermined control interval successive to the corresponding event time; and a duty-cycle control function in which the associated load is to be on for a predetermined portion of each predetermined control interval successive to the corresponding event time;
a program memory storing a set of program instructions; and, a processing means operative in response to said set of program instructions stored in said program memory, said processing means being operative:
to enter said control events and corresponding event times for each load into the associated load group in said event memory; to obtain said real-time informationfrom said clock means; to address and search the associated load group for each load in said event memory to effect comparison of said event times therein with said real-time information obtained from said clock means; and, to place said load control circuit for each load in said load-on state or said load-off state in accordance with that one of said control events in said associated load group whose corresponding event time is at or immediately precedes the time represented by said real-time information obtained from said clock means.
2. A controller as recited in Claim 1, wherein each said load control circuit includes a load control switch having first, second and third positions; said load control switch when in said first and second positions forcing its associate load control circuit to its load-on and load-off states, respectively; said load control switch when in said third position permitting its associated load control circuit to be placed in its load-on or load-off states by said processing means within said data processor.
3. A controller as recited in Claims 1 or 2, wherein said data processor includes means for visually displaying whether each said load control circuit is in its load-on or its load-off state.
4. A controller as recited in Claim 1, wherein said real-time information in said clock means represents elapsed time from the beginning of a week; wherein each said load group in said event memory is organized into a plurality of day groups, each said day group having stored therein the control events and corresponding event times for a corresponding day of the week; and, wherein said processing means is operative to address and search that one of said day groups in each said load group that corresponds to the day represented by said real-time information.
5. A controller as recited in Claim 4, wherein said processing means is operative to address and search those day groups in any one of said plurality of load groups that correspond to days preceding the day represented by said real-time information, upon absence of any control events in the day groupin said any one of said plurality of load groups corresponding to the day represented by said real-time information.
6. A controller as recited in Claim 4, wherein each said load group in said event memory is also organized into a holiday group, each said holiday group having stored therein the control events and corresponding event times for a holiday; wherein said data processor further includes means for flagging any day of a week as a holiday; and, wherein said processing means is operative to address and search said holiday group in each said load group, rather than a day group therein, when the day represented by said real-time information corresponds to the day flagged as a holiday.
7. A controller as recited in Claim 6, wherein said data processor further includes means for deflagging a day as a holiday when the day represented by said real-time information is the day in the week subsequent to the day flagged as a holiday.
8. A controller as recited in Claim 1, wherein said processing means is operative to place each load control circuit into its load-off state only if the relationship ¦ ET-RT ¦ MOD(EVmax * NUM) > (EV * NUM) is satisfied, where ¦ ET-RT ¦ is the absolute difference, in minutes, between an event time and the time in said real-time information, NUM is the smallest number of minutes during a control interval for which a change in energization state of a load will be effected, EV is an integer representing a control event, ranging from EVmin = 0 for an off control function to EVmax for an on control function, and EVmax * NUM) is the number of minutes in a control interval.
9. A controller as recited in Claim 8, wherein the control interval is thirty minutes, where NUM = 5, and where EVmax 6.
10. A controller as recited in Claim 1, wherein said data processor further includes means for detecting a duty-cycle override signal froman external device; and wherein said processing means is responsive to said detected duty-cycle override signal to place the load control circuit, for each load that is being controlled in accordance with a duty-cycle control function, into its load-on state for the duration of said detected duty-cycle override signal.
11. A controller as recited in Claim 1, wherein said data processor further includes means for detecting a load enable signal; and, wherein said processing means is enabled to place the load control circuit for a particular one of the loads into its load-on or load-off states in accordance with the control events in the associated load group only in response to and for the duration of said detected load enable signal.
12. A controller as recited in Claim 1, wherein said processing means is further operative to place a plurality of said load control circuits that have previously been in said load-off states into said load-on states in a predetermined sequence and at predetermined intervals.
13. A controller as recited in Claim 1, wherein said data processor further includes means for adjusting said real-time information in said clock means.
14. A controller as recited in Claim 1, wherein said data processor includes means for selecting a load, a control event, and an event time.
15. A controller as recited in Claim 14, wherein said means for selecting comprises a keyboard.
16. A controller as recited in Claim 15, wherein said keyboard includes a load key, a plurality of keys for selecting a time, and a plurality of event keys for selecting a control event, each said event key corresponding to apredetermined control event; wherein said data processor further includes load display means and time display means; and, wherein said processing means is operative to:
advance the load displayed by said load display means upon actuation of said load key;
advance the time displayed by said time display means upon actuation of said keys for selecting a time; and, upon actuation of one of said event keys, store, in the load group in said event memory corresponding to the load displayed by said load display means, information representing: a control event corresponding to that one of said event keys that has been actuated; and, an event time corresponding to the time displayed by said time display means.
17. A controller as recited in Claim 16, wherein said real-time information in said clock means represents elapsed time since the beginning of aweek; wherein each said load group in said event memory includes a plurality of day groups, each said day group having stored therein the control events and corresponding event times for a corresponding day of the week; wherein said keyboard includes a day key for selecting a day of the week; wherein said data processor includes day display means; and, wherein said processing means is operative to:
advance the day displayed by said day display means upon actuation of said day key; and, upon actuation of one of said event keys, store, in the day group in said event memory corresponding to the day displayed by said day display means, said day group being within the load group corresponding to the load displayed by said load display means, information representing: a control event corresponding to that one of said event keys that has been actuated; and, an event time corresponding to the time displayed by said time display means.
18. A controller as recited in Claim 17, wherein said keyboard includes a repeat key; and, wherein said processing means is operative, upon actuation of said repeat key, to copy the information in the day group within the load group corresponding to the day and load displayed by said day display means and said load display means, into a day group within said load group that corresponds to a day next subsequent to the day displayed by said day display means.
19. A controller as recited in Claim 17, wherein said keyboard includes a clear key; and, wherein said processing means is operative, upon actuation of said clear key to clear the information in the day group within the load group corresponding to the day and load displayed by said day display means and said load display means.
20. A controller as recited in Claims 14, 15, 16, 17, 18 or 19, wherein said data processor further includes event display means for displaying information relating to said control event.
21. A controller as recited in Claim 17, wherein said data processor further comprises event display means for displaying information relating to said control events; wherein said keyboard includes a scan key; and,wherein said processing means is operative, upon actuation of said scan key, to transfer information from said event memory to said event display means and to said time display means, said information comprising that in the day group within the load group in said event memory corresponding to the day and load displayed by said day display means and said load display means.
22. A controller as recited in Claim 17, wherein said keyboard includes a time key; and wherein said processing means is operative, upon actuation of said time key, to transfer the time represented by said real-time information obtained from said clock means to said time display means and to said day display means.
23. A controller as recited in Claim 1, wherein said data processor further includes a program switch and a program enable switch; and, wherein said processing means is operative, upon actuation of said program switch, to enable the entry of information into said event memory, but only if said program switch has been actuated within a predetermined time following actuation of said program enable switch.
24. A controller as recited in Claim 1, wherein said data processor further includes a standard/daylight switch; and, wherein said processing means is operative, upon actuation of said standard/daylight switch, to advance the real-time information used thereby by sixty minutes from the real-time information obtained from said clock means.
25. A controller as recited in Claim 1, further comprising a power supply adapted to be powered from a source of alternating current voltage, said power supply including: means for providing supply voltages to said plurality of load control circuits, and to said program memory and said processing means in said data processor; a rechargeable battery for providing supply voltages to said clock means and to said event memory in said data processor; means for charging said battery from the source of alternating current voltage; and, means for providing an output signal upon detection of a low voltage condition in the source of alternating current voltage; and, wherein said processing means is responsive to said output signal to place said plurality of load control circuits in their load-off states.
CA341,580A 1979-04-16 1979-12-10 Programmable electronic real-time load controller Expired CA1129048A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30,348 1979-04-16
US06/030,348 US4293915A (en) 1979-04-16 1979-04-16 Programmable electronic real-time load controller

Publications (1)

Publication Number Publication Date
CA1129048A true CA1129048A (en) 1982-08-03

Family

ID=21853805

Family Applications (1)

Application Number Title Priority Date Filing Date
CA341,580A Expired CA1129048A (en) 1979-04-16 1979-12-10 Programmable electronic real-time load controller

Country Status (2)

Country Link
US (1) US4293915A (en)
CA (1) CA1129048A (en)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2834351B2 (en) * 1978-08-04 1981-06-19 G. Bauknecht Gmbh, 7000 Stuttgart Program selection facility
JPS5660965A (en) * 1979-10-24 1981-05-26 Canon Inc Calculator
US4357665A (en) * 1979-12-27 1982-11-02 Butler Manufacturing Company Programmable electronic real-time load controller providing demand limit control
US4387420A (en) * 1980-11-26 1983-06-07 Rauland-Borg Corporation Programmable clock
JPS5790777A (en) * 1980-11-26 1982-06-05 Sharp Corp Electronic cash register
US4425628A (en) 1981-05-26 1984-01-10 General Electric Company Control module for engergy management system
US4464724A (en) * 1981-06-17 1984-08-07 Cyborex Laboratories, Inc. System and method for optimizing power shed/restore operations
JPS5811810A (en) * 1981-07-14 1983-01-22 Matsushita Electric Ind Co Ltd Cycle timer device
GB2105498A (en) 1981-08-21 1983-03-23 Horstmann Gear Group Ltd Electrical timer switch
US4467434A (en) * 1981-09-18 1984-08-21 Mcgraw-Edison Co. Solid state watt-hour meter
US4466074A (en) * 1981-09-18 1984-08-14 Mcgraw-Edison Company Power outage timer
US4527246A (en) * 1982-04-14 1985-07-02 Heat-Timer Corporation Hot water heating system control device
DE3214372A1 (en) * 1982-04-20 1983-11-03 Westdeutsche Elektrogerätebau GmbH, 4770 Soest ELECTRONIC TIMER
US4521843A (en) * 1982-08-16 1985-06-04 Intermatic Incorporated Programmable wall switch for controlling lighting times and loads
US4573127A (en) * 1982-12-23 1986-02-25 Butler Manufacturing Company Programmable electronic real-time load controller, and apparatus therefor, providing for updating of preset calendar events
JPS602578A (en) * 1983-06-17 1985-01-08 三菱電機株式会社 Controller for elevator
US4584651A (en) * 1983-08-31 1986-04-22 Honeywell Inc. Process controller with power outage analysis capability
US4611277A (en) * 1983-09-15 1986-09-09 Bankamerica Corporation Microcomputer communications software
US4566061A (en) * 1983-09-15 1986-01-21 Ralph Ogden Method and means of manual input of programs into industrial process programmable controller systems
WO1987004550A1 (en) * 1986-01-16 1987-07-30 Ralph Ogden Method and means of manual input of programs into industrial process programmable controller systems
CH655587B (en) * 1983-09-22 1986-04-30
JPS60172152U (en) * 1984-04-23 1985-11-14 株式会社リコー Copy machine timing device
NL8401557A (en) * 1984-05-15 1985-12-02 Philips Nv CALCULATOR SYSTEM WITH REMOVED WORK STATIONS AND SPARE BATTERY POWER.
US4677541A (en) * 1984-09-24 1987-06-30 Rauland-Borg Corporation Programmable clock
US4686630A (en) * 1984-09-27 1987-08-11 Process Systems, Inc. Load management control system and method
DE3446394A1 (en) * 1984-12-19 1986-06-19 Linde Ag, 6200 Wiesbaden CONTROL UNIT
CH664794A5 (en) * 1985-03-29 1988-03-31 Relhor Sa DEVICE FOR LIFTING A CONDITIONAL PROHIBITION OF THE OPERATION OF A LOCK.
DE3668213D1 (en) * 1985-03-29 1990-02-15 Relhor Sa DEVICE FOR RELEASING A CONDITIONAL LOCK FROM THE OPERATION OF A LOCK.
FR2582037A1 (en) * 1985-05-14 1986-11-21 Relhor Sa Device for lifting the conditional inhibition of the operation of a lock
FR2584542B1 (en) * 1985-07-05 1987-10-23 Cahors App Elec POWER ADAPTER FOR ELECTRICAL INSTALLATIONS, ESPECIALLY DOMESTIC
JPH0713778B2 (en) * 1985-08-30 1995-02-15 株式会社日立製作所 Programmable sequence controller
US4852051A (en) * 1986-07-18 1989-07-25 The Toro Company Flexible irrigation controller
GB8708098D0 (en) * 1987-04-04 1987-05-13 Screening Consultants Ltd Timeswitches
DE8816400U1 (en) * 1988-04-25 1989-06-15 Siemens Ag, 1000 Berlin Und 8000 Muenchen, De
US5160853A (en) * 1988-08-08 1992-11-03 Honeywell Inc. Electronic timer switch with time tracker
JPH0336604A (en) * 1989-07-03 1991-02-18 Omron Corp Timer with batch counter
US5309352A (en) * 1990-05-18 1994-05-03 Tektronix, Inc. Method and system for optimizing termination in systems of programmable devices
KR930005819B1 (en) * 1990-09-12 1993-06-25 삼성전자 주식회사 Controller for continuous prosecution and its method
US5233511A (en) * 1991-06-28 1993-08-03 Square D Company Panelboard arrangement with improved control
US5315499A (en) * 1991-06-28 1994-05-24 Square D Company Computer-controlled circuit breaker energy management arrangement having reliable memory and clock
US5892449A (en) * 1991-06-28 1999-04-06 Square D Company Electrical distribution system with an external multiple input and status unit
FI97291C (en) * 1993-06-17 1996-11-25 Kemira Chemicals Oy Method for recovering aluminum from a water treatment slurry
CA2127928A1 (en) * 1994-07-13 1996-01-14 Gaston Lefebvre Electrical load controller to regulate power consumption
DE59409023D1 (en) * 1994-09-21 2000-01-27 Reag It Solution Ag Muri Process for controlling aggregates in daily rhythm and daily rhythm control
US5816491A (en) * 1996-03-15 1998-10-06 Arnold D. Berkeley Method and apparatus for conserving peak load fuel consumption and for measuring and recording fuel consumption
US5927598A (en) * 1997-04-23 1999-07-27 Wexl Energy management method and apparatus
AU7174700A (en) * 2000-05-04 2001-11-08 Vasu Tech Limited Configurable electronic controller
EP1367685A1 (en) * 2002-05-31 2003-12-03 Whirlpool Corporation Electronic system for power consumption management of appliances
US7561977B2 (en) * 2002-06-13 2009-07-14 Whirlpool Corporation Total home energy management system
US20040083112A1 (en) * 2002-10-25 2004-04-29 Horst Gale R. Method and apparatus for managing resources of utility providers
EP1441430B1 (en) * 2003-01-21 2015-05-06 Whirlpool Corporation A process for managing and curtailing power demand of appliances and components thereof, and system using such process
US8250163B2 (en) 2005-06-09 2012-08-21 Whirlpool Corporation Smart coupling device
US8615332B2 (en) * 2005-06-09 2013-12-24 Whirlpool Corporation Smart current attenuator for energy conservation in appliances
US8027752B2 (en) * 2005-06-09 2011-09-27 Whirlpool Corporation Network for changing resource consumption in an appliance
US7705484B2 (en) * 2007-04-10 2010-04-27 Whirlpool Corporation Energy management system and method
US8314511B2 (en) * 2008-08-12 2012-11-20 Mike Schuler Method and apparatus for allocating electricity from a distributor
US9665838B2 (en) * 2008-12-03 2017-05-30 Whirlpool Corporation Messaging architecture and system for electronic management of resources

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5726468B2 (en) * 1974-04-19 1982-06-04
US4081753A (en) * 1976-12-13 1978-03-28 Miller Arthur O Automatic programming system for television receivers
US4125782A (en) * 1977-02-15 1978-11-14 Allen-Bradley Company Demand/schedule controller
US4071745A (en) * 1977-03-04 1978-01-31 Hall B C Programmable time varying control system and method
US4106097A (en) * 1977-04-28 1978-08-08 Westinghouse Electric Corp. Energy conservation control method
US4153936A (en) * 1977-09-26 1979-05-08 Reliance Electric Company Energy management system
US4162513A (en) * 1977-09-30 1979-07-24 Rca Corporation Television system scheduler
US4193120A (en) * 1978-09-13 1980-03-11 Zenith Radio Corporation Addressable event display and control system
US4213182A (en) * 1978-12-06 1980-07-15 General Electric Company Programmable energy load controller system and methods
US4217646A (en) * 1978-12-21 1980-08-12 The Singer Company Automatic control system for a building

Also Published As

Publication number Publication date
US4293915A (en) 1981-10-06

Similar Documents

Publication Publication Date Title
CA1129048A (en) Programmable electronic real-time load controller
US4357665A (en) Programmable electronic real-time load controller providing demand limit control
US4606401A (en) Programmable thermostat
US4217646A (en) Automatic control system for a building
US4165532A (en) Automatic irrigation sprinkler system controller
US4852051A (en) Flexible irrigation controller
US4189776A (en) Simplified irrigation controller
US5103078A (en) Programmable hot water heater control method
US5023432A (en) Programmable hot water heater control device
US4176395A (en) Interactive irrigation control system
US4937732A (en) Irrigation controller
US4730941A (en) Temperature range display device for electronic thermostat
US4998024A (en) Energy controlling system for time shifting electric power use
JP3713064B2 (en) Adaptive battery charger
US4355361A (en) Data processor apparatus for multitariff meter
US6259955B1 (en) Programmable electronic control unit for automatic watering systems
US4354241A (en) Programmable electronic real-time load controller providing for adaptation of load control in response to varying environmental conditions
US4162036A (en) Solid state thermostat with digital display
US4347576A (en) Load management control apparatus with improved duty cycle operation
CA1097510A (en) Modular electronic timer
US4672232A (en) Microprocessor operated timing controller
NZ209966A (en) Dual display programmable time switch
GB2031614A (en) Controlling an apparatus for conditioning a liquid
US4695942A (en) Manual switch for altering a parameter in opposite directions based on length of time of switch actuation
EP0254525A2 (en) Programmable time switch

Legal Events

Date Code Title Description
MKEX Expiry