WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Programmable controller using microprocessor    
United States Patent4107785   
Link to this pagehttp://www.wikipatents.com/4107785.html
Inventor(s)Seipp; William H. (Bettendorf, IA)
AbstractThere is provided a programmable controller comprising a standard microprocessor having output address terminals and input/output bi-directional data terminals and means for providing a binary code on the data terminals indicative of the status of the machine cycle to be processed by the microprocessor. This programmable controller includes a logic decoder means for producing a selected signal in response to logic signals on selected address terminals and in the status binary code of the data terminals. In addition, the programmable controller includes means for programming the HOLD state for the microprocessor. There is also provided an arrangement for expanding the number of interrupt conditions which can affect the INTERRUPT state of the microprocessor in the programmable controller.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4107785
Programmable controller using microprocessor - US Patent 4107785 Drawing
Programmable controller using microprocessor
Inventor     Seipp; William H. (Bettendorf, IA)
Owner/Assignee     Gulf & Western Industries, Inc. (New York, NY)
Patent assignment
All assignments
Publication Date     August 15, 1978
Application Number     05/701,858
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     July 1, 1976
US Classification     712/223 700/12
Int'l Classification     G06K 007/01
Examiner     Shaw; Gareth D.
Assistant Examiner     Bartz; C. T.
Attorney/Law Firm     Meyer, Tilberry & Body
Address
Parent Case    
Priority Data    
USPTO Field of Search     340/172.5 364/900 MS File 364/107
Patent Tags     programmable controller microprocessor
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
3970992
Boothroyd
705/43
Jul,1976

[0 after 0 votes]
3959776
Morley
358/1.1
May,1976

[0 after 0 votes]
3942158
Dummermuth
710/19
Mar,1976

[0 after 0 votes]
3810118
Kiffmeyer
700/1
May,1974

[0 after 0 votes]
3798612
Struger
700/86
Mar,1974

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


Having thus defined the invention, it is claimed:

1. A programmable controller of the type using a microprocessor having a plurality of bi-directional data terminals and a plurality of address terminals upon which a binary code address of bits appears, said controller including: a set of data lines, data input means for applying a byte of binary data on said set of data lines, said byte having a given bit on one of said data lines to be applied to a selected one of said data terminals for processing by said microprocessor; a first logic decoder means connected to said set of data lines for selecting said given bit of said byte on said one of said data lines in response to logic on said address terminals; said first logic decoding means having an output for receiving said selected bit; and, second logic network means for applying said bit selected by logic on said address terminals and received by said decoder output to said selected one of said data terminals of said microprocessor for bit processing by said microprocessor of binary logic on said selected terminal.

2. A programmable controller as defined in claim 1 wherein said first decoder means includes inputs each carrying a bit of said binary code at said address terminals and means for selecting said given bit of a particular byte by decoding said address code at said inputs.

3. A programmable controller as defined in claim 2 including means responsive to a bit of said binary code at said address terminals for inverting said given bit of said byte.

4. A programmable controller as defined in claim 1 including means responsive to a bit of said binary code at said address terminals for inverting said given bit of said byte.

5. A programmable controller of the type using a microprocessor having a plurality of bi-directional data terminals and a plurality of address terminals upon which a binary code address of bits appears, said controller including: a set of data lines, data input means for applying a byte of binary data on said set of data lines, said byte having a given bit on one of said data lines to be applied to a selected one of said data terminals of said microprocessor for processing by said microprocessor; decoding means connected to said set of data lines for selecting said given bit on said one of said data lines in said set in response to a coded address on said address terminals of said microprocessor; and means for directing said selected bit from said decoding means to said selected one of said data terminals of said microprocessor.

6. A programmable controller as defined in claim 5 including means responsive to a bit of said binary code at said address terminals for inverting said given bit of said byte.

7. A programmable controller as defined in claim 5 including a decoding means having a single bit input terminal and a number of single bit output terminals; means for connecting said single bit input terminal to said selected one of said data terminals of said microprocessor; means connected to a number of said address terminals of said microprocessor for applying data from said input terminal to a selected one of said single bit output terminals determined by the binary code on said number of address terminals; and, means for connecting said output terminals to selected output devices for said controller.
 Description Submit all comments and votes
 


