Machine tool control system and method
Cross-References to Related Applications 
     The present application is a continuation of my pending applications Ser. No. 421,103 filed Dec. 3, 1973 and Ser. No. 426,602 filed Dec. 20, 1973 (now abandoned). Said applications are each a division of my earlier application U.S. Ser. No. 150,637 filed June 7, 1971 (now U.S. Pat. No. 3,816,723 issued June 11, 1974). Said application Ser. No. 150,637 in turn is a continuation in part of my application U.S. Ser. No. 744,392 filed July 12, 1968 (now U.S. Pat. No. 3,634,662 issued Jan. 11, 1972). Said application Ser. No. 744,392 is a continuation in part of my application U.S. Ser. No. 652,968 filed July 12, 1967 (now abandoned). My aforesaid application Ser. No. 150,637 also refers under 35 U.S.C. 120 to my applications U.S. Ser. No. 681,776 filed Nov. 9, 1967 (now abandoned) and U.S. Ser. No. 122,550 filed Mar. 9, 1971 (now U.S. Pat. No. 3,689,821 issued Sept. 5, 1972), said application Ser. No. 122,550 being a continuation of application Ser. No. 681,776. 
     My application Ser. No. 150,637 as filed incorporated by reference said applications Ser. No. 652,968, 681,776, 744,392 and 122,550, and the present application is a continuation in part of my applications U.S. Ser. No. 681,776 and 122,550. 
    
    
     BACKGROUND OF THE INVENTION 
     In existing machine tool control systems for punch presses and the like specialized numerical control hardware is furnished which is subject to rapid technical obsolescence. Said systems produce analog control signals for the drives of the respective machine axes corresponding to each successive positioning step, and signal the tape reader for more data as each step is completed. The preparation of numerical control tapes for the control systems is a time consuming and laborious process requiring separate facilities. 
     SUMMARY OF THE INVENTION 
     A basic objective of the present invention is to provide substantially more flexible machine tool control system capable of producing desired machine operations from basic data such as parts blueprints or the like with a substantially reduced overall expenditure of time and effort. 
     A further object of the invention is to provide such a machine tool control system and method which is competitive in cost with existing machine tool control systems. 
     Another basic objective is to provide a machine tool control system of substantially greater flexibility and throughput efficiency and yet which is of cost justifying its immediate introduction in job shops and other diversified parts production facilities. 
     A further object of the invention is to provide a machine tool control system and method capable of generating a coded record for a machine tool in response to both incremental and absolute input data in any desired order. 
     A still further object of the invention resides in the provision of a numerical control system and method enabling the changing of input commands to correct for previous minor positioning errors and/or mechanical tolerance errors so as to provide improved overall accuracy. 
     Still another object of the invention is to provide a numerical control system and method with provision for substantially expediting the generation of new numerical control programs. 
     Yet another object of the invention is to provide a system and method for facilitating the generation of machine positioning numerical control programs. 
     Another and further object of the invention is to provide a numerical control system and method capable of simultaneously controlling the operation of one or more machine tools and/or of assisting in the generation of new numerical control positioning programs for future use in controlling machine tools. 
     Still another and further object is to provide such a system capable of controlling the operation of a plurality of machine tools and simultaneously providing a stored program digital computer facility available for simultaneous program generation. 
     A more specific object of the invention is to provide a relatively economical and simple numerical control digital servo capable of accurately and reliably producing relatively large increments of movement in a given time interval. 
     A further more specific object is to provide such a digital servo having proportional slowdown which becomes effective as an end point is approached and which allows for a substantial overshoot without loss of positioning accuracy. 
     A still further more specific object of the invention resides in the provision of a digital to analog converter for supplying an analog error as a substantially linear function of plus or minus counts in the vicinity of zero while providing at least a limit value of analog error for digital input signals having a wide range of values at one side of the linear range. 
     The claims of the present application are directed to features not claimed in my U.S. Pat. No. 3,634,662 as follows: 
     (1) The present claims recite on-line connection means interconnecting the manually controlled input means, the source means and the stored programmed digital computer means to form one complete unitized device with a stored program digital computer means operable in a first mode to transmit to said computer memory means machine tool control instructions in accordance with coded input signals from the manually controlled input means for on-line manual generation of machine tool control instructions, and being operable in a second mode to transmit to said computer memory means machine tool instructions in accordance with a previously established sequence supplied from the source means for on-line editing of a previously established sequence of machine tool control instructions. 
     (2) A further feature relates to a unitized machine tool control system for a single machine tool operable both for generating new machine tool control instructions for the machine tool and for controlling movement of parts of the machine tool relative to respective machine tool axes so as to verify such previously established sequence. 
     (3) A further feature relates to a unitized machine tool control system for on-line manual generation of machine tool control instructions and on-line modification of a previously established sequence of machine tool constructions, and on-line operation of the machine tool selectively from the manually controlled input means and from coded record means. 
    
    
     Brief Description of the Drawings 
     FIGS. 1A and 1B show the X axis control circuits of a numerical positioning control system in accordance with the present invention, FIG. 1B being a continuation of FIG. 1A to the right, and dash lines being utilized to represent stages which have been omitted; 
     FIG. 2 is a diagrammatic illustration showing means for controlling the transfer of digital command signals from a stored program digital computer to the X and Y control circuits of a plurality of machine tools; 
     FIG. 3 is a diagrammatic illustration similar to FIG. 2 but showing the means for transferring data from the control circuits of the machines to the computer; 
     FIG. 4 is a schematic diagram showing details of the X axis synchronizer component of FIG. 1B, and also showing the circuitry controlling the X count inhibit line of FIG. 1A, and the connections to an absolute position readout device for the X-axis; 
     FIG. 5 is a diagrammatic showing of a limit gate circuit associated with the system of FIGS. 1A and 1B; 
     FIG. 6 is a block diagram illustrating an overall numerical control system and method in accordance with the present invention; 
     FIG. 7 is a schematic electric circuit diagram showing the circuit utilized for actuating the X-axis and Y-axis null detector relays, the circuit for the X-axis being specifically shown; 
     FIG. 8 is an electric circuit diagram showing the details of the relaxation oscillator circuit utilized in various parts of the present system; 
     FIG. 9 is a schematic electric circuit diagram showing the arrangement of certain relays and of the punch operating solenoid and indicating certain noise suppression features which have been incorporated; 
     FIG. 10 is a diagrammatic illustration of a representative portion of the tape reader interface component utilized in the illustrated system; 
     FIG. 11 is a diagrammatic illustration of certain components of the machine interface system which provide for periodic interrupt operation of the computer and enable the computer to communicate with the control system servo circuits, to execute various auxiliary functions, to sense the end of a commanded movement, and to determine the status of various points of interest in the system during an interrupt cycle; 
     FIG. 12 illustrates a numerical control system in accordance with the present invention utilizing more than one machine control station and/or more than one operator&#39;s console station for time-sharing tape preparation and the like, the figure also indicating the feasibility of adding on additional control or console stations as desired; 
     FIG. 13 is a diagrammatic illustration of circuitry for enabling the computer to effect a tool change in response to an input command. 
    
    
     DESCRIPTION OF THE ILLUSTRATED EMBODIMENTS 
     By way of introduction to the circuitry of a preferred embodiment in accordance with the present invention, the components shown in FIGS. 1-11 have been assigned respective general reference numerals, and a brief description of each such component is given in Tables I through XI of my U.S. Pat. No. 3,634,662. The components of each figure have in general been assigned three digit reference numerals wherein the first or most significant digit of the reference numeral corresponds to the first number, (the reference numerals in FIGS. 1A and 1B beginning at 100, those in FIG. 2 beginning with 200 and so forth) except that the same component appearing in successive drawing figures has received the same reference numeral. The tabulations also refer to a suitable commercial source where the component is commercially available, or otherwise identify or explain the structure of the component. 
     Operation of FIGS. 1A and 1B 
     In operation of the components of FIGS. 1A and 1B, digital command signals from the accumulator (AC) of computer 603 (FIG. 6) are supplied via bus cable 130. As indicated by reference characters applied to conductors branching from the cable 130, the input gates of counter stages XL11 and XU11 are connected with the BAC11 output from component 201, FIG. 2, of the computer output circuits 200. The read in gates for stages XL11 through XL0 are represented by block 203 in FIG. 2, and the read in gates for stages XU11, XU10, XU9, XU8 and XU0 are represented by component 204 in FIG. 2. The BAC10 terminal of the computer is connected with stages XL10 and XU10, the terminal BAC9 is connected with XL9 and XU9, and the terminal BAC8 is connected with XL8 and XU8. The terminals BAC7 through BAC1 are connected with counter stages XL7, XL6, XL5, XL4, XL3, XL2 and XL1, respectively. The BAC0 terminal of the computer is connected with the input gate of counter stage XL0 and also with the input gate of counter stage XU0, both shown in FIG. 1B. 
     Thus, when the load XL component 101 is selected by virtue of the output of component 201, FIG. 2, the gates 203, FIG. 2, will be enabled to load digital command signals from the computer into the XL counting stages. Similarly when the load XU component 114 is selected, digital command data will be loaded into the XU counting stages of FIG. 1B. 
     When a positioning cycle is then initiated, an error signal will be generated at the output 131 of the digital to analog converter stages 105-107 which will determine the direction and speed of operation of the X-axis servo drive 111. As shown in FIG. 1A, the complement outputs of stages XL11-XL6 are supplied via lines 141-146 to the inputs of the converter stages. The circuitry specifically referred to in Table I is such that when XL11 is clear, conductor 141 is held at minus 3 volts so as to provide a zero volt output from amplifier 151. On the other hand, when the counting stage XL11 is set, the output at line 141 is at ground potential, and amplifier 151 supplies a predetermined voltage increment with respect to the output line 131. If this output voltage increment is arbitrarily assigned a value of unity, then the outputs of amplifiers 152-158 would have relative values of 2, 4, 8, 16, 32, 64, and 128, respectively. 
     Conductor 160 leading to the input of amplifier 157 of converter stage 107 is connected to the output of inverter 512, FIG. 5. Conductor 161 leading to the input of amplifier 158 of converter stage 107 connects with the set output line 162 of counting stage XU0. Thus if stage XU0 is set, line 161 is at a potential of minus 3 volts and amplifier 158 contributes nothing to the output voltage at 131. On the other hand, if counting stage XU0 is in a clear (or reset) condition, then the output at line 161 will be at ground potential, and amplifier 158 will supply its relative voltage increment of 128. It will be observed that the connection 161 to the set output of counting stage XU0 differs from the connection of conductors 141-146 to the clear or complement output terminals of stages XL11-XL6. 
     The purpose of the illustrated connections to the respective counting stages and the desired functioning of the limit gate circuitry of FIG. 5 will be apparent from the tabulations entitled Table A1, Tables A2, Table B1, and Table B2 at columns 9 and 10 of U.S. Pat. No. 3,634,662 which show the operation of the circuits of FIGS. 1A and 1B for the case of a positive digital command signal and for the case of a negative digital command signal from the computer. The Tables A1, A2 and B1, B2 will be referred to in a collective sense as Tables A and B, respectively. 
     It will be observed from a consideration of Tables A and B that the amplifiers 157 and 158 of converter stage 107 are switched in such a way that for high positive counts above plus 63, the relative output from the converter stages at line 131 is maintained at a relative high value, for example above a limit value of plus 63. Between a count of plus 63 and minus 64, the output at 131 varies as a linear function of the count in the counting stages. For counts below about minus 64, the output at 131 is maintained at an absolute value above the limit value of about 64. Further, it will be observed that as the count in the counting stages increases from plus 63 to plus 127, the output at 131 continues to increase in a linear fashion. For a count of 128, however, the output at 131 falls to a value of plus 64 on a relative scale previously referred to. As the count further increases, the output at 131 again linearly increases to a maximum value of 127. This fluctuation in the output at 131 continues as the count in the counter stages continues to increase so long as the counting stage XU0 remains in the clear condition, and thus supplies an analog output of plus 128 which is substantially equal to the bias of minus 128 in the relative units which is introduced at amplifier component 109. Similarly, as the count in the counting stages progress below minus 64, the analog output at 131 will linearly increase in the negative direction until a count of minus 128. At a count of minus 129, the output at 131 abruptly decreases to minus 64. Further counting in the negative direction leads to a further linear change in analog output voltage until a count of minus 256 is reached. At a count of minus 257, the output at 131 again abruptly decreases to minus 64. It will be observed, however, that beyond a count of plus 63 and beyond (in the negative direction) a count of minus 64, the net analog voltage at output 131 never falls below an absolute value of approximately 63 in the relative units previously referred to. 
     Referring to circuit 109 in FIG. 1B, a bias reference voltage of plus 10 volts may be introduced at point 170. One terminal of a resistor 171 is connected to circuit point 170, and a Zener diode 172 is connected between the other terminal of resistor 171 and ground. A 1000 ohm potentiometer 173 may be adjusted with a count of zero registered in the counting stages so as to provide a zero analog output at 174 under these conditions. The values of the circuit elements in component 109 may be as follows: resistor 171, 510 ohms; voltage rating of Zener diode 172, 5.6 volts; zero adjustment potentiometer 173, 0 to 1000 ohms; resistor 175, 470 ohms; resistor 176, 100 ohms; gain adjustment potentiometer 177, 0 to 5,000 ohms; and resistor 178, 500 ohms. Amplifier component 179 may be a Burr Brown Model 1507 operational amplifier. 
     Null detector component 110 includes an amplifier circuit 180 which is adjustable by means of two potentiometers (7-P1 and 7-P2, FIG. 7) to actuate relay 181 whenever the input to the amplifier circuit 180 remains within a predetermined range about the zero error value. Thus one adjustment potentiometer of component 110 may adjust a first comparator (comparator 700, FIG. 7) of circuit 180 to provide an enabling output level whenever the input potential corresponds to a count in the counting stages of less than plus three, while the second adjustment potentiometer may adjust a second comparator (comparator 701, FIG. 7) to provide an enabling output whenever the count in the counting stages is greater than minus 3. Thus when both comparators 700 and 701 provide an enabling output level, the count will be between plus three and minus three. The normally open contacts 182 of relay 181 when closed may enable an energizing circuit for a relaxation oscillator (oscillator 1108, FIG. 11) which is adjusted to respond only when the energizing circuit remains closed for a predetermined time interval such as 100 milliseconds. Thus, if the count in the counting stages remains between plus 3 and minus 3 for 100 milliseconds, for example, (and if the Y null detector contact 1130 is closed during the interval), the relaxation oscillator will become operative to discontinue the positioning cycle. 
     Because of the operation of the null detector circuitry, it is possible for the machine axis to come to a stop with a count other than zero registered in the counting stages. The count remaining in the counting stages may be determined so as to be well within the tolerance requirements of the machine tool, and yet with many successive positioning steps, it is conceivable that the absolute error of a later end point with respect to a fixed reference point would be unacceptable. To deal with this possibility, provision is made for the computer to read the condition of the counting stages when the axis has stopped. The computer could be programmed in a number of different ways to take care of the problem, but in the illustrated embodiment, provision is made for the computer processor to algebraically combine the remainder in the counting stages with a succeeding command so as to provide a modified command signal to the control circuits which will correct for the error in the previous positioning operation. 
     For the purpose of determining the condition of the counting stages after the machine axis has stopped, the counting stages are provided with output lines such as those indicated at 186-195 leading from the set output lines of stages XL11-XL5, XL0, XU11, XU8 and XU0. Similar output lines would be provided for stages XL4, XL3, XL2, XL1, XU10 and XU9. The XL output lines such as 185-192 lead to an XL Read Out Gates component 104 controlled by a Read XL component 100. The XU Read Out Gates component 108 receives the output lines such as 193-195 of the XU counting stages and is controlled by the Read XU component 113. As indicated by the reference characters applied to the output lines of the XL Read Out Gates component 104, cable 197 connects with terminals AC11 through AC0 of the computer accumulator. Similarly the output lines from the XU Read Out Gates component 108, FIG. 1B, lead to terminals AC11, AC10, AC9, AC8 and AC0, respectively. The gate components 104 and 108 are, of course, enabled on different cycles so that the computer can distinguish the AC11 output of gate 104 from the AC11 output of gate 108, for example. 
     In the foregoing description, certain output lines which connect with the same terminal of the computer have been identified with a reference character indicating this fact. Specifically the designations AC0 through AC11, and BAC0 through BAC11 have this significance. Individual reference numerals have also been applied to the respective conductors bearing the more general reference character designations. It is believed that this procedure will facilitate comprehension of the drawings by those skilled in the art. Similarly in the following description the outputs from the XL and XU counting stages have been designated by the same reference characters as used for the respective counting stages. Thus, in FIG. 1A, an output line from the &#34;set&#34; output terminal of counter stage XL5 has been designated by the reference character XL5, while the output from the &#34;clear&#34; terminal of counting stage XL5 has been designated with the symbol for the complement of XL5 (XL5). Referring to FIG. 1A, it will be observed that line 191 is connected to a common circuit point with line XL5 at the &#34;set&#34; output of counting stage XL5.) Certain other conductors have been given a general character designation and a reference numeral designation as well. See for example conductors 160 and 161 at the lower right in FIG. 1A. 
     Referring to the lower part of FIG. 1B, the output line 174 from amplifier 109 is connected to the input of the X-axis servo drive component 111 whose mechanical output is indicated by dash line 198. The transducer component 112 may be of the photoelectric type and include a suitable preamplifier so as to supply square waveform signals at the output lines M1X and M2X leading to synchronizer 117. The synchronizer component will enable the line designated as the complement of XM (XM) if the transducer is rotating in one direction and will enable the line designated as the complement of XP (XP) if the transducer is being driven in the opposite direction. The synchronizer 117 will also supply an X clock pulse at line 199 for each increment of rotation of the transducer 112. By way of example, the transducer may be mechanically coupled to the output shaft 198 in such a way as to produce an X clock pulse for each increment of rotation corresponding to a linear displacement of the machine axis of 0.001 inch. The X clock pulses from the synchronizer are supplied to the input of counting stage XL11 which is arranged so that each clock pulse causes the counting stage to change its state. The stage XL11 thus acts in the manner of a toggle switch or binary counting stage. If the line XM is enabled, the counting stages will count in the &#34;up&#34; or positive direction. On the other hand if the line XP is enabled, the &#34;set&#34; output of each counting stage is effectively coupled to the next succeeding counting stage so that the counting stages will count in the &#34;down&#34; or minus direction. 
     The Hold X component 115 causes synchronizer 117 to interrupt the supply of X clock pulses for a sufficient interval to ensure that the counting stages may be inspected by the computer. The &#34;hold&#34; interval introduced by actuation of component 115 is sufficiently short, however, so that any feedback pulse from transducer 112 which might occur during this interval could only be blocked for a portion of its duration. Thus even if a slight movement of the feedback transducer occurred during the hold interval, the count in the counting stages would reflect such movement (Further details of the &#34;Hold X&#34; operation will be apparent from the circuit shown in FIG. 4 and described below.) 
     After the computer has read out the condition of the counting stages with the machine axis essentially stopped, the computer will actuate Clear XL component 102 and the Clear XU component 116 to reset the counter to a zero reading in preparation for the transfer of a new digital command signal. Of course, if the read out from the counter shows an error in excess of tolerance, the computer may be programmed to delay clearing the counter, and to enable the servo drives for an additional interval. 
     Operation of FIGS. 2 and 3 
     In FIG. 2, the BAC output bus 130 has been indicated as leading to input conductors 221-232 of gate component 203. These same reference numerals have been applied in FIG. 1A and FIG. 1B to assist in correlation of these figures. Input conductors 221-227 as shown in FIG. 1A are also designated by reference characters BAC11 through BAC5 to indicate that these conductors are connected by means of cable 130 with terminals BAC11 through BAC5 of component 201, FIG. 2. Similarly, conductor 232 in FIG. 1B has also been designated by the reference character BAC0 which is the terminal to which this conductor connects at component 201. The input conductors to gate component 204 in FIG. 2 have been designated by reference numerals 241-245 and lead, respectively, to terminals BAC11, BAC10, BAC9, BAC8 and BAC0. In practice, the cable 130 may lead to a connector at the component 203, and a further cable such as indicated at 130a may lead from component 203 to component 204, while cable 130b may lead from component 204 to component 205, cable 130c may lead from component 205 to 206, and cable 130d may lead to a further component of a second machine tool, for example. By actuating components 203, 204, 205, 206 and subsequent corresponding components in sequence, a desired number of components may all connect with terminals BAC11 through BAC0 of component 201. Thus, conductors 251-262 of gate 205 would connect with terminals BAC11 through BAC0 of component 201 and conductors 271-273 of component 206 would connect with terminals BAC11, BAC10 and BAC0 of component 201. 
     The manner of selection of gates such as 203-206 in sequence is explained in detain in The Digital Small Computer Handbook (cited in Table II, supra) at pages 429 and 430, and a specific circuit is disclosed for components 101, 114, 207, and 208 in The Digital Logic Handbook (cited in Table I, supra) at page 142, and these disclosures are incorporated herein by reference. In general, the BMB cable 280 from component 201 (or two multi-conductor cables as represented by line 280) may contain at least 12 conductors. Lines 281-284 may represent connections from one of each of six pairs of conductors of cable 280 to components 101, 114, 207 and 208, for example. The memory buffer register of the computer may have bits 3-8 thereof connected at both the binary 1 and binary 0 outputs thereof to the component 201, and cable 280 may connect with terminals MB3(1) through MB8(1) and MB3(0) through MB8(0) of component 201. The corresponding outputs of component 201 would be BMB3(1) through BMB8(1) and BMB3(0) through BMB8(0). It may be noted that the convention used for the selectors herein is to use the middle two digits of the code numbers of the selectors to indicate the octal complement of the BMB selection pattern. The final digit indicates whether an 10T1, 10T2 or 10T4 pulse is supplied. The initial 6 in the code indicates an input/output selection signal. Thus the selector 101 with a code of 6724 would be addressed on BMB cable 280 by a selection code of 72 (octal), with the final digit 4, indicating that an 10T4 is to be transmitted. Thus, taking the selection code for component 101 as 72 (octal), the following terminals would be connected to component 101 via cable 281: BMB3(0), BMB4(0), BMB5(0) and BMB6(1), BMB7(0), BMB8(1). To give one further example, if the code for component 114 is 73 (octal), then cable 282 would connect with the following terminals: BMB3(0), BMB4(0), BMB5(0) and BMB6(1), BMB7(0), BMB8(0). It is evident that any number of additional device selectors may be assigned two digit octal codes (up to a total of 63 in decimal notation). The operation of each of the selector components such as 101, 114, 207, 208 in FIG. 2 and such as 100, 113, 302 and 303 in FIG. 3 will be apparent from the foregoing description. 
     In FIG. 2, branch cables are indicated at 285-288 leading from IOP cable 290 to selectors 101, 114, 207 and 208, respectively. The cable 290 is connected to the output of an 10P bus generator component 291 of the computer, and the cable 290 may comprise three conductors carrying respective pulses 10P1, 10P2, and 10P4 as described, for example, in The Digital Small Computer Handbook, supra, at pages 88-90, pages  221-223, and pages 426-427, and this description is incorporated herein by reference. The device selector components when enabled regenerate the respective 10P pulses as 10T command pulses. The positive or negative version of any of the successive regenerated pulses 10T1, 10T2 or 10T4 may be supplied via output lines such as indicated at 291-294 in FIG. 2. The output terminals in FIG. 2 to which conductors 291-294 are connected are designated by letters which correspond to the distinctive letters in the terminal designations utilized in the commercially available module W103. Thus, terminal S of selector 101 may supply an initially positive-going version of the 10T4 pulse, the T terminal of selector 100 may supply an initially negative-going 10T4 pulse, for example, and the terminal F of selector 113 may supply an initially negative-going 10T1 pulse. The timing of the 10T cycle is shown at page 425 of The Digital Small Computer Handbook, supra, and this disclosure is incorporated herein by reference. 
     In FIG. 3, the reference numeral 197 designates generally the cable extending between the accumulator terminals AC11 through AC0 of the computer and the successive gate components such as 104, 108, 300 and 301. As mentioned with reference to cable 130, the cable 197 may actually comprise successive lengths of multi-conductor cable, for example connecting from component 301 to the computer, connecting between components 300 and 301, connecting between components 108 and 300, and connecting between components 104 and 108. Further lengths of cable may connect gate component 104 with gate components for other axes or for the axes of other machines, or separate buffering may be utilized in conjunction with a separate cable directly from the computer as will be apparent to those skilled in the art. 
     In FIG. 3 conductors leading from components 104, 108, 300 and 301 have been assigned reference numerals 321-332, 341-345, 351-362 and 371-373. The reference numerals 321-327, 332 and 341, 344 and 345 have been applied to the corresponding conductors in FIGS. 1A and 1B. Conductors 321-332 connect with terminals AC11 through AC0 of the computer, conductors 341-344 connect with terminals AC11 through AC8, conductor 345 connects with terminal ACO, conductors 351 through 362 connect with terminals AC11 through ACO, conductors 371 and 372 connect with terminals AC11 and AC10, and conductor 373 connects with terminal ACO. 
     The structure and function of conductor cables 385-388 and conductors 391-394 in FIG. 3 will be apparent from the comparable discussion with respect to cables 285-288 and conductors 291-294 of FIG. 2. 
     Operation of FIG. 4 
     In FIG. 4, 90° out of phase rectangular waveforms arrive at lines M1X, M2X from the digital feedback transducer 112, FIG. 1B. The function of the synchronizer circuit is to energize output line XM (complement) for one direction of rotation of the transducer, and to enable the output line XP (complement) for the opposite direction of rotation of the transducer. For one direction of rotation of the transducer the input at M2X leads the input at M1X by 90°, and for the other direction of rotation of the transducer, the input at M1X leads the input at M2X by 90°. If a positive signal level first appears at conductor 420 in a cycle of operation, for example, gates 421 and 422 will be enabled. A subsequent positive going signal at 423 is then transmitted via line 424 to the pulse input of gate 421, and a negative going pulse at the input of pulse amplifier 404 generates a positive pulse at line 425 leading to gate 426. Gate 426 is enabled if flip-flop 407 is clear, and a negative pulse is transmitted to the set input of flip-flop 406 placing this flip-flop in a set condition. The result is a negative output level at conductor 427 which serves to disable gate 428 at the input of flip-flop 407. The negative level at the input of driver amplifier 408 results in an enabling level at the output conductor 429 connected with conductor XM (complement). The setting of flip-flop 406 produces a positive going pulse at output line 431 leading to NOR gate 410, which thus supplies a negative going pulse to NAND gates 411 and 412. With flip-flop 413 in a clear condition, output line 432 thereof is negative enabling gates 411 and 412. Gates 411 and 412 thus transmit positive going pulses to the relaxation oscillator components 414 and 415. If the oscillator 414 supplies a positive going output pulse after a delay of 27 microseconds, while the component 415 supplies a positive output pulse after a delay of 32 microseconds, the result will be the transmission of a clock pulse of 5 microsecond duration to output conductor 199. When the output of component 415 goes positive, it serves to clear flip-flop 406, disabling line XM (complement) and supplying a negative potential at line 431 which is transmitted by gates 410 and 411 to shut off oscillator 414 and place the circuit in condition for a further cycle. 
     If now the negative going portion of the waveform at 420 leads the negative going portion of the waveform at 423, gates 441 and 442 will be enabled, and the negative going waveform at 423 will be transmitted by inverter 403 as a positive going pulse, resulting in a negative going pulse at the output of gate 441. Thus, output line XM (complement) will continue to be enabled, causing the counting chain of FIGS. 1A and 1B to count up. Thus, the operation of the circuit continues so long as the transducer component 112, FIG. 1B, continues to rotate in the same direction. 
     If the direction of rotation of the transducer reverses, the waveform at 423 will go positive (to ground potential) 90° ahead of the waveform at 420, enabling gates 451 and 452. The subsequent positive going pulse of the waveform at 420 is transmitted by gate 452 as a negative pulse triggering pulse amplifier 405 and serving to place flip-flop 407 in the set condition. In this case, output line 453 is driven negative to place line XP (complement) in enabling condition, and thus causing the counter to count down. At the same time, the positive or ground level output at conductor 455 is transmitted by NOR gate 410 and by NAND gates 411 and 412 to trigger oscillators 414 and 415 and generate a further clock pulse at line 199. Similarly, on the next half cycle of the waveforms at 420 and 423, gates 461 and 462 will be enabled through inverter component 403, and flip-flop 407 will be again placed in set condition to generate another clock pulse at line 199. 
     The oscillators 414 and 415 preferably employ the circuit of FIG. 8, but with modified values for circuit elements 8-R9, 8-R10, 8-C2 and 8-C3 as follows: for oscillator 414, total series resistance (8-R9 plus 8-R10) 10,000 ohms, and total shunt capacitance (8-C2 plus 8-C3) 0.0022 microfarad; for oscillator 415, total series resitance 15,000 ohms, and total shunt capacitance 0.0022 microfarad. 
     For the sake of convenience there has been added to the showing of the synchronizer in FIG. 4 a representation of the X-axis transducer circuits component 112 which supplies the M1X and M2X waveforms. The transducer also supplies a pulse MLX upon each complete revolution thereof at a predetermined point. These revolution marker pulses MLX are supplied via a conductor 440 to the input of inverters 416 and 417. The output of the trigger 419 is normally at ground potential to enable the gate at the input of flip-flop 418, so that the pulses from inverter 417 are transmitted to the set input of the flip-flop maintaining the flip-flop in a set condition. When however the carriage of the machine tool approaches the extreme right limit of its travel (along the X axis), the right limit switch 441 is closed and remains closed as the carriage continues its movement to the right. This provides a negative level output from trigger 419 blocking the MLX pulses and placing the flip-flop 418 in a clear condition. The result is a negative potential at the output of gate 436 which disables the input gates in input lines 119 and 119a leading to the first counting stage XL11, FIG. 1A. The X count inhibit line has been given the reference designation 445 in FIG. 1A and in FIG. 4. If selector 1140 is placed in the manual position, the output of trigger 434 is at a negative level, the output of inverter 435 is at a ground level, and the output line 445 is at the negative count inhibiting potential regardless of the condition of the right limit switch 441. This circuitry will therefore illustrate the manner in which provision may be made to place the machine tool under manual control. 
     Where the count has been inhibited because of the operation of the right limit switch 441, the count will be resumed after the carriage releases the limit switch to its open condition and the first marker pulse MLX is received. The carriage is not programmed to move to its extreme limit, so that limit switch 441 would not be closed in the course of the correct execution of a program. 
     Operation of FIG. 5 
     In FIG. 5, components 500-504 constitute a negative input NAND gate and a positive input NOR gate, and the same is true of components 506-511. The set outputs of counter stages XU8 through XU11 and XL0 through XL5 are thus connected to one gate circuit, while the complements, the clear outputs of the same counting stages together with the clear output of counting stage XUO are supplied to the righthand gate circuit shown in FIG. 5. A study of the gate circuitry will reveal that the operation indicated in Tables A1, A2 and B1, B2 will be obtained with this gate arrangement. Thus, for a high positive count, counting stage XUO will be in a clear condition providing a negative level input at gate 510, while one or more of the other inputs to gates 506-511 will be at ground potential corresponding to a set condition of the associated counting stage. The gate 511 acting as a positive or ground input NOR gate provides a negative level at the input to gate 512. Similarly, with counting stage XUO clear, the set output XUO will be at ground potential at the input of gate 505, providing a negative level at the output of gate 505. The negative input to gate 512 results in a ground level output which when supplied to amplifier 157 causes the amplifier to provide an analog voltage increment having a relative value of +64. Thus, even if each of stages XL11 through XL6 is in clear condition, the output at 131 of the converter stages will always be at least plus 64 where the output of amplifier 151 is taken as a relative value of unity. 
     When the count in the counter is plus 63 or less, all of the counting stages above XL6 will be in a clear condition, providing a negative level input to each of gates 506-511. The result will be a ground level input to gate 512 and a negative level output from gate 512 which serves to switch off converter amplifier stage 157. 
     When the count in the counter goes to minus 1, counting stage XUO assumes a set condition, providing a ground level input to gate 510 and a negative output from gate 511. Since all the stages above XL6 will be in set condition, there will be a negative level input to each of gates 500-504, resulting in a ground level output from gate 504 and a negative level output from gate 505. The negative level input to gate 512 results in a ground level output from gate 512 agan enabling converter stage 157. 
     When the counting stages reach a negative value above minus 64, one or more of the counting stages above XL6 will be in a clear condition, providing a ground level input to one of the gates 500-504 and thus a negative level output from gate 504. The set output of XUO is also negative resulting in a ground level output from gate 505 and a negative level output from gate 512 which serves to disable the converter stage 157. 
     Operation of FIG. 6 
     Referring to FIG. 6, computer 603 may have a first stored program therein enabling it to interpret command input numerical positioning data from components 600, 601 so as to transmit the data via communication channels such as generically indicated at 620 and 621 to the upper and lower stages of the X axis and Y axis counting chains. Once these digital command signals have been transmitted to the digital servo loops which are generally designated by the reference numbers 622 and 623, the servo loops are capable of independent functioning in initially driving the respective machine axes 605 and 607 at relatively high speed toward the commanded end points. When the respective axes come within about 0.063 inch of the respective end points, for example, the digital to analog converter stages of FIG. 1A provide a proportional analog error signal, and the machine axes in response to the diminishing magnitude of the analog error signal progressively slow down the respective axes. The linear region of the converter stage error signal as a function of count is such as to enable an overshoot of for example 0.063 inch without losing control of the axis. As soon as both axes remain in the vicinity of the required end point for the required time, the null detector components such as X-axis null detector 110, FIG. 1B, signal the computer, for example via channel 627, machine positioning interface component 628 and channel 629. Other operations of the computer 603 may thus be interrupted by means of a program interrupt signal from the interface 628, at which time the computer will energize the axis Hold component such as 115, FIG. 1B and read the contents of the associated counter chain. The stored program then may result in the combining of the remainder read from the counting chain with the new command in such a way as to compensate for any tolerance error in the preceding positioning cycle. Thus, if in the preceding cycle the X-axis had moved one count too far in the positive direction, and the next command were for a positive movement, this one count would be subtracted from the new positive command signal, and the result entered into the X-axis counting chain in the next cycle. 
     When both axes have sufficiently approached their end points to actuate the associated null detector circuits, the computer 603 is advised, for example via channels 627, 628, 629 and 631, 628, 629. The computer is then in a position to determine if a punch, tool change, or other operation should be initiated before a new positioning cycle takes place. Such commands may be transmitted as illustrated in FIGS. 9 and 11. 
     The computer may have a further stored program so as to enable the generation of new programs from the console 602 simultaneously with the machine control operation. This second stored program may greatly facilitate the generation of new programs, for example by automatically keeping track of block number, storing successive blocks without actually punching the same in a record tape, and advising the operator when he has programmed a move off the piece part. while the program being generated is stored in the memory of the computer, any items thereof may be recalled to the console 602 for modification or checking, and the computer may also provide arithmetical checks and the like. When desired, the operator can then signal the computer to read out the numerical control program so generated from its memory and enter the program on punched tape or the like. It has been found in practice that the assistance of a stored program in the computer during numerical control program preparation greatly speeds this operation. 
     Fig. 7 
     fig. 7 shows the circuit actually employed for the null detector component 110, FIG. 1B. Potentiometers 7-P1 and 7-P2 are adjusted to enable operation of relay 181 for input voltages at 703 of relatively positive and relatively negative values, respectively. To adjust the potentiometers, a signal of the threshold value corresponding to the plus or minus count limit desired is supplied at 703 and an oscilloscope is connected at the relevant test point 704 or 705. The associated potentiometer 7-P1 or 7-P2 is then adjusted until the signal at the test point shifts between a relatively positive potential and a relatively negative potential. Back and forth manual adjustment of the potentiometer in the neighborhood of the correct setting will cause the output at the test point to oscillate between the two potential levels, and the potentiometer may thus be set at substantially the critical setting which corresponds to the threshold level input. As previously described in connection with FIG. 1B, when both comparators 700 and 701 provide an enabling output level, the relay 181 will be energized signifying that the error count is between the desired plus and minus values (such as plus three and minus three). 
     Fig. 8 
     fig. 8 shows an exemplary circuit for relaxation oscillator 1108 of FIG. 11. The oscillators 414 and 415, FIG. 4, have comparable circuits but with components 8-R9, 8-R10, 8-C2 and 8-C3 selected to give the desired time constants for the respective circuits. Oscillator 1108 may be constructed to provide a delay of 100 milliseconds, for example, so as to preclude response in the case of momentary closure of the contacts 182 and 1130 (FIG. 11) of the X and Y null detector relays 181 and 1107. 
     Fig. 9 
     fig. 9 shows certain relay circuitry and includes a push-button 922 for establishing &#34;power on&#34; condition, and a pushbutton 923 for shutting off power. A further pushbutton is shown at 924 controlling energization of relay 9-PM which controls punch motion. A further pushbutton 925 serves to disable punch motion. The computer may supply an enabling potential to line 930 for energizing relay 9-K2 controlling energization of punch solenoid 915. 
     It has been found important to provide arc suppressing elements and damping circuits as indicated for example, at 911, 919, 920, 907, 912, 913, 916, 917 to avoid the generation of noise which might adversely affect the accuracy and reliability of the positioning operation. Steps were also taken to shield and remove critical signal lines from probable transient lines (especially those having inductive loads) and to run these transient lines e.g., servo armature and field, relays and solenoids, in twisted pairs to reduce electrical interference. 
     Fig. 10 
     fig. 10 illustrates exemplary details of the tape reader interface component 601 of FIG. 6. A portion of the circuit is illustrated including conductors 1031-1036 which are detachably connected with circuits in the tape reader 600 known respectively as &#34;OV&#34; channel from which sprocket hole pulses are received, &#34;run, stop, forward&#34; channel, &#34;run, stop, reverse&#34; channel, &#34;ground&#34;, &#34;data channel 8&#34;, and &#34;data channel 7&#34;. Data channels 6 through 1 of the tape reader may be connected to circuits corresponding to the circuit 1022, 1015, 1007 (associated with data channel 8) for transmitting data to the computer via conductors such as indicated at 1041 (for data channel 8) and 1042 (for data channel 7). Conductors 1043 and 1044 connect with the program interrupt request bus 1120 (FIG. 11) and the skip input bus 1121 (FIG. 11) of the computer. See The Digital Small Computer Handbook, supra, pages 425, 430-431, and 435-436 for further details. When a line of data has been read into the register including components 1015 and 1016, the reader flag flip-flop 1014 is set normally to transmit an interrupt signal to the computer. The computer responds to the interrupt signal after completing the current instruction, storing the number of the next instruction in a predetermined memory location and proceeding to determine the cause of the interrupt signal. The computer may then respond to actuating selector components 1008-1010 (which constitute a single device selector Module W103). The 10T1 negative pulse on the output line from component 1008 serves to advise the computer of the status of reader flag 1014. The IOT2 negative pulse from component 1010 serves to interrogate the line of gates such as 1007, the information stored in the corresponding line of registers such as 1015 and 1016 being accepted by the computer if reader flag component 1014 indicates that new information is present (via skip conductor 1044). The IOT2 positive-going pulse from component 1010 may be supplied to conductor IOT2 to &#34;reset&#34; or &#34;clear&#34; the reader flag flip-flop 1014. (The IOT12 conductor may connect with terminal AL of the commercial Module type W103 previously referred to.) The IOT4 positive-going pulse from component 1009 then serves to reset register components 1015 and 1016, and to insure that reader flag component 1014 is reset. It also serves to clear or reset feed start flip-flop 1000, and to set reader-run flip-flop 1013. An enabling potential is then supplied at conductor 1032 to restart the tape reader which then transmits another line of data, and a further sprocket pulse to conductor 1031 which serve to again reset the reader-run flip-flop 1013 and to set the reader flag flip-flop 1014 to repeat the cycle. 
     Fig. 11. 
     fig. 11 illustrates the manner in which the computer may be controlled to cyclically scan for interrupt conditions. Transformer 1117 may supply alternating current of commercial frequency such as 60 cycles per second to system clock trigger 1112 which thus under normal operating conditions will serve to set the status flag flip-flop 1113 60 times per second. The &#34;set&#34; output of status flag component 1113 is supplied to the computer via inverter 1103 and conductor 1120 so as to place the computer in the interrupt mode, the computer than completing the current instruction, storing the address of the next instruction of the regular program in memory, and proceeding to scan the various flag flip-flops such as status flag component 1113, FIG. 11, and reader flag component 1014, FIG. 10. 
     The manner in which the status of various flip-flops may be read into the computer in response to an interrupt signal is typified by the example of the move flip-flop 1114. When an interrupt signal has been received, the computer may actuate read selectors such as 1111 and 1112 which may enable gates such as indicated at 1105 and 1119 to transmit the status of twelve different flip-flops, for example, via computer input cable 197, FIG. 3. Thus conductor 1122 at the output of NAND gate 1105 may lead to terminal AC4 of the accumulator of the computer. 
     The &#34;clear&#34; or &#34;reset&#34; output of flip-flop 1113 partially enables NAND gate 1119 when the flip-flop is reset. When the selector 1118 is selected by the computer (by means of BMB cable 280), the IOT1 pulse of negative polarity which is transmitted to gate 1119 from the selector 1118 causes a positive pulse to be transmitted from the output of gate 1119 to the computer 603 via conductor 1121. The 12 bit word thus transmitted to the accumulator is compared with the previously transmitted word which has been stored in the computer memory, by subtracting the one word from the other. If the result is zero, then there has been no change in status. If the result is of some other value, then by assigning the input signals different predetermined binary weights, the computer knows which of the flip-flops such as move flip-flop 1114 has signalled a change in status. 
     As soon as the computer has responded to the call for interrupt service, for example responding to the completion of a positioning movement by setting punch flip-flop 935, FIG. 9, which controls the punch solenoid 915, FIG. 9, the computer may resume its normal operation by transferring the next instruction location from its memory and proceeding with the execution of this instruction. 
     The manner im which the computer may direct operations of the system in response to input commands is also illustrted in FIG. 11. Thus the output bus cable 130 from component 201, FIG. 2, is shown having a connection with an input gate of the move flip-flop 1114 and of the side gauge flip-flop 1106. For example, terminal BAC4 may connect with the gate leading to move flip-flop 1114 and terminal BAC7 may connect with the leading to the set input of side gauge flip-flop 1106. Thus if the associated register in the computer provides an enabling potential at terminal BAC4 and then actuates selector circuits such as 1109 and 1110, the move flip-flop 1114 will be set, and a ground level will appear at reset output 1140. 
     When contact 182 of the X-axis null detector relay 181 and contact 1130 of the Y axis null detector relay 1107 have been simultaneously closed for the requisite time interval, oscillator component 1108 will be effective to reset the move flip-flop 1114. This new condition of the move flip-flop 1114 will then be detected by the computer at the next interrupt service cycle. 
     Similarly, the computer might provide an enabling potential at terminal BAC7 and then actuate the selector 1109 so as to energize side gauge flip flop 1107 which controls side gauge solenoid 11-K3. Relay 11-K3 is shunted by a resistor 1131 having a value of 100 ohms and a capacitor 1132 having a value of 1 microfarad in series, and is also shunted by a diode 1133 to avoid the generation of noise in the critical components of the system. 
     A manually operable switch is indicated at 1140 having three positions &#34;manual&#34;, &#34;step&#34; and &#34;automatic&#34;. When the selector switch 1140 is in the manual position, a manual side gate switch 1141 may be actuated to energize the side gauge relay 11-K3. The circuitry of FIG. 11 will be sufficient to indicate to those skilled in the art the manner in which the circuitry may accommodate either command signals from the computer or manual commands directly by the operator of the punch press. The components of FIG. 11 are typical of the circuitry which may be represented by the machine positioning interface component 628 of FIG. 6. The interface 628 may also include components such as selector 115 shown at the upper right in FIG. 4 and flip-flop 413 for generating the &#34;Hold X Clock&#34; signal at line 432, for example. 
     Fig. 12 
     fig. 12 illustrates a numerical control system wherein a stored program digital computer 1200 such as the Digital Equipment Corporation PDP-8 or PDP-8S computer services a plurality of machine tools such as the machine tool system represented by components 1201-1210 and the machine tool system represented by components 1221-1230. The computer 1209 may further service a first console 1231 in the normal manner as described in the publication reference DEC-B. 
     FIG. 12 also illustrates how a second console 1232 may be serviced by the computer 1200 which the aid of a device selector 1233. Thus the console 1232 may be included in the stations scanned by the computer 1200 during each interrupt cycle, and the computer may communicate with console 1232 by actuating the device selector 1233 whenever this console requires service. 
     FIG. 12 thus illustrates the extreme flexibility of the numerical control system contemplated herein. For example, additional machines or consoles may be added to a system in the field whenever the need arises. 
     Fig. 13 
     fig. 13 illustrates how the control system may effect a tool change in response to a command from punched tape, for example. Thus, in response to a command from the punched tape input, the computer may load a bit in its output register for delivery via conductor BACO of cable 130 to a flip flop 1301 which when actuated serves to step a tool positioning device to a predetermined position. A suitable device selector 1302 (with octal code number 6671, for example) is then actuated to set the flip-flop 1301, and the flip-flop 1301 in its set condition enables the tool positioning means including amplifier 1303 and step by step solenoid drive 1304 until the flip-flop 1301 is reset by the tool associated with the flip-flop reaching the operating position. Specifically when the selected tool reaches operating position, switch 1305 closes and causes trigger circuit 1306 to transmit a reset pulse to flip-flop 1301. Examples of Computer Operation in Machine Control Mode 
     The following Tables C1 and C2 will concretly illustrate computer operation to adaptively compensate succeeding commands for many previous positioning errors. 
     
                       Table C1                                                    
