referring first to fig1 there is illustrated a block diagram of a preferred embodiment of the load control system of the present invention . a master control station mcs is in two - way communication with a plurality of substation injection units siu over voice grade telephone lines . any of a number of substation injection units siu may be employed , one at each substation of the utility , depending upon the number of loads and areas desired to be controlled . sixteen such substation injection units siu are illustrated by way of example . each of the substation injection units siu is , in turn , connected through the power lines of the electric company to a plurality of remote receiver units rru ( up to 200 , 000 in the example ) which , in turn , are each connected to control the on and off times of a controlled device cd which may comprise , for example , an electric hot water heater , air conditioning compressor , or the like . the master control station mcs preferably comprises a microprocessor - based computer terminal , such as the hewlett - packard model 9835a which , together with special internal programming and desired input / output devices , serves as an operator interface and as the originator / coordinator of all control instructions to the substation injection units siu and the remote receiver units rru . the master control station mcs may generate hard copy reports , archival records , activity files of control actions , operator interchanges , and may display system alarm information . the operator of the master control station mcs may interrogate the system files , adjust automatic control schedules and perform manual control action , in a manner to be described in greater detail hereinafter . communication between the master control station mcs and each substation injection unit siu is over voice grade telephone lines utilizing standard baud rate asynchronous fsk modems . this requires a modem connected at the output of the mcs and at each input to an siu . the message packets between the master control station mcs and each substation injection unit siu are fixed lengths strings of binary characters to be described in greater detail hereinafter . each substation injection unit siu consists broadly of three sections : a controller c , a frequency changer fc and an injection network in . the controller c converts command and control messages from the master control station mcs into command signals for firing the solid state conduction controlled rectifying devices for the rectifier and inverter of the frequency changer fc . the controller c also responds to requests from the master control station mcs for alarm , status and data information . a special receiver is positioned in the substation injection unit siu which is monitored by the controller c to provide information pertaining to the power line injection signal , amplitude and pulse position . the monitored information is sent to the master control station mcs on request in order to permit verification of the accuracy of the pulse code pattern transmitted by the substation injection unit siu . the frequency changer fc of the substation injection unit siu comprises a 60 hertz - to - injection frequency converter which rectifies the incoming power line &# 39 ; s three - phase 60 hertz signal to form a dc voltage of a controllable magnitude , which is then fed to a static inverter that is turned on and off under direction of the controller c to form the pulse code signal which becomes the pulse code injection message that is transmitted to the remote receiver unit rru on the power lines of the utility . the injection network in comprises a set of passive circuit elements that provide a basic insulation level and a low impedance path from the frequency changer fc to the power line for the pulse code injection message while at the same time providing a high impedance path to block the 60 hertz power line energy . referring now to fig2 there is illustrated the preferred message format for communications from the master control station mcs to a substation injection unit siu . the block of data consists of nine characters of eight bits each . the first character is a frame sync character which preferably comprises an ascii start of text character . following frame sync is an eight bit character which defines a particular substation injection unit siu . the next character defines the particular function that the master control station mcs wishes the substation injection unit siu to perform , in accordance with table 1 below : table 1______________________________________mcs / siu message interchangeno . type command to siu siu response______________________________________1 . b set new injection injection code code received2 . a commence siu keying - none all sius3 . b clear command register status and command siu # n registers4 . b report status and status and command command registers registers5 . b report last injection last injection code code sent6 . b report status and data status and data for for measurement point measurement point7 . c execute - siu # n status and command registers8 . b set injection power injection power level level received______________________________________ following the siu function block are five eight bit data characters for defining , for example , the forty bit pulse code desired to be injected onto the power lines . at the end of the message block is a frame sync character which preferably comprises an ascii end of text character . transmission of the blocks of characters illustrated in fig2 from the master control station mcs onto the telephone lines are received by all substation injection units concurrently . while most transmissions are addressed to only one siu , some may be addressed to all sius . only an addressed siu will respond to a command from the mcs . the format of the communication transmissions from the siu to the mcs illustrated in fig3 and is seen to essentially correspond with the mcs to siu communication format illustrated in fig2 . in fig3 each transmission from an siu to the mcs is preceded by a line settle period of approximately 200 milliseconds , while there is a 50 millisecond delay between the end of each siu transmission and the start of the next mcs command transmission . each of the characters illustrated in fig2 and 3 have a start , stop and optional parity bit . the overall message consists of a frame sync character , an siu address character read from an internal constants register ( rather than being a reflection of the in - bound station address from the mcs ), an siu function character , and five data characters followed by an end of text character as the frame sync . the carrier on and off intervals correspond to the times that the modem carrier of the siu is turned on and off . table 1 above illustrates exemplary siu function commands forwarded from the master control station mcs to the substation injection units siu . these messages are encoded in the &# 34 ; siu function &# 34 ; block of fig2 . there are three general types of messages exchanged between the master control station mcs and the substation injection units siu . type a messages are recognized by all substation injection units . there are no siu responses to the mcs for type a messages since the sius are tied to a common party line and their responses would be mutually interfering . type b messages are directed to a single siu . although the outbound message from the master control station mcs is monitored and passed through the initial stages of processing and decoding by all sius , only the single siu that has a station address match with a station address code contained in the incoming message will continue the processing . further , for type b messages , the mcs receives a response from the addressed substation injection unit siu . type c messages consist of an order execution command directed to one substation injection unit siu . this message enables execution of whatever command has been previously established in a software implemented command register in the addressed substation injection unit siu . in other words , the contents of the command register in the addressed substation injection unit siu has been previously established by a type a or type b message . the message interchange between the master control station mcs and the substation injection unit siu is based upon a setup - verify - execute sequence of commands . message nos . 1 , 3 and 8 in table 1 are setup commands . the substation injection unit siu will store the received setup command in an internal software implemented command register . it will also set an internal command pending flag which will remain set for approximately 20 seconds . the substation injection unit siu will respond to the setup command by sending back to the mcs the contents of its command register which will be a replica of the actual message received . the mcs will compare the siu response to the original message sent to insure that the siu is setup correctly . if it is not , there will be three more attempts to set up the siu correctly . if these attempts fail , the addressed siu will be marked off - line and designated as &# 34 ; removed from service &# 34 ;. if the addressed siu was set up correctly , the mcs will go to the next siu and try to set it up , as may be required . after all of the desired siu &# 39 ; s have been set up and verified , the mcs will send one of the execute commands which consist of message nos . 2 or 7 in table 1 . if the execute command is received by the siu &# 39 ; s while the command pending flag is set , the command that was setup will be implemented . if the command pending flag is not set when the execute command is received , the siu will ignore it and do nothing . such a condition will be detected by the master control station mcs when it examines the siu status during routine polling . message nos . 4 , 5 and 6 request the status of a particular substation injection unit siu . not being setup commands , message nos . 4 , 5 and 6 do not require an execute command before the addressed siu will respond . that is , the mcs will request the status and the addressed siu will respond with the desired status information . message nos . 4 , 5 and 6 are transmitted twice , and after each transmission , the addressed siu responds . this enhances system security and insures that the master control station mcs has the correct status information . following is a discussion of each of the message numbers in table 1 . message no . 1 is a command to one substation injection unit siu to load its software implemented injection register with a specific 40 pulse code signal to be injected under local siu timing control commencing with the reception of message no . 2 . the siu response to message no . 1 is the actual injection code that the siu received which will be compared in the mcs to the injection code that was sent to insure that the set up message was correctly received by the addressed siu . each siu will be set up in turn until all on - line sius have been loaded with the injection code and verified . the mcs will then send message no . 2 which will initiate the transmission of the 40 pulse code injection message . the controller in the siu will respond to the 40 pulse code injection message to control the on and off timing of each individual pulse . message no . 3 is a command to clear the command register in a particular siu . the siu will respond with its status and the contents of its command register . the mcs will check the response to insure that the command was correctly received at the siu . if it was , the mcs will send message no . 7 to clear the command register in the addressed siu . this command will be used on a selective basis to cancel a pending control order . message no . 4 is a command to a particular siu to report its status and the contents of its command register . the siu response is a message containing the status information read from the siu status register and the contents of the siu command register . the status report includes several on / off type of conditions or presence / absence type of conditions that are then interpreted by the mcs as alarm or status information . items of this nature include overtemperature of the rectifier , overtemperature of the inverter , overtemperature of the cabinet interior , inlet voltage out of range , and the like . message no . 5 is a command to a specific siu to report the last 40 pulse code pattern that was injected by the addressed siu . the latter responds with a binary encoded translation of the 40 pulse code pattern read from a special injection monitor receiver connected within the siu . message no . 6 is a command to a specific siu to report its status and the current value for an analog measurement point . there may be one or a plurality of such analog measurement points located within the siu , which will be described in greater detail hereinafter . in response to this command , the addressed siu will read the measurement point , digitize its value , and send the representation back to the mcs . message no . 7 is an execute command which directs an siu to execute a previously stored command , other than pulse code injection messages which are executed by message no . 2 . message no . 7 is an execute command addressed to only one siu , and the response is a report by the addressed siu of its status and the contents of its command register . message no . 8 is a command to a selected siu to set a new injection power level . the response to this command is the status and contents of the command register for the addressed siu . the response will be compared to the original message that was sent to insure that the siu is set up correctly . if it is , message no . 7 will be sent to implement the new injection power level . message no . 8 is used to dynamically adjust the injection power level for the best overall system performance and will be set based upon , among other things , the number of sius that are on - line versus the number of sius that are on the system . illustrated in fig5 is a preferred format for the pulse code signal transmitted by the substation injection units siu to the remote receiver units rru . the control messages are encoded into start , preselect , and execute pulses . the timing of each preselect and execute pulse with respect to the start pulse is precisely controlled . the preferred code includes 41 pulses : the start pulse , which is common to all control messages , numbered 0 ; seven preselect pulses numbered 5 , 10 , 15 , 20 , 25 , 30 and 35 ; and 28 execute pulses numbered 6 through 9 , 11 through 14 , 16 through 19 , 21 through 24 , 26 through 29 , 31 through 34 , and 36 through 39 . every control message consists of a start pulse followed by a preselect pulse , followed by an execute pulse . the total preselect - execute pulse combinations in the preferred embodiment is 112 , which allows 112 independent control functions , or 56 simultaneous control functions with one control message transmission . as may be appreciated from fig5 the start pulse is a sync pulse of approximately 0 . 833 second duration followed by a 2 . 29 seconds rest period . although one pulse string may contain several interleaved control commands , in typical applications only a few pulses will be active in any one pulse string . since the start pulse activates all remote receiver units rru , each pulse code message or string is separated by an inactive period of approximately 94 seconds to allow any falsely started rrus to run to their reset position . fig4 illustrates a block diagram of a preferred embodiment of a remote receiver unit rru which may comprise , for example , a sangamo weston model 100 receiver . from the power line , the pulse code signal is first received by a frequency selector element 11 that discriminates between a valid control signal and all other parasitic frequencies which may exist on the power lines . valid frequency signals are passed by frequency selector 11 to a decoder / selector 13 which discriminates between all of the pulses in a particular pulse code so that the particular remote receiver unit rru acts only on the pulses that the receiver has been coded to recognize . when a proper pulse code signal is decoded by decoder / selector 13 , the latter controls a contact block 15 which comprises a set of controlled output contacts for switched loads 17 and 19 which are capable of being activated simultaneously or independently . both contacts in contact block 15 are preferably single pole , and the operating mechanism allows for positive latching so that different control messages are required to change the contact state from &# 34 ; on &# 34 ; to &# 34 ; off &# 34 ;, and vice versa . the absence of a control message or a power failure will not change the state of a latched contact . in a preferred embodiment , the decoder / selector 13 comprises an electromechanical timing chain which monitors the presence or absence of a pulse in each of the 40 possible positions . when the proper combination of positions or slots have been filled , the output contact 15 is opened and closed . each remote receiver unit is precoded so that it responds to one and only one pulse code signal ; therefore , the switched loads 17 and 19 must be of the same class , for example , electric hot water heaters . in order to control , for example , an air conditioning compressor in the same location , a separately encoded remote receiver unit rru must be connected thereto to receive the pulse code signal . in the best mode presently contemplated for carrying out the present invention , with the 40 pulse injection code signal and remote receivers described above , there are 56 independently operable sets of contacts ( on / off pairs ) or load control groups . each contact can control a separate type of load , such as electric hot water heaters , air conditioner compressors , street lights , or the like . therefore , the operational programs for the master control station mca has 56 predefined load control groups . each group can be commanded to turn on ( the contact in the receiver will close ) or to turn off ( the contact in the receiver will open ). by turning the load groups on and off at the appropriate times , a desired load management strategy can be implemented . the system operator determines which group to turn on and off and when they should be turned on and off to best control the system load . the program in the master control station will implement the strategy which is set up by the operator . the control commands that turn the load control groups on and off are linked together by the operator to form control lists . there may be , for example , 20 independent control lists , each containing one or more control commands , which are grouped into the lists according to different characteristics that enable management of various types of loads . the management strategy of the present invention defines three different typs of control lists , referred to hereinafter as type 1 , 2 and 3 . type 1 control lists are of a single pass nature . that is , when the type 1 list is activated , the group control commands in the list are transmitted at a predetermined time from the time the list is activated . when the end of a type 1 list is reached , the control sequence is finished and the list is deactivated . type 1 control lists are typically used for emergency load shedding or other manually initiated , one shot , preplanned sequential control activity . type 2 control lists have a cyclic and repetitive nature . when a type 2 control list is activated , the group control commands in the list are sent in a predetermined order . when the end of the list is reached , the program goes back to the beginning of the list to start over . this cyclic action continues until the list is deactivated by an external event or by operator intervention . a type 2 control list is typically utilized for cycling hot water heaters , air conditioners , or street lights . type 3 control lists are characterized by a variable duty cycle . type 3 lists can dynamically adjust the amount of time a controlled load is allowed to be on , depending upon the demand on the electrical network . as the demand on the network increases , the time the loads are allowed to be on decreases , thereby reducing the total demand . the group - off commands for a type 3 control list are evenly spaced over the duration of the cycle . when it is time to turn the next load control group off , the program calculates a new on - to - off ratio based upon the current value of one or more system parameters such as total demand . the new ratio is used to determine the length of time this group will be left off . the off time interval is subject to minimum and maximum limits established by the operator . the program will turn such a group off at the time specified in the list and then turn it back on after the calculated off time interval has elapsed . the control lists may be initiated by a manual operator action , by an operator - entered load curve , by a discrete input received from the substation injection unit siu or by a combination of analog inputs from the substation injection unit siu . the control lists may be load dependent or load independent , and may run on particular days of the week , weekends , holidays or any desired combination of same . the software program for the master control station mcs consists of three basic functional portions . the first portion , which may be referred to as the operator interchange module , handles the interaction between the system and the operator including control of the keyboard and generation of displays on the crt . the second portion , known as the load profile module , monitors the control lists by periodically , for example , once a minute , checking to see whether any of the lists should be started or stopped , or if a group control command should be sent to a substation injection unit siu . the third portion of the program , known as the line protocol module ( which runs most of the time ), handles the communications between the master control station mcs and the substation injection units siu . between injections of group control commands , the master control station mcs routinely polls each substation injection unit siu for status information and telemetry data . it also checks each substation injection unit siu for eight internal status conditions and monitors the status of eight customer discrete inputs and one analog input . between the polling of each substation injection unit siu , the mcs updates the display that is currently on the crt . referring now to fig1 , a block diagram illustrates the software interaction of the various modules with various hardware which together comprise the master control station mcs . the operator interchange module is indicated by reference numeral 400 and handles the operator inputs from keyboard 404 while generating a display of crt 402 . while being the largest module in the system , it runs on a very low priority . the inputting of parameters through keyboard 404 or the generation of displays for crt 402 is accomplished through the use of a system menu which is a list of items that will direct the computer to the area the operator would like to manipulate . the program is preferably written so that data entry is operator oriented , that is , the computer asks a question by displaying it on the crt 402 and the operator supplies the answer by typing it in through the keyboard 404 . each operator entry is checked for correctness and appropriateness at the time it is entered to insure the security and integrity of the system . a printer 416 may be connected as an output device to provide a hard copy of the crt display , if desired . a real time clock 418 plugs into the programmable computer that forms the master control station mcs in order to provide a real time reference for interrupting the system periodically to perform certain functions . for example , certain software functions are implemented once a minute , certain functions are implemented once every five seconds , and the like . the data base for the operator interchange module 400 is formed by a control list and command assignment table 406 , siu tables 408 and system status files 410 . as the names of the blocks imply , they contain the tables and files that other modules manipulate and provide means with which the other modules can communicate information . the tables 406 and 408 and files 410 together may be referred to as the system files module and information is stored therein pertaining to the substation injection units ( siu ), the analog and discrete inputs , the control lists , the group elements , the crt displays and the like . another program known as the initialization module and indicated in fig1 by reference numeral 414 is run immediately after the program tape is loaded into the computer in order to establish the data base . initialization module 414 initializes the hardware interfaces connected directly to the computer . this program is normally run only once per program load , and is connected to a tape drive 412 which stores the operator - entered information in the event of the temporary power outage . the load profile module is indicated by reference numeral 420 and handles activation , running and deactivation of the control lists . module 420 also manipulates the analog and the discrete inputs as read from analog and discrete input tables 424 , as well as information stored in a load profile table 422 . load profile module 420 calculates and controls the type 3 control list off - time intervals . module 420 is run periodically , e . g ., once a minute , based upon timing information received from real time clock 418 . control list information to load profile module 420 is fed from control list table 406 . module 420 goes through each list in turn : if the list is disabled , it will go on to the next list ; if the list has been enabled by the operator , module 420 will check the various parameters to see if activation or deactivation of the control list is called for . module 420 then examines the group control commands within those lists that are activated and , if there is a time match , module 420 takes the group control command information and places it on a command stack 426 which acts as a buffer area for the line protocol module 428 for subsequent transmission to the substation injection units . as explained above , for a type 3 control list , the load profile module 420 calculates a new on - to - off ratio at the beginning of each cycle based upon the current value of certain system parameters , which typically include total system demand . such information may be obtained by load profile table 422 from information previously stored in the analog and discrete input tables 424 , which information is obtained from either analog inputs and / or discrete inputs located at the substation injection units siu . alternatively , in the event the particular system installation is not provided with analog or discrete inputs , type 3 lists can still be controlled by information previously stored in load profile table 422 which , in essence , is a tabular listing of the anticipated megawatt demand on an hourly basis . the load profile table 422 can be updated by the operator via operator interchange module 400 at any time . whether utilizing the load profile table 422 or the analog and discrete input tables 424 , the on - to - off time ratio is related to the desired system parameter of the utility by a graph such as that illustrated in fig1 . the off - time interval is indicated on the y - axis and is directly related , over a limited range , to the network demand in megawatts on the x - axis . for each type 3 control list , the operator enters the demand at which he wants the control list to become active ( the activate point ) and the demand at which the group in the list would be turned off for the maximum off - time interval ( the maximum off point ). the off - time interval may be calculated by the equation : ## equ1 ## for values of x that are greater than or equal to the activate point . the value y will be rounded off to the closest integer and will be used as the off - time interval subject to two conditions : first , the minimum off - time interval is the cycle duration divided by the number of load control groups in the list and must be at least , for example , four minutes long ; and , second , the maximum off - time interval is less than or equal to the limit defined by the operator . otherwise , the off - time interval can vary by one minute increments as the load varies . for values of x that are greater than the maximum off point , the off - time interval will be fixed at the upper limit defined by the operator . when the value of x has dropped so that it is between the deactivate point and the activate point , the off - time interval will remain at the minimum off - time interval . when the value of x falls below the deactivate point , the program will send commands to turn on all load control groups in the list and then deactivate the list . as stated above , for any group control command for which a time match is determined in load profile module 420 , the latter transfers the command to the command stack 426 . if at any time there is insufficient room on command stack 426 for the load profile module 420 to put on a group control command , the operator will be notified by an alarm message , and the module 420 will try to place the group control command on the stack 426 again after a one minute delay . the purpose of the line protocol module 428 is to process group control commands on the command stack 426 , transmit messages to and receive messages from the substation injection units , poll the substation injection units for status conditions , retrieve substation injection unit analog and discrete inputs , and maintain communications and injection error statistics . when the line protocol module 428 runs , which may be , for example , once every five seconds , it will first check the command stack 426 . if there are no group control commands on stack 426 , the line protocol module 428 will begin a polling sequence in which all substation injection units ( siu ) will be requested to report their status and analog and discrete inputs , one siu at a time . the received data will be used to update the system files 410 . further , the siu status indicators will be checked for any changes or alarm conditions . if an alarm condition is detected , an alarm status flag will be set so that an alarm display will be generated by the operator interchange module 400 . any new analog or discrete inputs will be fed to the analog and discrete input tables 424 from line protocol module 428 . if any of the analog or discrete inputs have changed and represent an alarm condition , an alarm status flag will be set . when the polling of each siu is complete , line protocol module 428 will return to check the command stack 426 once again . if there is one or more group control commands on stack 426 , line protocol module 428 will try to combine the 40 pulse code injection messages . if the commands cannot be combined , the module 428 will send them in order of the priority of the control list from which the commands came . transmission of the pulse code injection messages follows the setup - verify - execute sequence described hereinabove . that is , the pulse code injection message is first set up in each substation injection unit and verified , one at a time . after verification , a commence keying command is sent twice to all substation injection units for communications verification . the commence keying command initiates the pulse code injection process at the substation injection units which takes , in the preferred embodiment , approximately 94 seconds to complete plus a 94 second false start time , for a total of from two to three minutes per injection . an interface module 430 , known as an rs - 232 , is disposed between the line protocol module 428 and a modem 431 which converts commands from the computer into signals for transmission on the telephone lines by the modem . after injection has been completed , the line protocol module 428 obtains the injection code from a special receiver in each substation injection unit that monitors the pulse code signals going onto the power lines . the received code from the special receiver in each siu must match the pulse code signal transmitted , or an injection error is noted for that siu . if an injection error is noted , the same message is re - injected . if two consecutive errors are noted , the particular siu is disabled and an alarm indication is given to the operator . after an injection message is set up by the line protocol module 428 , the latter will update the status of the load control groups involved in the particular message . this is done so that the operator interchange module 400 can periodically write the current control list and group status on the system tape 412 . the line protocol module 428 will also deliver to an archival tape module 440 the load control group commands involved in this message so that the archival tape module 440 can write the commands on a separate tape drive unit 442 for archival storage purposes . the line protocol module 428 also maintains the communication and injection error statistics . several sections of the line protocol module 428 function like i / o drivers . all communications line messages are handled by the message as opposed to by the character ( a message comprises several characters ). this allows the line protocol module 428 to stop running until the transfer of the entire message is completed so that other program modules are able to run while the line protocol module 428 is stopped . however , when message transfer is complete , the rs 232 interface 430 interrupts the mcs to initiate running of the line protocol module 428 once again . the latter will then check the received message for errors , update the siu status , analog and discrete files , and the like . it stops running when another message transfer begins to allow the previously interrupted module to continue . the real time clock 418 together with the interface 430 restarts the line protocol module 428 in the event the message transfer is incomplete . the mcs analog and discrete input module 432 is optional and is required only when there may be analog or discrete inputs connected directly to the mcs . when module 432 runs , it works together with the analog and discrete input interface tables 424 to bring in the current values of the inputs . it will then update the analog and discrete files in the system files 410 in the same manner as the line protocol module 428 does with the siu analog and discrete inputs . reference numeral 434 indicates a standard interface bus utilized with the module 432 . the scada module 436 is also optional and comprises a supervisory control and data acquisition system , which is a higher level computer that can control the mcs . a command interface 438 may be required for scada module 436 . the system software is illustrated in flow chart form in fig1 . in the flow chart of fig1 , reference numeral 414 refers again to the initialization module wherein the data base is established , initialized and updated from the previously stored information on tape drive 412 . further , in the initialization module 414 , the difference between the current time and the time the last record was written on the system status files 410 is determined . if greater than a predetermined time interval , the operator is asked to enter the new date and time , and the last known list and group status are displayed . the main program is then loaded from the tape drive 412 , and the display loop dl is entered . in the display loop dl , if an alarm condition is indicated the alarm display is generated . if no alarm condition is present , the requested display is generated , and the program moves on to the clock interrupt cycle a . in the clock interrupt routine a , the current date and time are obtained from the real time clock . if the latter has changed to the next minute , the program loops to the load profile module 420 . if not , clock interrupt a checks to see if it is time to go to the line protocol module 428 . this may be determined , for example , by a five second internal counter which is decremented to zero . as pointed out above , the line protocol module 428 is run once every five seconds , and is therefore the highest priority routine in the program . the line protocol module 428 first tests to see if it is time to check an in - progress injection . if it is , the program loops to routine c which first obtains the last injection code from each substation injection unit . this information is obtained from the special receiver in each siu . a comparison is then made between the received siu injection codes and those transmitted to determine if there are any errors . if so , an injection error is indicated . if there are no errors , the group control command that made up the injection is removed from the command stack 426 . the status tape file is then updated with the current list and group status whereafter the time is set for the next injection ( approximately 94 seconds later ), and the five second counter is reset to establish a new time for checking the line protocol module 428 . if it is not time to check an in - progress injection , the line protocol module 428 checks to see if it is time to start a new injection . if so , the program loops to routine b where there is first a test to see if there are any injection errors . if there are none , routine b checks the command stack 426 to see if it is empty , that is , to see whether or not there are any group control commands awaiting transmission . if not , the line protocol module 428 polls the injection substation unit , updates the analog , discrete and internal status files from the polling response , and resets the five second counter in clock interrupt a . if there is one or more group control commands on the command stack 426 , routine b first eliminates any duplicate group control commands , obtains the preselect code of the oldest command , looks for other group control commands with the same preselect code , and combines commands with the same preselect . the injection message is then generated and sent to each substation injection unit that is on - line and enabled . routine b then verifies the injection message , and upon verification , sends the commence keying command to all sius . thereafter , routine b sets the time for checking this injection ( approximately 94 seconds later ) and sets a new time to check the line protocol module 428 . referring back to the clock interrupt routine a , if a minute change has gone by , the program cycles to the load profile module 420 wherein the first action taken to to determine the source of the list . if the list source is a manual key on the keyboard , the program cycles to routine e to determine if the particular control list is active . if it is not , the rest of the control lists are checked and the cycle returns to the load profile module 420 . if the particular control list indicated by the manual key is active , the program cycles to routine j which is an &# 34 ; activate &# 34 ; routine common to all lists found active . in routine j , the first determination is the days that this particular list is allowed to run , and the type of day that today is , that is , whether today is a weekday , saturday , sunday or holiday . it is then determined whether this particular list is allowed to run today . if it is not , the rest of the control lists are checked and the routine returns to the load profile module 420 . if the list is allowed to run today , the list is then checked to see whether it is already active , and , if it is not , the list is set active and the program cycles to routine f . if the list is active , the current time is obtained , and , if the list is a type 3 list , the new off - time interval is calculated . each group control command in the list is then checked for a time match . for each time match found , the corresponding group control command is placed on the command stack to await transmission via the line protocol module 428 . if the list is a type 3 list , the time is adjusted to turn the group back on or off . the remaining group control commands in this list are similarly checked , after which the rest of the control lists are checked . routine f is also the routine which is enabled if the list source is from the dump , reduce or restore keys on the keyboard . the lists assigned to the dump , reduce and restore keys are normally used for emergency situations only , and therefore have priority over other load management functions in the system . within these three manually - initiated actions , the dump list has priority over the reduce list and the restore list , while the reduce list has priority over the restore list . all lower priority lists are disabled when one of these lists is initiated by pressing the corresponding key . further , all entries that are currently on the command stack are removed . returning to module 420 , if the list source is the load profile table , the program cycles to routine g wherein values are obtained from the load profile table for this hour and for the next hour . the values are then linearly interpolated to obtain a value for the present minute . if this value is greater than or equal to the activate value for this list , the program cycles to the activate routine j . if the interpolated value is less than the deactivate value for this particular list , the program cycles to the &# 34 ; deactivate &# 34 ; routine k . in routine k , if the list is currently active , all on the on group control commands in the list are placed on the command stack , and the list is then set inactive . referring back to routine g , if the interpolated value is greater than the deactivate value but less than the activate value , the program cycles to routine f which was explained above . if the list source on load profile module 420 is a discrete input from the substation injection unit , the program cycles to routine h wherein the contact number for this list and its current status is obtained . if the status of the contact number is correct to activate the list , the program cycles to routine j . on the other hand , if the status is correct to deactivate the list , the program cycles to routine k . otherwise , the program cycles to routine f where the group control commands are tested for a time match and placed upon the command stack . if the list source in the load profile module 420 is from an analog input , the program cycles to routine i wherein an analog input number is obtained for the list along with its current value for all analog inputs . the appropriate value is then calculated ( average , summation or rms ), and the value is tested to see if it is greater than or equal to the activate value , or if it is less than the deactivate value . if the former is true , activate routine j is enabled , and if the latter is true , deactivate routine k is enabled . if the value is between the activate and deactivate points , routine f is enabled . not shown in fig1 are the menu key routines which permit the operator to select a display indicator or enter system parameters according to the system menu , as well as the keyboard interrupt routine which allows input from the keyboard . referring now to fig6 there is illustrated a functional block diagram of a preferred embodiment of a substation injection unit in accordance with the present invention . power is fed to the substation injection unit from the main power bus 42 of the power utility &# 39 ; s substation , which is of the 15 kilovolt class . bus 42 also transmits the utility &# 39 ; s power to the remote receiver units rru . a power supply for the substation injection unit is indicated by reference numeral 10 and supplies , for example , 60 hertz , 240 volt , 36 amp , three - phase three wire power to a line terminal board 12 to which the interconnect cables for the interior of the substation injection unit are connected . from board 12 , power is fed through a power circuit breaker 14 which has a shunt trip input 71 that is activated in a manner which will be described in greater detail hereinafter . three - phase power is fed along line 25 from power breaker 14 to a 60 hertz power input contactor 16 . contactor 16 connects the incoming power to a rectifier 20 under the control of control relay circuit 18 , in a manner which will be described in greater detail hereinafter . rectifier circuit 20 comprises a standard scr phase - controlled rectifier bridge under the control of a rectifier controller 68 in a manner to be described in greater detail below . rectifier 20 acts to change the incoming three - phase ac power into a dc level at its output of approximately 325 volts . it should be noted , however , that the dc voltage level output of rectifier 20 may be adjusted to deliver one of a number of suitable output dc voltages by means of adjusting the firing angle of the silicon - controlled rectifiers ( scrs ). the dc output from rectifier 20 is then fed to an lc output filter 22 that smooths the ac ripple on the dc voltage . also noted in box 22 is an inverter fault detector which basically detects what is known as a shoot - through condition in an inverter 24 that creates a short on the dc bus . the fault detector in block 22 acts to provide an alternate path for any surges in order to prevent the rectifiers in the inverter from being burnt out . shoot - through conditions are also noted in the rectifier controller 68 , in a manner which will be described more fully below . also positioned in block 22 is an overcurrent sensor which simply senses excess current on the dc line and , upon such detection , acts to disable the scrs in rectifier 20 to prevent damage thereto . reference numeral 24 indicates a three - phase static inverter which is preferably of the form known in the art as a mcmurray inverter . inverter 24 converts the incoming dc voltage and current to ac voltage and current at a frequency which corresponds to the desired preselected pulse code frequency . by way of example , the pulse code frequency may be selected to be 340 hertz . the presence or absence of a particular pulse in the 340 hertz output of inverter 24 depends upon inputs received from inverter controller 46 which basically turns on and off the scrs in inverter 24 in accordance with the specific pulse code signal desired for a particular injection message . inverter 24 operates in one of three modes under the control of inverter controller 46 . one mode may be denoted the off mode wherein none of the scrs in inverter 24 are conducting . another mode may be described as the inject mode wherein the scrs of inverter 24 are being turned on and off in a specific sequence to create a pulse code pattern at 340 hertz that corresponds to the desired injection message communicated to inverter controller 46 by microprocessor 66 , in a manner which will be described in greater detail hereinafter . a third mode may be denoted the idle mode and corresponds to those periods of time when no output pulse is present in the pulse code train . during idle , the lower three scrs in the scr bridge of inverter 24 are conducting which in conjunction with the feedback diodes provides a continuous short circuit on the primary of an injection transformer 30 to serve as a trap circuit for the 60 hertz feedback current . the inverter 24 is sized to handle the combined current requirements of the ripple or injection frequency current and the desired amount of 60 hertz backfeed current . the scrs in inverter 24 operate under forced commutation as controlled by inverter controller 46 . from the inverter 24 , the pulse code signal is fed through a power output contactor 28 which is under the control of control relay circuit 18 , as is power input contactor 16 . when the main power breaker 14 opens , power is removed from input and output contactors 16 and 28 , respectively , via control relay circuits 18 to immediately isolate the scrs in rectifier 20 and inverter 24 against damage . the status of input and output contactors 16 and 28 is fed to a system status board 64 , as will be described in greater detail hereinafter . the coded injection message from output contactor 28 is fed to the primary of an injection transformer 30 which performs two functions . firstly , transformer 30 isolates the pulse code generator ( consisting of rectifier 20 and inverter 24 ) from the power line 42 . transformer 30 also has its secondary connected to deliver the 340 hertz alternating current signal to the injection inductors 32 and injection capacitors 34 . inductors 32 and capacitors 34 are tuned to provide a series circuit resonant at the desired pulse code frequency of 340 hertz . surge protection arc gaps 36 are connected across the injection inductors 32 and the transformer winding to the neutral to provide surge protection when the injection inductor 32 and capacitors 34 are connected to the substation bus 42 . that is , a surge current can create an overvoltage on the inductors 32 and the arc gaps 36 are used to limit that voltage . the substation injection unit runs with an isolated neutral ; however , it is desirable to limit its relationship to the system neutral , and this function is performed by a neutral shift arc gap 38 . that is , if the system neutral or the substation neutral shift too far with respect to one another , the neutral shift arc gap 38 will fire to hold them in a fixed voltage relationship . from the inductors 32 and the capacitors 34 , the 340 hertz pulse code signal is applied through disconnect devices 40 which may be , for example , simple disconnect switches or a mechanized switch utilized to switch capacitor banks on and off the line . from there , the pulse code signal is applied to the substation bus 42 to be sent to the remote receiver units along the power lines . the output from power output contactor 28 is also fed through current transformers 44 to a neutral shift detector 48 which acts to indicate when the power system neutral has shifted sufficiently to cause improper operation of the substation injection unit . such a shift can be caused by , for example , a line - to - neutral or line - to - line fault which , if not cleared sufficiently rapidly , causes neutral shift detector 48 to function to disconnect the substation injection unit from the power line via system status board 64 , control relay circuits 18 , power breaker 14 and contactors 16 and 28 . reference numeral 50 indicates generally the control logic for controlling the function and operation of the circuits described hereinabove in the substation injection unit . single phase power is fed from terminal board 12 into a trip breaker 52 and then through an electromagnetic interference filter 54 which eliminates some of the transients and higher harmonics being supplied to a transformer 56 . transformer 56 steps down the voltage level to one usable by direct current power supply 58 which may be , for example , approximately 120 volts . power supply 58 supplies direct current power to the control and communications module 60 . when the substation injection unit is transmitting a pulse code signal through the substation bus 42 , part of that signal is fed back through the customer &# 39 ; s power supply 10 down through terminal board 12 , trip breaker 52 and may be detected by a pulse detector 62 . pulse detector 62 preferably comprises a modified remote receiver unit which is designed to detect , on a pulse - by - pulse basis , the pulse code signal impressed upon the power lines . pulse detector 62 is set forth in greater detail in copending u . s . application ser . no . 053 , 252 , filed june 29 , 1979 , assigned to the same assignee as the present invention , said application being expressly incorporated herein by reference . the output of pulse detector 62 is fed to the system status and i / o board 64 in the control and communications module 60 . with respect to this information , system status board 64 is used to confirm that the ripple tone or pulse code signal is being applied to the system . the heart of the control and communications module 60 is a microprocessor 66 which may , for example , comprise a motorola 6800 chip . the microprocessor 66 , which can be denoted as a communications controller , performs several functions . for example , the pulses from the pulse detector 62 are fed to microprocessor 66 through system status board 64 for counting , storing , and transmission back to the mcs for comparison with the desired injection message sent to the substation injection unit by the master control station . this information is transmitted via a modem 74 that is connected to the telephone lines that are connected to the modem in the master control station . the microprocessor 66 stores the pulses received from pulse detector 62 , on a pulse - by - pulse basis , and then transmits the complete 40 pulse code message back to the master control station where verification is made . one function of the system status and i / o board 64 is to link and isolate the low level electronics portion of the control logic section 50 from the nominal higher voltage circuits in the substation injection unit . a block diagram of the system status and i / o board 64 is illustrated in fig7 in combination with the microprocessor 66 . the inputs to microprocessor 66 are received by the board 64 through a high voltage interface circuit 100 which converts the nominal 220 volt inputs to 5 volt logic level . in a preferred embodiment , seven such inputs are provided through high voltage interface 100 . as explaind above , one of the inputs is from pulse detector 62 . a second input is from the neutral shift detector 48 . another pair of inputs are provided from two relays in control relay circuit 18 , while yet another pair of inputs are provided from temperature detectors 24a to be described below . from the high voltage interface 100 , the low level logic signals are fed to a latch 102 having a chip enable input 101 . chip enable input 101 to latch 102 is provided by an address decoder 104 which receives a 16 bit address signal from the microprocessor 66 . when the right address is detected in decoder 104 , the chip enable output 101 goes high to latch the data through latch 102 to be delivered to the input of the microprocessor 66 via an 8 bit data bus . outputs are transmitted from the microprocessor 66 in a similar fashion . that is , a 16 bit address bus feeds an address to an address decoder 106 which , upon detection of a proper address , causes a chip enable output 107 to go high to actuate latch 108 to receive the eight bits of data from microprocessor 66 to be sent to the desired output . for example , when it is desired to open or close the input contactors 16 and the output contactors 28 , an appropriate address and data is sent from the microprocessor 66 through the output latch 108 to deliver the control signals to the control relay circuits 18 . microprocessor 66 communicates with rectifier controller 68 and inverter controller 46 in a similar manner utilizing , of course , different address codes on its output address bus to address the particular controller desired . referring back to fig6 it is seen that three - phase power is supplied to rectifier controller and gate generator 68 via line 69 . the three - phase , 60 hertz supply to rectifier controller 68 along with output voltage level commands from microprocessor 66 allows the controller 68 to establish a predetermined voltage level which must appear on the scrs before they can be fired . this information provides a reference point for controlling the firing time of the scrs of the rectifier . the firing time determines the level of output power . the master control station permits selection through microprocessor 66 of one of a plurality of desired output voltages for rectifier 20 which may comprise , for example , a high , medium and low voltage . the firing time that the scrs in rectifier 20 are fired depends upon the selected output voltage level and is controlled by rectifier controller 68 , in a manner to be described in greater detail hereinafter . reference numeral 24a indicates a pair of temperature rise detectors located in the inverter 24 . one of the detectors is positioned adjacent the scrs to detect an initial threshold of temperature . upon reaching the initial threshold , a signal is transmitted to system status board 64 in control module 60 where it is transmitted back to the master control station through the microprocessor 66 to indicate that the maximum operating temperature of the substation injection unit has been reached . this permits corrective action to be taken at the master control station . the other temperature detector operates at a higher temperature threshold . when the high threshold is reached , a signal is sent directly to the control relay circuits 18 to operate the shunt trip via line 71 in power breaker 14 to immediately disable input contactor 16 and output contactor 28 to isolate the substation injection unit and render same incapable of further transmission . this signal is also transmitted through the control relay circuit 18 to the microprocessor 66 via line 65 and thereafter to the master control station to indicate an alarm condition . line 65 consists of four lines between system status board 64 and control relay circuits 18 . control relay circuits 18 comprise a pair of relays to operate input and output power contactors 16 and 28 , respectively . further , the status of contactors 16 and 28 is periodically polled and reported to the master control station through system status board 64 and microprocessor 66 . a transformer 70 is connected to receive power from filter 64 and changes the line voltage to a desired level to operate a pulse gate power supply 72 which provides dc power for rectifier 20 and inverter 24 . reference numeral 76 in control and communication module 60 refers to optional boards which may be provided in the substation injection unit to monitor analog or discrete data for feeding back system parameters to the master control station . for example , one analog input may be a direct current signal proportional to the system load which can be utilized in the load management system for the type 3 control lists . alternatively , the demand information can be , for example , the inputs from kilowatt - hour meters where the input is dry contact closures on the lines which are attached to switch on the meters . the rate at which the switching operations occur are indicative of demand , and the total number of contact closures is proportional to the kilowatt - hours consumed . referring to fig8 meters a and b each have a pair of dry contacts which close every time the meter turns to produce a pulse from the high voltage interfaces 140 and 150 . the outputs from high voltage interfaces 140 and 150 are fed to a pair of timers which may be located , for example , in a timing chip 160 ( such as motorola &# 39 ; s 6840 ). timer 1 in the chip 160 is loaded with a number from microprocessor 66 , which , for example , is equivalent to five minutes . a 60 hertz clock signal causes timer 1 to decrement . at the end of five minutes , the microprocessor 66 reads the present count in timer 2 and subtracts it from the previous count , which is equal to the total number of pulses in that time interval which is loaded into a ram location 170 . the same operation is performed with timer 3 . the numbers are fed to a stack of memory locations in ram 170 , and , when an hour has elapsed , and the master control station calls for an analog value , the microprocessor 66 sums everything in the two ram stacks and sends it to the master control station which then calculates the demand per hour . there is shown in fig9 a functional block diagram of the rectifier controller . further details of the rectifier controller are set forth in copending u . s . application ser . no . 054 , 025 , filed july 2 , 1979 , assigned to the same assignee as the present invention , said application being expressly incorporated herein by reference . the rectifier controller utilizes voltage sensors 110 to detect the more positive voltages by comparing the instantaneous magnitude of phase voltages a , b and c from the three - phase power grid . the phases of the three voltages must be rotating positively from a to b to c . the voltage sensors 110 produce outputs whenever one line is positive with respect to another line with which it is compared . the voltage sensors are connected to the scr enabling logic 112 in order to determine the firing order of the scrs . the same information required for determining the firing order is fed to a dwell start detector 130 . the dwell start detector is responsive to the outputs of voltage sensors 110 to produce an output whenever any two of the three - phase voltages are equal . a delay register 122 is responsive to the dwell start detector 130 output and to time delay information from a decoder and counter 120 which receives output voltage signals from the microprocessor . if the time delay received from decoder 120 is zero , then the delay register 122 will immediately enable logic 112 . when this condition exists , the rectifier will produce a full power output . the reason for this is that , in this event , the scr enabling locig 112 will be time controlled only by the voltage sensors 110 since there is no dwell time delay . as the length of the time delay increases from zero , the firing of the scrs will be delayed by the output from delay register 122 . the decoder and counter 120 also provides an input to a mode register 124 . this mode register 124 is responsive to a mode command from the microprocessor through decoder 120 to deliver an appropriate signal to scr enabling logic that is used to initiate and terminate operation of the rectifier controller upon command from the microprocessor or when there are other rectifier controller malfunctions . during normal operation , the rectifier controller operates in response to commands from the microprocessor which are received by the decoder and counter 120 and in response to the three - phase voltages which are sensed by the voltage sensors 110 . the commands from the delay register 122 , the voltage sensors 110 , and the mode register 124 under normal operation will permit firing of the rectifier scrs by enabling logic 112 . connected to the output of the scr enabling logic 112 are gate pulse generators 114 which are utilized to generate bursts of high frequency pulses which may be , for example , on the order of 50 kilohertz . these pulses are then applied to gate amplifiers 116 which are used to increase the power level and to drive the rectifier scrs 118 . the rectifier scrs have isolation transformers associated with their gates . these isolation transformers use the 50 kilohertz gate pulse generators 114 to provide to the necessary gate control signal . the rectifier controller also has associated with it additional means for controlling the scr enabling logic 112 which are responsive to conditions on the dc bus . these means are an overcurrent sensor 128 and a shoot - through detector 132 . the overcurrent sensor 128 is placed in the direct current bus and senses a high direct current for sustained periods of time . this sensor may be , for example , a thermally responsive switch which closes to apply a signal to the mode control register 124 which will produce a disabling signal which is received by the scr enabling logic 112 . in order to provide for rapid control of the rectifier direct current output voltage when a shoot - through occurs in the scrs associated with the inverter circuitry , there is provided a shoot - through detector 132 . a &# 34 ; shoot - through &# 34 ; is the undesirable condition which may occur in the inverter circuit when two series connected scrs operating on the same voltage phase are simultaneously placed in conduction which produces a short circuit on the direct current bus . the shoot - through detector 132 responds to this short circuit condition on the direct current bus and produces a signal responsive to the short circuit condition . the shoot - through detector 132 is connected to the scr enabling logic 112 . when such a shoot - through condition is sensed , the rectifier scr enabling logic 112 immediately disables the scr gates , and thereby prevents any further power from being applied to the direct current bus during the period of the shoot - through condition . the scr enabling logic 112 maintains the gates in their &# 34 ; off &# 34 ; condition for a predetermined period of time . this provides time for the inverter to recover from its undesirable shoot - through condition . shoot - through conditions may occur randomly in inverter circuits . the shoot - through detector 132 and the scr enabling logic 112 permit the rectifier to be protected against damage from such random conditions . if the shoot - through condition becomes persistent and repetitive , there may be a serious fault associated with the inverter circuit &# 39 ; s rectifiers . in order to determine if such serious and continuous shoot - through conditions are present , there is provided a shoot - through counter 126 . the shoot - through counter 126 counts the number of shoot - through detections within a given time interval . when a predetermined number of shoot - throughs is detected within the predetermined period , the shoot - through counter 126 produces a shut down signal which is received by scr enabling logic 112 . the scr enabling logic 112 will then permanently shut down the scr gates until a microprocessor - initiated or manually initiated command is received to clear the fault and restart the rectifier . the shoot - through counter 126 also provides fault data supplied to the microprocessor which is used to control the rectifier controller as well as the inverter . referring to fig1 , information pertaining to the desired mode of operator of the inverter is received from the substation injection unit microprocessor along an address bus b by an address page recognition rom 202 and a mode select register 204 . the mode select register 204 provides a two bit output which represents one of the four possible modes of operation of the inverter . the four modes of operation are crash ( output 00 ), off ( output 01 ), idle ( output 10 ), and inject ( output 11 ). in the crash mode , the inverter scrs are shut down in response to detection of a fault condition . in off , the scrs are all turned off momentarily . the idle mode corresponds to the absence of a pulse in the pulse code signal that forms the injection message , while the inject mode corresponds to the presence of a pulse in the pulse code signal . the initial timing of the inverter controller output signals is achieved through a mode control register 206 . the mode control register 206 is clocked by a timing signal referred to as the load mode register signal received from a timing register 240 , and is enabled by signals from an enable mode change register 230 , to be explained more fully below . a second enabling input is applied to mode control register 206 from an or gate 231 which is responsive to a back feed 60 hertz signal obtained either from the power lines or from the rectifier controller of the substation injection unit , as will be explained in greater detail hereinafter . upon receipt of the two enabling inputs and the load mode register signal , mode control register 206 receives the two bit code from the mode select register 204 and delivers same to its two line output which forms a portion of an address for an eight bit address bus that feeds a plurality of read - only - memories ( roms ) 208 , 210 , 212 , 214 and 216 . roms 208 through 216 can be denoted as a next table rom 208 , a next line rom 210 , enable next mode change and next main scr roms 212 and 214 and a next commutate scr rom 216 . associated respectively with each of the roms 208 through 216 are output registers 218 , 220 , 222 , 224 and 226 which can be denoted as a table register 218 , a line register 220 , main scr registers 222 and 224 and commutate scr register 226 . an enable mode change register 230 is also connected to receive an output from rom 212 . the addresses for next table rom 208 , next line rom 210 , enable next mode change and next main scr rom 212 , next main valve rom 214 and next commutate scr rom 216 are generated in response to the initial two bit address from the mode control register 206 , and further in response to timing signals received from timing registers 240 and 242 . the address bus for providing information to the roms 208 through 216 includes eight bits of address . two of the eight address bits are supplied by the mode control register 206 . the remaining six bits are generated by next table and next line roms 208 and 210 . the registers 218 and 220 receive the information from roms 208 and 210 when they are clocked by advance table signals which are generated by timing register 242 . the information in next table rom 208 is the next table information and comprises two of the address bits which are applied to all of the roms 208 , 210 , 212 , 214 and 216 . the rom 210 contains the next line address information in the form of the remaining four bits for the address bus . the eight bit address to roms 208 , 210 , 212 , 214 and 216 consists of the information on two lines from the mode control register 206 , the information on two lines from table register 218 , and the information on four lines which come from the line register 220 . the address on the address bus is changed when a first timing signal , the advance table signal , is received from timing register 242 . the advance table signal is applied to the clock terminals of table register 218 and line register 220 . when these registers are clocked , the next table information from rom 208 and the next line information from rom 210 will be latched in and set as the table and line information for six of the eight bits of the address bus . as the address bus information changes , the output of next table rom 208 and next line rom 210 will advance to the next address of the roms which contains information at the location addressed by the address bus pertaining to the next desired address . in this manner , whenever the clock terminals of the table register 218 and the line register 220 are clocked , the address on the eight bit address bus will change to the next desired address . it is through the continuous clocking of the table register 218 and the line register 220 that the address information for roms 208 , 210 , 212 , 214 and 216 is continuously changed for cycling the firing control information for the inverter valves . the roms 212 , 214 and 216 with their associated output registers 222 , 224 and 226 operate in a similar manner . the information appearing on the outputs of roms 212 , 214 and 216 is the next - to - be - used firing information for the main scrs and commutate valves of the inverter . when the next main scr rom 212 is addressed , there appears on its output bus three bits for indicating the next desired firing state of inverter scrs 6 , 4 and 2 . similarly , when the next main scr rom 214 is addressed , it produces on its output three bits for indicating the next desired firing state for inverter scrs 5 , 3 and 1 . the main scr register 222 receives the three bits of information from next main scr rom 212 when a timing signal is received on the load main scr register line which is generated by timing register 240 . similarly , the main scr register 224 which controls scrs 5 , 3 and 1 is also clocked by the load main scr register timing signal from controller timing register 240 . all of the commutate scr firing controls are generated by next commutate scr rom 216 which also responds to the address bus information . next commutate scr rom 216 has as outputs three bits which are received by commutate scr register 226 . the commutate scr register 226 preferably comprises a 3 by 8 decoder for decoding the three bit output from next commutate scr rom 216 to create six commutate valve firing signals ( only six of the eight output bits are used ). the commutate scr register 226 has as a clock input the fire commutate scr timing signal which is received from timing register 240 . in order to clock the mode control register 206 , the table register 218 , the line register 220 , the main scr register 222 , the main valve register 224 , and the commutate scr register 226 , it is necessary to generate timing signals which are appropriately spaced in time to control the desired sequence of events . the timing of the events determines the output frequency of the inverter . the apparatus of generating the necessary timing signals is also shown in fig1 . a 6fo signal ( where fo = the desired pulse code frequency ) is applied to the clock input of a run sequence flip - flop 200 . the run sequence flip - flop 200 is triggered on the positive zero - crossing of the 6fo signal and produces an output to a sequence clock in the form of a nand gate 228 . the other input to nand gate 228 is a one microsecond clock pulse . the output of nand gate 228 is a sequence clock signal which is a burst of one microsecond clock pulses for a period of time determined by the run sequence flip - flop 200 . the output of nand gate 228 is fed to a timing sequence counter 232 at its clock terminal . the timing sequence counter 232 and a companion timing sequence counter 234 count the one microsecond clock pulses within the run sequence which are received from nand gate 228 . the output of timing sequence counters 232 and 234 is an eight bit address code which is used to address a timing sequence rom 236 and a timing sequence rom 238 . as signals are generated by the timing sequence counters 232 and 234 , the data in the memory addresses of the timing sequence roms 236 and 238 are read out , one address each microsecond . the address code from the timing sequence counters 232 and 234 changes upon each clock input received from the nand gate or sequence clock 228 . the data outputs from the timing sequence roms 236 and 238 are fed respectively to timing registers 240 and 242 . there are four bits of data fed from timing sequence rom 236 to timing register 240 and four bits from timing sequence rom 238 to timing register 242 . the clock signal for timing registers 240 and 242 comprises the one microsecond clock input . the outputs of the timing registers 240 and 242 are precisely timed pulses in accordance with the one microsecond clock , and in accordance with the timing sequence rom address chosen by the timing sequence counters 232 and 234 . one output from the timing register 242 comprises a sequence terminate signal . the sequence terminate signal is applied to a reset sequence circuit 230 which preferably comprises a one - shot flip - flop . the output of the one - shot 230 is then applied to reset the timing sequence counters 232 and 234 , and also to clear the run sequence flip - flop 200 . the application of this pulse to the run sequence flip - flop 200 terminates the sequence until the next positive going 6fo signal is observed . the five timing signals from the timing registers 240 and 242 are denoted the load mode register signal , the load main scrs register signal , the advance table signal , the fire commutate scrs signal , and the sequence terminate signal , and are all controlled by the information loaded in the timing sequence roms 236 and 238 . only five of the eight potential output lines from roms 236 and 238 contain information which is used in the run sequence . these five lines are used to advance the table and line , load the main valve registers , fire the commutator scrs , load the mode register , and to terminate the sequence . the termination of the sequence occurs after about 73 microseconds which is a relatively short period of time when compared to the time required for completion of one 6fo cycle . in the preferred embodiment , the pulse code output frequency fo is 340 hertz . therefore , the 6fo frequency is 2 , 040 hertz . the time for one 6fo cycle is therefore approximately 490 microseconds . it therefore can be seen that the complete timing sequence occurs during the initial 73 microsecond portion of each 6fo signal . the outputs on the various timing lines to the inverter controller registers do not change until the next 6fo cycle is initiated over 400 microseconds later . the load mode register timing signal is generated by timing register 240 , and is applied to the mode control register 206 as the last pulse of the series of timing sequence pulses which control the cycling of the inverter controller . it is through this pulse that a new address is applied to roms 208 through 216 in response to a mode change address received by the mode select register 204 . the load mode register clock pulse is the final timing pulse of the timing sequence . therefore , a change in the information in the mode control register 206 will not effect the firing of the scrs of the inverter until the next 6fo interval begins , and the next advance table timing signal is output from timing sequence rom 238 . the enable mode change register 230 is responsive to the enable next mode change portion of the next main scr rom 212 . the enable next mode change output is a one bit output which occurs at the end of each 6fo interval . the enable mode change register 230 is responsive to the load main scr register timing signal from timing register 240 as is the main scr register portion of register 222 . the output of the enable mode change register 230 is then fed to the mode control register 206 to enable the mode control register at the end of each 6fo interval , or at the end of each 340 hertz signal . at the beginning of the inject mode , it is necessary to inject the pulse code signal at the proper point in the 60 hertz voltage of the substation bus to prevent injection transformer saturation . this point is determined experimentally and is set by adjustment of the back feed window delay circuit 232 . the second enabling input for the mode control register 206 is received from the back feed window delay circuit 232 which receives the 60 hertz signal representative of the line voltage . a back feed window delay circuit 232 and a one - shot window width circuit 233 provide one of the three inputs to an or gate 231 . the two bit output from mode select register 204 is connected to inverters 234 and 235 so that the output of inverters 234 and 235 is a logical &# 34 ; 0 &# 34 ; when the mode select register outputs a signal representing the inject mode , which is a &# 34 ; 11 &# 34 ; input to the inverters 234 and 235 . the or gate 231 acts as a disabling gate for the mode control register 206 . when the input to the or gate 231 is &# 34 ; 0 &# 34 ; on all three lines , the output of the or gate 231 will be a logical &# 34 ; 1 &# 34 ;, which disables the mode control register 206 . at all other times , when a &# 34 ; 1 &# 34 ; appears on any one of the three input lines to or gate 231 , the output of or gate 231 will enable the mode control register 206 . in this manner , the only possible time that the mode control register is disabled is during the inject mode when the output of inverters 234 and 235 are logical &# 34 ; 0 &# 34 ; s . the back feed window delay circuit 232 has as an input a point on the 60 hertz three - phase lines . the back feed window delay 232 is a one - shot with an adjustable time constant which will delay its output a predetermined period of time which is selectable in accordance with equipment operation . the back feed window delay may be on the order of , for example , one to five milliseconds . the delayed output from the back feed window delay 232 is then fed to a one - shot flip - flop 233 which has a predetermined width or time which is slightly greater than the time required for one 340 hertz cycle . this time may be set to , for example , four milliseconds . the output of the one - shot 233 will be a logical &# 34 ; 0 &# 34 ; until the window from circuit 232 is seen . when the window is present , the one - shot 233 output will be a logical &# 34 ; 1 &# 34 ; which will allow the mode control register 206 to be enabled . when the output of the one - shot 233 is a &# 34 ; 0 &# 34 ; during inject , the mode control register 206 will be disabled by virtue of the fact that there are three &# 34 ; 0 &# 34 ; s on the inputs to or gate 231 . the width of the window or the time period of four milliseconds for the one - shot 233 must be greater than the time interval between one enable mode change command from register 230 and the next . since the enable mode change commands from register 230 occur only once in each 340 hertz cycle , when the time period for the one - shot 233 must be slightly greater than the time for one 340 hertz cycle . outputs of main scr registers 222 and 224 are each connected to a gate pulse generator ( not shown ) which may each comprise , for example , 50 kilohertz oscillators . the outputs from the gate pulse generators are then applied to gate amplifiers or integrated circuit drivers ( not shown ). the outputs from the gate amplifiers are then applied to the inputs of the main scr inverter scrs through isolation transformers . the commutate scr register 226 has as an input one microsecond timing signals which are generated when the fire commutate scr signal from timing register 240 clocks commutate scr register 226 . since the output from register 226 output is at a high frequency , it is not necessary to utilize a 50 kilohertz oscillator as was used in the driving circuitry for the main scr scrs . therefore , the outputs of commutate scr register 226 are fed directly through transistor amplifiers and isolation transformers to the gates of the commutating scrs of the inverter . further details of the inverter controller 46 are set forth in copending u . s . application ser . no . 054 , 024 , filed july 1 , 1979 , now u . s . pat . no . 4 , 296 , 462 , assigned to the same assignee as the present invention , said application being expressly incorporated herein by reference . fig1 illustrates the flow chart of the software program for the microprocessor 66 located in each substation injection unit . the program includes three major routines , each of which is broken into smaller parts to maximize the efficiency of the microprocessor . the three major routines are the input routine where communications are being received at the substation injection unit , the output routine where the substation injection unit is outputting information to the master control station , and the inject routine where the substation injection unit is involved in injecting the selected pulse code signal onto the substation &# 39 ; s power lines . the input and output routines each take approximately 440 milliseconds to run , while the inject routine runs for approximately 90 seconds . the input routine is broken into three routines designated as in - 1 , in - 2 and in - 3 , the output routine is broken into five routines designated as out - 1 , out - 2 , out - 3 , out - 4 and out - 5 , while the inject routine is broken into eleven routines designated as inj - 1 through inj - 11 . three internal pointers , one for the input , one for the output and one for the injection routines , are set by various steps in the routines in order to loop to other routines in proper sequence . the pointers utilized may be summarized as follows : ______________________________________input pointer0 output1 in - 12 in - 23 in - 3output pointer0 inject1 out - 12 out - 23 out - 34 out - 45 out - 5injection pointer0 main1 inj - 12 inj - 23 inj - 34 inj - 45 inj - 56 inj - 67 inj - 78 inj - 89 inj - 9 10 inj - 10 11 inj - 11______________________________________ each substation injection unit is provided with a manually operable switch having three positions : off , auto and manual . in the auto position , it indicates that the substation injection unit is communicating with the master control station and will inject whatever injection message is received and verified by the master . in the manual position , it indicates that the substation injection unit will communicate with the master , but will not automatically inject . in the power up initialization routine , all of the ram locations are tested to see if there are any failures . if not , the timers are initialized , the rectifier and inverter are both turned off , values are read in from the constants rom , the input pointer is set equal to 1 to ready the substation injection unit for receiving an input message , and the output and injection pointers are set equal to zero . the main routine initially sets a watchdog timer which makes sure that the software program starts from the beginning . after testing to make sure the mode switch is either in auto or manual , the program receives the input pointer and goes to the proper subroutine established by the pointer . in a similar fashion , the inject and output routines obtain the injection and output pointers , respectively , and then loop to the routine established by the respective pointers . referring first to routine in - 1 , it first looks to see if a carrier detect flag has been received . the carrier detect flag is a signal from the modem of the substation injection unit which indicates that the master control station is trying to communicate with the substation injection unit . if the carrier detect is up , the routine looks to see if a character has been received . if so , it then checks to to see if there is a framing , parity or overrun error . if not , the routine checks to see if the character is an stx which would indicate the beginning of a transmission from the master control station . if so , a buffer is initialized and the input pointer is set to number 2 . routine in - 2 first checks to see if a carrier detect is still up , and then to see if a character has been received and if there are any errors in the character . if the carrier detect is not up or there is an error detected , the routine goes to routine in - 1a , which is an abort input routine wherein the input pointer is set to number 1 and the program then loops to the inject routine . if there is no error , the character is saved in the buffer until it is full . then the last character is checked to see if it is an etx to denote the end of the message from the master control station . if so , the routine then checks to see if this particular message is directed to this particular substation injection unit . if it is not , the routine looks to see if it is a commence keying command which is directed to all substation injection units and , if it is , it directs the program to the keying routine . if the message is directed to this particular substation injection unit , the input pointer is set to number 3 . in routine in - 3 , the command is decoded and is checked to see if it valid . if it is , the program loops to the proper routine to handle the decoded command . the output routines are similar . routine out - 1 first checks to see if a carrier detect is up , and , if it is , the program loops to the inject routine . if it is not , the routine raises a request to send flag , which is a signal to its modem that it desires to communicate with the master control station . the output pointer is then set to number 2 . in routine out - 2 , the substation injection unit checks to see if a clear - to - send flag is up , which is a response from its modem that the lines are clear for communication to the master control station . when this flag is received , a timer is set for a 250 millisecond delay , and the output pointer is set to number 3 . in routine out - 3 , the 250 millisecond delay is checked to see if it is over , and , if it is , a piece of hardware known as the acia ( asynchronous communication interface adapter ) is checked to see if it is ready for a character . if it is , a character is output , and , if all characters have not been sent , the program loops back to out - 4 to repeat the outputting of a character . after all characters have been output , a 30 millisecond delay is set and the output pointer is set to number 5 . in routine out - 5 , the 30 millisecond delay is checked to see if it is finished , and , if it is , the request to send flag is dropped , the output pointer is set equal to zero and the input pointer is set equal to one . the last two settings cycle the program back to the input routines . prior to injection of a pulse code signal , a commence keying command must have been received during input routine in - 2 . at that point , the program loops to the keying routine which first checks to see if the previously set timeout has expired . the timeout control is a preselected time period , for example , 20 seconds , after which a commence keying command will no longer be valid to commence keying of a previously set up and verified injection message . if the timeout has expired , the program loops to routine k1 where the injection pointer is set equal to zero , the input pointer is set equal to 1 , and the program loops to main . if the timeout as not expired , the keying routine checks to see if the last command sent was a &# 34 ; set injection code &# 34 ; command . if not , the program loops back to main . if the last command was a &# 34 ; set injection code &# 34 ;, the program checks to see if the mode switch is in auto and , upon determining that it is , the start up rectifier voltage is set , the power contactors are closed , and a 100 millisecond delay is established . the injection pointer is set to 1 , which indicates that the substation injection unit is ready for an injection , and the input pointer is also set to one . the eleven inject routines will now be explained . in inj - 1 , the program first determines whether the delay set has timed out ; if it has , it checks to see if the contactor is closed . if the contactors are not closed , a contactor error is set and the routine loops to abtinj , or abort injection . in routine abtinj , the contactors are opened , a 100 millisecond delay is established , the injection pointer is set equal to 9 , and the program loops back to main . if the contactor is closed , inj - 1 then turns on the rectifier , sets a 50 millisecond delay , and sets the injection pointer equal to 2 . in inj - 2 , if the 50 millisecond delay is finished , the inverter is turned to its idle mode , whereafter a 50 millisecond delay is established and the injection pointer is set equal to 3 . when this 50 millisecond delay is finished , inj - 3 closes the injection contactors , sets a 100 millisecond delay , and sets the injection pointer equal to 4 . when this delay is finished , inj - 4 checks to see if the injection contactor has closed . if it has , it checks the shoot - through counter to see if it has counted more than three shoot - throughs for this particular pulse . if so , a pulse code generator error is set and the injection is aborted . if not , a pulse timer is started and the injection pointer is set to 5 . in inj - 5 , a timer count is obtained from a counter which is being decremented by a 60 hertz clock . a table of numbers are stored that correspond to time and indicates when each of the 41 pulses in the pulse code should be sent . the first step in inj - 5 is to check to see whether the current timer count is proper by comparing it with the table count . if it is , the pulse indication is obtained from an internal buffer set up by a set injection code message in the substation injection unit and is checked to see if there should be a pulse in that position . if there should not , the injection pointer is set to 7 and the program cycles to main . if there should in fact be a pulse in the position indicated , the shoot - through counter is cleared , the inverter is set to inject whereupon generation of a 340 hertz pulse is initiated . a 50 millisecond delay is then set , and the injection pointer is set equal to 6 . in routine inj - 6 , if the 50 millisecond delay has expired , the power level from the rectifier is changed to its preselected or full value . this is achieved through the rectifier controller , as explained above . therefore , when the inverter controller initially goes to inject in inj - 5 , it provides a low voltage level on the output of the rectifiers , after which in inj - 6 the output voltage of the rectifier is raised to its nominal desired value . this is known as a &# 34 ; soft start &# 34 ;. the injection pointer is then set to 7 . in routine inj - 7 , the program first looks to see if the pulse has been completed . if it has , the information obtained from the special receiver or pulse generator is examined to see if there was or was not a pulse . the output of the rectifier is then set back to the minimum power level , a 50 millisecond delay is set , and the injection pointer is set equal to 8 . if the delay is finished in inj - 8 , the inverter is set to idle which stops the injection of the 340 hertz pulse . the routine then checks to see if the shoot - through counter is greater than three for this particular phase . if it is , a pulse code generator error is set and the injection is aborted . if it is not , the contents of the shoot - through counter is added to the previous count , and the total is checked to see if it is greater than or equal to 8 . this loop allows three shoot - throughs per pulse and a total of eight shoot - throughs on all pulses output during a single injection . the program then checks to see if the last pulse in the train has been sent . if it has , this injection cycle is over and the program loops to the abort injection routine abtinj . if the last pulse has not been sent , the injection pointer is set to 5 to check the next pulse . routine inj - 9 comes into play when an injection is aborted under the abtinj routine . the inj - 9 routine first checks to see if the 100 millisecond delay has expired . if it has , it checks to see if the contactor has been opened as requested in the abtinj routine . if it has not been opened , a contactor error is indicated . in any event , the inverter is turned to its off mode , a 50 millisecond time delay is set , and the injection pointer is set to 10 . in routine inj - 10 , when the 50 millisecond time delay has expired , the power contactor in the main breaker is opened , another 100 millisecond time delay is set , and the injection pointer is set to 11 . in inj - 11 , after the 100 millisecond delay has expired , the program checks to see if the power contactor has in fact opened . if it has not , contactor error is indicated . in any event , the injection pointer is then set to zero and the program loops back to main . recall that in routine in - 3 , the decoded command , after validation , is enabled by going to the routine that handles the particular command . these commands can include a polling command , a set injection code command or a report injection code command . if a polling command is is decoded , the master control station has requested certain information from the substation injection unit . several conditions are checked in the routine polling command . upon detection of a positive condition , a flag or bit is set to indicate the detected condition . as is apparent from the flow chart , the following conditions are checked : whether the substation injection unit mode switch is in its manual position ; whether any scrs are overtemperature ; whether the cabinet is overtemperature ; whether there is neutral shift error ; whether there is a contactor error ; and whether there is a pulse code generator error . after the status conditions are checked , and the appropriate flags or bits are set , the routine starts an analog conversion , inputs any new analog values , obtains the external discrete inputs , and generates a polling response , then looping to the message transmit or mesxmt routine . in the mesxmt routine , the substation injection address is set , the output pointer is set equal to one , and the input pointer is set equal to zero , whereupon the substation injection unit is ready to transmit to the master control station . if the decoded command is to set the injection code , the program loops to the set injection code routine . the injection code received from the master control station is saved in a buffer . next , a response message is generated using the received injection code , and a one minute timeout is set . the program then loops to mesxmt to transmit the message back to the master control station for verification . if the decoded command is to report the injection code , the program loops to the report injection code routine . first , the injection code read from the special substation injection unit receiver or pulse generator is obtained , and a response message is generated . the program then loops to mesxmt to transmit the message back to the master control station . obviously , numerous modifications and variations of the present invention are possible in light of the above teachings . it is therefore to be understood that , within the scope of the appended claims , the invention may be practiced otherwise than as specifically described herein .