The present invention relates to the art of programmable controllers and more particularly to a programmable controller utilizing a standard microprocessor.

The invention is particularly applicable as a programmable controller to control a machine tool, or other mechanical system of the type generally controlled by input information and output conditions and it will be described with particular reference thereto; however, it should be appreciated that the invention has much broader applications and may be used in various types of installations wherein input and output information or conditions are to be processed digitally in accordance with a preselected program or in accordance with standard relay logic, logic diagrams or Boolean equations.

INCORPORATION BY REFERENCE

Incorporated by reference herein is prior U.S. Letters Pat. No. 3,827,030 which discloses a programmable controller utilizing a random access memory to process input and output information in accordance with standard logic or relay terminology. Also incorporated by reference herein is prior United States application Ser. No. 632,257, filed Nov. 17, 1975, by the present inventor and related to a self-addressing feature for output modules of the type contemplated by the present invention.

BACKGROUND OF INVENTION

In the last few years, a very advanced data processing device has become commercially available. This device, known as a microprocessor, is sold by various companies and generally includes a plurality of address terminals, several bi-directional data terminals and internal control circuitry for determining several types of machine cycles to be performed. These microprocessors are produced in accordance with integrated circuit technology of the PMOS and NMOS type. The versatility of these microprocessors or "microprocessing chips", as they are known, is well known in the art of controlling machine operation. A variety of attempts has been made to utilize the standard microprocessor, as the heart of a programmable controller which can control machines and logic systems. However, generally the attempts to use the microprocessor for a controller function have resulted in complex software requirements. The microprocessor has relatively limited capabilities. Four or eight bit data bus are generally available and only sixteen address lines. In addition, the internal processing by the microprocessor is somewhat limited so that a substantial number of software steps or program steps must be generated to perform even somewhat simple logic operations. It is often difficult to debug a system employing a microprocessor because there is a distinct inability to stop the microprocessor at a selected position and then read the internal condition of the internal registers and modify these registers without complicated software. Also, the ability to interrupt the microprocessor for jumping to a subroutine by external stimuli is limited by the circuitry or locations available for this purpose. It is desirable to provide a large number of interrupt call conditions, wherein the general or executive program can be temporarily stopped and a standard preset subroutine program processed. This is very beneficial in reading or writing by the controller at certain isolated locations. In other words, it is sometimes desirable to ignore several inputs until there is a change in their state, at which time a separate subroutine can be processed. Consequently, the subroutines are processed only when required. In order to do this, it is necessary to provide a great number of separate and distinct interrupt call conditions. An inexpensive simple arrangement for expanding the number of interrupt call conditions is not now available in the technology of microprocessors.

Since a standard microprocessor includes four or eight data terminals, it is extremely difficult to process single bit information of the type contemplated in prior U.S. Pat. No. 3,827,030. Such single bit information requires extensive software for masking of data lines and for shifting data between lines. This again makes the use of a microprocessor somewhat complicated, especially for relatively simple logic conditions such as AND, OR, COR, CAND, INVERT, etc. Microprocessing technology also has limitations regarding debugging of output or input terminals. In many instances, the terminal must actually be connected and operated before the system may be debugged. This is a substantial disadvantage in use of a microprocessor for any machine or system control function.

The present invention relates to a programmable controller using a microprocessor and novel external hardwired circuitry to overcome distinct disadvantages of prior attempts to use a standard microprocessor chip for a machine or system control function. In the past, the use of a microprocessor for control functions has required acceptance of the severe limitation of the microprocessor and have, therefore, utilized extensive and complex software for processing the desired input and output information. Thus, a relatively large number of memory locations were required for storing the extensive software program to employ a microprocessor as a controlling system. The present invention has overcome this disadvantage and has provided unique, novel external hardwired circuitry for allowing the use of a microprocessor, with all its standard limitations, in a programmable controller which can process eight bit data words and single bit data without extensive complex software. Thus, software needed to convert the microprocessor chip to a viable control system is substantially reduced, with the resultant substantial reduction in the cost of programming and the probability of unavoidable error. Consequently, the present invention relates to an improved programmable controller which employs a standard microprocessor. This is distinguished from prior attempts which essentially programmed a microprocessor for a control function. In those systems, all of the components were standard shelf items that are put together in known form to produce a control function under the auspices of a complex software program. This is the antithesis of the present invention, wherein a standard microprocessor is a component, which is used with additional circuitry to produce a total programmable controller that requires a minimum of software and still produces desired control functions necessary for controlling even complex machinery and systems.