______________________________________                                    
X-Axis (Positive Error)                                                   
______________________________________                                    
Error       0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0                           
                                 + 2                                      
New Move    0 0 0 0 1 0 0 0 0 0 0 0 : 0 0 0 0 0                           
                                 +16                                      
Add Error   0 1 0 0 0 0 0 0 0 0 0 0                                       
&amp; New Move  0 0 0 0 1 0 0 0 0 0 0 0Link                                   
for Lower   0 1 0 0 1 0 0 0 0 0 0 0(0)                                    
                                 +18                                      
X-Axis                                                                    
Add Upper Error                                                           
            0 0 0 0 0                                                     
&amp; Link      0                                                             
            0 0 0 0 0                                                     
Add Upper New                                                             
            0 0 0 0 0                                                     
Move &amp; X-Axis                                                             
            0 0 0 0 0                                                     
to Error Link                                                             
            0 0 0 0 0                                                     
Sum                                                                       
New Corrected                                                             
            010010000000/00000   +18                                      
Move                                                                      
______________________________________                                    
 
    
     
                       Table C2                                                    
______________________________________                                    
X-Axis (Negative Error)                                                   
______________________________________                                    
Error       0 1 1 1 1 1 1 1 1 1 1 1 : 1 1 1 1 1                           
                                 -2                                       
