Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
3930233
Morley , ; et al.
December 30, 1975
Title
Data transfer and manipulation apparatus for industrial computer controllers
Abstract
A programming panel incorporates means to manually command an industrial computer controller to perform non-relay logic data manipulation operations on selected circuit lines. The industrial computer controller is provided with a plurality of registers capable of storing data and with an executive program that incorporates various data manipulation function modules. Modules are disclosed that move data from a table of registers to another register, that move data from one register to a table of other registers, that move data from one table of registers to another table of registers, that stack data into a table of registers from another register on a first-in/first-out basis, and that remove data stacked in a table of registers to another register on a first-in/first-out basis. Another module is disclosed that drives a programmable printer as disclosed in U.S. patent application Ser. No. 443,329, without appreciably affecting the overall sweep time of the industrial computer controller.
Inventors:
Morley; Richard E.
(Mason,
NH
)
, Schelberg, Jr.; Charles C.
(Milford,
NH
)
Appl. No.:
460081
Filed:
April 11, 1974
Current U.S. Class:
703/14
Field of Search:
340/172.5
U.S. Patent Documents
3686639
August 1972
Fletcher
3829842
August 1974
Langdon et al.
Primary Examiner:
Botz; Eugene G.
Attorney, Agent or Firm:
Ware; Robert H.
Claims
Having described the invention, what is claimed is:
1. A programming panel for programming a computer controller to perform data manipulation operations, the computer controller having stored therein an executive program for communicating with the programming panel and for simulating an electrical ladder-type control circuit having a plurality of circuit lines, a plurality of spaces in each circuit line, a first of said spaces providing for the inclusion of one type of a plurality of types of electrical elements comprising elements the condition of which is a function of a referenced condition, a second of said spaces providing for the inclusion of a first character set indicating a first memory area within the controller where data may be retrieved, a third of said spaces providing for the inclusion of a second character set indicating the type of data manipulation to be performed on said retrieved data, a fourth of said spaces providing for the inclusion of a third character set indicating a second memory area within the controller where data may be deposited, at least one of said characters also indicating a third memory area within the controller where a number is stored related to the amount of data placed within said second area, each of said circuit lines further providing circuit line condition specifying means controlled in accordance with the electrical condition of the electrical element within said first space, the executive program simulating the specified electrical element within said first space, retrieving data in said first memory area, performing the data manipulation specified in said third space, depositing data in said second memory area, and updating the number in said third memory area, said programming panel comprising:
A. manually operable means for specifying to the computer controller one of a plurality of circuit lines of the simulated ladder-type control circuit;
B. manually operable means for specifying to the computer controller one type of a plurality of types of electrical elements;
C. manually operable means for specifying to the computer controller a reference to the circuit line condition specifying means in the simulated ladder-type control circuit which is to control the condition of the said specified type of electrical element;
D. manually operable means for specifying to the computer controller said first space in the specified circuit line of the simulated ladder-type control circuit into which the specified type of electrical element is to be entered;
E. manually operable means for specifying to the computer controller said second space in the specified circuit line of the simulated ladder-type control circuit into which said first character set specifying said first memory area is to be entered;
F. manually operable means for specifying to the computer controller said third space in the specified circuit line of the simulated ladder-type control circuit into which said second character set specifying said desired data manipulation is to be entered; and
G. manually operable means for specifying to the computer controller said fourth space in the specified circuit line of the simulated ladder-type control circuit into which said third character set specifying said second memory area is to be entered.
2. A programming panel, as defined in claim 1, further comprising a switch mounted on the programming panel for specifying a data manipulation function.
3. A programming panel as defined in claim 1 further comprising manually operable means for generating said first, second, and third character sets.
4. A programming panel as defined in claim 1, wherein there is provided the same predetermined fixed number of spaces in each circuit line of the simulated ladder-type control circuit, a first space providing for the inclusion of one electrical element, a second space providing for the inclusion of said first character set, a third space providing for the inclusion of said second character set, and a fourth space providing for the inclusion of said third character set, and wherein said manually operable means for specifying to the computer controller one of the spaces in a specified circuit line comprises a plurality of switches mounted on the programming panel, each of said switches corresponding to one of the predetermined fixed number of spaces.
5. A programming panel as defined in claim 1, further comprising:
A. readout means for indicating which type of electrical element has been entered in a specified space in a circuit line;
B. readout means for indicating in which space in the specified circuit line of the simulated ladder-type control circuit the specified type of electrical element has been entered;
C. readout means for indicating to what condition the electrical element entered in the specified space in the specified line is referenced;
D. readout means for indicating in which space in the specified circuit line of the simulated ladder-type control circuit said first character set has been entered;
E. readout means for indicating said first character set;
F. readout means for indicating in which space in the specified circuit line of the simulated ladder-type control circuit said second character set has been entered.
G. readout means for indicating said second character set;
H. readout means for indicating in which space in the specified circuit line of the simulated ladder-type control circuit said third character set has been entered; and
I. readout means for indicating said third character set.
6. A programming panel as defined in claim 1, further comprising a readout means for indicating errors in information transferred to said executive program from said manually operable means.
7. A programming panel as defined in claim 1, wherein a plurality of types of electrical elements specifiable by said manually operable means comprise normally open and normally closed switches and wherein said manually operable means for specifying to the computer controller one type of a plurality of types of electrical elements comprises:
1. A first switch mounted on the programming panel specifying a normally open switch;
2. A second switch mounted on the programming panel for specifying a normally closed switch.
8. A programming panel as defined in claim 1, wherein said first, second and third character sets are manually specified by switches mounted on the programming panel.
9. A programming panel as defined in claim 8, wherein said set of switches also specify the specifying means in the simulated ladder-control circuit which is to control the condition of said specified type of electrical element.
10. A programming panel as defined in claim 1, wherein said second character set represents the transfer of data from a first portion of the central processor to a second portion of the central processor.
11. A programming panel as defined in claim 10, wherein said first portion is one register within the central processor and said second portion is a table of registers in the central processor.
12. A programming panel as defined in claim 11, wherein the size of said table is defined by said second character set.
13. A programming panel as defined in claim 10, wherein said first portion is a table of registers and said second portion is one data register.
14. A programming panel as defined in claim 13, wherein the size of said table is defined by said second character set.
15. A programming panel as defined in claim 10, wherein said first portion is a first table of registers and said second portion is a second table of registers.
16. A programming panel as defined in claim 15, wherein said first table and said second table are equal in size and are determined by said second character set.
17. A programming panel as defined in claim 1, wherein said second character set indicates the transfer of data from one data register to a table of registers in a first-in/first-out basis.
18. A programming panel as defined in claim 17, wherein the size of said table is determined by said second character set.
19. A programming panel as defined in claim 1, wherein said second character set indicates the removal of data from a table of registers to one data register on a first-in/first-out basis.
20. A programming panel as defined in claim 19, wherein the size of said table is determined by said second character set.
21. A programming panel as defined in claim 1, wherein said second character set indicates the transfer of data from a first portion of the central processor to a second portion of the central processor; whereby a programmable printer intercommunicating with the computer controller system is able to display at least a portion of said data transferred to said second area.
22. A programming panel as defined in claim 21, wherein said computer controller further comprises a background program time sharing with said executive program, for the generation of information to be transferred to said programmable printer.
23. A programming panel as defined in claim 21; wherein said second character set indicates a request to the programmable printer to print pre-stored messages.
24. A programming panel as defined in claim 23, wherein said pre-stored messages command the retrieval of data from said first portion of the central processor.
25. A programming panel as defined in claim 21, wherein said second character set indicates a request for the programmable printer to print variable data generated by the computer controller system.
26. A programming panel as defined in claim 1, wherein a predetermined number of said circuit lines are dedicated to the performance of data manipulation operations.
27. A programming panel for programming a computer controller to perform data transfer and data manipulation operations, the computer controller having stored therein an executive program for communicating with the programming panel and for simulating an electrical ladder-type control circuit having a plurality of circuit lines, a plurality of spaces in each circuit line, a first of said spaces providing for the inclusion of a first character set indicating a first memory area within the controller where data may be retrieved, a second of said spaces providing for the inclusion of a second character set indicating the type of data transfer and manipulation to be performed on said retrieved data, a third of said spaces providing for the inclusion of a third character set indicating a second memory area within the controller where data may be deposited, at least one of said character sets also indicating a third area within the controller where a number is stored related to the amount of data placed within said second area, the executive program retrieving data in said first memory area, performing the data transfer and manipulation specified in said second space, depositing data in said second memory area, and up-dating the number in said third memory area, said programming panel comprising:
A. manually operable means for specifying to the computer controller said first space in the specified circuit line of the simulated ladder-type control circuit into which said first character set specifying said first memory area is to be entered;
B. manually operable means for specifying to the computer controller said second space in the specified circuit line of the simulated ladder-type control circuit into which said second character set specifying said desired data manipulation is to be entered; and
C. manually operable means for specifying to the computer controller said third space in the specified circuit line of the simulated ladder-type control circuit into which said third character set specifying said second memory area is to be entered.
28. A programming panel as defined in claim 27, further comprising manually operable means for specifying said first, second, and third character sets.
29. A programming panel as defined in claim 27 wherein said circuit lines further provide circuit line condition specifying means controlled in accordance with the state of the data transfer and manipulation operation.
30. A programming panel as defined in claim 27, wherein said second character set indicates a data transfer and manipulation function of transferral of data from said first memory area to said second memory area.
31. A programming panel as defined in claim 30, wherein said second character set indicates the size of said first memory area and said second memory area.
32. A programming panel as defined in claim 27, wherein said first memory area comprises a multiplicity of registers and said second memory area comprises one register, and where said second character set indicates the data transfer and manipulation operation of sequentially transferring data from the registers of said first memory area into the register of said second memory area.
33. A programming panel as defined in claim 27, wherein said first memory area comprises one register and said second memory area comprises a table of registers, and where said second character set indicates the data transfer and manipulation operation of sequentially transferring data from the register of said first memory area into the table of registers of said second memory area.
34. A programming panel as defined in claim 27, wherein said first memory area comprises a multiplicity of registers and said second memory area comprises a second multiplicity of registers, and where said second character set indicates the data transfer and manipulation operation of sequentially transferring data from said first set of registers of said first memory area into said second set of registers of said second memory area.
35. A programming panel as defined in claim 34, wherein said first set of registers is equal in number to said second set of registers.
36. A programming panel as defined in claim 27, wherein said second character set indicates a data transfer and manipulation function of transferral of information to an interconnected programmable printer.
37. A programming panel as defined in claim 36, wherein said computer controller further comprises a background program time sharing with said executive program, for the generation of information to be transferred to said programmable printer.
38. A programming panel as defined in claim 36, wherein said second character set indicates a request to the programmable printer to print pre-stored messages.
39. A programming panel as defined in claim 38, wherein said pre-stored messages command the retrieval of data from said second memory area.
40. A programming panel as defined in claim 27, wherein a predetermined number of said circuit lines are dedicated to the performance of data transfer and manipulation operations.
Description
BACKGROUND OF THE INVENTION
The use of industrial computer controllers to control industrial processes such as machine tools, textile machinery, packaging machines, and product testing, has undergone rapid development within the last several years. Industrial computer controllers, such as Modicon Model 084, manufactured by Modicon Corporation, Andover, Massachusetts, have been very successful in simulating relay type logic commonly encountered in the control of industrial equipment. Such controllers simulate electric circuit lines comprising conventional electrical circuit elements preceding a relay coil which is energized when the elements are conditioned so that the circuit line conducts. These elements have commonly been a normally open switch, a normally closed switch, a normally open parallel switch, and a normally closed parallel switch. In addition, such industrial computer controllers, commonly referred to as "programmable controllers," include timing and counting simulating modules which may be placed in an electrical circuit line. When in such a line, a timing or counting module causes the coil within the electrical circuit line to conduct when a time or count has been obtained equal to a preselectable time or count.
It is therefore apparent that such programmable controllers do not provide readily accessible means to obtain data within the controller, nor do they provide a readily accessible means for manipulating data within the controller.
The present invention adds a new dimension to present-day programmable controllers by allowing such controllers to manipulate and transfer data within the controller to other regions of the controller for retrieval by an external device or for further manipulation and transfer by the controller. This data manipulation and transfer is performed by the computer controller during its updating of the electrical circuit lines and thus does not appreciably alter the response time of the controller.
The present invention allows the programmable controllers to perform various control functions previously unobtainable with such controllers, as well as allowing such controllers to generate information useful in various applications, such as machine monitoring, inventory control and malfunction signaling and alarming.
In addition, the present invention discloses a printer data transfer module which is compatible with programmable printers, such Modicon's programmable printer, manufactured by Modican Corporation, Andover, Massachusetts. When used in conjunction with such printers, this module allows a computer controller to initiate the printing of pre-stored messages within the printer, which in turn are able to obtain variable data from the computer controller via the same module. This printer module also allows the computer controller to retrieve and transfer pre-formated variable data from within the controller to the programmable printer wherein the variable data is printed in accordance with the selected format.
It is therefore apparent that a printer module, in conjunction with a programmable printer, not only allows a programmable controller to visually display various production monitoring information, including part counts, running time, and machine malfunctions, but also allows a controller to generate self-diagnostic messages within the programmable printer when various conditions occur within the controlled industrial equipment or process.
SUMMARY OF THE INVENTION
The present invention allows an industrial computer controller similar in theory to U.S. Pat. No. 3,686,639, entitled "Digital Computer-Industrial Controller System and Apparatus," to perform data manipulation and transfer functions. A general purpose digital computer or a digital computer as disclosed in U.S. Pat. Nos. 3,740,722 and 3,761,893 is utilized to perform the functions of data manipulation and transfer in addition to the functions of an industrial controller previously performed by logic timers and counters connected in a ladder-type electrical control circuit. The digital computer incorporates an executive program having modular portions for simulating the relay logic timers and counters, and additional modular portions for transferring and manipulating data within the digital computer. A special purpose control program as disclosed in U.S. Pat. No. 3,686,639, includes means for generating electrical circuit lines. These electrical circuit lines, by use of the data manipulation transfer portions of the executive program as well as a background program, may represent various data manipulation and data functions instead of relay-logic functions. A programming panel is utilized to enter the desired data transfer function within the digital computer for any of a number of electrical circuit lines. In addition to the programmable controller's connections to apparatus to be controlled, the controller is also connected to any peripheral device, such as a programmable printer, that is Used to accept transferred data from within the digital computer. Such a device may also be controlled by the computer controller.
The present invention utilizes the schematic electrical circuit ladder diagram disclosed in U.S. Pat. No. 3,686,639 to generate data manipulation and data transfer lines. In the preferred embodiment of the present invention, four nodes are utilized per electrical circuit line to generate one data transfer or data manipulation line. The first node of the circuit line comprises a normally opened or a normally closed electrically simulated switch. This switch, as disclosed in U.S. Pat. No. 3,686,639, is referenced to a coil of some other electrical circuit line in order to determine the state of that particular electrical element.
When the particular node is found by the digital computer to have a particular history, the remainder of that particular electrical circuit line is activated. In the preferred embodiment of the present invention, the third or C node contains the particular type of data manipulation or transfer function desired. The executive program performs the desired data transfer whereby the data is retrieved from one or more computer registers related to a number in the second or B node and deposits this data in one or more computer registers related to a number in the fourth of D node.
Some data transfer operations, due to the length of time involved in performing the operation, may not be completed by the digital computer the first time it ascertains that the A node of the particular electrical circuit line of the electrical ladder network has a proper history. However, since the executive program repeatedly runs through this network, the desired data transfer function is repeatedly acted upon until the entire set of data has been properly transferred to the desired destination register. Thus, if the printer data transfer function is desired, the executive program or foreground program of the digital computer repeatedly switches to a background computer program; i.e., the printer driver program, for a short period of time. This background program performs the desired data transfer with the computer controller. Using this foreground-background programming technique, the computer controller maintains continuous control of the apparatus to be controlled while also performing the desired data transfer to the programmable printer.
The output coil of the printer data transfer electrical circuit line is activated when the particular data transfer line has made a request for printing. This output coil remains on until the desired data has been printed by the programmable printer. Other data transfer functions, such as a data transfer from a table of registers to a single register, activates the output coil when the desired data has been completely transferred to the desired register.
OBJECTS OF THE INVENTION
It is therefore an object of the present invention to provide a data manipulation and transfer apparatus for industrial computer controllers that is capable of retrieving data, manipulating the retrieved data, and transferring the manipulated data to a deposit area.
It is another object of the present invention to provide a data manipulation and transfer apparatus for industrial computer controllers that is capable of being programmed by the controller's programmable panel by non-technical operators.
A further object of the present invention is to provide a data manipulation and transfer apparatus that will not appreciably affect the controlling operation of the industrial computer controller.
It is another object of the present invention to provide a data manipulation and transfer apparatus that is capable of transferring data in sequential fashion from a table of registers within the controller to a single register within the controller.
Another object of the present invention is to provide a data manipulation and transfer apparatus that is capable of transferring data in sequential fashion from one register within an industrial computer controller to a table of registers in the controller.
It is a further object of the present invention to provide a data manipulation and transfer apparatus that is able to store and retrieve data from a set of registers within the industrial computer controller in a first-in/first-out basis.
It is another object of the present invention to provide a data manipulation and transfer apparatus for industrial computer controllers that is capable of driving programmable printers in order to provide such printers with desired data generated by the computer controller, as well as initiating pre-stored message print-out within the programmable printer.
A further object of the present invention is to provide a data manipulation and transfer apparatus for industrial computer controllers that is easy to operate and troubleshoot.
Other objects will in part be obvious and will in part appear hereinafter.
THE DRAWINGS
FIG. 1 is a perspective diagrammatic view of a computer controller system according to the present invention.
FIG. 2 is a diagrammatic representation of a typical data transfer electrical circuit line generated by the computer controller system of FIG. 1.
FIG. 3 is a front view of a programming panel of the computer controller system of FIG. 1;
FIG. 4 is a schematic diagram of three registers utilized to store information relative to one electrical circuit line of the computer controller system of FIG. 1;
FIG. 5 is a flow chart of a portion of the executive program according to the invention, utilized by the computer controller system of FIG. 1;
FIG. 6 is a representation of the block diagrams used in FIGS. 5, 7, 12, 13, 14, 15, and 16;
FIG. 7 comprising FIGS. 7A, 7B, 7C, and 7D, is an overall flow chart of a "MOVE" subroutine used by the executive program of the computer controller system of FIG. 1;
FIG. 8 comprising FIGS. 8A, 8B, 8C, 8D, 8E, 8F and 8G is a set of diagrammatic representations of various "MOVE" data transfer electrical circuit lines generated by the computer controller system of FIG. 1 showing the manner in which data is transferred;
FIG. 9 is a diagrammatic representation of a printer data transfer electrical circuit line generated by the computer controller system of FIG. 1;
FIG. 10 is a diagrammatic representation of three input electrical circuit lines of the computer controller system of FIG. 1;
FIG. 11 is a diagram of an output register port of a computer controller system of FIG. 1, showing its inter-relationship with various inputs of a programmable printer;
FIG. 12 comprising FIGS. 12A and 12B is a flow chart of a non-relay logic printer data transfer line subroutine of the executive program of the computer controller system of FIG. 1;
FIG. 12C is a diagram showing how FIGS. 12A and 12B are put together to form FIG. 12;
FIG. 13 is a flow chart of a printer scheduler subroutine used by the computer controller system of FIG. 1;
FIG. 14 is a flow chart of a power-up subroutine of the executive program of the computer controller system of FIG. 1;
FIG. 15 comprising FIGS. 15A and 15B is a flow chart of a printer driver background subroutine of the computer controller system of FIG. 1;
FIG. 15C is a diagram showing how FIGS. 15A and 15B are put together to form FIG. 15; and
FIG. 16 comprising 16A, 16B, 16C, and 16D is a set of flow charts of the subroutines used by the printer driver background subroutine of the computer controller system of FIG. 1.
DETAILED DESCRIPTION
BASIC OPERATION
As can best be seen in FIG. 1, a computer controller system 30 incorporates a programming panel 32, a central processor 34, a power supply 36, an input/output housing 38, and input/output modules 40, 42, 44, and 46. External devices 48 are controlled by and can communicate with the controller system via cable 50 interconnected to housing 38. A cable 52 connects the programming panel 32 to the central processor 34, while cables 54 and 56 connect the central processor to the power supply 36
and input/output housing 38.
As disclosed in U.S. Pat. No. 3,686,639, entitled "Digital Computer-Industrial Controller System and Apparatus," a computer controller system is capable of controlling external devices by entering into the central processor 32 various electrical circuit lines that represent the manner in which the external devices are controlled by switches, timers and counters. As described in U.S. Pat. No. 3,686,639, these circuit lines cause a simulated relay coil to be energized when there is simulated electrical continuity between both ends of the electrical circuit line. The energization of the electrical circuit line relay coil may then be used to drive external devices or as a reference for simulated electrical elements in other electrical circuit lines.
The electrical circuit lines disclosed in U.S. Pat. No. 3,686,639 consists of four nodes with a coil following the lattermost node, thus when these simulated electrical elements close, continuity is obtained throughout the line. The central processor interprets this continuity by energizing the simulated relay coil. Similarly, when the desired time has been reached in a timer entered in an electrical circuit line, the relay coil is energized. Similar energization occurs when a counter is entered into an electrical circuit line and the number of counts recorded equals the preset count of the counter.
Thus it can be seen that the present-day computer controller systems are able to control external devices such as machine tools, chemical batch processing and conveyor systems, by use of logic lines that represent electrical devices such as normally open switches, normally closed switches, timers and counters. Those skilled in the art will realize that these logic lines represent a Boolean algebraic technique of generating logical AND functions and logical OR functions.
The present invention utilizes the techniques disclosed in U.S. Pat. No. 3,686,639 with regard to generation of logical electrical circuit lines and the control of external devices and electrical circuit elements in other electrical circuit lines by the energization of simulated electrical relay coils. More particularly, the present invention utilizes a central processor 34 that incorporates a small general purpose computer as described in U.S. Pat. No. 3,686,639 or a digital computer as described in U.S. Pat. Nos. 3,740,722 and 3,761,893. The central processor in the preferred embodiment incorporates a multiplicity of 16 bit registers for the receipt and transfer of information. In addition, the present invention uses the techniques disclosed in U.S. Pat. No. 3,686,639 with regard to generating electrical circuit lines within the central processor via a programming panel 32 as well as solving these lines by means of an executive program stored in the computer. Furthermore, the techniques described in U.S. Pat. No. 3,686,639 regarding the central processor's communication with an input/output housing and input/output modules are similarly incorporated in the present invention.
As can best be seen in FIG. 2, the present invention adds a new dimension to present-day computer controller systems by allowing some of the logical electrical circuit lines to represent data transfer and data manipulation lines that are capable of retrieving data from within the central processor, acting upon this data, and depositing this data in other regions of the central processor. Once the electrical circuit line representing a data transfer function is energized, the actual transfer of the data may be made in response to commands from an external device.
As seen in FIG. 2, an electrical circuit line 58 illustrating a data transfer function incorporates four positions or nodes 60, 62, 64 and 66 and one simulated relay coil 68. The A-node 60 of the data transfer line 58 may comprise a normally open switch 70 or a normally closed switch (not shown); the initial condition of either element being referenced to a relay coil of another electrical circuit line. The technique involved for generating such electrical elements and the use of a relay coil to reference the initial condition of that electrical element is fully described in U.S. Pat. No. 3,686,639.
The B-node 62 of the data transfer line contains a register number referring to a register within the central processor 34 where data may be retrieved. Depending on the type of data transfer function, as will be discussed more fully later, the register number contained in the B-node may refer to one register or a first register of several registers where data may be retrieved. It is therefore possible to retrieve data from a single register or sequentially from a table of registers found within the central processor.
The C-node 64 of the data transfer line 58 specifies the type of data transfer function that is to be performed by the computer controller system. The C-node consists of a four digit decimal number. The most significant digit of this number represents the type of transfer function chosen. Thus a 1 in the most significant digit represents a "MOVE" function while a 4 represents a "PRINTER" function (both to be described more fully later) with a programmable printer as described in U.S. patent application Ser. No. 443,329.
The second most significant digit of the number placed in the C-node, represents the sub-type of the data transfer function. More particularly, if a "MOVE" function is desired, the second most significant digit represents what particular type of data movement is desired. Table number 1 describes these various "MOVE" sub-types. Similarly if a "PRINTER" function is desired, the second most significant digit represents whether pre-stored messages are to be printed by the programmable printer or whether only variable data from within the central processor 34 is to be printed by the programmable printer. Table number 2 describes these various "PRINTER" sub-types.
Lastly, the two least significant digits of the number stored in the C-node represent parameters that need to be defined with regard to a particular data transfer function. Thus, with respect to a "MOVE" function the two least significant digits represent the length of the table of data to be moved. If a pre-stored message is to be printed by a "PRINTER" function, the two least significant digits represent a particular message within the programmable printer. If only variable data is to be printed, the two least significant digits specify the format to be utilized by the printer.
When a "MOVE" data transfer function is selected, the D-node 66 contains the register number which in turn holds a number equal to the number of data registers moved from the B-node.
TABLE NO. 1 ______________________________________ C-NODE MOVE SUB-TYPE ______________________________________ 10XX Moves one register from a table of registers into a single register every time the A-node closes. The registers are taken in sequence from the table. The data in the table is not destroyed by this process. The numbers in "XX" determine the size of the table. 11XX Moves data from one register in a table into a single register continuously at the rate of one register transfer per sweep cycle when the A-node is closed. The registers are taken in sequence from the table. The data stored in the table is not destroyed by this process. 12XX Moves data from a single register into a table of registers every time the A-node closes. The table of registers is loaded in sequence. 13XX Moves data from a single register into a table of registers at a rate of one regis- ter per sweep cycle when the A-node is closed. The table of registers is loaded in sequence.
14XX Moves one register from a table of registers to another table of registers when the A-node closes. The registers are moved in sequence. 15XX "First in" side of a first in/first out data stack. The data is loaded into the lowest available (highest register num- ber) register position. If, for example, the stack is empty, the data from one register is loaded into the bottom regis- ter of the stack. The length of the stack equals the numbers in "XX". 16XX "First out" side of a first in/first out data stack. The data unloads from the bottom of the stack. Each time the bottom stack unloads data, the remaining data registers slide down one register. 17XX Moves one register from a table of regis- ters to another table of registers at a rate of one register transfer per sweep cycle when the A-node is closed. The table of registers is loaded in sequence. The two least significant digits specify the length of the table (0-99). ______________________________________
TABLE NO. 2 ______________________________________ C-NODE PRINTER SUB-TYPE ______________________________________ 40XX Causes the printing of numeric variable data only. The two least significant digits specify the page and line type formats. 41XX Causes the printing of pre-stored messages within the programmable print- er. The two least significant digits specify the desired message. 4200 Causes the printing of pre-stored messages within the programmable print- er. The two least significant digits within the B-node register specify the desired message. ______________________________________
This register is called the bookkeeping register. The register represented by a number equal to the D-node number plus 1 is the register within the central processor where data is to be transferred. Depending on the particular sub-type of "MOVE" function desired, this register is either the only register to receive data from the B-node register or registers or is the first of a table of registers to receive data in a sequential fashion.
When a "PRINTER" data function is desired, the D-node represents the output register of the central processor that is connected to the programmable printer via the input/output housing 38 and one of the output modules 40, 42, 44 or 46. This number thus represents the register within the central processor where data is deposited. As will be discussed more fully later, an inferred input register with a register number equal to the D-node number minus 1,000, is the register used by the central processor to receive command information from the programmable printer.
PROGRAMMING AND STORING A DATA TRANSFER LINE
As can best be seen in FIG. 3, programming panel 32 incorporates a number of push button switches and thumb wheel switches in order for an operator to program a desired electrical circuit line into the central processor 34. More particularly, a key-lock switch 72 has two positions, one of which, the input data position, allows an operator to insert electrical circuit lines into the central processor. A data transfer switch 74, when depressed, signals to the central processor that a data transfer electrical circuit line is to be generated by the programming panel. Line number thumb switches 76 are then set to the desired electrical circuit line within the central processor that is to be programmed into a data transfer line. The A-node push button 78 is depressed indicating that that particular node is to be entered into the central processor. After activating the A-node, element type push button 80, representing a normally open switch, or element type push button 82, representing a normally closed switch is depressed indicating the particular element type to be placed within the A-node.
Following this operation, reference number thumb wheel switches 84 are selected to refer to an output relay coil of an electrical circuit line that is to specify the initial condition of the chosen electrical element type. The energization of the data transfer line will be conditioned upon the state of the electrical element in the A-node.
Following the selection of the A-node, the B-node push button 86 is depressed. Following the B-node depression, reference number thumb wheel switches 84 are selected to indicate the register within the central processor where data can be retrieved.
Following the B-node push button depression, the C-node push button 88 is depressed and the reference number thumb wheel switches 84 are selected to represent the desired data transfer function. Finally, the D-node push button 90 is depressed and the reference number thumb wheel switches 84 are selected to indicate the register within the central processor where some or all of the manipulated data is to be deposited.
As is described in U.S. Pat. No. 3,686,639, all of the information entered into the A, B, C, and D nodes, as well as the particular electrical ciruit line number, may be seen in display window 92.
As the operator is inserting the data transfer function electrical circuit line into the central processor via programming panel 32, the central processor continuously monitors the programming panel so as to interpret and store the information selected by the operator. As is disclosed in U.S. Pat. No. 3,686,639, the central processor stores each electrical circuit line in 48 bits of designated core memory, these 48 bits representing three data words of 16 bits each (see FIG. 4). When data transfer switch 74 is depressed, three bits of WORDS 1 and 3 are coded to represent a data transfer line; that is, bit 0 of WORD 1 and bits 4 and 5 of WORD 3 are set to a binary 1 state. These bits therefore specify the circuit line type selected by the operator; in this case, a data transfer line.
As best seen in FIG. 4, the type of electrical element chosen for the A-node is stored in bit 1 of WORD ONE. A binary zero in this bit represents a normally "open" switch and is generated by depressing push button 80, while a binary 1 in this bit represents a series normally closed switch or the depressing of push button 82. Bit numbers 2 and 3 of WORD ONE and bit numbers 0 through 3 of WORD TWO and WORD THREE denote the relative random access memory address of the central processor for simulating the electrical switch chosen. This random access memory is referenced by electronic circuits that are capable of solving relay elements in electrical circuit lines without the need of further computation by a computer program section or software section of the central processor. This computer program for storing and solving of data transfer electrical circuit lines is shown in Table number 3. The instruction set of the central processor is shown in Table number 4.
However, for the solution of non-relay electrical circuit lines, the non-relay portions of these lines must have the data transferred from the logic solver to the software section of the central processor. Thus the 10 bits of information denoting the relative random access memory address for the A-node contain all the information necessary for the logic solver to simulate the electrical element chosen as well as updating its condition in response to the relay coil of the referenced electrical circuit line. ##SPC1## ##SPC2## ##SPC3## ##SPC4##
As also shown in FIG. 4, bits 6 through 15 of WORD ONE indicate the designated register chosen for the B-node via reference number thumb wheel switches 84. Bit number 6 is the most significant digit of this binary number while bit number 15 is the least significant digit. Bit numbers 4 and 5 of WORD ONE and bit numbers 4 through 15 of WORD TWO are the binary equivalent of the four digit, base 10, number chosen for the C-node. These 10 binary digits represent the binary equivalent of the number chosen via reference number thumb wheel switches 84 for the C-node. The function chosen, as discussed earlier, is dependent upon the numbers chosen via these thumb wheel switches.
Lastly, bit numbers 6 through 15 of WORD THREE indicate the designated register chosen via reference number thumb wheel switches 84 with respect to the D-node. This binary equivalent of the decimal number indicates the designated register or registers where the results of a transfer function are to be placed.
The same number of core memory locations are utilized in the present invention as was discussed in U.S. Pat. No. 3,686,639. However, the number of locations for each node with regard to the non-relay functions of an electrical circuit line are different from the bit locations specified in U.S. Pat. No. 3,686,639.
As further discussed in U.S. Pat. No. 3,686,639, the executive program of the central processor communicates with the electronic circuitry of the programming panel in order to store information generated by the programming panel in response to various switch positions selected by the operator. In addition to the executive program disclosed in U.S. Pat. No. 3,686,639 with regard to receipt of information from the programming panel, the present invention utilizes an executive computer program shown in Table 3 for various non-relay logic functions including validity checking the information placed in the B, C, and D nodes of a data transfer electrical circuit line. This portion of the computer program is shown on pages A-50 through A-52 of the computer program. A flow chart of this portion of the computer program is best seen in FIG. 5. A description of the block diagrams used in all the flow charts is shown in FIG. 6.
As seen in FIG. 5, once a number is chosen in the B-node of the data transfer line, a "READ ONLY" memory (not shown) in the programming panel determines if the number chosen is an acceptable register in the central processor, step 100. If the register is acceptable, the information is packed into the first data word of the electrical line chosen, step 102 (see FIG. 4). If the number represents an unacceptable register; such as, a non-existent register or a register where data may not be obtained, an error signal, step 106, is displayed in display window 92 (see FIG. 3).
When the C-node push button 88 is depressed and a number is entered into this node via the reference number thumb wheel switches 84, the central processor 34 determines if any contact or electrical element switches are in the "ON" state, step
108. If none of the contact switches are on, the central processor unpacks the function from the panel storage area and converts the number selected for the C-node into a binary coded decimal number, step 110. The executive program then returns to the panel for further information, step 112.
If any of the contact switches are in the "ON" state the executive program next determines if the function; that is the number chosen for the C-node, is in the correct format and bounds, step 114. More particularly, the executive program determines if the number chosen is a number which corresponds to a data transfer function that is stored within the executive program. If the number is not an acceptable number, an error signal is generated in the display window 92 of the programming panel (see FIG. 3), step 116. If an error signal is generated, the number chosen for the C-node is not packed into a data word for the chosen electrical circuit line as determined by the position of thumb wheel switches 76. Following the generation of the error signal, the executive program returns to the programming panel, step 112.
If however, the number chosen for the C-node corresponds to an acceptable data transfer function, the executive program converts the number into a binary number and packs this binary number into the first and second data words of the selected electrical circuit line, step 118 (see FIG. 4). Following this operation, the executive program returns to the programming panel, step 120.
Next, the executive program determines if the number chosen for the D-node corresponds to a non-existent register or also, if the register chosen is in an "INPUT" register area, step 122. If either of these conditions exist, an error signal is generated in the display window 92 (see FIG. 3), step 124. Following the generation of an error signal, the executive program returns to the programming panel, step 126. If however, the D-node selected is an acceptable register, with regard to a data transfer deposit register, and if the data transfer function as determined by the number in the C-node is a printer function, (as will be discussed more fully later in this description) the executive program determines if the inferred input register (the register that receives commands from the printer) is in range of an acceptable input register, step 128. If the inferred input is out of range an error signal is again generated on the display window 92, step 130, and the executive program returns to the programming panel, step 126. If the inferred input is in range, the executive program packs the D-node number into the third data word for the selected electrical circuit line (see FIG. 4), step 132, and returns to the programming panel for further information, step 134.
If the data transfer function corresponds to a "MOVE" function the computer program determines in step 128 if the last register to receive transferred data is acceptable. If it is not, an error signal is generated, step 130. If the last register is acceptable, the executive program packs the D-node number into the third data word for that electrical circuit line, step 132, and returns to the programming panel, step 134.
In the generation of error signals, step 116, 124, and 130 the symbols displayed in the display window 92 denote the type of error that has occurred. Thus if the C-node function is determined to be a "PRINTER" function; that is the most significant digit of the C-node is a 4, and the sub-type number, that is, the second most significant digit, is an unacceptable number, the error generated in step 116 will denote that the error is due to an incorrect data function with regard to a "PRINTER" data transfer line. Similarly if the most significant digit of the C-node number is a 1 and the second most significant digit did not correspond to one of the sub-type of "MOVE" functions, the error signal would denote that there is an error in a "MOVE" data transfer line.
Once the data transfer line has been completely selected by the operator, through use of the programming panel 32, and no error signals are generated, the three data words corresponding to the electrical circuit line chosen contain all the bit information necessary for the central processor 34 to perform a data transfer function on that particular electrical circuit line when the A-node state is in the proper configuration. Of course, the electrical circuit line chosen by the operator to be a data transfer line may later be re-programmed to be another data transfer line or a standard logic type line as used in present-day computer controller systems.
Following the programming of selected electrical circuit lines to correspond to data transfer functions, the central processor continuously sweeps through the electrical circuit lines and updates these electrical circuit lines in a manner disclosed in U.S. Pat. No. 3,686,639. In the present invention, however, the central processor determines the status of the three "LINE TYPE" bits in the data words of the particular circuit line. If bit 0 of word 1 is a 0, the central processor's logic solver determines that this particular electrical circuit line is a relay function and proceeds to update this electrical circuit line with regard to the referenced relay coil. If however, a binary 1 is in this bit, the logic solver transfers the data in the three data words (see FIG. 4) to the executive computer program of the central processor where the proper determination of the non-relay function is determined (see Table 3, page A-20). As can best be seen in Table 5, if all three bits contain a binary 1, a data transfer function is to be performed by the computer program with respect to that particular electrical circuit line.
The executive program of the central processor then looks at the most significant digit of the C-node in order to determine the particular type of data transfer function selected for that particular electrical circuit line. If the most significant digit of the C-node number is a decimal 1 the executive program knows that a "MOVE" function is to be performed.
"MOVE" FUNCTION DESCRIPTION
The particular type of "MOVE" data transfer function for each particular sub-type is shown in Table 1. Thus, if a zero sub-type is contained in the second most significant digit of the C-node, the "MOVE" function causes data in one register of a table of registers to be transferred into a single register every time the A-node closes. That is, the data contents of one register of a table of registers is transferred upon the edge detection of the electrical element in the A-node closing for that particular sweep. The registers in the table of registers are sequentially taken from this table per closure of the A-node. The data in the table of registers is not destroyed during this process. As can be seen in FIG. 8A, an example of digit zero sub-type of "MOVE" transfer function causes data in 50 registers, numbers 4100 through 4149, of the executive program to be transferred to one register, number 4201. The particular line in the central processor containing this data transfer function is line number 101. The A-node consists of a normally open switch 94 which is referenced to the relay coil of electric circuit line 1054. The B-node of line 101 contains decimal number 4100, corresponding to the table of registers starting with register number 4100 in the central processor. Thus the first register of data to be transferred via this data transfer line is register number 4100.
TABLE NO. 5 ______________________________________ BIT 0, BIT 4, BIT 5, LINE TYPE WORK 1 WORDS WORD 3 ______________________________________ RELAY 0 -- -- COUNTER 1 0 1 TIMER 1 1 0 CALCULATE 1 0 0 DATA TRANSFER 1 1 1 ______________________________________
The C-node consists of the number 1050. The most significant digit of this number; mainly 1 determines that the data transfer function is a "MOVE" data transfer function. The second most significant digit; mainly the 0, denotes that the particular sub-type "MOVE" data transfer function consists of a transfer from a table of registers to a single register every time the A-node closes. The least two significant digits; mainly 50, denote the size of the table that is to be transferred by this data transfer line. Thus fifty registers of data are to be transferred before this data transfer line has completed its "MOVE" operation.
The D-node consists of the decimal number 4200. This number refers to the register that will contain a number related to the number of registers transferred to register number 4201. Thus register 4200 is a bookkeeping register that keeps track of the progress of "MOVE" function with regard to this particular data transfer line. When a number equal to decimal 50 is contained in this register, the executive program executing this particular electrical circuit line will know that all the registers within the table of registers have been transferred to register number 4201 and that the "MOVE" operation has been completed. When the "move" has been completed, the relay coil 96 will be activated by the central processor. The relay coil is not energized before the "MOVE" operation is completed.
As best seen in FIG. 8A, the first time normally open switch 94 closes the data in register 4100 will be transferred to register 420l. It should be noted that the register receiving the data is always equal to the register denoted in the D-node plus 1, therefore in this case register number 4201. Prior to normally open switch 94 closing, register 4200 contains a 0 and after the closure register 4200 contains a 1. The relay coil 96 is off before and after the closure of the normally open switch.
The next time switch 94 closes, data in register 4101 is transferred to register 4201. At this particular time register 4200 contains a 1 before this closure of the switch and a 2 after this closure.
This process will continue until the 50th closing of normally open switch 94. At this particular time data in register 4149 is transferred to register 4201. Just prior to this fiftieth closure of the A-node register 4200 contains a binary equivalent of 49 and following this closure of the switch register 4200 contains a binary equivalent to 50. This number indicates to the central processor that all the data within all 50 of the registers of data have been transferred to the register denoted by the D-node plus and therefore the "MOVE" function has been completed with regard to this particular data transfer line. Therefore the relay coil of line 101 is energized indicating to the operator or to other external lines or other external devices that this particular "MOVE" function has been completed.
As best seen in FIGS. 6A, 6B, 6C, and 6D, the flow chart for the generation of a "MOVE" data transfer function consists of a main flow portion as shown in FIG. 6A with eight sub-type functions depending on the second most significant digit in the C-node. The program listing for the "MOVE" subjob is shown in Table 3, pages A-28 through A-40. More particularly, the computer program first validates the number within the C-node to determine if this number is between 1001 and 1799, step 140. If the number within the C-node is not between these two ranges the computer program exits from the "MOVE" subjob, step 142. The TIM 4 shown for step 142 indicates that the computer program returns to the main sweep so as to update the remainder of the electrical circuit lines while commanding that the output relay for this electrical circuit line be set to the OFF position. Whenever a TIM 4 block is shown in any of the flow charts of FIGS. 7A, 7B and 7C, the same type of exit from the "MOVE" subjob is to be performed by the central processor.
If the numbers in the C-node are acceptable, the computer program proceeds to ascertain the A-node histoy, step 144. As is seen in FIG. 6, the block utilized in step 144 is a subroutine block indicating that the executive program proceeds to that particular subroutine to ascertain the A-node history. In this particular subroutine (not shown) the executive program merely ascertains if the electrical element in the A-node of this particular data transfer line was open or closed during the last time this electrical circuit line was checked by the central processor; i.e., during the last sweep of the computer controller system. After this ascertainment the executive program returns to step 144 of the main flow of the "MOVE" subjob.
The executive program needs to determine the A-node history since some of the sub-types of "MOVE" functions are only activated when the electrical element in the A-node goes from an open state to a closed state; that is, some data transfer "MOVE" sub-types are edge detected on the A-node. Thus if the electrical element in that node is open during the last sweep and is closed during the present sweep, the executive program knows that the A-node has just closed and thus an edge detection has just occurred.
Following the A-node history gathering the executive program proceeds to ascertain the last three digits of the C-node number, step 146. As mentioned earlier the second most significant digit of the C-node represents the sub-type of the particular data transfer function. Thus in this particular case there are eight particular sub-type "MOVE" data transfer functions that the executive program can undertake. The two least significant digits with regard to a data transfer "MOVE" function tell the executive program the number of registers of data that are to be transferred. Since this number has an upper bound of 99, it is therefore apparent that at most 99 registers of data may be transferred via one transfer "MOVE" line.
The executive program proceeds to determine if the B-node refers to an acceptable register, step 148. If it does not, the executive program exits from the "MOVE" subjob, setting the relay coil of the data transfer line to an off state, step 150.
If the B-node is acceptable, the executive program determines if the A-node is closed on this particular sweep through this particular data transfer line, step 152. If the A-node is closed, the executive program exits to one of the 8 DIGIT sub-types as is indicated generally by step 154. These particular sub-types perform various transfer "MOVE" operations and each utilizes a separate sub-type subroutine.
Thus if the second most significant digit in the C-node is an 0, the executive program jumps to the DIGIT 0 connection, step 156 where it proceeds to execute the flow diagram shown in FIG. 7B. Thus the executive program executes the ACHEK subroutine, step 158. As seen best in FIG. 7D the ACHEK subroutine first determines if the A-node closed on this particular sweep, step 160. If the A-node did close on this sweep, the executive program returns to the sub-type subroutine for DIGIT 0, step 162.
It is therefore apparent that the executive program must know the state of the A-node for the sweep just prior to the present sweep in order to determine if the A-node closed on this particular sweep. Therefore the history gathered in step 144
is essential for this decisional step 160. If the A-node did not close on this particular sweep, it indicates that the A-node was closed prior to this sweep since the decisional step 152 has already determined the A-node is closed on this particular sweep. Since the "MOVE" subroutine subjob for the DIGIT 0 sub-type is only activated on the edge detection of the A-node closing, if the A-node did not close on this particular sweep the ACHEK subroutine determines in decisional step 164 that a move is not in progress and therefore exits from the data transfer line, setting the lines relay coil to the OFF position, via step 166.
If the A-node has just closed, the sub-type subroutine proceeds to validity check the B-node, step 168. As can be seen in FIG. 7D, the BNODT subroutine retrieves the absolute address of the register where data is to be retrieved, step 170 and determines if this register is an acceptable register, step 172.
As is best seen in Table 1 and FIG. 8A, the DIGIT 0 sub-type of MOVE transfer function moves data from one register in a table of registers into a single register every time the A-node closes. These registers are taken in sequence from the table of registers. It is therefore apparent that as data is retrieved from this table, the register transferring data may not be an acceptable register even though the first register was an acceptable register. Thus as seen in FIG. 8A, although register
4100 is an acceptable register it is possible, depending upon the particular central processor utilized, that register 4145 may not be an acceptable register to retrieve data from. In such a case decisional step 172 and FIG. 7D determine that this condition exists and exits from this particular data transfer "MOVE" line, setting the relay coil to the OFF position, step 174. If the absolute address of the register is acceptable, the executive program exits from the BNODT subroutine via step 176, and continues in the DIGIT 0 sub-type subroutine. The executive program then proceeds to transfer data from the latest B-node table register to the register identified in the D-node, step 178.
Following the transfer of the data to the d-node register, the executive program proceeds to the MOVCOM subroutine, step 180 so as to move to the next register in the table of registers, step 182. The executive program does this so that the next time this data transfer line's A-node is edge detected, the register from which data is to be retrieved is not the same register as was previously moved. Following the incrementing of the register within the table of registers, the executive program determines if the total number of registers moved is equal to the total size of that table as determined by the two least significant digits in the D-node, step 184. If the "MOVE" has been completed, the executive program resets the bookkeeping register (register 4200 in FIG. 8A) to zero, step 192, and proceeds to exit from this data transfer circuit line while energizing relay coil 96, step 193. If the "MOVE" table has not been completely transferred to the data receipt register (register 4201 in FIG.
8A), the MOVCOM subroutine exits from the circuit line via TIM 4, step 150.
If a ONE occurs in the second most significant digit of the C-node, the executive program proceeds to DIGIT 1, step 181, if a decisional step 152 is closed. The data "MOVE" operation for this particular sub-type is identical to the sub-type 0
"MOVE" function except that data will be transferred from the table of registers to the D-node register plus 1 every time the executive program sweeps through this particular electrical circuit line if the A-node in this electrical circuit line is closed. Thus this sub-type does not need the A-node history obtained in step 144 for the previous condition of the A-node is immaterial to the transfer of data by this sub-type. Table 1 illustrates the type of data transfer caused by this particular sub-type of "MOVE" function.
An example of this data transfer sub-type "MOVE" function is shown in FIG. 8B. Thus circuit line 102 contains a "MOVE" function of sub-type 1, as shown in the C-node two most significant digits of 1 and 1. The two least significant digits of the C-node contain the digits 1 and 0 and therefore 10 registers of data are to be transferred before this "MOVE" function is completed. As shown in the A-node a normally open switch 98 is referenced to the relay coil in electrical circuit line 1105. The B-node contains number 4010 indicating that the first register in the table of registers is register 4010. The D-node contains the number 4300 indicating that the register keeping track of the number of registers moved to register 430l is register
4300.
Thus if normally open switch 98 is in the closed position, and remains closed, data in register 4010 is transferred to register 4301 on the first sweep. On the next sweep through this electrical circuit line the data in register 4011 is transferred to register 4301. This continues until data in register 4019 is transferred to register 430l. At this time the number stored in register 4300 is a binary equivalent to a decimal 10, indicating to the central processor that the "MOVE" for this data transfer line has been completed. At this time relay coil 99 is energized indicating that the "MOVE" has been completed.
As shown in Table 1 a 2 in the second most significant digit of the C-node indicates a sub-type of "MOVE" where a register containing data is transferred to the table of registers while the A-node is edge detected. In this particular case the decisional step 152 proceeds to DIGIT 2 sub-type, step 183 and completes the flow chart shown in FIG. 7B. This flow chart is identical to the DIGIT 0 flow except that the D-node is validity checked per transfer of data to insure that the register where data is to be transferred is an acceptable register, step 185. FIG. 8C indicates the reason why the D-node table must be checked since it is possible that although register 4002 is an acceptable register, that register 4003 may not be an acceptable register. As shown in FIG. 7D the DNODT subroutine obtains the absolute address in the table defined by the D-node, step 188 and determines if this absolute address is in range of the registers defined by the computer program, step 172. If it is an acceptable register, the program returns to the sub-type 2 subroutine where the data is transferred from the B-node register to the latest D-node table register, step 190 (see FIG. 7B). If the register is not acceptable, the computer program exits from this particular data transfer line via TIM 4, step 174.
Following an acceptable transfer of data the executive program goes to the MOVCOM subroutine, step 180 where the register number and D-node register is incremented by 1 so as to receive the next register of data in the next D-node register. If the "MOVE" operation is completed; that is the data has been transferred to all the registers in the table of registers defined by the two least significant digits of the C-node, and the A-node element is opened, the executive program resets the number in the bookkeeping register defined by the D-node to zero, step 192 and exits from the data transfer line setting the relay coil of that line to the ON state, step 193.
As is best seen in FIG. 8C, line 26 is programmed by a data transfer "MOVE" line of a sub-type 2. Normally open switch 95 is conditioned on the relay coil of electrical circuit line 1034. Node B contains 3001 which indicates that data is to be transferred from register 3001. The C-node indicates that a "MOVE" function is to be performed and that the sub-type "MOVE" is a register to table "MOVE" upon closure of the A-node. The two least significant digits; mainly 15, indicate that 15
registers of the central processor are to receive the data contained in register 3001. Node-D contains 4001 indicating that register number 4001 is the bookkeeping register keeping track of the number of times that data in register number 3001 is transferred to the D-node table. Thus on the first closure of the A-node, data in register 3001 is transferred to register number 4002. Prior to closure of the A-node register number 4001 contained a zero and after closure of the A-node register 4001
contains a 1. A relay coil 97 of line 26 is de-energized before this transfer of data to register 4002 and is also de-energized after this transfer has taken place. Relay coil 97 is energized following transfer of data from register 3001 to register
4016. At this particular time if the A-node element is open the bookkeeping register 4001 is reset to zero.
As best seen in FIG. 7B the DIGIT 3 sub-type utilizes the same subroutine as DIGIT 2 except that the ACHEK subroutine is disregarded. The reason for disregarding the ACHEK subroutine is that the 3 type "MOVE" function is activated whenever the A-node is closed regardless of the previous state of the A-node. As seen in Table 1 this particular type of "MOVE" function transfers data from one register to a table of registers whenever the A-node is closed. As best seen in FIG. 8D, data in register number 4114 is sequentially transferred to register numbers 4116 to 4121 if normally open switch 91 is in the closed state. Following completion of the transfer of data from register 4114 to register 4121, the number stored in register 4115 is
0006 and relay coil 93 is energized by the central processor.
As best seen in Table 1 sub-types 4 and 7 cause data in a table of registers to be transferred to a second table. If a 4 sub-type is chosen the transfer of data occurs when the A-node goes from an open to a closed state, whereas if a sub-type 7
is chosen the data is transferred from one table to the second table provided that the A-node is closed. As best seen in FIG. 7B the flow chart for the 4 sub-type first checks the A-node history, step 158 and proceeds to validity check the B-node register, step 168 and finally the D-node register, step 186. If all these sub-routines indicate that the A-node has gone from an open to a closed state and the B-node and D-node registers are acceptable, data in a register of the first table of registers is transferred to a register of the second table of registers, step 194. Following this the executive program goes to subroutine MOVCOM where the B-node and D-node registers are incremented and the executive program checks to see if the "MOVE" has been completed.
The 7 type subroutine is identical to the 4 sub-type except that the ACHEK subroutine is disregarded.
An example of a 4 sub-type is shown in FIG. 8E. Electrical circuit line 120 is programmed to be a table to table data transfer "MOVE" function as designated by the two most significant digits of the C-node. Normally open switch 87 is conditioned by the relay coil of electrical circuit line 127. The B-node contains number 4115 which indicates the first register in a table of registers to have its data transferred to a second table of registers. The two least significant digits of the C-node indicate that the size of the table is ten registers. The number 4028 in the D-node indicates that the bookkeeping register is register number 4028 and that the first register to receive data is register number 4029. Thus on each closure of normally open switch 87 the data in one register starting at register 4115 is transferred to a second table of registers starting at register 4029. After ten such closures of the A-node all the data in registers 4115 through 4124 is transferred respectively to registers 4029 through 4038. At this particular time the number in register 4028 is 0010 and relay coil 89 is energized.
A sub-type 7 "MOVE" data transfer is identical to the sub-type 4 data transfer and thus FIG. 8E shows such a line if the number in the C-node is changed from number 1410 to 1710. The operation of this type of data transfer is initiated whenever normally open switch 87 is closed regardless of its prior condition.
As best seen in Table 1, sub-types 5 and 6 perform a first-in/first-out (FIFO) type of data transfer function. The 5 sub-type performs the in-putting of data, while the 6 sub-type performs the out-putting of data.
As best seen in FIG. 8F, circuit line 10 is programmed to be a first-in side of a FIFO stack operation. More particularly, normally open switch 83 is inserted in the A-node and is referenced by the relay coil of electrical circuit line 275.
The B-node contains number 4011 which corresponds to data receipt register number 4011. Every time the normally open switch 83 closes the data in register 4011 is sequentially transferred to a table of registers starting with the highest numbered register; mainly, register number 4120. The C-node has two least significant digits corresponding to a 20 which specify the table length of registers to receive data from register 4011. The number 4100 is contained in the D-node and this number corresponds to the bookkeeping register which records the number of times register 4011 has transferred data to the table.
Unlike the other type of data transfer "MOVE" functions, the present first-in side of a FIFO stack transfers the data in register 4011 to the highest number register in the table. Thus the first time normally open switch 83 closes data in register 4011 is transferred to register 4120. This latter register is obtained by adding to the number in the D-node; mainly 4100 the numbers of the two least significant digits of the C-node. Thus 4100 plus 20 is equal to 4120. Before the normally open switch 83 first closed, register 4100 contained number 0 and after the switch closed for the first time register 4100 contained a 1. The second time normally open switch 83 closes, register 4011 deposits its data in register 4119. This operation continues upon closure of switch 83 until register 4011 deposits its data in register 4101. At this time register 4100 contains a binary equivalent of decimal 20 indicating that the present "MOVE" operation has been completed. Relay coil 85 is then turned "ON" signifying that the "MOVE" operation has been completed.
In the first-out side of a FIFO stack, the reverse operation with regard to a first-in side is performed. As best seen in FIG. 8G, circuit line 20 of the central processor is programmed as a first-out side of a FIFO stack. Normally open switch
75 is reference to the relay coil of electrical circuit line 254. Node-B contains number 4100 corresponding to the bookkeeping register 4100 that keeps track of the number of times the normally open switch 75 is closed. Unlike the other sub-type data transfer "MOVE" functions the sub-type 6 uses a B-node register as a bookkeeping register rather than a D-node register. The register equal to the number stored in the B-node plus 1 is the last register to have data transferred to the register denoted by the D-node register.
The C-node has two least significant digits; mainly 20, which specify the table length of registers that are to be transferred to the data receipt register 4211. Upon the first closure of the A-node, data stored in register 4120 is transferred to register 4211. Following transfer the data in registers 4119 to 4101 are sequentially moved down to the next higher register. That is, data in register 4119 is moved to register 4120 while data in register 4118 is moved into register 4119, etc. The next time normally open switch 75 closes the data in register 4120 is again deposited in register 4211 and following this deposit of data the data in registers 4119 through 4102 are moved to the next higher register. This deposit and incrementation of the data to the next higher data register is continued until normally open switch 75 closes for the 20th time. At this particular time, after the data is transferred from register 4120 to register 4211, the executive program realizes that the "MOVE" operation has been completed for line 20 and therefore energizes relay coil 77.
As best seen in FIG. 7A the main flow of the data line "MOVE" transfer function goes to DIGITS 5 or 6 of the sub-type if decisional step 152 indicates that the A-node is closed for this particular sweep. If a digit 5 operation is to be performed the main program goes to sub-type program of DIGIT 5, step 200. The DIGIT 5 subroutine starts with subroutine FULTAB, step 202. As best seen in FIG. 7D, the FULTAB subroutine decides whether the particular stack is full, step 204. If the stack is full, indicating that all the information has been transferred to the table of registers of the D-node, the executive program proceeds to exit from this particular data transfer line and energizes the relay coil of this line, step 193. If the stack is not full, indicating that more data is to be transferred to the table of registers, the subroutine returns to the subroutine of the DIGIT 5 sub-type, step 208.
The DIGIT 5 subroutine then determines if the A-node closed this particular sweep, step 210, since all FIFO stack operations are edge detected. If the A-node has not closed this sweep, indicating the A-node closed the previous sweep, the executive program exits from this data transfer "MOVE" to the remaining electrical circuit lines while setting the relay coil of this electrical circuit line to the de-energized state, step 212.
If the A-node did close this particular sweep the executive program proceeds to ascertain the absolute address in the stack as defined by the D-node, step 214. If this absolute address is within the range of registers defined by the program, the
5 sub-type subroutine continues, step 216. If the register is out of range the executive program escapes from this data transfer line via step 218.
If the register of the D-node is acceptable, the data is then transferred from the register defined by the B-node to a register defined by the number of the D-node plus the table size minus the number stored in the bookkeeping register, step 220. The executive program then proceeds to subroutine FLTAB, step 222. As best seen in FIG. 7D, this subroutine merely steps the data transfer register 4011 (see FIG. 8F) to the next lower data receipt register. That is, the subroutine points to the next empty slot in the table stack, step 224. If the stack is full at this particular time, the subroutine exits from the data transfer function line while energizing the relay coil of this line, step 206. If the stack is not full, the subroutine returns to the sub-type 5 subroutine and exits from this subroutine via TIM 4, step 226.
As best seen in FIG. 7C, the flow chart for the sub-type 6 "MOVE" transfer function is basically the reverse operation of the sub-type 5 transfer function. The first operation of the sub-type 6 subroutine, step 230 is to determine if the B-node stack is empty, step 232. If the stack is empty, indicating that all the information within the table of registers has been transferred to the data receipt register, the executive program exits this particular data transfer line while energizing the relay coil of this line, step 234. If the stack is not empty, indicating that more data is to be transferred to the data receipt register, the subroutine determines if the A-node closed on this particular sweep, step 234. If the A-node was closed on the previous sweep, the executive program exits from this subroutine via TIM 4, step 236.
If, however, the A-node closed this particular sweep, the executive program ascertains the address of the last register in the table of registers in the B-node, step 238. The executive program then determines if this register is within range. If this register is not within range, the executive program exits from this subroutine via TIM 4, step 242. If however, the register is within range, the executive program moves the data within the last register of the table to the data receipt register (register number 4211 of FIG. 8G), step 244. The executive program then determines if the stack is empty and if it is empty the executive program exits from the circuit line while energizing the relay coil of this particular data transfer line, step
248.
If the stack is not empty, indicating that more data is to be transferred from the B-node back to the data receipt register, the executive program slides the remainder of data in the registers above the highest number B-node register down to the next register, step 250, and then exits from this data transfer line via TIM 4, step 252.
Referring to the main flow as shown in FIG. 7A for a data transfer "MOVE" function, the decisional block 152 will continue to a FIFO stack operation, step 153, if the A-node is open on this particular sweep. If a sub-type 5 or sub-type 6
function is within this particular data transfer line, the executive program will be transferred to the sub-type 5 or sub-type 6 subroutines as shown in FIG. 7C. The reason for transferring to these sub-types even though the A-node is open on this particular sweep is that for the sub-type 5 and 6 subroutines the FULTAB subroutine will energize the relay coil of the particular data transfer line if the stack is full or empty respectively, regardless of the A-node state. Thus in a 5 sub-type, the executive program merely looks at the D-node bookkeeping register and sees if the number within this register is equal to the two least significant digits of the C-node. If the number is equal to the C-node, the executive program will interpret this as indicating that all the registers in the table of registers have had data transferred to them regardless of whether they actually had this transferred. Thus if a number is transferred to register 4100 as shown in FIG. 8F, and this number equals the C-node number, the FULTAB subroutine will exit from this particular electrical circuit line and energize the relay coil of this line regardless of the condition of the A-node.
Similarly for the 6 sub-type, if the number in the bookkeeping register is equal to zero, the executive program will exit from the data transfer line and set the relay coil of that particular line to the energized state, step 234. Thus if a zero is transferred to register 4100 as shown in FIG. 8G, the executive program will energize the relay coil of that particular transfer line regardless of the state of the A-node electrical element.
Thus the first-in/first-out stack operations, denoted by sub-types 5 and 6, allow an operator to store and retrieve data in a table of registers within the central processor in a first-in/first-out basis.
If the "MOVE" transfer function is not FIFO stack operation decisional block 153 will cause the computer program to exit from the data transfer line to continue solving the remainder of the electrical circuit line of the computer controller system.
From the above description it is apparent that the data transfer "MOVE" function adds a new dimension to computer controller systems, allowing registers within these systems to have data transferred to and from registers in various unique and novel ways. The deposit registers where data is placed may be used as transfer registers for other data transfer lines or possibly as registers to drive external devices via the central processor and the input/output housing 38 as well as the input/output modules 40, 42, 44 and 46.
PRINTER FUNCTION DESCRIPTION
The present invention also includes a printer data transfer function designated by a 4 in the most significant digit of the C-node. As best seen in FIG. 9 electrical circuit line 201 is programmed to be a printer data transfer line. As seen in FIG. 9, the A-node contains the normally open switch 71 which is referenced to a relay coil of the electrical circuit line 1105. When normally open switch 71 is in the closed position the print function specified by the number stored in the C-node is requested. The "PRINTER" function is executed once for each closure of the normally open switch, however repeated closures of the switch before the requested print function has occurred will not be acted upon. The B-node contains a number corresponding to a register where numeric data may be obtained. If there is more than one number to be printed from data within the central processor, additional numbers will be obtained from the sequential register locations following the register denoted in the B-node.
The C-node specifies the print control function. Thus a 4 in the most significant digit specifies a printer operation. The second most significant digit of the C-node specifies the particular type of printer function to be performed by the computer controller system (see Table 2). Thus a zero in the second most significant digit calls for the printing of numeric information from the central processor without any additional information being printed from data stored within the programmable printer with which this electrical circuit line intercommunicates. With regard to a 0 sub-type, the two least significant digits in the C-node specify the format of the printed data. Table 6 illustrates the various formats obtainable by these two least significant digits. More particularly, the second least significant digit determines the page format while the least significant digit of the C-node specifies the line format. As seen in TAble 6, if the two least significant digits are a 1 and a 1, the data from the central processor will be printed on one line with four data insertions (as shown by the four X's) and after this data is printed the programmable printer will move the print paper up one position.
The programmable printer utilized in the preferred embodiment of the "PRINTER" data transfer function is disclosed in U.S. patent application Ser. No. 443,329, entitled "Programmable Printer."
If a 1 is contained in the second most significant digit of the C-node the data transfer line will command the programmable printer to print a pre-stored message within the printer as addressed by the two least significant digits of the C-node. Thus as discussed in U.S. patent application Ser. No. 443,329, the programmable printer may print 100 possible pre-stored messages in response to the 100 possible numbers generated by the two least significant digits of the C-node.
If a 2 is in the second most significant digit of the C-node, the "PRINTER" function will call for a pre-stored message within the programmable printer as defined by a number stored within the B-node register. Thus one particular data transfer line may be used to request one of a number of pre-stored messages depending upon the particular numbers stored in the register specified by the B-node of the data transfer line. The number stored in the D-node of the data transfer line refers to an output register that is wired to the programmable printer.
As shown in FIG. 9, the relay coil 73 of a "PRINTER" data transfer line will be energized when the normally open switch 71 is closed, and the coil will remain ON until the print request is satisfied.
For the sub-type 1 or 2 "PRINTER" function calling for the printing of a pre-stored message, the programmable printer is able to request variable data from the central processor to be transferred to the printer via the D-node register. This data is obtained from the register denoted by the B-node and the registers sequentially following this register if more than one register of data is requested.
As shown in FIG. 10, the "PRINTER" data transfer lines receive information from the printer concerning the request for variable data as well as for termination of the printing operation from three input electrical circuit lines lines 396, 397, and 398. As described in U.S. patent application Ser. No. 443,329 if the FORM BUSY line is energized and the BUSY line is energized the programmable printer is in the process of printing a pre-stored message and is not requesting the insertion of variable data. If the FORM BUSY line is high and the BUSY Line is low the programmable printer is commanding the data transfer line to transfer variable data to the programmable printer. When the programmable printer has received sufficient data the BUSY line will again be in the high state. When the programmable printer is completed with printing, both the FORM BUSY and BUSY lines will go to the low state indicating to the central processor that the request for a print function has been completed. Throughout the printing, the programmable printer may send an ABORT signal to the computer controller system which will cause the executive program to automatically terminate the printing operation of the programmable printer.
As best seen in FIG. 11, the computer controller system communicates with the programmable printer with regards to the transferral of data and commands to the printer via a register equal to the number stored in the D-node of the printer data transfer line. An inferred register, equal to the D-Node register minus 1000 is used by the controller to receive the FORM BUSY, BUSY, and ABORT signals from the programmable printer.
TYPICAL PRINTER DATA TRANSFER LINE OPERATION
If the C-node of a data transfer line contains 4011, the following would be printed by the programmable printer when the A-node of this particular data transfer line is energized:
XXXX
(LINE FEED) ;
where LINE FEED refers to the printer advancing its paper one line. The four X's shown correspond to four numbers stored in the data register referred to in the B-node of this data transfer line. This information is transferred to the programmable printer in the following manner:
1. transfer four bits of data in the register denoted by the B-node to bits 4 through 7 of the register denoted by the D-node (see FIG. 11),
2. disable the two data select lines of the programmable printer via bits 0 and 1 of the D-node register,
3. enable the load buffer command, bit 11, by bringing this bit to the low state,
4. repeating the above procedure three more times for the other three numbers to be printed,
5. give a print command on bit 15 by bringing this bit to the low state.
To print a pre-stored message the data transfer line must first tell the programmable printer what pre-stored message is desired. This is performed by putting on bits 0 through 7 of the D-node register the two binary coded decimal numbers corresponding to the desired pre-stored message. At this point the START FORM command, bit 12 is brought to the low state so as to enable this particular command. The programmable printer then knows what particular pre-stored message to initiate printing. The programmable printer prints this pre-stored message until variable data is needed from the computer controller system. At this time the BUSY output line from the programmable printer will become disabled while the FORM BUSY line will remain enabled. The data transfer line will then cause variable data to be transferred in a similar manner to when only variable data is to be transferred to the printer as described above. When the programmable printer has received sufficient data from the computer controller system the BUSY output line will go to the high state. When the programmable printer has completed its printing operation -- which may call for many insertions of variable data -- the FORM BUSY and BUSY output lines will go to the low state telling the data transfer line that the print operation has been completed. At this time another print request will be performed by the central processor if another print request exists during the next sweep.
It will be noted that only one printer may be driven by the central processor at any given time but that any number of print requests may be made at any time for any number of printers. Thus the present invention allows controlled machinery or processes to be monitored when conditions arise that warrant the monitoring of their information. Thus emergency signals may be generated by the printer or inventory information may be displayed by the printer in response to commands given to the programmable printer by the computer controller system. A thorough description of the particular mechanisms involved by the programmable printer in printing pre-stored and purely variable data is given in the U.S. patent application Ser. No. 443,329.
Since the programmable printer takes 500 milliseconds to print one line of print-out, and since a typical print request may contain many lines of print-out, it is quite obvious that if the central processor remained on a particular data transfer printer line when a print request was made, the remaining control by the computer controller system would be severely hampered by the long time delay. Because of this potential long time delay in printing messages, the computer controller system of the present invention utilizes a computer program that time-shares with a background computer program which in turn performs the printer drive function. Thus the foreground program performs the up-dating of all the electrical circuit lines in the computer controller system while the background computer program performs the printer drive function when the foreground computer program transfers control to the background computer program. In the preferred embodiment, the foreground computer program transfers control to the background computer program once during one entire sweep through all the electrical circuit lines and allows the background computer program to operate until an input/output request is generated. Since it has been emperically found that this amount of time is always less than 4 milliseconds, no restraits have been put on the background computer program with regard to the amount of time it may use before control is switched back to the foreground computer program. Thus the central processor continually performs a printer request function during each sweep through the electrical circuit lines until that printer data transfer line has had its request completed.
PRINTER FUNCTION SOLVING
As best seen in FIGS. 12A and 12B, the executive program for solving printer data transfer lines incorporates a non-relay logic solver for determining if a particular electrical circuit line (see FIG. 9) is programmed as a "PRINTER" function and also is requesting that this function be acted upon. The computer program with regard to this non-relay logic subroutine is listed in Table 3 on pages A-26 through A-27. The non-relay logic subroutine shown in FIGS. 12A and 12B is in the main sweep or foreground computer routine of the executive program, and therefore every sweep of the executive program through the electrical circuit lines will perform this subroutine for every non-relay electrical circuit line.
A typical printer data transfer line is shown in FIG. 9. The C-node code is 4121 while the A-node contains a normally open switch 71 referenced to a relay coil of electrical circuit line 1105. When the machine pointer of the executive program points to electrical circuit line 201 the executive program will determine if a 4 exists in the most significant digit of the C-node, step 241. If a 4 does not exist in the C-node the program will return to the logic solver while indicating that a non-relay return has occurred, step 243 and step 245. If a 4 exists in the most significant digit, the executive program knows that a printer data transfer line exists with respect to electrical circuit line 201 (see FIG. 9). The executive program then determines and makes the A-node history with respect to normally open switch 71, step 247. The executive program here performs the A-node history with regard to normally open switch 71 as was described earlier in the "MOVE" data transfer function.
After making the A-node history the executive program determines if this particular data transfer line's request bit is in the ON state, step 249. If normally open switch 71 had just closed, request for a print function has not occurred and the executive program then determines if the A-node had just changed state to the ON condition, step 251. If the A-node is in the OFF position, the executive program again returns to the non-relay return, step 243 and finally to the logic solver, step 245. If however the A-node of the line 201 is in the ON state, and if it has just been put in that particular state, the executive program sets the request bit in the request table to the ON state; indicating that this particular data transfer line is making a request for a print opertion, step 253.
As mentioned earlier any number of lines may make any number of print requests to any number of printers by only one line's request may be acted upon by the central processor at any particular time. Thus step 253 stores a bit regarding a particular data transfer line's request for a print operation. When the central processor has completed the print requests of electrical circuit lines with numbers lower than the present electrical circuit line; mainly lower than line 201, the executive program proceeds to initiate a print operation with regard to this particular electrical circuit line.
Nevertheless, once the request bit is in the request table for a particular electrical circuit line the executive program energizes the relay coil of the electrical circuit line, thus energizing relay coil 73 (see FIG. 9), step 254. This relay coil will be energized until the print request has been satisfied. Once the relay coil has been energized the executive program returns to the logic solver, step 256.
The next time the executive program comes to line 201 in its sweep through all the electrical circuit lines, decisional block 249 will indicate that this particular line's request bit is in the ON state. The executive program will then proceed to search the interface table for this line's particular number, step 258 (see FIG. 12B). The interface table contains information with respect to every "PRINTER" data transfer line that has requested a print operation. If information relating to electrical circuit line 201 is not found in the interface table the executive program searches the interface table for the PRINTER called for in the D-node of electrical circuit line 201, step 260. If the particular printer called for in the D-node is not found in the interface table the executive program will search the interface table for an empty slot where information regarding the particular "PRINTER" line can be stored, step 262.
If an empty slot is found, the executive program will proceed to determine if the B-node refers to an acceptable register, step 264. If the register is unacceptable, the computer program goes to an A connection, step 266 which in turn goes to the CLEAR REQUEST BIT functional block, step 268. At this point the request by this particular electrical circuit line for a print operation to be initiated will be removed since the B-node of this particular electrical circuit line is unacceptable for the transfer of data to the printer. The executive program will proceed to the non-relay return connection, step 270 where the relay coil of line 201 will be de-energized and the executive program will return to the logic solver for solving the remainder of the relay electrical circuit lines, step 272.
If however the B-node is acceptable the information in this B-node is stored in a scheduler's set of tables, step 274. The scheduler, as will be discussed later in this description, is the subroutine that passes control between the foreground executive program and the background PRINTER DRIVER subroutine.
Following the storing of the B-node data in the scheduler's set of tables the executive program determines if the inferred input register of the D-node is acceptable, step 276. The inferred input register is a register inferred by the executive program from the number in the D-node and, as mentioned earlier, is used by the executive program for the receipt of commands from the programmable printer. If the register inferred by the D-node is not acceptable, the executive program proceeds to step
266 and then clears the request bit in the request table with regards to this particular circuit line. If however the inferred input is acceptable the address of this particular register is also stored in the scheduler's set of tables, step 278.
Next the executive program determines if the C-node is acceptable, step 280. The executive program is merely determining if the remaining three numbers in the C-node call out a particular type of printer request that is acceptable to the executive program. Thus if a 3 is found to be in the second most significant digit of the C-node, the function is unacceptable since no printer subtype exists with a 3 code in the second most significant digit of the C-node (see Table 2). In this case the executive program again clears the request bit in the request table with regard to this particular circuit line's request for a print operation. If however the number in the C-node is acceptable,--as in the example shown in FIG. 9, the 4121 is an acceptable number -- the executive program proceeds to store in the scheduler's set of tables the information contained in the C-node as well as the line number (201) and the information in the D-node with regard to the register where information is to be deposited, step 282. The executive program then proceeds to energize relay coil 73 (see FIG. 9), step 284 and then returns to the logic solver, step 286.
Every subsequent sweep through this particular electrical circuit line the executive program will check to see if the PRINTER DRIVER has completed the print request made by this particular electrical circuit line. Thus the executive program comes to step 258 and finds that the interface table contains this particular line number and then determines if the printer has completed the request made by electrical circuit line 201, step 288. If the printer has completed the request, the executive program proceeds to clear the line number from the scheduler's list, step 290 and then clears the request bit in the request table, step 268. The executive program then turns the relay coil 73 of line 201 to the OFF position and proceeds to return to the logic solver, step 272.
If however the printer has not completed the print request, the executive program continues to decisional block 292 to ascertain if the coil RAM bit is ON. This bit is stored in a random access memory and is "ON" when the relay coil is energized. If the RAM bit is not ON, indicating an error function, the executive program proceeds to clear the D-node register address from the scheduler's list, step 294, then clears the line number from the scheduler's list, step 90, and then finally clears the request bit from the request table, step 268. Following this clearing of the request bit, the executive program will turn off the relay coil of this line, step 270 and return to the logic solver, step 272.
If however the coil RAM is ON, indicating that no error has occurred, the executive program will maintain coil 73 in the energized state, step 296 and will return to the logic solver, step 286. This sequence will continue until the PRINTER DRIVER has completed the print request made by electrical circuit line 201.
Once a particular electrical circuit line's request for a print operation to be performed by the programmable printer is accepted by the non-relay logic subroutine of the executive program, it is up to the printer scheduler to transfer control from the executive program to the PRINTER DRIVER subroutine, where the print request is performed. The flow diagram for the printer scheduler subroutine is shown in FIG. 13 and the program listing for the scheduler is given on page A-41 of Table 3.
The printer scheduler transfers control of the central processor from the executive program or foreground program to the PRINTER DRIVER or background program. The scheduler does this during free times in the main sweep of the executive program through the electrical circuit lines. Thus the PRINTER DRIVER subroutine is time-shared to the executive program and since the amount of time that this subroutine takes before returning to the executive program is always less than 4 milliseconds, the total sweep time of the executive program in the controlling of electrical circuit lines of the computer controller system is not appreciably affected.
More particularly, the printer scheduler first determines if the printer "ABORT" switch is activated, step 300, by ascertaining if relay coil 398 (see FIG. 10) is energized. If the ABORT switch is energized the printer scheduler clears all the information in the PRINTER DRIVER and turns the PRINTER DRIVER OFF.
If the ABORT switch is not energized, indicating that the printer is capable of printing the desired information, the printer scheduler next determines if the printer is busy, step 302. If the printer is not busy, indicating that the printer is unable to perform any printing operation at this particular time, the scheduler initializes the program counter of the PRINTER DRIVER, step 304, and returns control to the foreground or executive program, step 306.
If however, the printer is busy the printer scheduler knows that the printer is ready and willing to accept further information from the PRINTER DRIVER background subroutine. The executive program then initializes variable memory bits for the PRINTER DRIVER, step 308. Then the machine pointer that was performing the foreground executive program is switched to the printer scheduler program counter that is assigned to the particular programmable printer that is to print the desired information, step 310. At this point, the program counter of the executive program is no longer being used but the program counter of the PRINTER DRIVER is to be used. At this point, the printer will be driven by information generated by the background PRINTER DRIVER subroutine.
The actual transfer from the executive program to the PRINTER DRIVER is performed by a load machine pointer instruction, referred to generally as a LMP instruction, step 312. The LMP instruction is used by the PRINTER DRIVER subroutine whenever an input/output request is to be performed by the executive program. It is the method used to switch control back to the foreground program.
If the PRINTER DRIVER has completed the print request, step 314, the scheduler's subroutine initializes the program counter of the PRINTER DRIVER and returns to the main sweep, step 304 and 306. If the PRINTER DRIVER is not completed, the scheduler's subroutine returns to the main sweep without reinitializing the PRINTER DRIVER program counter. Thus the next time the scheduler transfers control to the PRINTER DRIVER the program counter in the PRINTER DRIVER is able to send control to the portion of the DRIVER where it had last been.
If during any time when a print request has been accepted, the computer controller system shuts down, and is then re-energized, the information stored in the scheduler's set of tables is cleared. The flow diagram for this power up-reset sequence is shown in FIG. 14 and the program listing is given on page A-21 of Table 3. As best seen in FIG. 14, if a power up of the computer controller system has occurred, the executive program will first initialize the logic solver program counter, step 320. Next, the data transfer line numbers and the D-node address list in the scheduler's set of tables are cleared, step 322. At this point, the interrupt return machine pointer is set to perform the solving of logic electrical circuit lines, step 324. The central processor then exits from the interrupt machine via the return machine pointer, step 326. The remaining blocks are used to update the timing functions of the central processor with regard to timer non-relay functions, step 328 and step 330.
Once the printer scheduler has switched control from the executive program to the PRINTER DRIVER subroutine, the PRINTER DRIVER generates information necessary to drive the programmable printer in the manner desired by the information stored in the C-node of the printer data transfer line. Since all input and output commands to and from the programmable printer must be received and transmitted by the foreground or executive program of the central processor, all input and output requests of the PRINTER DRIVER switch the machine pointer of the central processor from the background PRINTER DRIVER subroutine to the foreground executive program. After completion of an input/output request, which must occur within one sweep of the executive program through the electrical circuit line, the PRINTER DRIVER resumes its generation of information at the point where the input/output request was made. Thus the program counter for the PRINTER DRIVER is not reset when an input/output request is made by the PRINTER DRIVER.
The main flow of the PRINTER DRIVER subroutine is shown in FIGS. 15A and 15B, and the program listing for the entire PRINTER DRIVER subroutine is given on pages A-42 through A-50 of Table 3. As best seen in FIG. 15A, when the printer scheduler transfers control to the PRINTER DRIVER, step 340 the DRIVER first determines if the ABORT switch is energized, step 342. If the ABORT switch is energized, indicating that the programmable printer does not desire to print out any information from this particular data transfer line, the subroutine moves to the WIPOUT subroutine, step 344. As seen in FIG. 16D, this subroutine issues a CLEAR command to the printer by placing an octal 200 in the accumulator, step 345, which is transferred to the output port, step 360.
Following this subroutine the PRINTER DRIVER subroutine goes to a CLEAN connection, step 346. As best seen in FIG. 16B the CLEAN connection goes to a block where the D-node data is cleared from the scheduler's list of tables as well as clearing the output control port (register) that communicates with the programmable printer, step 348. Following this step, the PRINTER DRIVER goes to subroutine DXEXIT, step 350, where the DRIVER returns to the scheduler. As best seen in FIG. 16C, subroutine DXEXIT returns control to the scheduler, step 352 and then loads the machine pointer with the interrupt machine program counter, step 354, so as to return to the executive program at the point where the executive program had last been.
As best seen in FIG. 15A, if the "ABORT" switch is not energized, indicating that the programmable printer is capable of printing, the PRINTER DRIVER subroutine issues a "MOTOR ON" command to the programmable printer, step 356. As best seen in FIG. 16D, this subroutine causes the octal number 4 to be transferred to the accumulator of the central processor, step 358 and then the contents of the accumulator are transferred to the output port communicating with the programmable printer, step 360. At this point the program counter of the PRINTER DRIVER is saved in a memory location denoted by "SCRATCH PAD 2", step 362. Following this step, the subroutine goes to the DXEXIT subroutine 350 (see FIG. 16C) where control is given to the printer scheduler.
Since it takes a finite length of time for the programmable printer's motor to reach operating speed, the next time control is switched to the PRINTER DRIVER subroutine by the printer scheduler, the DRIVER goes to the WATSWP subroutine, step 364
where one sweep will be delayed before the PRINTER DRIVER performs any additional generation of information. As seen in FIG. 16D, the WATSWP subroutine saves the program counter of the PRINTER DRIVER in memory location "SCRATCH PAD 2".
On the next transfer of control to the PRINTER DRIVER the program counter of the DRIVER is pointing to decisional block 366 where the DRIVER determines if form data or variable data is to be printed by the programmable printer.
As it is well described in U.S. patent application Ser. No. 443,329, the programmable printer is capable of printing pre-stored messages from within the programmable printer wherein these messages may contain spaces where variable data is to be inserted. The programmable printer is also capable of printing purely variable data from an external source wherein the format of this variable data is governed by commands from the external source. If a zero is in the C-node of the printer data transfer line, the PRINTER DRIVER subroutine knows that variable data is to be printed by the programmable printer. At this time the subroutine reads the two least significant digits of the numbers stored in the C-node to ascertain the page type and line type formats for printing the variable data, step 368. The subroutine then generates addresses for the particular line and page types received from the C-node, step 370. At this point the PRINTER DRIVER subroutine jumps to the particular page and line type subroutines as defined by the two least significant digits of the C-node, step 372.
As shown in Table 6, there are various line and page types for the printing of variable data. A typical page type is shown in FIG. 16B in subroutine PAGE TYPE 6, step 373. As seen in FIG. 16A, this particular page type causes 10 line feeds to be generated, then the printing of variable data as designated in the format of line type N, where N contains a particular line type number, then another line feed and then another printing of data in accordance with the format of line type N, and finally a FORM FEED which causes the printer paper to be moved up to the next fold in the paper.
More particularly, the PAGE TYPE 6 subroutine goes to a LINFED subrout