SUMMARY OF THE INVENTION

In accordance with the present invention, there is provided a programmable controller comprising a microprocessor having output address terminals and input/output bi-directional data terminals wherein the address terminals, in accordance with normal practice, have a nominal high order impedance. There is provided a plurality of output address bus lines having an integrated circuit for connecting the bus lines to the address terminals of the microprocessor. In accordance with this aspect of the invention, the output bus terminals of the integrated circuit connecting means have a low order impedance with a value less than about 1% of the high order impedance of the microprocessor address terminals. In this manner, the normal address lines extending throughout the controller system have a lesser tendency to be affected by extraneous fields and electromagnetic noise.

In accordance with another aspect of the present invention, there is provided a programmable controller using a microprocessor having a plurality of bi-directional data terminals and a plurality of address terminals upon which binary coded addresses appear, data lines for receiving a byte of data having a number of bits corresponding to the number of data terminals, a first logic network for selecting one of said bits of a byte on said data lines and a second logic network for applying said selected bit to a selected one of said data terminals. In this manner, a byte of information can be converted to a bit for internal processing by the microprocessor. Consequently, a single bit of information from an eight bit word or byte can be processed by a single location in the microprocessor. Standard logic functions can be performed without complex masking or shifting. For instance, if bit No. 5 of one eight bit word or byte is to be ANDed with bit No. 2 of another eight bit word, the fifth bit of the first word can be externally shifted to a selected data terminal and then loaded into the accumulator of the microprocessor. Thereafter, the second bit of the next word can be shifted to the same data terminal and ANDed with the accumulated information. The output on the selected single line is then directed to an addressed position, either in memory or at an output terminal. This inventive aspect provides an arrangement whereby bit information can be processed by the microprocessor even though the microprocessor has been expanded to include several bi-directional data terminals. The expansion of microprocessors to include several data lines is considered an advance and is an advance when processing large words, such as eight bit or sixteen bit words. However, this capability is a distinct hinderance when attempting to logic function two individual terminals of the system. By using the present invention, this disadvantage of an expanded, larger capability microprocessor is overcome by selecting one bi-directional data terminal as a single bit processor. In this fashion, the internal accumulator is, in effect, a one bit accumulator for bit processing.

In accordance with another aspect of the present invention, there is provided a programmable controller of the type using a standard microprocessor which includes means for providing a binary status code on the data terminals indicative of the status of the machine cycle to be processed by the microprocessor. In accordance with this aspect of the invention, a logic decoder is used for producing a selected signal output in response to the logic signals on selected address terminals and in the binary status code on the data terminals. In other words, the status code created at the beginning of a machine cycle is read and compared with certain addresses to produce a signal. The created signal can be used internally of the controller for hardwired functions. The provision of an internal circuit which is controlled by the status code of a microprocessor together with a selected address to produce a hardwired external signal which can perform a variety of logic functions during the normal operation of the programmable controller is not available on other microprocessor or control systems.

In accordance with a further aspect of the present invention, there is provided a programmable controller including a microprocessor and using the binary status code on the data terminals indicative of the status of a machine cycle to be processed by the microprocessor. In this system, there is provided a means responsive to the binary status code for latching the address lines to a logic true condition in the more significant bits of the address lines. In this manner, when processing information based upon the status code, the more significant address lines are connected to high level locations in external memory circuits. These memory locations are generally unused locations or little used locations and do not require continuous writing and rewriting which may affect the actual program steps stored in memory. The program is generally written in lower level memory addresses. This address increasing arrangement is used to assure that writing of random information into memory during certain functions of the programmable controller is at the seldom used high address levels.