New Move    0 0 0 0 1 0 0 0 0 0 0 0 : 0 0 0 0 0                           
                                 +16                                      
Add Error   0 1 1 1 1 1 1 1 1 1 1 1 1Link                                 
&amp; New Move for                                                            
            0 0 0 0 1 0 0 0 0 0 0 0 0(1)                                  
Lower X-Axis                                                              
            0 1 1 1 0 0 0 0 0 0 0 0 0                                     
                                 +14                                      
Add Upper error                                                           
            1 1 1 1 1                                                     
&amp; Link      1                                                             
            0 0 0 0 0                                                     
Add New Move                                                              
            0 0 0 0 0                                                     
Upper X-Axis to                                                           
            0 0 0 0 0                                                     
Error Link Sum                                                            
            0 0 0 0 0                                                     
New Corrected                                                             
            0 1 1 1 0 0 0 0 0 0 0 0 / 0 0 0 0 0                           
                                 +14                                      
Move                                                                      
______________________________________                                    
 
    
     SUMMARY OF FEATURES 
     An important objective of the present invention has been to provide a computerized punching machine control for the average metalworking shop. The control system is capable of simultaneous computer-assisted piece-part programming and machine tool control, as well as additional highly significant functions. For example, absolute position readout devices such as 450, FIG. 4, may be connected to outputs such as the XM (complement) and XP (complement) outputs of FIG. 4 so as to provide absolute position information with respect to the X and Y axes at each successive tool location. This provides for the verification of the numerical contrl program tape and also for piece-part verification. The computer program may provide for the execution of any desired auxiliary functions such as a punch operation as represented in FIG. 9 and side gauge control as indicated in FIG. 11. Other desired operations such as tool change and the like can be handled as represented for the case of side gauge operation in FIG. 11. Thus, as illustrated in FIG. 13, in response to a command from punched tape, the computer may load a bit in its output register for delivery via conductor 130 to a flip-flop 1301 which when actuated serves to step a tool positioning device to a predetermined position. A suitable device selector 1302 is then actuated to set the flip-flop, and the flip-flop in its set condition enables the tool positioning drive until the same is reset by the tool associated with the flip-flop reaching the operating position. 
     Because of the low cost and great versatility of the system, it is particularly well suited for small job shops as well as in-plant metal fabrication departments. At present, metalworking shops are faced with the necessity of buying a machine tool, a numerical control, tape preparation equipment, and program and part verification equipment. Although machine-time, especially on short run production, is drastically reduced through the application of conventional numerical control, the relationship between real machine time and off-line tape preparation, verification and inspection time has remained disproportionate. 
     Some of the significant advantages of the present computer control system are as follows. 
     (1) The computer control is one complete unitized device. It eliminates the need for the usual off-line equipment. Immediately upon delivery, it is ready for use by average shop personnel (without special training). 
     (2) The computer control is inexpensive. When compared in cost and performance to the auxiliary equipment it replaces (i.e., tape preparation and verification equipment, machine controller and the usual part inspection equipment), the computer control is actually less costly. There is the further important fact of the additional flexibility of the versatile digital computer. 
     (3) The computer control is capable of performing two or more jobs at one time. Because of the built-in ability of the control to operate simultaneously, through time-sharing, the control can be operating a punching machine while a programmer is remotely and simultaneously putting data into the computer for generating another program. 
     (4) The control has dual EIA/ASCII capabilities. For example, data in ASCII code is entered into the control and automatically converted to EIA coded punched tape. Tapes prepared in either code can be read by the control and utilized to generate the digital command signals for the servo systems. 
     (5) Parts can be randomly programmed employing either incremental or absolute dimensions, or a combination of both. Both incremental and absolute data can be fed to the computer control. It will automatically convert any data input into the required machine format. The control automatically calculates and converts all position data into both incremental and absolute dimensions, and prints out a hard copy thereof as a program verification with each block separately identified. 
     (6) Data input from the computer console in generating numerical control programs results in enabling the programming operation to take place at least twice as fast as is done by any other commercially available tape preparation method. The flexibility of the digital type computer, combined with a simplified input, makes programming twice as fast. All repetitive or common operations are automatically programmed. Recognized errors are electronically corrected without repair or scrapping of tape, thus further saving time. 
     (7) The control improves machine speed and accuracy. A combination of control features allows for a greater range of acceleration, deceleration and unlimited overshoot, improving both machine speed and accuracy. 
     (8) The control can be programmed to assist in trouble shooting, and the computer itself is also equipped with a self-diagnostic program. Thus, the control automatically checks, isolates trouble spots and identifies them through print-outs at the console and thereby simplifies repair. 
     Basically, the control performs the function of a solid state digital computer and a solid state machine numerical control. It thus forms a &#34;total capabilities&#34; hole punching and notching system. Total responsibility for the &#34;package&#34;, that is, installation, service, initial programming instruction and standard programs may rest with the supplier of the system. This relieves the user of the time-consuming, costly job of dealing with several unrelated suppliers. 
     The computer itself being a general purpose digital computer is resistant to technical obsolescence, and may be readily programmed to take advantage of new techniques and to perform new functions. In addition, the control offers the flexibility of being used either to operate multiple punching machines (each producing a different part) as illustrated in FIG. 12, or being used with additional tape preparation stations, all operating simultaneously, as is also illustrated in FIG. 12. The control can also be used to operate multiple punching machines and to service additional tape preparation stations at the same time, as is also illustrated in FIG. 12. An additional console and/or an additional servo system may be added to the system in the field as the need arises. 
     It will be apparent that many modifications and variations may be effected without departing from the scope of the novel concepts of the present invention. 
     EXCERPTS FROM OPERATION MANUAL 
     The following excerpts from the operation manual for a commercial computer control system in accordance with the present invention will assist in understanding the practical construction and operation of the invention. The subject matter of Section 1 is found in U.S. Pat. No. 3,634,662 beginning at column 26 and refers to a commercial system. In the portions of Section 2 which follow, reference numerals have been inserted referring to the drawings so that this section will serve also to summarize the operation of the illustrated embodiment. Section 2 is found in U.S. Pat. No. 3,634,662 beginning at column 36, and certain portions of Section 2 not pertinent to the illustrated embodiment have been omitted herein. 
     Section-2 SYSTEM SUMMARY 
     2.1 SUMMARY OF THE MODES OF OPERATION OF THE MACHINE TOOL CONTROL 
     Automatic Mode 
     In the automatic mode of operation, numerical control tape is read from the high speed tape reader 600, FIG. 6, into the digital computer 603; the computer then loads a corresponding binary number into the position control logic of interface 628. The control logic then controls positioning of the machine tool to the coordinate represented by the binary number. Upon positioning to a given coordinate, a command is given to the computer by means of relays 181 and 1107, FIG. 11, signifying an in-position condition. If all other conditions are favorable, the machine tool will then be allowed to perform it&#39;s job, whether it be to drill, punch, etc., and at this time another block of tape is read from the high speed reader. Due to the fact that a high speed tape reader is used, a block of information can be read and ready for use before a machine function can be completed. Machine tool operation will continue in this fashion until a tool change or machine stop is indicated by the piece part punched tape program. 
     Step Mode 
     In the step mode of operation, the computer control reads one block of information, executes the move and inhibits the machine function and waits for a command to proceed with the next move. Subsequent moves are executed individually by the machine tool operator giving appropriate signals to the computer. This mode of operation can be used by the machine tool operator to verify the positioning of machine tools without producing a piece part. 
     Type Mode 
     The type mode allows positioning coordinates to be entered to a computer control via the typewriter at the console. Upon receiving a proper command the machine tool will accurately position to a specified coordinate. This mode is extremely valuable in that it allows an accurate positioning means of manually entered data. 
     Manual Mode 
     The manual mode permits a machine tool operator to manually position a machine tool anywhere within the allowable limits of travel. 
     2.2 SUMMARY OF COMPUTER OPERATION 
     Since more than one simultaneous job is required of the computer, the computer must have the capability to operate on a time-sharing principle. It must be capable of decoding an interrupt request received from external hardware and appropriately going to various positions of the stored computer program to perform different tasks. 
     At the present time, approximately 1/4 of a 4096 12 bit word computer memory is used to control a single two axes punching machine tool. The other 3/4&#39;s of the memory is used to assist a piece part programmer in numerical tape preparation. 
     The present computer control employs a machine tool system clock which interrupts the computer at a rate of 60 times a second. The computer, upon receiving this interrupt, checks the status of the machine tool to determine if the status of the machine tool has changed since the last sampling period. If the status has changed, the computer takes appropriate action. 
     Program Interrupt 
     When an input/output device is in need of service from the digital computer, it signifies the need through a status flag. A status flag is nothing more than a flip-flop connected to the interrupt bus of the computer. Upon receiving an interrupt, the computer completes the instruction which it may be processing and then stores the location of the next instruction so it may return after servicing the interrupt; the computer then enters an interrupt service routine, whereby it would check status flags on a previously determined priority basis in order to identify the input/output device requiring service. It may also be noted, more than one computer program can exist in the computer memory simultaneously, and any one or all can be running separately or concurrently. 
     2.3 SUMMARY OF POSITION CONTROL LOGIC 
     The purpose of the position control logic is to accept binary coordinate information from the computer and to position the machine tool to that specified coordinate. FIG. 6 shows a block diagram of a two axes position control logic scheme. 
     In an operating condition the computer reads X and Y binary coded decimal coordinate information from the high speed tape reader 600 and converts this data into 2&#39;s complement binary. This information is then loaded into external up/down binary counters such as illustrated in FIG. 1. At this point the desired incremental move is stored and the computer is free to process other information from other input/output devices. 
     The numbers stored in the external up/down binary counters are monitored by digital to analog converters such as 105-107, FIG. 1A, to produce DC voltages proportional to the digital count. The analog output voltage is then applied to servo amplifiers such as 109, FIG. 1B, which in turn drive the X and Y axes motors. 
     Position feedback is obtained from digital transducers such as indicated at 112, FIG. 1B, mounted on the axes leadscrews. The transducer pulses are decoded to determine direction of travel and applied to pulse synchronizing networds such as indicated at 117, FIG. 1B. If the computer is not sampling or loading the external counters, the transducer pulses are transmitted to count down the incremental position coordinate stored in the up/down counters. 
     Thus, positioning continues in this fashion with the computer periodically checking machine tool status until the machine tool has completed the specified incremental move. 
     As the machine tool is approaching the desired position, an in-position detector such as indicated at 110, FIG. 1B, monitors the external binary up/down counters to determine when the remaining count is an acceptable distance away from desired position. The in-position detector has a variable bandwidth and is directly related to over-all positioning time. As an example, a large in-position deadband permits faster point to point positioning times. 
     Upon receiving an in-position signal the computer checks the status of the machine tool and if all other conditions are favorable, the machine tool is permitted to punch, drill, etc., depending on the specific machine tool. 
     At the same time, the digital computer will read the external counters to determine the positioning error; this error, if any, is normally small, its size being determined by the adjustment of the in-position detector. The computer, having read this error, then proceeds to appropriately compensate the next move already decoded from the high speed tape reader. As an example, if the machine tool&#39;s next move was in the same direction as a previous move with an overshoot error, the computer would subtract the amount of overshoot error from the next move, thereby compensating every move individually. 
     2.4 SUMMARY OF OVERALL PIECE PART FABRICATION 
     Part Verification 
     The computer control can be equipped with two methods of part verification. The first method involves the use of absolute value display counters such as 450, FIG. 4. These absolute value display counters can be reset at the reference point of the piece part, then the machine tool operator may stop the piece part at any point in a particular job and examine the schematic diagram against the value displayed in the counters to verify positioning accuracy. The second method of part verification involves using a standard machine tool control program. This control program will allow the machine to punch any given part at its maximum speed, while at the same time the console typewriter attached to the computer control will be printing out as fast as it can the positioning error for X and Y for each move on the piece part. Thus, when the piece part is finished and the typewriter has stopped printing, the machine operator will have a finished part and written record of the positioning accuracy of the machine tool. 
     2.5 SUMMARY OF PIECE PART PRODUCTION 
     Machine Tool Control (Method of Operation) 
     When a machine tool operator is ready to use the machine tool, he indicates his readiness to the computer through the machine tool control panel, If in the automatic mode, the digital computer issues a command to the tape reader 600, FIG. 6 and reads a data block of information. Included in the data block of information. Included in the data block of information are auxiliary functions along with coordinate information. The format of the punched tape may be fixed sequential block or word address according to EIA machine tool standards. The computer interprets the data block, issues commands to auxiliary input/output devices turning on lights and activating relays, etc., and executes the move through the position control logic. 
     Unlimited Overshoot 
     The computer control system can recover from unlimited overshoot unlike other numerical controls which can tolerate only a limited amount of overshoot. This feature permits the computer control to position machine tools from point to point faster since higher starting forces may be used. The computer, having this overshoot capability, allows a larger initial force to be applied to the carriage, resulting in controllable overshoot and faster positioning for very near coordinates, and smaller traveling time for far away coordinates. 
     Variable Speed and Accuracy 
     The speed and accuracy obtained in controlling machine tools with a computer control are variable and directly proportional to each other. For example, a larger setting of the in-position detector results in faster positioning times. A typical range of accuracy settings for a computer control would be from 0.005 to 0.064 inch. 
     2.6 SUMMARY OF OPTIONAL FEATURES 
     Capabilities Without Memory Extension 
     Additional Tape Preparation Assistance 
     Due to the extreme flexibility of the digital computer, many changes and variations in the previously described formats can be accomplished. For example, the tape preparation station can be programmed to permit preparation of numerically punched tape for other type machine tools. Also, further software refinements can be added to facilitate preparation of piece part programs. Examples of these would be as follows: (1) Pattern Repetition. Pattern repetition would be the ability to duplicate a regular or irregular pattern to some other location on the work piece. (2) Pattern Generation. Pattern generation would be the ability to generate regular patterns given some starting information. Uses would include squares, equilateral triangle, circles. (3) Scaling. Scaling would allow repetition of a pattern with an increase or decrease in magnitude between hole coordinates. 
     Multiple Machine Control 
     Due to the flexibility of the computer to service many input/output devices and the manner in which the positioning loop is closed outside the computer, more than one machine tool may be controlled by the computer as illustrated in FIG. 12, for example. Depending upon the number and type of machine tools, different methods of control are possible. For instance, if more than one machine tool of the same make are used, it is possible to share some portions of the control. In the case if dissimilar machine tools, individual tape readers, servo systems and position control logic will be necessary in controlling these machine tools. However, the incremental cost for these items is expected to be less than the price of an individual numerical control. The number of different types of machine tools that can be controlled by the computer control depends on a large number of variables. 
     The complexity of the machine tool, the amount of memory available and the method of approach all are factors in determining the number and speed of servicing these machine tools. The present computer control can tolerate 64 input/output devices. Input/output devices are things such as tape readers, console typewriter, machine tools, position control logic. 
     When a customer purchases a computer control with the console typewriter and one machine tool, it is very similar to purchasing an electronic switchboard and two extension telephones. If more machine tools are to be controlled, it is very similar to purchasing more extension telephones. If the switchboard becomes overloaded because too many extension telephones are trying to use it at the same time, a busy signal will be given and the telephones will be services as others are made free. Likewise, the computer control operates on an interrupt system wherein, if more than one machine tool would come into position at the same time, they would be serviced based on a previously determined priority. 
     Other Computer Uses 
     Since the computer control is capable of operating in a time-sharing mode it can control a machine tool and at the same time be used to solve engineering, accounting, inventory or other customer specified tasks. Due to the limited amount of memory available using a small digital computer, all these features could not be stored in memory concurrently; however, being software they could be constantly available in the form of previously prepared tape. The amount of time necessary to use these features is only a matter of minutes using the high speed tape reader. 
     Maintenance &amp; Troubleshooting 
     Computer control maintenance is minimized by the use of reliable solid-state, plug-in components. 
     Should a malfunction occur within the computer or the logic circuitry, the computer may be equipped with diagnostic programs to assist in pinpointing the problem. 
     Capabilities with Memory Extension 
     Additional extended memory would allow the user concurrent operation of the specific features previously discussed. Other features could be provided such as: (1) optimum positioning path selection, (2) automatic tool changer, (3) adaptive speed control, (4) control of more sophisticated machine tools, and (5) further tape preparation aids. 
     2.7 SUMMARY OF COMPUTER CONTROL FEATURES 
     The most important feature of the computer control is again its flexibility and resistance to technical obsolescence. Because of this flexibility, it is able to simultaneously control machine tools and prepare numerical punched tape. The computer control can control multiple machine tools at an incremental cost less than standard numerical controls, and the time to prepare punched tape has been drastically reduced, reducing the time to complete production of piece parts. The computer control also provides for continuous program and piece part verification while allowing input of piece part data in a simplified format. Dual EIA/ASCII capabilities are available and the programmer has the option to program coordinates in either incremental and/or absolute dimensions. 
     Finally, all repetitive or common operations are automatically programmed, errors are electronically corrected, and the machine tool positioning time has been significantly decreased. 
     ALTERNATIVE EMBODIMENT 
     The following is taken from my U.S. Pat. No. 3,689,821 beginning at column 13. 
     The aforementioned application Ser. No. 652,968 filed July 12, 1967 teaches that the program control circuits component may comprise a general purpose digital computer. In this case, the computer itself may be programmed to compensate for a specific mechanical error pattern. The major benefit of this embodiment is that no additional hardware is required. All corrections are made to the data after they have been read from punched tape or the like, but before they are loaded into the up-down error register. 
     The basic principles upon which this method is based are the following. 
     1. The machine tool must be calibrated along some correction increment, the choice of which is arbitrary. 
     2. An increment designation number should then be assigned to every correction increment. 
     3. The computer then stores this table of information including increment designation numbers, absolute value of correction increments, correction increment size and the correction values. 
     4. As new moves are read into the computer, the computer checks the table to see whether any correction is necessary and, if so, it determines how much from the previously stored table. The computer then makes the correction before loading the data coordinates into the position control loop including the error register. 
     The following Table A is an example of the type of table which would be stored in the computer. 
     
                       TABLE A                                                     