In accordance with another aspect of the present invention, there is provided a manner by which the microprocessor can be shifted into the HOLD state by a software command. This is accomplished by providing a hardwired circuit responsive to one data line of the microprocessor and a selected address terminal of the microprocessor. In this manner, a HOLD command can be inserted at any software position for debugging the programmable controller without placing the microprocessor in a HALT state which is not desired and difficult to vacate.

In accordance with another aspect of the present invention, the programmable controller is provided with a real time clock for producing an output pulse for shifting the controller to a subroutine at a preselected time interval. A logic decoding means produces a selected signal in response to the logic at selected ones of the address terminals and the logic in the binary status code which appears at the data terminals. Means are provided for disabling the real time clock upon production of this selected signal. In this manner, the real time clock may be disabled by a software command by using the binary status code appearing at the first of the machine cycle in a microprocessor.

In accordance with another aspect of the present invention, there is provided a programmable controller using a microprocessor. The microprocessor includes the standard actuatable terminal means for shifting the microprocessor from a program being processed to a selected subroutine program at a memory location having a binary coded address received by the microprocessor at the data terminals. In this improved programmable controller system, there is provided a plurality of input devices each of which has an assigned subroutine with a given memory address code for processing by the microprocessor when each of the input devices is actuated, a first set of data lines connected to the data terminals, a second set of data lines connected to the external devices, data transfer means interconnecting the first and second sets of data lines, means for creating an INTERRUPT signal upon actuation of one of the input devices, interrupt means responsive to said INTERRUPT signal for actuating the actuatable terminal means, isolation means responsive to the INTERRUPT signal for isolating the second set of data lines from the first set of data lines, and decoding means for identifying the actuated input device and for producing a selected partial memory address code corresponding thereto. This partial address code has fewer bits than a full memory address for a stored subroutine. There is also provided address input means for applying the selected partial memory address code and a fixed binary code to the first set of data lines for selection of a subroutine corresponding to the actuated input device. In accordance with this aspect of the invention, a partial address is created during a selected interrupt cycle. This partial address is combined with a fixed binary address code to locate the memory address of the subroutine to be processed for a selected interrupt condition or call. Consequently, a very minor code can be used for determining the location of the subroutine corresponding to various predetermined interrupt requests.

In accordance with another aspect of the present invention, there is provided an external means for storing a number of separate and distinct memory addresses corresponding to external interrupt request inputs. When one of the external interrupt request inputs is actuated, the microprocessor chip is shifted into a preselected priority interrupt level. Thereafter, a separate and distinct memory address is applied to the data bus for location of the subroutine to be processed for the actuated external interrupt request. In this manner, a large number of separate interrupts can be used without requiring complex circuits. By using this aspect of the invention, a selected one of a small number of interrupt levels can be used to accommodate a large number of external interrupt requests. After actuation, a binary coded call to a given subroutine is directed through data bus to the microprocessor. This call includes a memory stored subroutine, without employing the normal hardware selected restart call of a subroutine used in a standard microprocessor, such as an Intel 8080 unit. Indeed, the restart subroutine selecting circuit can be deactuated when the selected one of the interrupt levels is actuated to process a large number of add-on interrupt requests. This interrupt expansion at a selected priority level provides a simple means for using interrupt processing instead of repetitive review of external conditions by the executive program.

Still further aspects of the present invention will be appreciated from a consideration of the preferred embodiment of the present invention taken together with the description of the embodiments and the components and advantages relating to the various features of the preferred embodiment.

The primary object of the present invention is the provision of a programmable controller, which programmable controller can employ a standard microprocessor without requiring the complex software generally associated with microprocessors.

Another object of the present invention is the provision of a programmable controller, as defined above, which controller employs external circuitry for reducing the software requirements of the microprocessor in controlling a machine or system.

Yet another object of the present invention is the provision of a programmable controller, as defined above, which controller includes an arrangement for reducing the impedance of external conductors used for addressing various external components.

Another object of the present invention is the provision of a programmable controller, as defined above, which controller utilizes the binary status code of a standard microprocessor for developing hardwired signals to process information in the controller.

Another object of the present invention is the provision of a programmable controller, as described above, which controller can shift from a byte mode of operation to a bit mode of operation for individual processing steps.

Still a further object of the present invention is the provision of a programmable controller as defined above, which controller provides an arrangement for software addressing of specific signals, such as a real time clock inhibit instruction.

Still a further object of the present invention is the provision of a programmable controller, as defined above, which programmable controller includes an arrangement for substantial expansion of the interrupt capabilities generally associated with the microprocessor.

BRIEF DESCRIPTION OF DRAWINGS

The above objects and advantages will become apparent from the following description taken together with the accompanying drawings in which:

FIG. 1 is a schematic view setting forth a preferred embodiment of the invention and various modules employed therein;

FIG. 2 is a status chart indicating the data line status coding at the status conditions of each machine cycle;

FIGS. 2A, 2B and 2C are address coding used for two input/output addresses and a memory address, respectively;

FIG. 3 is a pulse chart for timing functions of the standard 8080 Intel microprocessor as adapted for use in the preferred embodiment of the invention;

FIG. 4 is a composite view made up of separate and distinct sections labeled FIGS. 4A, 4B, 4C, which sections are to be taken together and are jointly referred to in the specification as FIG. 4, and illustrating the central processing module of the preferred embodiment of the present invention and employing a major portion of the inventive features of the present invention;

FIG. 5 is a schematic logic diagram illustrating the HOLD REQUEST function of the preferred embodiment, together with an abbreviated subroutine which may be employed therewith;

FIG. 6 is a schematic logic diagram illustrating an expansion module for expanding the interrupt capability of the programmable controller;

FIG. 6A is a schematic wiring diagram illustrating certain primary features of the diagram illustrated in FIG. 6 and combining certain related subject matter employed in the central processing module illustrated in FIG. 4;

FIG. 7 is a schematic wiring diagram illustrating a PROM module employed in the preferred embodiment of the present invention;

FIG. 8 is a schematic diagram illustrating a RAM module of the type contemplated for use in the preferred embodiment of the present invention;

FIG. 9 is a logic diagram showing the features employed in a byte module and certain circuitry used for converting a byte module to a bit output unit;

FIG. 10 is a schematic logic diagram showing a bit input/output module driver for addressing several external input and/or output terminals;

FIG. 11 is a single input/output module of the type addressed by the module shown in FIG. 10 and as contemplated in the preferred embodiment of the present invention;

FIG. 11A is a schematic diagram showing the transceiver function employed in the preferred embodiment of the present invention and in the circuit shown in FIG. 11;

FIG. 12 is a schematic view in representative program of a simple logic function which is to be programmed in a byte mode;

FIG. 13 is a simplified program to perform the function of the program shown in FIG. 12 but when the bit mode of operation is employed in the preferred embodiment of the present invention;

FIG. 14 is a schematic illustration of the circuitry employed in FIG. 4 for converting to a bit mode of operation on input to the microprocessor with certain modifications for purposes of explanation;

FIG. 15 is a schematic view illustrating conversion of an output circuit to accept a single bit of information and similar to the bit circuit illustrated in FIG. 9;

FIG. 16 illustrates a module for creating an interrupt condition to read external switch conditions to avoid continuous processing of these switches during the normal operation of programmable controllers;

FIG. 17 is a simplified view showing one feature from FIG. 4 used in the INTERRUPT processing mode;

FIG. 17A is a chart indicating the restart code appearing on the data lines after interrupt conditions have been acknowledged by the microprocessor;

FIG. 18 is a simplified view showing one gate employed during the INTERRUPT feature of the circuitry shown in FIG. 4;

FIG. 19 is a simple program employed in one of the INTERRUPT states of the microprocessor shown in FIG. 4; and,

FIG. 20 is a combined logic view and output graph for the device employed in the preferred embodiment of the invention to create hardwired signals in response to the binary status code appearing at the initial portion of the machine cycle in the microprocessor employed in the programmable controller. de

GENERAL SYSTEM

Referring now to the drawings wherein the showings are for the purpose of illustrating the preferred embodiment of the invention and not for the purpose of limiting same, FIG. 1 shows a programmable controller A for controlling machines, processes and other systems in response to input information from inputs and existing conditions or other parameters. The inputs, conditions and parameters are directed to the controller A from various external terminals and locations which are capable of providing binary information as single bit or multiple bits, i.e. bytes. These external terminals may be switches, decoded thumbwheels, lights, decoded analog data and binary coded conditions. In accordance with normal practice the controller includes memory locations and is processed in accordance with a program stored as a plurality of steps or instructions in such system memory. Certain random access memories are provided for storing intermediate information or data. This memory can also be used for some program storage although a program read only memory is generally used for storage of the program information or steps.