______________________________________                                    
Increment Absolute Value                                                  
                        Correction                                        
Designation                                                               
          of Correction Increment                                         
Number    Increment     Size       Correction                             
______________________________________                                    
0         0             0          0                                      
1         10            10         +1                                     
2         20            20         -1                                     
3         21            1          0                                      
4         22            1          0                                      
5         23            1          +1                                     
6         24            1          0                                      
7         25            1          0                                      
8         26            1          +1                                     
9         27            1          0                                      
10        28            1          0                                      
11        29            1          +1                                     
12        30            1          0                                      
13        40            10         -2                                     
14        50            10         0                                      
______________________________________                                    
 
    
     A flow chart illustrating the sequence of operation would then be as follows: 
     Mechanical Error Compensation 
     Flow Chart 
     
         ______________________________________                                    
(a)           P.sub.1 = P.sub.2 = 0                                       
(b)           Read new incremental move.                                  
(c)           Determine number of correction                              
              increments transversed.                                     
              This is accomplished by                                     
              additively comparing adjoining                              
              correcton increments in the                                 
              proper direction with the size                              
              of the new incremental move.                                
(d)           Set pointer P.sub.2 to the increment                        
              designation.sup.2 number                                    
              representing the number of                                  
              correction increments                                       
              transversed.                                                