As illustrated in FIG. 1, programmable controller A is a digital processing system including a plurality of separate and distinct plug-in modules interconnected by a plurality of control lines, which are generally in a motherboard connecting system, except for remote input/output modules. The basic modules and control lines therefor are schematically illustrated in FIG. 1 wherein a central processing unit module (CPU) 10 or module CP711 employs a standard microprocessor as its central control unit. The central processing unit is shown in FIG. 4. This microprocessor is a known MOS integrated circuit chip which includes internal registers, counters, pointers and associated logic circuitry well known in the art. The microprocessor, which is shown in more detail in FIG. 4, has a number of output address terminals, a number of bi-directional data terminals, means for setting the chip into various known states and means for providing a status code on the data lines at the start of each separate command. Although a variety of microprocessors having these standard capabilities could be used, the preferred embodiment of the present invention involves the use of an Intel 8080 microprocessor which has sixteen address terminals and eight bi-directional data terminals. The controller A incorporates the various inventions relating to the use of a microprocessor for processing input and output information to control a preprogrammed series of events of a machine, process, etc. The input information in the preferred embodiment of the present invention is digital information both at the input and output; however, converters for conversion between analog and digital could be used to interface between the system shown in FIG. 1 and various analog inputs and/or outputs. The CPU module 10 is communicated with the other modules to process input and output information on lines D.sub.0 -D.sub.7. A brief description of the separate modules will be sufficient to illustrate their intended use with the CPU module 10 and the overall operation of programmable controller A.

To initially program and debug the controller A, there is provided a direct access module 20 which takes over control of several control lines connected to CPU module 10. Thus, it is possible to directly program the memories in controller or system A by an external device, such as a schematically represented digital computer 22. In the illustrated embodiment, the computer is connected to direct access module 20 by schematically represented lines 24. When a HOLD REQUEST signal is directed from module 20 to CPU module 10, computer 22, or other external control devices, obtains control over the address lines, the input designation line DBINP, the READ/WRITE line, and the D.sub.0 -D.sub.7 data lines, and other lines shown by the arrows in FIG. 1. When this happens, the CPU module is essentially disconnected from the rest of the controller and computer 22 can load memories, i.e. to program the controller, and actually operate the controller, as in debugging and troubleshooting. The direct access module is used to load all memories of system A with the desired logic, set inputs and outputs to the desired conditions, selectively read the contents of the memory or the various input and output circuits, reset controller A, provide intermediate stop and run operations for the controller A, and check the status of all the memory positions and registers of controller A including the registers of the microprocessor MP in CPU module 10. The direct access module is used for flow of data to and from system A under the control of an external unit such as a computer, external tape reading devices, teletype, etc.

In order to accomplish transfer of control to module 20, microprocessor MP of module 10 is placed into the HOLD state, which will be explained later. The external programmer, such as a computer or tape reader, sends data to and from controller A through data lines D.sub.0 -D.sub.7 and the location of the data is controlled by address lines A.sub.0 -A.sub.15. By placing the microprocessor of module 10 in the HOLD condition or state, instead of the HALT state, the functions of the microprocessor can be taken over by a programmed signal or request from module 20 in a manner to be explained in connection with FIG. 5. Also, control by the microprocessor can be reestablished by a simple command without complex programming required when the microprocessor shifts to a HALT state. It is not necessary to provide an initiation pulse for again obtaining control over system A by module 10. As soon as the HOLD condition is released, the CPU module 10 again assumes control over the lines illustrated in FIG. 1. This provides a convenient manner for giving direct access to the controller A for programming and debugging and then for releasing the controller for control, which is isolated from module 20.