(e)           Add signed corrections between                              
              pointers P.sub.1 and P.sub.2.                               
(f)           Appropriately compensate the                                
              incremental move by adding or                               
              subtracting counts.                                         
(g)           Set P.sub.1 = P.sub.2                                       
(h)           Use compensated move as                                     
              incremental positioning                                     
              coordinate.                                                 
(i)           Return to (b)                                               
______________________________________                                    
 
    
     An example in accordance with the flow chart is as follows: 
     EXAMPLE: 
     
         ______________________________________                                    
Step 1-  P.sub.1 = P.sub.2 = 0                                            
Step 2-  New Move = +30.000                                               
                         Increment                                        
Step 3-  Is New move≧                                              
                         Designation Answer                               
         30              1           Yes                                  
         30              2           Yes                                  
         30              3           Yes                                  
         30              4           Yes                                  
         30              5           Yes                                  
         30              6           Yes                                  
         30              7           Yes                                  
         30              8           Yes                                  
         30              9           Yes                                  
         30              10          Yes                                  
         30              11          Yes                                  
         30              12          Yes                                  
         30              13          No                                   
______________________________________                                    
∴Number of correction increments transversed is 12.               
Step 4-  P.sub.2 = 12                                                     
Step 5-  + 1 - 1 + 1 + 1 + 1 = + 3                                        
Step 6-  Compensated New Move = + 30.003                                  
Step 7-  P.sub.1 = P.sub.2 =12                                            
Step 8-  New Move = - 5.000                                               
                         Increment                                        