As will be explained later, CPU module 10 may be interrupted by external conditions to interrupt the program and shift control over the microprocessor to a memory stored subroutine. This is a standard INTERRUPT feature of most eight bit microprocessors; however, in accordance with one aspect of the invention, controller A includes a plurality of separate interrupt expansion modules, three of which are schematically illustrated as interrupt expansion modules I, II, III, or 30, 32 and 34, respectively. Module 32 is schematically illustrated in more detail in FIG. 6, which showing is representative of an interrupt expansion module connected to and controlled through the first interrupt expansion module 30. The difference between the first expansion module and subsequent expansion modules is that the enabled terminal E of module 30 is tied to a logic 1, which in practice is five volts throughout controller or system A. The subsequent modules 32, 34, and any additional modules, include an input enable logic at terminal E which is controlled by the condition of preceding interrupt expansion modules. This connection arrangement provides a priority level system wherein the interrupt inputs of module 30 have a priority over the interrupt inputs of subsequent interconnected expansion modules 32, 34, etc. In each of the interrupt expansion modules, in the illustrated embodiment, there are provided sixteen separate interrupt inputs which are schematically illustrated as a plurality of single pole, grounded switches 30a-30x, 32a-32x and 34a-34x. These interrupt inputs can be logic inputs which contain information requesting a shift of module 10 into the interrupt state for processing of a selected subroutine. Thus, actuation of an input will cause the microprocessor MP of module 10 to interrupt and shift into the subroutine which is to be processed. Then control is returned to the executive program of controller or system A. By using this interrupt expansion arrangement, a great number of selectable subroutines can be provided and called by providing an interrupt request at one of the several schematically represented logic inputs. The executive program of system A requires the processing of a "look" command or sequence for those data or logic inputs and outputs under interrupt control only when an interrupt request is received indicating that a certain terminal or terminals should be scanned and/or updated.

When an interrupt request is received by the CPU module from a terminal of an expansion module, the microprocessor shifts to an interrupt state and data from the expansion module selects or "calls" a given subroutine by an address on lines D.sub.0 -D.sub.7. Then the calling input or outputs will be processed according to the desired and requested interrupt subroutine. Thereafter the subroutine will shift command back to the main program. As will become more apparent when discussing in detail the interrupt features of the present invention, the various interrupt requests will have a certain, preselected priority order which will determine whether or not a called subroutine is interrupted by a subsequently called subroutine. If there is no interrupt request, then the executive program is processed repeatedly without processing the interrupt subroutines. Consequently, the subroutines are called and processed only when needed. The number of expansion terminals of modules 30-34 can be increased to larger values. The only practical limitations are the memory capacity which can be expanded to various capacities and the time available for processing interrupt subroutines.

By providing the interrupt expansion modules, the microprocessor of system or controller A can be interrupted a substantially greater number of times than is available on known microprocessors. Thus, the normal microprocessor interrupt concept of priority evaluation and jumping to a subroutine called by a particular interrupt can be used for many separate inputs or conditions. This saves programming time and allows the use of subroutines which may be stored into the memories of system A for only periodic use. The versatility of system A is thereby greatly expanded while still using a readily available, relatively inexpensive microprocessor.

Module 40 which will be discussed in more detail with respect to FIG. 7 is a programmable read only memory (PROM) module. The PROM module is used in system A for the purpose of retaining permanent logic at various addressed locations determined by the logic on lines A.sub.0 -A.sub.15. In practice, the executive program and the various subroutines are generally, permanently stored at various addressed locations within PROM module 40. This memory module is used for long term or permanent storage of the program and employs MOS memory chips that are erasable upon exposure to ultra violet light and are programmable by means, such as computer 22 or a tape reading device through direct access module 20. In practice, the PROM module has a capacity of 4,096 eight bit words. The number of words available in the read only memory module 40 may vary according to the desired capacity of system A. In practice, the memory technology used in module 40 is static silicon gate MOS erasable and electrically reprogrammable read only memory chips.

During normal operation of controller A, data is directed from module 40 on lines D.sub.0 -D.sub.7. The parallel transmission of binary data on these lines provides an eight bit word which is addressed by the logic on lines A.sub.0 -A.sub.15. In FIG. 1, it is indicated that the data lines D.sub.0 -D.sub.7 are bi-directional at PROM module 40. This is only for the purpose of loading the memory during the programming and debugging operation through direct access module 20. The memory chips of module 40, in practice, are not erasable under normal circumstances; therefore, continuous application of power to this particular module is not required for the purpose of retaining the stored logic. Of course, a variety of different types of read only memories could be used for storing the program information for system A without departing from the intended spirit and scope of the invention as schematically illustrated in FIG. 1.