Step 9-  Is new Move≧                                              
                         Designation Answer                               
         5               12          Yes                                  
         5               11          Yes                                  
         5               10          Yes                                  
         5               9           Yes                                  
         5               8           Yes                                  
         5               7           No                                   
∴ Number of Correction increments transversed is 5.               
Step 10- P.sub.2 = 8                                                      
Step 11- + 1 + 1 = + 2                                                    
______________________________________                                    
 
    
     Definition of the Term &#34;Minicomputer&#34; 
     The following definition of &#34;minicomputer&#34; is taken from page 950 of the McGraw-Hill Dictionary of Scientific and Technical Terms, 1974, (the abbreviation ADP indicating that the definition applies to the field of automatic data processing): 
     &#34;minicomputer [ADP] A small computer which in its basic configuration has at least 4096 words of memory, employs words between 8 and 16 bits in length.&#34; 
     SUMMARY 
     The illustrated subject matter includes a motion counter circuit such as XL11-XL5, FIG. 1A and XLO, SU11-XUO, FIG. 1B. The counter circuit receives feedback pulses generated as a function of movement of a part of a machine tool via the line X-Clock 119 shown at the left in FIG. 1A and shown at the right at 199 in FIG. 4. The synchronizer circuitry of FIG. 4 is represented by block 117 at the lower right of FIG. 1B, and it will be noted from FIGS. 1B and 4 that the synchronizer 117 is interposed between the feedback transducer system including X-axis transducer 112, FIG. 1B and FIG. 4 and the X clock line 199 shown as the lower output at the left of synchronizer 117 in FIG. 1B. The Hold X component 115 shown at the right in FIG. 1B as controlling synchronizer 117 is also shown at the upper right in FIG. 4. 
     As explained in the section entitled &#34;Operation of FIG. 6&#34; as soon as both axes remain in the vicinity of the required end point for the required time, the detector components such as X-axis will detector 110, FIG. 1B, signal the computer, for example via channel 627, machine positioning interface component 628 and channel 629. Other operations of the computer 603 may thus be interrupted by means of a program interrupt signal from interface 628, at which time the computer will energize the axis hold component such as 115, FIG. 1B, and read the contents of the associated counter chain. 
     The two-way information transmission circuitry as generally represented in FIG. 6 may include the detailed connections shown in FIGS. 2 and 3, for example, where as shown at the left in FIG. 2 the output bus drivers component 201 of the computer output circuits 200 has a cable 130 leading to individual conductors such as 221-232 and 241-245 which are also shown in FIGS. 1A and 1B as leading to the counter circuit XL, XU as previously described. As also shown in FIGS. 1A and 1B, the outputs from the stages of the motion counter circuit are conducted by means of conductors 185-191 in FIG. 1A and 192-195, FIG. 1B to the gates 104 and 108 which also appear at the left in FIG. 3. All of these counter information transmission lines of the two-way information transmission circuitry connect with a cable 197 indicated at the right in FIG. 3 as returning to the computer accumulator. Thus, the two-way information transmission circuitry connecting the counter circuit on line with the stored program digital computer include the cable 130 shown in FIG. 2 and the cable 197 shown in FIG. 3. 
     It is considered that the term &#34;minicomputer&#34; is properly supported by the &#34;small scale&#34; computer description found at page 83, the second line of text of DEC-B, cited at column 4, lines 53 and 54 of U.S. Pat. No. 3,634,662, namely The Digital Small Computer Handbook published by Digital Equipment Corporation, 1967 edition (494 pages). 
     The operation of the circuitry of FIG. 4 with respect to the two-way information transmission circuitry will be understood from the section entitled &#34;Operation of FIGS. 1A and 1B&#34;, for example the last three paragraphs thereof (beginning at the middle of application page 15) thus, actuation of the Hold X component 115 shown at the right in FIG. 1B and at the upper right in FIG. 4 causes synchronizer 117 to interrupt the supply of X clock pulses for a sufficient interval to insure that the counting stages may be inspected by the computer. The &#34;Hold&#34; interval is related to the duration of the readout operation by the computer but is sufficiently short, so that any feedback pulse from transducer 112 that might occur during the readout operation would only be blocked for a portion of its duration. Thus, transitions of the count value in the counter circuit of FIGS. 1A and 1B are prevented during the readout operation. 
     The two-way information transmission circuitry between the pulse counter means such as XL and XU of FIGS. 1A and 1B, and the stored program digital computer circuit means 603, FIG. 6, includes not only the twelve-conductor computer bus system 130 as shown in FIG. 2 and 197 as shown in FIG. 3, but further includes, for example, the components 105-107, FIG. 1A, and 109, 110, FIG. 1B, which couple the pulse counter means when in a null condition with the computer 603, FIG. 11, by means of relay contacts 182 of relay 181 of component 110, and move flip-flop 1114, FIG. 11. The move flip-flop condition is sensed by computer 603 via the conductor indicated at 1122 at the right in FIG. 11. Once the move complete or reset condition of the move flip-flop 1114 has served its purpose, the two-way information transmission circuitry provides for on line coupling of the digital computer circuit means 603 with the machine tool control via conductor BAC4 of computer bus 130, FIG. 11, so as to set the move flip-flop 1114, FIG. 11, from the computer in conjunction with selector 1109, FIG. 11 and thus to condition for control for executing a further machine tool movement. The two-way information transmission circuitry, each time a further move is completed, again provides for on-line coupling of the pulse counter means such as XL, XU, FIGS. 1A and 1B, with the digital computer circuit means 603, FIG. 11, so that the digital computer can sense the completion of each further machine tool movement as signalled by the null condition of the pulse counter means and the corresponding actuation of the relays 181 and 1107, FIG. 11. Specifically the computer senses the move complete or reset condition of the move flip-flop 1114 by actuating read selector 1111, FIG. 11, which is associated with gate 1105 and conductor 1122, FIG. 11.