Referring now more particularly to the random access memory (RAM) module 50, this memory module can be updated periodically during use of system or controller A. Various random access memory modules could be used in system A; however, the basic features of the ROM contemplated in the illustrated embodiment of the invention is shown somewhat in detail in FIG. 8 and will be described later. The random access memory module 50 includes a somewhat standard parity checking circuit 52 schematically illustrated in FIG. 1. In this manner, information to and from the random access memory chips will be checked for parity in accordance with standard practice to determine an error. In practice, module 50 employs random access solid state memory chips with a capacity of 4,096 eight bit words. In this module, an external battery supply is used for retaining the information or data at the several locations on module 50, until the information or data is changed intentionally by operation of controller A in a manner to be described later. The semiconductor memory technology used in module 50 is static N-MOS random access technology. The module 50 is addressable for both reading and writing by the logic on lines A.sub.0 -A.sub.15, which address selects the desired address of the RAM module and directs the eight bit word from that location in parallel onto data lines D.sub.0 -D.sub.7. The DBINP logic and the R/W logic determines whether or not the data is being inserted or read from module 50. Operation of a random access memory in conjunction with a microprocessor or other type of digital programmable controller is known and various systems could be employed.

In addition to the PROM module 40 and the RAM module 50, it is possible to provide additional memory which may be in the form of PROM and/or RAM. The parity circuit 52, in practice, is of the type which provides a nine bit word and circuitry necessary to generate and check one bit of odd parity for each word. When an eight bit word is written into the memory, parity generator tests the word and generates a ninth bit which will be either a logic 1 or a logic 0 such that the resulting nine bit word will always contain an odd number of logic 1 conditions. When a word is read from the memory, parity check circuitry checks to be certain that the word still contains an odd number of logic 1 signals. If the check circuit encounters an even number of logic 1 signals, the processor is interrupted in accordance with standard microprocessor practice. Other parity checking circuits or systems could be employed so that errors in the accessed information can be detected.

Programmable controller A employs a standard microprocessor which has eight data terminals and sixteen address terminals. In this manner, an eight bit word or byte can be serviced simultaneously by the microprocessor. This capacity provides distinct advantages with respect to a reading of several inputs and writing into several outputs. However, the logic processing of a single bit in an eight bit word such as ANDing, ORing, or INVERTing, presents substantial difficulty. A substantial amount of software programming is required to logic process a single bit of an eight bit word or byte. This requires memory space and extensive programming. This disadvantage is even more serious in controlling machines and process because a great number of simple logic functions are required. In duplicating a standard relay logic diagram or ladder diagram much of the processing is logic processing of single bit information. Thus, to process this single bit information with an eight bit data capacity drastically increases program storage space and control complexity. For instance, when a single input is to be compared with a single output, the use of eight bit input information is a disadvantage. When memory addresses or binary coded data is being transferred or processed, then the large number of data lines is beneficial. To overcome logic processing disadvantages caused by increasing the capacity of the microprocessor, the present invention provides circuitry for obtaining one bit information which can be logic processed on a preselected data line, such as line D.sub.0, in a manner similar to a single bit data processor. Thus, it is a relatively simple process to AND, OR and INVERT logic at various inputs and outputs to provide logic functions which are rendered more complex with the advent of the expanded eight bit microprocessor. To illustrate the use of both the byte and bit modes of operation, there is illustrated a byte input and output module 60 and a bit input and output module 70. Module 60 has a series of input words each of which has eight data bits. These words are created by various inputs, such as thumbwheel network 62, which is illustrated in FIG. 9 as thumbwheel units 62a, 62b. In a like manner, the output words from module 60 are illustrated as display signals in a display unit 64, which in FIG. 9 is illustrated as two output or display units 64a, 64b. Thus, module 60 is used to input and output a byte of information as an eight bit word into various